tazpkg diff tazpkg-convert @ rev 695

Separate convert functions to tazpkg-convert; functions that are common to the tazpkg and tazpkg-convert moved to libs.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Tue Dec 02 02:22:09 2014 +0200 (2014-12-02)
parents
children bd0e2ed0e601
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/tazpkg-convert	Tue Dec 02 02:22:09 2014 +0200
     1.3 @@ -0,0 +1,589 @@
     1.4 +#!/bin/sh
     1.5 +
     1.6 +# This program is a part of TazPkg.
     1.7 +# /usr/bin/tazpkg-convert: toolset to convert alien package to the tazpkg format
     1.8 +
     1.9 +# Usage: tazpkg-convert alien_package [ target_directory ]
    1.10 +
    1.11 +
    1.12 +PACKAGE_FILE="$1"
    1.13 +TARGET_DIR="$2"
    1.14 +TMP_DIR=$(mktemp -d)
    1.15 +TOP_DIR="$(pwd)"
    1.16 +
    1.17 +. /etc/slitaz/slitaz.conf
    1.18 +. /lib/libtaz.sh
    1.19 +. /usr/lib/tazpkg/tazpkg-find-depends
    1.20 +
    1.21 +# Internationalization.
    1.22 +export TEXTDOMAIN='tazpkg'
    1.23 +
    1.24 +
    1.25 +# FIXME: what does this mean?
    1.26 +[ -n "$TARGET_DIR" -a -s "$TARGET_DIR/files.list.lzma" ] && TMPLOCALSTATE="$TARGET_DIR"
    1.27 +
    1.28 +
    1.29 +show_unresolved_lib()
    1.30 +{
    1.31 +	if [ -s $TMP_DIR/unresolved ]; then
    1.32 +		echo -e "BUGS=\"`gettext \"No dependency for\"`" >> $1
    1.33 +		sort < $TMP_DIR/unresolved | uniq | \
    1.34 +		while read file; do
    1.35 +			_ 'WARNING: unknown dependency for $lib'
    1.36 +			echo -n " $file" >> $1
    1.37 +		done
    1.38 +		echo "\"" >> $1
    1.39 +	fi
    1.40 +}
    1.41 +
    1.42 +
    1.43 +# convert a .tar.bz2 package to .tazpkg
    1.44 +
    1.45 +convert_upkg()
    1.46 +{
    1.47 +	mkdir -p $TMP_DIR/fs
    1.48 +	tar xjf $PACKAGE_FILE -C $TMP_DIR/fs
    1.49 +	if [ -d $TMP_DIR/fs/var/lib/upkg/packages ]; then
    1.50 +		cd $TMP_DIR
    1.51 +		package="$(sed '/^Package:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)"
    1.52 +		version="$(sed '/^Version:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)"
    1.53 +		url="http://www.paldo.org/"
    1.54 +		file=$package-$version
    1.55 +		mkdir $file
    1.56 +		mv fs $file
    1.57 +		maintainer=nobody@slitaz.org
    1.58 +		descrip="$package package from paldo."
    1.59 +		cat > $file/receipt <<EOT
    1.60 +# SliTaz package receipt.
    1.61 +# generated by tazpkg from package $(basename $PACKAGE_FILE)
    1.62 +PACKAGE="$package"
    1.63 +VERSION="$version"
    1.64 +CATEGORY="misc"
    1.65 +SHORT_DESC="$descrip"
    1.66 +WEB_SITE="$url"
    1.67 +MAINTAINER="$maintainer"
    1.68 +DEPENDS="$(find_depends)"
    1.69 +EOT
    1.70 +		[ -s $file/var/lib/upkg/files/*.config.bz2 ] &&
    1.71 +			cat >> $file/receipt <<EOT
    1.72 +CONFIG_FILES="$(bzcat $file/var/lib/upkg/files/*.config.bz2)"
    1.73 +EOT
    1.74 +		while read ext func ; do
    1.75 +			[ -s $file/fs/var/lib/upkg/scripts/*.$ext ] || continue
    1.76 +			cat >> $file/receipt <<EOT
    1.77 +
    1.78 +$func()
    1.79 +{
    1.80 +$(cat $file/fs/var/lib/upkg/scripts/*.$ext)
    1.81 +}
    1.82 +EOT
    1.83 +		done <<EOT
    1.84 +prerm	pre_remove
    1.85 +EOT
    1.86 +
    1.87 +		tazpkg pack $file
    1.88 +		mv $TMP_DIR/$file.tazpkg $TOP_DIR
    1.89 +	else
    1.90 +		_ '$PACKAGE_FILE does not look like an upkg package!'
    1.91 +	fi
    1.92 +	cd $TOP_DIR
    1.93 +	rm -rf $TMP_DIR
    1.94 +}
    1.95 +
    1.96 +
    1.97 +# convert a .spack package to .tazpkg
    1.98 +
    1.99 +convert_spack()
   1.100 +{
   1.101 +	mkdir -p $TMP_DIR
   1.102 +	( cd $TMP_DIR ; cpio -i ) < $PACKAGE_FILE
   1.103 +	cd $TMP_DIR
   1.104 +	package="$(sed '$!d;s/:.*//' about.txt)"
   1.105 +	version="$(basename $PACKAGE_FILE | sed "s/$package-\([^-]*\).*/\1/")"
   1.106 +	descrip="$(sed '$!d;s/.*: //' about.txt)"
   1.107 +	url="http://0linux.org/"
   1.108 +	maintainer=nobody@slitaz.org
   1.109 +	file=$package-$version
   1.110 +	mkdir -p $file/fs
   1.111 +	xzcat files.xz | ( cd $file/fs ; cpio -idmu )
   1.112 +	cat > $file/receipt <<EOT
   1.113 +# SliTaz package receipt.
   1.114 +# generated by tazpkg from package $(basename $PACKAGE_FILE)
   1.115 +PACKAGE="$package"
   1.116 +VERSION="$version"
   1.117 +CATEGORY="misc"
   1.118 +SHORT_DESC="$descrip"
   1.119 +WEB_SITE="$url"
   1.120 +MAINTAINER="$maintainer"
   1.121 +DEPENDS="$(find_depends)"
   1.122 +EOT
   1.123 +	[ -s pre-install.sh ] && cat >> $file/receipt <<EOT
   1.124 +
   1.125 +pre_install()
   1.126 +{
   1.127 +	cd /
   1.128 +$(sed 1d pre-install.sh)
   1.129 +}
   1.130 +EOT
   1.131 +	[ -s post-install.sh ] && cat >> $file/receipt <<EOT
   1.132 +
   1.133 +post_install()
   1.134 +{
   1.135 +	cd /
   1.136 +$(sed '1,/^}/d' post-install.sh)
   1.137 +}
   1.138 +EOT
   1.139 +	tazpkg pack $file
   1.140 +	cd $TOP_DIR
   1.141 +	mv $TMP_DIR/$file.tazpkg .
   1.142 +	rm -rf $TMP_DIR
   1.143 +}
   1.144 +
   1.145 +
   1.146 +# convert a .ipk package to .tazpkg
   1.147 +
   1.148 +convert_ipk()
   1.149 +{
   1.150 +	mkdir -p $TMP_DIR
   1.151 +	tar xOzf $PACKAGE_FILE ./control.tar.gz | tar xzf - -C $TMP_DIR
   1.152 +	package="$(grep ^Package $TMP_DIR/control | sed 's/.*: //')"
   1.153 +	version="$(grep ^Version $TMP_DIR/control | sed 's/.*: //')"
   1.154 +	maintainer="$(grep ^Maintainer $TMP_DIR/control | sed 's/.*: //')"
   1.155 +	target="$(grep ^Architecture $TMP_DIR/control | sed 's/.*: //')"
   1.156 +	descrip="$(grep ^Description $TMP_DIR/control | sed 's/.*: //')"
   1.157 +	url="http://openwrt.org/"
   1.158 +	case "$target" in
   1.159 +	i386|all)
   1.160 +		file=$package-$version
   1.161 +		mkdir -p $TMP_DIR/$file/fs
   1.162 +		tar xOzf $PACKAGE_FILE ./data.tar.gz | tar xzf - -C $TMP_DIR/$file/fs
   1.163 +		cd $TMP_DIR
   1.164 +		cat > $file/receipt <<EOT
   1.165 +# SliTaz package receipt.
   1.166 +# generated by tazpkg from package $(basename $PACKAGE_FILE)
   1.167 +PACKAGE="$package"
   1.168 +VERSION="$version"
   1.169 +CATEGORY="misc"
   1.170 +SHORT_DESC="$descrip"
   1.171 +WEB_SITE="$url"
   1.172 +MAINTAINER="$maintainer"
   1.173 +DEPENDS="$(find_depends)"
   1.174 +EOT
   1.175 +		show_unresolved_lib $file/receipt
   1.176 +		[ -s conffiles ] && cat >> $file/receipt <<EOT
   1.177 +CONFIG_FILES="$(cat conffiles)"
   1.178 +EOT
   1.179 +		show_unresolved_lib $file/receipt
   1.180 +		while read script func; do
   1.181 +			[ -s $script ] && cat >> $file/receipt <<EOT
   1.182 +
   1.183 +$func()
   1.184 +{
   1.185 +$(cat $script)
   1.186 +}
   1.187 +EOT
   1.188 +		done <<EOT
   1.189 +preinst		pre_install
   1.190 +postinst	post_install
   1.191 +prerm		pre_remove
   1.192 +postrm		post_remove
   1.193 +EOT
   1.194 +		awk '
   1.195 +{
   1.196 +   if (/^ / && show) print substr($0,2);
   1.197 +   else show=0;
   1.198 +   if (/^Description/) show=1;
   1.199 +}' < $TMP_DIR/control > $file/description.txt
   1.200 +		sed -i 's/^\.$//' $file/description.txt
   1.201 +		[ -s $file/description.txt ] || rm -f $file/description.txt
   1.202 +		tazpkg pack $file
   1.203 +		cd $TOP_DIR
   1.204 +		mv $TMP_DIR/$file.tazpkg .
   1.205 +		;;
   1.206 +	*)
   1.207 +		_ 'Invalid target: $target (expected i386)'
   1.208 +		;;
   1.209 +	esac
   1.210 +	rm -rf $TMP_DIR
   1.211 +}
   1.212 +
   1.213 +
   1.214 +# convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg
   1.215 +
   1.216 +convert_arch()
   1.217 +{
   1.218 +	mkdir -p $TMP_DIR/fs
   1.219 +	busybox tar xf $PACKAGE_FILE -C $TMP_DIR/fs
   1.220 +	if [ -f $TMP_DIR/fs/.PKGINFO ]; then
   1.221 +		cd $TMP_DIR
   1.222 +		package="$(grep ^pkgname fs/.PKGINFO | sed 's/.*= //')"
   1.223 +		version="$(grep ^pkgver  fs/.PKGINFO | sed 's/.*= //')"
   1.224 +		descrip="$(grep ^pkgdesc fs/.PKGINFO | sed 's/.*= //')"
   1.225 +		url="$(grep ^url fs/.PKGINFO | sed 's/.*= //')"
   1.226 +		maintainer="$(grep ^packager fs/.PKGINFO | sed 's/.*= //')"
   1.227 +		file=$package-$version
   1.228 +		mkdir $file
   1.229 +		mv fs $file
   1.230 +		cat > $file/receipt <<EOT
   1.231 +# SliTaz package receipt.
   1.232 +# generated by tazpkg from Archlinux package $(basename $PACKAGE_FILE)
   1.233 +PACKAGE="$package"
   1.234 +VERSION="$version"
   1.235 +CATEGORY="misc"
   1.236 +SHORT_DESC="$descrip"
   1.237 +WEB_SITE="$url"
   1.238 +MAINTAINER="$maintainer"
   1.239 +DEPENDS="$(find_depends)"
   1.240 +EOT
   1.241 +		show_unresolved_lib $file/receipt
   1.242 +		rm -f $file/fs/.[A-Z]*
   1.243 +		tazpkg pack $file
   1.244 +		mv $file.tazpkg $TOP_DIR
   1.245 +	else
   1.246 +		_ '$PACKAGE_FILE does not look like an Archlinux/Alpine package!'
   1.247 +	fi
   1.248 +	cd $TOP_DIR
   1.249 +	rm -rf $TMP_DIR
   1.250 +}
   1.251 +
   1.252 +
   1.253 +# get package and version from PACKAGE_FILE
   1.254 +
   1.255 +parse_pkgname()
   1.256 +{
   1.257 +	package=$(basename ${2:-$PACKAGE_FILE} $1)
   1.258 +	IFS='-'
   1.259 +	set -- $package
   1.260 +	unset IFS
   1.261 +	package=$1
   1.262 +	version=$2
   1.263 +	if [ -z "$version" ]; then
   1.264 +		package=${1%%[0-9\.]*}
   1.265 +		version=${1#$package}
   1.266 +	fi
   1.267 +	file="$package-$version"
   1.268 +	mkdir $file
   1.269 +}
   1.270 +
   1.271 +
   1.272 +finish_convert_puppy()
   1.273 +{
   1.274 +	rm -f fs/*.specs
   1.275 +	mv fs $file
   1.276 +	cat > $file/receipt <<EOT
   1.277 +# SliTaz package receipt.
   1.278 +# generated by tazpkg from puppy package $(basename $PACKAGE_FILE)
   1.279 +PACKAGE="$package"
   1.280 +VERSION="$version"
   1.281 +CATEGORY="misc"
   1.282 +SHORT_DESC="$desc"
   1.283 +WEB_SITE="http://puppylinux.org/"
   1.284 +MAINTAINER="nobody@slitaz.org"
   1.285 +DEPENDS="$(find_depends)"
   1.286 +EOT
   1.287 +	show_unresolved_lib $file/receipt
   1.288 +	for i in install uninstall ; do
   1.289 +		[ -f $file/fs/p$i.sh ] && cat >> $file/receipt <<EOM
   1.290 +
   1.291 +post_$i()
   1.292 +{
   1.293 +chroot \$1/ sh - << EOT
   1.294 +cd /
   1.295 +$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/p$i.sh ; rm -f $file/fs/p$i.sh)
   1.296 +EOT
   1.297 +}
   1.298 +EOM
   1.299 +	done
   1.300 +	sed -i 's/post_uninstall/post_remove/' $file/receipt
   1.301 +	tazpkg pack $file
   1.302 +	mv $file.tazpkg $TOP_DIR
   1.303 +	cd $TOP_DIR
   1.304 +	rm -rf $TMP_DIR
   1.305 +}
   1.306 +
   1.307 +
   1.308 +# convert a .sfs package to .tazpkg
   1.309 +
   1.310 +convert_sfs()
   1.311 +{
   1.312 +	[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs 
   1.313 +	if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/pet.specs$ ; then
   1.314 +		_ '$PACKAGE_FILE does not look like a Puppy package!'
   1.315 +		return 1
   1.316 +	fi
   1.317 +	mkdir -p $TMP_DIR 
   1.318 +	cd $TMP_DIR
   1.319 +	parse_pkgname .sfs
   1.320 +	unsquashfs $PACKAGE_FILE
   1.321 +	mv squashfs-root fs
   1.322 +	set -- $(cat fs/pet.specs)
   1.323 +	desc="$10"
   1.324 +	finish_convert_puppy
   1.325 +}
   1.326 +
   1.327 +
   1.328 +# convert a .pet package to .tazpkg
   1.329 +
   1.330 +convert_pet()
   1.331 +{
   1.332 +	mkdir -p $TMP_DIR 
   1.333 +	cd $TMP_DIR
   1.334 +	parse_pkgname .pet
   1.335 +	tar xzf $PACKAGE_FILE 2> /dev/null
   1.336 +	. $package*/*.specs
   1.337 +	desc="$PETMENUDESCR"
   1.338 +	mv $package*/ fs
   1.339 +	finish_convert_puppy
   1.340 +}
   1.341 +
   1.342 +
   1.343 +# convert a .sb package to .tazpkg
   1.344 +
   1.345 +convert_sb()
   1.346 +{
   1.347 +	[ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs 
   1.348 +	if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/var/log/removed_scripts ; then
   1.349 +		_ '$PACKAGE_FILE does not look like a Slax package!'
   1.350 +		return 1
   1.351 +	fi
   1.352 +	mkdir -p $TMP_DIR 
   1.353 +	cd $TMP_DIR
   1.354 +	unsquashfs $PACKAGE_FILE
   1.355 +	mv squashfs-root fs
   1.356 +	parse_pkgname '' $(cat fs/var/log/packages/* | sed '/PACKAGE NAME:/!d;s/.*: *//')
   1.357 +	desc="$(cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,$!d;N;s/.*: //;q')"
   1.358 +	cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,/FILE LIST/!d;s/.*://;/^$/d' > $file/description.txt
   1.359 +	mv fs $file
   1.360 +	cat > $file/receipt <<EOT
   1.361 +# SliTaz package receipt.
   1.362 +# generated by tazpkg from slax package $(basename $PACKAGE_FILE)
   1.363 +PACKAGE="$package"
   1.364 +VERSION="$version"
   1.365 +CATEGORY="misc"
   1.366 +SHORT_DESC="$desc"
   1.367 +WEB_SITE="http://www.slax.org/"
   1.368 +MAINTAINER="nobody@slitaz.org"
   1.369 +DEPENDS="$(find_depends)"
   1.370 +EOT
   1.371 +	show_unresolved_lib $file/receipt
   1.372 +	[ -f $file/fs/var/log/scripts/$package* ] && cat >> $file/receipt <<EOM
   1.373 +
   1.374 +post_install()
   1.375 +{
   1.376 +chroot \$1/ sh - << EOT
   1.377 +cd /
   1.378 +$(cat $file/fs/var/log/scripts/$package* | sed -e 's/\\/\\\\/g' | sed -e 's/\$/\\$/g')
   1.379 +EOT
   1.380 +}
   1.381 +EOM
   1.382 +	tazpkg pack $file
   1.383 +	mv $file.tazpkg $TOP_DIR
   1.384 +	cd $TOP_DIR
   1.385 +	rm -rf $TMP_DIR
   1.386 +}
   1.387 +
   1.388 +
   1.389 +# convert a .tgz package to .tazpkg
   1.390 +
   1.391 +convert_tgz()
   1.392 +{
   1.393 +	parse_pkgname
   1.394 +	mkdir -p $TMP_DIR/$file/fs
   1.395 +	tar xzf $PACKAGE_FILE -C $TMP_DIR/$file/fs
   1.396 +	cd $TMP_DIR
   1.397 +	if [ -d $file/fs/install ]; then
   1.398 +		descrip=$(grep ^$package $file/fs/install/slack-desc | \
   1.399 +			  head -1 | sed 's/.*(\(.*\)).*/\1/')
   1.400 +		cat > $file/receipt <<EOT
   1.401 +# SliTaz package receipt.
   1.402 +# generated by tazpkg from slackware package $(basename $PACKAGE_FILE)
   1.403 +PACKAGE="$package"
   1.404 +VERSION="$version"
   1.405 +CATEGORY="misc"
   1.406 +SHORT_DESC="$descrip"
   1.407 +WEB_SITE="http://www.slackware.com/packages/"
   1.408 +MAINTAINER="nobody@slitaz.org"
   1.409 +DEPENDS="$(find_depends)"
   1.410 +EOT
   1.411 +		show_unresolved_lib $file/receipt
   1.412 +		[ -f $file/fs/install/doinst.sh ] && cat >> $file/receipt <<EOM
   1.413 +
   1.414 +post_install()
   1.415 +{
   1.416 +chroot \$1/ sh - << EOT
   1.417 +cd /
   1.418 +$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/install/doinst.sh)
   1.419 +EOT
   1.420 +}
   1.421 +EOM
   1.422 +		grep ^$package $file/fs/install/slack-desc | \
   1.423 +			sed "s/^$package://" > $file/description.txt
   1.424 +		[ -s $file/description.txt ] || rm -f $file/description.txt
   1.425 +		rm -rf $file/fs/install
   1.426 +		tazpkg pack $file
   1.427 +		mv $file.tazpkg $TOP_DIR
   1.428 +	else
   1.429 +		_ '$PACKAGE_FILE does not look like a Slackware package!'
   1.430 +	fi
   1.431 +	cd $TOP_DIR
   1.432 +	rm -rf $TMP_DIR
   1.433 +}
   1.434 +
   1.435 +
   1.436 +# convert a .deb package to .tazpkg
   1.437 +
   1.438 +convert_deb()
   1.439 +{
   1.440 +	mkdir -p $TMP_DIR
   1.441 +	dpkg-deb -e $PACKAGE_FILE $TMP_DIR
   1.442 +	package=$(grep '^ *Package:' $TMP_DIR/control)
   1.443 +	package=$(echo ${package##*:})
   1.444 +	version=$(grep '^ *Version:' $TMP_DIR/control)
   1.445 +	version=$(echo ${version##*:})
   1.446 +	descrip=$(grep '^ *Description:' $TMP_DIR/control)
   1.447 +	descrip=$(echo ${descrip##*:})
   1.448 +	target="$(grep ^Architecture $TMP_DIR/control | sed 's/.*: //')"
   1.449 +	case "$target" in
   1.450 +	i386|all)
   1.451 +		file="$package-$version"
   1.452 +		mkdir -p $TMP_DIR/$file/fs/
   1.453 +		dpkg-deb -x $PACKAGE_FILE $TMP_DIR/$file/fs
   1.454 +		cd $TMP_DIR
   1.455 +		cat > $file/receipt <<EOT
   1.456 +# SliTaz package receipt.
   1.457 +# generated by tazpkg from debian package $(basename $PACKAGE_FILE)
   1.458 +PACKAGE="$package"
   1.459 +VERSION="$version"
   1.460 +CATEGORY="misc"
   1.461 +SHORT_DESC="$descrip"
   1.462 +WEB_SITE="http://packages.debian.org/search?keywords=$package"
   1.463 +MAINTAINER="nobody@slitaz.org"
   1.464 +EOT
   1.465 +		LICENSE="$(grep /usr/share/common-licenses/ \
   1.466 +		  $PACKAGE_FILE $TMP_DIR/$file/fs/usr/share/doc/*/copyright | \
   1.467 +		  sed 's|.*common-licenses/\([-\.A-Za-z0-9]*\).*|\1|;s|[-\.]$||q')"
   1.468 +		[ -n "$LICENSE" ] && echo "LICENSE=\"$LICENSE\"" >> $file/receipt
   1.469 +		echo "DEPENDS=\"$(find_depends)\"" >> $file/receipt
   1.470 +		[ -s conffiles ] && cat >> $file/receipt <<EOT
   1.471 +CONFIG_FILES="$(cat conffiles)"
   1.472 +EOT
   1.473 +		show_unresolved_lib $file/receipt
   1.474 +		awk '
   1.475 +{
   1.476 +   if (/^ / && show) print substr($0,2);
   1.477 +   else show=0;
   1.478 +   if (/^Description/) show=1;
   1.479 +}' < $TMP_DIR/control > $file/description.txt
   1.480 +		sed -i 's/^\.$//' $file/description.txt
   1.481 +		[ -s $file/description.txt ] || rm -f $file/description.txt
   1.482 +		tazpkg pack $file
   1.483 +		mv $file.tazpkg $TOP_DIR
   1.484 +		;;
   1.485 +	*)
   1.486 +		_ 'Invalid target: $target (expected i386)'
   1.487 +		;;
   1.488 +	esac
   1.489 +	cd $TOP_DIR
   1.490 +	rm -rf $TMP_DIR
   1.491 +}
   1.492 +
   1.493 +
   1.494 +# convert a .rpm package to .tazpkg
   1.495 +
   1.496 +convert_rpm()
   1.497 +{
   1.498 +	mkdir -p $TMP_DIR
   1.499 +	cp $PACKAGE_FILE $TMP_DIR
   1.500 +	PACKAGE_FILE=$TMP_DIR/$(basename $PACKAGE_FILE)
   1.501 +	rpm -qip $PACKAGE_FILE | awk -v pkg=$(basename $PACKAGE_FILE) '
   1.502 +BEGIN {
   1.503 +	goturl=0;
   1.504 +	printf "# SliTaz package receipt.\n";
   1.505 +	printf "# generated by tazpkg from rpm package %s\n",pkg;
   1.506 +}
   1.507 +{
   1.508 +	if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n",$3; }
   1.509 +	if (/^Version/) printf "VERSION=\"%s-",$3;
   1.510 +	if (/^Release/) printf "%s\"\n",$3;
   1.511 +	if (/^Summary/) printf "SHORT_DESC=\"%s\"\n",substr($0,15);
   1.512 +	if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n",$3; }
   1.513 +}
   1.514 +END {
   1.515 +	if (goturl == 0)
   1.516 +		printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name;
   1.517 +	printf "CATEGORY=\"misc\"\n";
   1.518 +	printf "MAINTAINER=\"nobody@slitaz.org\"\n";
   1.519 +}
   1.520 +' > $TMP_DIR/receipt
   1.521 +	. $TMP_DIR/receipt
   1.522 +	file=$PACKAGE-$VERSION
   1.523 +	mkdir -p $TMP_DIR/$file/fs/
   1.524 +	mv $TMP_DIR/receipt $TMP_DIR/$file
   1.525 +	rpm -qip $PACKAGE_FILE | awk '
   1.526 +BEGIN { show=0 }
   1.527 +{
   1.528 +  if (show) print;
   1.529 +  if (/^Description/) show=1;
   1.530 +}
   1.531 +' > $TMP_DIR/$file/description.txt
   1.532 +	cd $TMP_DIR/$file/fs/
   1.533 +	rpm2cpio $PACKAGE_FILE | cpio -idm --quiet
   1.534 +	# rpm2cpio can't extract some new RPMs
   1.535 +	if [ $? == 1 ]; then
   1.536 +		if [ ! -e $INSTALLED/p7zip-full/receipt ]; then
   1.537 +			boldify $(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')
   1.538 +			_n "Do you want to install 'p7zip-full' package"; confirm
   1.539 +			if [ $? = 0 ]; then
   1.540 +				tazpkg -gi p7zip-full
   1.541 +			else
   1.542 +				rm -rf $TMP_DIR
   1.543 +				exit 1
   1.544 +			fi
   1.545 +		fi
   1.546 +		# we may already have 7z or may have just installed it in the step above
   1.547 +		if [ -e $INSTALLED/p7zip-full/receipt ]; then
   1.548 +			7z x -so $PACKAGE_FILE | cpio -idm --quiet
   1.549 +		fi
   1.550 +	fi
   1.551 +	cd ../..
   1.552 +	echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/$file/receipt
   1.553 +	show_unresolved_lib $TMP_DIR/$file/receipt
   1.554 +	tazpkg pack $file
   1.555 +	mv $file.tazpkg $TOP_DIR
   1.556 +	cd $TOP_DIR
   1.557 +	rm -rf $TMP_DIR
   1.558 +}
   1.559 +
   1.560 +
   1.561 +
   1.562 +
   1.563 +if [ "$(dd if=$PACKAGE_FILE bs=8 count=1 skip=1 2> /dev/null)"  == "debian-b" ]; then
   1.564 +	convert_deb
   1.565 +else
   1.566 +	case "$PACKAGE_FILE" in
   1.567 +		*.deb|*.udeb)
   1.568 +			convert_deb;;
   1.569 +		*.rpm)
   1.570 +			convert_rpm;;
   1.571 +		*.sb)
   1.572 +			convert_sb;;
   1.573 +		*.sfs)
   1.574 +			convert_sfs;;
   1.575 +		*.pet)
   1.576 +			convert_pet;;
   1.577 +		*.tgz)
   1.578 +			convert_tgz;;
   1.579 +		*.apk|*.pkg.tar.gz|*.pkg.tar.xz)
   1.580 +			convert_arch;;
   1.581 +		*.ipk|*.opk)
   1.582 +			convert_ipk;;
   1.583 +		*.spack)
   1.584 +			convert_spack;;
   1.585 +		*.tar.bz2)
   1.586 +			convert_upkg;;
   1.587 +		*)
   1.588 +			_ 'Unsupported format' ;;
   1.589 +	esac
   1.590 +fi
   1.591 +
   1.592 +exit 0