diff options
Diffstat (limited to 'debian/postinst')
-rwxr-xr-x | debian/postinst | 472 |
1 files changed, 472 insertions, 0 deletions
diff --git a/debian/postinst b/debian/postinst new file mode 100755 index 0000000..7043cce --- /dev/null +++ b/debian/postinst @@ -0,0 +1,472 @@ +#! /bin/sh +# -*- Mode: Sh -*- +# postinst --- +# Author : Manoj Srivastava ( srivasta@glaurung.green-gryphon.com ) +# Created On : Fri Nov 14 11:25:07 2003 +# Created On Node : glaurung.green-gryphon.com +# Last Modified By : Manoj Srivastava +# Last Modified On : Mon Dec 1 21:50:09 2003 +# Last Machine Used: glaurung.green-gryphon.com +# Update Count : 27 +# Status : Unknown, Use with caution! +# HISTORY : +# Description : +# +# arch-tag: 5401e9ef-39cc-4aee-96a4-61dfb8f32cf7 +# +# 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; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# + +# Abort if any command returns an error value +set -e + +package_name=dist; + +if [ -z "$package_name" ]; then + print >&2 "Internal Error. Please report a bug." + exit 1; +fi + +# This script is called as the last step of the installation of the +# package. All the package's files are in place, dpkg has already done +# its automatic conffile handling, and all the packages we depend of +# are already fully installed and configured. +# 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 http://www.debian.org/doc/debian-policy/ or +# the debian-policy package +# +# 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'. + +# The following idempotent stuff doesn't generally need protecting +# against being run in the abort-* cases. + +# Install info files into the dir file +##: install-info --quiet --section "section pattern" "Section Title" \ +##: --description="Name of the document" /usr/info/${package_name}.info + +# Create stub directories under /usr/local +##: if test ! -d /usr/local/lib/${package_name}; then +##: if test ! -d /usr/local/lib; then +##: if mkdir /usr/local/lib; then +##: chown root.staff /usr/local/lib || true +##: chmod 2775 /usr/local/lib || true +##: fi +##: fi +##: if mkdir /usr/local/lib/${package_name}; then +##: chown root.staff /usr/local/lib/${package_name} || true +##: chmod 2775 /usr/local/lib/${package_name} || true +##: fi +##: fi + +# Ensure the menu system is updated +##: [ ! -x /usr/bin/update-menus ] || /usr/bin/update-menus + +# Arrange for a daemon to be started at system boot time +##: update-rc.d ${package_name} default >/dev/null + +ask_organization () { + if [ -e /usr/share/debconf/confmodule ]; then + . /usr/share/debconf/confmodule + db_capb + ok='' + # See if the old shared question still exists. + if db_get share/news/organization; then + if [ "X$RET" != "X" ]; then + orgname="$RET" + db_fget share/news/organization seen + if [ "$RET" = true ]; then + if [ "$orgname" = "--none--" ]; then + orgname="" + fi + else + orgname="" + fi + # I no longer claim this question. + db_unregister share/news/organization + fi + else + # Good. The old question is gone. + if ! db_get shared/news/organization; then + while [ ! "$ok" ]; do + retval=$(db_input low shared/news/organization) || true + if [ "$retval" = "30 question skipped" ]; then + ok=1 + fi + db_go || true + db_get shared/news/organization + if [ "X$RET" != "X" ]; then + ok=1 + break + fi + done + fi + db_fget shared/news/organization seen + if [ "$RET" = true ]; then + # The user saw and answered the question using debconf. + db_get shared/news/organization + if [ "$RET" = "--none--" ]; then + orgname="" + else + orgname="$RET" + fi + else + # Debconf did not display the question to the user. + orgname="" + fi + fi + else + # Debconf is not available so ask the question by hand. + echo "" + /bin/cat << 'EOH' + + Please type the name of your organization as you want it to + appear on the Organization line of outgoing articles/patches. + This information is stored in the configuration file + /etc/news/organization. (It is nice if this also specifies + your location. Your city name is probably sufficient if well + known.) For example: + + University of Southern North Dakota, Hoople + type in "--none--" if you do not want to specify one. + However, you shall be asked again on the next upgrade if + /etc/news/organization does not exist. + +EOH + + orgname="" + while test "X$orgname" = "X"; do + rp='Organization:' + xxxm=$dflt + case "$xxxm" in + '') echo -n "$rp " ;; + *) case "$rp" in + '') echo -n "[$xxxm] ";; + *) + if test `echo "$rp [$xxxm] " | wc -c` -ge 80; then + echo "$rp" + echo -n "[$xxxm] " + else + echo -n "$rp [$xxxm] " + fi + ;; + esac;; + esac + ans='!' + while expr "X$ans" : "X!" >/dev/null; do + read answ + set x $xxxm + shift + aok=''; eval "ans=\"$answ\"" && aok=y + case "$answ" in + "$ans") + case "$ans" in + "!") + sh + echo " " + case "$xxxm" in + '') echo -n "$rp " ;; + *) case "$rp" in + '') echo -n "[$xxxm] ";; + *) + if test `echo "$rp [$xxxm] " | wc -c` -ge 80; then + echo "$rp" + echo -n "[$xxxm] " + else + echo -n "$rp [$xxxm] " + fi + ;; + esac;; + esac + ;; + !*) + set x `expr "X$ans" : "X!\(.*\)$"` + shift + sh -c "$*" + echo " " + case "$xxxm" in + '') echo -n "$rp ";; + *) case "$rp" in + '') echo -n "[$xxxm] ";; + *) + if test `echo "$rp [$xxxm] " | wc -c` -ge 80; then + echo "$rp" + echo -n "[$xxxm] " + else + echo -n "$rp [$xxxm] " + fi + ;; + esac;; + esac + ;; + esac;; + *) + case "$aok" in + y) + echo "*** Substitution done -- please confirm." + xxxm="$ans" + ans=`echo -n "$ans" | tr '\012' ' '` + xxxm="$ans" + ans=! + ;; + *) + echo "*** Error -- try again." + ans=! + ;; + esac + case "$xxxm" in + '') echo -n "$rp " ;; + *) case "$rp" in + '') echo -n "[$xxxm] ";; + *) + if test `echo "$rp [$xxxm] " | wc -c` -ge 80; then + echo "$rp" + echo -n "[$xxxm] " + else + echo -n "$rp [$xxxm] " + fi + ;; + esac;; + esac + ;; + esac + case "$ans$xxxm$nostick" in + '') + ans=! + case "$xxxm" in + '') echo -n "$rp " ;; + *) case "$rp" in + '') echo -n "[$xxxm] ";; + *) + if test `echo "$rp [$xxxm] " | wc -c` -ge 80; then + echo "$rp" + echo -n "[$xxxm] " + else + echo -n "$rp [$xxxm] " + fi + ;; + esac;; + esac + ;; + esac + done + case "$ans" in + '') ans="$xxxm";; + esac + orgname="$ans" + done + if [ "$ans" = "--none--" ]; then + orgname="" + fi + fi + +} + +set_org_perms () { + chown root /etc/news/organization + if grep news /etc/group 2>&1 >/dev/null ; then + chgrp news /etc/news/organization + else + chgrp root /etc/news/organization + fi + chmod 0644 /etc/news/organization +} + +case "$1" in + configure) + # Configure this package. If the package must prompt the user for + # information, do it here. + # Install emacs lisp files + ##:if [ -x /usr/lib/emacsen-common/emacs-package-install ]; then + ##: /usr/lib/emacsen-common/emacs-package-install $package_name + ##:fi + + + # Activate menu-methods script + ##: chmod a+x /etc/menu-methods/${package_name} + + # Update ld.so cache + ##: ldconfig + + # Make our version of a program available + ##: update-alternatives \ + ##: --install /usr/bin/program program /usr/bin/alternative 50 \ + ##: --slave /usr/man/man1/program.1.gz program.1.gz \ + ##: /usr/man/man1/alternative.1.gz + + # Tell ucf that the file in /usr/share/foo is the latest + # maintainer version, and let it handle how to manage the real + # confuguration file in /etc. This is how a static configuration + # file can be handled: + ##:if which ucf >/dev/null 2>&1; then + ##: ucf /usr/share/${package_name}/configuration /etc/${package_name}.conf + ##:fi + + ### We could also do this on the fly. The following is from Tore + ### Anderson: + + if [ -e /usr/share/debconf/confmodule ]; then + . /usr/share/debconf/confmodule + fi + + + ### find out what the user answered. + # db_get foo/run_on_boot + # run_on_boot=$RET + # db_stop + + ### safely create a temporary file to generate our suggested + ### configuration file. + # tempfile=`tempfile` + # cat << _eof > $tempfile + ### Configuration file for Foo. + + ### this was answered by you, the user in a debconf dialogue + # RUNONBOOT=$run_on_boot + + ### this was not, as it has a sane default value. + # COLOUROFSKY=blue + + #_eof + + ### Note that some versions of debconf do not release stdin, so + ### the following invocation of ucf may not work, since the stdin + ### is never coneected to ucfr. + + ### now, invoke ucf, which will take care of the rest, and ask + ### the user if he wants to update his file, if it is modified. + #ucf $tempfile /etc/foo.conf + + ### done! now we'll just clear up our cruft. + #rm -f $tempfile + + + + # There are three sub-cases: + if test "${2+set}" != set; then + # We're being installed by an ancient dpkg which doesn't remember + # which version was most recently configured, or even whether + # there is a most recently configured version. + : + + elif test -z "$2" || test "$2" = "<unknown>"; then + # The package has not ever been configured on this system, or was + # purged since it was last configured. + : + + else + # Version $2 is the most recently configured version of this + # package. + : + + fi + + if [ ! -f /etc/news/organization ]; then + echo "" + echo "Hmmm.. You don't seem to have an /etc/news/organization file." + echo "Ususally that contains the name of your organization as " + echo "you want it to appear on the Organization line of outgoing" + echo "articles/patches." + echo "" + + : echo create directory + if test ! -d /etc/news ; then + mkdir /etc/news + chown root /etc/news + if grep news /etc/group 2>&1 >/dev/null ; then + chgrp news /etc/news + else + echo "darn, you do not have news in /etc/group" + chgrp root /etc/news + fi + chmod 2755 /etc/news + fi + + # if the organization stuff exists, then copy that over + if test -f /etc/organization ; then + echo "But you do have /etc/organization. I'll Use that." + echo "If that is not right, just edit the /etc/news/organization " + echo "after the setup is done. (/etc/organization is deprecated. You" + echo "might consider removing it if nothing else uses it)." + echo "" + cp /etc/organization /etc/news/organization + set_org_perms + else + : echo get organization name + ask_organization + if [ "X$orgname" != "X" ]; then + echo "$orgname" > /etc/news/organization + set_org_perms + fi + fi + fi + + ;; + + abort-upgrade) + # Back out of an attempt to upgrade this package FROM THIS VERSION + # to version $2. Undo the effects of "prerm upgrade $2". + : + + ;; + abort-remove) + if test "$2" != in-favour; then + echo "$0: undocumented call to \`postinst $*'" 1>&2 + exit 0 + fi + # Back out of an attempt to remove this package, which was due to + # a conflict with package $3 (version $4). Undo the effects of + # "prerm remove in-favour $3 $4". + : + + ;; + abort-deconfigure) + if test "$2" != in-favour || test "$5" != removing; then + echo "$0: undocumented call to \`postinst $*'" 1>&2 + exit 0 + fi + # Back out of an attempt to deconfigure this package, which was + # due to package $6 (version $7) which we depend on being removed + # to make way for package $3 (version $4). Undo the effects of + # "prerm deconfigure in-favour $3 $4 removing $6 $7". + : + + ;; + *) echo "$0: didn't understand being called with \`$1'" 1>&2 + exit 0;; +esac + +# Install doc base documentation +##:if which install-docs >/dev/null 2>&1; then +##: if [ -e /usr/share/doc-base/${package_name} ]; then +##: install-docs -i /usr/share/doc-base/${package_name} +##: fi +##:fi + +#DEBHELPER# + +exit 0 |