tazpkg view 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
line source
1 #!/bin/sh
2 # TazPkg - Tiny autonomous zone packages manager, hg.slitaz.org/tazpkg
3 # repack - TazPkg module
4 # Create SliTaz package archive from an installed package
7 # Connect function libraries
8 . /lib/libtaz.sh
10 # Get TazPkg working environment
11 . @@MODULES@@/getenv
13 alias cpio='busybox cpio'
16 unset EXTRAVERSION; . "$INSTALLED/$1/receipt"
18 title 'Repacking "%s"' "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg"
20 if grep -qs ^NO_REPACK= "$INSTALLED/$PACKAGE/receipt"; then
21 _ "Can't repack package \"%s\"" "$PACKAGE"
22 exit 1
23 fi
25 if [ -s "$INSTALLED/$PACKAGE/modifiers" ]; then
26 _ "Can't repack, \"%s\" files have been modified by:" "$PACKAGE"
27 sed 's|.*| \0|' "$INSTALLED/$PACKAGE/modifiers"
28 exit 1
29 fi
31 MISSING=''
32 while read i; do
33 [ -e "$i" ] && continue
34 [ -L "$i" ] || MISSING="$MISSING\n $i"
35 done < "$INSTALLED/$PACKAGE/files.list"
36 if [ -n "$MISSING" ]; then
37 _n "Can't repack, the following files are lost:"
38 echo -e "$MISSING"
39 exit 1
40 fi
42 TMP_DIR=$(mktemp -d)
43 cd "$TMP_DIR"
45 FILES="fs.cpio.lzma\n"
46 for i in $(ls "$INSTALLED/$PACKAGE"); do
47 case $i in
48 volatile.cpio.gz|modifiers) ;;
49 *) cp "$INSTALLED/$PACKAGE/$i" .; FILES="$FILES$i\n" ;;
50 esac
51 done
53 ln -s / rootfs
54 mkdir tmp
55 sed 's/^/rootfs/' < files.list | cpio -o -H newc --quiet | \
56 { cd tmp ; cpio -idm --quiet >/dev/null; cd ..; }
57 mv tmp/rootfs fs
59 if [ -f "$INSTALLED/$PACKAGE/volatile.cpio.gz" ]; then
60 zcat "$INSTALLED/$PACKAGE/volatile.cpio.gz" | \
61 { cd fs; cpio -idm --quiet; cd ..; }
62 fi
64 if fgrep -q repack_cleanup "$INSTALLED/$PACKAGE/receipt"; then
65 . "$INSTALLED/$PACKAGE/receipt"
66 repack_cleanup fs
67 fi
69 if [ -f "$INSTALLED/$PACKAGE/$CHECKSUM" ]; then
70 sed 's, , fs,' < "$INSTALLED/$PACKAGE/$CHECKSUM" | $CHECKSUM -s -c || {
71 _ "Can't repack, %s error." "$CHECKSUM"
72 cd "$TOP_DIR"
73 rm -rf "$TMP_DIR"
74 exit 1
75 }
76 fi
78 find fs | cpio -o -H newc --quiet | lzma e fs.cpio.lzma -si
79 echo -e "$FILES" | cpio -o -H newc --quiet > "$TOP_DIR/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg"
80 cd "$TOP_DIR"
81 #\rm -R "$TMP_DIR"
82 _ 'Package "%s" repacked successfully.' "$PACKAGE"
83 _ 'Size: %s' "$(du -sh "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg")"
84 newline