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