diff options
author | Jose Quaresma <quaresma.jose@gmail.com> | 2022-07-22 13:31:24 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-08-12 15:46:49 +0100 |
commit | 39197039e90313f66cf9aa1e6631b5678f04325d (patch) | |
tree | feeb1a8c46a64bc4d5ced2c02a118db08b6fd41d | |
parent | dc850a1066e7dd396ccb6d0e20dc989a2f13fd0a (diff) | |
download | poky-39197039e90313f66cf9aa1e6631b5678f04325d.tar.gz |
archiver.bbclass: some recipes that uses the kernelsrc bbclass uses the shared source
This fix a race that happens when building some of the followning recipes
with kernel at same time.
The kernelsrc uses the kernel shared source dir as their source
S = "${STAGING_KERNEL_DIR}" and this will cause a race in the
do_unpack_and_patch task, when bitbake runs the
bb.build.exec_func('do_unpack', d) because do_unpack will
clean the source dir on startup.
| ok: note that S != "${STAGING_KERNEL_DIR} for this ones
openembedded-core/meta/recipes-kernel/perf/perf.bb:inherit kernelsrc
meta-openembedded/meta-oe/recipes-kernel/usbip-tools/usbip-tools.bb:inherit kernelsrc autotools-brokensep
| broken
meta-openembedded/meta-oe/recipes-kernel/cpupower/cpupower.bb:inherit kernelsrc kernel-arch bash-completion
meta-openembedded/meta-oe/recipes-kernel/spidev-test/spidev-test.bb:inherit bash-completion kernelsrc kernel-arch
meta-openembedded/meta-oe/recipes-kernel/intel-speed-select/intel-speed-select.bb:inherit kernelsrc
meta-openembedded/meta-oe/recipes-kernel/bpftool/bpftool.bb:inherit bash-completion kernelsrc kernel-arch
The issue can be replicated with:
INHERIT += "archiver"
ARCHIVER_MODE[src] = "original"
ARCHIVER_MODE[diff] = "1"
And:
R=<recipe> bitbake -c cleansstate virtual/kernel $R && bitbake $R
(From OE-Core rev: 5487dee2e1237fb57c5e59b2bbbfbcdfc8c97ab6)
Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/classes/archiver.bbclass | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass index 8eb15af393..0710c1ec5e 100644 --- a/meta/classes/archiver.bbclass +++ b/meta/classes/archiver.bbclass | |||
@@ -463,7 +463,9 @@ def create_diff_gz(d, src_orig, src, ar_outdir): | |||
463 | 463 | ||
464 | def is_work_shared(d): | 464 | def is_work_shared(d): |
465 | pn = d.getVar('PN') | 465 | pn = d.getVar('PN') |
466 | return bb.data.inherits_class('kernel', d) or pn.startswith('gcc-source') | 466 | return pn.startswith('gcc-source') or \ |
467 | bb.data.inherits_class('kernel', d) or \ | ||
468 | (bb.data.inherits_class('kernelsrc', d) and d.getVar('S') == d.getVar('STAGING_KERNEL_DIR')) | ||
467 | 469 | ||
468 | # Run do_unpack and do_patch | 470 | # Run do_unpack and do_patch |
469 | python do_unpack_and_patch() { | 471 | python do_unpack_and_patch() { |