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 159 160 161 162 163 164
|
#! /bin/sh
# postinst script for hyperspec
#
# see: dh_installdeb(1)
set -e
. /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'.
CURRENT_HASH="1ac1666a9dc697dbd8881262cad4371bcd2e9843108b643e2ea93472ba85d7c3"
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" ] && \
gzip --test --quiet "$FILE" > /dev/null 2>&1 ; then
true
else
rm -f "$FILE"
false
fi
}
download_file()
{
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/"${FILE##*/}"
HASH=$(sha256sum "$FILE")
HASH=${HASH%% *}
if [ "$HASH" != "$CURRENT_HASH" ]; then
echo "Invalid file hash for ${FILE##*/}" 1>&2
echo "Received hash: $HASH" 1>&2
echo "Expected hash: $CURRENT_HASH" 1>&2
rm -f "$FILE"
return 1
fi
}
download_hyperspec()
{
if check_archive; then
echo Using the local file "$FILE"
return 0
fi
db_get hyperspec/downloading
if [ "${RET}" = "true" ]; then
until download_file
do
db_reset hyperspec/tryagain
db_input medium hyperspec/tryagain || \
if [ "$?" = 30 ]; then
echo "Unable to download and can't ask whether to try again." 1>&2
exit 1
else
true
fi
db_go || true
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)
if is_current_version ; 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} --no-same-owner --no-same-permissions &&
mv HyperSpec/* . )
rmdir /usr/share/doc/hyperspec/HyperSpec
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
|