tazpkg view modules/convert @ rev 828

Add modules "info", "list" with extended functions; update documentations and translations
author Aleksej Bobylev <al.bobylev@gmail.com>
date Tue Aug 11 01:09:15 2015 +0300 (2015-08-11)
parents f7e9a5b8477b
children a02e36d44d06
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 . /etc/slitaz/slitaz.conf
16 . /lib/libtaz.sh
17 . @@MODULES@@/find-depends
19 # Internationalization.
20 export TEXTDOMAIN='tazpkg'
23 # FIXME: what does this mean?
24 [ -n "$TARGET_DIR" -a -s "$TARGET_DIR/files.list.lzma" ] && TMPLOCALSTATE="$TARGET_DIR"
27 show_unresolved_lib() {
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 mkdir -p $TMP_DIR/fs
44 tar -xjf "$PACKAGE_FILE" -C $TMP_DIR/fs
45 if [ -d "$TMP_DIR/fs/var/lib/upkg/packages" ]; then
46 cd $TMP_DIR
47 package="$(sed '/^Package:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)"
48 version="$(sed '/^Version:/!d;s/.*: //' fs/var/lib/upkg/packages/*.info)"
49 url='http://www.paldo.org/'
50 file="$package-$version"
51 mkdir $file
52 mv fs $file
53 maintainer='nobody@slitaz.org'
54 descrip="$package package from paldo."
55 cat > $file/receipt <<EOT
56 # SliTaz package receipt.
57 # generated by tazpkg from package $(basename "$PACKAGE_FILE")
58 PACKAGE="$package"
59 VERSION="$version"
60 CATEGORY="misc"
61 SHORT_DESC="$descrip"
62 WEB_SITE="$url"
63 MAINTAINER="$maintainer"
64 DEPENDS="$(find_depends)"
65 EOT
66 [ -s "$file/var/lib/upkg/files/*.config.bz2" ] &&
67 cat >> $file/receipt <<EOT
68 CONFIG_FILES="$(bzcat $file/var/lib/upkg/files/*.config.bz2)"
69 EOT
70 while read ext func ; do
71 [ -s "$file/fs/var/lib/upkg/scripts/*.$ext" ] || continue
72 cat >> $file/receipt <<EOT
74 $func()
75 {
76 $(cat $file/fs/var/lib/upkg/scripts/*.$ext)
77 }
78 EOT
79 done <<EOT
80 prerm pre_remove
81 EOT
83 tazpkg pack $file
84 mv $TMP_DIR/$file.tazpkg $TOP_DIR
85 else
86 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'upkg'
87 fi
88 cd $TOP_DIR
89 rm -rf $TMP_DIR
90 }
93 # convert a .spack package to .tazpkg
95 convert_spack() {
96 mkdir -p $TMP_DIR
97 ( cd $TMP_DIR ; cpio -i ) < "$PACKAGE_FILE"
98 cd $TMP_DIR
99 package="$(sed '$!d;s/:.*//' about.txt)"
100 version="$(basename "$PACKAGE_FILE" | sed "s/$package-\([^-]*\).*/\1/")"
101 descrip="$(sed '$!d;s/.*: //' about.txt)"
102 url='http://0linux.org/'
103 maintainer='nobody@slitaz.org'
104 file="$package-$version"
105 mkdir -p $file/fs
106 xzcat files.xz | ( cd $file/fs ; cpio -idmu )
107 cat > $file/receipt <<EOT
108 # SliTaz package receipt.
109 # generated by tazpkg from package $(basename "$PACKAGE_FILE")
110 PACKAGE="$package"
111 VERSION="$version"
112 CATEGORY="misc"
113 SHORT_DESC="$descrip"
114 WEB_SITE="$url"
115 MAINTAINER="$maintainer"
116 DEPENDS="$(find_depends)"
117 EOT
118 [ -s 'pre-install.sh' ] && cat >> $file/receipt <<EOT
120 pre_install()
121 {
122 cd /
123 $(sed 1d pre-install.sh)
124 }
125 EOT
126 [ -s 'post-install.sh' ] && cat >> $file/receipt <<EOT
128 post_install()
129 {
130 cd /
131 $(sed '1,/^}/d' post-install.sh)
132 }
133 EOT
134 tazpkg pack $file
135 cd $TOP_DIR
136 mv $TMP_DIR/$file.tazpkg .
137 rm -rf $TMP_DIR
138 }
141 # convert a .ipk package to .tazpkg
143 convert_ipk() {
144 mkdir -p $TMP_DIR
145 tar -xOzf "$PACKAGE_FILE" ./control.tar.gz | tar -xzf - -C $TMP_DIR
146 package=$(sed '/^Package/!d;s/.*: //' $TMP_DIR/control)
147 version=$(sed '/^Version/!d;s/.*: //' $TMP_DIR/control)
148 maintainer="$(sed '/^Maintainer/!d;s/.*: //' $TMP_DIR/control)"
149 target="$(sed '/^Architecture/!d;s/.*: //' $TMP_DIR/control)"
150 descrip=$(sed '/^Description/!d;s/.*: //' $TMP_DIR/control)
151 homepage=$(sed '/^Homepage/!d;s/.*: //' $TMP_DIR/control)
152 url='http://openwrt.org/'
153 case "$target" in
154 i386|all)
155 file="$package-$version"
156 mkdir -p $TMP_DIR/$file/fs
157 tar -xOzf "$PACKAGE_FILE" ./data.tar.gz | tar -xzf - -C $TMP_DIR/$file/fs
158 cd $TMP_DIR
159 cat > $file/receipt <<EOT
160 # SliTaz package receipt.
161 # generated by tazpkg from package $(basename "$PACKAGE_FILE")
162 PACKAGE="$package"
163 VERSION="$version"
164 CATEGORY="misc"
165 SHORT_DESC="$descrip"
166 WEB_SITE="${homepage:-$url}"
167 MAINTAINER="$maintainer"
168 DEPENDS="$(find_depends)"
169 EOT
170 show_unresolved_lib $file/receipt
171 [ -s 'conffiles' ] && cat >> $file/receipt <<EOT
172 CONFIG_FILES="$(cat conffiles)"
173 EOT
174 show_unresolved_lib $file/receipt
175 while read script func; do
176 [ -s "$script" ] && cat >> $file/receipt <<EOT
178 $func()
179 {
180 $(cat $script)
181 }
182 EOT
183 done <<EOT
184 preinst pre_install
185 postinst post_install
186 prerm pre_remove
187 postrm post_remove
188 EOT
189 awk '
190 {
191 if (/^ / && show) print substr($0,2);
192 else show=0;
193 if (/^Description/) show=1;
194 }' < $TMP_DIR/control > $file/description.txt
195 sed -i 's/^\.$//' $file/description.txt
196 [ -s $file/description.txt ] || rm -f $file/description.txt
197 tazpkg pack $file
198 cd $TOP_DIR
199 mv $TMP_DIR/$file.tazpkg .
200 ;;
201 *)
202 _ 'Invalid target: %s (expected i386)' "$target"
203 ;;
204 esac
205 rm -rf $TMP_DIR
206 }
209 # convert a .cards.tar.xz package to .tazpkg
211 convert_nutyx() {
212 mkdir -p $TMP_DIR/fs
213 busybox tar -xf "$PACKAGE_FILE" -C $TMP_DIR/fs
214 if [ -f "$TMP_DIR/fs/.META" ]; then
215 package="$(sed '/^N/!d;s/^.//' fs/.META)"
216 version="$(sed '/^V/!d;s/^.//' fs/.META)"
217 descrip="$(sed '/^D/!d;s/^.//' fs/.META)"
218 file="$package-$version"
219 mkdir $file
220 mv fs $file
221 cat > $file/receipt <<EOT
222 # SliTaz package receipt.
223 # generated by tazpkg from NuTyX package $(basename "$PACKAGE_FILE")
224 PACKAGE="$package"
225 VERSION="$version"
226 CATEGORY="misc"
227 SHORT_DESC="$descrip"
228 WEB_SITE="http://www.nutyx.org/"
229 MAINTAINER="nobody@slitaz.org"
230 DEPENDS="$(find_depends)"
231 EOT
232 show_unresolved_lib $file/receipt
233 rm -f $file/fs/.[A-Z]*
234 tazpkg pack $file
235 mv $file.tazpkg $TOP_DIR
236 else
237 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'NuTyX'
238 fi
239 cd $TOP_DIR
240 rm -rf $TMP_DIR
241 }
244 # convert a .pkg.tar.gz/.pkg.tar.xz/.apk package to .tazpkg
246 convert_arch() {
247 mkdir -p $TMP_DIR/fs
248 busybox tar -xf "$PACKAGE_FILE" -C $TMP_DIR/fs
249 if [ -f "$TMP_DIR/fs/.PKGINFO" ]; then
250 cd $TMP_DIR
251 package="$(sed '/^pkgname/!d;s/.*= //' fs/.PKGINFO)"
252 version="$(sed '/^pkgver/!d;s/.*= //' fs/.PKGINFO)"
253 descrip="$(sed '/^pkgdesc/!d;s/.*= //' fs/.PKGINFO)"
254 url="$(sed '/^url/!d;s/.*= //' fs/.PKGINFO)"
255 maintainer="$(sed '/^packager/!d;s/.*= //' fs/.PKGINFO)"
256 file="$package-$version"
257 mkdir $file
258 mv fs $file
259 cat > $file/receipt <<EOT
260 # SliTaz package receipt.
261 # generated by tazpkg from Archlinux package $(basename "$PACKAGE_FILE")
262 PACKAGE="$package"
263 VERSION="$version"
264 CATEGORY="misc"
265 SHORT_DESC="$descrip"
266 WEB_SITE="$url"
267 MAINTAINER="$maintainer"
268 DEPENDS="$(find_depends)"
269 EOT
270 show_unresolved_lib $file/receipt
271 rm -f $file/fs/.[A-Z]*
272 tazpkg pack $file
273 mv $file.tazpkg $TOP_DIR
274 else
275 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Archlinux/Alpine'
276 fi
277 cd $TOP_DIR
278 rm -rf $TMP_DIR
279 }
282 # get package and version from PACKAGE_FILE
284 parse_pkgname() {
285 package=$(basename "${2:-$PACKAGE_FILE}" "$1")
286 IFS='-'
287 set -- $package
288 unset IFS
289 package="$1"
290 version="$2"
291 if [ -z "$version" ]; then
292 package=${1%%[0-9\.]*}
293 version=${1#$package}
294 fi
295 file="$package-$version"
296 mkdir $file
297 }
300 finish_convert_puppy() {
301 rm -f fs/*.specs
302 mv fs $file
303 cat > $file/receipt <<EOT
304 # SliTaz package receipt.
305 # generated by tazpkg from puppy package $(basename "$PACKAGE_FILE")
306 PACKAGE="$package"
307 VERSION="$version"
308 CATEGORY="misc"
309 SHORT_DESC="$desc"
310 WEB_SITE="http://puppylinux.org/"
311 MAINTAINER="nobody@slitaz.org"
312 DEPENDS="$(find_depends)"
313 EOT
314 show_unresolved_lib $file/receipt
315 for i in install uninstall ; do
316 [ -f "$file/fs/p$i.sh" ] && cat >> $file/receipt <<EOM
318 post_$i()
319 {
320 chroot \$1/ sh - << EOT
321 cd /
322 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $file/fs/p$i.sh ; rm -f $file/fs/p$i.sh)
323 EOT
324 }
325 EOM
326 done
327 sed -i 's/post_uninstall/post_remove/' $file/receipt
328 tazpkg pack $file
329 mv $file.tazpkg $TOP_DIR
330 cd $TOP_DIR
331 rm -rf $TMP_DIR
332 }
335 # convert a .sfs package to .tazpkg
337 convert_sfs()
338 {
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) print substr($0,2);
501 else show=0;
502 if (/^Description/) show=1;
503 }' < $TMP_DIR/control > $file/description.txt
504 sed -i 's/^\.$//' $file/description.txt
505 [ -s "$file/description.txt" ] || rm -f $file/description.txt
506 tazpkg pack $file
507 mv $file.tazpkg $TOP_DIR
508 ;;
509 *)
510 _ 'Invalid target: %s (expected i386)' "$target"
511 ;;
512 esac
513 cd $TOP_DIR
514 rm -rf $TMP_DIR
515 }
518 # convert a .rpm package to .tazpkg
520 convert_rpm() {
521 mkdir -p $TMP_DIR
522 cp "$PACKAGE_FILE" $TMP_DIR
523 PACKAGE_FILE="$TMP_DIR/$(basename "$PACKAGE_FILE")"
524 rpm -qip "$PACKAGE_FILE" | awk -v pkg="$(basename "$PACKAGE_FILE")" '
525 BEGIN {
526 goturl=0;
527 printf "# SliTaz package receipt.\n";
528 printf "# generated by tazpkg from rpm package %s\n",pkg;
529 }
530 {
531 if (/^Name/) { name=$3; printf "PACKAGE=\"%s\"\n",$3; }
532 if (/^Version/) printf "VERSION=\"%s-",$3;
533 if (/^Release/) printf "%s\"\n",$3;
534 if (/^Summary/) printf "SHORT_DESC=\"%s\"\n",substr($0,15);
535 if (/^URL/) { goturl=1; printf "WEB_SITE=\"%s\"\n",$3; }
536 }
537 END {
538 if (goturl == 0)
539 printf "WEB_SITE=\"http://rpmfind.net/linux/rpm2html/search.php?query=%s\"\n",name;
540 printf "CATEGORY=\"misc\"\n";
541 printf "MAINTAINER=\"nobody@slitaz.org\"\n";
542 }
543 ' > $TMP_DIR/receipt
544 . $TMP_DIR/receipt
545 file="$PACKAGE-$VERSION"
546 mkdir -p $TMP_DIR/$file/fs/
547 mv $TMP_DIR/receipt $TMP_DIR/$file
548 rpm -qip "$PACKAGE_FILE" | awk '
549 BEGIN { show=0 }
550 {
551 if (show) print;
552 if (/^Description/) show=1;
553 }
554 ' > $TMP_DIR/$file/description.txt
555 cd $TMP_DIR/$file/fs/
556 rpm2cpio "$PACKAGE_FILE" | cpio -idm --quiet
557 # rpm2cpio can't extract some new RPMs
558 if [ $? -eq 1 ]; then
559 if [ ! -e $INSTALLED/p7zip-full/receipt ]; then
560 boldify "$(_ 'Unable to extract the RPM using standard tools (rpm2cpio).')"
561 confirm "$(_n 'Do you want to install "%s" package? (y/N)' 'p7zip-full')"
562 if [ $? -eq 0 ]; then
563 tazpkg -gi p7zip-full
564 else
565 rm -rf $TMP_DIR
566 exit 1
567 fi
568 fi
569 # we may already have 7z or may have just installed it in the step above
570 if [ -e "$INSTALLED/p7zip-full/receipt" ]; then
571 7z x -so "$PACKAGE_FILE" | cpio -idm --quiet
572 fi
573 fi
574 cd ../..
575 echo "DEPENDS=\"$(find_depends)\"" >> $TMP_DIR/$file/receipt
576 show_unresolved_lib $TMP_DIR/$file/receipt
577 tazpkg pack $file
578 mv $file.tazpkg $TOP_DIR
579 cd $TOP_DIR
580 rm -rf $TMP_DIR
581 }
584 # convert a .xbps package to .tazpkg (http://repo.voidlinux.eu/current/)
586 xbpstag() {
587 sed "/<key>$1<\/key>/!d{n;s/.*>\\(.*\\)<.*/\\1/}" \
588 < fs/props.plist | sed \$!d
589 }
591 convert_xbps() {
592 mkdir -p $TMP_DIR/fs
593 ( xzcat "$PACKAGE_FILE" || bzcat "$PACKAGE_FILE" || zcat "$PACKAGE_FILE" ) | \
594 tar -xf - -C $TMP_DIR/fs
596 cd $TMP_DIR
597 HOST_ARCH="$(xbpstag architecture)"
598 case "$HOST_ARCH" in
599 i686) HOST_ARCH='i486';;
600 *) _ 'Arch "%s" not supported.' "$HOST_ARCH"
601 HOST_ARCH='';;
602 esac
604 if [ -n "$HOST_ARCH" ]; then
605 package="$(xbpstag pkgname)"
606 version="$(xbpstag version)"
607 file="$package-$version"
608 mkdir $file
609 cat > $file/receipt <<EOT
610 # SliTaz package receipt.
611 # generated by tazpkg from package $(basename "$PACKAGE_FILE")
612 PACKAGE="$package"
613 VERSION="$version"
614 CATEGORY="misc"
615 SHORT_DESC="$(xbpstag short_desc)"
616 WEB_SITE="$(xbpstag homepage)"
617 MAINTAINER="$(xbpstag maintainer | sed 's/&gt;/>/;s/&lt;/</')"
618 LICENSE="$(xbpstag license | sed 's/-//g')"
619 HOST_ARCH="$HOST_ARCH"
620 CONFIG_FILES="$(sed '/<key>conf_files<\/key>/,/<key>/!d;/array>/d;/<key>/d;s/.*>\(.*\)<.*/\1/' fs/props.plist)"
622 DEPENDS="$(find_depends)"
624 EOT
625 while read script func ; do
626 [ -s "fs/$script" ] && cat >> $file/receipt <<EOT
627 xbps_$func()
628 {
629 set +e
630 $(cat fs/$script)
631 }
633 pre_$func()
634 {
635 xbps_$func pre $package $version yes /etc/xbps.conf $HOST_ARCH
636 }
638 post_$func()
639 {
640 xbps_$func post $package $version yes /etc/xbps.conf $HOST_ARCH
641 }
643 EOT
644 rm -f fs/$script
645 done <<EOT
646 INSTALL install
647 REMOVE remove
648 EOT
649 rm -f fs/*.plist
650 mv fs $package-$version
651 tazpkg pack $package-$version
652 mv $package-$version.tazpkg $TOP_DIR
653 fi
654 cd $TOP_DIR
655 rm -rf $TMP_DIR
656 }
659 finish_convert_tinycore() {
660 cat > $file/receipt <<EOT
661 # SliTaz package receipt.
662 # generated by tazpkg from tinycore package $(basename "$PACKAGE_FILE")
663 PACKAGE="$package"
664 VERSION="$version"
665 CATEGORY="misc"
666 SHORT_DESC="tinycore package $(basename "$PACKAGE_FILE")"
667 WEB_SITE="http://tinycorelinux.net/"
668 MAINTAINER="nobody@slitaz.org"
669 DEPENDS="$(find_depends)"
670 EOT
671 show_unresolved_lib $file/receipt
672 script="$file/fs/usr/local/tce.installed/$PACKAGE"
673 [ -f "$script" ] && cat >> $file/receipt <<EOM
675 post_install()
676 {
677 chroot \$1/ sh - << EOT
678 cd /
679 $(sed -e 's/\\/\\\\/g' -e 's/\$/\\$/g' < $script)
680 EOT
681 }
682 EOM
683 [ -d "$file/fs/usr/local/tce.installed" ] &&
684 rm -rf $file/fs/usr/local/tce.installed
685 tazpkg pack $file
686 mv $file.tazpkg $TOP_DIR
687 cd $TOP_DIR
688 rm -rf $TMP_DIR
689 }
692 # convert a .tce package to .tazpkg
694 convert_tce() {
695 if ! tar -tzf "$PACKAGE_FILE" | grep -q ^usr/local ; then
696 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
697 return 1
698 fi
699 mkdir -p $TMP_DIR
700 cd $TMP_DIR
701 case "$PACKAGE_FILE" in
702 *.tcel) parse_pkgname .tcel ;;
703 *.tcem) parse_pkgname .tcem ;;
704 *) parse_pkgname .tce ;;
705 esac
706 mkdir -p $file/fs
707 tar -xzf "$PACKAGE_FILE" -C $file/fs
708 finish_convert_tinycore
709 }
712 # convert a .tcz package to .tazpkg
714 convert_tcz() {
715 [ -n "$(which unsquashfs)" ] || tazpkg get-install squashfs
716 if ! unsquashfs -l "$PACKAGE_FILE" | grep -q squashfs-root/$ ; then
717 _ 'File "%s" does not look like %s package!' "$PACKAGE_FILE" 'Tinycore'
718 return 1
719 fi
720 mkdir -p $TMP_DIR
721 cd $TMP_DIR
722 parse_pkgname .tcz
723 unsquashfs "$PACKAGE_FILE"
724 mv squashfs-root $file/fs
725 finish_convert_tinycore
726 }
729 if [ "$(dd if="$PACKAGE_FILE" bs=8 count=1 skip=1 2>/dev/null)" == 'debian-b' ]; then
730 convert_deb
731 else
732 case "$PACKAGE_FILE" in
733 *.deb|*.udeb) convert_deb;;
734 *.rpm) convert_rpm;;
735 *.sb) convert_sb;;
736 *.sfs) convert_sfs;;
737 *.pet) convert_pet;;
738 *.txz|*.tgz) convert_tgz;;
739 *.cards.tar.xz) convert_nutyx;;
740 *.apk|*.pkg.tar.gz|*.pkg.tar.xz) convert_arch;;
741 *.ipk|*.opk) convert_ipk;;
742 *.spack) convert_spack;;
743 *.tar.bz2) convert_upkg;;
744 *.xbps) convert_xbps;;
745 *.tce|*.tcel|*.tcem) convert_tce;;
746 *.tcz) convert_tcz;;
747 *) _ 'Unsupported format';;
748 esac
749 fi
751 exit 0