tazpkg view modules/tazpkg-convert @ rev 817

tazpkg-convert: add .txz slackware support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Jul 16 15:48:22 2015 +0200 (2015-07-16)
parents 33d93f743150
children
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 case "$PACKAGE_FILE" in
419 *.txz) tar -xJf "$PACKAGE_FILE" -C $TMP_DIR/$file/fs ;;
420 *.tgz) tar -xzf "$PACKAGE_FILE" -C $TMP_DIR/$file/fs ;;
421 esac
422 cd $TMP_DIR
423 if [ -d "$file/fs/install" ]; then
424 descrip=$(sed "/^$package/!d;s/.*(\\(.*\\)).*/\\1/;q" \
425 $file/fs/install/slack-desc)
426 cat > $file/receipt <<EOT
427 # SliTaz package receipt.
428 # generated by tazpkg from slackware package $(basename "$PACKAGE_FILE")
429 PACKAGE="$package"
430 VERSION="$version"
431 CATEGORY="misc"
432 SHORT_DESC="$descrip"
433 WEB_SITE="http://www.slackware.com/packages/"
434 MAINTAINER="nobody@slitaz.org"
435 DEPENDS="$(find_depends)"
436 EOT
437 show_unresolved_lib $file/receipt
438 [ -f "$file/fs/install/doinst.sh" ] && cat >> $file/receipt <<EOM
440 post_install()
441 {
442 chroot \$1/ sh - << EOT
443 cd /
444 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/install/doinst.sh)
445 EOT
446 }
447 EOM
448 sed "/^$package/:d;s/^$package://" \
449 $file/fs/install/slack-desc > $file/description.txt
450 [ -s "$file/description.txt" ] || rm -f $file/description.txt
451 rm -rf $file/fs/install
452 tazpkg pack $file
453 mv $file.tazpkg $TOP_DIR
454 else
455 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Slackware'
456 fi
457 cd $TOP_DIR
458 rm -rf $TMP_DIR
459 }
462 # convert a .deb package to .tazpkg
464 convert_deb() {
465 mkdir -p $TMP_DIR
466 dpkg-deb -e "$PACKAGE_FILE" $TMP_DIR
467 package=$(sed '/^ *Package:/!d;s/.*: //' $TMP_DIR/control)
468 version=$(sed '/^ *Version:/!d;s/.*: //' $TMP_DIR/control)
469 descrip=$(sed '/^ *Description:/!d;s/.*: //' $TMP_DIR/control)
470 homepage=$(sed '/^ *Homepage:/!d;s/.*: //' $TMP_DIR/control)
471 target="$(sed '/^ *Architecture:/!d;s/.*: //' $TMP_DIR/control)"
472 case "$target" in
473 i386|all)
474 file="$package-$version"
475 mkdir -p $TMP_DIR/$file/fs/
476 dpkg-deb -x "$PACKAGE_FILE" $TMP_DIR/$file/fs
477 cd $TMP_DIR
478 cat > $file/receipt <<EOT
479 # SliTaz package receipt.
480 # generated by tazpkg from debian package $(basename "$PACKAGE_FILE")
481 PACKAGE="$package"
482 VERSION="$version"
483 CATEGORY="misc"
484 SHORT_DESC="$descrip"
485 WEB_SITE="${homepage:-http://packages.debian.org/search?keywords=$package}"
486 MAINTAINER="nobody@slitaz.org"
487 EOT
488 LICENSE="$(grep /usr/share/common-licenses/ \
489 "$PACKAGE_FILE" $TMP_DIR/$file/fs/usr/share/doc/*/copyright | \
490 sed 's|.*common-licenses/\([-\.A-Za-z0-9]*\).*|\1|;s|[-\.]$||;q')"
491 [ -n "$LICENSE" ] && echo "LICENSE=\"$LICENSE\"" >> $file/receipt
492 echo "DEPENDS=\"$(find_depends)\"" >> $file/receipt
493 [ -s 'conffiles' ] && cat >> $file/receipt <<EOT
494 CONFIG_FILES="$(cat conffiles)"
495 EOT
496 show_unresolved_lib $file/receipt
497 awk '
498 {
499 if (/^ / && show) print substr($0,2);
500 else show=0;
501 if (/^Description/) show=1;
502 }' < $TMP_DIR/control > $file/description.txt
503 sed -i 's/^\.$//' $file/description.txt
504 [ -s "$file/description.txt" ] || rm -f $file/description.txt
505 tazpkg pack $file
506 mv $file.tazpkg $TOP_DIR
507 ;;
508 *)
509 _ 'Invalid target: %s (expected i386)' "$target"
510 ;;
511 esac
512 cd $TOP_DIR
513 rm -rf $TMP_DIR
514 }
517 # convert a .rpm package to .tazpkg
519 convert_rpm() {
520 mkdir -p $TMP_DIR
521 cp "$PACKAGE_FILE" $TMP_DIR
522 PACKAGE_FILE="$TMP_DIR/$(basename "$PACKAGE_FILE")"
523 rpm -qip "$PACKAGE_FILE" | awk -v pkg="$(basename "$PACKAGE_FILE")" '
524 BEGIN {
525 goturl=0;
526 printf "# SliTaz package receipt.\n";
527 printf "# generated by tazpkg from rpm package %s\n",pkg;
528 }
529 {
530 if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n",$3; }
531 if (/^Version/) printf "VERSION=\"%s-",$3;
532 if (/^Release/) printf "%s\"\n",$3;
533 if (/^Summary/) printf "SHORT_DESC=\"%s\"\n",substr($0,15);
534 if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n",$3; }
535 }
536 END {
537 if (goturl == 0)
538 printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name;
539 printf "CATEGORY=\"misc\"\n";
540 printf "MAINTAINER=\"nobody@slitaz.org\"\n";
541 }
542 ' > $TMP_DIR/receipt
543 . $TMP_DIR/receipt
544 file="$PACKAGE-$VERSION"
545 mkdir -p $TMP_DIR/$file/fs/
546 mv $TMP_DIR/receipt $TMP_DIR/$file
547 rpm -qip "$PACKAGE_FILE" | awk '
548 BEGIN { show=0 }
549 {
550 if (show) print;
551 if (/^Description/) show=1;
552 }
553 ' > $TMP_DIR/$file/description.txt
554 cd $TMP_DIR/$file/fs/
555 rpm2cpio "$PACKAGE_FILE" | cpio -idm --quiet
556 # rpm2cpio can't extract some new RPMs
557 if [ $? -eq 1 ]; then
558 if [ ! -e $INSTALLED/p7zip-full/receipt ]; then
559 boldify "$(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')"
560 confirm "$(_n 'Do you want to install "%s" package? (y/N)' 'p7zip-full')"
561 if [ $? -eq 0 ]; then
562 tazpkg -gi p7zip-full
563 else
564 rm -rf $TMP_DIR
565 exit 1
566 fi
567 fi
568 # we may already have 7z or may have just installed it in the step above
569 if [ -e "$INSTALLED/p7zip-full/receipt" ]; then
570 7z x -so "$PACKAGE_FILE" | cpio -idm --quiet
571 fi
572 fi
573 cd ../..
574 echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/$file/receipt
575 show_unresolved_lib $TMP_DIR/$file/receipt
576 tazpkg pack $file
577 mv $file.tazpkg $TOP_DIR
578 cd $TOP_DIR
579 rm -rf $TMP_DIR
580 }
583 # convert a .xbps package to .tazpkg (http://repo.voidlinux.eu/current/)
585 xbpstag() {
586 sed "/<key>$1<\/key>/!d{n;s/.*>\\(.*\\)<.*/\\1/}" \
587 < fs/props.plist | sed \$!d
588 }
590 convert_xbps() {
591 mkdir -p $TMP_DIR/fs
592 ( xzcat "$PACKAGE_FILE" || bzcat "$PACKAGE_FILE" || zcat "$PACKAGE_FILE" ) | \
593 tar -xf - -C $TMP_DIR/fs
595 cd $TMP_DIR
596 HOST_ARCH="$(xbpstag architecture)"
597 case "$HOST_ARCH" in
598 i686) HOST_ARCH='i486';;
599 *) _ 'Arch "%s" not supported.' "$HOST_ARCH"
600 HOST_ARCH='';;
601 esac
603 if [ -n "$HOST_ARCH" ]; then
604 package="$(xbpstag pkgname)"
605 version="$(xbpstag version)"
606 file="$package-$version"
607 mkdir $file
608 cat > $file/receipt <<EOT
609 # SliTaz package receipt.
610 # generated by tazpkg from package $(basename "$PACKAGE_FILE")
611 PACKAGE="$package"
612 VERSION="$version"
613 CATEGORY="misc"
614 SHORT_DESC="$(xbpstag short_desc)"
615 WEB_SITE="$(xbpstag homepage)"
616 MAINTAINER="$(xbpstag maintainer | sed 's/&gt;/>/;s/&lt;/</')"
617 LICENSE="$(xbpstag license | sed 's/-//g')"
618 HOST_ARCH="$HOST_ARCH"
619 CONFIG_FILES="$(sed '/<key>conf_files<\/key>/,/<key>/!d;/array>/d;/<key>/d;s/.*>\(.*\)<.*/\1/' fs/props.plist)"
621 DEPENDS="$(find_depends)"
623 EOT
624 while read script func ; do
625 [ -s "fs/$script" ] && cat >> $file/receipt <<EOT
626 xbps_$func()
627 {
628 set +e
629 $(cat fs/$script)
630 }
632 pre_$func()
633 {
634 xbps_$func pre $package $version yes /etc/xbps.conf $HOST_ARCH
635 }
637 post_$func()
638 {
639 xbps_$func post $package $version yes /etc/xbps.conf $HOST_ARCH
640 }
642 EOT
643 rm -f fs/$script
644 done <<EOT
645 INSTALL install
646 REMOVE remove
647 EOT
648 rm -f fs/*.plist
649 mv fs $package-$version
650 tazpkg pack $package-$version
651 mv $package-$version.tazpkg $TOP_DIR
652 fi
653 cd $TOP_DIR
654 rm -rf $TMP_DIR
655 }
658 finish_convert_tinycore() {
659 cat > $file/receipt <<EOT
660 # SliTaz package receipt.
661 # generated by tazpkg from tinycore package $(basename "$PACKAGE_FILE")
662 PACKAGE="$package"
663 VERSION="$version"
664 CATEGORY="misc"
665 SHORT_DESC="tinycore package $(basename "$PACKAGE_FILE")"
666 WEB_SITE="http://tinycorelinux.net/"
667 MAINTAINER="nobody@slitaz.org"
668 DEPENDS="$(find_depends)"
669 EOT
670 show_unresolved_lib $file/receipt
671 script="$file/fs/usr/local/tce.installed/$PACKAGE"
672 [ -f "$script" ] && cat >> $file/receipt <<EOM
674 post_install()
675 {
676 chroot \$1/ sh - << EOT
677 cd /
678 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $script)
679 EOT
680 }
681 EOM
682 [ -d "$file/fs/usr/local/tce.installed" ] &&
683 rm -rf $file/fs/usr/local/tce.installed
684 tazpkg pack $file
685 mv $file.tazpkg $TOP_DIR
686 cd $TOP_DIR
687 rm -rf $TMP_DIR
688 }
691 # convert a .tce package to .tazpkg
693 convert_tce() {
694 if ! tar -tzf "$PACKAGE_FILE" | grep -q ^usr/local ; then
695 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
696 return 1
697 fi
698 mkdir -p $TMP_DIR
699 cd $TMP_DIR
700 case "$PACKAGE_FILE" in
701 *.tcel) parse_pkgname .tcel ;;
702 *.tcem) parse_pkgname .tcem ;;
703 *) parse_pkgname .tce ;;
704 esac
705 mkdir -p $file/fs
706 tar -xzf "$PACKAGE_FILE" -C $file/fs
707 finish_convert_tinycore
708 }
711 # convert a .tcz package to .tazpkg
713 convert_tcz() {
714 [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
715 if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/$ ; then
716 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
717 return 1
718 fi
719 mkdir -p $TMP_DIR
720 cd $TMP_DIR
721 parse_pkgname .tcz
722 unsquashfs "$PACKAGE_FILE"
723 mv squashfs-root $file/fs
724 finish_convert_tinycore
725 }
728 if [ "$(dd if="$PACKAGE_FILE" bs=8 count=1 skip=1 2>/dev/null)" == 'debian-b' ]; then
729 convert_deb
730 else
731 case "$PACKAGE_FILE" in
732 *.deb|*.udeb) convert_deb;;
733 *.rpm) convert_rpm;;
734 *.sb) convert_sb;;
735 *.sfs) convert_sfs;;
736 *.pet) convert_pet;;
737 *.txz|*.tgz) convert_tgz;;
738 *.cards.tar.xz) convert_nutyx;;
739 *.apk|*.pkg.tar.gz|*.pkg.tar.xz) convert_arch;;
740 *.ipk|*.opk) convert_ipk;;
741 *.spack) convert_spack;;
742 *.tar.bz2) convert_upkg;;
743 *.xbps) convert_xbps;;
744 *.tce|*.tcel|*.tcem) convert_tce;;
745 *.tcz) convert_tcz;;
746 *) _ 'Unsupported format';;
747 esac
748 fi
750 exit 0