Solaris/gen-pkgsize
author laca
Tue, 08 Jun 2004 09:34:54 +0000
changeset 3037 83247a5a98b7
child 3039 98b8939e4615
permissions -rwxr-xr-x
2004-06-08 Laszlo Peter <[email protected]> * gen-pkgsize: a script to generate file system usage info files for use by the install-jds script to determine disk space requirements * install-jds: use the .pkgsize files to calculate disk space requirements * make-cinnabar-dist: run gen-pkgsize
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3037
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
     1
#!/bin/bash
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
     2
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
     3
# Script to generate file system usage information files (.pkgsize)
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
     4
# for use of the install-jds script to calculate the disk space
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
     5
# requirements
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
     6
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
     7
if [ $# = 0 -o "x$1" = "x--help" -o "x$1" = "x-h" ]; then
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
     8
    echo "Usage: $0 directory..."
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
     9
    echo "Calculate file system usage information files for the given directories"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    10
    exit 1
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    11
fi
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    12
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    13
TEMPFILES=
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    14
register_tempfile () {
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    15
    TEMPFILES="$TEMPFILES $1"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    16
}
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    17
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    18
clean_up () {
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    19
    IFS=" "
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    20
    for f in $TEMPFILES; do
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    21
	rm -rf $TEMPFILES
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    22
    done
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    23
}
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    24
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    25
trap clean_up HUP INT TERM ERR
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    26
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    27
TEMPDIR=/tmp/.gen_pkgsize.$$
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    28
register_tempfile $TEMPDIR
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    29
mkdir -p $TEMPDIR
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    30
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    31
fatal () {
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    32
    for msg in "${@}"; do
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    33
	echo $msg 1>&2
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    34
    done
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    35
    clean_up
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    36
    exit 1
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    37
}
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    38
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    39
unpack () {
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    40
    cd $TEMPDIR
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    41
    gzip -dc "$1" | /bin/tar xf -
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    42
}
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    43
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    44
print_subdir () {
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    45
    cd $TEMPDIR/$3
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    46
    dummy=$(echo */*)
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    47
    echo "$dummy" | grep '\*' > /dev/null
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    48
    if [ $? != 0 ]; then
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    49
	du -s */* | sed -e "s%^\([0-9]*\)[ 	]*\(.*\)%$1 \1 $2/\2%"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    50
    else
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    51
	du -s * | sed -e "s%^\([0-9]*\)[ 	]*\(.*\)%$1 \1 $2/\2%"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    52
    fi
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    53
}
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    54
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    55
print_sizes () {
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    56
    pname=`echo "$1" | sed -e 's/\.tar\.gz$//' -e 's/\.tgz$//'`
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    57
    cd $TEMPDIR
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    58
    test ! -d $pname && fatal "Cannot find directory \"$pname\" after unpacking \"$1\""
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    59
    basedir=`grep '^BASEDIR=' $pname/pkginfo | cut -f2 -d=`
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    60
    if [ "x$basedir" = x/ ]; then
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    61
	basedir=
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    62
    fi
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    63
    test -d "$pname/reloc" && print_subdir "$pname" "$basedir" "$pname/reloc"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    64
    test -d "$pname/root" && print_subdir "$pname" "$basedir" "$pname/root"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    65
}
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    66
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    67
gen_pkgsize () {
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    68
    echo "Generating .pkgsize in $1"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    69
    dir_pkgs=$(cd "$1"; find . -name 'SUNW*.tar.gz' -print -o -name 'SUNW*.tgz' -print | sed -e 's/^.\///')
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    70
    IFS=" 	
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    71
"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    72
    sizefile="$1/.pkgsize"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    73
    cat /dev/null > "$sizefile"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    74
    for pkg in $dir_pkgs; do
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    75
	unpack "$1/$pkg" || fatal "Failed to unpack $1/$pkg"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    76
	print_sizes "$pkg" >> "$sizefile"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    77
	rm -rf $TEMPDIR
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    78
	mkdir -p $TEMPDIR
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    79
    done
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    80
}
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    81
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    82
# main ()
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    83
IFS=" 	
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    84
"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    85
mydir=`pwd`
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    86
for dir in "${@}"; do
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    87
    case "$dir" in
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    88
	/*)
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    89
	    gen_pkgsize "$dir"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    90
	    ;;
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    91
	*)
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    92
	    gen_pkgsize "$mydir/$dir"
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    93
	    ;;
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    94
    esac
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    95
done
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    96
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    97
clean_up
83247a5a98b7 2004-06-08 Laszlo Peter <[email protected]>
laca
parents:
diff changeset
    98
exit 0