Control: tags -1 + patch pending

Dear Maintainer,

Le mardi 04 mars 2014 à 21:02 +0100, Sébastien Villemot a écrit :

> Le mardi 04 mars 2014 à 18:07 +0100, Julien Cristau a écrit :
> > On Tue, Mar  4, 2014 at 17:55:23 +0100, Sébastien Villemot wrote:
> > 
> > > There seem to be several package (at least blacs-mpi and scalapack,
> > > possibly others) who construct the SONAME at build time using the name
> > > of the default MPI implementation.
> > > 
> > I guess that makes sense if their ABI changes based on the underlying
> > MPI implementation.  But IMO they should fail to build rather than
> > silently build an incompatible binary package if that doesn't match the
> > expected value.
> 
> Ok, I'm reassigning this as a serious bug against blacs-mpi and
> scalapack.

I have prepared a patch for this issue, and uploaded it to DELAYED/2.
Please find attached the debdiff. Don't hesitate to let me know if you
want to delay the upload longer.

Same remarks as for #740620 apply.

Cheers,

-- 
 .''`.    Sébastien Villemot
: :' :    Debian Developer
`. `'     http://www.dynare.org/sebastien
  `-      GPG Key: 4096R/381A7594

diff -u blacs-mpi-1.1/debian/changelog blacs-mpi-1.1/debian/changelog
--- blacs-mpi-1.1/debian/changelog
+++ blacs-mpi-1.1/debian/changelog
@@ -1,3 +1,21 @@
+blacs-mpi (1.1-31.2) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * No longer silently change the SONAME of the MPI blacs shared
+    library when the default MPI implementation changes on a given arch.
+    (Closes: #740764)
+    + Create two new binary packages libblacs-openmpi1 and
+      libblacs-mpich1, corresponding to the two possible SONAMES.
+    + The architecture list for each binary package is stored in debian/rules,
+      and debian/control is now generated from debian/control.in by the clean
+      rule.
+    + Keep a transitional package for libblacs-mpi1.
+    + Make sure that the package FTBFS if the default MPI implementation
+      changes on a given arch (instead of silently changing the SONAME or
+      creating an empty package).
+
+ -- Sébastien Villemot <sebast...@debian.org>  Thu, 03 Apr 2014 16:31:07 +0200
+
 blacs-mpi (1.1-31.1) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -u blacs-mpi-1.1/debian/control blacs-mpi-1.1/debian/control
--- blacs-mpi-1.1/debian/control
+++ blacs-mpi-1.1/debian/control
@@ -1,3 +1,8 @@
+# This file is autogenerated. DO NOT EDIT!
+#
+# Modifications should be made to debian/control.in instead.
+# This file is regenerated automatically in the clean target.
+
 Source: blacs-mpi
 Section: devel
 Priority: extra
@@ -7,12 +12,48 @@
 Homepage: http://www.netlib.org/blacs/
 
 Package: libblacs-mpi1
+Section: oldlibs
+Priority: extra
+Architecture: alpha amd64 armel armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc sparc arm64 hppa m68k powerpcspe ppc64 s390x sparc64
+Depends: ${misc:Depends},
+         libblacs-openmpi1 [alpha amd64 armel armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc sparc],
+         libblacs-mpich1 [arm64 hppa m68k powerpcspe ppc64 s390x sparc64]
+Description: Basic Linear Algebra Comm. Subprograms - transitional package
+ This package depends on the version of the shared library compiled against
+ the default MPI implementation.
+
+Package: libblacs-openmpi1
+Section: libs
+Architecture: alpha amd64 armel armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc sparc
+Depends: mpi-default-bin, ${shlibs:Depends}, ${misc:Depends}
+Breaks: libblacs-mpi1 (<< 1.1-31.2)
+Replaces: blacs1-mpich, blacs1gf-mpich, blacs1-lam, blacs1gf-lam,
+          libblacs-mpi1 (<< 1.1-31.2)
+Conflicts: blacs1-mpich, blacs1gf-mpich, blacs1-lam, blacs1gf-lam
+Description: Basic Linear Algebra Comm. Subprograms - Shared libs. for OpenMPI
+ The BLACS project is an ongoing investigation whose purpose is to
+ create a linear algebra oriented message passing interface that may be
+ implemented efficiently and uniformly across a large range of
+ distributed memory platforms.
+ .
+ You can choose between an implementation based on MPI or PVM. This package
+ uses MPI. There are packages for the shared libraries (this one), for the
+ static libraries and the development files, and for test programs.
+ .
+ Most users do not need to install this package directly because it is
+ used as a high level driver for the communication in the ScaLAPACK packages.
+ Therefore, it is installed when installing ScaLAPACK. ScaLAPACK is a
+ parallel version of LAPACK and is used on Beowulf type clusters.
+
+Package: libblacs-mpich1
 Section: libs
-Architecture: any
+Architecture: arm64 hppa m68k powerpcspe ppc64 s390x sparc64
 Depends: mpi-default-bin, ${shlibs:Depends}, ${misc:Depends}
-Replaces: blacs1-mpich, blacs1gf-mpich, blacs1-lam, blacs1gf-lam
+Breaks: libblacs-mpi1 (<< 1.1-31.2)
+Replaces: blacs1-mpich, blacs1gf-mpich, blacs1-lam, blacs1gf-lam,
+          libblacs-mpi1 (<< 1.1-31.2)
 Conflicts: blacs1-mpich, blacs1gf-mpich, blacs1-lam, blacs1gf-lam
-Description: Basic Linear Algebra Comm. Subprograms - Shared libs. for MPI
+Description: Basic Linear Algebra Comm. Subprograms - Shared libs. for MPICH
  The BLACS project is an ongoing investigation whose purpose is to
  create a linear algebra oriented message passing interface that may be
  implemented efficiently and uniformly across a large range of
@@ -29,8 +70,10 @@
 
 Package: libblacs-mpi-dev
 Section: libdevel
-Architecture: any
-Depends: libblacs-mpi1 (= ${binary:Version}), mpi-default-dev, ${misc:Depends}
+Architecture: alpha amd64 armel armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc sparc arm64 hppa m68k powerpcspe ppc64 s390x sparc64
+Depends: libblacs-openmpi1 (= ${binary:Version}) [alpha amd64 armel armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc sparc],
+         libblacs-mpich1 (= ${binary:Version}) [arm64 hppa m68k powerpcspe ppc64 s390x sparc64],
+         mpi-default-dev, ${misc:Depends}
 Replaces: blacs-mpi, blacs-mpich-dev, blacsgf-mpich-dev, blacs-lam-dev, blacsgf-lam-dev
 Conflicts: blacs-mpi, blacs-mpich-dev, blacsgf-mpich-dev, blacs-lam-dev, blacsgf-lam-dev
 Description: Basic Linear Algebra Comm. Subprograms - Dev. files for MPI
@@ -50,7 +93,7 @@
 
 Package: blacs-mpi-test
 Section: math
-Architecture: any
+Architecture: alpha amd64 armel armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc sparc arm64 hppa m68k powerpcspe ppc64 s390x sparc64
 Depends: blacs-test-common, ${shlibs:Depends}, ${misc:Depends}
 Replaces: blacs-mpich-test, blacsgf-mpich-test, blacs-lam-test, blacsgf-lam-test
 Conflicts: blacs-mpich-test, blacsgf-mpich-test, blacs-lam-test, blacsgf-lam-test
reverted:
--- blacs-mpi-1.1/debian/libblacs-mpi1.dirs
+++ blacs-mpi-1.1.orig/debian/libblacs-mpi1.dirs
@@ -1 +0,0 @@
-usr/lib
diff -u blacs-mpi-1.1/debian/rules blacs-mpi-1.1/debian/rules
--- blacs-mpi-1.1/debian/rules
+++ blacs-mpi-1.1/debian/rules
@@ -8,6 +8,12 @@
 # Read the MPI implementation provided by mpi-default-dev.
 include /usr/share/mpi-default-dev/debian_defaults
 
+# This list of archs is maintained separately from that of the mpi-defaults
+# package. If there is a mismatch between the two, the package will FTBFS. This
+# is on purpose, to avoid silent breakage. See #740620 for more details.
+OPENMPI_ARCHS=alpha amd64 armel armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc sparc
+MPICH_ARCHS=arm64 hppa m68k powerpcspe ppc64 s390x sparc64
+
 build: build-$(ARCH_DEFAULT_MPI_IMPL)
 
 build-openmpi: build-stamp-openmpi
@@ -198,6 +204,15 @@
 	rm -rf TESTING/EXE
 	dh_clean
 
+	{ \
+	  echo "# This file is autogenerated. DO NOT EDIT!" ; \
+	  echo "#" ; \
+	  echo "# Modifications should be made to debian/control.in instead." ; \
+	  echo "# This file is regenerated automatically in the clean target." ; \
+	  echo ; \
+	  sed "s/@OPENMPI_ARCHS@/$(OPENMPI_ARCHS)/g;s/@MPICH_ARCHS@/$(MPICH_ARCHS)/g;" debian/control.in ; } \
+	> debian/control
+
 install: install-$(ARCH_DEFAULT_MPI_IMPL)
 
 install-openmpi: install-stamp-openmpi
@@ -214,10 +229,13 @@
 	dh_prep
 	dh_installdirs -v -a
 
+	# The shared library are installed via debian/*.install, to avoid
+	# creating an empty package if default MPI implementation changes on
+	# the arch
+	dh_install
+
 	set -e ;\
 	for i in blacs blacsF77init blacsCinit ; do \
-	  cp -a lib$$i-openmpi.so.* \
-	    `pwd`/debian/libblacs-mpi1/usr/lib/ ;\
 	  cp -a lib$$i-openmpi.so \
 	    `pwd`/debian/libblacs-mpi-dev/usr/lib/ ;\
 	done
@@ -278,10 +296,13 @@
 	dh_prep
 	dh_installdirs -v -a
 
+	# The shared library are installed via debian/*.install, to avoid
+	# creating an empty package if default MPI implementation changes on
+	# the arch
+	dh_install
+
 	set -e ;\
 	for i in blacs blacsF77init blacsCinit ; do \
-	  cp -a lib$$i-mpich.so.* \
-	    `pwd`/debian/libblacs-mpi1/usr/lib/ ;\
 	  cp -a lib$$i-mpich.so \
 	    `pwd`/debian/libblacs-mpi-dev/usr/lib/ ;\
 	done
only in patch2:
unchanged:
--- blacs-mpi-1.1.orig/debian/control.in
+++ blacs-mpi-1.1/debian/control.in
@@ -0,0 +1,125 @@
+Source: blacs-mpi
+Section: devel
+Priority: extra
+Maintainer: Muammar El Khatib <muam...@debian.org>
+Standards-Version: 3.9.1
+Build-Depends: debhelper (>= 7), mpi-default-dev (>= 1.0), gfortran
+Homepage: http://www.netlib.org/blacs/
+
+Package: libblacs-mpi1
+Section: oldlibs
+Priority: extra
+Architecture: @OPENMPI_ARCHS@ @MPICH_ARCHS@
+Depends: ${misc:Depends},
+         libblacs-openmpi1 [@OPENMPI_ARCHS@],
+         libblacs-mpich1 [@MPICH_ARCHS@]
+Description: Basic Linear Algebra Comm. Subprograms - transitional package
+ This package depends on the version of the shared library compiled against
+ the default MPI implementation.
+
+Package: libblacs-openmpi1
+Section: libs
+Architecture: @OPENMPI_ARCHS@
+Depends: mpi-default-bin, ${shlibs:Depends}, ${misc:Depends}
+Breaks: libblacs-mpi1 (<< 1.1-31.2)
+Replaces: blacs1-mpich, blacs1gf-mpich, blacs1-lam, blacs1gf-lam,
+          libblacs-mpi1 (<< 1.1-31.2)
+Conflicts: blacs1-mpich, blacs1gf-mpich, blacs1-lam, blacs1gf-lam
+Description: Basic Linear Algebra Comm. Subprograms - Shared libs. for OpenMPI
+ The BLACS project is an ongoing investigation whose purpose is to
+ create a linear algebra oriented message passing interface that may be
+ implemented efficiently and uniformly across a large range of
+ distributed memory platforms.
+ .
+ You can choose between an implementation based on MPI or PVM. This package
+ uses MPI. There are packages for the shared libraries (this one), for the
+ static libraries and the development files, and for test programs.
+ .
+ Most users do not need to install this package directly because it is
+ used as a high level driver for the communication in the ScaLAPACK packages.
+ Therefore, it is installed when installing ScaLAPACK. ScaLAPACK is a
+ parallel version of LAPACK and is used on Beowulf type clusters.
+
+Package: libblacs-mpich1
+Section: libs
+Architecture: @MPICH_ARCHS@
+Depends: mpi-default-bin, ${shlibs:Depends}, ${misc:Depends}
+Breaks: libblacs-mpi1 (<< 1.1-31.2)
+Replaces: blacs1-mpich, blacs1gf-mpich, blacs1-lam, blacs1gf-lam,
+          libblacs-mpi1 (<< 1.1-31.2)
+Conflicts: blacs1-mpich, blacs1gf-mpich, blacs1-lam, blacs1gf-lam
+Description: Basic Linear Algebra Comm. Subprograms - Shared libs. for MPICH
+ The BLACS project is an ongoing investigation whose purpose is to
+ create a linear algebra oriented message passing interface that may be
+ implemented efficiently and uniformly across a large range of
+ distributed memory platforms.
+ .
+ You can choose between an implementation based on MPI or PVM. This package
+ uses MPI. There are packages for the shared libraries (this one), for the
+ static libraries and the development files, and for test programs.
+ .
+ Most users do not need to install this package directly because it is
+ used as a high level driver for the communication in the ScaLAPACK packages.
+ Therefore, it is installed when installing ScaLAPACK. ScaLAPACK is a
+ parallel version of LAPACK and is used on Beowulf type clusters.
+
+Package: libblacs-mpi-dev
+Section: libdevel
+Architecture: @OPENMPI_ARCHS@ @MPICH_ARCHS@
+Depends: libblacs-openmpi1 (= ${binary:Version}) [@OPENMPI_ARCHS@],
+         libblacs-mpich1 (= ${binary:Version}) [@MPICH_ARCHS@],
+         mpi-default-dev, ${misc:Depends}
+Replaces: blacs-mpi, blacs-mpich-dev, blacsgf-mpich-dev, blacs-lam-dev, blacsgf-lam-dev
+Conflicts: blacs-mpi, blacs-mpich-dev, blacsgf-mpich-dev, blacs-lam-dev, blacsgf-lam-dev
+Description: Basic Linear Algebra Comm. Subprograms - Dev. files for MPI
+ The BLACS project is an ongoing investigation whose purpose is to
+ create a linear algebra oriented message passing interface that may be
+ implemented efficiently and uniformly across a large range of
+ distributed memory platforms.
+ .
+ You can choose between an implementation based on MPI or PVM. This package
+ uses MPI. There are packages for the shared libraries, for the static
+ libraries and the development files (this one), and for test programs.
+ .
+ Most users do not need to install this package directly because it is
+ used as a high level driver for the communication in the ScaLAPACK packages.
+ Therefore, it is installed when installing ScaLAPACK. ScaLAPACK is a
+ parallel version of LAPACK and is used on Beowulf type clusters.
+
+Package: blacs-mpi-test
+Section: math
+Architecture: @OPENMPI_ARCHS@ @MPICH_ARCHS@
+Depends: blacs-test-common, ${shlibs:Depends}, ${misc:Depends}
+Replaces: blacs-mpich-test, blacsgf-mpich-test, blacs-lam-test, blacsgf-lam-test
+Conflicts: blacs-mpich-test, blacsgf-mpich-test, blacs-lam-test, blacsgf-lam-test
+Description: Basic Linear Algebra Comm. Subprograms - Test files for MPI
+ The BLACS project is an ongoing investigation whose purpose is to
+ create a linear algebra oriented message passing interface that may be
+ implemented efficiently and uniformly across a large range of
+ distributed memory platforms.
+ .
+ You can choose between an implementation based on MPI or PVM. This package
+ uses MPI. There are packages for the shared libraries, for the static
+ libraries and the development files, and for test programs (this one).
+ .
+ Most users do not need to install this package directly because it contains
+ test programs for the BLACS libraries. You only need these if you experience
+ problems with ScaLAPACK. The BLACS libraries are used as a high level
+ communications library for ScaLAPACK. ScaLAPACK is a parallel version of
+ LAPACK and is used on Beowulf type clusters.
+
+Package: blacs-test-common
+Section: math
+Architecture: all
+Depends: ${misc:Depends}
+Description: Test data for BLACS testers
+ The BLACS project is an ongoing investigation whose purpose is to
+ create a linear algebra oriented message passing interface that may be
+ implemented efficiently and uniformly across a large range of
+ distributed memory platforms.
+ .
+ You can choose between an implementation based on MPI or PVM. This package
+ provides test data for all BLACS packages (MPI and PVM versions).
+ .
+ Most users do not need to install this package directly because it is
+ installed when installing the test programs for any BLACS package.
only in patch2:
unchanged:
--- blacs-mpi-1.1.orig/debian/libblacs-mpich1.install
+++ blacs-mpi-1.1/debian/libblacs-mpich1.install
@@ -0,0 +1,3 @@
+libblacs-mpich.so.* usr/lib
+libblacsF77init-mpich.so.* usr/lib
+libblacsCinit-mpich.so.* usr/lib
only in patch2:
unchanged:
--- blacs-mpi-1.1.orig/debian/libblacs-openmpi1.install
+++ blacs-mpi-1.1/debian/libblacs-openmpi1.install
@@ -0,0 +1,3 @@
+libblacs-openmpi.so.* usr/lib
+libblacsF77init-openmpi.so.* usr/lib
+libblacsCinit-openmpi.so.* usr/lib

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to