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