diff options
author | Chandan Singh <csingh43@bloomberg.net> | 2018-09-21 23:20:56 +0100 |
---|---|---|
committer | Benjamin Schubert <ben.c.schubert@gmail.com> | 2018-12-03 09:46:14 +0000 |
commit | 8ac1e7576f43f691b2f011d2655efe3ddb6984a3 (patch) | |
tree | e7f34f698e80ccf92edd7f7096e48185ec4a704e | |
parent | 1b24148fdadcafaf4b316cc45819a06d8ec42647 (diff) | |
download | buildstream-8ac1e7576f43f691b2f011d2655efe3ddb6984a3.tar.gz |
Add `--deps build` option to `bst checkout`
As discussed in
https://mail.gnome.org/archives/buildstream-list/2018-September/msg00064.html,
add `--deps build` option to `bst checkout`. This will allow users to
checkout the all build dependencies of a given element using a single
command.
- _frontend/cli.py: Add `--deps build` option for `bst checkout`.
- element.py: Support `deps='build'` in Element._prepare_sandbox().
- tests/frontend/buildcheckout.py: Ensure `--deps build` works as
expected.
-rw-r--r-- | buildstream/_frontend/cli.py | 2 | ||||
-rw-r--r-- | buildstream/element.py | 5 | ||||
-rw-r--r-- | tests/frontend/buildcheckout.py | 14 |
3 files changed, 17 insertions, 4 deletions
diff --git a/buildstream/_frontend/cli.py b/buildstream/_frontend/cli.py index b845d00eb..59c917323 100644 --- a/buildstream/_frontend/cli.py +++ b/buildstream/_frontend/cli.py @@ -640,7 +640,7 @@ def shell(app, element, sysroot, mount, isolate, build_, command): @click.option('--force', '-f', default=False, is_flag=True, help="Allow files to be overwritten") @click.option('--deps', '-d', default='run', - type=click.Choice(['run', 'none']), + type=click.Choice(['run', 'build', 'none']), help='The dependencies to checkout (default: run)') @click.option('--integrate/--no-integrate', default=True, is_flag=True, help="Whether to run integration commands") diff --git a/buildstream/element.py b/buildstream/element.py index d94f2e8ad..2caac8d3c 100644 --- a/buildstream/element.py +++ b/buildstream/element.py @@ -1353,7 +1353,10 @@ class Element(Plugin): if scope == Scope.BUILD: self.stage(sandbox) elif scope == Scope.RUN: - if deps == 'run': + + if deps == 'build': + dependency_scope = Scope.BUILD + elif deps == 'run': dependency_scope = Scope.RUN else: dependency_scope = Scope.NONE diff --git a/tests/frontend/buildcheckout.py b/tests/frontend/buildcheckout.py index d43bac863..03bba0b26 100644 --- a/tests/frontend/buildcheckout.py +++ b/tests/frontend/buildcheckout.py @@ -86,7 +86,7 @@ def test_build_invalid_suffix_dep(datafiles, cli, strict, hardlinks): @pytest.mark.datafiles(DATA_DIR) -@pytest.mark.parametrize("deps", [("run"), ("none")]) +@pytest.mark.parametrize("deps", [("run"), ("none"), ("build")]) def test_build_checkout_deps(datafiles, cli, deps): project = os.path.join(datafiles.dirname, datafiles.basename) checkout = os.path.join(cli.directory, 'checkout') @@ -107,7 +107,17 @@ def test_build_checkout_deps(datafiles, cli, deps): # Verify output of this element filename = os.path.join(checkout, 'etc', 'buildstream', 'config') - assert os.path.exists(filename) + if deps == "build": + assert not os.path.exists(filename) + else: + assert os.path.exists(filename) + + # Verify output of this element's build dependencies + filename = os.path.join(checkout, 'usr', 'include', 'pony.h') + if deps == "build": + assert os.path.exists(filename) + else: + assert not os.path.exists(filename) # Verify output of this element's runtime dependencies filename = os.path.join(checkout, 'usr', 'bin', 'hello') |