[oe-commits] Richard Purdie : sstate.bbclass: Remove possibility of file corruption and make package writing atomic

git at git.openembedded.org git at git.openembedded.org
Wed May 30 16:59:32 UTC 2012


Module: openembedded-core.git
Branch: 2011-1
Commit: d527f68bdf167b4a3dcc035968da59677abb70bb
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=d527f68bdf167b4a3dcc035968da59677abb70bb

Author: Richard Purdie <richard.purdie at linuxfoundation.org>
Date:   Thu Mar 22 22:47:24 2012 +0000

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)

Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
Signed-off-by: Joshua Lock <josh at linux.intel.com>

---

 meta/classes/sstate.bbclass |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index e86085e..d2a45c3 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}





More information about the Openembedded-commits mailing list