BuildStream crashes when trying to push a non-build artifact
Summary
When trying to push elements and at least an element is not 'cached', BuildStream crashes horribly
Steps to reproduce
- create a new bst element
- bst push your_element
A test has been pushed to trigger the bug: 52f140d3
What is the current bug behavior?
We get a stacktrace with AttributeError
What is the expected correct behavior?
A nice error message/silence
Relevant logs and/or screenshots
(venv) me@myhost $ bst --config user.conf artifact push --remote http://localhost:8000
[--:--:--][ ][ main:core activity ] START Push
[--:--:--][ ][ main:core activity ] START Loading elements
[00:00:04][ ][ main:core activity ] SUCCESS Loading elements
29 subtasks processed
[--:--:--][ ][ main:core activity ] START Resolving elements
[00:00:00][ ][ main:core activity ] SUCCESS Resolving elements
29 of 29 subtasks processed
[--:--:--][ ][ main:core activity ] START Initializing remote caches
[00:00:00][ ][ main:core activity ] SUCCESS Initializing remote caches
[--:--:--][ ][ main:core activity ] START Resolving cached state
[00:00:05][ ][ main:core activity ] SUCCESS Resolving cached state
[--:--:--][ ][ main:core activity ] START Checking sources
[00:00:00][ ][ main:core activity ] SUCCESS Checking sources
[--:--:--][ ][ main:core activity ] BUG 'NoneType' object has no attribute 'was_workspaced'
Traceback (most recent call last):
File "/usr/bin/bst", line 8, in <module>
sys.exit(cli())
File "/usr/lib/python3.6/site-packages/click/core.py", line 764, in __call__
return self.main(*args, **kwargs)
File "/home/tellendil/buildstreamgit/re/buildstream/src/buildstream/_frontend/cli.py", line 223, in override_main
standalone_mode=standalone_mode, **extra)
File "/usr/lib/python3.6/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/usr/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/lib/python3.6/site-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/lib/python3.6/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/usr/lib/python3.6/site-packages/click/decorators.py", line 27, in new_func
return f(get_current_context().obj, *args, **kwargs)
File "/home/tellendil//buildstream/src/buildstream/_frontend/cli.py", line 1155, in artifact_push
ignore_junction_targets=ignore_junction_targets)
File "/home/tellendil//buildstream/src/buildstream/_stream.py", line 490, in push
self._enqueue_plan(elements, queue=push_queue)
File "/home/tellendil/buildstream/src/buildstream/_stream.py", line 1265, in _enqueue_plan
queue.enqueue(plan)
File "/home/tellendil/buildstream/src/buildstream/_scheduler/queues/queue.py", line 183, in enqueue
self._enqueue_element(elt)
File "/home/tellendil/buildstream/src/buildstream/_scheduler/queues/queue.py", line 367, in _enqueue_element
status = self.status(element)
File "/home/tellendil/buildstream/src/buildstream/_scheduler/queues/artifactpushqueue.py", line 39, in status
if element._skip_push():
File "/home/tellendil/buildstream/src/buildstream/element.py", line 1869, in _skip_push
if self.__get_tainted():
File "/home/tellendil/buildstream/src/buildstream/element.py", line 2507, in __get_tainted
workspaced = self.__artifact.get_metadata_workspaced()
File "/home/tellendil/buildstream/src/buildstream/_artifact.py", line 311, in get_metadata_workspaced
self._metadata_workspaced = artifact.was_workspaced
AttributeError: 'NoneType' object has no attribute 'was_workspaced'