diff --git a/tools/update-packaging/unwrap_full_update.sh b/tools/update-packaging/unwrap_full_update.sh new file mode 100755 index 000000000000..5b0e16470cb8 --- /dev/null +++ b/tools/update-packaging/unwrap_full_update.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# +# This tool unpacks a full update package generated by make_full_update.sh +# Author: Darin Fisher +# + +# ----------------------------------------------------------------------------- +# By default just assume that these tools exist on our path +MAR=${MAR:-mar} +BZIP2=${BZIP2:-bzip2} + +# ----------------------------------------------------------------------------- +# +print_usage() { + echo "Usage: $(basename $0) [OPTIONS] ARCHIVE" +} + +if [ $# = 0 ]; then + print_usage + exit 1 +fi + +if [ $1 = -h ]; then + print_usage + echo "" + echo "The contents of ARCHIVE will be unpacked into the current directory." + echo "" + echo "Options:" + echo " -h show this help text" + echo "" + exit 1 +fi + +# ----------------------------------------------------------------------------- + +archive="$1" + +# Generate a list of all files in the archive. +list=$($MAR -t "$archive" | cut -d' ' -f3) +eval "files=($list)" + +# Extract the files, creating subdirectories. The resulting files are bzip2 +# compressed, so we need to walk the list of files, and decompress them. +$MAR -x "$archive" + +num_files=${#files[*]} + +# Skip first "file" since it is actually the column header string "NAME" that +# does not correspond to an actual file in the archive. +for ((i=1; $i<$num_files; i=$i+1)); do + f=${files[$i]} + + echo " decompressing $f" + + mv -f "$f" "$f.bz2" + $BZIP2 -d "$f.bz2" +done