Will Salmon pushed to branch willsalmon/outOfSourecBuild at BuildStream / buildstream
Commits:
-
687eeebf
by William Salmon at 2018-10-04T09:00:49Z
-
c56a52e7
by William Salmon at 2018-10-04T09:00:49Z
7 changed files:
- buildstream/buildelement.py
- buildstream/plugins/elements/distutils.yaml
- buildstream/plugins/elements/meson.yaml
- buildstream/plugins/elements/pip.yaml
- buildstream/plugins/elements/qmake.yaml
- buildstream/source.py
- tests/format/variables.py
Changes:
... | ... | @@ -23,6 +23,40 @@ BuildElement - Abstract class for build elements |
23 | 23 |
The BuildElement class is a convenience element one can derive from for
|
24 | 24 |
implementing the most common case of element.
|
25 | 25 |
|
26 |
+Built-in functionality
|
|
27 |
+----------------------
|
|
28 |
+ |
|
29 |
+The BuildElement base class provides built in functionality that could be overridden by the
|
|
30 |
+individual plugins.
|
|
31 |
+ |
|
32 |
+This section will give a brief summary of how some of the common features work, some of them or the variables they
|
|
33 |
+use will be further detailed in the following sections.
|
|
34 |
+ |
|
35 |
+* Location for running commands
|
|
36 |
+ |
|
37 |
+ The ``command-subdir`` variable sets where the build commands will be executed, if the directory does not exist it
|
|
38 |
+ will be created, it is defined relative to the buildroot.
|
|
39 |
+ |
|
40 |
+* Location for configuring the project
|
|
41 |
+ |
|
42 |
+ The ``conf-root`` is defined by default as ``.`` and is the location that specific build element can use to look
|
|
43 |
+ for build configuration files, currently autotools, cmake, distutils, meson, pip and qmake use this.
|
|
44 |
+ |
|
45 |
+ The configuration commands are run in ``command-subdir`` and by default ``conf-root`` is ``.`` so if
|
|
46 |
+ ``conf-root`` is not set the configuration files in ``command-subdir`` will be used.
|
|
47 |
+ |
|
48 |
+ By setting ``conf-root`` to ``"%{build-root}/Source/conf_location"`` and your source elements ``directory`` variable
|
|
49 |
+ to ``Source`` then the configuration files in the directory ``conf_location`` with in your Source will be used.
|
|
50 |
+ However the location where your configuration command will be run will still be wherever you set your
|
|
51 |
+ ``command-subdir`` to be.
|
|
52 |
+ |
|
53 |
+ The ``conf-root`` variable is available since :ref:`format version 17 <project_format_version>`
|
|
54 |
+ |
|
55 |
+* Install Location
|
|
56 |
+ |
|
57 |
+ You should not change the ``install-root`` variable as it is a special writeable location in the sandbox but it is
|
|
58 |
+ useful when writing custom install instructions as it may need to be supplied as the ``DESTDIR``, please see the
|
|
59 |
+ cmake build element for example.
|
|
26 | 60 |
|
27 | 61 |
Abstract method implementations
|
28 | 62 |
-------------------------------
|
... | ... | @@ -8,7 +8,7 @@ variables: |
8 | 8 |
|
9 | 9 |
python-build: |
|
10 | 10 |
|
11 |
- %{python} setup.py build
|
|
11 |
+ %{python} %{conf-root}/setup.py build
|
|
12 | 12 |
|
13 | 13 |
install-args: |
|
14 | 14 |
|
... | ... | @@ -17,7 +17,7 @@ variables: |
17 | 17 |
|
18 | 18 |
python-install: |
|
19 | 19 |
|
20 |
- %{python} setup.py install %{install-args}
|
|
20 |
+ %{python} %{conf-root}/setup.py install %{install-args}
|
|
21 | 21 |
|
22 | 22 |
|
23 | 23 |
config:
|
... | ... | @@ -28,7 +28,7 @@ variables: |
28 | 28 |
--mandir=%{mandir} \
|
29 | 29 |
--infodir=%{infodir} %{meson-extra} %{meson-global} %{meson-local}
|
30 | 30 |
|
31 |
- meson: meson %{build-dir} %{meson-args}
|
|
31 |
+ meson: meson %{conf-root} %{build-dir} %{meson-args}
|
|
32 | 32 |
|
33 | 33 |
ninja: |
|
34 | 34 |
ninja -j ${NINJAJOBS} -C %{build-dir}
|
... | ... | @@ -14,7 +14,7 @@ config: |
14 | 14 |
#
|
15 | 15 |
install-commands:
|
16 | 16 |
- |
|
17 |
- %{pip} install --no-deps --root=%{install-root} --prefix=%{prefix} .
|
|
17 |
+ %{pip} install --no-deps --root=%{install-root} --prefix=%{prefix} %{conf-root}
|
|
18 | 18 |
|
19 | 19 |
# Commands for stripping debugging information out of
|
20 | 20 |
# installed binaries
|
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 |
|
3 | 3 |
variables:
|
4 | 4 |
|
5 |
- qmake: qmake -makefile
|
|
5 |
+ qmake: qmake -makefile %{conf-root}
|
|
6 | 6 |
make: make
|
7 | 7 |
make-install: make -j1 INSTALL_ROOT="%{install-root}" install
|
8 | 8 |
|
... | ... | @@ -20,6 +20,19 @@ |
20 | 20 |
Source - Base source class
|
21 | 21 |
==========================
|
22 | 22 |
|
23 |
+Built-in functionality
|
|
24 |
+----------------------
|
|
25 |
+ |
|
26 |
+The Source base class provides built in functionality that could be overridden by the
|
|
27 |
+individual plugins.
|
|
28 |
+ |
|
29 |
+* Directory
|
|
30 |
+ |
|
31 |
+ The ``directory`` variable can be set for all sources of a type in project.conf
|
|
32 |
+ or per source within a element.
|
|
33 |
+ |
|
34 |
+ This sets the location with in the build root that the content of the source will be
|
|
35 |
+ loaded in to. If the location dose not exist it will be created.
|
|
23 | 36 |
|
24 | 37 |
.. _core_source_abstract_methods:
|
25 | 38 |
|
... | ... | @@ -22,7 +22,7 @@ DATA_DIR = os.path.join( |
22 | 22 |
"cmake -B_builddir -H\".\" -G\"Unix Makefiles\" " + "-DCMAKE_INSTALL_PREFIX:PATH=\"/usr\" \\\n" +
|
23 | 23 |
"-DCMAKE_INSTALL_LIBDIR=lib "),
|
24 | 24 |
('distutils.bst', 'python-install',
|
25 |
- "python3 setup.py install --prefix \"/usr\" \\\n" +
|
|
25 |
+ "python3 ./setup.py install --prefix \"/usr\" \\\n" +
|
|
26 | 26 |
"--root \"/buildstream-install\""),
|
27 | 27 |
('makemaker.bst', 'configure', "perl Makefile.PL PREFIX=/buildstream-install/usr"),
|
28 | 28 |
('modulebuild.bst', 'configure', "perl Build.PL --prefix \"/buildstream-install/usr\""),
|
... | ... | @@ -48,7 +48,7 @@ def test_defaults(cli, datafiles, tmpdir, target, varname, expected): |
48 | 48 |
"cmake -B_builddir -H\".\" -G\"Ninja\" " + "-DCMAKE_INSTALL_PREFIX:PATH=\"/opt\" \\\n" +
|
49 | 49 |
"-DCMAKE_INSTALL_LIBDIR=lib "),
|
50 | 50 |
('distutils.bst', 'python-install',
|
51 |
- "python3 setup.py install --prefix \"/opt\" \\\n" +
|
|
51 |
+ "python3 ./setup.py install --prefix \"/opt\" \\\n" +
|
|
52 | 52 |
"--root \"/custom/install/root\""),
|
53 | 53 |
('makemaker.bst', 'configure', "perl Makefile.PL PREFIX=/custom/install/root/opt"),
|
54 | 54 |
('modulebuild.bst', 'configure', "perl Build.PL --prefix \"/custom/install/root/opt\""),
|