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