summaryrefslogtreecommitdiff
path: root/buildstream
diff options
context:
space:
mode:
authorPhillip Smyth <phillip.smyth@codethink.co.uk>2018-03-07 15:02:01 +0000
committerPhillip Smyth <phillip.smyth@codethink.co.uk>2018-03-26 15:27:47 +0000
commitb0e6a45e7d34ef969734bc5c607ce97a229a4f77 (patch)
treef87ede105b8912851530a702f945aa614d344516 /buildstream
parente91dc8336074d22126e559a29e23ef2d52c5506a (diff)
downloadbuildstream-b0e6a45e7d34ef969734bc5c607ce97a229a4f77.tar.gz
Generate unique subdirs for built elements
Based on issue 89 (https://gitlab.com/BuildStream/buildstream/issues/89) Ensuring that elements are staged into unique subdirs while building. This patch supports that by doing the following: * Modify project config to add 2 new variables ("project-name" and "element-name") * Changed the default install-root from "/buildstream/install" to "/buildstream-install" * Update the tests to accommodate these changes * Update the expected cache keys in the tests This fixes #89
Diffstat (limited to 'buildstream')
-rw-r--r--buildstream/buildelement.py4
-rw-r--r--buildstream/data/projectconfig.yaml8
-rw-r--r--buildstream/element.py1
-rw-r--r--buildstream/plugins/elements/script.yaml8
4 files changed, 9 insertions, 12 deletions
diff --git a/buildstream/buildelement.py b/buildstream/buildelement.py
index c275cfb9d..5a986bd11 100644
--- a/buildstream/buildelement.py
+++ b/buildstream/buildelement.py
@@ -90,7 +90,7 @@ of the staged sources.
Result collection
~~~~~~~~~~~~~~~~~
Finally, the resulting build *artifact* is collected from the the ``%{install-root}``
-directory (which is normally configured as ``/buildstream/install``) inside the sandbox.
+directory (which is normally configured as ``/buildstream-install``) inside the sandbox.
All build elements must install into the ``%{install-root}`` using whatever
semantic the given build system provides to do this. E.g. for standard autotools
@@ -222,7 +222,7 @@ class BuildElement(Element):
"will not be allowed to stage to %{build-root}.")
# Return the payload, this is configurable but is generally
- # always the /buildstream/install directory
+ # always the /buildstream-install directory
return self.get_variable('install-root')
def _get_commands(self, node, name):
diff --git a/buildstream/data/projectconfig.yaml b/buildstream/data/projectconfig.yaml
index 408304544..b4ad2dcb9 100644
--- a/buildstream/data/projectconfig.yaml
+++ b/buildstream/data/projectconfig.yaml
@@ -29,6 +29,10 @@ variables:
# Note: this value defaults to the number of cores available
max-jobs: 4
+ # Note: These variables are defined later on in element.py and _project.py
+ element-name: ""
+ project-name: ""
+
# Path configuration, to be used in build instructions.
#
prefix: "/usr"
@@ -50,10 +54,10 @@ variables:
# Indicates the default build directory where input is
# normally staged
- build-root: /buildstream/build
+ build-root: /buildstream/%{project-name}/%{element-name}
# Indicates the build installation directory in the sandbox
- install-root: /buildstream/install
+ install-root: /buildstream-install
# Arguments for tooling used when stripping debug symbols
objcopy-link-args: --add-gnu-debuglink
diff --git a/buildstream/element.py b/buildstream/element.py
index 8532f995c..131a834e1 100644
--- a/buildstream/element.py
+++ b/buildstream/element.py
@@ -173,6 +173,7 @@ class Element(Plugin):
# Collect the composited variables and resolve them
variables = self.__extract_variables(meta)
+ variables['element-name'] = self.name
self.__variables = Variables(variables)
# Collect the composited environment now that we have variables
diff --git a/buildstream/plugins/elements/script.yaml b/buildstream/plugins/elements/script.yaml
index 56a656cf6..b388378da 100644
--- a/buildstream/plugins/elements/script.yaml
+++ b/buildstream/plugins/elements/script.yaml
@@ -1,15 +1,7 @@
# Common script element variables
variables:
- # Defines the directory that output is collected from once commands
- # have been run.
- install-root: /buildstream/install
- #
# Defines the directory commands will be run from.
cwd: /
- #
- # Not directly used, but expected to be used when staging elements to be
- # worked on.
- build-root: /buildstream/build
# Script element configuration
config: