spk annotate spk-archive @ rev 64

spk-archive: be busybox ash compatible
author Christophe Lincoln <pankso@slitaz.org>
date Fri May 18 03:19:51 2012 +0200 (2012-05-18)
parents 07f5864f07a2
children de880358af6d
rev   line source
pankso@64 1 #!/bin/sh
meshca@11 2 #
meshca@11 3 # Spk-Archive - SliTaz Package Archive Manager
meshca@11 4 #
meshca@11 5 # NOT COMPLETE: Still need to re-write (just what was grabbed from tazpkg)
meshca@11 6 #
meshca@11 7 # Authors : See the AUTHORS files
meshca@11 8
meshca@11 9 source /usr/lib/slitaz/libspk.sh
meshca@11 10
meshca@11 11 usage() {
meshca@11 12 name=$(basename $0)
pankso@26 13 cat << EOT
meshca@11 14
meshca@11 15 $(boldify $(gettext "Usage:")) $name [command] package
meshca@11 16
meshca@11 17 $(boldify $(gettext "Commands:"))
pankso@64 18 pack
pankso@64 19 repack [--config]
pankso@64 20 extract
pankso@64 21 recompress
meshca@11 22
meshca@11 23 $(boldify "$(gettext "Example:")")
pankso@64 24 $name extract package
meshca@11 25
meshca@11 26 EOT
meshca@11 27 exit 0
meshca@11 28 }
meshca@11 29
meshca@11 30 # Extract a package with cpio and gzip/lzma to the current directory.
meshca@11 31 # Parameters: package_file
meshca@11 32 extract_package() {
meshca@11 33 local package_file=$1
meshca@11 34 local package_name=$(package_name $package_file)
pankso@26 35
pankso@64 36 gettext "Extracting:"; echo " $package_name... "
meshca@11 37 cpio -idm --quiet < ${package_file##*/} && rm -f ${package_file##*/}
meshca@11 38 status
pankso@26 39
pankso@64 40 [ "$verbose" ] && gettext "Extracting the pseudo fs... "
pankso@32 41 unlzma -c fs.cpio.lzma | cpio -idm --quiet && rm fs.cpio.lzma
pankso@64 42 [ "$verbose" ] && status
meshca@11 43 }
meshca@11 44
meshca@11 45 # Extract .tazpkg cpio archive into a directory.
meshca@11 46 # Parameters: package_file results_directory
meshca@11 47 extract() {
meshca@11 48 local package_file=$1
meshca@11 49 local target_dir=$2
pankso@26 50
pankso@64 51 # Validate the file
meshca@11 52 check_valid_tazpkg $package_file
pankso@26 53
pankso@64 54 # Find the package name
meshca@11 55 local package_name=$(package_name $package_file)
meshca@11 56
meshca@11 57 # Create destination directory
meshca@11 58 local dest_dir=$(pwd)/$package_name
meshca@11 59 [ -n "$target_dir" ] && dest_dir=$target_dir/$package_name
meshca@11 60 mkdir -p $dest_dir
pankso@26 61
meshca@11 62 newline
meshca@11 63 echo $(boldify $(gettext "Extracting:")) $package_name
meshca@11 64 separator
pankso@26 65
meshca@11 66 gettext "Copying original package..."
meshca@11 67 cp $package_file $dest_dir
meshca@11 68 status
pankso@64 69 cd $dest_dir
pankso@64 70 extract_package $package $package_file
pankso@64 71 cd - > /dev/null
meshca@11 72 separator
pankso@64 73 echo -n "$package_name"
pankso@64 74 gettext "is extracted to:"; echo " $dest_dir"
meshca@11 75 newline
meshca@11 76 }
meshca@11 77
meshca@11 78 # Recompress .tazpkg cpio archive with lzma.
meshca@11 79 # Parameters: package_file
meshca@11 80 recompress() {
pankso@26 81 local package_file=$1
meshca@11 82 valid_tazpkg $package_file
pankso@26 83
meshca@11 84 local package_name=$(package_name $package_file)
pankso@26 85
meshca@11 86 newline
meshca@11 87 echo $(boldify $(gettext "Recompressing:")) $package_name
meshca@11 88 separator
pankso@26 89
meshca@11 90 mkdir -p $TMP_DIR
pankso@26 91
meshca@11 92 gettext "Copying original package..."
meshca@11 93 cp $package_file $TMP_DIR
meshca@11 94 status
pankso@26 95
pankso@64 96 cd $TMP_DIR
pankso@64 97 extract_package $package_file
pankso@64 98 gettext "Recompressing the fs..."
pankso@64 99 find fs | cpio -o -H newc --quiet | lzma e fs.cpio.lzma -si
pankso@64 100 rm -rf fs
pankso@64 101 status
pankso@64 102 cd - > /dev/null
pankso@26 103
pankso@64 104 gettext "Creating new package..."
meshca@11 105 find $TMP_DIR -print | cpio -o -H newc --quiet > \
meshca@11 106 $(basename $package_file).$$ && mv -f \
meshca@11 107 $(basename $package_file).$$ \
meshca@11 108 $(basename $package_file)
meshca@11 109 status
pankso@26 110
meshca@11 111 rm -rf $TMP_DIR
meshca@11 112 }
meshca@11 113
meshca@11 114 case $1 in
meshca@11 115 extract|-e)
meshca@11 116 extract_package $2 $3 ;;
meshca@11 117 recompress|-r)
meshca@11 118 recompress $2 ;;
meshca@11 119 *)
meshca@11 120 usage ;;
meshca@11 121 esac