Commit 3f5a538a authored by Vitaly Lipatov's avatar Vitaly Lipatov

replace tarball conversion code with erc calls

parent 8f800a24
......@@ -152,7 +152,7 @@ extract_tarball_to_dest()
local TARNAME=$(querypackage $1 "" "%{NAME}-%{VERSION}")
# FIXME: hack to replace alt release to eter
local TARGETTARNAME=$(querypackage $1 "" "%{NAME}-%{VERSION}-%{RELEASE}" | sed -e "s/-alt/-eter/g")
copy_tarball_to_tar_bz2 $TARNAME*.tar* $2/$TARGETTARNAME.tar.bz2
erc conv $TARNAME*.tar* $2/$TARGETTARNAME.tar.bz2
make_md5sum $2 $TARGETTARNAME.tar.bz2
# copy other tarballs
for i in $(ls -1 *.tar* | grep -v "^$TARNAME.*\.tar.*") ; do
......
......@@ -362,15 +362,15 @@ do
# UpUrl for gear
download_url "$GETSOURCEURL"
# FIXME: gear-update can use any tarball
copy_tarball_to_tar $(basename "$GETSOURCEURL") $FTB
erc conv $(basename "$GETSOURCEURL") $FTB
elif [ -z "${GETSOURCE/*.tar/}" ] ; then
# tar target: try to load and convert
download_any_tarball
test -f $WEXT.tar.bz2 && FTB=$WEXT.tar.bz2
elif [ -z "${GETSOURCE/*.tar.bz2/}" ] ; then
# tar.bz2 target: for src.rpm policy compatibility
download_any_tarball
test -f $WEXT.tar.bz2 || bzipit $WEXT.tar || fatal "Cannot bzip $WEXT.tar"
download_any_tarball
test -f $WEXT.tar.bz2 || erc $WEXT.tar tar.bz2: || fatal "Cannot bzip $WEXT.tar"
else
download_url "$GETSOURCE"
fi
......@@ -383,7 +383,7 @@ do
if [ -n "${GETSOURCEURL}" ] ; then
# UpUrl for rpm
download_url "$GETSOURCEURL"
copy_tarball_to_tar_bz2 $(basename "$GETSOURCEURL") $FTB
erc conv $(basename "$GETSOURCEURL") $FTB
elif [ -n "${GETSOURCE/*.tar.bz2/}" ] ; then
# if not tar.bz2 target, direct download
download_url "$GETSOURCE"
......@@ -391,7 +391,7 @@ do
# if tar.bz2 target
download_any_tarball
#echog -n "Compressing to $WEXT.tar.bz2..."
test -f $WEXT.tar.bz2 || bzipit $WEXT.tar || fatal "Cannot bzip $WEXT.tar"
test -f $WEXT.tar.bz2 || erc $WEXT.tar tar.bz2: || fatal "Cannot bzip $WEXT.tar"
elif [ -z "${GETSOURCE/*.bz2/}" ] ; then
warning "It is not tarball (possible single file)..."
get_bz2 || get_gz || get_raw || fatal "Cannot retrieve $GETSOURCE"
......
......@@ -23,6 +23,7 @@ BuildArchitectures: noarch
BuildRequires: rpm-build-compat >= %altcompat_ver
Requires: eepm >= 1.3.0
Requires: erc >= 0.3
Requires: rpm-build
Requires: rpm-build-compat >= %altcompat_ver
......
......@@ -3,134 +3,7 @@
# Author: Vitaly Lipatov <lav@etersoft.ru>
# Public domain
# FILE
# bzip FILE with pzip2 (if exists) or bzip2
bzipit()
{
local PBZIPIT
PBZIPIT=`which pbzip2 2>/dev/null`
if [ -n "$PBZIPIT" ] ; then
echog -n " with pzip2..."
$PBZIPIT -9 -f $1
return $?
else
echog -n " with bzip2..."
bzip -f --best $1
return $?
fi
}
# TODO: use external converter?
# $1 - zip name $2 - tar name
conv_zip_to_tar()
{
local RZ=$(realpath "$1")
local RT=$(realpath "$2")
# FIXME: use normal mktempdir
mkdir $1.tmpdir || fatal
cd $1.tmpdir || fatal
# unzip or remove broken file
a= unzip -q "$RZ" && tar cf "$RT" ./* || { rm -fv "$RT" ; return 1; }
cd ..
rm -rf $1.tmpdir
}
# TODO: use external converter?
# $1 - rar name $2 - tar name
conv_rar_to_tar()
{
local RZ=$(realpath "$1")
local RT=$(realpath "$2")
# FIXME: use normal mktempdir
mkdir $1.tmpdir || fatal
cd $1.tmpdir || fatal
# unzip or remove broken file
a= unrar x "$RZ" && tar cf "$RT" ./* || { rm -fv "$RT" ; return 1; }
cd ..
rm -rf $1.tmpdir
}
get_archive_type()
{
file "$1" | grep -q "Zip archive data" && echo "zip" && return
file "$1" | grep -q "RAR archive data" && echo "rar" && return
return 1
}
# TODO: use bzipit
copy_tarball_to_tar_bz2()
{
local SNAME=$1
local TNAME=$2
#echo SNAME: $SNAME
test -r "$SNAME" || return 1
# copying from tar.bz2
if [ ! ${SNAME/.tar.bz2/} = "$SNAME" ] ; then
#echo O tar.bz2
cp -fv "$SNAME" "$TNAME"
return
fi
if [ ! ${SNAME/.tar.gz/} = "$SNAME" ] ; then
gunzip -c "$SNAME" | bzip -c > "$TNAME"
return
fi
# FIXME: matchs with .tarNNN
if [ ! ${SNAME/.tar/} = "$SNAME" ] ; then
bzip -c "$SNAME" > "$TNAME"
return
fi
fatal "Can't repack $SNAME to tar.bz2"
}
copy_tarball_to_tar()
{
local SNAME=$1
local TNAME=$2
test -r "$SNAME" || return 1
# copying from tar.bz2
if [ ! ${SNAME/.tar.bz2/} = "$SNAME" ] ; then
bunzip -c "$SNAME" > "$TNAME"
return
fi
if [ ! ${SNAME/.tar.gz/} = "$SNAME" ] ; then
gunzip -c "$SNAME" > "$TNAME"
return
fi
if [ ! ${SNAME/.tar.xz/} = "$SNAME" ] ; then
a= xz -d "$SNAME" > "$TNAME"
return
fi
if [ ! ${SNAME/.tgz/} = "$SNAME" ] ; then
gunzip -c "$SNAME" > "$TNAME"
return
fi
# FIXME: matchs with .tarNNN
if [ ! ${SNAME/.tar/} = "$SNAME" ] ; then
cp -fv "$SNAME" "$TNAME"
return
fi
# TODO: use conv_$type_to_tar (type may be undetected)
if [ "$(get_archive_type $SNAME)" = "zip" ] ; then
conv_zip_to_tar $SNAME $TNAME && return
fi
# TODO: use conv_$type_to_tar (type may be undetected)
if [ "$(get_archive_type $SNAME)" = "rar" ] ; then
conv_rar_to_tar $SNAME $TNAME && return
fi
fatal "Can't repack $SNAME to tar"
}
# Use erc universal archivator instead
# DIR FILE
make_md5sum()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment