#!/usr/bin/env python3 # # Copyright © 2024 Chun-wei Fan. # # SPDX-License-Identifier: LGPL-2.1-or-later # # Original author: Chun-wei Fan """ This script runs pkg-config against the uninstalled pkg-config files to obtain the paths where the newly-built GLib and subproject DLLs reside """ import argparse import os import subprocess def main(): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--build-path", required=True, help="Root build directory") parser.add_argument( "--pkg-config", help="pkg-config or compatible executable", default="pkg-config" ) parser.add_argument( "--pkg-config-path", help="Additional paths to look for pkg-config .pc files", ) args = parser.parse_args() build_path = args.build_path uninstalled_pc_path = os.path.join(build_path, "meson-uninstalled") if not os.path.isdir(uninstalled_pc_path): raise ValueError("%s is not a valid build path" % build_path) additional_pkg_config_paths = [uninstalled_pc_path] if args.pkg_config_path is not None: additional_pkg_config_paths += args.pkg_config_path.split(os.pathsep) if "PKG_CONFIG_PATH" in os.environ: additional_pkg_config_paths += os.environ["PKG_CONFIG_PATH"].split(os.pathsep) os.environ["PKG_CONFIG_PATH"] = os.pathsep.join(additional_pkg_config_paths) # The _giscanner Python module depends on GIO, so use gio-2.0-uninstalled.pc pkg_config_result = subprocess.run( [args.pkg_config, "--libs-only-L", "gio-2.0"], capture_output=True, text=True, check=True, ) lib_args = pkg_config_result.stdout.split() libpaths = [] for arg in lib_args: # Get rid of the "-L" prefix in the library paths if arg[2:] not in libpaths: libpaths.append(arg[2:]) # Now append the paths in %PATH%, if the paths exist paths = os.environ["PATH"].split(os.pathsep) for path in paths: if os.path.isdir(path): libpaths.append(path) print(os.pathsep.join(libpaths).rstrip()) if __name__ == "__main__": main()