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

Bug#642076: Re: Bug#642076: lsb-core: no need to remove /lib/ld-lsb-x86-64.so.[23]



tags 642076 +patch
thanks

Le 23.01.2012 21:44, Sven Joachim a écrit :
> On 2011-09-19 11:15 +0200, Colin Watson wrote:
>>
>> Nothing ever created /lib/ld-lsb-x86-64.so.[23] symlinks in the first
>> place, so as far as I can see there's no need to clean them up; the
>> problem was that the symlink *target* was wrong.  Isn't this dead code?
> 
> I don't think so, because /lib and /lib64 had been the same place in
> libc6 versions prior to 2.13-17, so there may be leftover symlinks there
> created by earlier lsb-core versions.
> 
>> (I initially thought that this was actively dangerous since /lib64 might
>> be a symlink to /lib so this would create the ld-lsb-* symlinks and then
>> delete them again, but since you depend on libc6 (>= 2.13-17) this
>> appears not to be the case.)
> 
> It would probably be better to only remove those symlinks on upgrades
> from versions < 3.2-28, and to do it before creating the new links.

Hi Colin and Sven, and thanks for your input on this bug;

I propose the attached patch to get this fixed by removing the symlinks
farm handling and replacing all symlinks by `solid` symlinks in the
packages. Please review and comment!

(I kept the removal of the supposedly-never-created symlinks in the
preinst assuming that no harm would be done anyway.)

Cheers,

OdyX



From 3520ec668ce06b9a09f9c259c27aea931cdc1edb Mon Sep 17 00:00:00 2001
From: Didier Raboud <odyx@debian.org>
Date: Fri, 2 Mar 2012 11:47:34 +0100
Subject: [PATCH] Replace lsb-core's symlink farm by package symlinks

- Drop symlink farm handling in prerm/postinst.
- Create lsb-core.preinst to delete the symlink farm before unpacking those
  from the package.
- Use debhelper's lsb-core.links.$ARCH files to create the links
- Bugfix debian/rules' usage of DEB_HOST_ARCH.

Closes: #642076
Signed-off-by: Didier Raboud <odyx@debian.org>
---
 debian/lsb-core.links.amd64       |    5 ++++
 debian/lsb-core.links.i386        |    3 ++
 debian/lsb-core.links.ia64        |    3 ++
 debian/lsb-core.links.otherarches |    3 ++
 debian/lsb-core.links.powerpc     |    3 ++
 debian/lsb-core.postinst          |   42 -------------------------------------
 debian/lsb-core.preinst           |   24 +++++++++++++++++++++
 debian/lsb-core.prerm             |   26 ----------------------
 debian/rules                      |    9 +++++++-
 9 files changed, 49 insertions(+), 69 deletions(-)
 create mode 100644 debian/lsb-core.links.amd64
 create mode 100644 debian/lsb-core.links.i386
 create mode 100644 debian/lsb-core.links.ia64
 create mode 100644 debian/lsb-core.links.otherarches
 create mode 100644 debian/lsb-core.links.powerpc
 create mode 100755 debian/lsb-core.preinst

diff --git a/debian/lsb-core.links.amd64 b/debian/lsb-core.links.amd64
new file mode 100644
index 0000000..009b344
--- /dev/null
+++ b/debian/lsb-core.links.amd64
@@ -0,0 +1,5 @@
+/lib/ld-linux.so.2 /lib/ld-lsb.so.1
+/lib/ld-linux.so.2 /lib/ld-lsb.so.2
+/lib/ld-linux.so.2 /lib/ld-lsb.so.3
+/lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.2
+/lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
diff --git a/debian/lsb-core.links.i386 b/debian/lsb-core.links.i386
new file mode 100644
index 0000000..61392d9
--- /dev/null
+++ b/debian/lsb-core.links.i386
@@ -0,0 +1,3 @@
+/lib/ld-linux.so.2 /lib/ld-lsb.so.1
+/lib/ld-linux.so.2 /lib/ld-lsb.so.2
+/lib/ld-linux.so.2 /lib/ld-lsb.so.3
diff --git a/debian/lsb-core.links.ia64 b/debian/lsb-core.links.ia64
new file mode 100644
index 0000000..6a4ffd2
--- /dev/null
+++ b/debian/lsb-core.links.ia64
@@ -0,0 +1,3 @@
+/lib/ld-linux-ia64.so.2 /lib/ld-lsb-ia64.so.1
+/lib/ld-linux-ia64.so.2 /lib/ld-lsb-ia64.so.2
+/lib/ld-linux-ia64.so.2 /lib/ld-lsb-ia64.so.3
diff --git a/debian/lsb-core.links.otherarches b/debian/lsb-core.links.otherarches
new file mode 100644
index 0000000..e910559
--- /dev/null
+++ b/debian/lsb-core.links.otherarches
@@ -0,0 +1,3 @@
+/lib/ld.so.1 /lib/ld-lsb-##ARCH##.so.1
+/lib/ld.so.1 /lib/ld-lsb-##ARCH##.so.2
+/lib/ld.so.1 /lib/ld-lsb-##ARCH##.so.3
diff --git a/debian/lsb-core.links.powerpc b/debian/lsb-core.links.powerpc
new file mode 100644
index 0000000..e0b6868
--- /dev/null
+++ b/debian/lsb-core.links.powerpc
@@ -0,0 +1,3 @@
+/lib/ld.so.1 /lib/ld-lsb-ppc32.so.1
+/lib/ld.so.1 /lib/ld-lsb-ppc32.so.2
+/lib/ld.so.1 /lib/ld-lsb-ppc32.so.3
diff --git a/debian/lsb-core.postinst b/debian/lsb-core.postinst
index 0321747..2ad788c 100755
--- a/debian/lsb-core.postinst
+++ b/debian/lsb-core.postinst
@@ -2,47 +2,6 @@
 
 set -e
 
-setup_ldso_symlink () {
-    ARCH=$DPKG_MAINTSCRIPT_ARCH
-    if [ -z "$ARCH" ]; then
-        ARCH=$(dpkg --print-architecture)
-    fi
-    case "$ARCH" in
-        s390|ppc64|sparc|sparc64|alpha|hppa|m68k|mipsel)
-            ln -sf ld.so.1 /lib/ld-lsb-$ARCH.so.1
-            ln -sf ld.so.1 /lib/ld-lsb-$ARCH.so.2
-            ln -sf ld.so.1 /lib/ld-lsb-$ARCH.so.3
-            ;;
-        powerpc)
-            ln -sf ld.so.1 /lib/ld-lsb-ppc32.so.1
-            ln -sf ld.so.1 /lib/ld-lsb-ppc32.so.2
-            ln -sf ld.so.1 /lib/ld-lsb-ppc32.so.3
-            ;;
-        i386)
-            ln -sf ld-linux.so.2 /lib/ld-lsb.so.1
-            ln -sf ld-linux.so.2 /lib/ld-lsb.so.2
-            ln -sf ld-linux.so.2 /lib/ld-lsb.so.3
-            ;;
-        amd64)
-            ln -sf ld-linux.so.2 /lib/ld-lsb.so.1
-            ln -sf ld-linux.so.2 /lib/ld-lsb.so.2
-            ln -sf ld-linux.so.2 /lib/ld-lsb.so.3
-            ln -sf ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.2
-            ln -sf ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
-            [ -L /lib/ld-lsb-x86-64.so.2 ] && rm /lib/ld-lsb-x86-64.so.2 || true
-            [ -L /lib/ld-lsb-x86-64.so.3 ] && rm /lib/ld-lsb-x86-64.so.3 || true
-            ;;
-        ia64)
-            ln -sf ld-linux-ia64.so.2 /lib/ld-lsb-ia64.so.1
-            ln -sf ld-linux-ia64.so.2 /lib/ld-lsb-ia64.so.2
-            ln -sf ld-linux-ia64.so.2 /lib/ld-lsb-ia64.so.3
-            ;;
-        *)
-            echo "ld-lsb-*.so.1 symlink for $ARCH is unknown!"
-            ;;
-    esac
-}
-
 PATH=/sbin:/usr/sbin:$PATH
 export PATH
 
@@ -56,7 +15,6 @@ case "$1" in
                 shadowconfig on >&2 || true
             fi
         fi
-        setup_ldso_symlink
         ;;
     abort-upgrade|abort-remove|abort-deconfigure)
         ;;
diff --git a/debian/lsb-core.preinst b/debian/lsb-core.preinst
new file mode 100755
index 0000000..26baa6a
--- /dev/null
+++ b/debian/lsb-core.preinst
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+  install|upgrade)
+    if dpkg --compare-versions "$2" lt "3.2+Debian30" ; then
+      # 32 bits arches
+      rm -f /lib/ld-lsb-*.so.[123]
+      # 64 bits
+      rm -f /lib64/ld-lsb-*.so.[23]
+      # legacy x86
+      rm -f /lib/ld-lsb.so.[123]
+    fi
+  ;;
+  abort-upgrade)
+  ;;
+  *)
+    echo "preinst called with unknown argument \`$1'" >&2
+    exit 1
+  ;;
+esac
+
+#DEBHELPER#
diff --git a/debian/lsb-core.prerm b/debian/lsb-core.prerm
index e6b26b6..94bf203 100644
--- a/debian/lsb-core.prerm
+++ b/debian/lsb-core.prerm
@@ -2,36 +2,11 @@
 
 set -e
 
-remove_ldso_symlink () {
-    ARCH=$DPKG_MAINTSCRIPT_ARCH
-    if [ -z "$ARCH" ]; then
-        ARCH=$(dpkg --print-architecture)
-    fi
-    case "$ARCH" in
-        s390|ia64|ppc64|sparc|sparc64|alpha|hppa|m68k|mipsel)
-            rm -f /lib/ld-lsb-$ARCH.so.[123]
-            ;;
-        powerpc)
-            rm -f /lib/ld-lsb-ppc32.so.[123]
-            ;;
-        i386)
-            rm -f /lib/ld-lsb.so.[123]
-            ;;
-        amd64)
-            rm -f /lib/ld-lsb.so.[123] /lib64/ld-lsb-x86-64.so.[23] /lib/ld-lsb-x86-64.so.[23]
-            ;;
-        *)
-            echo "ld-lsb-*.so.1 symlink for $ARCH is unknown; not removed."
-            ;;
-    esac
-}
-
 PATH=/sbin:/usr/sbin:$PATH
 export PATH
 
 case "$1" in
     remove)
-        remove_ldso_symlink
         rm -f /var/lib/lsb/facilities
         rm -f /var/lib/lsb/depends
         ;;
@@ -43,5 +18,4 @@ case "$1" in
     ;;
 esac
 
-
 #DEBHELPER#
diff --git a/debian/rules b/debian/rules
index d923da5..707fa16 100755
--- a/debian/rules
+++ b/debian/rules
@@ -9,7 +9,7 @@ derives_from_ubuntu := $(shell (dpkg-vendor --derives-from Ubuntu && echo "yes")
 # from having to guess our platform (since we know it already)
 DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
 DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-DEB_HOST_ARCH       ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
+DEB_HOST_ARCH       ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
 
 # Map Debian architectures to LSB architectures
 lsbarch=${DEB_HOST_ARCH}
@@ -54,6 +54,13 @@ ifeq ($(derives_from_ubuntu),yes)
 	cp -p lsb-base-logging-ubuntu.sh debian/lsb-base/etc/lsb-base-logging.sh
 endif
 
+override_dh_link:
+	# For many architectures, take the standard arch'ified links
+ifneq ($(filter $(DEB_HOST_ARCH), s390 ppc64 sparc sparc64 alpha hppa m68k mipsel),)
+	sed -e 's/##ARCH##/${DEB_HOST_ARCH}/' debian/lsb-core.links.otherarches > debian/lsb-core.links.${DEB_HOST_ARCH}
+endif
+	dh_link
+
 override_dh_gencontrol:
 	@echo >> debian/lsb-core.substvars "glibc=${LIBC}"
 #	@[ ${DEB_HOST_GNU_TYPE} != 'arm-linux-gnueabi' ] && echo >> debian/lsb-cxx.substvars "depends=libstdc++5" || true
-- 
1.7.2.5

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: