diff options
-rw-r--r-- | mesonbuild/wrap/wrap.py | 11 |
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. |