tazpkg annotate modules/repack @ rev 840
Add a bunch of modules with new-style support of 'root' (not all commands are modules yet); strip and compress resources.
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Fri Aug 28 16:10:34 2015 +0300 (2015-08-28) |
parents | |
children | d6cbd0c5f273 |
rev | line source |
---|---|
al@840 | 1 #!/bin/sh |
al@840 | 2 # TazPkg - Tiny autonomous zone packages manager, hg.slitaz.org/tazpkg |
al@840 | 3 # repack - TazPkg module |
al@840 | 4 # Create SliTaz package archive from an installed package |
al@840 | 5 |
al@840 | 6 |
al@840 | 7 # Connect function libraries |
al@840 | 8 . /lib/libtaz.sh |
al@840 | 9 |
al@840 | 10 # Get TazPkg working environment |
al@840 | 11 . @@MODULES@@/getenv |
al@840 | 12 |
al@840 | 13 alias cpio='busybox cpio' |
al@840 | 14 |
al@840 | 15 |
al@840 | 16 unset EXTRAVERSION; . "$INSTALLED/$1/receipt" |
al@840 | 17 |
al@840 | 18 title 'Repacking "%s"' "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" |
al@840 | 19 |
al@840 | 20 if grep -qs ^NO_REPACK= "$INSTALLED/$PACKAGE/receipt"; then |
al@840 | 21 _ "Can't repack package \"%s\"" "$PACKAGE" |
al@840 | 22 exit 1 |
al@840 | 23 fi |
al@840 | 24 |
al@840 | 25 if [ -s "$INSTALLED/$PACKAGE/modifiers" ]; then |
al@840 | 26 _ "Can't repack, \"%s\" files have been modified by:" "$PACKAGE" |
al@840 | 27 sed 's|.*| \0|' "$INSTALLED/$PACKAGE/modifiers" |
al@840 | 28 exit 1 |
al@840 | 29 fi |
al@840 | 30 |
al@840 | 31 MISSING='' |
al@840 | 32 while read i; do |
al@840 | 33 [ -e "$i" ] && continue |
al@840 | 34 [ -L "$i" ] || MISSING="$MISSING\n $i" |
al@840 | 35 done < "$INSTALLED/$PACKAGE/files.list" |
al@840 | 36 if [ -n "$MISSING" ]; then |
al@840 | 37 _n "Can't repack, the following files are lost:" |
al@840 | 38 echo -e "$MISSING" |
al@840 | 39 exit 1 |
al@840 | 40 fi |
al@840 | 41 |
al@840 | 42 TMP_DIR=$(mktemp -d) |
al@840 | 43 cd "$TMP_DIR" |
al@840 | 44 |
al@840 | 45 FILES="fs.cpio.lzma\n" |
al@840 | 46 for i in $(ls "$INSTALLED/$PACKAGE"); do |
al@840 | 47 case $i in |
al@840 | 48 volatile.cpio.gz|modifiers) ;; |
al@840 | 49 *) cp "$INSTALLED/$PACKAGE/$i" .; FILES="$FILES$i\n" ;; |
al@840 | 50 esac |
al@840 | 51 done |
al@840 | 52 |
al@840 | 53 ln -s / rootfs |
al@840 | 54 mkdir tmp |
al@840 | 55 sed 's/^/rootfs/' < files.list | cpio -o -H newc --quiet | \ |
al@840 | 56 { cd tmp ; cpio -idm --quiet >/dev/null; cd ..; } |
al@840 | 57 mv tmp/rootfs fs |
al@840 | 58 |
al@840 | 59 if [ -f "$INSTALLED/$PACKAGE/volatile.cpio.gz" ]; then |
al@840 | 60 zcat "$INSTALLED/$PACKAGE/volatile.cpio.gz" | \ |
al@840 | 61 { cd fs; cpio -idm --quiet; cd ..; } |
al@840 | 62 fi |
al@840 | 63 |
al@840 | 64 if fgrep -q repack_cleanup "$INSTALLED/$PACKAGE/receipt"; then |
al@840 | 65 . "$INSTALLED/$PACKAGE/receipt" |
al@840 | 66 repack_cleanup fs |
al@840 | 67 fi |
al@840 | 68 |
al@840 | 69 if [ -f "$INSTALLED/$PACKAGE/$CHECKSUM" ]; then |
al@840 | 70 sed 's, , fs,' < "$INSTALLED/$PACKAGE/$CHECKSUM" | $CHECKSUM -s -c || { |
al@840 | 71 _ "Can't repack, %s error." "$CHECKSUM" |
al@840 | 72 cd "$TOP_DIR" |
al@840 | 73 rm -rf "$TMP_DIR" |
al@840 | 74 exit 1 |
al@840 | 75 } |
al@840 | 76 fi |
al@840 | 77 |
al@840 | 78 find fs | cpio -o -H newc --quiet | lzma e fs.cpio.lzma -si |
al@840 | 79 echo -e "$FILES" | cpio -o -H newc --quiet > "$TOP_DIR/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg" |
al@840 | 80 cd "$TOP_DIR" |
al@840 | 81 #\rm -R "$TMP_DIR" |
al@840 | 82 _ 'Package "%s" repacked successfully.' "$PACKAGE" |
al@840 | 83 _ 'Size: %s' "$(du -sh "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg")" |
al@840 | 84 newline |