aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Rini <tom_rini@mentor.com>2010-07-08 16:30:01 -0700
committerTom Rini <tom_rini@mentor.com>2010-07-08 16:30:01 -0700
commit8ea345630969e8bf6a44d0884213ec03cd053332 (patch)
tree799a1ca9c6f6c636bf6fdebf463d3ee559bc1a03
parenta753e680011a9843e0cd0ee928fd508667445d00 (diff)
downloadopenembedded-8ea345630969e8bf6a44d0884213ec03cd053332.tar.gz
stagemanager-native: Expand our gunzip/tar
As we've gone over before, gunzip/tar can have a broken pipe, and this is allowed. In python code, we have things setup to ignore the problem. stage-manager-ipkg is written in shell however and we can hit the problem there too. There's two ways around this, one of which is to stop checking for problems with the extraction (and hide stderr) or we extract the archive, gunzip and then tar. I've done the second here. Acked-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Tom Rini <tom_rini@mentor.com>
-rwxr-xr-xrecipes/stage-manager/files/stage-manager-ipkg14
-rw-r--r--recipes/stage-manager/stagemanager-native_0.0.1.bb2
2 files changed, 10 insertions, 6 deletions
diff --git a/recipes/stage-manager/files/stage-manager-ipkg b/recipes/stage-manager/files/stage-manager-ipkg
index 2559fdbcd8..e5ad6f62b2 100755
--- a/recipes/stage-manager/files/stage-manager-ipkg
+++ b/recipes/stage-manager/files/stage-manager-ipkg
@@ -732,11 +732,11 @@ ipkg_install_file_dest() {
local pkg=`ipkg_file_part $filename | sed 's/\([a-z0-9.+-]\+\)_.*/\1/'`
local ext=`echo $filename | sed 's/.*\.//'`
- local pkg_extract_stdout
+ local pkg_extract
#if [ "$ext" = "ipk" ]; then
# pkg_extract_stdout="tar -xzOf"
#elif [ "$ext" = "deb" ]; then
- pkg_extract_stdout="ar p"
+ pkg_extract="ar x"
#else
# echo "ipkg_install_file: ERROR: File $filename has unknown extension $ext (not .ipk or .deb)"
# return 1
@@ -768,7 +768,7 @@ ipkg_install_file_dest() {
mkdir -p $IPKG_TMP/$pkg/data
mkdir -p $info_dir
- if ! $pkg_extract_stdout $filename control.tar.gz | (cd $IPKG_TMP/$pkg/control; tar -xzf - ) ; then
+ if ! (cd $IPKG_TMP/$pkg/control ; $pkg_extract $filename control.tar.gz ; gunzip control.tar.gz ; tar xf control.tar ) ; then
echo "ipkg_install_file: ERROR unpacking control.tar.gz from $filename"
return 1
fi
@@ -798,10 +798,11 @@ Status: install ok pending" | ipkg_status_update_sd $sd $pkg
set -o noglob
rm -r $IPKG_TMP/$pkg/control
- if ! $pkg_extract_stdout $filename ./data.tar.gz | (cd $IPKG_TMP/$pkg/data; tar -xzf - ) ; then
+ if ! (cd $IPKG_TMP/$pkg/data ; $pkg_extract $filename ./data.tar.gz ; gunzip data.tar.gz ; tar xf data.tar ) ; then
echo "ipkg_install_file: ERROR unpacking data.tar.gz from $filename"
return 1
fi
+ rm $IPKG_TMP/$pkg/data/data.tar
echo "Done."
echo -n "Configuring $pkg..."
@@ -869,7 +870,10 @@ diff -u $dest/$conffile $IPKG_TMP/$pkg/data/$conffile"
(cd $IPKG_TMP/$pkg/data/; tar cf - . | (cd $owd; cd $dest; tar xf -))
rm -rf $IPKG_TMP/$pkg/data
rmdir $IPKG_TMP/$pkg
- $pkg_extract_stdout $filename ./data.tar.gz | tar tzf - | sed -e 's/^\.//' > $info_dir/$pkg.list
+ $pkg_extract $filename ./data.tar.gz
+ gunzip data.tar
+ tar tf data.tar | sed -e 's/^\.//' > $info_dir/$pkg.list
+ rm data.tar
if [ -x "$info_dir/$pkg.postinst" ]; then
$info_dir/$pkg.postinst configure
diff --git a/recipes/stage-manager/stagemanager-native_0.0.1.bb b/recipes/stage-manager/stagemanager-native_0.0.1.bb
index 733cc837ce..9eeac4b073 100644
--- a/recipes/stage-manager/stagemanager-native_0.0.1.bb
+++ b/recipes/stage-manager/stagemanager-native_0.0.1.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Helper script for packaged-staging.bbclass"
-PR = "r12"
+PR = "r13"
SRC_URI = "file://stage-manager \
file://stage-manager-ipkg \