10139N/A#!/bin/bash
10139N/A
10139N/A# Script to generate file system usage information files (.pkgsize)
10139N/A# for use of the install-jds script to calculate the disk space
10139N/A# requirements
10139N/A
10139N/Aif [ $# = 0 -o "x$1" = "x--help" -o "x$1" = "x-h" ]; then
10139N/A echo "Usage: $0 directory..."
10139N/A echo "Calculate file system usage information files for the given directories"
10139N/A exit 1
10139N/Afi
10139N/A
10139N/ATEMPFILES=
10139N/Aregister_tempfile () {
10139N/A TEMPFILES="$TEMPFILES $1"
10139N/A}
10139N/A
10139N/Aclean_up () {
10139N/A IFS=" "
10139N/A cd /
10139N/A for f in $TEMPFILES; do
10139N/A rm -rf $TEMPFILES
10139N/A done
10139N/A}
10139N/A
10139N/Atrap clean_up HUP INT TERM ERR
10139N/A
10139N/ATEMPDIR=/tmp/.gen_pkgsize.$$
10139N/Aregister_tempfile $TEMPDIR
10139N/Amkdir -p $TEMPDIR
10139N/A
10139N/Afatal () {
10139N/A for msg in "${@}"; do
10139N/A echo $msg 1>&2
10139N/A done
10139N/A clean_up
10139N/A exit 1
10139N/A}
10139N/A
10139N/Aunpack () {
10139N/A cd $TEMPDIR
10139N/A gzip -dc "$1" | /bin/tar xf -
10139N/A}
10139N/A
10139N/Aprint_subdir () {
10139N/A cd $TEMPDIR/$3
10139N/A dummy=$(echo */*)
10139N/A echo "$dummy" | grep '\*' > /dev/null
10139N/A if [ $? != 0 ]; then
10139N/A du -sk */* | sed -e "s%^\([0-9]*\)[ ]*\(.*\)%$1 \1 $2/\2%"
10139N/A else
10139N/A du -sk * | sed -e "s%^\([0-9]*\)[ ]*\(.*\)%$1 \1 $2/\2%"
10139N/A fi
10139N/A}
10139N/A
10139N/Aprint_sizes () {
10139N/A pname=`echo "$1" | sed -e 's/\.tar\.gz$//' -e 's/\.tgz$//'`
10139N/A cd $TEMPDIR
10139N/A test ! -d "$pname" && fatal "Cannot find directory \"$pname\" after unpacking \"$1\""
10139N/A basedir=`grep '^BASEDIR=' $pname/pkginfo | cut -f2 -d=`
10139N/A if [ "x$basedir" = x/ ]; then
10139N/A basedir=
10139N/A fi
10139N/A test -d "$pname/reloc" && print_subdir "$pname" "$basedir" "$pname/reloc"
10139N/A test -d "$pname/root" && print_subdir "$pname" "$basedir" "$pname/root"
10139N/A}
10139N/A
10139N/Agen_pkgsize () {
10139N/A echo "Generating .pkgsize in $1"
10139N/A dir_pkgs=$(cd "$1"; find . -name '*.tar.gz' -print -o -name '*.tgz' -print | sed -e 's/^.\///')
10139N/A IFS="
10139N/A"
10139N/A sizefile="$1/.pkgsize"
10139N/A test ! -z "$dir_pkgs" && cat /dev/null > "$sizefile"
10139N/A for pkg in $dir_pkgs; do
10139N/A unpack "$1/$pkg" || fatal "Failed to unpack $1/$pkg"
10139N/A print_sizes "$pkg" >> "$sizefile"
10139N/A cd /
10139N/A rm -rf $TEMPDIR
10139N/A mkdir -p $TEMPDIR
10139N/A done
10139N/A}
10139N/A
10139N/A# main ()
10139N/AIFS="
10139N/A"
10139N/Amydir=`pwd`
10139N/Afor dir in "${@}"; do
10139N/A cd "$mydir"
10139N/A test ! -d "$dir" && continue
10139N/A case "$dir" in
10139N/A /*)
10139N/A gen_pkgsize "$dir"
10139N/A ;;
10139N/A *)
10139N/A gen_pkgsize "$mydir/$dir"
10139N/A ;;
10139N/A esac
10139N/Adone
10139N/A
10139N/Aclean_up
10139N/Aexit 0