tazpkg diff modules/tazpkg-convert @ rev 719
Style package table (less html, more css); really quick package list in test mode (add "&awk" to "pkgs.cgi?cat=..." to check it).
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Fri Dec 19 17:25:08 2014 +0200 (2014-12-19) |
parents | 1ab24812ad7e |
children | 3b9ffb4e8793 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/modules/tazpkg-convert Fri Dec 19 17:25:08 2014 +0200 1.3 @@ -0,0 +1,664 @@ 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=\"$(_n 'No dependency for:')" >> $1 1.33 + sort < $TMP_DIR/unresolved | uniq | \ 1.34 + while read file; do 1.35 + _ 'WARNING: unknown dependency for %s' $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 + _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'upkg' 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=$(sed '/^Package/!d;s/.*: //' $TMP_DIR/control) 1.153 + version=$(sed '/^Version/!d;s/.*: //' $TMP_DIR/control) 1.154 + maintainer="$(sed '/^Maintainer/!d;s/.*: //' $TMP_DIR/control)" 1.155 + target="$(sed '/^Architecture/!d;s/.*: //' $TMP_DIR/control)" 1.156 + descrip=$(sed '/^Description/!d;s/.*: //' $TMP_DIR/control) 1.157 + homepage=$(sed '/^Homepage/!d;s/.*: //' $TMP_DIR/control) 1.158 + url="http://openwrt.org/" 1.159 + case "$target" in 1.160 + i386|all) 1.161 + file=$package-$version 1.162 + mkdir -p $TMP_DIR/$file/fs 1.163 + tar xOzf $PACKAGE_FILE ./data.tar.gz | tar xzf - -C $TMP_DIR/$file/fs 1.164 + cd $TMP_DIR 1.165 + cat > $file/receipt <<EOT 1.166 +# SliTaz package receipt. 1.167 +# generated by tazpkg from package $(basename $PACKAGE_FILE) 1.168 +PACKAGE="$package" 1.169 +VERSION="$version" 1.170 +CATEGORY="misc" 1.171 +SHORT_DESC="$descrip" 1.172 +WEB_SITE="${homepage:-$url}" 1.173 +MAINTAINER="$maintainer" 1.174 +DEPENDS="$(find_depends)" 1.175 +EOT 1.176 + show_unresolved_lib $file/receipt 1.177 + [ -s conffiles ] && cat >> $file/receipt <<EOT 1.178 +CONFIG_FILES="$(cat conffiles)" 1.179 +EOT 1.180 + show_unresolved_lib $file/receipt 1.181 + while read script func; do 1.182 + [ -s $script ] && cat >> $file/receipt <<EOT 1.183 + 1.184 +$func() 1.185 +{ 1.186 +$(cat $script) 1.187 +} 1.188 +EOT 1.189 + done <<EOT 1.190 +preinst pre_install 1.191 +postinst post_install 1.192 +prerm pre_remove 1.193 +postrm post_remove 1.194 +EOT 1.195 + awk ' 1.196 +{ 1.197 + if (/^ / && show) print substr($0,2); 1.198 + else show=0; 1.199 + if (/^Description/) show=1; 1.200 +}' < $TMP_DIR/control > $file/description.txt 1.201 + sed -i 's/^\.$//' $file/description.txt 1.202 + [ -s $file/description.txt ] || rm -f $file/description.txt 1.203 + tazpkg pack $file 1.204 + cd $TOP_DIR 1.205 + mv $TMP_DIR/$file.tazpkg . 1.206 + ;; 1.207 + *) 1.208 + _ 'Invalid target: %s (expected i386)' $target 1.209 + ;; 1.210 + esac 1.211 + rm -rf $TMP_DIR 1.212 +} 1.213 + 1.214 + 1.215 +# convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg 1.216 + 1.217 +convert_arch() 1.218 +{ 1.219 + mkdir -p $TMP_DIR/fs 1.220 + busybox tar xf $PACKAGE_FILE -C $TMP_DIR/fs 1.221 + if [ -f $TMP_DIR/fs/.PKGINFO ]; then 1.222 + cd $TMP_DIR 1.223 + package="$(sed '/^pkgname/!d;s/.*= //' fs/.PKGINFO)" 1.224 + version="$(sed '/^pkgver/!d;s/.*= //' fs/.PKGINFO)" 1.225 + descrip="$(sed '/^pkgdesc/!d;s/.*= //' fs/.PKGINFO)" 1.226 + url="$(sed '/^url/!d;s/.*= //' fs/.PKGINFO)" 1.227 + maintainer="$(sed '/^packager/!d;s/.*= //' fs/.PKGINFO)" 1.228 + file=$package-$version 1.229 + mkdir $file 1.230 + mv fs $file 1.231 + cat > $file/receipt <<EOT 1.232 +# SliTaz package receipt. 1.233 +# generated by tazpkg from Archlinux package $(basename $PACKAGE_FILE) 1.234 +PACKAGE="$package" 1.235 +VERSION="$version" 1.236 +CATEGORY="misc" 1.237 +SHORT_DESC="$descrip" 1.238 +WEB_SITE="$url" 1.239 +MAINTAINER="$maintainer" 1.240 +DEPENDS="$(find_depends)" 1.241 +EOT 1.242 + show_unresolved_lib $file/receipt 1.243 + rm -f $file/fs/.[A-Z]* 1.244 + tazpkg pack $file 1.245 + mv $file.tazpkg $TOP_DIR 1.246 + else 1.247 + _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'Archlinux/Alpine' 1.248 + fi 1.249 + cd $TOP_DIR 1.250 + rm -rf $TMP_DIR 1.251 +} 1.252 + 1.253 + 1.254 +# get package and version from PACKAGE_FILE 1.255 + 1.256 +parse_pkgname() 1.257 +{ 1.258 + package=$(basename ${2:-$PACKAGE_FILE} $1) 1.259 + IFS='-' 1.260 + set -- $package 1.261 + unset IFS 1.262 + package=$1 1.263 + version=$2 1.264 + if [ -z "$version" ]; then 1.265 + package=${1%%[0-9\.]*} 1.266 + version=${1#$package} 1.267 + fi 1.268 + file="$package-$version" 1.269 + mkdir $file 1.270 +} 1.271 + 1.272 + 1.273 +finish_convert_puppy() 1.274 +{ 1.275 + rm -f fs/*.specs 1.276 + mv fs $file 1.277 + cat > $file/receipt <<EOT 1.278 +# SliTaz package receipt. 1.279 +# generated by tazpkg from puppy package $(basename $PACKAGE_FILE) 1.280 +PACKAGE="$package" 1.281 +VERSION="$version" 1.282 +CATEGORY="misc" 1.283 +SHORT_DESC="$desc" 1.284 +WEB_SITE="http://puppylinux.org/" 1.285 +MAINTAINER="nobody@slitaz.org" 1.286 +DEPENDS="$(find_depends)" 1.287 +EOT 1.288 + show_unresolved_lib $file/receipt 1.289 + for i in install uninstall ; do 1.290 + [ -f $file/fs/p$i.sh ] && cat >> $file/receipt <<EOM 1.291 + 1.292 +post_$i() 1.293 +{ 1.294 +chroot \$1/ sh - << EOT 1.295 +cd / 1.296 +$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/p$i.sh ; rm -f $file/fs/p$i.sh) 1.297 +EOT 1.298 +} 1.299 +EOM 1.300 + done 1.301 + sed -i 's/post_uninstall/post_remove/' $file/receipt 1.302 + tazpkg pack $file 1.303 + mv $file.tazpkg $TOP_DIR 1.304 + cd $TOP_DIR 1.305 + rm -rf $TMP_DIR 1.306 +} 1.307 + 1.308 + 1.309 +# convert a .sfs package to .tazpkg 1.310 + 1.311 +convert_sfs() 1.312 +{ 1.313 + [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs 1.314 + if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/pet.specs$ ; then 1.315 + _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'Puppy' 1.316 + return 1 1.317 + fi 1.318 + mkdir -p $TMP_DIR 1.319 + cd $TMP_DIR 1.320 + parse_pkgname .sfs 1.321 + unsquashfs $PACKAGE_FILE 1.322 + mv squashfs-root fs 1.323 + set -- $(cat fs/pet.specs) 1.324 + desc="$10" 1.325 + finish_convert_puppy 1.326 +} 1.327 + 1.328 + 1.329 +# convert a .pet package to .tazpkg 1.330 + 1.331 +convert_pet() 1.332 +{ 1.333 + mkdir -p $TMP_DIR 1.334 + cd $TMP_DIR 1.335 + parse_pkgname .pet 1.336 + tar xzf $PACKAGE_FILE 2> /dev/null 1.337 + . $package*/*.specs 1.338 + desc="$PETMENUDESCR" 1.339 + mv $package*/ fs 1.340 + finish_convert_puppy 1.341 +} 1.342 + 1.343 + 1.344 +# convert a .sb package to .tazpkg 1.345 + 1.346 +convert_sb() 1.347 +{ 1.348 + [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs 1.349 + if ! unsquashfs -l $PACKAGE_FILE | grep -q squashfs-root/var/log/removed_scripts ; then 1.350 + _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'Slax' 1.351 + return 1 1.352 + fi 1.353 + mkdir -p $TMP_DIR 1.354 + cd $TMP_DIR 1.355 + unsquashfs $PACKAGE_FILE 1.356 + mv squashfs-root fs 1.357 + parse_pkgname '' $(cat fs/var/log/packages/* | sed '/PACKAGE NAME:/!d;s/.*: *//') 1.358 + desc="$(cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,$!d;N;s/.*: //;q')" 1.359 + cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,/FILE LIST/!d;s/.*://;/^$/d' > $file/description.txt 1.360 + mv fs $file 1.361 + cat > $file/receipt <<EOT 1.362 +# SliTaz package receipt. 1.363 +# generated by tazpkg from slax package $(basename $PACKAGE_FILE) 1.364 +PACKAGE="$package" 1.365 +VERSION="$version" 1.366 +CATEGORY="misc" 1.367 +SHORT_DESC="$desc" 1.368 +WEB_SITE="http://www.slax.org/" 1.369 +MAINTAINER="nobody@slitaz.org" 1.370 +DEPENDS="$(find_depends)" 1.371 +EOT 1.372 + show_unresolved_lib $file/receipt 1.373 + [ -f $file/fs/var/log/scripts/$package* ] && cat >> $file/receipt <<EOM 1.374 + 1.375 +post_install() 1.376 +{ 1.377 +chroot \$1/ sh - << EOT 1.378 +cd / 1.379 +$(cat $file/fs/var/log/scripts/$package* | sed -e 's/\\/\\\\/g' | sed -e 's/\$/\\$/g') 1.380 +EOT 1.381 +} 1.382 +EOM 1.383 + tazpkg pack $file 1.384 + mv $file.tazpkg $TOP_DIR 1.385 + cd $TOP_DIR 1.386 + rm -rf $TMP_DIR 1.387 +} 1.388 + 1.389 + 1.390 +# convert a .tgz package to .tazpkg 1.391 + 1.392 +convert_tgz() 1.393 +{ 1.394 + parse_pkgname 1.395 + mkdir -p $TMP_DIR/$file/fs 1.396 + tar xzf $PACKAGE_FILE -C $TMP_DIR/$file/fs 1.397 + cd $TMP_DIR 1.398 + if [ -d $file/fs/install ]; then 1.399 + descrip=$(sed "/^$package/!d;s/.*(\\(.*\\)).*/\\1/;q" \ 1.400 + $file/fs/install/slack-desc) 1.401 + cat > $file/receipt <<EOT 1.402 +# SliTaz package receipt. 1.403 +# generated by tazpkg from slackware package $(basename $PACKAGE_FILE) 1.404 +PACKAGE="$package" 1.405 +VERSION="$version" 1.406 +CATEGORY="misc" 1.407 +SHORT_DESC="$descrip" 1.408 +WEB_SITE="http://www.slackware.com/packages/" 1.409 +MAINTAINER="nobody@slitaz.org" 1.410 +DEPENDS="$(find_depends)" 1.411 +EOT 1.412 + show_unresolved_lib $file/receipt 1.413 + [ -f $file/fs/install/doinst.sh ] && cat >> $file/receipt <<EOM 1.414 + 1.415 +post_install() 1.416 +{ 1.417 +chroot \$1/ sh - << EOT 1.418 +cd / 1.419 +$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/install/doinst.sh) 1.420 +EOT 1.421 +} 1.422 +EOM 1.423 + sed "/^$package/:d;s/^$package://" \ 1.424 + $file/fs/install/slack-desc > $file/description.txt 1.425 + [ -s $file/description.txt ] || rm -f $file/description.txt 1.426 + rm -rf $file/fs/install 1.427 + tazpkg pack $file 1.428 + mv $file.tazpkg $TOP_DIR 1.429 + else 1.430 + _ 'File "%s" does not look like %s package!' $PACKAGE_FILE 'Slackware' 1.431 + fi 1.432 + cd $TOP_DIR 1.433 + rm -rf $TMP_DIR 1.434 +} 1.435 + 1.436 + 1.437 +# convert a .deb package to .tazpkg 1.438 + 1.439 +convert_deb() 1.440 +{ 1.441 + mkdir -p $TMP_DIR 1.442 + dpkg-deb -e $PACKAGE_FILE $TMP_DIR 1.443 + package=$(sed '/^ *Package:/!d;s/.*: //' $TMP_DIR/control) 1.444 + version=$(sed '/^ *Version:/!d;s/.*: //' $TMP_DIR/control) 1.445 + descrip=$(sed '/^ *Description:/!d;s/.*: //' $TMP_DIR/control) 1.446 + homepage=$(sed '/^ *Homepage:/!d;s/.*: //' $TMP_DIR/control) 1.447 + target="$(sed '/^ *Architecture:/!d;s/.*: //' $TMP_DIR/control)" 1.448 + case "$target" in 1.449 + i386|all) 1.450 + file="$package-$version" 1.451 + mkdir -p $TMP_DIR/$file/fs/ 1.452 + dpkg-deb -x $PACKAGE_FILE $TMP_DIR/$file/fs 1.453 + cd $TMP_DIR 1.454 + cat > $file/receipt <<EOT 1.455 +# SliTaz package receipt. 1.456 +# generated by tazpkg from debian package $(basename $PACKAGE_FILE) 1.457 +PACKAGE="$package" 1.458 +VERSION="$version" 1.459 +CATEGORY="misc" 1.460 +SHORT_DESC="$descrip" 1.461 +WEB_SITE="${homepage:-http://packages.debian.org/search?keywords=$package}" 1.462 +MAINTAINER="nobody@slitaz.org" 1.463 +EOT 1.464 + LICENSE="$(grep /usr/share/common-licenses/ \ 1.465 + $PACKAGE_FILE $TMP_DIR/$file/fs/usr/share/doc/*/copyright | \ 1.466 + sed 's|.*common-licenses/\([-\.A-Za-z0-9]*\).*|\1|;s|[-\.]$||q')" 1.467 + [ -n "$LICENSE" ] && echo "LICENSE=\"$LICENSE\"" >> $file/receipt 1.468 + echo "DEPENDS=\"$(find_depends)\"" >> $file/receipt 1.469 + [ -s conffiles ] && cat >> $file/receipt <<EOT 1.470 +CONFIG_FILES="$(cat conffiles)" 1.471 +EOT 1.472 + show_unresolved_lib $file/receipt 1.473 + awk ' 1.474 +{ 1.475 + if (/^ / && show) print substr($0,2); 1.476 + else show=0; 1.477 + if (/^Description/) show=1; 1.478 +}' < $TMP_DIR/control > $file/description.txt 1.479 + sed -i 's/^\.$//' $file/description.txt 1.480 + [ -s $file/description.txt ] || rm -f $file/description.txt 1.481 + tazpkg pack $file 1.482 + mv $file.tazpkg $TOP_DIR 1.483 + ;; 1.484 + *) 1.485 + _ 'Invalid target: %s (expected i386)' $target 1.486 + ;; 1.487 + esac 1.488 + cd $TOP_DIR 1.489 + rm -rf $TMP_DIR 1.490 +} 1.491 + 1.492 + 1.493 +# convert a .rpm package to .tazpkg 1.494 + 1.495 +convert_rpm() 1.496 +{ 1.497 + mkdir -p $TMP_DIR 1.498 + cp $PACKAGE_FILE $TMP_DIR 1.499 + PACKAGE_FILE=$TMP_DIR/$(basename $PACKAGE_FILE) 1.500 + rpm -qip $PACKAGE_FILE | awk -v pkg=$(basename $PACKAGE_FILE) ' 1.501 +BEGIN { 1.502 + goturl=0; 1.503 + printf "# SliTaz package receipt.\n"; 1.504 + printf "# generated by tazpkg from rpm package %s\n",pkg; 1.505 +} 1.506 +{ 1.507 + if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n",$3; } 1.508 + if (/^Version/) printf "VERSION=\"%s-",$3; 1.509 + if (/^Release/) printf "%s\"\n",$3; 1.510 + if (/^Summary/) printf "SHORT_DESC=\"%s\"\n",substr($0,15); 1.511 + if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n",$3; } 1.512 +} 1.513 +END { 1.514 + if (goturl == 0) 1.515 + printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name; 1.516 + printf "CATEGORY=\"misc\"\n"; 1.517 + printf "MAINTAINER=\"nobody@slitaz.org\"\n"; 1.518 +} 1.519 +' > $TMP_DIR/receipt 1.520 + . $TMP_DIR/receipt 1.521 + file=$PACKAGE-$VERSION 1.522 + mkdir -p $TMP_DIR/$file/fs/ 1.523 + mv $TMP_DIR/receipt $TMP_DIR/$file 1.524 + rpm -qip $PACKAGE_FILE | awk ' 1.525 +BEGIN { show=0 } 1.526 +{ 1.527 + if (show) print; 1.528 + if (/^Description/) show=1; 1.529 +} 1.530 +' > $TMP_DIR/$file/description.txt 1.531 + cd $TMP_DIR/$file/fs/ 1.532 + rpm2cpio $PACKAGE_FILE | cpio -idm --quiet 1.533 + # rpm2cpio can't extract some new RPMs 1.534 + if [ $? == 1 ]; then 1.535 + if [ ! -e $INSTALLED/p7zip-full/receipt ]; then 1.536 + boldify "$(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')" 1.537 + confirm "$(_n 'Do you want to install "%s" package? (y/N)' 'p7zip-full')" 1.538 + if [ $? = 0 ]; then 1.539 + tazpkg -gi p7zip-full 1.540 + else 1.541 + rm -rf $TMP_DIR 1.542 + exit 1 1.543 + fi 1.544 + fi 1.545 + # we may already have 7z or may have just installed it in the step above 1.546 + if [ -e $INSTALLED/p7zip-full/receipt ]; then 1.547 + 7z x -so $PACKAGE_FILE | cpio -idm --quiet 1.548 + fi 1.549 + fi 1.550 + cd ../.. 1.551 + echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/$file/receipt 1.552 + show_unresolved_lib $TMP_DIR/$file/receipt 1.553 + tazpkg pack $file 1.554 + mv $file.tazpkg $TOP_DIR 1.555 + cd $TOP_DIR 1.556 + rm -rf $TMP_DIR 1.557 +} 1.558 + 1.559 +# convert a .xbps package to .tazpkg (http://repo.voidlinux.eu/current/) 1.560 +xbpstag() 1.561 +{ 1.562 + sed "/<key>$1<\/key>/!d{n;s/.*>\\(.*\\)<.*/\\1/}" \ 1.563 + < fs/props.plist | sed \$!d 1.564 +} 1.565 + 1.566 +convert_xbps() 1.567 +{ 1.568 + mkdir -p $TMP_DIR/fs 1.569 + ( xzcat $PACKAGE_FILE || bzcat $PACKAGE_FILE || zcat $PACKAGE_FILE ) | \ 1.570 + tar xf - -C $TMP_DIR/fs 1.571 + 1.572 + cd $TMP_DIR 1.573 + HOST_ARCH="$(xbpstag architecture)" 1.574 + case "$HOST_ARCH" in 1.575 + i686) HOST_ARCH="i486" ;; 1.576 + *) _ 'Arch "%s" not supported.' $HOST_ARCH 1.577 + HOST_ARCH= 1.578 + esac 1.579 + 1.580 + if [ "$HOST_ARCH" ]; then 1.581 + package="$(xbpstag pkgname)" 1.582 + version="$(xbpstag version)" 1.583 + file=$package-$version 1.584 + mkdir $file 1.585 + cat > $file/receipt <<EOT 1.586 +# SliTaz package receipt. 1.587 +# generated by tazpkg from package $(basename $PACKAGE_FILE) 1.588 +PACKAGE="$package" 1.589 +VERSION="$version" 1.590 +CATEGORY="misc" 1.591 +SHORT_DESC="$(xbpstag short_desc)" 1.592 +WEB_SITE="$(xbpstag homepage)" 1.593 +MAINTAINER="$(xbpstag maintainer | sed 's/>/>/;s/</</')" 1.594 +LICENSE="$(xbpstag license | sed 's/-//g')" 1.595 +HOST_ARCH="$HOST_ARCH" 1.596 +CONFIG_FILES="$(sed '/<key>conf_files<\/key>/,/<key>/!d;/array>/d;/<key>/d;s/.*>\(.*\)<.*/\1/' fs/props.plist)" 1.597 + 1.598 +DEPENDS="$(find_depends)" 1.599 + 1.600 +EOT 1.601 + while read script func ; do 1.602 + [ -s fs/$script ] && cat >> $file/receipt <<EOT 1.603 +xbps_$func() 1.604 +{ 1.605 +set +e 1.606 +$(cat fs/$script) 1.607 +} 1.608 + 1.609 +pre_$func() 1.610 +{ 1.611 + xbps_$func pre $package $version yes /etc/xbps.conf $HOST_ARCH 1.612 +} 1.613 + 1.614 +post_$func() 1.615 +{ 1.616 + xbps_$func post $package $version yes /etc/xbps.conf $HOST_ARCH 1.617 +} 1.618 + 1.619 +EOT 1.620 + rm -f fs/$script 1.621 + done << EOT 1.622 +INSTALL install 1.623 +REMOVE remove 1.624 +EOT 1.625 + rm -f fs/*.plist 1.626 + mv fs $package-$version 1.627 + tazpkg pack $package-$version 1.628 + mv $package-$version.tazpkg $TOP_DIR 1.629 + fi 1.630 + cd $TOP_DIR 1.631 + rm -rf $TMP_DIR 1.632 +} 1.633 + 1.634 + 1.635 + 1.636 +if [ "$(dd if=$PACKAGE_FILE bs=8 count=1 skip=1 2> /dev/null)" == "debian-b" ]; then 1.637 + convert_deb 1.638 +else 1.639 + case "$PACKAGE_FILE" in 1.640 + *.deb|*.udeb) 1.641 + convert_deb;; 1.642 + *.rpm) 1.643 + convert_rpm;; 1.644 + *.sb) 1.645 + convert_sb;; 1.646 + *.sfs) 1.647 + convert_sfs;; 1.648 + *.pet) 1.649 + convert_pet;; 1.650 + *.tgz) 1.651 + convert_tgz;; 1.652 + *.apk|*.pkg.tar.gz|*.pkg.tar.xz) 1.653 + convert_arch;; 1.654 + *.ipk|*.opk) 1.655 + convert_ipk;; 1.656 + *.spack) 1.657 + convert_spack;; 1.658 + *.tar.bz2) 1.659 + convert_upkg;; 1.660 + *.xbps) 1.661 + convert_xbps;; 1.662 + *) 1.663 + _ 'Unsupported format' ;; 1.664 + esac 1.665 +fi 1.666 + 1.667 +exit 0