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  		#