Am Montag, den 05.04.2010, 17:22 +0200 schrieb Marc 'HE' Brockschmidt: > So, did you spend this time on doing fixes already? :-)
Yes, I indeed did. Not as much as I'd liked too, but nevertheless. > It would be great to see at least a few patches for the breaking > packages before the new defaults package is uploaded. I'll just repeat the list of failing packages here and comment on them group-wise. Patch available: * rmpi: patch attached * blacs-mpi: patch attached * mumps: Can be rebuild against fixed blacs-mpi CMake: * igstk * kwwidgets CMake does some magic here which I do not understand yet. These seem to fail because they look for a library openmpi provides but mpich2 doesn't. (Well, at least not under that name.) We might fix that via a symlink in mpich2, or I've to dive deeper into CMake. Wrong location of header file (mpi.h) at configure: * apbs * petsc: almost done, minor issue remaining There may be more packages in this group, the already patched ones are also of this type. Most upstream build systems seem to expect a /foo/{include,lib} hierarchy, and you can only pass the location of /foo to the build system. Some are flexible enough to work around that (see patches) but I do not see how to do that for apbs easily. (It's possible for petsc but my patch has some other issue I have to track down.) This could easily be fixed it mpich2 would provide this hierarchy, as we already discussed. It would make the patches much simpler, some packages of these 11 wouldn't even need patching then. I think we should reconsider the option of doing the change in mpich2. (Note: MPICH and LAM did provide this hierarchy, too.) Remaining packages: * life: Might be fixed with petsc, not sure yet. * gdcm: Not looked at yet * pgapack: Not looked at yet * scalapack: Seems to be of type "wrong location", may need no fix This is the status as of now. I'm working on the remaining patches, but the proposed change to mpich2 would save us some time here, as it avoids patching about half of the packages at all. Please let me know what you think about that. Best regards, Manuel
diff -pruN blacs-mpi-1.1.orig//Bmake.inc blacs-mpi-1.1//Bmake.inc --- blacs-mpi-1.1.orig//Bmake.inc 2010-04-06 16:23:22.000000000 +0000 +++ blacs-mpi-1.1//Bmake.inc 2010-04-06 16:22:02.000000000 +0000 @@ -47,6 +47,14 @@ # ------------------------------------- # Name and location of the MPI library. # ------------------------------------- +ifeq ($(MPI),mpich2) +# for compilation with mpich: + MPIdev = ch_p4 + MPIplat = LINUX + MPILIBdir = /usr/lib + MPIINCdir = /usr/include/mpi + MPILIB = $(MPILIBdir)/libmpich.so $(MPILIBdir)/libmpich.a +endif ifeq ($(MPI),mpich) # for compilation with mpich: MPIdir = /usr/lib/mpich diff -pruN blacs-mpi-1.1.orig//debian/rules blacs-mpi-1.1//debian/rules --- blacs-mpi-1.1.orig//debian/rules 2010-04-06 16:23:22.000000000 +0000 +++ blacs-mpi-1.1//debian/rules 2010-04-06 16:22:02.000000000 +0000 @@ -12,9 +12,9 @@ build: build-$(BLACS_MPI) build-openmpi: build-stamp-openmpi -build-lam: build-stamp-lam +#build-lam: build-stamp-lam -build-mpich: build-stamp-mpich +build-mpich2: build-stamp-mpich2 patch-stamp: patch -p1 < debian/blacs-openmpi.patch @@ -100,23 +100,23 @@ build-stamp-lam: patch-stamp touch build-stamp-lam -build-stamp-mpich: patch-stamp +build-stamp-mpich2: patch-stamp dh_testdir [ -d TESTING/EXE ] || mkdir TESTING/EXE # next is a clean BASEDIR=$(topdir) make cleanall cd TESTING && BASEDIR=$(topdir) make clean # build the static libraries - BASEDIR=$(topdir) MPI=mpich make mpi + BASEDIR=$(topdir) MPI=mpich2 make mpi # the testing binaries cd TESTING && BASEDIR=$(topdir) \ BTLIBS='$$(BLACSFINIT) $$(BLACSLIB) $$(BLACSFINIT) $$(MPILIB)' \ - BUILD=static MPI=mpich make + BUILD=static MPI=mpich2 make # next is a clean BASEDIR=$(topdir) make cleanall cd TESTING && BASEDIR=$(topdir) make clean # build the shared libraries - BASEDIR=$(topdir) FPIC=-fPIC MPI=mpich make mpi + BASEDIR=$(topdir) FPIC=-fPIC MPI=mpich2 make mpi mkdir -p tmp set -e ;\ for i in blacs blacsF77init blacsCinit ; do \ @@ -127,19 +127,19 @@ build-stamp-mpich: patch-stamp do mv $$j tmp/$$(echo $$j | sed 's,C$$,o,g') ;\ done;\ cd .. ;\ - gcc -shared -Wl,-soname=lib$$i-mpich.so.1 -o lib$$i-mpich.so.1.1 \ + gcc -shared -Wl,-soname=lib$$i-mpich2.so.1 -o lib$$i-mpich2.so.1.1 \ $$(find tmp -name "*.o");\ - ln -fs lib$$i-mpich.so.1.1 lib$$i-mpich.so.1 ;\ - ln -fs lib$$i-mpich.so.1 lib$$i-mpich.so ;\ + ln -fs lib$$i-mpich2.so.1.1 lib$$i-mpich2.so.1 ;\ + ln -fs lib$$i-mpich2.so.1 lib$$i-mpich2.so ;\ rm -f tmp/tmp/* ; rmdir tmp/tmp ; rm tmp/* ;\ done rmdir tmp # the testing binaries cd TESTING && BASEDIR=$(topdir) \ - BTLIBS='-L.. -lblacsF77init-mpich -lblacs-mpich -lblacsF77init-mpich $$(MPILIB)' \ - BUILD=shared MPI=mpich make + BTLIBS='-L.. -lblacsF77init-mpich2 -lblacs-mpich2 -lblacsF77init-mpich2 $$(MPILIB)' \ + BUILD=shared MPI=mpich2 make - touch build-stamp-mpich + touch build-stamp-mpich2 clean: unpatch dh_testdir @@ -156,9 +156,9 @@ install: install-$(BLACS_MPI) install-openmpi: install-stamp-openmpi -install-lam: install-stamp-lam +#install-lam: install-stamp-lam -install-mpich: install-stamp-mpich +install-mpich2: install-stamp-mpich2 install-stamp-openmpi: build-stamp-openmpi dh_testdir @@ -224,7 +224,7 @@ install-stamp-lam: build-stamp-lam touch install-stamp-lam -install-stamp-mpich: build-stamp-mpich +install-stamp-mpich2: build-stamp-mpich2 dh_testdir dh_testroot dh_clean -k @@ -232,29 +232,29 @@ install-stamp-mpich: build-stamp-mpich set -e ;\ for i in blacs blacsF77init blacsCinit ; do \ - cp -a lib$$i-mpich.so.* \ + cp -a lib$$i-mpich2.so.* \ `pwd`/debian/libblacs-mpi1/usr/lib/ ;\ - cp -a lib$$i-mpich.so \ + cp -a lib$$i-mpich2.so \ `pwd`/debian/libblacs-mpi-dev/usr/lib/ ;\ done set -e ;\ for i in shared static ; do \ - install TESTING/EXE/xCbtest_MPI-LINUX-0-$$i-mpich \ - `pwd`/debian/blacs-mpi-test/usr/lib/blacs/cblacs_test_$$i-mpich ;\ - install TESTING/EXE/xFbtest_MPI-LINUX-0-$$i-mpich \ - `pwd`/debian/blacs-mpi-test/usr/lib/blacs/fblacs_test_$$i-mpich ;\ + install TESTING/EXE/xCbtest_MPI-LINUX-0-$$i-mpich2 \ + `pwd`/debian/blacs-mpi-test/usr/lib/blacs/cblacs_test_$$i-mpich2 ;\ + install TESTING/EXE/xFbtest_MPI-LINUX-0-$$i-mpich2 \ + `pwd`/debian/blacs-mpi-test/usr/lib/blacs/fblacs_test_$$i-mpich2 ;\ done set -e ;\ install LIB/blacsCinit_MPI-LINUX-0.a \ - `pwd`/debian/libblacs-mpi-dev/usr/lib/libblacsCinit-mpich.a + `pwd`/debian/libblacs-mpi-dev/usr/lib/libblacsCinit-mpich2.a install LIB/blacsF77init_MPI-LINUX-0.a \ - `pwd`/debian/libblacs-mpi-dev/usr/lib/libblacsF77init-mpich.a + `pwd`/debian/libblacs-mpi-dev/usr/lib/libblacsF77init-mpich2.a install LIB/blacs_MPI-LINUX-0.a \ - `pwd`/debian/libblacs-mpi-dev/usr/lib/libblacs-mpich.a + `pwd`/debian/libblacs-mpi-dev/usr/lib/libblacs-mpich2.a - touch install-stamp-mpich + touch install-stamp-mpich2 binary-arch: build install dh_testdir -a
diff -pruN rmpi-0.5-8.orig//debian/rules rmpi-0.5-8//debian/rules --- rmpi-0.5-8.orig//debian/rules 2010-04-06 16:01:04.000000000 +0000 +++ rmpi-0.5-8//debian/rules 2010-04-06 16:01:32.000000000 +0000 @@ -4,7 +4,14 @@ # Copyright 2003-2006 by Dirk Eddelbuettel <e...@debian.org> include /usr/share/R/debian/r-cran.mk +include /usr/share/mpi-default-dev/debian_defaults ##extraInstallFlags="--configure-args=--with-mpi=/usr/lib/openmpi" +ifneq (,$(findstring $(ARCH_DEFAULT_MPI_IMPL),openmpi)) +MPI=OPENMPI +else +MPI=MPICH +endif +extraInstallFlags="--configure-args=--with-Rmpi-include=/usr/include/mpi --with-Rmpi-libpath=/usr/lib --with-Rmpi-type=$(MPI)"