diff --git a/buildstream/data/projectconfig.yaml b/buildstream/data/projectconfig.yaml index 4d2ccc647e397246725fe97f39b3c820748516a4..bc9e5147d2b9af77fca99a888244bc509c0132fb 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 7adafd4729573ec893de444d155eb22ea1760758..a6917f8691fbdd37bf3fcf8b5a4922731ce1562d 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 b51727b04288f175ffa443038c8904acec7f7853..d38a2d2264e2bb71d6fbe4d4903106a884cda7ae 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/tests/format/variables.py b/tests/format/variables.py index d01d87e5beceb00df425a7206bd9c32b67fc35df..c6d062e2f65118f60536f68272e320f68df14120 100644 --- a/tests/format/variables.py +++ b/tests/format/variables.py @@ -19,7 +19,7 @@ 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" + @@ -45,7 +45,7 @@ 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" +