[openblas] 02/03: Ship an additional libopenblas.so.0 in /usr/lib

Sébastien Villemot sebastien at debian.org
Wed Feb 19 16:37:31 UTC 2014


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

sebastien pushed a commit to branch master
in repository openblas.

commit 5441ba2dbda2748b9dcb312d3730962406102fa7
Author: Sébastien Villemot <sebastien at debian.org>
Date:   Wed Feb 19 17:19:36 2014 +0100

    Ship an additional libopenblas.so.0 in /usr/lib
    
    in order to allow direct linking to OpenBLAS, without using the alternatives
    system for BLAS implementations. Thanks to Martin Koehler for his help in
    crafting a proper solution. (Closes: #725673)
---
 debian/changelog                     |  4 ++++
 debian/libopenblas-base.install      |  3 ++-
 debian/libopenblas-base.postinst     |  4 ++--
 debian/libopenblas-base.preinst      | 18 ++++++++++++++++++
 debian/libopenblas-base.prerm        |  2 +-
 debian/libopenblas-base.shlibs       |  2 ++
 debian/libopenblas-dev.install       |  4 ++--
 debian/libopenblas-dev.links         |  2 ++
 debian/libopenblas-dev.postinst      |  4 ++--
 debian/libopenblas-dev.preinst       | 18 ++++++++++++++++++
 debian/libopenblas-dev.prerm         |  2 +-
 debian/patches/libblas3-soname.patch | 36 +++++++++++++++++++++---------------
 debian/rules                         | 13 +++++++++++--
 13 files changed, 86 insertions(+), 26 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 8642ea9..afcdbd6 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,6 +7,10 @@ openblas (0.2.8-4) UNRELEASED; urgency=low
     using OpenMP (Closes: #739331)
   * Drop obsolete code in maintainer scripts to deal with the transition
     libblas.so.3gf => libblas.so.3.
+  * Ship an additional libopenblas.so.0 in /usr/lib, to allow direct
+    linking to OpenBLAS, without using the alternatives system for BLAS
+    implementations. Thanks to Martin Koehler for his help in crafting a
+    proper solution. (Closes: #725673)
 
  -- Sébastien Villemot <sebastien at debian.org>  Mon, 17 Feb 2014 18:48:35 +0100
 
diff --git a/debian/libopenblas-base.install b/debian/libopenblas-base.install
index 4a86c97..38b0a44 100644
--- a/debian/libopenblas-base.install
+++ b/debian/libopenblas-base.install
@@ -1 +1,2 @@
-libopenblas.so.0 usr/lib/openblas-base/
+libopenblas.so.0 usr/lib/
+libblas.so.3 usr/lib/openblas-base/
diff --git a/debian/libopenblas-base.postinst b/debian/libopenblas-base.postinst
index 46b34e1..9718335 100644
--- a/debian/libopenblas-base.postinst
+++ b/debian/libopenblas-base.postinst
@@ -3,8 +3,8 @@
 set -e
 
 update-alternatives --install /usr/lib/libblas.so.3 libblas.so.3 \
-	/usr/lib/openblas-base/libopenblas.so.0 40 \
-    --slave /usr/lib/libblas.so.3gf libblas.so.3gf /usr/lib/openblas-base/libopenblas.so.0 
+	/usr/lib/openblas-base/libblas.so.3 40 \
+    --slave /usr/lib/libblas.so.3gf libblas.so.3gf /usr/lib/openblas-base/libblas.so.3
 
 # dh_installdeb will replace this with shell code automatically
 # generated by other debhelper scripts.
diff --git a/debian/libopenblas-base.preinst b/debian/libopenblas-base.preinst
new file mode 100644
index 0000000..e9f69a7
--- /dev/null
+++ b/debian/libopenblas-base.preinst
@@ -0,0 +1,18 @@
+#! /bin/sh
+
+set -e
+
+# In 0.2.8-4, /usr/lib/openblas-base/libopenblas.so.0 was renamed to
+# /usr/lib/openblas-base/libblas.so.3. It is therefore necessary to remove the
+# old path from the alternatives system before adding the new.
+if [ "$1" = "upgrade" ] && dpkg --compare-versions "$2" lt 0.2.8-4
+then
+    update-alternatives --remove libblas.so.3 /usr/lib/openblas-base/libopenblas.so.0 2>/dev/null
+fi
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/libopenblas-base.prerm b/debian/libopenblas-base.prerm
index 59dcdce..1eaa354 100644
--- a/debian/libopenblas-base.prerm
+++ b/debian/libopenblas-base.prerm
@@ -5,7 +5,7 @@ set -e
 if [ "$1" != "upgrade" ]
 then
     update-alternatives --remove libblas.so.3 \
-    /usr/lib/openblas-base/libopenblas.so.0
+    /usr/lib/openblas-base/libblas.so.3
 fi
 
 #DEBHELPER#
diff --git a/debian/libopenblas-base.shlibs b/debian/libopenblas-base.shlibs
new file mode 100644
index 0000000..9561cbf
--- /dev/null
+++ b/debian/libopenblas-base.shlibs
@@ -0,0 +1,2 @@
+libopenblas 0 libopenblas-base
+libblas 3 libblas3 | libblas.so.3
diff --git a/debian/libopenblas-dev.install b/debian/libopenblas-dev.install
index 903637f..751450d 100644
--- a/debian/libopenblas-dev.install
+++ b/debian/libopenblas-dev.install
@@ -1,2 +1,2 @@
-libopenblas.a usr/lib/openblas-base/
-libopenblas.so usr/lib/openblas-base/
+libopenblas.a usr/lib/
+libopenblas.so usr/lib/
diff --git a/debian/libopenblas-dev.links b/debian/libopenblas-dev.links
new file mode 100644
index 0000000..b7b20eb
--- /dev/null
+++ b/debian/libopenblas-dev.links
@@ -0,0 +1,2 @@
+usr/lib/libopenblas.a usr/lib/openblas-base/libblas.a
+usr/lib/openblas-base/libblas.so.3 usr/lib/openblas-base/libblas.so
diff --git a/debian/libopenblas-dev.postinst b/debian/libopenblas-dev.postinst
index 9dd3534..0ee610c 100644
--- a/debian/libopenblas-dev.postinst
+++ b/debian/libopenblas-dev.postinst
@@ -3,9 +3,9 @@
 set -e
 
 update-alternatives --install /usr/lib/libblas.so libblas.so \
-	/usr/lib/openblas-base/libopenblas.so 40 \
+	/usr/lib/openblas-base/libblas.so 40 \
     --slave /usr/lib/libblas.a libblas.a \
-    /usr/lib/openblas-base/libopenblas.a
+    /usr/lib/openblas-base/libblas.a
 
 
 # dh_installdeb will replace this with shell code automatically
diff --git a/debian/libopenblas-dev.preinst b/debian/libopenblas-dev.preinst
new file mode 100644
index 0000000..759948a
--- /dev/null
+++ b/debian/libopenblas-dev.preinst
@@ -0,0 +1,18 @@
+#! /bin/sh
+
+set -e
+
+# In 0.2.8-4, /usr/lib/openblas-base/libopenblas.so was renamed to
+# /usr/lib/openblas-base/libblas.so. It is therefore necessary to remove the
+# old path from the alternatives system before adding the new.
+if [ "$1" = "upgrade" ] && dpkg --compare-versions "$2" lt 0.2.8-4
+then
+    update-alternatives --remove libblas.so /usr/lib/openblas-base/libopenblas.so 2>/dev/null
+fi
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/libopenblas-dev.prerm b/debian/libopenblas-dev.prerm
index cf0a87d..5f7e8fb 100644
--- a/debian/libopenblas-dev.prerm
+++ b/debian/libopenblas-dev.prerm
@@ -5,7 +5,7 @@ set -e
 if [ "$1" != "upgrade" ]
 then
     update-alternatives --remove libblas.so \
-    /usr/lib/openblas-base/libopenblas.so
+    /usr/lib/openblas-base/libblas.so
 fi
 
 #DEBHELPER#
diff --git a/debian/patches/libblas3-soname.patch b/debian/patches/libblas3-soname.patch
index ace4ef9..9b16810 100644
--- a/debian/patches/libblas3-soname.patch
+++ b/debian/patches/libblas3-soname.patch
@@ -1,24 +1,30 @@
-Description: Set SONAME to libblas.so.3
- The SONAME is originally libopenblas.so.0, but this does not play nicely with
- our alternatives for BLAS. For example, if one installs libopenblas-dev and
- compiles a binary against BLAS, the binary will have libopenblas.so.0
- hardcoded in its dynamic dependencies: the dynamic resolver does not know how
- to resolve this dependency, and even if it knew, the resulting program could
- not be used against ATLAS or reference BLAS.
+Description: Create a libblas.so.3 with the right SONAME
+ That one is needed for the update-alternatives system.
 Author: Sébastien Villemot <sebastien at debian.org>
-Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=687349
 Forwarded: not-needed
-Last-Update: 2013-05-20
+Last-Update: 2014-02-19
 ---
 This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
 --- a/exports/Makefile
 +++ b/exports/Makefile
-@@ -122,7 +122,7 @@
+@@ -117,7 +117,7 @@ dllinit.$(SUFFIX) : dllinit.c
+ 
+ ifeq ($(OSNAME), Linux)
+ 
+-so : ../$(LIBSONAME)
++so : ../$(LIBSONAME) ../libblas.so.3
+ 
  ../$(LIBSONAME) : ../$(LIBNAME) linux.def linktest.c
  	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o ../$(LIBSONAME) \
- 	-Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \
--	-Wl,--retain-symbols-file=linux.def -Wl,-soname,$(LIBPREFIX).so.$(MAJOR_VERSION) $(EXTRALIB)
+@@ -131,6 +131,11 @@ else
+ endif
+ 	rm -f linktest
+ 
++../libblas.so.3 : ../$(LIBNAME) linux.def linktest.c
++	$(CC) $(CFLAGS) $(LDFLAGS) -shared -o $@ \
++	-Wl,--whole-archive ../$(LIBNAME) -Wl,--no-whole-archive \
 +	-Wl,--retain-symbols-file=linux.def -Wl,-soname,libblas.so.3 $(EXTRALIB)
- ifneq ($(C_COMPILER), LSB)
- 	$(CC) $(CFLAGS) $(LDFLAGS) -w -o linktest linktest.c ../$(LIBSONAME) $(FEXTRALIB) && echo OK.
- else
++
+ endif
+ 
+ #http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
diff --git a/debian/rules b/debian/rules
index 42fb77b..c87b6e0 100755
--- a/debian/rules
+++ b/debian/rules
@@ -3,7 +3,7 @@
 
 include /usr/share/cdbs/1/rules/debhelper.mk
 
-DEB_DH_MAKESHLIBS_ARGS_libopenblas-base = -V "libblas3 | libblas.so.3" -n
+DEB_DH_MAKESHLIBS_ARGS_libopenblas-base = -V "libblas3 | libblas.so.3"
 
 COMMON_MAKE_OPTIONS = NO_LAPACK=1 NO_AFFINITY=1 NO_WARMUP=1
 ENABLE_DYNAMIC_ARCHS := amd64 i386 kfreebsd-amd64 kfreebsd-i386
@@ -48,7 +48,16 @@ custom: custom-stamp
 
 clean::
 	$(MAKE) clean
-	rm -f libopenblas.so.0
+	rm -f libopenblas.so.0 libblas.so.3
+
+# We want packages linked with -lblas to depend on any BLAS alternative, and we
+# want packages linked with -lopenblas to depend specifically on
+# libopenblas-base.
+#
+# Such a setting is not supported by dh_makeshlibs, so we ship a hand-crafted
+# shlibs file.
+binary-predeb/libopenblas-base::
+	cp debian/libopenblas-base.shlibs debian/libopenblas-base/DEBIAN/shlibs
 
 # Build a custom package optimized for the current arch
 custom-stamp:

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



More information about the debian-science-commits mailing list