diff options
| author | Nirbheek Chauhan <nirbheek@centricular.com> | 2024-09-26 15:00:54 +0530 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2024-09-30 10:17:41 -0700 |
| commit | fb4995a2c607b8289ae97a3faa5917f2887da294 (patch) | |
| tree | 73dd2dae3a905a0d967f8ffd264dce331e988c3b | |
| parent | 9294c81fc134515a7b7d06ed538b66f45993b59d (diff) | |
| download | meson-fb4995a2c607b8289ae97a3faa5917f2887da294.tar.gz | |
programs: Store the project version when overriding find_program
When we're using the output of configure_file() with
override_find_program(), we weren't storing the version anywhere, so
get_version() was trying to run the script during setup.
This is usually fine, except in cases where the configure_file()
script actually has to import a library built as part of the project,
and fails to run.
For built executables, we simply use the project version, and we
now do the same here too.
| -rw-r--r-- | mesonbuild/interpreter/mesonmain.py | 2 | ||||
| -rw-r--r-- | mesonbuild/programs.py | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/mesonbuild/interpreter/mesonmain.py b/mesonbuild/interpreter/mesonmain.py index a148f9624..c82f93345 100644 --- a/mesonbuild/interpreter/mesonmain.py +++ b/mesonbuild/interpreter/mesonmain.py @@ -334,7 +334,7 @@ class MesonMain(MesonInterpreterObject): self.interpreter.environment.build_dir) if not os.path.exists(abspath): raise InterpreterException(f'Tried to override {name} with a file that does not exist.') - exe = OverrideProgram(name, [abspath]) + exe = OverrideProgram(name, self.interpreter.project_version, command=[abspath]) self.interpreter.add_find_program_override(name, exe) @typed_kwargs( diff --git a/mesonbuild/programs.py b/mesonbuild/programs.py index 8f7d1c36c..bbe8ea421 100644 --- a/mesonbuild/programs.py +++ b/mesonbuild/programs.py @@ -340,6 +340,12 @@ class OverrideProgram(ExternalProgram): """A script overriding a program.""" + def __init__(self, name: str, version: str, command: T.Optional[T.List[str]] = None, + silent: bool = False, search_dir: T.Optional[str] = None, + extra_search_dirs: T.Optional[T.List[str]] = None): + self.cached_version = version + super().__init__(name, command=command, silent=silent, + search_dir=search_dir, extra_search_dirs=extra_search_dirs) def find_external_program(env: 'Environment', for_machine: MachineChoice, name: str, display_name: str, default_names: T.List[str], |
