Hi

Attached is an updated version of the patch wich also builds the
libboost-mpi-python1.40-dev package.

Gaudenz

-- 
Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better.
~ Samuel Beckett ~
Index: debian/control
===================================================================
--- debian/control	(Revision 14518)
+++ debian/control	(Arbeitskopie)
@@ -304,6 +304,38 @@
  objects for collective algorithms, and the use of modern C++ library
  techniques to maintain maximal efficiency.
 
+Package: libboost-mpi-python1.40.0
+Homepage: http://www.boost.org/doc/html/mpi/python.html
+Architecture: any
+Section: python
+Depends: ${misc:Depends}, ${shlibs:Depends}, ${python:Depends}
+Description: C++ interface to the Message Passing Interface (MPI), Pyhton Bindings
+ This package forms part of the Boost C++ Libraries collection.
+ .
+ The Boost.MPI library provides a C++ interface to MPI that
+ supports modern C++ development styles, including complete support for
+ user-defined data types and C++ Standard Library types, arbitrary function
+ objects for collective algorithms, and the use of modern C++ library
+ techniques to maintain maximal efficiency.
+ .
+ This package provides Python Bindings to the C++ interface.
+
+Package: libboost-mpi-python1.40-dev
+Homepage: http://www.boost.org/doc/html/mpi/python.html
+Architecture: any
+Section: python
+Depends: ${misc:Depends}, libboost-mpi1.40-dev (= ${binary:Version}), libboost-mpi-python1.40.0 (= ${binary:Version})
+Description: C++ interface to the Message Passing Interface (MPI), Pyhton Bindings
+ This package forms part of the Boost C++ Libraries collection.
+ .
+ The Boost.MPI library provides a C++ interface to MPI that
+ supports modern C++ development styles, including complete support for
+ user-defined data types and C++ Standard Library types, arbitrary function
+ objects for collective algorithms, and the use of modern C++ library
+ techniques to maintain maximal efficiency.
+ .
+ This package provides Python Bindings to the C++ interface.
+
 Package: libboost-program-options1.40.0
 Homepage: http://www.boost.org/libs/program_options/
 Architecture: any
Index: debian/patches/series
===================================================================
--- debian/patches/series	(Revision 14518)
+++ debian/patches/series	(Arbeitskopie)
@@ -7,3 +7,4 @@
 date_time_date_formatting_hpp.patch
 jam-wall-clean.patch
 sh4.patch
+boost-build-pythonid.patch
Index: debian/patches/boost-build-pythonid.patch
===================================================================
--- debian/patches/boost-build-pythonid.patch	(Revision 0)
+++ debian/patches/boost-build-pythonid.patch	(Revision 0)
@@ -0,0 +1,96 @@
+Add --pythonid parameter to the build system to only add an identification 
+to Python libraries. The existing --buildid parameter adds an id to all 
+libraries and leads to uneccessary duplication of libraries if only the 
+Python version for the build is different.
+
+--- boost_1_40_0/Jamroot	2009-08-23 18:17:37.000000000 +0200
++++ boost1.40-1.40.0/Jamroot	2009-10-21 20:06:00.223496183 +0200
+@@ -339,6 +339,12 @@
+     constant BUILD_ID : [ regex.replace $(build-id) "[*\\/:.\"\' ]" "_" ] ;
+ }
+ 
++# Python build id (only for Python libraries)
++local python-id = [ MATCH "^--pythonid=(.*)" : [ modules.peek : ARGV ] ] ;
++if $(python-id)
++{
++    constant PYTHON_ID : [ regex.replace $(python-id) "[*\\/:.\"\']" "_" ] ;
++}
+ 
+ # This rule is called by Boost.Build to determine the name of target. We use it
+ # to encode the build variant, compiler name and boost version in the target
+--- boost_1_40_0/libs/python/build/Jamfile.v2	2007-11-25 19:38:02.000000000 +0100
++++ boost1.40-1.40.0/libs/python/build/Jamfile.v2	2009-10-21 18:21:56.656818332 +0200
+@@ -3,6 +3,7 @@
+ # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ 
+ import os ;
++import indirect ;
+ import modules ;
+ 
+ import python ;
+@@ -24,8 +25,27 @@
+ 
+ project boost/python
+   : source-location ../src
++  : requirements
++    -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
++    <tag>@$(__name__).tag
+   ;
+ 
++rule tag ( name : type ? : property-set )
++{
++    local result = $(name) ;
++    if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
++    {
++        if $(name) = boost_python && $(PYTHON_ID)
++        {
++            result = $(result)-$(PYTHON_ID) ;
++        }
++    }
++    
++    # forward to the boost tagging rule
++    return  [ indirect.call $(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag 
++                $(result) : $(type) : $(property-set) ] ;
++}
++
+ rule cond ( test ? : yes * : no * ) { if $(test) { return $(yes) ; } else { return $(no) ; } }
+ rule unless ( test ? : yes * : no * ) { if ! $(test) { return $(yes) ; } else { return $(no) ; } }
+ 
+--- boost_1_40_0/libs/mpi/build/Jamfile.v2	2009-08-06 21:04:54.000000000 +0200
++++ boost1.40-1.40.0/libs/mpi/build/Jamfile.v2	2009-10-21 18:22:35.870246226 +0200
+@@ -9,6 +9,7 @@
+ #           Andrew Lumsdaine
+ 
+ import mpi ;
++import indirect ;
+ import python ;
+ 
+ libraries = ;
+@@ -18,8 +19,27 @@
+ 
+ project boost/mpi
+   : source-location ../src
++  : requirements
++    -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
++    <tag>@$(__name__).tag
+   ;
+ 
++rule tag ( name : type ? : property-set )
++{
++    local result = $(name) ;
++    if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
++    {
++        if $(name) = boost_mpi_python && $(PYTHON_ID)
++        {
++            result = $(result)-$(PYTHON_ID) ;
++        }
++    }
++    
++    # forward to the boost tagging rule
++    return  [ indirect.call $(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag 
++                $(result) : $(type) : $(property-set) ] ;
++}
++
+ lib boost_mpi 
+   : 
+     broadcast.cpp
Index: debian/changelog
===================================================================
--- debian/changelog	(Revision 14518)
+++ debian/changelog	(Arbeitskopie)
@@ -1,3 +1,11 @@
+boost1.40 (1.40.0-3) unstable; urgency=low
+
+  * Add new package libboost-mpi-python which contains the Python mpi
+    bindings. Thanks to Gaudenz Steinlin <gaud...@debian.org> for providing a
+    patch.
+
+ -- Gaudenz Steinlin <gaud...@debian.org>  Wed, 21 Oct 2009 20:31:24 +0200
+
 boost1.40 (1.40.0-2) unstable; urgency=low
 
   * rules:
Index: debian/rules
===================================================================
--- debian/rules	(Revision 14518)
+++ debian/rules	(Arbeitskopie)
@@ -16,19 +16,19 @@
 SHLIBS_VERSION = (>= 1.40.0-1)
 
 # Boost libraries for which we want separate packages
-boost_libs := date-time filesystem graph-parallel graph iostreams math mpi	       \
+boost_libs := date-time filesystem graph-parallel graph iostreams math mpi mpi-python	       \
 	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_math := math_c99 math_c99f math_tr1 math_tr1f
 boost_lib_math_long_double := math_c99l math_tr1l
-#TODO: 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 suffixes.  Generally come from --buildid, so begin with a dash.
+# These are special cases for suffixes.  Generally come from --pythonid, so begin with a dash.
 boost_suffixes_python := -py24 -py25
+boost_suffixes_mpi-python := $(boost_suffixes_python)
 
 # Files that are generated by filtering a template
 filtered_files = \
@@ -164,8 +164,11 @@
 	dh_testdir
 
 	$(JAM) --without-python                        
-	$(JAM) --with-python --buildid=py24 python=2.4 
-	$(JAM) --with-python --buildid=py25 python=2.5 
+	$(JAM) --with-python --with-mpi --pythonid=py24 python=2.4
+	# save mpi.so (pythonid is not (yet) used for the python module)
+	mv stage/lib/mpi.so stage/lib/mpi-py24.so
+	$(JAM) --with-python --with-mpi --pythonid=py25 python=2.5 
+	mv stage/lib/mpi.so stage/lib/mpi-py25.so
 
 	cd tools/bcp && $(JAM)
 	cd tools/inspect/build && $(JAM)
@@ -219,8 +222,8 @@
 	@$(call cp_debhelper,libboost-python-dev,libboost-python$(PKGVERSION)-dev)
 
 	$(JAM) --prefix=$(CURDIR)/debian/tmp/usr install --without-python                        
-	$(JAM) --prefix=$(CURDIR)/debian/tmp/usr install --with-python --buildid=py24 python=2.4 
-	$(JAM) --prefix=$(CURDIR)/debian/tmp/usr install --with-python --buildid=py25 python=2.5 
+	$(JAM) --prefix=$(CURDIR)/debian/tmp/usr install --with-python --with-mpi --pythonid=py24 python=2.4 
+	$(JAM) --prefix=$(CURDIR)/debian/tmp/usr install --with-python --with-mpi --pythonid=py25 python=2.5 
 
 	install --mode=755 -D debian/rtupdate debian/tmp/usr/share/python/runtime.d/libboost-python$(PKGVERSION)-dev.rtupdate
 
@@ -331,6 +334,21 @@
 	dh_install -plibboost-mpi$(PKGVERSION)-dev
 	dh_link -plibboost-mpi$(PKGVERSION)-dev
 
+	# package libboost-mpi-python$(SOVERSION)
+	dh_install -plibboost-mpi-python$(SOVERSION)
+	dh_install -plibboost-mpi-python$(SOVERSION) libs/mpi/build/__init__.py usr/lib/python2.4/site-packages/boost
+	dh_install -plibboost-mpi-python$(SOVERSION) libs/mpi/build/__init__.py usr/lib/python2.5/site-packages/boost
+	dh_installdirs -plibboost-mpi-python$(SOVERSION) usr/lib/python2.4/site-packages/boost
+	dh_installdirs -plibboost-mpi-python$(SOVERSION) usr/lib/python2.5/site-packages/boost
+	cp stage/lib/mpi-py24.so debian/libboost-mpi-python$(SOVERSION)/usr/lib/python2.4/site-packages/boost/mpi.so
+	cp stage/lib/mpi-py25.so debian/libboost-mpi-python$(SOVERSION)/usr/lib/python2.5/site-packages/boost/mpi.so
+	# package libboost-mpi-python$(PKGVERSION)-dev
+	dh_installdirs -plibboost-mpi-python$(PKGVERSION)-dev usr/include/boost/mpi
+	mv debian/libboost-mpi$(PKGVERSION)-dev/usr/include/boost/mpi/python* \
+	   debian/libboost-mpi-python$(PKGVERSION)-dev/usr/include/boost/mpi
+	dh_install -plibboost-mpi-python$(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

Reply via email to