Inform user they should fetch a specific source when trying to launch a build shell
Summary
I'm trying to open a build shell on an element which was pulled from the artifacts cache, not built.
That fails because I don't have the tarball.
Steps to reproduce
-
(optional: this helps making this 100% reproducible from scratch) completely clean your Buildstream cache:
$ rm -rf ~/.cache/buildstream
-
let's do this with the freedesktop-sdk:
$ git clone https://gitlab.com/freedesktop-sdk/freedesktop-sdk.git $ cd freedesktop-sdk $ git checkout 18.08
-
pull the libdrm build artifacts:
$ bst build base/pkg-config.bst desktop/libdrm.bst
-
try opening a build shell:
$ bst shell --build desktop/libdrm.bst
What is the current bug behavior?
$ bst shell --build desktop/libdrm.bst
[… snip …]
[00:00:00][13b665a5][ main:desktop/libdrm.bst ] FAILURE Staging sources
Error launching shell: tar source at desktop/libdrm.bst [line 26 column 4]: Error staging source: [Errno 2] No such file or directory: '/home/mathieu/.cache/buildstream/sources/tar/https___dri_freedesktop_org_libdrm_libdrm_2_4_92_tar_bz2/e9e48fdb4de139dc4d9880aa1473158a16ff6aff63d14341367bd30a51ff39fa'
What is the expected correct behavior?
A working build shell.
Possible fixes
I guess Buildstream could download the sources itself, since that's necessary to open a build shell?
However the Buildstream UX is usually to require the user to explicitly take actions. The problem is that in this specific case, nothing seems to tell Buildstream to download the sources…
Other relevant information
… for example, I tried the following:
$ bst fetch desktop/libdrm.bst
But that did nothing, because Buildstream found that desktop/libdrm.bst
was already built and cached.
- BuildStream version affected: 1.1.7
Update: What happened here is that BuildStream tried to stage sources which were not previously fetched when trying to open a build shell with bst shell --build
, and gave a confusing error message.
@bochecha tried running bst fetch --deps all desktop/libdrm.bst
, but bst fetch --deps none desktop/libdrm.bst
should have been sufficient.
We have some precedent for suggesting exactly what command invocation should be issued in some cases, like when trying to build with unfetched junctions, we should issue such a message in this case.