[pkg-boost-devel] Bug#710413: src:boost1.53: multi-arch
Helmut Grohne
helmut at subdivi.de
Thu May 30 15:20:45 UTC 2013
Package: src:boost1.53
Version: 1.53.0-5
Severity: normal
User: multiarch-devel at lists.alioth.debian.org
Usertags: multiarch
You might have heard of this multi-arch thingy. Now it comes to you as
well. For details see http://wiki.debian.org/Multiarch/Implementation.
What?
~~~~~
To facilitate mixing packages from multiple architectures the
dependencies need to either be able to satisfy dependencies of foreign
architectures or be co-installable with itself. For libraries usually
the latter is done. This is mainly useful for packages with a big number
of reverse dependencies or packages involved with bootstrapping a new
architecture. The former case is true for boost. So here we go.
How?
~~~~
You can find a patch attached, that should do most of the work. The
first goal is to get the commonly used shared libraries be Multi-Arch:
same. This is what the patch does. I omitted the python-related
libraries, because they are non-trivial and have fewer reverse
dependencies. Also the python multiarch situation is a bit messy at this
point. The patch succeeds a build and succeeds piuparts. Testing of
building for reverse build dependencies is still needed. This is why I
did not tag this bug report with patch. Nevertheless my patch should
serve as a starting point for a multi arch conversion.
boost1.49
~~~~~~~~~
Since there will likely be a transition from boost1.49 to boost1.53 (or
later) at some point, I suggest not to bother with boost1.49 and just
change boost1.53 before doing the transition. That way issues with the
multiarch changes will be highlighted during the transition.
Problems / Questions
~~~~~~~~~~~~~~~~~~~~
Should there be any questions, feel free to ask me. You can also stop by
in oftc #multiarch to sort things out interactively.
Helmut
-------------- next part --------------
diff -Nru boost1.53-1.53.0/debian/changelog boost1.53-1.53.0/debian/changelog
--- boost1.53-1.53.0/debian/changelog 2013-05-28 09:52:24.000000000 +0200
+++ boost1.53-1.53.0/debian/changelog 2013-05-30 12:15:47.000000000 +0200
@@ -1,3 +1,13 @@
+boost1.53 (1.53.0-5.1) UNRELEASED; urgency=low
+
+ * Non-maintainer upload.
+ * Convert to Multi-Arch.
+ + Add ${misc:Pre-Depends} to shared libraries.
+ + Switch to multi-arch paths.
+ + Mark shared libraries as Multi-Arch:same except for python related ones.
+
+ -- Helmut Grohne <helmut at subdivi.de> Thu, 30 May 2013 11:54:25 +0200
+
boost1.53 (1.53.0-5) unstable; urgency=low
* control: Boost.Thread depends on some non header-only libraries:
diff -Nru boost1.53-1.53.0/debian/control boost1.53-1.53.0/debian/control
--- boost1.53-1.53.0/debian/control 2013-05-26 04:44:14.000000000 +0200
+++ boost1.53-1.53.0/debian/control 2013-05-30 12:15:15.000000000 +0200
@@ -146,6 +146,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: atomic data types, operations, and memory ordering constraints
This package forms part of the Boost C++ Libraries collection.
.
@@ -193,6 +195,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: C++ representation of time duration, time point, and clocks
This package forms part of the Boost C++ Libraries collection.
.
@@ -281,6 +285,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: provides a sort of cooperative multitasking on a single thread
This package forms part of the Boost C++ Libraries collection.
.
@@ -318,6 +324,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: set of date-time libraries based on generic programming concepts
This package forms part of the Boost C++ Libraries collection.
.
@@ -358,6 +366,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: filesystem operations (portable paths, iteration over directories, etc) in C++
This package forms part of the Boost C++ Libraries collection.
.
@@ -386,6 +396,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Suggests: graphviz
Description: generic graph components and algorithms in C++
This package forms part of the Boost C++ Libraries collection.
@@ -420,6 +432,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Suggests: graphviz
Description: generic graph components and algorithms in C++
This package forms part of the Boost C++ Libraries collection.
@@ -457,6 +471,8 @@
Section: libs
Priority: important
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: Boost.Iostreams Library
This package forms part of the Boost C++ Libraries collection.
.
@@ -485,6 +501,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: C++ facilities for localization
This package forms part of the Boost C++ Libraries collection.
.
@@ -544,6 +562,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: Boost.Math Library
This package forms part of the Boost C++ Libraries collection.
.
@@ -585,6 +605,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: C++ interface to the Message Passing Interface (MPI)
This package forms part of the Boost C++ Libraries collection.
.
@@ -619,6 +641,7 @@
Architecture: any
Section: python
Depends: ${misc:Depends}, ${shlibs:Depends}, ${python:Depends}, mpi-default-bin
+Pre-Depends: ${misc:Pre-Depends}
Suggests: python, python3
Breaks: ${python:Breaks}
Conflicts: libboost-mpi-python1.40.0,
@@ -662,6 +685,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: program options library for C++
This package forms part of the Boost C++ Libraries collection.
.
@@ -689,6 +714,7 @@
Architecture: any
Section: python
Depends: ${misc:Depends}, ${shlibs:Depends}, ${python:Depends}
+Pre-Depends: ${misc:Pre-Depends}
Suggests: python, python3
Breaks: ${python:Breaks}
Description: Boost.Python Library
@@ -748,6 +774,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: Boost Random Number Library
This package forms part of the Boost C++ Libraries collection.
.
@@ -775,6 +803,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: regular expression library for C++
This package forms part of the Boost C++ Libraries collection.
.
@@ -817,6 +847,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: serialization library for C++
This package forms part of the Boost C++ Libraries collection,
containing the following functionalities:
@@ -860,6 +892,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: managed signals and slots library for C++
This package forms part of the Boost C++ Libraries collection.
.
@@ -891,6 +925,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: Operating system (e.g. diagnostics support) library
This package forms part of the Boost C++ Libraries collection.
.
@@ -926,6 +962,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: components for writing and executing test suites
This package forms part of the Boost C++ Libraries collection. The
library contains several components.
@@ -955,6 +993,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: portable C++ multi-threading
This package forms part of the Boost C++ Libraries collection.
.
@@ -987,6 +1027,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: C++ wall clock and CPU process timers
This package forms part of the Boost C++ Libraries collection.
.
@@ -1024,6 +1066,8 @@
Architecture: any
Section: libs
Depends: ${misc:Depends}, ${shlibs:Depends}
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
Description: C99/C++ preprocessor library
This package forms part of the Boost C++ Libraries collection.
.
diff -Nru boost1.53-1.53.0/debian/rules boost1.53-1.53.0/debian/rules
--- boost1.53-1.53.0/debian/rules 2013-04-27 08:11:58.000000000 +0200
+++ boost1.53-1.53.0/debian/rules 2013-05-30 13:44:36.000000000 +0200
@@ -28,6 +28,8 @@
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
+DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+
%:
dh $@ --with python2 --with python3
@@ -68,14 +70,18 @@
dh_compress -Xlibboost$(PKGVERSION)-doc/HTML
override_dh_install:
- $(JAM) --prefix=$(CURDIR)/debian/tmp/usr $(JAM_WITHOUT) --without-python install
+ $(JAM) --prefix=$(CURDIR)/debian/tmp/usr $(JAM_WITHOUT) \
+ --libdir=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH) \
+ --without-python install
for pyver in $(pyversions); do \
pyid=`echo $$pyver | tr -d .`; \
- $(JAM) --prefix=$(CURDIR)/debian/tmp/usr install --with-python --with-mpi --python-buildid=py$$pyid python=$$pyver; \
+ $(JAM) --prefix=$(CURDIR)/debian/tmp/usr \
+ --libdir=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH) \
+ install --with-python --with-mpi --python-buildid=py$$pyid python=$$pyver; \
done
# Install Boost.Build v2 & jam
- cd $(bbv2dir) && ./bjam install --prefix=$(CURDIR)/debian/tmp/usr
+ cd $(bbv2dir) && ./bjam install --prefix=$(CURDIR)/debian/tmp/usr --libdir=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
mv debian/tmp/usr/share/boost-build/example debian/boost-build-examples
install --mode=755 -D debian/rtupdate debian/tmp/usr/share/python/runtime.d/libboost-python$(PKGVERSION)-dev.rtupdate
@@ -178,7 +184,7 @@
# Helpers to make basic and decorated library names
# Input: library, variant, suffix
# Return: base library filename for short or full name
-mk_base_name = usr/lib/libboost_$(subst -,_,$(1))$(2)$(3)
+mk_base_name = usr/lib/$(DEB_HOST_MULTIARCH)/libboost_$(subst -,_,$(1))$(2)$(3)
# Input: component, variant
# Return: package name for shared library or development
@@ -320,6 +326,7 @@
$(bjam):
./bootstrap.sh --with-icu --prefix=$(CURDIR)/debian/tmp/usr \
+ --libdir=$(CURDIR)/debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH) \
|| cat bootstrap.log
debian/bjam.1: $(bjam)
More information about the pkg-boost-devel
mailing list