From e5aa47d8af917282794a8da3956ce444b8d8378d Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Mon, 4 Apr 2022 09:59:07 -0400 Subject: Revert "wayland: Also lookup scanner in pkgconfig" This reverts commit 7954a4c9cbf8355d8c8ea9b3d98df45d9f96f66e. --- mesonbuild/interpreter/interpreter.py | 24 ++++-------------------- mesonbuild/modules/__init__.py | 6 ++---- mesonbuild/modules/gnome.py | 22 +++++++++++++++++++--- mesonbuild/modules/unstable_wayland.py | 4 +--- 4 files changed, 26 insertions(+), 30 deletions(-) diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 5339be2..b31b7a8 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -1493,12 +1493,12 @@ external dependencies (including libraries) must go to "dependencies".''') required: bool = True, silent: bool = True, wanted: T.Union[str, T.List[str]] = '', search_dirs: T.Optional[T.List[str]] = None, - version_func: T.Optional[T.Callable[[T.Union['ExternalProgram', 'build.Executable', 'OverrideProgram']], str]] = None, - depname: T.Optional[str] = None, varname: T.Optional[str] = None) -> T.Union['ExternalProgram', 'build.Executable', 'OverrideProgram']: + version_func: T.Optional[T.Callable[[T.Union['ExternalProgram', 'build.Executable', 'OverrideProgram']], str]] = None + ) -> T.Union['ExternalProgram', 'build.Executable', 'OverrideProgram']: args = mesonlib.listify(args) extra_info: T.List[mlog.TV_Loggable] = [] - progobj = self.program_lookup(args, for_machine, required, search_dirs, depname, varname, extra_info) + progobj = self.program_lookup(args, for_machine, required, search_dirs, extra_info) if progobj is None: progobj = self.notfound_program(args) @@ -1542,9 +1542,7 @@ external dependencies (including libraries) must go to "dependencies".''') return progobj def program_lookup(self, args: T.List[mesonlib.FileOrString], for_machine: MachineChoice, - required: bool, search_dirs: T.List[str], - depname: T.Optional[str], varname: T.Optional[str], - extra_info: T.List[mlog.TV_Loggable] + required: bool, search_dirs: T.List[str], extra_info: T.List[mlog.TV_Loggable] ) -> T.Optional[T.Union[ExternalProgram, build.Executable, OverrideProgram]]: progobj = self.program_from_overrides(args, extra_info) if progobj: @@ -1558,20 +1556,6 @@ external dependencies (including libraries) must go to "dependencies".''') return self.find_program_fallback(fallback, args, required, extra_info) progobj = self.program_from_file_for(for_machine, args) - if progobj is None and depname: - # Check if the program path is found in a pkgconfig variable. - # Currently only used internally by gnome and wayland modules, this - # code path is not (yet?) exposed in public find_program() function. - name = args[0] - if not varname: - varname = name.replace('-', '_') - df = DependencyFallbacksHolder(self, [depname], allow_fallback=False) - dep = df.lookup({'native': for_machine == MachineChoice.BUILD, - 'required': False}) - if dep.found(): - path = dep.get_variable(pkgconfig=varname, default_value='') - if path: - progobj = ExternalProgram(name, [path], silent=True) if progobj is None: progobj = self.program_from_system(args, search_dirs, extra_info) if progobj is None and args[0].endswith('python3'): diff --git a/mesonbuild/modules/__init__.py b/mesonbuild/modules/__init__.py index 967c2b3..71536c1 100644 --- a/mesonbuild/modules/__init__.py +++ b/mesonbuild/modules/__init__.py @@ -82,11 +82,9 @@ class ModuleState: def find_program(self, prog: T.Union[str, T.List[str]], required: bool = True, version_func: T.Optional[T.Callable[['ExternalProgram'], str]] = None, wanted: T.Optional[str] = None, silent: bool = False, - for_machine: MachineChoice = MachineChoice.HOST, - depname: T.Optional[str] = None, varname: T.Optional[str] = None) -> 'ExternalProgram': + for_machine: MachineChoice = MachineChoice.HOST) -> 'ExternalProgram': return self._interpreter.find_program_impl(prog, required=required, version_func=version_func, - wanted=wanted, silent=silent, for_machine=for_machine, - depname=depname, varname=varname) + wanted=wanted, silent=silent, for_machine=for_machine) def test(self, args: T.Tuple[str, T.Union[build.Executable, build.Jar, 'ExternalProgram', mesonlib.File]], workdir: T.Optional[str] = None, diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py index 2e7b2a7..8c63647 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py @@ -321,9 +321,25 @@ class GnomeModule(ExtensionModule): def _get_native_binary(self, state: 'ModuleState', name: str, depname: str, varname: str, required: bool = True) -> T.Union[ExternalProgram, OverrideProgram, 'build.Executable']: - return state.find_program(name, for_machine=MachineChoice.BUILD, - required=required, - depname=depname, varname=varname) + # Look in overrides in case glib/gtk/etc are built as subproject + prog = self.interpreter.program_from_overrides([name], []) + if prog is not None: + return prog + + # Look in machine file + prog_list = state.environment.lookup_binary_entry(MachineChoice.HOST, name) + if prog_list is not None: + return ExternalProgram.from_entry(name, prog_list) + + # Check if pkgconfig has a variable + dep = self._get_dep(state, depname, native=True, required=False) + if dep.found() and dep.type_name == 'pkgconfig': + value = dep.get_pkgconfig_variable(varname, [], None) + if value: + return ExternalProgram(name, [value]) + + # Normal program lookup + return state.find_program(name, required=required) @typed_kwargs( 'gnome.post_install', diff --git a/mesonbuild/modules/unstable_wayland.py b/mesonbuild/modules/unstable_wayland.py index 332d938..c3e29f4 100644 --- a/mesonbuild/modules/unstable_wayland.py +++ b/mesonbuild/modules/unstable_wayland.py @@ -45,9 +45,7 @@ class WaylandModule(ExtensionModule): ) def scan_xml(self, state, args, kwargs): if self.scanner_bin is None: - self.scanner_bin = state.find_program('wayland-scanner', - for_machine=MachineChoice.BUILD, - depname='wayland-scanner') + self.scanner_bin = state.find_program('wayland-scanner', for_machine=MachineChoice.BUILD) scope = 'public' if kwargs['public'] else 'private' sides = [i for i in ['client', 'server'] if kwargs[i]] -- cgit v1.1