diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2017-03-25 18:24:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-25 18:24:38 +0200 |
commit | e4c224bdc1d69ae034a54a9bb3f3c462d7783329 (patch) | |
tree | b5382d98ad023c9526f2826c45cf9039034101dc /mesonbuild/interpreter.py | |
parent | cfc3605b730060b41856d3029dcfffc1ccce7ce6 (diff) | |
parent | d5975cc683f5c03a2060ee28bb467732909cfb97 (diff) | |
download | meson-e4c224bdc1d69ae034a54a9bb3f3c462d7783329.zip meson-e4c224bdc1d69ae034a54a9bb3f3c462d7783329.tar.gz meson-e4c224bdc1d69ae034a54a9bb3f3c462d7783329.tar.bz2 |
Merge pull request #1516 from centricular/git-submodule-subprojects
Add support for using git submodules as subprojects
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 79a531d..6e8cf1a 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -20,7 +20,7 @@ from . import mlog from . import build from . import optinterpreter from . import compilers -from .wrap import wrap +from .wrap import wrap, WrapMode from . import mesonlib from .mesonlib import FileMode, Popen_safe from .dependencies import InternalDependency, Dependency @@ -1498,11 +1498,13 @@ class Interpreter(InterpreterBase): raise InvalidCode('Recursive include of subprojects: %s.' % incpath) if dirname in self.subprojects: return self.subprojects[dirname] - r = wrap.Resolver(os.path.join(self.build.environment.get_source_dir(), self.subproject_dir)) - resolved = r.resolve(dirname) - if resolved is None: - msg = 'Subproject directory {!r} does not exist and cannot be downloaded.' - raise InterpreterException(msg.format(os.path.join(self.subproject_dir, dirname))) + subproject_dir_abs = os.path.join(self.environment.get_source_dir(), self.subproject_dir) + r = wrap.Resolver(subproject_dir_abs, self.coredata.wrap_mode) + try: + resolved = r.resolve(dirname) + except RuntimeError as e: + msg = 'Subproject directory {!r} does not exist and cannot be downloaded:\n{}' + raise InterpreterException(msg.format(os.path.join(self.subproject_dir, dirname), e)) subdir = os.path.join(self.subproject_dir, resolved) os.makedirs(os.path.join(self.build.environment.get_build_dir(), subdir), exist_ok=True) self.args_frozen = True @@ -1909,6 +1911,11 @@ requirements use the version keyword argument instead.''') return fbinfo def dependency_fallback(self, name, kwargs): + if self.coredata.wrap_mode in (WrapMode.nofallback, WrapMode.nodownload): + mlog.log('Not looking for a fallback subproject for the dependency', + mlog.bold(name), 'because:\nAutomatic wrap-based fallback ' + 'dependency downloading is disabled.') + return None dirname, varname = self.get_subproject_infos(kwargs) # Try to execute the subproject try: |