From 67334bfb26d47ebc94c59ea5548681ddfc262250 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Thu, 22 Mar 2012 22:47:24 +0000 Subject: 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 Signed-off-by: Joshua Lock Signed-off-by: Richard Purdie --- meta/classes/sstate.bbclass | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'meta') 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 () { # sstate_create_package () { cd ${SSTATE_BUILDDIR} + TFILE=`mktemp ${SSTATE_PKG}.XXXXXXXX` # Need to handle empty directories if [ "$(ls -A)" ]; then - tar -czf ${SSTATE_PKG} * + tar -czf $TFILE * else - tar -cz --file=${SSTATE_PKG} --files-from=/dev/null + tar -cz --file=$TFILE --files-from=/dev/null fi + mv $TFILE ${SSTATE_PKG} cd ${WORKDIR} rm -rf ${SSTATE_BUILDDIR} -- cgit v1.2.3-54-g00ecf