1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
|
#! /bin/bash
# postinst script for hyperspec
#
# see: dh_installdeb(1)
. /usr/share/debconf/confmodule
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see /usr/share/doc/packaging-manual/
#
# quoting from the policy:
# Any necessary prompting should almost always be confined to the
# post-installation script, and should be protected with a conditional
# so that unnecessary prompting doesn't happen if a package's
# installation fails and the `postinst' is called with `abort-upgrade',
# `abort-remove' or `abort-deconfigure'.
FILE=/root/tmp/HyperSpec-7-0.tar.gz
OLD_INDEX=/usr/share/doc/hyperspec/FrontMatter/index.html
NEW_INDEX=/usr/share/doc/hyperspec/Front/index.htm
export OLD_INDEX NEW_INDEX
clean_directory()
{
rm -rf /usr/share/doc/hyperspec/Body /usr/share/doc/hyperspec/Data \
/usr/share/doc/hyperspec/FrontMatter \
/usr/share/doc/hyperspec/Graphics \
/usr/share/doc/hyperspec/HyperSpec \
/usr/share/doc/hyperspec/HyperSpec-Legalese.text \
/usr/share/doc/hyperspec/Issues \
/usr/share/doc/hyperspec/Front || true
}
is_current_version()
{
# returns true if the installed version is current
if [ -f $OLD_INDEX -o -f $NEW_INDEX ] ; then
VERSION=$(grep '<!-- Common Lisp HyperSpec (TM), version ' \
"${OLD_INDEX}" "${NEW_INDEX}" \
2> /dev/null | sed 's/.*version //;s/ -->//' | head -n 1)
if [ "X$VERSION" = "X" ] ; then
echo Error in version-checking, please report this as a bug.
exit 1
fi
if [ "$VERSION" != "7.0" ] ; then
# old version, nuke it
clean_directory
false
else
true
fi
else
false
fi
}
check_archive()
{
# check if the file is ok
if [ -s "$FILE" -a ! -L "$FILE" -a ! -O "$FILE" -a ! -G "$FILE" ] && \
gzip --test --quiet "$FILE" > /dev/null 2>&1 ; then
true
else
rm -f "$FILE"
false
fi
}
download_file()
{
check_archive
if [ $? != 0 ] ; then
echo "Downloading the hyperspec from the Internet" 1>&2
mkdir -p /root/tmp && \
wget --directory-prefix=/root/tmp --passive \
ftp://ftp.lispworks.com/pub/software_tools/reference/HyperSpec-7-0.tar.gz
STATUS=$?
if [ ${STATUS} != 0 ] ; then
echo download failed!
sleep 3
fi
return ${STATUS}
fi
}
download_hyperspec()
{
db_get hyperspec/downloading
if [ "${RET}" = "true" ]; then
until download_file
do
db_reset hyperspec/tryagain
db_input medium hyperspec/tryagain
db_go
db_get hyperspec/tryagain
if [ "${RET}" != "true" ]; then
echo "Unable to download and you don't want to try again." 1>&2
exit 1;
fi
done
else
echo "Downloaded archive not present, but not downloading." 1>&2
exit 0;
fi
}
case "$1" in
configure)
is_current_version
if [ $? = 0 ] ; then
echo Your Hyperspec documentation is current.
if [ -d /usr/share/doc/hyperspec/HyperSpec/Data/ ] ; then
echo Found broken old installation, correcting
rm -rf /usr/share/doc/hyperspec/HyperSpec
fi
else
echo No or old version of the hyperspec found. Getting newer version
clean_directory
download_hyperspec
(cd /usr/share/doc/hyperspec &&
tar zxf ${FILE} &&
mv HyperSpec/* . )
rmdir /usr/share/doc/hyperspec/HyperSpec
# fix permissions.
(cd /usr/share/doc/hyperspec &&
chown -R root:root . &&
find . -type f -print0 | xargs -0 chmod 644 &&
find . -type d -print0 | xargs -0 chmod 755 )
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
clean_directory
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 0
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0
|