diff options
| author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-03-22 22:47:24 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-05-31 21:11:46 +0100 |
| commit | 67334bfb26d47ebc94c59ea5548681ddfc262250 (patch) | |
| tree | 722af21a1d764bd81dca3189bffba78311e77d15 /meta | |
| parent | 36e13dd42f76cfa8bf4465600fe816998147d39e (diff) | |
| download | poky-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.bbclass | 6 |
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 | # |
| 454 | sstate_create_package () { | 454 | sstate_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} |
