[oe] [RFC] Don't pipe ar/tar/gzip in stage-manager-ipkg
Khem Raj
raj.khem at gmail.com
Tue Jun 22 14:44:49 UTC 2010
On (21/06/10 14:32), Tom Rini wrote:
> 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 latter for this RFC. Does anyone have a strong preference for
> the other way?
>
sounds good to me.
> Signed-off-by: Tom Rini <tom_rini at mentor.com>
>
> diff --git a/recipes/stage-manager/files/stage-manager-ipkg
> b/recipes/stage-manager/files/stage-manager-ipkg
> index 2559fdb..e5ad6f6 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 733cc83..9eeac4b 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 \
>
> --
> Tom Rini
> Mentor Graphics Corporation
>
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
More information about the Openembedded-devel
mailing list