aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2023-03-05 14:38:57 -0500
committerEli Schwartz <eschwartz@archlinux.org>2023-06-26 13:10:25 -0400
commit418063cc472aa12aca9253c3970486ca5a90b70e (patch)
treee72d3f4b57c777c5d32206bcc52609d7c6eeecea /mesonbuild
parent620bdf5895131f9e58da4c980a28dc96986d0b57 (diff)
downloadmeson-418063cc472aa12aca9253c3970486ca5a90b70e.zip
meson-418063cc472aa12aca9253c3970486ca5a90b70e.tar.gz
meson-418063cc472aa12aca9253c3970486ca5a90b70e.tar.bz2
pkgconfig: move uninstalled devenv handling from setup to the module hook
msetup.py doesn't need to know the gory details of PkgConfigDependency, or directly import it at program startup. It's also slightly wasteful to generate a devenv for the -uninstalled directory when a project doesn't even, in the end, use the pkgconfig module anyway.
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/modules/pkgconfig.py11
-rw-r--r--mesonbuild/msetup.py4
2 files changed, 10 insertions, 5 deletions
diff --git a/mesonbuild/modules/pkgconfig.py b/mesonbuild/modules/pkgconfig.py
index ce27f1e..714955d 100644
--- a/mesonbuild/modules/pkgconfig.py
+++ b/mesonbuild/modules/pkgconfig.py
@@ -27,6 +27,7 @@ from .. import mesonlib
from .. import mlog
from ..coredata import BUILTIN_DIR_OPTIONS
from ..dependencies import ThreadDependency
+from ..dependencies.pkgconfig import PkgConfigDependency
from ..interpreter.type_checking import D_MODULE_VERSIONS_KW, INSTALL_DIR_KW, VARIABLES_KW, NoneType
from ..interpreterbase import FeatureNew, FeatureDeprecated
from ..interpreterbase.decorators import ContainerTypeInfo, KwargInfo, typed_kwargs, typed_pos_args
@@ -153,7 +154,7 @@ class DependenciesHelper:
and obj.get_id() in self.metadata):
self._check_generated_pc_deprecation(obj)
processed_reqs.append(self.metadata[obj.get_id()].filebase)
- elif isinstance(obj, dependencies.PkgConfigDependency):
+ elif isinstance(obj, PkgConfigDependency):
if obj.found():
processed_reqs.append(obj.name)
self.add_version_reqs(obj.name, obj.version_reqs)
@@ -197,7 +198,7 @@ class DependenciesHelper:
processed_reqs.append(self.metadata[obj.get_id()].filebase)
elif isinstance(obj, dependencies.ValgrindDependency):
pass
- elif isinstance(obj, dependencies.PkgConfigDependency):
+ elif isinstance(obj, PkgConfigDependency):
if obj.found():
processed_reqs.append(obj.name)
self.add_version_reqs(obj.name, obj.version_reqs)
@@ -381,6 +382,7 @@ class PkgConfigModule(NewExtensionModule):
# Track already generated pkg-config files This is stored as a class
# variable so that multiple `import()`s share metadata
+ devenv: T.Optional[build.EnvironmentVariables] = None
_metadata: T.ClassVar[T.Dict[str, MetaData]] = {}
def __init__(self) -> None:
@@ -389,6 +391,9 @@ class PkgConfigModule(NewExtensionModule):
'generate': self.generate,
})
+ def postconf_hook(self, b: build.Build) -> None:
+ b.devenv.append(self.devenv)
+
def _get_lname(self, l: T.Union[build.SharedLibrary, build.StaticLibrary, build.CustomTarget, build.CustomTargetIndex],
msg: str, pcfile: str) -> str:
if isinstance(l, (build.CustomTargetIndex, build.CustomTarget)):
@@ -734,6 +739,8 @@ class PkgConfigModule(NewExtensionModule):
if not isinstance(lib, str) and lib.get_id() not in self._metadata:
self._metadata[lib.get_id()] = MetaData(
filebase, name, state.current_node)
+ if self.devenv is None:
+ self.devenv = PkgConfigDependency.get_env(state.environment, mesonlib.MachineChoice.HOST, uninstalled=True)
return ModuleReturnValue(res, [res])
diff --git a/mesonbuild/msetup.py b/mesonbuild/msetup.py
index edc6330..e7bf3c2 100644
--- a/mesonbuild/msetup.py
+++ b/mesonbuild/msetup.py
@@ -19,8 +19,7 @@ from pathlib import Path
import typing as T
from . import build, coredata, environment, interpreter, mesonlib, mintro, mlog
-from .dependencies import PkgConfigDependency
-from .mesonlib import MachineChoice, MesonException
+from .mesonlib import MesonException
git_ignore_file = '''# This file is autogenerated by Meson. If you change or delete it, it won't be recreated.
*
@@ -301,7 +300,6 @@ class MesonApp:
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():
mod.postconf_hook(b)