[pkg-boost-devel] Bug#490242: boost1.35: please build boost-mpi libraries

Tilman Koschnick til at subnetz.org
Thu Jul 10 22:48:13 UTC 2008


Package: boost1.35
Version: 1.35.0-5
Severity: wishlist

Hi,

it would be great if you could add support for the boost-mpi libraries
which are part of boost since version 1.35. I'd suggest linking against
OpenMPI, which is very actively maintained, both upstream and in Debian.

I have made a not very successful attempt to hack the debian package to
enable boost-mpi packages; my try is attached as a patch. The problem I
had is that boost-mpi consists of a libboost_mpi library, as well as a
libboost_mpi_python library, which in conjunction with a boost.mpi
python module provides a python interface to boost-mpi. Now, the two
different libboost_python versions with different suffixes complicate
things... I don't know if it wouldn't be easier in the long run to just
support the current python version in boost.

Unfortunately (well, not really ;) I am on vacation the next three
weeks, so I can't continue my trials, nor test anything you might come
up with before August.

Cheers, Til
-------------- next part --------------
=== debian/Notes
==================================================================
--- debian/Notes	(revision 7)
+++ debian/Notes	(local)
@@ -76,6 +76,7 @@
 filesystem 	depends on system
 graph 		depends on serialization test
 iostreams 	depends on regex
+mpi		depends on serialization
 regex 		depends on thread
 thread 		depends on date_time
 wave 		depends on filesystem serialization
=== debian/control
==================================================================
--- debian/control	(revision 7)
+++ debian/control	(local)
@@ -4,7 +4,7 @@
 Priority: optional
 Maintainer: Debian Boost Team <pkg-boost-devel at lists.alioth.debian.org>
 Uploaders: Steve M. Robbins <smr at debian.org>, Domenico Andreoli <cavok at debian.org>, Christophe Prud'homme <prudhomm at debian.org>
-Build-Depends: debhelper (>= 6.0.7), quilt, bison, flex, docbook-to-man, xsltproc, doxygen, zlib1g-dev, libbz2-dev, libicu-dev, python-all-dev, python-support (>= 0.6)
+Build-Depends: debhelper (>= 6.0.7), quilt, bison, flex, docbook-to-man, xsltproc, doxygen, zlib1g-dev, libbz2-dev, libicu-dev, python-all-dev, python-support (>= 0.6), libopenmpi-dev
 XS-Python-Version: 2.4, 2.5
 Standards-Version: 3.7.3
 
@@ -164,6 +164,33 @@
  which turn models of these concepts into C++ standard library streams
  and stream buffers.
 
+Package: libboost-mpi1.35.0
+Homepage: http://www.boost.org/doc/libs/1_35_0/doc/html/mpi.html
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Description: MPI library for C++
+ Part of the Boost C++ Libraries collection.
+ .
+ Library for message passing in high-performance parallel applications.
+ A Boost.MPI program is one or more processes that can communicate either
+ via sending and receiving individual messages (point-to-point communication)
+ or by coordinating as a group (collective communication).
+
+Package: libboost-mpi1.35-dev
+Homepage: http://www.boost.org/doc/libs/1_35_0/doc/html/mpi.html
+Architecture: any
+Section: libdevel
+Depends: libboost1.35-dev (= ${binary:Version}), libboost-mpi1.35.0 (= ${binary:Version}), libboost-serialization1.35.0 (= ${binary:Version})
+Recommends: libboost-python1.35.0 (= ${binary:Version})
+Description: MPI library for C++
+ Part of the Boost C++ Libraries collection.
+ .
+ Library for message passing in high-performance parallel applications.
+ A Boost.MPI program is one or more processes that can communicate either
+ via sending and receiving individual messages (point-to-point communication)
+ or by coordinating as a group (collective communication).
+
 Package: libboost-program-options1.35.0
 Homepage: http://www.boost.org/libs/program_options/
 Architecture: any
=== debian/rules
==================================================================
--- debian/rules	(revision 7)
+++ debian/rules	(local)
@@ -1,14 +1,14 @@
 #! /usr/bin/make -f
 
 # Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
+export DH_VERBOSE=1
 
 export DH_OPTIONS
 
 include /usr/share/quilt/quilt.make
 
 # set the number of build jobs
-#JOBS = -j2
+JOBS = -j4
 
 DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
 
@@ -21,13 +21,15 @@
 gcc_version = gcc42
 
 # Boost libraries for which we want separate packages
-boost_libs := date-time filesystem graph iostreams program-options python regex serialization signals system test thread wave
+boost_libs := date-time filesystem graph iostreams mpi program-options python regex serialization signals system test thread wave
 
 # these are special cases, where shared library has not the same name of the Boost library
+boost_lib_mpi := mpi mpi_python
 boost_lib_serialization := serialization wserialization
 boost_lib_test := prg_exec_monitor unit_test_framework
 
 # these are special cases for variants. normal cases have <empty>, -d, -mt, -mt-d variants
+boost_variants_mpi := -mt -mt-d
 boost_variants_thread := -mt -mt-d
 
 # These are special cases for suffixes.  Generally come from --buildid, so begin with a dash.
@@ -138,6 +140,7 @@
 endif
 PYTHON_CONFIG1 = "using python : 2.4 : /usr ;"
 PYTHON_CONFIG2 = "using python : 2.5 : /usr ;"
+MPI_CONFIG = "using mpi ;"
 
 exampledir = debian/libboost$(PKGVERSION)-doc/usr/share/doc/libboost$(PKGVERSION)-doc/examples
 htmldir = debian/libboost$(PKGVERSION)-doc/usr/share/doc/libboost$(PKGVERSION)-doc/HTML
@@ -157,8 +160,9 @@
 	echo $(TOOLSET_CONFIG) > user-config.jam
 	echo $(PYTHON_CONFIG1) >> user-config.jam
 	echo $(PYTHON_CONFIG2) >> user-config.jam
+	echo $(MPI_CONFIG) >> user-config.jam
 
-	$(JAM) --without-python                        $(jam_variants)
+	$(JAM) --with-python --with-mpi                $(jam_variants)
 	$(JAM) --with-python --buildid=py24 python=2.4 $(jam_variants)
 	$(JAM) --with-python --buildid=py25 python=2.5 $(jam_variants)
 
@@ -216,7 +220,7 @@
 	install --mode=755 -D debian/rtupdate debian/tmp/usr/share/python/runtime.d/libboost$(PKGVERSION)-dbg.rtupdate
 
 	# Remove undecorated Boost.Python libraries and install decorated ones
-	rm debian/tmp/usr/lib/lib*python*
+	rm debian/tmp/usr/lib/libboost_python*
 	find bin.v2/libs/python -name libboost_python*-py2* | xargs install -t debian/tmp/usr/lib
 
 	find debian/tmp/usr/include -type f | xargs chmod 644
@@ -231,6 +235,10 @@
 	dh_install -plibboost$(PKGVERSION)-dbg --autodest \
 	   debian/tmp/usr/share/python/runtime.d/libboost$(PKGVERSION)-dbg.rtupdate
 	dh_link -plibboost$(PKGVERSION)-dbg \
+	   usr/lib/libboost_mpi-mt-d.a usr/lib/libboost_mpi-d.a \
+	   usr/lib/libboost_mpi-mt-d.so usr/lib/libboost_mpi-d.so \
+	   usr/lib/libboost_mpi_python-mt-d.a usr/lib/libboost_mpi_python-d.a \
+	   usr/lib/libboost_mpi_python-mt-d.so usr/lib/libboost_mpi_python-d.so \
 	   usr/lib/libboost_thread-mt-d.a usr/lib/libboost_thread-d.a \
 	   usr/lib/libboost_thread-mt-d.so usr/lib/libboost_thread-d.so
 
@@ -292,6 +300,19 @@
 	dh_install -plibboost-iostreams$(PKGVERSION)-dev
 	dh_link -plibboost-iostreams$(PKGVERSION)-dev
 
+	# package libboost-mpi$(SOVERSION)
+	dh_install -plibboost-mpi$(SOVERSION)
+	dh_install -plibboost-mpi$(SOVERSION) \
+	   libs/mpi/build/__init__.py debian/tmp/usr/lib/mpi.so usr/lib/python2.4/site-packages/mpi
+	dh_install -plibboost-mpi$(SOVERSION) \
+	   libs/mpi/build/__init__.py debian/tmp/usr/lib/mpi.so usr/lib/python2.5/site-packages/mpi
+	# package libboost-mpi$(PKGVERSION)-dev
+	dh_installdirs -plibboost-mpi$(PKGVERSION)-dev usr/include/boost
+	mv debian/libboost$(PKGVERSION)-dev/usr/include/boost/mpi* \
+	   debian/libboost-mpi$(PKGVERSION)-dev/usr/include/boost
+	dh_install -plibboost-mpi$(PKGVERSION)-dev
+	dh_link -plibboost-mpi$(PKGVERSION)-dev
+
 	# package libboost-program-options$(SOVERSION)
 	dh_install -plibboost-program-options$(SOVERSION)
 	# package libboost-program-options$(PKGVERSION)-dev


More information about the pkg-boost-devel mailing list