tazpkg annotate modules/convert @ rev 846

Remove "busybox" "prefixes" (thanks llev)
We used "busybox wget", etc. to be sure we called Busybox's "wget", not any other "wget". Workaround already done in "getenv" module.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Oct 09 13:14:01 2015 +0300 (2015-10-09)
parents a02e36d44d06
children 879df9728956
rev   line source
al@822 1 #!/bin/sh
al@828 2 # TazPkg - Tiny autonomous zone packages manager, hg.slitaz.org/tazpkg
al@828 3 # convert - TazPkg module
al@828 4 # Toolset to convert alien package to the tazpkg format
al@822 5
al@822 6
al@822 7 # Usage: tazpkg-convert alien_package [ target_directory ]
al@822 8
al@822 9
al@822 10 PACKAGE_FILE="$1"
al@822 11 TARGET_DIR="$2"
al@822 12 TMP_DIR=$(mktemp -d)
al@822 13 TOP_DIR="$(pwd)"
al@822 14
al@822 15 . @@MODULES@@/find-depends
al@822 16
al@846 17 # Get TazPkg working environment
al@846 18 . @@MODULES@@/getenv
al@822 19
al@822 20
al@822 21 # FIXME: what does this mean?
al@822 22 [ -n "$TARGET_DIR" -a -s "$TARGET_DIR/files.list.lzma" ] && TMPLOCALSTATE="$TARGET_DIR"
al@822 23
al@822 24
al@822 25 show_unresolved_lib() {
al@822 26 if [ -s "$TMP_DIR/unresolved" ]; then
al@822 27 echo -e "BUGS=\"$(_n 'No dependency for:')" >> $1
al@822 28 sort < $TMP_DIR/unresolved | uniq | \
al@822 29 while read file; do
al@822 30 _ 'WARNING: unknown dependency for %s' "$lib"
al@822 31 echo -n " $file" >> $1
al@822 32 done
al@822 33 echo "\"" >> $1
al@822 34 fi
al@822 35 }
al@822 36
al@822 37
al@822 38 # convert a .tar.bz2 package to .tazpkg
al@822 39
al@822 40 convert_upkg() {
al@840 41 mkdir -p "$TMP_DIR/fs"
al@840 42 tar -xjf "$PACKAGE_FILE" -C "$TMP_DIR/fs"
al@822 43 if [ -d "$TMP_DIR/fs/var/lib/upkg/packages" ]; then
al@840 44 cd "$TMP_DIR"
al@840 45 package=$(sed '/^Package:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)
al@840 46 version=$(sed '/^Version:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)
al@822 47 url='http://www.paldo.org/'
al@822 48 file="$package-$version"
al@840 49 mkdir "$file"
al@840 50 mv fs "$file"
al@822 51 maintainer='nobody@slitaz.org'
al@822 52 descrip="$package package from paldo."
al@840 53 cat > "$file/receipt" <<EOT
al@822 54 # SliTaz package receipt.
al@822 55 # generated by tazpkg from package $(basename "$PACKAGE_FILE")
al@822 56 PACKAGE="$package"
al@822 57 VERSION="$version"
al@822 58 CATEGORY="misc"
al@822 59 SHORT_DESC="$descrip"
al@822 60 WEB_SITE="$url"
al@822 61 MAINTAINER="$maintainer"
al@822 62 DEPENDS="$(find_depends)"
al@822 63 EOT
al@822 64 [ -s "$file/var/lib/upkg/files/*.config.bz2" ] &&
al@840 65 cat >> "$file/receipt" <<EOT
al@822 66 CONFIG_FILES="$(bzcat $file/var/lib/upkg/files/*.config.bz2)"
al@822 67 EOT
al@840 68 while read ext func; do
al@822 69 [ -s "$file/fs/var/lib/upkg/scripts/*.$ext" ] || continue
al@840 70 cat >> "$file/receipt" <<EOT
al@822 71
al@822 72 $func()
al@822 73 {
al@822 74 $(cat $file/fs/var/lib/upkg/scripts/*.$ext)
al@822 75 }
al@822 76 EOT
al@822 77 done <<EOT
al@822 78 prerm pre_remove
al@822 79 EOT
al@822 80
al@840 81 tazpkg pack "$file"
al@840 82 mv "$TMP_DIR/$file.tazpkg" "$TOP_DIR"
al@822 83 else
al@822 84 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'upkg'
al@822 85 fi
al@840 86 cd "$TOP_DIR"
al@840 87 rm -rf "$TMP_DIR"
al@822 88 }
al@822 89
al@822 90
al@822 91 # convert a .spack package to .tazpkg
al@822 92
al@822 93 convert_spack() {
al@840 94 mkdir -p "$TMP_DIR"
al@840 95 ( cd "$TMP_DIR"; cpio -i ) < "$PACKAGE_FILE"
al@840 96 cd "$TMP_DIR"
al@840 97 package=$(sed '$!d;s/:.*//' about.txt)
al@840 98 version=$(basename "$PACKAGE_FILE" | sed "s/$package-\([^-]*\).*/\1/")
al@840 99 descrip=$(sed '$!d;s/.*: //' about.txt)
al@822 100 url='http://0linux.org/'
al@822 101 maintainer='nobody@slitaz.org'
al@822 102 file="$package-$version"
al@840 103 mkdir -p "$file/fs"
al@840 104 xzcat files.xz | ( cd "$file/fs"; cpio -idmu )
al@840 105 cat > "$file/receipt" <<EOT
al@822 106 # SliTaz package receipt.
al@822 107 # generated by tazpkg from package $(basename "$PACKAGE_FILE")
al@822 108 PACKAGE="$package"
al@822 109 VERSION="$version"
al@822 110 CATEGORY="misc"
al@822 111 SHORT_DESC="$descrip"
al@822 112 WEB_SITE="$url"
al@822 113 MAINTAINER="$maintainer"
al@822 114 DEPENDS="$(find_depends)"
al@822 115 EOT
al@840 116 [ -s 'pre-install.sh' ] && cat >> "$file/receipt" <<EOT
al@822 117
al@822 118 pre_install()
al@822 119 {
al@822 120 cd /
al@822 121 $(sed 1d pre-install.sh)
al@822 122 }
al@822 123 EOT
al@840 124 [ -s 'post-install.sh' ] && cat >> "$file/receipt" <<EOT
al@822 125
al@822 126 post_install()
al@822 127 {
al@822 128 cd /
al@822 129 $(sed '1,/^}/d' post-install.sh)
al@822 130 }
al@822 131 EOT
al@840 132 tazpkg pack "$file"
al@840 133 cd "$TOP_DIR"
al@840 134 mv "$TMP_DIR/$file.tazpkg" .
al@840 135 rm -rf "$TMP_DIR"
al@822 136 }
al@822 137
al@822 138
al@822 139 # convert a .ipk package to .tazpkg
al@822 140
al@822 141 convert_ipk() {
al@840 142 mkdir -p "$TMP_DIR"
al@840 143 tar -xOzf "$PACKAGE_FILE" ./control.tar.gz | tar -xzf - -C "$TMP_DIR"
al@840 144 package=$( sed '/^Package/!d;s/.*: //' "$TMP_DIR/control")
al@840 145 version=$( sed '/^Version/!d;s/.*: //' "$TMP_DIR/control")
al@840 146 maintainer=$(sed '/^Maintainer/!d;s/.*: //' "$TMP_DIR/control")
al@840 147 target=$( sed '/^Architecture/!d;s/.*: //' "$TMP_DIR/control")
al@840 148 descrip=$( sed '/^Description/!d;s/.*: //' "$TMP_DIR/control")
al@840 149 homepage=$( sed '/^Homepage/!d;s/.*: //' "$TMP_DIR/control")
al@822 150 url='http://openwrt.org/'
al@822 151 case "$target" in
al@822 152 i386|all)
al@822 153 file="$package-$version"
al@840 154 mkdir -p "$TMP_DIR/$file/fs"
al@840 155 tar -xOzf "$PACKAGE_FILE" ./data.tar.gz | tar -xzf - -C "$TMP_DIR/$file/fs"
al@840 156 cd "$TMP_DIR"
al@840 157 cat > "$file/receipt" <<EOT
al@822 158 # SliTaz package receipt.
al@822 159 # generated by tazpkg from package $(basename "$PACKAGE_FILE")
al@822 160 PACKAGE="$package"
al@822 161 VERSION="$version"
al@822 162 CATEGORY="misc"
al@822 163 SHORT_DESC="$descrip"
al@822 164 WEB_SITE="${homepage:-$url}"
al@822 165 MAINTAINER="$maintainer"
al@822 166 DEPENDS="$(find_depends)"
al@822 167 EOT
al@840 168 show_unresolved_lib "$file/receipt"
al@840 169 [ -s 'conffiles' ] && cat >> "$file/receipt" <<EOT
al@840 170 CONFIG_FILES=$(cat conffiles)
al@822 171 EOT
al@840 172 show_unresolved_lib "$file/receipt"
al@822 173 while read script func; do
al@840 174 [ -s "$script" ] && cat >> "$file/receipt" <<EOT
al@822 175
al@822 176 $func()
al@822 177 {
al@840 178 $(cat "$script")
al@822 179 }
al@822 180 EOT
al@822 181 done <<EOT
al@822 182 preinst pre_install
al@822 183 postinst post_install
al@822 184 prerm pre_remove
al@822 185 postrm post_remove
al@822 186 EOT
al@822 187 awk '
al@822 188 {
al@840 189 if (/^ / && show)
al@840 190 print substr($0,2);
al@840 191 else
al@840 192 show=0;
al@840 193 if (/^Description/)
al@840 194 show=1;
al@840 195 }' < "$TMP_DIR/control" > "$file/description.txt"
al@840 196 sed -i 's/^\.$//' "$file/description.txt"
al@840 197 [ -s "$file/description.txt" ] || rm -f "$file/description.txt"
al@840 198 tazpkg pack "$file"
al@840 199 cd "$TOP_DIR"
al@840 200 mv "$TMP_DIR/$file.tazpkg" .
al@822 201 ;;
al@822 202 *)
al@822 203 _ 'Invalid target: %s (expected i386)' "$target"
al@822 204 ;;
al@822 205 esac
al@840 206 rm -rf "$TMP_DIR"
al@822 207 }
al@822 208
al@822 209
al@822 210 # convert a .cards.tar.xz package to .tazpkg
al@822 211
al@822 212 convert_nutyx() {
al@840 213 mkdir -p "$TMP_DIR/fs"
al@846 214 tar -xf "$PACKAGE_FILE" -C "$TMP_DIR/fs"
al@822 215 if [ -f "$TMP_DIR/fs/.META" ]; then
al@840 216 package=$(sed '/^N/!d;s/^.//' fs/.META)
al@840 217 version=$(sed '/^V/!d;s/^.//' fs/.META)
al@840 218 descrip=$(sed '/^D/!d;s/^.//' fs/.META)
al@822 219 file="$package-$version"
al@840 220 mkdir "$file"
al@840 221 mv fs "$file"
al@840 222 cat > "$file/receipt" <<EOT
al@822 223 # SliTaz package receipt.
al@822 224 # generated by tazpkg from NuTyX package $(basename "$PACKAGE_FILE")
al@822 225 PACKAGE="$package"
al@822 226 VERSION="$version"
al@822 227 CATEGORY="misc"
al@822 228 SHORT_DESC="$descrip"
al@822 229 WEB_SITE="http://www.nutyx.org/"
al@822 230 MAINTAINER="nobody@slitaz.org"
al@822 231 DEPENDS="$(find_depends)"
al@822 232 EOT
al@840 233 show_unresolved_lib "$file/receipt"
al@840 234 rm -f "$file/fs/".[A-Z]*
al@840 235 tazpkg pack "$file"
al@840 236 mv "$file.tazpkg" "$TOP_DIR"
al@822 237 else
al@822 238 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'NuTyX'
al@822 239 fi
al@840 240 cd "$TOP_DIR"
al@840 241 rm -rf "$TMP_DIR"
al@822 242 }
al@822 243
al@822 244
al@822 245 # convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg
al@822 246
al@822 247 convert_arch() {
al@840 248 mkdir -p "$TMP_DIR/fs"
al@846 249 tar -xf "$PACKAGE_FILE" -C "$TMP_DIR/fs"
al@822 250 if [ -f "$TMP_DIR/fs/.PKGINFO" ]; then
al@840 251 cd "$TMP_DIR"
al@840 252 package=$( sed '/^pkgname/!d;s/.*= //' fs/.PKGINFO)
al@840 253 version=$( sed '/^pkgver/!d;s/.*= //' fs/.PKGINFO)
al@840 254 descrip=$( sed '/^pkgdesc/!d;s/.*= //' fs/.PKGINFO)
al@840 255 url=$( sed '/^url/!d;s/.*= //' fs/.PKGINFO)
al@840 256 maintainer=$(sed '/^packager/!d;s/.*= //' fs/.PKGINFO)
al@822 257 file="$package-$version"
al@840 258 mkdir "$file"
al@840 259 mv fs "$file"
al@840 260 cat > "$file/receipt" <<EOT
al@822 261 # SliTaz package receipt.
al@822 262 # generated by tazpkg from Archlinux package $(basename "$PACKAGE_FILE")
al@822 263 PACKAGE="$package"
al@822 264 VERSION="$version"
al@822 265 CATEGORY="misc"
al@822 266 SHORT_DESC="$descrip"
al@822 267 WEB_SITE="$url"
al@822 268 MAINTAINER="$maintainer"
al@822 269 DEPENDS="$(find_depends)"
al@822 270 EOT
al@840 271 show_unresolved_lib "$file/receipt"
al@840 272 rm -f "$file/fs/".[A-Z]*
al@840 273 tazpkg pack "$file"
al@840 274 mv "$file.tazpkg" "$TOP_DIR"
al@822 275 else
al@822 276 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Archlinux/Alpine'
al@822 277 fi
al@840 278 cd "$TOP_DIR"
al@840 279 rm -rf "$TMP_DIR"
al@822 280 }
al@822 281
al@822 282
al@822 283 # get package and version from PACKAGE_FILE
al@822 284
al@822 285 parse_pkgname() {
al@822 286 package=$(basename "${2:-$PACKAGE_FILE}" "$1")
al@822 287 IFS='-'
al@840 288 set -- "$package"
al@822 289 unset IFS
al@822 290 package="$1"
al@822 291 version="$2"
al@822 292 if [ -z "$version" ]; then
al@822 293 package=${1%%[0-9\.]*}
al@822 294 version=${1#$package}
al@822 295 fi
al@822 296 file="$package-$version"
al@840 297 mkdir "$file"
al@822 298 }
al@822 299
al@822 300
al@822 301 finish_convert_puppy() {
al@822 302 rm -f fs/*.specs
al@840 303 mv fs "$file"
al@840 304 cat > "$file/receipt" <<EOT
al@822 305 # SliTaz package receipt.
al@822 306 # generated by tazpkg from puppy package $(basename "$PACKAGE_FILE")
al@822 307 PACKAGE="$package"
al@822 308 VERSION="$version"
al@822 309 CATEGORY="misc"
al@822 310 SHORT_DESC="$desc"
al@822 311 WEB_SITE="http://puppylinux.org/"
al@822 312 MAINTAINER="nobody@slitaz.org"
al@822 313 DEPENDS="$(find_depends)"
al@822 314 EOT
al@840 315 show_unresolved_lib "$file/receipt"
al@840 316 for i in install uninstall; do
al@840 317 [ -f "$file/fs/p$i.sh" ] && cat >> "$file/receipt" <<EOM
al@822 318
al@822 319 post_$i()
al@822 320 {
al@822 321 chroot \$1/ sh - << EOT
al@822 322 cd /
al@840 323 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < "$file/fs/p$i.sh" ; rm -f "$file/fs/p$i.sh")
al@822 324 EOT
al@822 325 }
al@822 326 EOM
al@822 327 done
al@840 328 sed -i 's/post_uninstall/post_remove/' "$file/receipt"
al@840 329 tazpkg pack "$file"
al@840 330 mv "$file.tazpkg" "$TOP_DIR"
al@840 331 cd "$TOP_DIR"
al@840 332 rm -rf "$TMP_DIR"
al@822 333 }
al@822 334
al@822 335
al@822 336 # convert a .sfs package to .tazpkg
al@822 337
al@840 338 convert_sfs() {
al@822 339 [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
al@822 340 if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/pet.specs$ ; then
al@822 341 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Puppy'
al@822 342 return 1
al@822 343 fi
al@840 344 mkdir -p "$TMP_DIR"
al@840 345 cd "$TMP_DIR"
al@822 346 parse_pkgname .sfs
al@822 347 unsquashfs "$PACKAGE_FILE"
al@822 348 mv squashfs-root fs
al@822 349 set -- $(cat fs/pet.specs)
al@822 350 desc="$10"
al@822 351 finish_convert_puppy
al@822 352 }
al@822 353
al@822 354
al@822 355 # convert a .pet package to .tazpkg
al@822 356
al@822 357 convert_pet() {
al@840 358 mkdir -p "$TMP_DIR"
al@840 359 cd "$TMP_DIR"
al@822 360 parse_pkgname .pet
al@822 361 tar -xzf "$PACKAGE_FILE" 2>/dev/null
al@840 362 . "$package"*/*.specs
al@822 363 desc="$PETMENUDESCR"
al@840 364 mv "$package"*/ fs
al@822 365 finish_convert_puppy
al@822 366 }
al@822 367
al@822 368
al@822 369 # convert a .sb package to .tazpkg
al@822 370
al@822 371 convert_sb() {
al@822 372 [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
al@822 373 if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/var/log/removed_scripts ; then
al@822 374 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Slax'
al@822 375 return 1
al@822 376 fi
al@840 377 mkdir -p "$TMP_DIR"
al@840 378 cd "$TMP_DIR"
al@822 379 unsquashfs "$PACKAGE_FILE"
al@822 380 mv squashfs-root fs
al@822 381 parse_pkgname '' $(cat fs/var/log/packages/* | sed '/PACKAGE NAME:/!d;s/.*: *//')
al@822 382 desc="$(cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,$!d;N;s/.*: //;q')"
al@840 383 cat fs/var/log/packages/* | sed '/^PACKAGE DESCRIPTION:/,/FILE LIST/!d;s/.*://;/^$/d' > "$file/description.txt"
al@840 384 mv fs "$file"
al@840 385 cat > "$file/receipt" <<EOT
al@822 386 # SliTaz package receipt.
al@822 387 # generated by tazpkg from slax package $(basename "$PACKAGE_FILE")
al@822 388 PACKAGE="$package"
al@822 389 VERSION="$version"
al@822 390 CATEGORY="misc"
al@822 391 SHORT_DESC="$desc"
al@822 392 WEB_SITE="http://www.slax.org/"
al@822 393 MAINTAINER="nobody@slitaz.org"
al@822 394 DEPENDS="$(find_depends)"
al@822 395 EOT
al@840 396 show_unresolved_lib "$file/receipt"
al@840 397 [ -f "$file/fs/var/log/scripts/$package"* ] && cat >> "$file/receipt" <<EOM
al@822 398
al@822 399 post_install()
al@822 400 {
al@822 401 chroot \$1/ sh - << EOT
al@822 402 cd /
al@840 403 $(cat "$file/fs/var/log/scripts/$package"* | sed -e 's/\\/\\\\/g' | sed -e 's/\$/\\$/g')
al@822 404 EOT
al@822 405 }
al@822 406 EOM
al@840 407 tazpkg pack "$file"
al@840 408 mv "$file.tazpkg" "$TOP_DIR"
al@840 409 cd "$TOP_DIR"
al@840 410 rm -rf "$TMP_DIR"
al@822 411 }
al@822 412
al@822 413
al@822 414 # convert a .tgz package to .tazpkg
al@822 415
al@822 416 convert_tgz() {
al@822 417 parse_pkgname
al@840 418 mkdir -p "$TMP_DIR/$file/fs"
al@822 419 case "$PACKAGE_FILE" in
al@840 420 *.txz) tar -xJf "$PACKAGE_FILE" -C "$TMP_DIR/$file/fs" ;;
al@840 421 *.tgz) tar -xzf "$PACKAGE_FILE" -C "$TMP_DIR/$file/fs" ;;
al@822 422 esac
al@840 423 cd "$TMP_DIR"
al@822 424 if [ -d "$file/fs/install" ]; then
al@822 425 descrip=$(sed "/^$package/!d;s/.*(\\(.*\\)).*/\\1/;q" \
al@840 426 "$file/fs/install/slack-desc")
al@840 427 cat > "$file/receipt" <<EOT
al@822 428 # SliTaz package receipt.
al@822 429 # generated by tazpkg from slackware package $(basename "$PACKAGE_FILE")
al@822 430 PACKAGE="$package"
al@822 431 VERSION="$version"
al@822 432 CATEGORY="misc"
al@822 433 SHORT_DESC="$descrip"
al@822 434 WEB_SITE="http://www.slackware.com/packages/"
al@822 435 MAINTAINER="nobody@slitaz.org"
al@822 436 DEPENDS="$(find_depends)"
al@822 437 EOT
al@840 438 show_unresolved_lib "$file/receipt"
al@840 439 [ -f "$file/fs/install/doinst.sh" ] && cat >> "$file/receipt" <<EOM
al@822 440
al@822 441 post_install()
al@822 442 {
al@822 443 chroot \$1/ sh - << EOT
al@822 444 cd /
al@840 445 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < "$file/fs/install/doinst.sh")
al@822 446 EOT
al@822 447 }
al@822 448 EOM
al@822 449 sed "/^$package/:d;s/^$package://" \
al@840 450 "$file/fs/install/slack-desc" > "$file/description.txt"
al@840 451 [ -s "$file/description.txt" ] || rm -f "$file/description.txt"
al@840 452 rm -rf "$file/fs/install"
al@840 453 tazpkg pack "$file"
al@840 454 mv "$file.tazpkg" "$TOP_DIR"
al@822 455 else
al@822 456 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Slackware'
al@822 457 fi
al@840 458 cd "$TOP_DIR"
al@840 459 rm -rf "$TMP_DIR"
al@822 460 }
al@822 461
al@822 462
al@822 463 # convert a .deb package to .tazpkg
al@822 464
al@822 465 convert_deb() {
al@840 466 mkdir -p "$TMP_DIR"
al@840 467 dpkg-deb -e "$PACKAGE_FILE" "$TMP_DIR"
al@840 468 package=$( sed '/^ *Package:/!d;s/.*: //' "$TMP_DIR/control")
al@840 469 version=$( sed '/^ *Version:/!d;s/.*: //' "$TMP_DIR/control")
al@840 470 descrip=$( sed '/^ *Description:/!d;s/.*: //' "$TMP_DIR/control")
al@840 471 homepage=$(sed '/^ *Homepage:/!d;s/.*: //' "$TMP_DIR/control")
al@840 472 target=$( sed '/^ *Architecture:/!d;s/.*: //' "$TMP_DIR/control")
al@822 473 case "$target" in
al@822 474 i386|all)
al@822 475 file="$package-$version"
al@840 476 mkdir -p "$TMP_DIR/$file/fs/"
al@840 477 dpkg-deb -x "$PACKAGE_FILE" "$TMP_DIR/$file/fs"
al@840 478 cd "$TMP_DIR"
al@840 479 cat > "$file/receipt" <<EOT
al@822 480 # SliTaz package receipt.
al@822 481 # generated by tazpkg from debian package $(basename "$PACKAGE_FILE")
al@822 482 PACKAGE="$package"
al@822 483 VERSION="$version"
al@822 484 CATEGORY="misc"
al@822 485 SHORT_DESC="$descrip"
al@822 486 WEB_SITE="${homepage:-http://packages.debian.org/search?keywords=$package}"
al@822 487 MAINTAINER="nobody@slitaz.org"
al@822 488 EOT
al@840 489 LICENSE=$(grep /usr/share/common-licenses/ \
al@840 490 "$PACKAGE_FILE" "$TMP_DIR/$file/fs/usr/share/doc/"*"/copyright" | \
al@840 491 sed 's|.*common-licenses/\([-\.A-Za-z0-9]*\).*|\1|;s|[-\.]$||;q')
al@840 492 [ -n "$LICENSE" ] && echo "LICENSE=\"$LICENSE\"" >> "$file/receipt"
al@840 493 echo "DEPENDS=\"$(find_depends)\"" >> "$file/receipt"
al@840 494 [ -s 'conffiles' ] && cat >> "$file/receipt" <<EOT
al@822 495 CONFIG_FILES="$(cat conffiles)"
al@822 496 EOT
al@840 497 show_unresolved_lib "$file/receipt"
al@822 498 awk '
al@822 499 {
al@840 500 if (/^ / && show)
al@840 501 print substr($0,2);
al@840 502 else
al@840 503 show=0;
al@840 504 if (/^Description/)
al@840 505 show=1;
al@840 506 }' < "$TMP_DIR/control" > "$file/description.txt"
al@840 507 sed -i 's/^\.$//' "$file/description.txt"
al@840 508 [ -s "$file/description.txt" ] || rm -f "$file/description.txt"
al@840 509 tazpkg pack "$file"
al@840 510 mv "$file.tazpkg" "$TOP_DIR"
al@822 511 ;;
al@822 512 *)
al@822 513 _ 'Invalid target: %s (expected i386)' "$target"
al@822 514 ;;
al@822 515 esac
al@840 516 cd "$TOP_DIR"
al@840 517 rm -rf "$TMP_DIR"
al@822 518 }
al@822 519
al@822 520
al@822 521 # convert a .rpm package to .tazpkg
al@822 522
al@822 523 convert_rpm() {
al@840 524 mkdir -p "$TMP_DIR"
al@840 525 cp "$PACKAGE_FILE" "$TMP_DIR"
al@822 526 PACKAGE_FILE="$TMP_DIR/$(basename "$PACKAGE_FILE")"
al@822 527 rpm -qip "$PACKAGE_FILE" | awk -v pkg="$(basename "$PACKAGE_FILE")" '
al@822 528 BEGIN {
al@822 529 goturl=0;
al@822 530 printf "# SliTaz package receipt.\n";
al@840 531 printf "# generated by tazpkg from rpm package %s\n", pkg;
al@822 532 }
al@822 533 {
al@840 534 if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n", $3; }
al@840 535 if (/^Version/) printf "VERSION=\"%s-", $3;
al@840 536 if (/^Release/) printf "%s\"\n", $3;
al@840 537 if (/^Summary/) printf "SHORT_DESC=\"%s\"\n", substr($0, 15);
al@840 538 if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n", $3; }
al@822 539 }
al@822 540 END {
al@822 541 if (goturl == 0)
al@822 542 printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name;
al@822 543 printf "CATEGORY=\"misc\"\n";
al@822 544 printf "MAINTAINER=\"nobody@slitaz.org\"\n";
al@822 545 }
al@840 546 ' > "$TMP_DIR/receipt"
al@840 547 . "$TMP_DIR/receipt"
al@822 548 file="$PACKAGE-$VERSION"
al@840 549 mkdir -p "$TMP_DIR/$file/fs/"
al@840 550 mv "$TMP_DIR/receipt" "$TMP_DIR/$file"
al@822 551 rpm -qip "$PACKAGE_FILE" | awk '
al@822 552 BEGIN { show=0 }
al@822 553 {
al@840 554 if (show) print;
al@840 555 if (/^Description/) show=1;
al@822 556 }
al@840 557 ' > "$TMP_DIR/$file/description.txt"
al@840 558 cd "$TMP_DIR/$file/fs/"
al@822 559 rpm2cpio "$PACKAGE_FILE" | cpio -idm --quiet
al@822 560 # rpm2cpio can't extract some new RPMs
al@822 561 if [ $? -eq 1 ]; then
al@840 562 if [ ! -e "$INSTALLED/p7zip-full/receipt" ]; then
al@822 563 boldify "$(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')"
al@822 564 confirm "$(_n 'Do you want to install "%s" package? (y/N)' 'p7zip-full')"
al@822 565 if [ $? -eq 0 ]; then
al@822 566 tazpkg -gi p7zip-full
al@822 567 else
al@840 568 rm -rf "$TMP_DIR"
al@822 569 exit 1
al@822 570 fi
al@822 571 fi
al@822 572 # we may already have 7z or may have just installed it in the step above
al@822 573 if [ -e "$INSTALLED/p7zip-full/receipt" ]; then
al@822 574 7z x -so "$PACKAGE_FILE" | cpio -idm --quiet
al@822 575 fi
al@822 576 fi
al@822 577 cd ../..
al@840 578 echo "DEPENDS=\"$(find_depends)\"" >> "$TMP_DIR/$file/receipt"
al@840 579 show_unresolved_lib "$TMP_DIR/$file/receipt"
al@840 580 tazpkg pack "$file"
al@840 581 mv "$file.tazpkg" "$TOP_DIR"
al@840 582 cd "$TOP_DIR"
al@840 583 rm -rf "$TMP_DIR"
al@822 584 }
al@822 585
al@822 586
al@822 587 # convert a .xbps package to .tazpkg (http://repo.voidlinux.eu/current/)
al@822 588
al@822 589 xbpstag() {
al@822 590 sed "/<key>$1<\/key>/!d{n;s/.*>\\(.*\\)<.*/\\1/}" \
al@822 591 < fs/props.plist | sed \$!d
al@822 592 }
al@822 593
al@822 594 convert_xbps() {
al@840 595 mkdir -p "$TMP_DIR/fs"
al@822 596 ( xzcat "$PACKAGE_FILE" || bzcat "$PACKAGE_FILE" || zcat "$PACKAGE_FILE" ) | \
al@840 597 tar -xf - -C "$TMP_DIR/fs"
al@822 598
al@840 599 cd "$TMP_DIR"
al@840 600 HOST_ARCH=$(xbpstag architecture)
al@822 601 case "$HOST_ARCH" in
al@822 602 i686) HOST_ARCH='i486';;
al@822 603 *) _ 'Arch "%s" not supported.' "$HOST_ARCH"
al@822 604 HOST_ARCH='';;
al@822 605 esac
al@822 606
al@822 607 if [ -n "$HOST_ARCH" ]; then
al@840 608 package=$(xbpstag pkgname)
al@840 609 version=$(xbpstag version)
al@822 610 file="$package-$version"
al@840 611 mkdir "$file"
al@840 612 cat > "$file/receipt" <<EOT
al@822 613 # SliTaz package receipt.
al@822 614 # generated by tazpkg from package $(basename "$PACKAGE_FILE")
al@822 615 PACKAGE="$package"
al@822 616 VERSION="$version"
al@822 617 CATEGORY="misc"
al@822 618 SHORT_DESC="$(xbpstag short_desc)"
al@822 619 WEB_SITE="$(xbpstag homepage)"
al@822 620 MAINTAINER="$(xbpstag maintainer | sed 's/&gt;/>/;s/&lt;/</')"
al@822 621 LICENSE="$(xbpstag license | sed 's/-//g')"
al@822 622 HOST_ARCH="$HOST_ARCH"
al@822 623 CONFIG_FILES="$(sed '/<key>conf_files<\/key>/,/<key>/!d;/array>/d;/<key>/d;s/.*>\(.*\)<.*/\1/' fs/props.plist)"
al@822 624
al@822 625 DEPENDS="$(find_depends)"
al@822 626
al@822 627 EOT
al@822 628 while read script func ; do
al@840 629 [ -s "fs/$script" ] && cat >> "$file/receipt" <<EOT
al@822 630 xbps_$func()
al@822 631 {
al@822 632 set +e
al@840 633 $(cat "fs/$script")
al@822 634 }
al@822 635
al@822 636 pre_$func()
al@822 637 {
al@822 638 xbps_$func pre $package $version yes /etc/xbps.conf $HOST_ARCH
al@822 639 }
al@822 640
al@822 641 post_$func()
al@822 642 {
al@822 643 xbps_$func post $package $version yes /etc/xbps.conf $HOST_ARCH
al@822 644 }
al@822 645
al@822 646 EOT
al@840 647 rm -f "fs/$script"
al@822 648 done <<EOT
al@822 649 INSTALL install
al@822 650 REMOVE remove
al@822 651 EOT
al@822 652 rm -f fs/*.plist
al@840 653 mv fs "$package-$version"
al@840 654 tazpkg pack "$package-$version"
al@840 655 mv "$package-$version.tazpkg" "$TOP_DIR"
al@822 656 fi
al@840 657 cd "$TOP_DIR"
al@840 658 rm -rf "$TMP_DIR"
al@822 659 }
al@822 660
al@822 661
al@822 662 finish_convert_tinycore() {
al@840 663 cat > "$file/receipt" <<EOT
al@822 664 # SliTaz package receipt.
al@822 665 # generated by tazpkg from tinycore package $(basename "$PACKAGE_FILE")
al@822 666 PACKAGE="$package"
al@822 667 VERSION="$version"
al@822 668 CATEGORY="misc"
al@822 669 SHORT_DESC="tinycore package $(basename "$PACKAGE_FILE")"
al@822 670 WEB_SITE="http://tinycorelinux.net/"
al@822 671 MAINTAINER="nobody@slitaz.org"
al@822 672 DEPENDS="$(find_depends)"
al@822 673 EOT
al@840 674 show_unresolved_lib "$file/receipt"
al@822 675 script="$file/fs/usr/local/tce.installed/$PACKAGE"
al@840 676 [ -f "$script" ] && cat >> "$file/receipt" <<EOM
al@822 677
al@822 678 post_install()
al@822 679 {
al@822 680 chroot \$1/ sh - << EOT
al@822 681 cd /
al@822 682 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $script)
al@822 683 EOT
al@822 684 }
al@822 685 EOM
al@822 686 [ -d "$file/fs/usr/local/tce.installed" ] &&
al@840 687 rm -rf "$file/fs/usr/local/tce.installed"
al@840 688 tazpkg pack "$file"
al@840 689 mv "$file.tazpkg" "$TOP_DIR"
al@840 690 cd "$TOP_DIR"
al@840 691 rm -rf "$TMP_DIR"
al@822 692 }
al@822 693
al@822 694
al@822 695 # convert a .tce package to .tazpkg
al@822 696
al@822 697 convert_tce() {
al@822 698 if ! tar -tzf "$PACKAGE_FILE" | grep -q ^usr/local ; then
al@822 699 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
al@822 700 return 1
al@822 701 fi
al@840 702 mkdir -p "$TMP_DIR"
al@840 703 cd "$TMP_DIR"
al@822 704 case "$PACKAGE_FILE" in
al@822 705 *.tcel) parse_pkgname .tcel ;;
al@822 706 *.tcem) parse_pkgname .tcem ;;
al@822 707 *) parse_pkgname .tce ;;
al@822 708 esac
al@840 709 mkdir -p "$file/fs"
al@840 710 tar -xzf "$PACKAGE_FILE" -C "$file/fs"
al@822 711 finish_convert_tinycore
al@822 712 }
al@822 713
al@822 714
al@822 715 # convert a .tcz package to .tazpkg
al@822 716
al@822 717 convert_tcz() {
al@822 718 [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
al@822 719 if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/$ ; then
al@822 720 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
al@822 721 return 1
al@822 722 fi
al@840 723 mkdir -p "$TMP_DIR"
al@840 724 cd "$TMP_DIR"
al@822 725 parse_pkgname .tcz
al@822 726 unsquashfs "$PACKAGE_FILE"
al@840 727 mv squashfs-root "$file/fs"
al@822 728 finish_convert_tinycore
al@822 729 }
al@822 730
al@822 731
al@822 732 if [ "$(dd if="$PACKAGE_FILE" bs=8 count=1 skip=1 2>/dev/null)" == 'debian-b' ]; then
al@822 733 convert_deb
al@822 734 else
al@822 735 case "$PACKAGE_FILE" in
al@822 736 *.deb|*.udeb) convert_deb;;
al@822 737 *.rpm) convert_rpm;;
al@822 738 *.sb) convert_sb;;
al@822 739 *.sfs) convert_sfs;;
al@822 740 *.pet) convert_pet;;
al@840 741 *.txz|*.tgz) convert_tgz;;
al@822 742 *.cards.tar.xz) convert_nutyx;;
al@822 743 *.apk|*.pkg.tar.gz|*.pkg.tar.xz) convert_arch;;
al@822 744 *.ipk|*.opk) convert_ipk;;
al@822 745 *.spack) convert_spack;;
al@822 746 *.tar.bz2) convert_upkg;;
al@822 747 *.xbps) convert_xbps;;
al@822 748 *.tce|*.tcel|*.tcem) convert_tce;;
al@822 749 *.tcz) convert_tcz;;
al@822 750 *) _ 'Unsupported format';;
al@822 751 esac
al@822 752 fi
al@822 753
al@822 754 exit 0