aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Alexeyev <0x416b617269@gmail.com>2019-03-02 15:59:31 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2019-03-11 20:31:52 +0200
commitfaf3581df6af59c04e66378da129bb2039beab8a (patch)
treef6e706065e70a518272684ed0b101d0b7c8aa21d
parent969e291835fec26b49ae56a7b79fdeb72a903d85 (diff)
downloadmeson-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.py2
-rw-r--r--mesonbuild/wrap/wrap.py15
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',