diff --git a/mesonbuild/modules/__init__.py b/mesonbuild/modules/__init__.py index 3b7c29942..98ac18aee 100644 --- a/mesonbuild/modules/__init__.py +++ b/mesonbuild/modules/__init__.py @@ -31,7 +31,7 @@ if T.TYPE_CHECKING: from ..interpreterbase import TYPE_var, TYPE_kwargs from ..programs import OverrideProgram from ..wrap import WrapMode - from ..build import EnvironmentVariables, Executable + from ..build import Executable from ..dependencies import Dependency class ModuleState: @@ -219,8 +219,8 @@ class NewExtensionModule(ModuleObject): def found() -> bool: return True - def get_devenv(self) -> T.Optional['EnvironmentVariables']: - return None + def postconf_hook(self, b: build.Build) -> None: + pass # FIXME: Port all modules to stop using self.interpreter and use API on # ModuleState instead. Modules should stop using this class and instead use diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py index 7d471e4ce..3b856227e 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py @@ -784,8 +784,9 @@ class GnomeModule(ExtensionModule): self.devenv = build.EnvironmentVariables() self.devenv.prepend(varname, [value]) - def get_devenv(self) -> T.Optional[build.EnvironmentVariables]: - return self.devenv + def postconf_hook(self, b: build.Build) -> None: + if self.devenv is not None: + b.devenv.append(self.devenv) def _get_gir_dep(self, state: 'ModuleState') -> T.Tuple[Dependency, T.Union[build.Executable, 'ExternalProgram', 'OverrideProgram'], T.Union[build.Executable, 'ExternalProgram', 'OverrideProgram']]: diff --git a/mesonbuild/msetup.py b/mesonbuild/msetup.py index 0de5b3137..2a559d841 100644 --- a/mesonbuild/msetup.py +++ b/mesonbuild/msetup.py @@ -251,13 +251,14 @@ class MesonApp: # sync with the time that gets applied to any files. Thus, we dump this file as late as # possible, but before build files, and if any error occurs, delete it. cdf = env.dump_coredata() + + self.finalize_postconf_hooks(b, intr) if self.options.profile: fname = f'profile-{intr.backend.name}-backend.log' fname = os.path.join(self.build_dir, 'meson-private', fname) profile.runctx('intr.backend.generate()', globals(), locals(), filename=fname) else: intr.backend.generate() - self._finalize_devenv(b, intr) build.save(b, dumpfile) if env.first_invocation: # Use path resolved by coredata because they could have been @@ -300,13 +301,11 @@ class MesonApp: os.unlink(cdf) raise - def _finalize_devenv(self, b: build.Build, intr: interpreter.Interpreter) -> None: + def finalize_postconf_hooks(self, b: build.Build, intr: interpreter.Interpreter) -> None: b.devenv.append(intr.backend.get_devenv()) b.devenv.append(PkgConfigDependency.get_env(intr.environment, MachineChoice.HOST, uninstalled=True)) for mod in intr.modules.values(): - devenv = mod.get_devenv() - if devenv: - b.devenv.append(devenv) + mod.postconf_hook(b) def run(options: T.Union[argparse.Namespace, T.List[str]]) -> int: if not isinstance(options, argparse.Namespace):