]> git.donarmstrong.com Git - debian/debian-policy.git/commitdiff
Fixed an upgrade bug when /usr/doc happens to be a symlink, and does not point to...
authorManoj Srivastava <srivasta@debian.org>
Thu, 16 Jun 2005 05:07:09 +0000 (05:07 +0000)
committerManoj Srivastava <srivasta@debian.org>
Thu, 16 Jun 2005 05:07:09 +0000 (05:07 +0000)
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
debian/postinst.in
debian/rules

index 80291737c21fe8173702d686c435ea5a5e6b4b87..0c7bdb997e7cbe5e0e9f807ba4f8bff3e21f1ade 100644 (file)
@@ -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 <srivasta@debian.org>  Mon, 28 Feb 2000 22:27:05 -0600
+
 debian-policy (3.1.1.2) unstable; urgency=low
 
   * Correct missing </chapt> in packaging.sgml (closes: #51091)
index 51f814d7d9e614377326243d3898a27e8caf5679..9b280c915de348505656f500c1c887f0fb7af5b5 100644 (file)
@@ -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 <<EOF 
+Failed repairs. There are old files in /usr/doc/$package_name/ created
+by you or another script. I can copy them over to the new location
+/usr/share/doc/$package_name, if you wish, preserving your versions of
+the files.  No files shall be over written, instead, backup versions
+shall be created in /usr/share/doc/$package_name as needed.
+
+Shall I copy the files over [Yn]?
+EOF
+                       read answer;
+                       case "$answer" in
+                           [Nn]*)
+                               echo "Not copying over, aborting";
+                               exit 1;
+                               ;;      
+                           *)
+                               cp -a --backup=t /usr/doc/$package_name  \
+                                   /usr/share/doc/$package_name/.. ;
+                               rm -rf /usr/doc/$package_name;
+                       esac
+                   fi
+               fi
+
+               if [ -e /usr/doc/$package_name ]; then
+                   echo "/usr/doc/$package_name still exists"
+                   if [ -L /usr/doc/$package_name ]; then
+                       echo "it is a symbolic link, overwriting"
+                       ln -sf ../share/doc/$package_name /usr/doc/$package_name
+                   else
+                       echo "This is an error. Aborting"
+                       exit 1
+                   fi
+               fi
+               # File unexists. Free to go ahead and create link
+               ln -sf ../share/doc/$package_name /usr/doc/$package_name
+
+           fi
+       fi
+    fi
+
 
     if [ -x /usr/sbin/install-docs ]; then
        /usr/sbin/install-docs -i /usr/share/doc-base/$PACKAGE
index 885fd6ddcab4a1450ee7f094f0fe0d3d787d5e6e..5def3f751392d6ab3d4f5e501c88caeb34ca59c7 100755 (executable)
@@ -108,7 +108,8 @@ binary-arch:        build
 
 binary-indep:  stamp-policy stamp-packaging
 stamp-policy:  build
-       @test root = "`whoami`" || (echo need root priviledges; exit 1)
+       @test $$(id | sed -e 's/(.*$$//' -e 's/^uid=//') || \
+               (echo need root priviledges; exit 1)
        $(checkdir)
        test -f stamp-build     || $(MAKE) -f        debian/rules build
        -rm -rf                 $(TMPTOP)
@@ -158,7 +159,8 @@ stamp-policy:  build
        touch              stamp-policy
 
 stamp-packaging:  build
-       @test root = "`whoami`" || (echo need root priviledges; exit 1)
+       @test $$(id | sed -e 's/(.*$$//' -e 's/^uid=//') || \
+               (echo need root priviledges; exit 1)
        $(checkdir)
        test -f stamp-build     || $(MAKE) -f        debian/rules build
        -rm -rf                 $(PTMPTOP)