aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/wrap
diff options
context:
space:
mode:
authorWill Toohey <will@mon.im>2022-01-27 22:48:51 +1000
committerEli Schwartz <eschwartz93@gmail.com>2022-01-27 11:13:40 -0500
commit22a998188bb60b724df054e75e70e03760d0ba31 (patch)
tree496c82283db674ec2ce1af27588fc7ed53c89607 /mesonbuild/wrap
parentd73e81c77b842d386ebdfe4fc984fea364ca51b8 (diff)
downloadmeson-22a998188bb60b724df054e75e70e03760d0ba31.zip
meson-22a998188bb60b724df054e75e70e03760d0ba31.tar.gz
meson-22a998188bb60b724df054e75e70e03760d0ba31.tar.bz2
Checkout subproject submodules even when nested
Diffstat (limited to 'mesonbuild/wrap')
-rw-r--r--mesonbuild/wrap/wrap.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/mesonbuild/wrap/wrap.py b/mesonbuild/wrap/wrap.py
index c99e33c..21eb9d6 100644
--- a/mesonbuild/wrap/wrap.py
+++ b/mesonbuild/wrap/wrap.py
@@ -372,12 +372,16 @@ class Resolver:
# definitely cannot try to conveniently set up a submodule.
if not GIT:
return False
+ # Does the directory exist? Even uninitialised submodules checkout an
+ # empty directory to work in
+ if not os.path.isdir(self.dirname):
+ return False
# Are we in a git repository?
- ret, out = quiet_git(['rev-parse'], self.subdir_root)
+ ret, out = quiet_git(['rev-parse'], Path(self.dirname).parent)
if not ret:
return False
# Is `dirname` a submodule?
- ret, out = quiet_git(['submodule', 'status', self.dirname], self.subdir_root)
+ ret, out = quiet_git(['submodule', 'status', '.'], self.dirname)
if not ret:
return False
# Submodule has not been added, add it
@@ -388,11 +392,12 @@ class Resolver:
raise WrapException('git submodule has merge conflicts')
# Submodule exists, but is deinitialized or wasn't initialized
elif out.startswith('-'):
- if verbose_git(['submodule', 'update', '--init', self.dirname], self.subdir_root):
+ if verbose_git(['submodule', 'update', '--init', '.'], self.dirname):
return True
raise WrapException('git submodule failed to init')
# Submodule looks fine, but maybe it wasn't populated properly. Do a checkout.
elif out.startswith(' '):
+ verbose_git(['submodule', 'update', '.'], self.dirname)
verbose_git(['checkout', '.'], self.dirname)
# Even if checkout failed, try building it anyway and let the user
# handle any problems manually.