summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2023-03-05 14:12:06 -0500
committerEli Schwartz <eschwartz@archlinux.org>2023-05-02 19:28:35 -0400
commit4a2530802c8d1d7a92f3f9b4b9683636ba5c92e1 (patch)
tree9409d274669340c9c1df84620313499c07725008
parent6823cabb83c77fa19ebf594acceea7314b9e8fd7 (diff)
downloadmeson-4a2530802c8d1d7a92f3f9b4b9683636ba5c92e1.tar.gz
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__.py6
-rw-r--r--mesonbuild/modules/gnome.py5
-rw-r--r--mesonbuild/msetup.py9
3 files changed, 10 insertions, 10 deletions
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):