summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-03-22 22:47:24 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-05-31 21:11:46 +0100
commit67334bfb26d47ebc94c59ea5548681ddfc262250 (patch)
tree722af21a1d764bd81dca3189bffba78311e77d15 /meta
parent36e13dd42f76cfa8bf4465600fe816998147d39e (diff)
downloadpoky-67334bfb26d47ebc94c59ea5548681ddfc262250.tar.gz
sstate.bbclass: Remove possibility of file corruption and make package writing atomic
There is currently a race window when creating sstate packages since we don't atomically write the files to SSTATE_DIR. This change ensures we do so by writing to a temporary file and then doing an atomic move. (From OE-Core rev: 52bf113e786a57123a9da98f64442afbc2f1471e) (From OE-Core rev: d527f68bdf167b4a3dcc035968da59677abb70bb) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Joshua Lock <josh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/classes/sstate.bbclass6
1 files changed, 4 insertions, 2 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index e86085e532..d2a45c3b8f 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -453,12 +453,14 @@ python sstate_task_postfunc () {
453# 453#
454sstate_create_package () { 454sstate_create_package () {
455 cd ${SSTATE_BUILDDIR} 455 cd ${SSTATE_BUILDDIR}
456 TFILE=`mktemp ${SSTATE_PKG}.XXXXXXXX`
456 # Need to handle empty directories 457 # Need to handle empty directories
457 if [ "$(ls -A)" ]; then 458 if [ "$(ls -A)" ]; then
458 tar -czf ${SSTATE_PKG} * 459 tar -czf $TFILE *
459 else 460 else
460 tar -cz --file=${SSTATE_PKG} --files-from=/dev/null 461 tar -cz --file=$TFILE --files-from=/dev/null
461 fi 462 fi
463 mv $TFILE ${SSTATE_PKG}
462 464
463 cd ${WORKDIR} 465 cd ${WORKDIR}
464 rm -rf ${SSTATE_BUILDDIR} 466 rm -rf ${SSTATE_BUILDDIR}