diff options
author | Andrei Alexeyev <0x416b617269@gmail.com> | 2019-03-02 15:59:31 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-03-11 20:31:52 +0200 |
commit | faf3581df6af59c04e66378da129bb2039beab8a (patch) | |
tree | f6e706065e70a518272684ed0b101d0b7c8aa21d | |
parent | 969e291835fec26b49ae56a7b79fdeb72a903d85 (diff) | |
download | meson-faf3581df6af59c04e66378da129bb2039beab8a.zip meson-faf3581df6af59c04e66378da129bb2039beab8a.tar.gz meson-faf3581df6af59c04e66378da129bb2039beab8a.tar.bz2 |
Fix git wraps with submodules
* If clone-recursive is specified, populate submodules only after
the specified revision/branch has been checked out. Fixes #4996
* Update submodules recursively on `meson subprojects update`
-rw-r--r-- | mesonbuild/msubprojects.py | 2 | ||||
-rw-r--r-- | mesonbuild/wrap/wrap.py | 15 |
2 files changed, 8 insertions, 9 deletions
diff --git a/mesonbuild/msubprojects.py b/mesonbuild/msubprojects.py index 1536d96..2c1bf8b 100644 --- a/mesonbuild/msubprojects.py +++ b/mesonbuild/msubprojects.py @@ -92,7 +92,7 @@ def update_git(wrap, repo_dir, options): ' To rebase your branch on top of', mlog.bold(revision), 'use', mlog.bold('--rebase'), 'option.') return - git(['submodule', 'update'], repo_dir) + git(['submodule', 'update', '--checkout', '--recursive'], repo_dir) git_show(repo_dir) def update_hg(wrap, repo_dir, options): diff --git a/mesonbuild/wrap/wrap.py b/mesonbuild/wrap/wrap.py index e5d0a71..4d9d032 100644 --- a/mesonbuild/wrap/wrap.py +++ b/mesonbuild/wrap/wrap.py @@ -218,17 +218,16 @@ class Resolver: def get_git(self): revno = self.wrap.get('revision') - if self.wrap.values.get('clone-recursive', '').lower() == 'true': - subprocess.check_call(['git', 'clone', '--recursive', self.wrap.get('url'), - self.directory], cwd=self.subdir_root) - else: - subprocess.check_call(['git', 'clone', self.wrap.get('url'), - self.directory], cwd=self.subdir_root) + subprocess.check_call(['git', 'clone', self.wrap.get('url'), + self.directory], cwd=self.subdir_root) if revno.lower() != 'head': if subprocess.call(['git', 'checkout', revno], cwd=self.dirname) != 0: subprocess.check_call(['git', 'fetch', self.wrap.get('url'), revno], cwd=self.dirname) - subprocess.check_call(['git', 'checkout', revno], - cwd=self.dirname) + subprocess.check_call(['git', 'checkout', revno], cwd=self.dirname) + if self.wrap.values.get('clone-recursive', '').lower() == 'true': + subprocess.check_call(['git', 'submodule', 'update', + '--init', '--checkout', '--recursive'], + cwd=self.dirname) push_url = self.wrap.values.get('push-url') if push_url: subprocess.check_call(['git', 'remote', 'set-url', |