tazpkg view modules/tazpkg-convert @ rev 760

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