File 0001-force-use-of-bsdtar-for-VMs.diff of Package build

From da60f9f18958fecdb51091dbca4be01b612699f0 Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de>
Date: Tue, 7 Dec 2010 18:06:45 +0100
Subject: [PATCH] force use of bsdtar for VMs

---
 init_buildsystem |   35 ++++++++++++++++++++++++-----------
 1 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/init_buildsystem b/init_buildsystem
index c1c7e33..426fa2b 100755
--- a/init_buildsystem
+++ b/init_buildsystem
@@ -129,7 +129,20 @@ preinstall()
     check_exit
     echo "preinstalling $1..."
     cd $BUILD_ROOT || cleanup_and_exit 1
-    CPIO="cpio --extract --unconditional --preserve-modification-time --make-directories --no-absolute-filenames --quiet"
+    if test -x /usr/bin/bsdtar ; then
+	CPIO="/usr/bin/bsdtar --chroot -o --numeric-owner -x -f-"
+	TAR="/usr/bin/bsdtar --chroot -o --numeric-owner -x"
+    else
+	# cpio isn't safe so we require bsdtar for VMs. chroot is
+	# unsafe anyways so it's ok for that.
+	if [ -n "$PREPARE_VM" ]; then
+	    echo "Error: setting up a VM requires bsdtar for security reasons."
+	    echo "Please install bsdtar"
+	    cleanup_and_exit 1
+	fi
+	CPIO="cpio --extract --unconditional --preserve-modification-time --make-directories --no-absolute-filenames --quiet"
+	TAR="tar -x"
+    fi
     if test -e "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" ; then
 	PAYLOADDECOMPRESS=cat
 	case `rpm -qp --nodigest --nosignature --qf "%{PAYLOADCOMPRESSOR}\n" "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm"` in
@@ -151,22 +164,22 @@ preinstall()
 	else
 	    rpm2cpio "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" | $PAYLOADDECOMPRESS | $CPIO
 	fi
-	if test -e .init_b_cache/scripts/$1.run ; then
-	    rpm -qp --nodigest --nosignature --qf "%{PREIN}" "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" > .init_b_cache/scripts/$1.pre
-	    rpm -qp --nodigest --nosignature --qf "%{POSTIN}" "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" > .init_b_cache/scripts/$1.post
+	if test -e ".init_b_cache/scripts/$1.run" ; then
+	    rpm -qp --nodigest --nosignature --qf "%{PREIN}" "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" > ".init_b_cache/scripts/$1.pre"
+	    rpm -qp --nodigest --nosignature --qf "%{POSTIN}" "$BUILD_ROOT/.init_b_cache/rpms/$1.rpm" > ".init_b_cache/scripts/$1.post"
 	    echo -n '(none)' > .init_b_cache/scripts/.none
-	    cmp -s .init_b_cache/scripts/$1.pre .init_b_cache/scripts/.none && rm -f .init_b_cache/scripts/$1.pre
-	    cmp -s .init_b_cache/scripts/$1.post .init_b_cache/scripts/.none && rm -f .init_b_cache/scripts/$1.post
+	    cmp -s ".init_b_cache/scripts/$1.pre" .init_b_cache/scripts/.none && rm -f ".init_b_cache/scripts/$1.pre"
+	    cmp -s ".init_b_cache/scripts/$1.post" .init_b_cache/scripts/.none && rm -f ".init_b_cache/scripts/$1.post"
 	    rm -f .init_b_cache/scripts/.none
 	fi
     elif test -e "$BUILD_ROOT/.init_b_cache/rpms/$1.deb" ; then
 	ar x "$BUILD_ROOT/.init_b_cache/rpms/$1.deb" control.tar.gz data.tar.gz
 	mkdir -p .init_b_cache/scripts/control
-	tar -C .init_b_cache/scripts/control -xzf control.tar.gz
-	tar xzf data.tar.gz
-	if test -e .init_b_cache/scripts/$1.run ; then
-	    test -e .init_b_cache/scripts/control/preinst && mv .init_b_cache/scripts/control/preinst .init_b_cache/scripts/$1.pre
-	    test -e .init_b_cache/scripts/control/postinst && mv .init_b_cache/scripts/control/postinst .init_b_cache/scripts/$1.post
+	$TAR -C .init_b_cache/scripts/control -z -f control.tar.gz
+	$TAR -z -f data.tar.gz
+	if test -e ".init_b_cache/scripts/$1.run" ; then
+	    test -e .init_b_cache/scripts/control/preinst && mv .init_b_cache/scripts/control/preinst ".init_b_cache/scripts/$1.pre"
+	    test -e .init_b_cache/scripts/control/postinst && mv .init_b_cache/scripts/control/postinst ".init_b_cache/scripts/$1.post"
 	fi
 	rm -rf .init_b_cache/scripts/control control.tar.gz data.tar.gz
     else
-- 
1.7.1

openSUSE Build Service is sponsored by