You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
4.0 KiB
181 lines
4.0 KiB
18 years ago
|
#!/bin/sh
|
||
17 years ago
|
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
||
18 years ago
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
||
17 years ago
|
#
|
||
17 years ago
|
# Filename: package/.../bize/bize.sh
|
||
13 years ago
|
# Copyright (C) 2008 - 2012 The OpenSDE Project
|
||
18 years ago
|
# Copyright (C) 2004 - 2006 The T2 SDE Project
|
||
17 years ago
|
#
|
||
18 years ago
|
# More information can be found in the files COPYING and README.
|
||
17 years ago
|
#
|
||
18 years ago
|
# This program is free software; you can redistribute it and/or modify
|
||
|
# it under the terms of the GNU General Public License as published by
|
||
|
# the Free Software Foundation; version 2 of the License. A copy of the
|
||
|
# GNU General Public License can be found in the file COPYING.
|
||
17 years ago
|
# --- SDE-COPYRIGHT-NOTE-END ---
|
||
18 years ago
|
|
||
|
bize_usage()
|
||
|
{
|
||
|
echo "usage: bize -i [-t] [-v] [-f] [-R root] package1.tar.bz2 ..." 1>&2
|
||
|
echo " bize -r [-t] [-v] [-f] [-R root] package1 ..." 1>&2
|
||
|
}
|
||
|
|
||
|
bize_remove()
|
||
|
{
|
||
|
local line base tag md5s="$adm/md5sums/$pkg"
|
||
|
|
||
|
if [ "$keep" ] ; then
|
||
|
if [ ! -f "$md5s" ] ; then
|
||
|
echo "$0: $md5s: no such file, skipping remove" 1>&2
|
||
|
return
|
||
|
fi
|
||
|
|
||
|
(cd "$root/" && md5sum -c "var/adm/md5sums/$pkg" 2> /dev/null) |
|
||
|
while read line ; do
|
||
|
base="${line%: *}"
|
||
|
stat="${line##*: }"
|
||
|
file="$root/$base"
|
||
|
if [ -z "$base" -o -z "$stat" ] ; then
|
||
|
echo "$0: invalid md5sum output '$line'" 1>&2
|
||
|
elif [ -f "$file" -a ! -L "$file" ] ; then
|
||
|
if [ "$stat" = OK ] ; then
|
||
|
$unlink "$file"
|
||
|
elif [ "$stat" != FAILED ] ; then
|
||
|
echo "$0: $file: $stat"
|
||
|
elif [ "$test" ] ; then
|
||
|
echo "$0: $file: modified, skipping"
|
||
|
fi
|
||
|
fi
|
||
|
done
|
||
|
fi
|
||
|
|
||
|
sort -r "$list" | while read tag base ; do
|
||
|
file="$root/$base"
|
||
|
if [ "$tag" != "$pkg:" ] ; then
|
||
|
echo "$0: invalid tag '$tag' in $list" 1>&2
|
||
|
elif [ -z "$base" ] ; then
|
||
|
echo "$0: missing file name in $list" 1>&2
|
||
|
elif [ -L "$file" ] ; then
|
||
|
$unlink "$file"
|
||
|
elif [ -d "$file" ] ; then
|
||
|
$test rmdir $voption "$file"
|
||
|
elif [ "${base#var/adm/}" != "$base" -a -f "$file" ] ; then
|
||
|
$unlink "$file"
|
||
|
elif [ "$keep" -a -f "$file" ] ; then
|
||
|
[ "$test" ] || echo "$0: $file: modified, skipping"
|
||
|
else
|
||
|
$unlink "$file"
|
||
|
fi
|
||
|
done
|
||
|
}
|
||
|
|
||
|
bize_install()
|
||
|
{
|
||
|
if [ ! -f "$arch" ] ; then
|
||
|
echo "$0: $arch: no such file, skipping install" 1>&2
|
||
|
return
|
||
|
fi
|
||
|
|
||
|
pkg="${arch%.tar.bz2}"
|
||
|
if [ "$arch" = "$pkg" ] ; then
|
||
|
echo "$0: $arch: not a .tar.bz2 file" 1>&2
|
||
|
return
|
||
|
fi
|
||
|
pkg="${pkg%-[0-9]*}"
|
||
|
pkg="${pkg##*/}"
|
||
|
|
||
|
if [ -z "$pkg" ] ; then
|
||
|
echo "$0: $arch: missing package name" 1>&2
|
||
|
return
|
||
|
fi
|
||
|
[ "${arch#-}" = "$arch" ] || arch="./$arch"
|
||
17 years ago
|
|
||
18 years ago
|
list="$adm/flists/$pkg"
|
||
|
if [ -f "$list" ] ; then
|
||
|
[ "$verbose" ] && echo "updating $pkg ..."
|
||
|
bize_remove
|
||
|
else
|
||
|
[ "$verbose" ] && echo "installing $pkg ..."
|
||
|
fi
|
||
|
|
||
|
$test mkdir -p$verbose "$root/"
|
||
|
if [ "$test" ] ; then
|
||
|
echo "bzip2 -c -d $arch | tar $taropt -C $root/"
|
||
|
else
|
||
|
bzip2 -c -d "$arch" | tar $taropt -C "$root/"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
bize_uninstall()
|
||
|
{
|
||
|
[ "$verbose" ] && echo "removing $pkg"
|
||
|
list="$adm/flists/$pkg"
|
||
|
if [ -f "$list" ] ; then
|
||
|
bize_remove
|
||
|
else
|
||
|
echo "$0: $list: no such file, skipping remove" 1>&2
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
bize_main()
|
||
|
{
|
||
|
local which=which file arch list="sort rm rmdir mkdir tar bzip2"
|
||
|
local install remove test verbose voption keep=k root=/ taropt
|
||
|
|
||
|
while [ "$1" ] ; do
|
||
|
case "$1" in
|
||
|
-i) install=1 ;;
|
||
|
-r) remove=1 ;;
|
||
|
-t) test=echo ;;
|
||
17 years ago
|
-f) keep= ;;
|
||
18 years ago
|
-v) verbose=v ; voption=-v ;;
|
||
|
-R) shift ; root="$1" ;;
|
||
|
-R*) root="${1#-R}" ;;
|
||
|
--) break ;;
|
||
|
-*) bize_usage ; return 1 ;;
|
||
|
*) break;;
|
||
|
esac
|
||
|
shift
|
||
|
done
|
||
|
|
||
|
if type sh > /dev/null 2>&1 ; then
|
||
|
which=type
|
||
|
elif ! which sh > /dev/null ; then
|
||
|
echo "$0: unable to find 'type' or 'which'" 1>&2
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
[ "$keep" ] && list="$list md5sum"
|
||
|
for file in $list ; do
|
||
|
if ! $which $file > /dev/null ; then
|
||
|
echo "$0: unable to find '$file'" 1>&2
|
||
|
return 1
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [ "$install" = "$remove" -o -z "$root" -o -z "$*" ] ; then
|
||
|
bize_usage
|
||
|
return 1
|
||
|
fi
|
||
|
|
||
|
root="${root%/}"
|
||
|
[ "${root#-}" = "$root" ] || root="./$root"
|
||
|
|
||
|
local adm="$root/var/adm" unlink="$test rm -f$verbose" pkg
|
||
|
|
||
|
if [ "$install" ] ; then
|
||
|
taropt="xp${verbose}${keep}"
|
||
|
for arch do
|
||
|
bize_install
|
||
|
done
|
||
|
else
|
||
|
for pkg do
|
||
|
bize_uninstall
|
||
|
done
|
||
|
fi
|
||
|
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
bize_main "$@"
|