diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py index 525473123e72..bd89670e7010 100644 --- a/mesonbuild/modules/pkgconfig.py +++ b/mesonbuild/modules/pkgconfig.py @@ -95,6 +95,9 @@ def _process_libs(self, libs, public): processed_cflags += obj.get_compile_args() elif isinstance(obj, build.SharedLibrary): processed_libs.append(obj) + if public: + if not hasattr(obj, 'generated_pc'): + obj.generated_pc = self.name elif isinstance(obj, build.StaticLibrary): # Due to a "feature" in pkgconfig, it leaks out private dependencies. # Thus we will not add them to the pc file unless the target diff --git a/run_unittests.py b/run_unittests.py index 44d5c9dff448..d528717462ae 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -510,7 +510,8 @@ def tearDown(self): windows_proof_rmtree(path) except FileNotFoundError: pass - os.environ = self.orig_env + os.environ.clear() + os.environ.update(self.orig_env) super().tearDown() def _run(self, command, workdir=None): @@ -2717,6 +2718,10 @@ def test_old_gnome_module_codepaths(self): def test_pkgconfig_usage(self): testdir1 = os.path.join(self.unit_test_dir, '24 pkgconfig usage/dependency') testdir2 = os.path.join(self.unit_test_dir, '24 pkgconfig usage/dependee') + if subprocess.call(['pkg-config', '--cflags', 'glib-2.0'], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL) != 0: + raise unittest.SkipTest('Glib 2.0 dependency not available.') with tempfile.TemporaryDirectory() as tempdirname: self.init(testdir1, ['--prefix=' + tempdirname, '--libdir=lib'], default_args=False) self.install(use_destdir=False) @@ -2737,8 +2742,10 @@ def test_pkgconfig_usage(self): self.build() myenv = os.environ.copy() myenv['LD_LIBRARY_PATH'] = lib_dir + if is_cygwin(): + bin_dir = os.path.join(tempdirname, 'bin') + myenv['PATH'] = bin_dir + os.pathsep + myenv['PATH'] self.assertTrue(os.path.isdir(lib_dir)) - self.assertTrue(os.path.isfile(os.path.join(lib_dir, 'libpkgdep.so'))) test_exe = os.path.join(self.builddir, 'pkguser') self.assertTrue(os.path.isfile(test_exe)) subprocess.check_call(test_exe, env=myenv) diff --git a/test cases/common/51 pkgconfig-gen/dependencies/meson.build b/test cases/common/51 pkgconfig-gen/dependencies/meson.build index 018b72fba91a..2e00943556d9 100644 --- a/test cases/common/51 pkgconfig-gen/dependencies/meson.build +++ b/test cases/common/51 pkgconfig-gen/dependencies/meson.build @@ -5,7 +5,7 @@ pkgg = import('pkgconfig') # libmain internally use libinternal and expose libexpose in its API exposed_lib = shared_library('libexposed', 'exposed.c') internal_lib = shared_library('libinternal', 'internal.c') -main_lib = shared_library('libmain', link_with : [exposed_lib, internal_lib]) +main_lib = static_library('libmain', link_with : [exposed_lib, internal_lib]) pkgg.generate(libraries : exposed_lib, version : '1.0',