tazpkg diff tazpkg @ rev 297
Add recompress (-30%)
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Tue Sep 15 13:24:30 2009 +0200 (2009-09-15) |
parents | 72a0ac8780a0 |
children | 2affdd0c18e2 |
line diff
1.1 --- a/tazpkg Sat Sep 12 22:39:30 2009 +0200 1.2 +++ b/tazpkg Tue Sep 15 13:24:30 2009 +0200 1.3 @@ -128,6 +128,7 @@ 1.4 recharge Recharge your packages.list from the mirror. 1.5 repack Create a package archive from an installed package. 1.6 repack-config Create a package archive with configuration files. 1.7 + recompress Rebuild a package with the better compression ratio. 1.8 upgrade Upgrade one or all installed/listed package(s) on the mirror. 1.9 block|unblock Block an installed package version or unblock it for upgrade. 1.10 get Download a package into the current directory. 1.11 @@ -383,13 +384,18 @@ 1.12 done 1.13 } 1.14 1.15 -# Extract a package with cpio and gzip. 1.16 +# Extract a package with cpio and gzip/lzma. 1.17 extract_package() 1.18 { 1.19 echo -n "Extracting $PACKAGE... " 1.20 cpio -idm < $PACKAGE.tazpkg && rm -f $PACKAGE.tazpkg 1.21 echo -n "Extracting the pseudo fs... " 1.22 - zcat fs.cpio.gz | cpio -idm && rm fs.cpio.gz 1.23 + if [ -f fs.cpio.lzma ]; then 1.24 + echo -n "(lzma) " 1.25 + unlzma -c fs.cpio.lzma | cpio -idm && rm fs.cpio.lzma 1.26 + else 1.27 + zcat fs.cpio.gz | cpio -idm && rm fs.cpio.gz 1.28 + fi 1.29 } 1.30 1.31 # This function installs a package in the rootfs. 1.32 @@ -1786,6 +1792,33 @@ 1.33 echo "$PACKAGE is extracted to : $DESTDIR" 1.34 echo "" 1.35 ;; 1.36 + recompress) 1.37 + # Recompress .tazpkg cpio archive with lzma. 1.38 + # 1.39 + check_for_package_on_cmdline 1.40 + check_for_package_file 1.41 + echo "" 1.42 + echo -e "\033[1mRecompressing :\033[0m $PACKAGE" 1.43 + echo "================================================================================" 1.44 + mkdir -p $TMP_DIR 1.45 + echo -n "Copying original package..." 1.46 + cp $PACKAGE_FILE $TMP_DIR 1.47 + status 1.48 + cd $TMP_DIR 1.49 + extract_package 1.50 + echo -n "Recompressing the fs... " 1.51 + find fs | cpio -o -H newc 2> /dev/null | lzma e fs.cpio.lzma -si 1.52 + rm -rf fs 1.53 + status 1.54 + echo -n "Creating new package... " 1.55 + find . -print | cpio -o -H newc > \ 1.56 + $TOP_DIR/$(basename $PACKAGE_FILE).$$ && mv -f \ 1.57 + $TOP_DIR/$(basename $PACKAGE_FILE).$$ \ 1.58 + $TOP_DIR/$(basename $PACKAGE_FILE) 1.59 + status 1.60 + cd $TOP_DIR 1.61 + rm -rf $TMP_DIR 1.62 + ;; 1.63 list-config) 1.64 # List configuration files installed. 1.65 #