aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2020-04-04 23:56:33 -0400
committerXavier Claessens <xavier.claessens@collabora.com>2020-07-01 09:51:44 -0400
commit2a7f72885ff0623a0a625efb5ffeca6299fc4cf7 (patch)
tree9f004fd5f97c3a9778d04b5c5685f668e5b55544 /mesonbuild/interpreter.py
parent56c9e95b04b51def7443a514e5021fa7b70fe8c8 (diff)
downloadmeson-2a7f72885ff0623a0a625efb5ffeca6299fc4cf7.zip
meson-2a7f72885ff0623a0a625efb5ffeca6299fc4cf7.tar.gz
meson-2a7f72885ff0623a0a625efb5ffeca6299fc4cf7.tar.bz2
wrap: Add 'provide' section
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 053db12..7c55932 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2779,10 +2779,9 @@ external dependencies (including libraries) must go to "dependencies".''')
self.subproject_dir, dirname))
return subproject
- subproject_dir_abs = os.path.join(self.environment.get_source_dir(), self.subproject_dir)
- r = wrap.Resolver(subproject_dir_abs, self.coredata.get_builtin_option('wrap_mode'), current_subproject=self.subproject)
+ r = self.environment.wrap_resolver
try:
- resolved = r.resolve(dirname, method)
+ resolved = r.resolve(dirname, method, self.subproject)
except wrap.WrapException as e:
subprojdir = os.path.join(self.subproject_dir, r.directory)
if isinstance(e, wrap.WrapNotFoundException):
@@ -2798,7 +2797,7 @@ external dependencies (including libraries) must go to "dependencies".''')
raise e
subdir = os.path.join(self.subproject_dir, resolved)
- subdir_abs = os.path.join(subproject_dir_abs, resolved)
+ subdir_abs = os.path.join(self.environment.get_source_dir(), subdir)
os.makedirs(os.path.join(self.build.environment.get_build_dir(), subdir), exist_ok=True)
self.global_args_frozen = True
@@ -3062,6 +3061,10 @@ external dependencies (including libraries) must go to "dependencies".''')
self.subproject_dir = spdirname
self.build.subproject_dir = self.subproject_dir
+ if not self.is_subproject():
+ wrap_mode = self.coredata.get_builtin_option('wrap_mode')
+ subproject_dir_abs = os.path.join(self.environment.get_source_dir(), self.subproject_dir)
+ self.environment.wrap_resolver = wrap.Resolver(subproject_dir_abs, wrap_mode)
self.build.projects[self.subproject] = proj_name
mlog.log('Project name:', mlog.bold(proj_name))
@@ -3551,10 +3554,9 @@ external dependencies (including libraries) must go to "dependencies".''')
has_fallback = 'fallback' in kwargs
if not has_fallback and name:
# Add an implicit fallback if we have a wrap file or a directory with the same name.
- subproject_dir_abs = os.path.join(self.environment.get_source_dir(), self.subproject_dir)
- wrap_, directory = wrap.get_directory(subproject_dir_abs, name)
- if wrap_ or os.path.exists(os.path.join(subproject_dir_abs, directory)):
- kwargs['fallback'] = name
+ provider = self.environment.wrap_resolver.find_provider(name)
+ if provider:
+ kwargs['fallback'] = provider
has_fallback = True
if 'default_options' in kwargs and not has_fallback: