[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