diff options
-rw-r--r-- | docs/markdown/Wrap-dependency-system-manual.md | 7 | ||||
-rw-r--r-- | docs/markdown/snippets/wrap_clone_recursive.md | 7 | ||||
-rw-r--r-- | mesonbuild/wrap/wrap.py | 8 |
3 files changed, 20 insertions, 2 deletions
diff --git a/docs/markdown/Wrap-dependency-system-manual.md b/docs/markdown/Wrap-dependency-system-manual.md index 38e1ab2..0977921 100644 --- a/docs/markdown/Wrap-dependency-system-manual.md +++ b/docs/markdown/Wrap-dependency-system-manual.md @@ -109,6 +109,13 @@ the end of your wrap file: push-url=git@git.example.com:projects/someproject.git # Supported since version 0.37.0 ``` +If the git repo contains submodules, you can tell Meson to clone them +automatically by adding the following *(since 0.48.0)*: + +```ini +clone-recursive=true +``` + ## Using wrapped projects To use a subproject simply do this in your top level `meson.build`. diff --git a/docs/markdown/snippets/wrap_clone_recursive.md b/docs/markdown/snippets/wrap_clone_recursive.md new file mode 100644 index 0000000..7c1c0da --- /dev/null +++ b/docs/markdown/snippets/wrap_clone_recursive.md @@ -0,0 +1,7 @@ +## Git wraps can now clone submodules automatically + +To enable this, the following needs to be added to the `.wrap` file: + +```ini +clone-recursive=true +```
\ No newline at end of file diff --git a/mesonbuild/wrap/wrap.py b/mesonbuild/wrap/wrap.py index 42808e3..5cc2225 100644 --- a/mesonbuild/wrap/wrap.py +++ b/mesonbuild/wrap/wrap.py @@ -208,8 +208,12 @@ class Resolver: subprocess.check_call(['git', 'checkout', revno], cwd=checkoutdir) else: - subprocess.check_call(['git', 'clone', p.get('url'), - p.get('directory')], cwd=self.subdir_root) + if p.values.get('clone-recursive', '').lower() == 'true': + subprocess.check_call(['git', 'clone', '--recursive', p.get('url'), + p.get('directory')], cwd=self.subdir_root) + else: + subprocess.check_call(['git', 'clone', p.get('url'), + p.get('directory')], cwd=self.subdir_root) if revno.lower() != 'head': if subprocess.call(['git', 'checkout', revno], cwd=checkoutdir) != 0: subprocess.check_call(['git', 'fetch', p.get('url'), revno], cwd=checkoutdir) |