diff options
author | William Salmon <will.salmon@codethink.co.uk> | 2018-09-10 15:37:02 +0100 |
---|---|---|
committer | Phil Dawson <phildawson.0807@gmail.com> | 2018-10-16 12:39:14 +0000 |
commit | 5e7cc645c69f96b35508113fdd311ce2e8ba9ab2 (patch) | |
tree | 433f7599c0d076413f4363bdaf5f1b75bf47a41e | |
parent | bbcb9bd5cd5ba85e499d4a37058ca9e8663399d4 (diff) | |
download | buildstream-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.py | 2 | ||||
-rw-r--r-- | buildstream/data/projectconfig.yaml | 3 | ||||
-rw-r--r-- | buildstream/plugins/elements/autotools.yaml | 13 | ||||
-rw-r--r-- | buildstream/plugins/elements/cmake.yaml | 2 | ||||
-rw-r--r-- | buildstream/plugins/elements/distutils.yaml | 4 | ||||
-rw-r--r-- | buildstream/plugins/elements/meson.yaml | 2 | ||||
-rw-r--r-- | buildstream/plugins/elements/pip.yaml | 2 | ||||
-rw-r--r-- | buildstream/plugins/elements/qmake.yaml | 2 | ||||
-rw-r--r-- | tests/format/variables.py | 8 |
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\""), |