diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-07-11 17:05:19 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-07-16 13:53:17 +0100 |
commit | 1069c364170ffbf1bff276fd965aeb85efbc22f8 (patch) | |
tree | 5ec3000158c05890b3b5bfc0eaf7bfc2a6ece66d /bitbake/lib/bb/tests/runqueue-tests/conf | |
parent | 5333f31fc7555f0a39246d4fcafa71debf71abe2 (diff) | |
download | poky-1069c364170ffbf1bff276fd965aeb85efbc22f8.tar.gz |
bitbake: runqueue: Optimise multiconfig with overlapping setscene
Currently if a multiconfig build contains different configurations which
have overlapping sstate artefacts, it will build them multiple times.
This is clearly suboptimal and not what users want/expect.
This adds code to detect this and stall all but one of the setscne tasks
so that once its built, it can be found by the other tasks.
We take care to iterate the multiconfigs in order so try and avoid
dependency loops. We also match on PN+taskname+taskhash since this is
what we know sstate in OE-Core would use. There are some tasks even within
a multiconfig which match hashes (mostly do_populate_lic tasks) but those
have a much higher chance of circular dependency so aren't work attempting
to optimise.
If a deadlock does occur the build will be slower but there is code to
unbreak such a deadlock so it hopefully doens't break anything.
Comments are injected into the test tasks so they have different task
hashes and a new test for this optimisation is added.
(Bitbake rev: a75c5fd6d4ec56836de0be2fe679c81297a080ad)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/tests/runqueue-tests/conf')
3 files changed, 9 insertions, 2 deletions
diff --git a/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf b/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf index 8c7b754dab..96ee1cd5ec 100644 --- a/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf +++ b/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf | |||
@@ -6,6 +6,11 @@ PROVIDES = "${PN}" | |||
6 | PN = "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[0]}" | 6 | PN = "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[0]}" |
7 | PF = "${BB_CURRENT_MC}:${PN}" | 7 | PF = "${BB_CURRENT_MC}:${PN}" |
8 | export PATH | 8 | export PATH |
9 | STAMP = "${TOPDIR}/stamps/${PN}" | 9 | TMPDIR ??= "${TOPDIR}" |
10 | T = "${TOPDIR}/workdir/${PN}/temp" | 10 | STAMP = "${TMPDIR}/stamps/${PN}" |
11 | T = "${TMPDIR}/workdir/${PN}/temp" | ||
11 | BB_NUMBER_THREADS = "4" | 12 | BB_NUMBER_THREADS = "4" |
13 | |||
14 | BB_HASHBASE_WHITELIST = "BB_CURRENT_MC" | ||
15 | |||
16 | include conf/multiconfig/${BB_CURRENT_MC}.conf | ||
diff --git a/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc1.conf b/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc1.conf new file mode 100644 index 0000000000..ecf23e1c73 --- /dev/null +++ b/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc1.conf | |||
@@ -0,0 +1 @@ | |||
TMPDIR = "${TOPDIR}/mc1/" | |||
diff --git a/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc2.conf b/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc2.conf new file mode 100644 index 0000000000..eef338e4cc --- /dev/null +++ b/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc2.conf | |||
@@ -0,0 +1 @@ | |||
TMPDIR = "${TOPDIR}/mc2/" | |||