Skip to content
Snippets Groups Projects
Commit e2574285 authored by Sam Thursfield's avatar Sam Thursfield Committed by Jürg Billeter
Browse files

Add a 'path' config option to junction elements

This makes it possible to depend on a project which is in a subdirectory
of a Git repository.

The error message given when the expected project.conf file is not found
has also been improved. Previously the error would look like this:

    Error loading pipeline: Could not find file at
    /home/sam/.cache/buildstream/build/freedesktop-sdk-junction-rvmn17s2/project.conf

This is giving the path of an internal temporary directory where the foreign
project's source is checked out. The new error gives more information:

    Error loading pipeline: Could not find the project.conf file for junction
    element at freedesktop-sdk-junction.bst [line 1 column 0]. Expecting a
    project at path '.' within git source at freedesktop-sdk-junction.bst [line
    4 column 2]
parent 4062a70d
No related branches found
No related tags found
Loading
Pipeline #
......@@ -362,7 +362,18 @@ class Loader():
source._stage(basedir)
project = Project(basedir, self.context, junction=element)
project_dir = os.path.join(basedir, element.path)
try:
project = Project(project_dir, self.context, junction=element)
except LoadError as e:
if e.reason == LoadErrorReason.MISSING_FILE:
raise LoadError(reason=e.reason,
message="Could not find the project.conf file for {}. "
"Expecting a project at path '{}' within {}".
format(element, element.path or '.', source)) from e
else:
raise
loader = Loader(project, [], parent=self, tempdir=basedir)
......
......@@ -45,6 +45,9 @@ Overview
machine_arch: "%{machine_arch}"
debug: True
# Optionally look in a subpath of the source repository for the project
path: projects/hello
.. note::
Junction elements may not specify any dependencies as they are simply
......@@ -115,6 +118,7 @@ from buildstream._pipeline import PipelineError
class JunctionElement(Element):
def configure(self, node):
self.path = self.node_get_member(node, str, 'path', default='')
self.options = self.node_get_member(node, Mapping, 'options', default={})
def preflight(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment