summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2023-04-14 19:56:32 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2023-04-17 14:25:52 +0200
commitade79bcb5006c33d6f644cfe41d22d14728e585f (patch)
tree93192e63706e91b7ddc5d934d1032dc0cb03a3a4
parentfcad56e3133c8d2e829f125c3d051eeb98474879 (diff)
downloadglib-ade79bcb5006c33d6f644cfe41d22d14728e585f.tar.gz
meson: Add tests for generated pkg-config files
Ensure things are generated as we expect and avoid we regress on that.
-rw-r--r--gio/tests/meson.build68
-rw-r--r--glib/tests/meson.build31
-rw-r--r--gmodule/tests/meson.build28
-rw-r--r--gthread/tests/meson.build19
-rw-r--r--meson.build4
5 files changed, 149 insertions, 1 deletions
diff --git a/gio/tests/meson.build b/gio/tests/meson.build
index b4a64926e..751bd6e9b 100644
--- a/gio/tests/meson.build
+++ b/gio/tests/meson.build
@@ -1096,4 +1096,72 @@ if installed_tests_enabled
)
endif
+if have_bash and have_pkg_config
+ prefix = get_option('prefix')
+ if prefix.endswith(':/')
+ prefix += '/'
+ endif
+
+ pkg_config_tests = [
+ 'pkg-config --validate gio-2.0',
+ 'test "$(pkg-config --modversion gio-2.0)" = "@0@"'.format(glib_version),
+ 'test "$(pkg-config --variable=prefix gio-2.0)" = "@0@"'.format(
+ get_option('prefix')),
+ 'test "$(pkg-config --variable=datadir gio-2.0)" = "@0@"'.format(
+ prefix / get_option('datadir')),
+ 'test "$(pkg-config --variable=schemasdir gio-2.0)" = "@0@"'.format(
+ prefix / get_option('datadir') / schemas_subdir),
+ 'test "$(pkg-config --variable=giomoduledir gio-2.0)" = "@0@"'.format(
+ get_option('gio_module_dir') != '' ?
+ prefix / get_option('gio_module_dir') :
+ prefix / get_option('libdir') / 'gio' / 'modules'),
+ ]
+
+ gio_binaries = [
+ 'gio',
+ 'gio-querymodules',
+ 'glib-compile-schemas',
+ 'glib-compile-resources',
+ 'gdbus',
+ 'gdbus-codegen',
+ 'gresource',
+ 'gsettings',
+ ]
+
+ foreach binary: gio_binaries
+ pkg_config_tests += [
+ 'test "$(pkg-config --variable=@0@ gio-2.0)" = "@1@"'.format(
+ binary.underscorify(),
+ prefix / get_option('bindir') / binary)
+ ]
+ endforeach
+
+ test('gio-2.0-pkg-config',
+ bash,
+ args: [ '-xe', '-c', '\n'.join(pkg_config_tests) ],
+ suite: ['gio', 'no-valgrind', 'pkg-config'],
+ env: {
+ 'PKG_CONFIG_PATH': meson.project_build_root() / 'meson-private',
+ },
+ )
+
+ platform_module = host_system == 'windows' ? 'gio-windows-2.0' : 'gio-unix-2.0'
+ pkg_config_tests = [
+ 'pkg-config --validate ' + platform_module,
+ 'test "$(pkg-config --modversion @0@)" = "@1@"'.format(platform_module,
+ glib_version),
+ 'test "$(pkg-config --variable=prefix @0@)" = "@1@"'.format(platform_module,
+ get_option('prefix')),
+ ]
+
+ test(platform_module + '-pkg-config',
+ bash,
+ args: [ '-xe', '-c', '\n'.join(pkg_config_tests) ],
+ suite: ['gio', 'no-valgrind', 'pkg-config'],
+ env: {
+ 'PKG_CONFIG_PATH': meson.project_build_root() / 'meson-private',
+ },
+ )
+endif
+
subdir('services')
diff --git a/glib/tests/meson.build b/glib/tests/meson.build
index a90051076..2443bd4b0 100644
--- a/glib/tests/meson.build
+++ b/glib/tests/meson.build
@@ -490,3 +490,34 @@ if not meson.is_cross_build() and host_system != 'windows'
endif
endif
+if have_bash and have_pkg_config
+ prefix = get_option('prefix')
+ if prefix.endswith(':/')
+ prefix += '/'
+ endif
+ test('glib-2.0-pkg-config',
+ bash,
+ args: [
+ '-xe', '-c',
+ '\n'.join([
+ 'pkg-config --validate glib-2.0',
+ 'test "$(pkg-config --modversion glib-2.0)" = "@0@"'.format(glib_version),
+ 'test "$(pkg-config --variable=prefix glib-2.0)" = "@0@"'.format(
+ get_option('prefix')),
+ 'test "$(pkg-config --variable=datadir glib-2.0)" = "@0@"'.format(
+ prefix / get_option('datadir')),
+ 'test "$(pkg-config --variable=gobject_query glib-2.0)" = "@0@"'.format(
+ prefix / get_option('bindir') / 'gobject-query'),
+ 'test "$(pkg-config --variable=glib_mkenums glib-2.0)" = "@0@"'.format(
+ prefix / get_option('bindir') / 'glib-mkenums'),
+ 'test "$(pkg-config --variable=glib_valgrind_suppressions glib-2.0)" = "@0@"'.format(
+ prefix / get_option('datadir') /
+ valgrind_suppression_file_install_subdir / fs.name(valgrind_suppression_file)),
+ ]),
+ ],
+ suite: ['glib', 'core', 'no-valgrind', 'pkg-config'],
+ env: {
+ 'PKG_CONFIG_PATH': meson.project_build_root() / 'meson-private',
+ },
+ )
+endif
diff --git a/gmodule/tests/meson.build b/gmodule/tests/meson.build
index ec7eb68fd..5374c1c2a 100644
--- a/gmodule/tests/meson.build
+++ b/gmodule/tests/meson.build
@@ -124,3 +124,31 @@ foreach test_name, extra_args : gmodule_tests
suite : suite,
)
endforeach
+
+if have_bash and have_pkg_config
+ modules = [
+ 'gmodule-no-export-2.0',
+ 'gmodule-export-2.0',
+ 'gmodule-2.0',
+ ]
+
+ foreach module: modules
+ test(module + '-pkg-config',
+ bash,
+ args: [
+ '-xe', '-c',
+ '\n'.join([
+ 'pkg-config --validate ' + module,
+ 'test "$(pkg-config --modversion @0@)" = "@1@"'.format(
+ module, glib_version),
+ 'test "$(pkg-config --variable=prefix @0@)" = "@1@"'.format(
+ module, get_option('prefix')),
+ ]),
+ ],
+ suite: ['gmodule', 'no-valgrind', 'pkg-config'],
+ env: {
+ 'PKG_CONFIG_PATH': meson.project_build_root() / 'meson-private',
+ },
+ )
+ endforeach
+endif
diff --git a/gthread/tests/meson.build b/gthread/tests/meson.build
index 53fb78e18..41fad1de4 100644
--- a/gthread/tests/meson.build
+++ b/gthread/tests/meson.build
@@ -52,3 +52,22 @@ foreach test_name, extra_args : gthread_tests
suite : suite,
)
endforeach
+
+if have_bash and have_pkg_config
+ test('gthread-2.0-pkg-config',
+ bash,
+ args: [
+ '-xe', '-c',
+ '\n'.join([
+ 'pkg-config --validate gthread-2.0',
+ 'test "$(pkg-config --modversion gthread-2.0)" = "@0@"'.format(glib_version),
+ 'test "$(pkg-config --variable=prefix gthread-2.0)" = "@0@"'.format(
+ get_option('prefix')),
+ ]),
+ ],
+ suite: ['gthread', 'no-valgrind', 'pkg-config'],
+ env: {
+ 'PKG_CONFIG_PATH': meson.project_build_root() / 'meson-private',
+ },
+ )
+endif
diff --git a/meson.build b/meson.build
index f1a959fb1..e404a7faa 100644
--- a/meson.build
+++ b/meson.build
@@ -2287,9 +2287,11 @@ if not python_version.version_compare(python_version_req)
endif
# Determine which user environment-dependent files that we want to install
-have_bash = find_program('bash', required : false).found() # For completion scripts
+bash = find_program('bash', required : false)
+have_bash = bash.found() # For completion scripts
bash_comp_dep = dependency('bash-completion', version: '>=2.0', required: false)
have_sh = find_program('sh', required : false).found() # For glib-gettextize
+have_pkg_config = find_program('pkg-config', required: false).found()
# Some installed tests require a custom environment
env_program = find_program('env', required: installed_tests_enabled)