]> code.ossystems Code Review - openembedded-core.git/commitdiff
sstate.bbclass: Remove possibility of file corruption and make package writing atomic
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 22 Mar 2012 22:47:24 +0000 (22:47 +0000)
committerJoshua Lock <josh@linux.intel.com>
Tue, 22 May 2012 05:14:24 +0000 (22:14 -0700)
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)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Joshua Lock <josh@linux.intel.com>
meta/classes/sstate.bbclass

index e86085e5326e4267c59203b38d5000da3491ab64..d2a45c3b8fc13c9fcb8459c106263dc77a644d16 100644 (file)
@@ -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}