diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-08-15 21:55:16 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2019-08-21 13:21:46 +0100 |
commit | 692b2046bb60806ee6bbde6ba15bd1637b00efb1 (patch) | |
tree | d4e4ae5d76e48d1803a4c21a5969802ff1f8a953 /meta/classes/package.bbclass | |
parent | a10bf92516a4771e2dc49ba9f74323d7a87a1619 (diff) | |
download | openembedded-core-contrib-692b2046bb60806ee6bbde6ba15bd1637b00efb1.tar.gz |
package: Fix race between do_package and do_packagedata
do_package has PKGDESTWORK as a cleandir and do_packagedata has it as an sstate-input
dir. This means do_package wipes out the directory at both do_package and do_package_setscene.
do_package_setscene and do_packagedata_setscene can run in parallel when installing from
sstate which means they can wipe out parts of each other leading to interesting
build failures.
We therefore have to add in a hardlink copy so that the directories can work independently
of each other.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/package.bbclass')
-rw-r--r-- | meta/classes/package.bbclass | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index e67bb5bd97..114d6559f5 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -2252,14 +2252,18 @@ python do_package_setscene () { } addtask do_package_setscene -do_packagedata () { - : +# Copy from PKGDESTWORK to tempdirectory as tempdirectory can be cleaned at both +# do_package_setscene and do_packagedata_setscene leading to races +python do_packagedata () { + src = d.expand("${PKGDESTWORK}") + dest = d.expand("${WORKDIR}/pkgdata-pdata-input") + oe.path.copyhardlinktree(src, dest) } addtask packagedata before do_build after do_package SSTATETASKS += "do_packagedata" -do_packagedata[sstate-inputdirs] = "${PKGDESTWORK}" +do_packagedata[sstate-inputdirs] = "${WORKDIR}/pkgdata-pdata-input" do_packagedata[sstate-outputdirs] = "${PKGDATA_DIR}" do_packagedata[stamp-extra-info] = "${MACHINE_ARCH}" |