diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2018-11-23 14:55:06 -0500 |
---|---|---|
committer | Xavier Claessens <xavier.claessens@collabora.com> | 2018-12-02 08:37:32 -0500 |
commit | d655515a6b8231600f37c6db48b802e7b58e070f (patch) | |
tree | bde7ccd08478c30ca946cef09a392a11b84694fa /mesonbuild | |
parent | b5eac54c9e2641a486e698c7eeaf68981af55285 (diff) | |
download | meson-d655515a6b8231600f37c6db48b802e7b58e070f.zip meson-d655515a6b8231600f37c6db48b802e7b58e070f.tar.gz meson-d655515a6b8231600f37c6db48b802e7b58e070f.tar.bz2 |
Add 'meson subprojects download' command
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/msubprojects.py | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/mesonbuild/msubprojects.py b/mesonbuild/msubprojects.py index b9a4437..1536d96 100644 --- a/mesonbuild/msubprojects.py +++ b/mesonbuild/msubprojects.py @@ -2,7 +2,7 @@ import os, subprocess from . import mlog from .mesonlib import Popen_safe -from .wrap.wrap import API_ROOT, PackageDefinition +from .wrap.wrap import API_ROOT, PackageDefinition, Resolver, WrapException from .wrap import wraptool def update_wrapdb_file(wrap, repo_dir, options): @@ -155,6 +155,18 @@ def checkout(wrap, repo_dir, options): out = e.output.decode().strip() mlog.log(' -> ', mlog.red(out)) +def download(wrap, repo_dir, options): + mlog.log('Download %s...' % wrap.name) + if os.path.isdir(repo_dir): + mlog.log(' -> Already downloaded') + return + try: + r = Resolver(os.path.dirname(repo_dir)) + r.resolve(wrap.name) + mlog.log(' -> done') + except WrapException as e: + mlog.log(' ->', mlog.red(str(e))) + def add_common_arguments(p): p.add_argument('--sourcedir', default='.', help='Path to source directory') @@ -179,6 +191,12 @@ def add_arguments(parser): add_common_arguments(p) p.set_defaults(subprojects_func=checkout) + p = subparsers.add_parser('download', help='Ensure subprojects are fetched, even if not in use. ' + + 'Already downloaded subprojects are not modified. ' + + 'This can be used to pre-fetch all subprojects and avoid downloads during configure.') + add_common_arguments(p) + p.set_defaults(subprojects_func=download) + def run(options): src_dir = os.path.relpath(os.path.realpath(options.sourcedir)) if not os.path.isfile(os.path.join(src_dir, 'meson.build')): |