aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/wrap
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2019-12-10 12:22:14 -0500
committerJussi Pakkanen <jpakkane@gmail.com>2019-12-10 22:19:00 +0200
commit5031f4981d4fcf6eb0bc950669a0a77a7df22939 (patch)
tree0fcd3d994cca70fe7465b7732ebb516b7aa7e956 /mesonbuild/wrap
parentfc800a2cb8cb754e55db1b6ede287079d44dc244 (diff)
downloadmeson-5031f4981d4fcf6eb0bc950669a0a77a7df22939.zip
meson-5031f4981d4fcf6eb0bc950669a0a77a7df22939.tar.gz
meson-5031f4981d4fcf6eb0bc950669a0a77a7df22939.tar.bz2
dist: Fix --include-subprojects when .wrap file has directory value
Diffstat (limited to 'mesonbuild/wrap')
-rw-r--r--mesonbuild/wrap/wrap.py32
1 files changed, 18 insertions, 14 deletions
diff --git a/mesonbuild/wrap/wrap.py b/mesonbuild/wrap/wrap.py
index 21dab16..3ea1f1e 100644
--- a/mesonbuild/wrap/wrap.py
+++ b/mesonbuild/wrap/wrap.py
@@ -125,6 +125,23 @@ class PackageDefinition:
def has_patch(self) -> bool:
return 'patch_url' in self.values
+def load_wrap(subdir_root: str, packagename: str) -> PackageDefinition:
+ fname = os.path.join(subdir_root, packagename + '.wrap')
+ if os.path.isfile(fname):
+ return PackageDefinition(fname)
+ return None
+
+def get_directory(subdir_root: str, packagename: str):
+ directory = packagename
+ # We always have to load the wrap file, if it exists, because it could
+ # override the default directory name.
+ wrap = load_wrap(subdir_root, packagename)
+ if wrap and 'directory' in wrap.values:
+ directory = wrap.get('directory')
+ if os.path.dirname(directory):
+ raise WrapException('Directory key must be a name and not a path')
+ return wrap, directory
+
class Resolver:
def __init__(self, subdir_root: str, wrap_mode=WrapMode.default):
self.wrap_mode = wrap_mode
@@ -133,14 +150,7 @@ class Resolver:
def resolve(self, packagename: str, method: str) -> str:
self.packagename = packagename
- self.directory = packagename
- # We always have to load the wrap file, if it exists, because it could
- # override the default directory name.
- self.wrap = self.load_wrap()
- if self.wrap and 'directory' in self.wrap.values:
- self.directory = self.wrap.get('directory')
- if os.path.dirname(self.directory):
- raise WrapException('Directory key must be a name and not a path')
+ self.wrap, self.directory = get_directory(self.subdir_root, self.packagename)
self.dirname = os.path.join(self.subdir_root, self.directory)
meson_file = os.path.join(self.dirname, 'meson.build')
cmake_file = os.path.join(self.dirname, 'CMakeLists.txt')
@@ -187,12 +197,6 @@ class Resolver:
return self.directory
- def load_wrap(self) -> PackageDefinition:
- fname = os.path.join(self.subdir_root, self.packagename + '.wrap')
- if os.path.isfile(fname):
- return PackageDefinition(fname)
- return None
-
def check_can_download(self) -> None:
# Don't download subproject data based on wrap file if requested.
# Git submodules are ok (see above)!