From dce096166f9d49ecf66cafb79a0e7cb276670696 Mon Sep 17 00:00:00 2001 From: Manoj Srivastava Date: Thu, 16 Jun 2005 05:07:09 +0000 Subject: [PATCH] Fixed an upgrade bug when /usr/doc happens to be a symlink, and does not point to /usr/share/doc. A couple of people were bitten by this. Author: srivasta Date: 2000/02/29 04:35:00 Fixed an upgrade bug when /usr/doc happens to be a symlink, and does not point to /usr/share/doc. A couple of people were bitten by this. git-archimport-id: srivasta@debian.org--etch/debian-policy--devel--3.0--patch-46 --- debian/changelog | 7 ++++ debian/postinst.in | 87 +++++++++++++++++++++++++++++++++++++++++++--- debian/rules | 6 ++-- 3 files changed, 94 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index 8029173..0c7bdb9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +debian-policy (3.1.1.3) unstable; urgency=low + + * Fixed an upgrade bug when /usr/doc happens to be a symlink, and does + not point to /usr/share/doc. A couple of people were bitten by this. + + -- Manoj Srivastava Mon, 28 Feb 2000 22:27:05 -0600 + debian-policy (3.1.1.2) unstable; urgency=low * Correct missing in packaging.sgml (closes: #51091) diff --git a/debian/postinst.in b/debian/postinst.in index 51f814d..9b280c9 100644 --- a/debian/postinst.in +++ b/debian/postinst.in @@ -5,9 +5,9 @@ # Created On : Thu Oct 29 15:23:36 1998 # Created On Node : tiamat.datasync.com # Last Modified By : Manoj Srivastava -# Last Modified On : Thu Oct 29 15:28:24 1998 -# Last Machine Used: tiamat.datasync.com -# Update Count : 3 +# Last Modified On : Mon Feb 28 22:32:47 2000 +# Last Machine Used: glaurung.green-gryphon.com +# Update Count : 5 # Status : Unknown, Use with caution! # HISTORY : # Description : @@ -26,12 +26,91 @@ PACKAGE=#PACKAGE# # its automatic conffile handling, and all the packages we depend of # are already fully installed and configured. +package_name=debian-policy +if [ -z "package_name" ]; then + print >&2 "Internal Error. Please report a bug." + exit 1; +fi + +#perl -e 'print readlink("/usr/doc/'$package_name'"), "\n"; ' case "$1" in configure) # Configure this package. If the package must prompt the user for # information, do it here. - : + + if [ -d /usr/doc ]; then + # Well, we still need to handle this. At this point, /usr/doc + # can be a symlink + + if [ -d /usr/share/doc/$package_name ]; then + # So the new doc dir exists, goody + + # well, either one of these is a symlink, they can be + # pointing off _anywhere_ + cd /usr/doc/; + target_dir=$(/bin/pwd); + cd /usr/share/doc + starget_dir=$(/bin/pwd); + cd / + + # Well, make sure that we do not get tripped up by the symlink + if [ -L /usr/doc/$package_name ]; then + rm -f /usr/doc/$package_name + fi + + if [ "$target_dir" != "$starget_dir" ]; then + # Ok. The directories are in different locations + if [ -d /usr/doc/$package_name ]; then + echo "Yikes! The old directory, /usr/doc/$package_name," + echo "has not ben removed! This is an error; attempting" + echo "repairs." + find /usr/doc/$package_name/ -type f -name .dhelp \ + -exec rm {} \; + find /usr/doc/$package_name/ -type d -depth \ + -exec rmdir --ignore-fail-on-non-empty {} \; + + if [ -d /usr/doc/$package_name ]; then + cat <