summaryrefslogtreecommitdiffstats
path: root/meta/classes/archiver.bbclass
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-02-05 22:14:26 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-02-06 08:29:07 +0000
commit251ded90d4ad75da5e110e916068050f15ace07c (patch)
tree426957d956abfd8377f21b61f483156753107668 /meta/classes/archiver.bbclass
parentd1a67109ea52444d60ef6d7282929c9cd6012624 (diff)
downloadpoky-251ded90d4ad75da5e110e916068050f15ace07c.tar.gz
archiver/package_rpm: Fix the worst src.rpm generation race
The package_rpm code is writing outside the task's sstate directory into the sstate of do_deploy_archives. This is "out of spec" since if the task is installed from sstate, the files are not restored. This means the files may appear/disappear, things are not deterministic and there are races. Extend the do_package_write_rpm code to handle writing the src.rpm into place to avoid these issues. There are other problems but this avoids races around this file. (From OE-Core rev: c6e151ba7fe0f14044537cf0ab2cac436f1496e3) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/archiver.bbclass')
-rw-r--r--meta/classes/archiver.bbclass6
1 files changed, 6 insertions, 0 deletions
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index e321a0e362..af9f010dfc 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -37,8 +37,11 @@ ARCHIVER_MODE[recipe] ?= "0"
37DEPLOY_DIR_SRC ?= "${DEPLOY_DIR}/sources" 37DEPLOY_DIR_SRC ?= "${DEPLOY_DIR}/sources"
38ARCHIVER_TOPDIR ?= "${WORKDIR}/deploy-sources" 38ARCHIVER_TOPDIR ?= "${WORKDIR}/deploy-sources"
39ARCHIVER_OUTDIR = "${ARCHIVER_TOPDIR}/${TARGET_SYS}/${PF}/" 39ARCHIVER_OUTDIR = "${ARCHIVER_TOPDIR}/${TARGET_SYS}/${PF}/"
40ARCHIVER_RPMTOPDIR ?= "${WORKDIR}/deploy-sources-rpm"
41ARCHIVER_RPMOUTDIR = "${ARCHIVER_RPMTOPDIR}/${TARGET_SYS}/${PF}/"
40ARCHIVER_WORKDIR = "${WORKDIR}/archiver-work/" 42ARCHIVER_WORKDIR = "${WORKDIR}/archiver-work/"
41 43
44
42do_dumpdata[dirs] = "${ARCHIVER_OUTDIR}" 45do_dumpdata[dirs] = "${ARCHIVER_OUTDIR}"
43do_ar_recipe[dirs] = "${ARCHIVER_OUTDIR}" 46do_ar_recipe[dirs] = "${ARCHIVER_OUTDIR}"
44do_ar_original[dirs] = "${ARCHIVER_OUTDIR} ${ARCHIVER_WORKDIR}" 47do_ar_original[dirs] = "${ARCHIVER_OUTDIR} ${ARCHIVER_WORKDIR}"
@@ -117,6 +120,9 @@ python () {
117 if d.getVarFlag('ARCHIVER_MODE', 'srpm') == "1" and d.getVar('PACKAGES'): 120 if d.getVarFlag('ARCHIVER_MODE', 'srpm') == "1" and d.getVar('PACKAGES'):
118 if "package_rpm" in d.getVar('PACKAGE_CLASSES'): 121 if "package_rpm" in d.getVar('PACKAGE_CLASSES'):
119 d.appendVarFlag('do_deploy_archives', 'depends', ' %s:do_package_write_rpm' % pn) 122 d.appendVarFlag('do_deploy_archives', 'depends', ' %s:do_package_write_rpm' % pn)
123 d.appendVarFlag('do_package_write_rpm', 'dirs', ' ${ARCHIVER_RPMTOPDIR}')
124 d.appendVarFlag('do_package_write_rpm', 'sstate-inputdirs', ' ${ARCHIVER_RPMTOPDIR}')
125 d.appendVarFlag('do_package_write_rpm', 'sstate-outputdirs', ' ${DEPLOY_DIR_SRC}')
120 if ar_dumpdata == "1": 126 if ar_dumpdata == "1":
121 d.appendVarFlag('do_package_write_rpm', 'depends', ' %s:do_dumpdata' % pn) 127 d.appendVarFlag('do_package_write_rpm', 'depends', ' %s:do_dumpdata' % pn)
122 if ar_recipe == "1": 128 if ar_recipe == "1":