[OE-core] [DONT-MERGE] sstate: add hack to detect sstate archive compression failures
André Draszik
git at andred.net
Mon Nov 12 12:56:53 UTC 2018
From: André Draszik <andre.draszik at jci.com>
Signed-off-by: André Draszik <andre.draszik at jci.com>
---
meta/classes/sstate.bbclass | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index efb0096c70..b0ba07cacb 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -731,6 +731,8 @@ sstate_create_package () {
# Need to handle empty directories
if [ "$(ls -A)" ]; then
+ ctr=0
+ while [ $ctr -lt 2 ] ; do
set +e
tar $OPT -f $TFILE *
ret=$?
@@ -738,6 +740,33 @@ sstate_create_package () {
exit 1
fi
set -e
+
+ TDIR=`mktemp -d ${SSTATE_PKG}.extracted.XXXXXXXX`
+ tar -C $TDIR -xzf $TFILE
+ export TFILE
+ find $TDIR -type f -exec sh -ceu '
+ for c in "$@" ; do
+ if stat "$c" | grep -v "Size: 0" | grep -q "Blocks: 0" ; then
+ echo File $c in archive $TFILE is broken
+ echo "$TFILE -> $c" >> "$TFILE.broken"
+ fi
+ done
+ ' _ '{}' +
+ rm -rf $TDIR
+ if [ ! -s "$TFILE.broken" ] ; then
+ if [ $ctr -ne 0 ] ; then
+ bbwarn "$TFILE created successfully on attempt # $ctr"
+ fi
+ break
+ fi
+ bbwarn "$TFILE is broken, retrying"
+ bbwarn "`cat $TFILE.broken`"
+ rm $TFILE.broken
+ ctr=$(expr $ctr + 1)
+ done
+ if [ $ctr -ge 2 ] ; then
+ bbfatal "Could not compress sstate"
+ fi
else
tar $OPT --file=$TFILE --files-from=/dev/null
fi
--
2.19.1
More information about the Openembedded-core
mailing list