summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Salmon <will.salmon@codethink.co.uk>2018-09-10 15:37:02 +0100
committerPhil Dawson <phildawson.0807@gmail.com>2018-10-16 12:39:14 +0000
commit5e7cc645c69f96b35508113fdd311ce2e8ba9ab2 (patch)
tree433f7599c0d076413f4363bdaf5f1b75bf47a41e
parentbbcb9bd5cd5ba85e499d4a37058ca9e8663399d4 (diff)
downloadbuildstream-5e7cc645c69f96b35508113fdd311ce2e8ba9ab2.tar.gz
Add conf-root variable to builds
Adding the conf-root variable makes creating out of source builds slightly easier. For issue #512 in Gitlab.
-rw-r--r--buildstream/_versions.py2
-rw-r--r--buildstream/data/projectconfig.yaml3
-rw-r--r--buildstream/plugins/elements/autotools.yaml13
-rw-r--r--buildstream/plugins/elements/cmake.yaml2
-rw-r--r--buildstream/plugins/elements/distutils.yaml4
-rw-r--r--buildstream/plugins/elements/meson.yaml2
-rw-r--r--buildstream/plugins/elements/pip.yaml2
-rw-r--r--buildstream/plugins/elements/qmake.yaml2
-rw-r--r--tests/format/variables.py8
9 files changed, 21 insertions, 17 deletions
diff --git a/buildstream/_versions.py b/buildstream/_versions.py
index 9d9d270c5..8ad2f8cb7 100644
--- a/buildstream/_versions.py
+++ b/buildstream/_versions.py
@@ -23,7 +23,7 @@
# This version is bumped whenever enhancements are made
# to the `project.conf` format or the core element format.
#
-BST_FORMAT_VERSION = 16
+BST_FORMAT_VERSION = 17
# The base BuildStream artifact version
diff --git a/buildstream/data/projectconfig.yaml b/buildstream/data/projectconfig.yaml
index 4d2ccc647..bc9e5147d 100644
--- a/buildstream/data/projectconfig.yaml
+++ b/buildstream/data/projectconfig.yaml
@@ -38,6 +38,9 @@ variables:
# normally staged
build-root: /buildstream/%{project-name}/%{element-name}
+ # Indicates where the build system should look for configuration files
+ conf-root: .
+
# Indicates the build installation directory in the sandbox
install-root: /buildstream-install
diff --git a/buildstream/plugins/elements/autotools.yaml b/buildstream/plugins/elements/autotools.yaml
index 7adafd472..a6917f869 100644
--- a/buildstream/plugins/elements/autotools.yaml
+++ b/buildstream/plugins/elements/autotools.yaml
@@ -6,11 +6,11 @@ variables:
export NOCONFIGURE=1;
if [ -x %{conf-cmd} ]; then true;
- elif [ -x autogen ]; then ./autogen;
- elif [ -x autogen.sh ]; then ./autogen.sh;
- elif [ -x bootstrap ]; then ./bootstrap;
- elif [ -x bootstrap.sh ]; then ./bootstrap.sh;
- else autoreconf -ivf;
+ elif [ -x %{conf-root}/autogen ]; then %{conf-root}/autogen;
+ elif [ -x %{conf-root}/autogen.sh ]; then %{conf-root}/autogen.sh;
+ elif [ -x %{conf-root}/bootstrap ]; then %{conf-root}/bootstrap;
+ elif [ -x %{conf-root}/bootstrap.sh ]; then %{conf-root}/bootstrap.sh;
+ else autoreconf -ivf %{conf-root};
fi
# Project-wide extra arguments to be passed to `configure`
@@ -22,7 +22,8 @@ variables:
# For backwards compatibility only, do not use.
conf-extra: ''
- conf-cmd: ./configure
+ conf-cmd: "%{conf-root}/configure"
+
conf-args: |
--prefix=%{prefix} \
diff --git a/buildstream/plugins/elements/cmake.yaml b/buildstream/plugins/elements/cmake.yaml
index b51727b04..d38a2d226 100644
--- a/buildstream/plugins/elements/cmake.yaml
+++ b/buildstream/plugins/elements/cmake.yaml
@@ -23,7 +23,7 @@ variables:
cmake: |
- cmake -B%{build-dir} -H. -G"%{generator}" %{cmake-args}
+ cmake -B%{build-dir} -H"%{conf-root}" -G"%{generator}" %{cmake-args}
make: cmake --build %{build-dir} -- ${JOBS}
make-install: env DESTDIR="%{install-root}" cmake --build %{build-dir} --target install
diff --git a/buildstream/plugins/elements/distutils.yaml b/buildstream/plugins/elements/distutils.yaml
index 7cb6f3a8d..cec7da6e9 100644
--- a/buildstream/plugins/elements/distutils.yaml
+++ b/buildstream/plugins/elements/distutils.yaml
@@ -8,7 +8,7 @@ variables:
python-build: |
- %{python} setup.py build
+ %{python} %{conf-root}/setup.py build
install-args: |
@@ -17,7 +17,7 @@ variables:
python-install: |
- %{python} setup.py install %{install-args}
+ %{python} %{conf-root}/setup.py install %{install-args}
config:
diff --git a/buildstream/plugins/elements/meson.yaml b/buildstream/plugins/elements/meson.yaml
index 7af9a76e4..9636d76e7 100644
--- a/buildstream/plugins/elements/meson.yaml
+++ b/buildstream/plugins/elements/meson.yaml
@@ -28,7 +28,7 @@ variables:
--mandir=%{mandir} \
--infodir=%{infodir} %{meson-extra} %{meson-global} %{meson-local}
- meson: meson %{build-dir} %{meson-args}
+ meson: meson %{conf-root} %{build-dir} %{meson-args}
ninja: |
ninja -j ${NINJAJOBS} -C %{build-dir}
diff --git a/buildstream/plugins/elements/pip.yaml b/buildstream/plugins/elements/pip.yaml
index 19a226e00..b2b3d3857 100644
--- a/buildstream/plugins/elements/pip.yaml
+++ b/buildstream/plugins/elements/pip.yaml
@@ -14,7 +14,7 @@ config:
#
install-commands:
- |
- %{pip} install --no-deps --root=%{install-root} --prefix=%{prefix} .
+ %{pip} install --no-deps --root=%{install-root} --prefix=%{prefix} %{conf-root}
# Commands for stripping debugging information out of
# installed binaries
diff --git a/buildstream/plugins/elements/qmake.yaml b/buildstream/plugins/elements/qmake.yaml
index e527d45b9..38bf2dacd 100644
--- a/buildstream/plugins/elements/qmake.yaml
+++ b/buildstream/plugins/elements/qmake.yaml
@@ -2,7 +2,7 @@
variables:
- qmake: qmake -makefile
+ qmake: qmake -makefile %{conf-root}
make: make
make-install: make -j1 INSTALL_ROOT="%{install-root}" install
diff --git a/tests/format/variables.py b/tests/format/variables.py
index d01d87e5b..26bb3db98 100644
--- a/tests/format/variables.py
+++ b/tests/format/variables.py
@@ -19,10 +19,10 @@ DATA_DIR = os.path.join(
@pytest.mark.parametrize("target,varname,expected", [
('autotools.bst', 'make-install', "make -j1 DESTDIR=\"/buildstream-install\" install"),
('cmake.bst', 'cmake',
- "cmake -B_builddir -H. -G\"Unix Makefiles\" -DCMAKE_INSTALL_PREFIX:PATH=\"/usr\" \\\n" +
+ "cmake -B_builddir -H\".\" -G\"Unix Makefiles\" " + "-DCMAKE_INSTALL_PREFIX:PATH=\"/usr\" \\\n" +
"-DCMAKE_INSTALL_LIBDIR=lib "),
('distutils.bst', 'python-install',
- "python3 setup.py install --prefix \"/usr\" \\\n" +
+ "python3 ./setup.py install --prefix \"/usr\" \\\n" +
"--root \"/buildstream-install\""),
('makemaker.bst', 'configure', "perl Makefile.PL PREFIX=/buildstream-install/usr"),
('modulebuild.bst', 'configure', "perl Build.PL --prefix \"/buildstream-install/usr\""),
@@ -45,10 +45,10 @@ def test_defaults(cli, datafiles, tmpdir, target, varname, expected):
@pytest.mark.parametrize("target,varname,expected", [
('autotools.bst', 'make-install', "make -j1 DESTDIR=\"/custom/install/root\" install"),
('cmake.bst', 'cmake',
- "cmake -B_builddir -H. -G\"Ninja\" -DCMAKE_INSTALL_PREFIX:PATH=\"/opt\" \\\n" +
+ "cmake -B_builddir -H\".\" -G\"Ninja\" " + "-DCMAKE_INSTALL_PREFIX:PATH=\"/opt\" \\\n" +
"-DCMAKE_INSTALL_LIBDIR=lib "),
('distutils.bst', 'python-install',
- "python3 setup.py install --prefix \"/opt\" \\\n" +
+ "python3 ./setup.py install --prefix \"/opt\" \\\n" +
"--root \"/custom/install/root\""),
('makemaker.bst', 'configure', "perl Makefile.PL PREFIX=/custom/install/root/opt"),
('modulebuild.bst', 'configure', "perl Build.PL --prefix \"/custom/install/root/opt\""),