Skip to content

BuildStream crashes on junctions in non-strict mode

Summary

BuildStream crashes on junctions in non-strict mode

Steps to reproduce

Build or fetch any project which has a junction, in non-strict mode.

What is the current bug behavior?

Traceback (most recent call last):
  File "/codethink/GNOME/buildstream/buildstream/testing/runcli.py", line 393, in _invoke
    cli_object.main(args=args or (), prog_name=cli_object.name)
  File "/codethink/GNOME/buildstream/buildstream/_frontend/cli.py", line 195, in override_main
    standalone_mode=standalone_mode, **extra)
  File "/codethink/GNOME/buildstream/.tox/py36/lib/python3.6/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/codethink/GNOME/buildstream/.tox/py36/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/codethink/GNOME/buildstream/.tox/py36/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/codethink/GNOME/buildstream/.tox/py36/lib/python3.6/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/codethink/GNOME/buildstream/.tox/py36/lib/python3.6/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/codethink/GNOME/buildstream/.tox/py36/lib/python3.6/site-packages/click/decorators.py", line 27, in new_func
    return f(get_current_context().obj, *args, **kwargs)
  File "/codethink/GNOME/buildstream/buildstream/_frontend/cli.py", line 672, in source_fetch
    remote=remote)
  File "/codethink/GNOME/buildstream/buildstream/_stream.py", line 324, in fetch
    source_remote_url=remote)
  File "/codethink/GNOME/buildstream/buildstream/_stream.py", line 1061, in _load
    fetch_subprojects=fetch_subprojects)
  File "/codethink/GNOME/buildstream/buildstream/_pipeline.py", line 113, in load
    fetch_subprojects=fetch_subprojects)
  File "/codethink/GNOME/buildstream/buildstream/_project.py", line 455, in load_elements
    fetch_subprojects=fetch_subprojects)
  File "/codethink/GNOME/buildstream/buildstream/_loader/loader.py", line 114, in load
    element = loader._load_file(name, rewritable, ticker, fetch_subprojects)
  File "/codethink/GNOME/buildstream/buildstream/_loader/loader.py", line 258, in _load_file
    fetch_subprojects=fetch_subprojects, provenance=dep.provenance)
  File "/codethink/GNOME/buildstream/buildstream/_loader/loader.py", line 569, in _get_loader
    filename, element._get_cache_key())
  File "/usr/local/lib/python3.6/posixpath.py", line 94, in join
    genericpath._check_arg_types('join', a, *p)
  File "/usr/local/lib/python3.6/genericpath.py", line 149, in _check_arg_types
    (funcname, s.__class__.__name__)) from None
TypeError: join() argument must be str or bytes, not 'NoneType'

What is the expected correct behavior?

No crashes please, just happily load the junction cache key.

Additional information

This only happens with master, not in bst-1.2.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information