tazpkg diff modules/convert @ rev 823
Update zh_CN.po (thanks Wenyu Zhang)
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sat Jul 25 22:54:10 2015 +0200 (2015-07-25) |
parents | |
children | 2f3580bd8c0c |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/modules/convert Sat Jul 25 22:54:10 2015 +0200 1.3 @@ -0,0 +1,750 @@ 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 +. @@MODULES@@/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 + if [ -s "$TMP_DIR/unresolved" ]; then 1.31 + echo -e "BUGS=\"$(_n 'No dependency for:')" >> $1 1.32 + sort < $TMP_DIR/unresolved | uniq | \ 1.33 + while read file; do 1.34 + _ 'WARNING: unknown dependency for %s' "$lib" 1.35 + echo -n " $file" >> $1 1.36 + done 1.37 + echo "\"" >> $1 1.38 + fi 1.39 +} 1.40 + 1.41 + 1.42 +# convert a .tar.bz2 package to .tazpkg 1.43 + 1.44 +convert_upkg() { 1.45 + mkdir -p $TMP_DIR/fs 1.46 + tar -xjf "$PACKAGE_FILE" -C $TMP_DIR/fs 1.47 + if [ -d "$TMP_DIR/fs/var/lib/upkg/packages" ]; then 1.48 + cd $TMP_DIR 1.49 + package="$(sed '/^Package:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)" 1.50 + version="$(sed '/^Version:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)" 1.51 + url='http://www.paldo.org/' 1.52 + file="$package-$version" 1.53 + mkdir $file 1.54 + mv fs $file 1.55 + maintainer='nobody@slitaz.org' 1.56 + descrip="$package package from paldo." 1.57 + cat > $file/receipt <<EOT 1.58 +# SliTaz package receipt. 1.59 +# generated by tazpkg from package $(basename "$PACKAGE_FILE") 1.60 +PACKAGE="$package" 1.61 +VERSION="$version" 1.62 +CATEGORY="misc" 1.63 +SHORT_DESC="$descrip" 1.64 +WEB_SITE="$url" 1.65 +MAINTAINER="$maintainer" 1.66 +DEPENDS="$(find_depends)" 1.67 +EOT 1.68 + [ -s "$file/var/lib/upkg/files/*.config.bz2" ] && 1.69 + cat >> $file/receipt <<EOT 1.70 +CONFIG_FILES="$(bzcat $file/var/lib/upkg/files/*.config.bz2)" 1.71 +EOT 1.72 + while read ext func ; do 1.73 + [ -s "$file/fs/var/lib/upkg/scripts/*.$ext" ] || continue 1.74 + cat >> $file/receipt <<EOT 1.75 + 1.76 +$func() 1.77 +{ 1.78 +$(cat $file/fs/var/lib/upkg/scripts/*.$ext) 1.79 +} 1.80 +EOT 1.81 + done <<EOT 1.82 +prerm pre_remove 1.83 +EOT 1.84 + 1.85 + tazpkg pack $file 1.86 + mv $TMP_DIR/$file.tazpkg $TOP_DIR 1.87 + else 1.88 + _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'upkg' 1.89 + fi 1.90 + cd $TOP_DIR 1.91 + rm -rf $TMP_DIR 1.92 +} 1.93 + 1.94 + 1.95 +# convert a .spack package to .tazpkg 1.96 + 1.97 +convert_spack() { 1.98 + mkdir -p $TMP_DIR 1.99 + ( cd $TMP_DIR ; cpio -i ) < "$PACKAGE_FILE" 1.100 + cd $TMP_DIR 1.101 + package="$(sed '$!d;s/:.*//' about.txt)" 1.102 + version="$(basename "$PACKAGE_FILE" | sed "s/$package-\([^-]*\).*/\1/")" 1.103 + descrip="$(sed '$!d;s/.*: //' about.txt)" 1.104 + url='http://0linux.org/' 1.105 + maintainer='nobody@slitaz.org' 1.106 + file="$package-$version" 1.107 + mkdir -p $file/fs 1.108 + xzcat files.xz | ( cd $file/fs ; cpio -idmu ) 1.109 + cat > $file/receipt <<EOT 1.110 +# SliTaz package receipt. 1.111 +# generated by tazpkg from package $(basename "$PACKAGE_FILE") 1.112 +PACKAGE="$package" 1.113 +VERSION="$version" 1.114 +CATEGORY="misc" 1.115 +SHORT_DESC="$descrip" 1.116 +WEB_SITE="$url" 1.117 +MAINTAINER="$maintainer" 1.118 +DEPENDS="$(find_depends)" 1.119 +EOT 1.120 + [ -s 'pre-install.sh' ] && cat >> $file/receipt <<EOT 1.121 + 1.122 +pre_install() 1.123 +{ 1.124 + cd / 1.125 +$(sed 1d pre-install.sh) 1.126 +} 1.127 +EOT 1.128 + [ -s 'post-install.sh' ] && cat >> $file/receipt <<EOT 1.129 + 1.130 +post_install() 1.131 +{ 1.132 + cd / 1.133 +$(sed '1,/^}/d' post-install.sh) 1.134 +} 1.135 +EOT 1.136 + tazpkg pack $file 1.137 + cd $TOP_DIR 1.138 + mv $TMP_DIR/$file.tazpkg . 1.139 + rm -rf $TMP_DIR 1.140 +} 1.141 + 1.142 + 1.143 +# convert a .ipk package to .tazpkg 1.144 + 1.145 +convert_ipk() { 1.146 + mkdir -p $TMP_DIR 1.147 + tar -xOzf "$PACKAGE_FILE" ./control.tar.gz | tar -xzf - -C $TMP_DIR 1.148 + package=$(sed '/^Package/!d;s/.*: //' $TMP_DIR/control) 1.149 + version=$(sed '/^Version/!d;s/.*: //' $TMP_DIR/control) 1.150 + maintainer="$(sed '/^Maintainer/!d;s/.*: //' $TMP_DIR/control)" 1.151 + target="$(sed '/^Architecture/!d;s/.*: //' $TMP_DIR/control)" 1.152 + descrip=$(sed '/^Description/!d;s/.*: //' $TMP_DIR/control) 1.153 + homepage=$(sed '/^Homepage/!d;s/.*: //' $TMP_DIR/control) 1.154 + url='http://openwrt.org/' 1.155 + case "$target" in 1.156 + i386|all) 1.157 + file="$package-$version" 1.158 + mkdir -p $TMP_DIR/$file/fs 1.159 + tar -xOzf "$PACKAGE_FILE" ./data.tar.gz | tar -xzf - -C $TMP_DIR/$file/fs 1.160 + cd $TMP_DIR 1.161 + cat > $file/receipt <<EOT 1.162 +# SliTaz package receipt. 1.163 +# generated by tazpkg from package $(basename "$PACKAGE_FILE") 1.164 +PACKAGE="$package" 1.165 +VERSION="$version" 1.166 +CATEGORY="misc" 1.167 +SHORT_DESC="$descrip" 1.168 +WEB_SITE="${homepage:-$url}" 1.169 +MAINTAINER="$maintainer" 1.170 +DEPENDS="$(find_depends)" 1.171 +EOT 1.172 + show_unresolved_lib $file/receipt 1.173 + [ -s 'conffiles' ] && cat >> $file/receipt <<EOT 1.174 +CONFIG_FILES="$(cat conffiles)" 1.175 +EOT 1.176 + show_unresolved_lib $file/receipt 1.177 + while read script func; do 1.178 + [ -s "$script" ] && cat >> $file/receipt <<EOT 1.179 + 1.180 +$func() 1.181 +{ 1.182 +$(cat $script) 1.183 +} 1.184 +EOT 1.185 + done <<EOT 1.186 +preinst pre_install 1.187 +postinst post_install 1.188 +prerm pre_remove 1.189 +postrm post_remove 1.190 +EOT 1.191 + awk ' 1.192 +{ 1.193 + if (/^ / && show) print substr($0,2); 1.194 + else show=0; 1.195 + if (/^Description/) show=1; 1.196 +}' < $TMP_DIR/control > $file/description.txt 1.197 + sed -i 's/^\.$//' $file/description.txt 1.198 + [ -s $file/description.txt ] || rm -f $file/description.txt 1.199 + tazpkg pack $file 1.200 + cd $TOP_DIR 1.201 + mv $TMP_DIR/$file.tazpkg . 1.202 + ;; 1.203 + *) 1.204 + _ 'Invalid target: %s (expected i386)' "$target" 1.205 + ;; 1.206 + esac 1.207 + rm -rf $TMP_DIR 1.208 +} 1.209 + 1.210 + 1.211 +# convert a .cards.tar.xz package to .tazpkg 1.212 + 1.213 +convert_nutyx() { 1.214 + mkdir -p $TMP_DIR/fs 1.215 + busybox tar -xf "$PACKAGE_FILE" -C $TMP_DIR/fs 1.216 + if [ -f "$TMP_DIR/fs/.META" ]; then 1.217 + package="$(sed '/^N/!d;s/^.//' fs/.META)" 1.218 + version="$(sed '/^V/!d;s/^.//' fs/.META)" 1.219 + descrip="$(sed '/^D/!d;s/^.//' fs/.META)" 1.220 + file="$package-$version" 1.221 + mkdir $file 1.222 + mv fs $file 1.223 + cat > $file/receipt <<EOT 1.224 +# SliTaz package receipt. 1.225 +# generated by tazpkg from NuTyX package $(basename "$PACKAGE_FILE") 1.226 +PACKAGE="$package" 1.227 +VERSION="$version" 1.228 +CATEGORY="misc" 1.229 +SHORT_DESC="$descrip" 1.230 +WEB_SITE="http://www.nutyx.org/" 1.231 +MAINTAINER="nobody@slitaz.org" 1.232 +DEPENDS="$(find_depends)" 1.233 +EOT 1.234 + show_unresolved_lib $file/receipt 1.235 + rm -f $file/fs/.[A-Z]* 1.236 + tazpkg pack $file 1.237 + mv $file.tazpkg $TOP_DIR 1.238 + else 1.239 + _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'NuTyX' 1.240 + fi 1.241 + cd $TOP_DIR 1.242 + rm -rf $TMP_DIR 1.243 +} 1.244 + 1.245 + 1.246 +# convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg 1.247 + 1.248 +convert_arch() { 1.249 + mkdir -p $TMP_DIR/fs 1.250 + busybox tar -xf "$PACKAGE_FILE" -C $TMP_DIR/fs 1.251 + if [ -f "$TMP_DIR/fs/.PKGINFO" ]; then 1.252 + cd $TMP_DIR 1.253 + package="$(sed '/^pkgname/!d;s/.*= //' fs/.PKGINFO)" 1.254 + version="$(sed '/^pkgver/!d;s/.*= //' fs/.PKGINFO)" 1.255 + descrip="$(sed '/^pkgdesc/!d;s/.*= //' fs/.PKGINFO)" 1.256 + url="$(sed '/^url/!d;s/.*= //' fs/.PKGINFO)" 1.257 + maintainer="$(sed '/^packager/!d;s/.*= //' fs/.PKGINFO)" 1.258 + file="$package-$version" 1.259 + mkdir $file 1.260 + mv fs $file 1.261 + cat > $file/receipt <<EOT 1.262 +# SliTaz package receipt. 1.263 +# generated by tazpkg from Archlinux package $(basename "$PACKAGE_FILE") 1.264 +PACKAGE="$package" 1.265 +VERSION="$version" 1.266 +CATEGORY="misc" 1.267 +SHORT_DESC="$descrip" 1.268 +WEB_SITE="$url" 1.269 +MAINTAINER="$maintainer" 1.270 +DEPENDS="$(find_depends)" 1.271 +EOT 1.272 + show_unresolved_lib $file/receipt 1.273 + rm -f $file/fs/.[A-Z]* 1.274 + tazpkg pack $file 1.275 + mv $file.tazpkg $TOP_DIR 1.276 + else 1.277 + _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Archlinux/Alpine' 1.278 + fi 1.279 + cd $TOP_DIR 1.280 + rm -rf $TMP_DIR 1.281 +} 1.282 + 1.283 + 1.284 +# get package and version from PACKAGE_FILE 1.285 + 1.286 +parse_pkgname() { 1.287 + package=$(basename "${2:-$PACKAGE_FILE}" "$1") 1.288 + IFS='-' 1.289 + set -- $package 1.290 + unset IFS 1.291 + package="$1" 1.292 + version="$2" 1.293 + if [ -z "$version" ]; then 1.294 + package=${1%%[0-9\.]*} 1.295 + version=${1#$package} 1.296 + fi 1.297 + file="$package-$version" 1.298 + mkdir $file 1.299 +} 1.300 + 1.301 + 1.302 +finish_convert_puppy() { 1.303 + rm -f fs/*.specs 1.304 + mv fs $file 1.305 + cat > $file/receipt <<EOT 1.306 +# SliTaz package receipt. 1.307 +# generated by tazpkg from puppy package $(basename "$PACKAGE_FILE") 1.308 +PACKAGE="$package" 1.309 +VERSION="$version" 1.310 +CATEGORY="misc" 1.311 +SHORT_DESC="$desc" 1.312 +WEB_SITE="http://puppylinux.org/" 1.313 +MAINTAINER="nobody@slitaz.org" 1.314 +DEPENDS="$(find_depends)" 1.315 +EOT 1.316 + show_unresolved_lib $file/receipt 1.317 + for i in install uninstall ; do 1.318 + [ -f "$file/fs/p$i.sh" ] && cat >> $file/receipt <<EOM 1.319 + 1.320 +post_$i() 1.321 +{ 1.322 +chroot \$1/ sh - << EOT 1.323 +cd / 1.324 +$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/p$i.sh ; rm -f $file/fs/p$i.sh) 1.325 +EOT 1.326 +} 1.327 +EOM 1.328 + done 1.329 + sed -i 's/post_uninstall/post_remove/' $file/receipt 1.330 + tazpkg pack $file 1.331 + mv $file.tazpkg $TOP_DIR 1.332 + cd $TOP_DIR 1.333 + rm -rf $TMP_DIR 1.334 +} 1.335 + 1.336 + 1.337 +# convert a .sfs package to .tazpkg 1.338 + 1.339 +convert_sfs() 1.340 +{ 1.341 + [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs 1.342 + if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/pet.specs$ ; then 1.343 + _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Puppy' 1.344 + return 1 1.345 + fi 1.346 + mkdir -p $TMP_DIR 1.347 + cd $TMP_DIR 1.348 + parse_pkgname .sfs 1.349 + unsquashfs "$PACKAGE_FILE" 1.350 + mv squashfs-root fs 1.351 + set -- $(cat fs/pet.specs) 1.352 + desc="$10" 1.353 + finish_convert_puppy 1.354 +} 1.355 + 1.356 + 1.357 +# convert a .pet package to .tazpkg 1.358 + 1.359 +convert_pet() { 1.360 + mkdir -p $TMP_DIR 1.361 + cd $TMP_DIR 1.362 + parse_pkgname .pet 1.363 + tar -xzf "$PACKAGE_FILE" 2>/dev/null 1.364 + . $package*/*.specs 1.365 + desc="$PETMENUDESCR" 1.366 + mv $package*/ fs 1.367 + finish_convert_puppy 1.368 +} 1.369 + 1.370 + 1.371 +# convert a .sb package to .tazpkg 1.372 + 1.373 +convert_sb() { 1.374 + [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs 1.375 + if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/var/log/removed_scripts ; then 1.376 + _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Slax' 1.377 + return 1 1.378 + fi 1.379 + mkdir -p $TMP_DIR 1.380 + cd $TMP_DIR 1.381 + unsquashfs "$PACKAGE_FILE" 1.382 + mv squashfs-root fs 1.383 + parse_pkgname '' $(cat fs/var/log/packages/* | sed '/PACKAGE NAME:/!d;s/.*: *//') 1.384 + desc="$(cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,$!d;N;s/.*: //;q')" 1.385 + cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,/FILE LIST/!d;s/.*://;/^$/d' > $file/description.txt 1.386 + mv fs $file 1.387 + cat > $file/receipt <<EOT 1.388 +# SliTaz package receipt. 1.389 +# generated by tazpkg from slax package $(basename "$PACKAGE_FILE") 1.390 +PACKAGE="$package" 1.391 +VERSION="$version" 1.392 +CATEGORY="misc" 1.393 +SHORT_DESC="$desc" 1.394 +WEB_SITE="http://www.slax.org/" 1.395 +MAINTAINER="nobody@slitaz.org" 1.396 +DEPENDS="$(find_depends)" 1.397 +EOT 1.398 + show_unresolved_lib $file/receipt 1.399 + [ -f "$file/fs/var/log/scripts/$package*" ] && cat >> $file/receipt <<EOM 1.400 + 1.401 +post_install() 1.402 +{ 1.403 +chroot \$1/ sh - << EOT 1.404 +cd / 1.405 +$(cat $file/fs/var/log/scripts/$package* | sed -e 's/\\/\\\\/g' | sed -e 's/\$/\\$/g') 1.406 +EOT 1.407 +} 1.408 +EOM 1.409 + tazpkg pack $file 1.410 + mv $file.tazpkg $TOP_DIR 1.411 + cd $TOP_DIR 1.412 + rm -rf $TMP_DIR 1.413 +} 1.414 + 1.415 + 1.416 +# convert a .tgz package to .tazpkg 1.417 + 1.418 +convert_tgz() { 1.419 + parse_pkgname 1.420 + mkdir -p $TMP_DIR/$file/fs 1.421 + case "$PACKAGE_FILE" in 1.422 + *.txz) tar -xJf "$PACKAGE_FILE" -C $TMP_DIR/$file/fs ;; 1.423 + *.tgz) tar -xzf "$PACKAGE_FILE" -C $TMP_DIR/$file/fs ;; 1.424 + esac 1.425 + cd $TMP_DIR 1.426 + if [ -d "$file/fs/install" ]; then 1.427 + descrip=$(sed "/^$package/!d;s/.*(\\(.*\\)).*/\\1/;q" \ 1.428 + $file/fs/install/slack-desc) 1.429 + cat > $file/receipt <<EOT 1.430 +# SliTaz package receipt. 1.431 +# generated by tazpkg from slackware package $(basename "$PACKAGE_FILE") 1.432 +PACKAGE="$package" 1.433 +VERSION="$version" 1.434 +CATEGORY="misc" 1.435 +SHORT_DESC="$descrip" 1.436 +WEB_SITE="http://www.slackware.com/packages/" 1.437 +MAINTAINER="nobody@slitaz.org" 1.438 +DEPENDS="$(find_depends)" 1.439 +EOT 1.440 + show_unresolved_lib $file/receipt 1.441 + [ -f "$file/fs/install/doinst.sh" ] && cat >> $file/receipt <<EOM 1.442 + 1.443 +post_install() 1.444 +{ 1.445 +chroot \$1/ sh - << EOT 1.446 +cd / 1.447 +$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/install/doinst.sh) 1.448 +EOT 1.449 +} 1.450 +EOM 1.451 + sed "/^$package/:d;s/^$package://" \ 1.452 + $file/fs/install/slack-desc > $file/description.txt 1.453 + [ -s "$file/description.txt" ] || rm -f $file/description.txt 1.454 + rm -rf $file/fs/install 1.455 + tazpkg pack $file 1.456 + mv $file.tazpkg $TOP_DIR 1.457 + else 1.458 + _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Slackware' 1.459 + fi 1.460 + cd $TOP_DIR 1.461 + rm -rf $TMP_DIR 1.462 +} 1.463 + 1.464 + 1.465 +# convert a .deb package to .tazpkg 1.466 + 1.467 +convert_deb() { 1.468 + mkdir -p $TMP_DIR 1.469 + dpkg-deb -e "$PACKAGE_FILE" $TMP_DIR 1.470 + package=$(sed '/^ *Package:/!d;s/.*: //' $TMP_DIR/control) 1.471 + version=$(sed '/^ *Version:/!d;s/.*: //' $TMP_DIR/control) 1.472 + descrip=$(sed '/^ *Description:/!d;s/.*: //' $TMP_DIR/control) 1.473 + homepage=$(sed '/^ *Homepage:/!d;s/.*: //' $TMP_DIR/control) 1.474 + target="$(sed '/^ *Architecture:/!d;s/.*: //' $TMP_DIR/control)" 1.475 + case "$target" in 1.476 + i386|all) 1.477 + file="$package-$version" 1.478 + mkdir -p $TMP_DIR/$file/fs/ 1.479 + dpkg-deb -x "$PACKAGE_FILE" $TMP_DIR/$file/fs 1.480 + cd $TMP_DIR 1.481 + cat > $file/receipt <<EOT 1.482 +# SliTaz package receipt. 1.483 +# generated by tazpkg from debian package $(basename "$PACKAGE_FILE") 1.484 +PACKAGE="$package" 1.485 +VERSION="$version" 1.486 +CATEGORY="misc" 1.487 +SHORT_DESC="$descrip" 1.488 +WEB_SITE="${homepage:-http://packages.debian.org/search?keywords=$package}" 1.489 +MAINTAINER="nobody@slitaz.org" 1.490 +EOT 1.491 + LICENSE="$(grep /usr/share/common-licenses/ \ 1.492 + "$PACKAGE_FILE" $TMP_DIR/$file/fs/usr/share/doc/*/copyright | \ 1.493 + sed 's|.*common-licenses/\([-\.A-Za-z0-9]*\).*|\1|;s|[-\.]$||;q')" 1.494 + [ -n "$LICENSE" ] && echo "LICENSE=\"$LICENSE\"" >> $file/receipt 1.495 + echo "DEPENDS=\"$(find_depends)\"" >> $file/receipt 1.496 + [ -s 'conffiles' ] && cat >> $file/receipt <<EOT 1.497 +CONFIG_FILES="$(cat conffiles)" 1.498 +EOT 1.499 + show_unresolved_lib $file/receipt 1.500 + awk ' 1.501 +{ 1.502 + if (/^ / && show) print substr($0,2); 1.503 + else show=0; 1.504 + if (/^Description/) show=1; 1.505 +}' < $TMP_DIR/control > $file/description.txt 1.506 + sed -i 's/^\.$//' $file/description.txt 1.507 + [ -s "$file/description.txt" ] || rm -f $file/description.txt 1.508 + tazpkg pack $file 1.509 + mv $file.tazpkg $TOP_DIR 1.510 + ;; 1.511 + *) 1.512 + _ 'Invalid target: %s (expected i386)' "$target" 1.513 + ;; 1.514 + esac 1.515 + cd $TOP_DIR 1.516 + rm -rf $TMP_DIR 1.517 +} 1.518 + 1.519 + 1.520 +# convert a .rpm package to .tazpkg 1.521 + 1.522 +convert_rpm() { 1.523 + mkdir -p $TMP_DIR 1.524 + cp "$PACKAGE_FILE" $TMP_DIR 1.525 + PACKAGE_FILE="$TMP_DIR/$(basename "$PACKAGE_FILE")" 1.526 + rpm -qip "$PACKAGE_FILE" | awk -v pkg="$(basename "$PACKAGE_FILE")" ' 1.527 +BEGIN { 1.528 + goturl=0; 1.529 + printf "# SliTaz package receipt.\n"; 1.530 + printf "# generated by tazpkg from rpm package %s\n",pkg; 1.531 +} 1.532 +{ 1.533 + if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n",$3; } 1.534 + if (/^Version/) printf "VERSION=\"%s-",$3; 1.535 + if (/^Release/) printf "%s\"\n",$3; 1.536 + if (/^Summary/) printf "SHORT_DESC=\"%s\"\n",substr($0,15); 1.537 + if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n",$3; } 1.538 +} 1.539 +END { 1.540 + if (goturl == 0) 1.541 + printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name; 1.542 + printf "CATEGORY=\"misc\"\n"; 1.543 + printf "MAINTAINER=\"nobody@slitaz.org\"\n"; 1.544 +} 1.545 +' > $TMP_DIR/receipt 1.546 + . $TMP_DIR/receipt 1.547 + file="$PACKAGE-$VERSION" 1.548 + mkdir -p $TMP_DIR/$file/fs/ 1.549 + mv $TMP_DIR/receipt $TMP_DIR/$file 1.550 + rpm -qip "$PACKAGE_FILE" | awk ' 1.551 +BEGIN { show=0 } 1.552 +{ 1.553 + if (show) print; 1.554 + if (/^Description/) show=1; 1.555 +} 1.556 +' > $TMP_DIR/$file/description.txt 1.557 + cd $TMP_DIR/$file/fs/ 1.558 + rpm2cpio "$PACKAGE_FILE" | cpio -idm --quiet 1.559 + # rpm2cpio can't extract some new RPMs 1.560 + if [ $? -eq 1 ]; then 1.561 + if [ ! -e $INSTALLED/p7zip-full/receipt ]; then 1.562 + boldify "$(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')" 1.563 + confirm "$(_n 'Do you want to install "%s" package? (y/N)' 'p7zip-full')" 1.564 + if [ $? -eq 0 ]; then 1.565 + tazpkg -gi p7zip-full 1.566 + else 1.567 + rm -rf $TMP_DIR 1.568 + exit 1 1.569 + fi 1.570 + fi 1.571 + # we may already have 7z or may have just installed it in the step above 1.572 + if [ -e "$INSTALLED/p7zip-full/receipt" ]; then 1.573 + 7z x -so "$PACKAGE_FILE" | cpio -idm --quiet 1.574 + fi 1.575 + fi 1.576 + cd ../.. 1.577 + echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/$file/receipt 1.578 + show_unresolved_lib $TMP_DIR/$file/receipt 1.579 + tazpkg pack $file 1.580 + mv $file.tazpkg $TOP_DIR 1.581 + cd $TOP_DIR 1.582 + rm -rf $TMP_DIR 1.583 +} 1.584 + 1.585 + 1.586 +# convert a .xbps package to .tazpkg (http://repo.voidlinux.eu/current/) 1.587 + 1.588 +xbpstag() { 1.589 + sed "/<key>$1<\/key>/!d{n;s/.*>\\(.*\\)<.*/\\1/}" \ 1.590 + < fs/props.plist | sed \$!d 1.591 +} 1.592 + 1.593 +convert_xbps() { 1.594 + mkdir -p $TMP_DIR/fs 1.595 + ( xzcat "$PACKAGE_FILE" || bzcat "$PACKAGE_FILE" || zcat "$PACKAGE_FILE" ) | \ 1.596 + tar -xf - -C $TMP_DIR/fs 1.597 + 1.598 + cd $TMP_DIR 1.599 + HOST_ARCH="$(xbpstag architecture)" 1.600 + case "$HOST_ARCH" in 1.601 + i686) HOST_ARCH='i486';; 1.602 + *) _ 'Arch "%s" not supported.' "$HOST_ARCH" 1.603 + HOST_ARCH='';; 1.604 + esac 1.605 + 1.606 + if [ -n "$HOST_ARCH" ]; then 1.607 + package="$(xbpstag pkgname)" 1.608 + version="$(xbpstag version)" 1.609 + file="$package-$version" 1.610 + mkdir $file 1.611 + cat > $file/receipt <<EOT 1.612 +# SliTaz package receipt. 1.613 +# generated by tazpkg from package $(basename "$PACKAGE_FILE") 1.614 +PACKAGE="$package" 1.615 +VERSION="$version" 1.616 +CATEGORY="misc" 1.617 +SHORT_DESC="$(xbpstag short_desc)" 1.618 +WEB_SITE="$(xbpstag homepage)" 1.619 +MAINTAINER="$(xbpstag maintainer | sed 's/>/>/;s/</</')" 1.620 +LICENSE="$(xbpstag license | sed 's/-//g')" 1.621 +HOST_ARCH="$HOST_ARCH" 1.622 +CONFIG_FILES="$(sed '/<key>conf_files<\/key>/,/<key>/!d;/array>/d;/<key>/d;s/.*>\(.*\)<.*/\1/' fs/props.plist)" 1.623 + 1.624 +DEPENDS="$(find_depends)" 1.625 + 1.626 +EOT 1.627 + while read script func ; do 1.628 + [ -s "fs/$script" ] && cat >> $file/receipt <<EOT 1.629 +xbps_$func() 1.630 +{ 1.631 +set +e 1.632 +$(cat fs/$script) 1.633 +} 1.634 + 1.635 +pre_$func() 1.636 +{ 1.637 + xbps_$func pre $package $version yes /etc/xbps.conf $HOST_ARCH 1.638 +} 1.639 + 1.640 +post_$func() 1.641 +{ 1.642 + xbps_$func post $package $version yes /etc/xbps.conf $HOST_ARCH 1.643 +} 1.644 + 1.645 +EOT 1.646 + rm -f fs/$script 1.647 + done <<EOT 1.648 +INSTALL install 1.649 +REMOVE remove 1.650 +EOT 1.651 + rm -f fs/*.plist 1.652 + mv fs $package-$version 1.653 + tazpkg pack $package-$version 1.654 + mv $package-$version.tazpkg $TOP_DIR 1.655 + fi 1.656 + cd $TOP_DIR 1.657 + rm -rf $TMP_DIR 1.658 +} 1.659 + 1.660 + 1.661 +finish_convert_tinycore() { 1.662 + cat > $file/receipt <<EOT 1.663 +# SliTaz package receipt. 1.664 +# generated by tazpkg from tinycore package $(basename "$PACKAGE_FILE") 1.665 +PACKAGE="$package" 1.666 +VERSION="$version" 1.667 +CATEGORY="misc" 1.668 +SHORT_DESC="tinycore package $(basename "$PACKAGE_FILE")" 1.669 +WEB_SITE="http://tinycorelinux.net/" 1.670 +MAINTAINER="nobody@slitaz.org" 1.671 +DEPENDS="$(find_depends)" 1.672 +EOT 1.673 + show_unresolved_lib $file/receipt 1.674 + script="$file/fs/usr/local/tce.installed/$PACKAGE" 1.675 + [ -f "$script" ] && cat >> $file/receipt <<EOM 1.676 + 1.677 +post_install() 1.678 +{ 1.679 +chroot \$1/ sh - << EOT 1.680 +cd / 1.681 +$(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $script) 1.682 +EOT 1.683 +} 1.684 +EOM 1.685 + [ -d "$file/fs/usr/local/tce.installed" ] && 1.686 + rm -rf $file/fs/usr/local/tce.installed 1.687 + tazpkg pack $file 1.688 + mv $file.tazpkg $TOP_DIR 1.689 + cd $TOP_DIR 1.690 + rm -rf $TMP_DIR 1.691 +} 1.692 + 1.693 + 1.694 +# convert a .tce package to .tazpkg 1.695 + 1.696 +convert_tce() { 1.697 + if ! tar -tzf "$PACKAGE_FILE" | grep -q ^usr/local ; then 1.698 + _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore' 1.699 + return 1 1.700 + fi 1.701 + mkdir -p $TMP_DIR 1.702 + cd $TMP_DIR 1.703 + case "$PACKAGE_FILE" in 1.704 + *.tcel) parse_pkgname .tcel ;; 1.705 + *.tcem) parse_pkgname .tcem ;; 1.706 + *) parse_pkgname .tce ;; 1.707 + esac 1.708 + mkdir -p $file/fs 1.709 + tar -xzf "$PACKAGE_FILE" -C $file/fs 1.710 + finish_convert_tinycore 1.711 +} 1.712 + 1.713 + 1.714 +# convert a .tcz package to .tazpkg 1.715 + 1.716 +convert_tcz() { 1.717 + [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs 1.718 + if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/$ ; then 1.719 + _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore' 1.720 + return 1 1.721 + fi 1.722 + mkdir -p $TMP_DIR 1.723 + cd $TMP_DIR 1.724 + parse_pkgname .tcz 1.725 + unsquashfs "$PACKAGE_FILE" 1.726 + mv squashfs-root $file/fs 1.727 + finish_convert_tinycore 1.728 +} 1.729 + 1.730 + 1.731 +if [ "$(dd if="$PACKAGE_FILE" bs=8 count=1 skip=1 2>/dev/null)" == 'debian-b' ]; then 1.732 + convert_deb 1.733 +else 1.734 + case "$PACKAGE_FILE" in 1.735 + *.deb|*.udeb) convert_deb;; 1.736 + *.rpm) convert_rpm;; 1.737 + *.sb) convert_sb;; 1.738 + *.sfs) convert_sfs;; 1.739 + *.pet) convert_pet;; 1.740 + *.txz|*.tgz) convert_tgz;; 1.741 + *.cards.tar.xz) convert_nutyx;; 1.742 + *.apk|*.pkg.tar.gz|*.pkg.tar.xz) convert_arch;; 1.743 + *.ipk|*.opk) convert_ipk;; 1.744 + *.spack) convert_spack;; 1.745 + *.tar.bz2) convert_upkg;; 1.746 + *.xbps) convert_xbps;; 1.747 + *.tce|*.tcel|*.tcem) convert_tce;; 1.748 + *.tcz) convert_tcz;; 1.749 + *) _ 'Unsupported format';; 1.750 + esac 1.751 +fi 1.752 + 1.753 +exit 0