[oe-commits] Roy Li : sstate.bbclass: ignore the tar failure.

git at git.openembedded.org git at git.openembedded.org
Tue Sep 24 10:50:26 UTC 2013


Module: openembedded-core.git
Branch: master-next
Commit: fad604b719e00b03e09da5fdb485e72332275b4a
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=fad604b719e00b03e09da5fdb485e72332275b4a

Author: Roy Li <rongqing.li at windriver.com>
Date:   Sun Sep 22 08:25:55 2013 +0000

sstate.bbclass: ignore the tar failure.

sstate_package creates hardlink from sysroot to SSTATE_BUILDDIR, and
sstate_create_package stores SSTATE_BUILDDIR into a archive file by
tar, these two task can be run simultaneously for different packages,
and make a hardlink for a file will lead to the change of the links
number of file, and if tar is reading this file, it will fail with exit
code 1, and report "file changed as we read it":

    DEBUG: Executing shell function sstate_create_package
    tar: x86_64-linux/usr/share/aclocal/xorg-macros.m4: file changed as we read it

4b3e353a5[sstate.bbclass: fix parallel building issue] tries to use the
tar parameter --ignore-failed-read to fix, but it does not work, and
tar parameter --warning=no-file-changed can close the warning, but can
not change the exit code. so close shell immediate exit, only fail
if tar returns not 1 and 0.

Exit codes of tar:
    http://www.gnu.org/software/tar/manual/html_section/Synopsis.html

Signed-off-by: Roy Li <rongqing.li at windriver.com>
Signed-off-by: Saul Wold <sgw at linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

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

diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 37ade3f..517c100 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -566,7 +566,12 @@ sstate_create_package () {
 	TFILE=`mktemp ${SSTATE_PKG}.XXXXXXXX`
 	# Need to handle empty directories
 	if [ "$(ls -A)" ]; then
-		tar --ignore-failed-read -czf $TFILE *
+		set +e
+		tar -czf $TFILE *
+		if [ $? -ne 0 ] && [ $? -ne 1 ]; then
+			exit 1
+		fi
+		set -e
 	else
 		tar -cz --file=$TFILE --files-from=/dev/null
 	fi



More information about the Openembedded-commits mailing list