diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2023-03-05 14:12:06 -0500 |
---|---|---|
committer | Eli Schwartz <eschwartz@archlinux.org> | 2023-05-02 19:28:35 -0400 |
commit | 4a2530802c8d1d7a92f3f9b4b9683636ba5c92e1 (patch) | |
tree | 9409d274669340c9c1df84620313499c07725008 | |
parent | 6823cabb83c77fa19ebf594acceea7314b9e8fd7 (diff) | |
download | meson-4a2530802c8d1d7a92f3f9b4b9683636ba5c92e1.zip meson-4a2530802c8d1d7a92f3f9b4b9683636ba5c92e1.tar.gz meson-4a2530802c8d1d7a92f3f9b4b9683636ba5c92e1.tar.bz2 |
update the devenv module hooks to support generic modifications to Build
We may want to do things like update install scripts as well, which have
to happen before generating the backend. Instead of adding one module
method per thing to do, use a single function that allows for modifying
the Build object directly.
-rw-r--r-- | mesonbuild/modules/__init__.py | 6 | ||||
-rw-r--r-- | mesonbuild/modules/gnome.py | 5 | ||||
-rw-r--r-- | mesonbuild/msetup.py | 9 |
3 files changed, 10 insertions, 10 deletions
diff --git a/mesonbuild/modules/__init__.py b/mesonbuild/modules/__init__.py index 3b7c299..98ac18a 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 7d471e4..3b85622 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 0de5b31..2a559d8 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): |