[petsc] 04/05: use distinct soname for library with complex numbers

Drew Parsons dparsons at moszumanska.debian.org
Thu Oct 8 02:44:43 UTC 2015


This is an automated email from the git hooks/post-receive script.

dparsons pushed a commit to branch master
in repository petsc.

commit fa4905798c94154cbae267150571d4c52b237dd6
Author: Drew Parsons <dparsons at debian.org>
Date:   Tue Oct 6 03:16:12 2015 +0800

    use distinct soname for library with complex numbers
    
    With and without support for complex numbers, the two libraries are
    binary-incompatible.  Executables compiled against one will crash when
    run using the other.
    
    When removing alternatives, use --remove with a path, to enable
    automatic updating to remaining alternatives, not --remove-all.
---
 debian/libpetsc-complex-3.6.2-dev.postinst | 13 +++++++------
 debian/libpetsc-complex-3.6.2-dev.prerm    |  9 ++++++++-
 debian/libpetsc-complex-3.6.postinst       |  4 ++--
 debian/libpetsc-complex-3.6.prerm          | 11 ++++++-----
 debian/libpetsc3.6.2-dbg.prerm             |  8 +++++++-
 debian/libpetsc3.6.2-dev.prerm             |  8 +++++++-
 debian/libpetsc3.6.prerm                   | 11 ++++++-----
 debian/rules                               |  2 +-
 8 files changed, 44 insertions(+), 22 deletions(-)

diff --git a/debian/libpetsc-complex-3.6.2-dev.postinst b/debian/libpetsc-complex-3.6.2-dev.postinst
index f78b9d5..37c3eef 100644
--- a/debian/libpetsc-complex-3.6.2-dev.postinst
+++ b/debian/libpetsc-complex-3.6.2-dev.postinst
@@ -8,12 +8,13 @@ PETSC_COMPLEX_ARCH=${PETSC_ARCH}-complex
 
 # Make alternatives links
 if [ "$1" = "configure" ]; then
-update-alternatives --install /usr/lib/petsc petsc /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_COMPLEX_ARCH} 3620 \
-  --slave /usr/lib/libpetsc.so libpetsc.so /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc-complex.so.${PETSC_VERSION} \
-  --slave /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc.so libpetsc.so.multiarch /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc-complex.so.${PETSC_VERSION} \
-  --slave /usr/include/petsc petscinclude /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_COMPLEX_ARCH}/include \
-  --slave /usr/lib/pkgconfig/PETSc.pc PETSc.pc /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_COMPLEX_ARCH}/lib/pkgconfig/PETSc.pc \
-  --slave /usr/share/octave/site/m/petsc petsc-octave /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_COMPLEX_ARCH}/share/petsc/matlab
+update-alternatives --install /usr/lib/petsc-complex petsc-complex /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_COMPLEX_ARCH} 3620 \
+  --slave /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc.so libpetsc-complex.so /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc-complex.so.${PETSC_VERSION} \
+  --slave /usr/include/petsc-complex petsc-complex-include /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_COMPLEX_ARCH}/include \
+  --slave /usr/lib/pkgconfig/PETSc-complex.pc PETSc-complex.pc /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_COMPLEX_ARCH}/lib/pkgconfig/PETSc.pc \
+
+update-alternatives --install /usr/share/octave/site/m/petsc petsc-octave /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_COMPLEX_ARCH}/share/petsc/matlab 3620
+
 fi
 
 
diff --git a/debian/libpetsc-complex-3.6.2-dev.prerm b/debian/libpetsc-complex-3.6.2-dev.prerm
index 066a26e..b8501fd 100644
--- a/debian/libpetsc-complex-3.6.2-dev.prerm
+++ b/debian/libpetsc-complex-3.6.2-dev.prerm
@@ -1,8 +1,15 @@
 #!/bin/sh -e
 
+DEB_HOST_MULTIARCH=__DEB_HOST_MULTIARCH__
+
+PETSC_VERSION=__PETSC_VERSION__
+PETSC_ARCH=${DEB_HOST_MULTIARCH}
+PETSC_COMPLEX_ARCH=${PETSC_ARCH}-complex
+
 # Remove alternatives links
 if [ "$1" = "remove" ]; then
-  update-alternatives --remove-all petsc
+  update-alternatives --remove petsc-complex /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_COMPLEX_ARCH}
+  update-alternatives --remove petsc /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_COMPLEX_ARCH}/share/petsc/matlab
 fi
 
 #DEBHELPER#
diff --git a/debian/libpetsc-complex-3.6.postinst b/debian/libpetsc-complex-3.6.postinst
index 1f08231..f078034 100644
--- a/debian/libpetsc-complex-3.6.postinst
+++ b/debian/libpetsc-complex-3.6.postinst
@@ -9,8 +9,8 @@ SONAME=$( echo ${PETSC_VERSION} | awk 'BEGIN { FS="."}; {print $1"."$2 }' )
 
 # Make alternatives links
 if [ "$1" = "configure" ]; then
-  update-alternatives --install /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc.so.${SONAME} libpetsc.so.${SONAME} /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc-complex.so.${PETSC_VERSION} 3620 \
-    --slave /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc.so.${PETSC_VERSION} libpetsc.so.${PETSC_VERSION} /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc-complex.so.${PETSC_VERSION}
+  update-alternatives --install /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc.so.${SONAME} libpetsc-complex.so.${SONAME} /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc-complex.so.${PETSC_VERSION} 3620 \
+    --slave /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc.so.${PETSC_VERSION} libpetsc-complex.so.${PETSC_VERSION} /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc-complex.so.${PETSC_VERSION}
 fi
 
 
diff --git a/debian/libpetsc-complex-3.6.prerm b/debian/libpetsc-complex-3.6.prerm
index f2cb867..9a1c807 100644
--- a/debian/libpetsc-complex-3.6.prerm
+++ b/debian/libpetsc-complex-3.6.prerm
@@ -1,12 +1,13 @@
 #!/bin/sh -e
 
+DEB_HOST_MULTIARCH=__DEB_HOST_MULTIARCH__
+PETSC_VERSION=__PETSC_VERSION__
+# use only major.minor as general soname (rather than major.minor.patch.build)
+SONAME=$( echo ${PETSC_VERSION} | awk 'BEGIN { FS="."}; {print $1"."$2 }' )
+
 # Remove alternatives links
 if [ "$1" = "remove" ]; then
-  PETSC_VERSION=__PETSC_VERSION__
-  # use only major.minor as general soname (rather than major.minor.patch.build)
-  SONAME=$( echo ${PETSC_VERSION} | awk 'BEGIN { FS="."}; {print $1"."$2 }' )
-
-  update-alternatives --remove-all libpetsc.so.${SONAME}
+  update-alternatives --remove libpetsc-complex.so.${SONAME} /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc-complex.so.${PETSC_VERSION}
 fi
 
 #DEBHELPER#
diff --git a/debian/libpetsc3.6.2-dbg.prerm b/debian/libpetsc3.6.2-dbg.prerm
index 066a26e..893d634 100644
--- a/debian/libpetsc3.6.2-dbg.prerm
+++ b/debian/libpetsc3.6.2-dbg.prerm
@@ -1,8 +1,14 @@
 #!/bin/sh -e
 
+DEB_HOST_MULTIARCH=__DEB_HOST_MULTIARCH__
+
+PETSC_VERSION=__PETSC_VERSION__
+PETSC_ARCH=${DEB_HOST_MULTIARCH}
+PETSC_DEBUG_ARCH=${PETSC_ARCH}-debug
+
 # Remove alternatives links
 if [ "$1" = "remove" ]; then
-  update-alternatives --remove-all petsc
+  update-alternatives --remove petsc /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_DEBUG_ARCH}
 fi
 
 #DEBHELPER#
diff --git a/debian/libpetsc3.6.2-dev.prerm b/debian/libpetsc3.6.2-dev.prerm
index 066a26e..b0c6f36 100644
--- a/debian/libpetsc3.6.2-dev.prerm
+++ b/debian/libpetsc3.6.2-dev.prerm
@@ -1,8 +1,14 @@
 #!/bin/sh -e
 
+DEB_HOST_MULTIARCH=__DEB_HOST_MULTIARCH__
+
+PETSC_VERSION=__PETSC_VERSION__
+PETSC_ARCH=${DEB_HOST_MULTIARCH}
+PETSC_REAL_ARCH=${PETSC_ARCH}-real
+
 # Remove alternatives links
 if [ "$1" = "remove" ]; then
-  update-alternatives --remove-all petsc
+  update-alternatives --remove petsc /usr/lib/petscdir/${PETSC_VERSION}/${PETSC_REAL_ARCH}
 fi
 
 #DEBHELPER#
diff --git a/debian/libpetsc3.6.prerm b/debian/libpetsc3.6.prerm
index f2cb867..6fb676e 100644
--- a/debian/libpetsc3.6.prerm
+++ b/debian/libpetsc3.6.prerm
@@ -1,12 +1,13 @@
 #!/bin/sh -e
 
+DEB_HOST_MULTIARCH=__DEB_HOST_MULTIARCH__
+PETSC_VERSION=__PETSC_VERSION__
+# use only major.minor as general soname (rather than major.minor.patch.build)
+SONAME=$( echo ${PETSC_VERSION} | awk 'BEGIN { FS="."}; {print $1"."$2 }' )
+
 # Remove alternatives links
 if [ "$1" = "remove" ]; then
-  PETSC_VERSION=__PETSC_VERSION__
-  # use only major.minor as general soname (rather than major.minor.patch.build)
-  SONAME=$( echo ${PETSC_VERSION} | awk 'BEGIN { FS="."}; {print $1"."$2 }' )
-
-  update-alternatives --remove-all libpetsc.so.${SONAME}
+  update-alternatives --remove libpetsc.so.${SONAME} /usr/lib/${DEB_HOST_MULTIARCH}/libpetsc-real.so.${PETSC_VERSION}
 fi
 
 #DEBHELPER#
diff --git a/debian/rules b/debian/rules
index b62d4ab..d0cade6 100755
--- a/debian/rules
+++ b/debian/rules
@@ -139,7 +139,7 @@ override_dh_auto_configure:
           PETSC_DIR=$(CURDIR) --PETSC_ARCH=$(PETSC_COMPLEX_BUILD_DIR) \
             CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \
             FCFLAGS="$(FCFLAGS)"  FFLAGS="$(FFLAGS)"  \
-            CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" MAKEFLAGS="$(MAKEFLAGS)"
+            CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS) -Wl,-soname,petsc-complex.so.$(PETSC_SONAME_VERSION)" MAKEFLAGS="$(MAKEFLAGS)"
 
 
 override_dh_auto_build:

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/petsc.git



More information about the debian-science-commits mailing list