[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

r869 - in glibc-package/branches/glibc-2.3.4/debian: . debhelper.in rules.d



Author: gotom
Date: 2005-04-02 05:39:04 +0000 (Sat, 02 Apr 2005)
New Revision: 869

Modified:
   glibc-package/branches/glibc-2.3.4/debian/changelog
   glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc-otherbuild.postinst
   glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc-otherbuild.postrm
   glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc.postinst
   glibc-package/branches/glibc-2.3.4/debian/rules.d/debhelper.mk
Log:
glibc (2.3.4-3) experimental; urgency=low

  * GOTO Masanori <gotom@debian.org>

    * The complete libc6 installation breakage is fixed when hwcap packages
      (libc6-i686 and libc6-sparcv9/sparcv9b) is installed.  It introduced
      /etc/ld.so.hwcappkgs to track hwcap packages.
      - debian/debhelper.in/libc.postinst: Create /etc/ld.so.hwcappkgs if
        such file is not existed.  Check hwcap packages and decide to keep
        /etc/ld.so.nohwcap.
      - debian/debhelper.in/libc-otherbuild.postinst: When it's configured,
        check /etc/ld.so.hwcappkgs and decides to keep /etc/ld.so.nohwcap.
      - debian/debhelper.in/libc-otherbuild.postrm: When it's removed,
        check /etc/ld.so.hwcappkgs and search other hwcap package's version
        consistency.  Then it decides to remove /etc/ld.so.nohwcap.
      - debian/rules.d/debhelper.mk: Include "libc-" into OPT string
        replacement.



Modified: glibc-package/branches/glibc-2.3.4/debian/changelog
===================================================================
--- glibc-package/branches/glibc-2.3.4/debian/changelog	2005-03-29 08:36:07 UTC (rev 868)
+++ glibc-package/branches/glibc-2.3.4/debian/changelog	2005-04-02 05:39:04 UTC (rev 869)
@@ -1,3 +1,23 @@
+glibc (2.3.4-3) experimental; urgency=low
+
+  * GOTO Masanori <gotom@debian.org>
+
+    * The complete libc6 installation breakage is fixed when hwcap packages
+      (libc6-i686 and libc6-sparcv9/sparcv9b) is installed.  It introduced
+      /etc/ld.so.hwcappkgs to track hwcap packages.
+      - debian/debhelper.in/libc.postinst: Create /etc/ld.so.hwcappkgs if
+        such file is not existed.  Check hwcap packages and decide to keep
+        /etc/ld.so.nohwcap.
+      - debian/debhelper.in/libc-otherbuild.postinst: When it's configured,
+        check /etc/ld.so.hwcappkgs and decides to keep /etc/ld.so.nohwcap.
+      - debian/debhelper.in/libc-otherbuild.postrm: When it's removed,
+        check /etc/ld.so.hwcappkgs and search other hwcap package's version
+        consistency.  Then it decides to remove /etc/ld.so.nohwcap.
+      - debian/rules.d/debhelper.mk: Include "libc-" into OPT string
+        replacement.
+
+ -- GOTO Masanori <gotom@debian.org>  Tue, 29 Mar 2005 17:22:25 +0900
+
 glibc (2.3.4-2) experimental; urgency=low
 
   * GOTO Masanori <gotom@debian.org>

Modified: glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc-otherbuild.postinst
===================================================================
--- glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc-otherbuild.postinst	2005-03-29 08:36:07 UTC (rev 868)
+++ glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc-otherbuild.postinst	2005-04-02 05:39:04 UTC (rev 869)
@@ -2,14 +2,59 @@
 
 set -e
 
+checkpkgver () {
+    local status pkg
+    pkg=$1
+    status=$(dpkg -s $pkg 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g')
+    if [ -n "$status" ] && [ "$status" != "not-installed" ] && [ "$status" != "config-files" ]; then
+	echo $(dpkg -s $pkg 2>/dev/null | grep ^Version: | sed -e 's/^Version: *//');
+    fi
+}
+
 if [ "$1" = "configure" ]
 then
-  opt=OPT
-  if [ -f /etc/ld.so.nohwcap ]; then
-    grep -v "^$opt\$" /etc/ld.so.nohwcap > /etc/ld.so.nohwcap.tmp || true
-    mv -f /etc/ld.so.nohwcap.tmp /etc/ld.so.nohwcap
-    test -s /etc/ld.so.nohwcap || rm -f /etc/ld.so.nohwcap
-  fi
+    opt=OPT
+    curver=CURRENT_VER
+
+    if [ -f /etc/ld.so.hwcappkgs ]; then
+	rm -f /etc/ld.so.hwcappkgs.tmp
+	while read LINE; do
+	    case $LINE in
+		\#*|"") continue
+	    esac
+	    set -- $LINE
+	    pkg=$1
+	    if [ "$pkg" = "$opt" ]; then
+		# this package
+		ver=$curver
+		isrecorded=yes
+	    else
+		# other packages
+		ver=$(checkpkgver $pkg)
+		if [ -n "$ver" ]; then
+		    dpkg --compare-versions $curver ne $ver && optunmatch=yes
+		fi
+	    fi
+	    echo "$pkg $ver" >> /etc/ld.so.hwcappkgs.tmp
+	done < /etc/ld.so.hwcappkgs
+	if [ "$isrecorded" != yes ]; then
+	    echo "$opt $curver" >> /etc/ld.so.hwcappkgs.tmp
+	fi
+	mv /etc/ld.so.hwcappkgs.tmp /etc/ld.so.hwcappkgs
+    else
+	# libc6 did not create ld.so.hwcappkgs correctly or ld.so.hwcappkgs
+	# was unexpectedly removed.  Don't remove ld.so.nohwcap.
+	optunmatch=yes
+    fi
+
+    # nohwcap during upgrade.
+    if [ -f /etc/ld.so.nohwcap ]; then
+	grep -v "^$opt\$" /etc/ld.so.nohwcap > /etc/ld.so.nohwcap.tmp || true
+	mv -f /etc/ld.so.nohwcap.tmp /etc/ld.so.nohwcap
+	if [ "$optunmatch" != "yes" ]; then
+	    test -s /etc/ld.so.nohwcap || rm -f /etc/ld.so.nohwcap
+	fi
+    fi
 fi
 
 #DEBHELPER#

Modified: glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc-otherbuild.postrm
===================================================================
--- glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc-otherbuild.postrm	2005-03-29 08:36:07 UTC (rev 868)
+++ glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc-otherbuild.postrm	2005-04-02 05:39:04 UTC (rev 869)
@@ -2,8 +2,48 @@
 
 set -e
 
+checkpkgver () {
+    local status pkg
+    pkg=$1
+    status=$(dpkg -s $pkg 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g')
+    if [ -n "$status" ] && [ "$status" != "not-installed" ] && [ "$status" != "config-files" ]; then
+	echo $(dpkg -s $pkg 2>/dev/null | grep ^Version: | sed -e 's/^Version: *//');
+    fi
+}
+
 if [ "$1" = "remove" ]; then
-    if [ -f /etc/ld.so.nohwcap ] && [ ! -s /etc/ld.so.nohwcap ]; then
+    opt=OPT
+    curver=CURRENT_VER
+
+    if [ -f /etc/ld.so.hwcappkgs ]; then
+	# Remove this package's entry
+	grep -v "^$opt " /etc/ld.so.hwcappkgs > /etc/ld.so.hwcappkgs.tmp
+	mv /etc/ld.so.hwcappkgs.tmp /etc/ld.so.hwcappkgs
+
+	# Check other hwcap packges are consistent.
+	while read LINE; do
+	    case $LINE in
+		\#*|"") continue
+	    esac
+	    set -- $LINE
+	    pkg=$1
+	    if [ -z "$prever" ]; then
+		prever=$(checkpkgver $pkg)
+	    else
+		ver=$(checkpkgver $pkg)
+		if [ -n "$ver" ]; then
+		    dpkg --compare-versions $prever ne $ver && optunmatch=yes
+		fi
+	    fi
+	done < /etc/ld.so.hwcappkgs
+    else
+	# libc6 did not create ld.so.hwcappkgs correctly or ld.so.hwcappkgs
+	# was unexpectedly removed.  Don't remove ld.so.nohwcap.
+	optunmatch=yes
+    fi
+
+    # Remove ld.so.nohwcap
+    if [ -f /etc/ld.so.nohwcap ] && [ ! -s /etc/ld.so.nohwcap ] && [ "$optunmatch" != yes ]; then
 	rm -f /etc/ld.so.nohwcap
     fi
 fi

Modified: glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc.postinst
===================================================================
--- glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc.postinst	2005-03-29 08:36:07 UTC (rev 868)
+++ glibc-package/branches/glibc-2.3.4/debian/debhelper.in/libc.postinst	2005-04-02 05:39:04 UTC (rev 869)
@@ -145,6 +145,15 @@
     echo ""
 }
 
+checkpkgver () {
+    local status pkg
+    pkg=$1
+    status=$(dpkg -s $pkg 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g')
+    if [ -n "$status" ] && [ "$status" != "not-installed" ] && [ "$status" != "config-files" ]; then
+	echo $(dpkg -s $pkg 2>/dev/null | grep ^Version: | sed -e 's/^Version: *//');
+    fi
+}
+
 # We remove a relic of the past /usr/doc/<package> symlinks.
 # This script should keep at least until sarge release.
 package=LIBC
@@ -180,26 +189,61 @@
     # If they're unmatched, we keep /etc/ld.so.nohwcap file until libc-opt
     # package is installed or removed.
     if [ -f /etc/ld.so.nohwcap ]; then
-	curver=CURRENT_VER
-	case "`uname -m`" in
-	    i?86)
-		optpkgs=libc6-i686
-		;;
-	    sparc*)
-		optpkgs="libc6-sparcv9 libc6-sparcv9b"
-		;;
-	esac
-	if [ -n "$optpkgs" ]; then
-	    for optpkg in $optpkgs; do
-		status=$(dpkg -s $optpkg 2>/dev/null | grep ^Status: | sed -e 's/^Status: \(.*\) \(.*\) \(.*\)/\3/g')
-		if [ -n "$status" ] && \
-		   [ "$status" != "not-installed" ] && [ "$status" != "config-files" ]; then
-		    optver=$(dpkg -s $optpkg 2>/dev/null | grep ^Version: | sed -e 's/^Version: *//');
-		    dpkg --compare-versions $curver ne $optver && optunmatch=yes
+	# We check the availability of ld.so.hwcappkgs.  If it's not existed,
+	# it's first time to install ld.so.hwcappkgs aware packages.  We record
+	# all current hwcap package status.
+	if [ ! -f /etc/ld.so.hwcappkgs ]; then
+	    case "`uname -m`" in
+		i?86)
+		    pkgs="libc6 libc6-i686"
+		    ;;
+		sparc*)
+		    pkgs="libc6 libc6-sparcv9 libc6-sparcv9b"
+		    ;;
+	    esac
+	    if [ -n "$pkgs" ]; then
+		for pkg in $pkgs; do
+		    ver=$(checkpkgver $pkg)
+		    if [ -n "$ver" ]; then
+			echo "$pkg $ver" >> /etc/ld.so.hwcappkgs
+			new_hwcappkgs=yes
+		    fi
+		done
+	    fi
+	fi
+
+	# If ld.so.hwcappkgs is existed, it may have one or more opt packages.
+	# Update the current package's version, and compare the consistency of
+	# those optimized packages.  If inconsistency is found, keep
+	# /etc/ld.so.nohwcap.
+	if [ -f /etc/ld.so.hwcappkgs ]; then
+	    curver=CURRENT_VER
+	    rm -f /etc/ld.so.hwcappkgs.tmp
+	    while read LINE; do
+		case $LINE in
+		    \#*|"") continue
+		esac
+		set -- $LINE
+		pkg=$1; ver=$2
+		if [ "$pkg" = "$package" ]; then
+		    # libc6
+		    ver=$curver
+		    isrecorded=yes
+		else
+		    if [ "$new_hwcappkgs" != yes ]; then
+			ver=$(checkpkgver $pkg)
+		    fi
+		    dpkg --compare-versions $curver ne $ver && optunmatch=yes
 		fi
-	    done
-        fi
+		echo "$pkg $ver" >> /etc/ld.so.hwcappkgs.tmp
+	    done < /etc/ld.so.hwcappkgs
+	    if [ "$isrecorded" != yes ]; then
+		echo "$package $curver" >> /etc/ld.so.hwcappkgs.tmp
+	    fi
+	    mv /etc/ld.so.hwcappkgs.tmp /etc/ld.so.hwcappkgs
+	fi
 
+	# nohwcap during upgrade.
 	grep -v '^glibc$' /etc/ld.so.nohwcap > /etc/ld.so.nohwcap.tmp || true
 	mv /etc/ld.so.nohwcap.tmp /etc/ld.so.nohwcap
 	if [ "$optunmatch" != "yes" ]; then

Modified: glibc-package/branches/glibc-2.3.4/debian/rules.d/debhelper.mk
===================================================================
--- glibc-package/branches/glibc-2.3.4/debian/rules.d/debhelper.mk	2005-03-29 08:36:07 UTC (rev 868)
+++ glibc-package/branches/glibc-2.3.4/debian/rules.d/debhelper.mk	2005-04-02 05:39:04 UTC (rev 869)
@@ -192,8 +192,11 @@
 	    cp debian/debhelper.in/libc-otherbuild.preinst debian/$(libc)-$$x.preinst ; \
 	    cp debian/debhelper.in/libc-otherbuild.postinst debian/$(libc)-$$x.postinst ; \
 	    cp debian/debhelper.in/libc-otherbuild.postrm debian/$(libc)-$$x.postrm ; \
-	    sed -e "s#OPT#$$x#" -i debian/$(libc)-$$x.preinst; \
-	    sed -e "s#OPT#$$x#" -i debian/$(libc)-$$x.postinst; \
+	    sed -e "s#OPT#$(libc)-$$x#" -i debian/$(libc)-$$x.preinst; \
+	    sed -e "s#OPT#$(libc)-$$x#" -i debian/$(libc)-$$x.postinst; \
+	    sed -e "s#OPT#$(libc)-$$x#" -i debian/$(libc)-$$x.postrm; \
+	    sed -e "s#CURRENT_VER#$(DEB_VERSION)#" -i debian/$(libc)-$$x.postinst; \
+	    sed -e "s#CURRENT_VER#$(DEB_VERSION)#" -i debian/$(libc)-$$x.postrm; \
 	  fi; \
 	  sed -e "s#TMPDIR#debian/tmp-$$x#" -i $$z; \
 	  sed -e "s#DEB_SRCDIR#$(DEB_SRCDIR)#" -i $$z; \



Reply to: