Package: src:boost1.53 Version: 1.53.0-5 Severity: normal User: multiarch-de...@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
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 <hel...@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)