From: André Draszik <[email protected]>

Signed-off-by: André Draszik <[email protected]>
---
 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

-- 
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to