Source: ampliconnoise
Version: 1.29-15
Tags: patch
User: [email protected]
Usertags: ftcbfs

ampliconnoise fails to cross build from source as it misses mpi compiler
flags. In theory, it uses mpicc, but cross builds override CC with a
non-mpi cross compiler and that's where flags go missing. Fundamentally,
mpicc and cross building are incompatible. For openmpi, the solution is
to use pkgconf, but mpich does not provide mpi-c anymore. I'm proposing
a compromise here: Attempt to use pkgconf to add the flags, but do not
fail when pkgconf doesn't work (e.g. on 32bit archs that use mpich).
Then native building will continue to work everywhere (as it continues
to use mpicc) while cross building will work for 64bit targets (where
openmpi is used). Cross builds to 32bit architectures remain broken for
now. What do you think?

Helmut
diff --minimal -Nru ampliconnoise-1.29/debian/changelog 
ampliconnoise-1.29/debian/changelog
--- ampliconnoise-1.29/debian/changelog 2024-11-26 22:12:39.000000000 +0100
+++ ampliconnoise-1.29/debian/changelog 2025-06-03 08:29:42.000000000 +0200
@@ -1,3 +1,10 @@
+ampliconnoise (1.29-15.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix cross building with openmpi. (Closes: #-1)
+
+ -- Helmut Grohne <[email protected]>  Tue, 03 Jun 2025 08:29:42 +0200
+
 ampliconnoise (1.29-15) unstable; urgency=medium
 
   * d/t/Run.sh: remove openmpi specific --use-hwthread-cpu argument.
diff --minimal -Nru ampliconnoise-1.29/debian/control 
ampliconnoise-1.29/debian/control
--- ampliconnoise-1.29/debian/control   2024-11-26 21:34:27.000000000 +0100
+++ ampliconnoise-1.29/debian/control   2025-06-03 08:29:42.000000000 +0200
@@ -7,7 +7,8 @@
 Priority: optional
 Build-Depends: debhelper-compat (= 13),
                libgsl-dev,
-               mpi-default-dev
+               mpi-default-dev,
+               pkgconf,
 Standards-Version: 4.7.0
 Vcs-Browser: https://salsa.debian.org/med-team/ampliconnoise
 Vcs-Git: https://salsa.debian.org/med-team/ampliconnoise.git
diff --minimal -Nru ampliconnoise-1.29/debian/patches/cross.patch 
ampliconnoise-1.29/debian/patches/cross.patch
--- ampliconnoise-1.29/debian/patches/cross.patch       1970-01-01 
01:00:00.000000000 +0100
+++ ampliconnoise-1.29/debian/patches/cross.patch       2025-06-03 
08:29:42.000000000 +0200
@@ -0,0 +1,77 @@
+--- ampliconnoise-1.29.orig/NDist/makefile
++++ ampliconnoise-1.29/NDist/makefile
+@@ -2,7 +2,7 @@
+ CFLAGS += -O3
+ EFLAGS = $(LDFLAGS)
+ EFILE  = NDist
+-LIBS   = -lm  
++LIBS   = -lm $(MPI_LIBS)
+ OBJS   = NDist.o 
+ 
+ $(EFILE) : $(OBJS)
+--- ampliconnoise-1.29.orig/PyroDist/makefile
++++ ampliconnoise-1.29/PyroDist/makefile
+@@ -2,7 +2,7 @@
+ CFLAGS += -O3
+ EFLAGS = $(LDFLAGS)
+ EFILE  = PyroDist
+-LIBS   = -lm 
++LIBS   = -lm $(MPI_LIBS)
+ OBJS   = PyroDist.o
+ 
+ $(EFILE) : $(OBJS)
+--- ampliconnoise-1.29.orig/PyroNoise/makefile
++++ ampliconnoise-1.29/PyroNoise/makefile
+@@ -2,7 +2,7 @@
+ CFLAGS += -O3
+ EFLAGS = $(LDFLAGS)
+ EFILE  = PyroNoise
+-LIBS   =  -lm
++LIBS   =  -lm $(MPI_LIBS)
+ OBJS   = PyroNoise.o 
+ 
+ $(EFILE) : $(OBJS)
+--- ampliconnoise-1.29.orig/PyroNoiseA/makefile
++++ ampliconnoise-1.29/PyroNoiseA/makefile
+@@ -2,7 +2,7 @@
+ CFLAGS += -O3
+ EFLAGS = 
+ EFILE  = PyroNoiseA
+-LIBS   =  -lm
++LIBS   =  -lm $(MPI_LIBS)
+ OBJS   = PyroNoiseA.o 
+ 
+ $(EFILE) : $(OBJS)
+--- ampliconnoise-1.29.orig/PyroNoiseM/makefile
++++ ampliconnoise-1.29/PyroNoiseM/makefile
+@@ -2,7 +2,7 @@
+ CFLAGS += -O3
+ EFLAGS = $(LDFLAGS)
+ EFILE  = PyroNoiseM
+-LIBS   =  -lm
++LIBS   =  -lm $(MPI_LIBS)
+ OBJS   = PyroNoiseM.o 
+ 
+ $(EFILE) : $(OBJS)
+--- ampliconnoise-1.29.orig/SeqDist/makefile
++++ ampliconnoise-1.29/SeqDist/makefile
+@@ -2,7 +2,7 @@
+ CFLAGS += -O3
+ EFLAGS = $(LDFLAGS)
+ EFILE  = SeqDist
+-LIBS   = -lm 
++LIBS   = -lm $(MPI_LIBS)
+ OBJS   = SeqDist.o
+ 
+ $(EFILE) : $(OBJS)
+--- ampliconnoise-1.29.orig/SeqNoise/makefile
++++ ampliconnoise-1.29/SeqNoise/makefile
+@@ -2,7 +2,7 @@
+ CFLAGS += -O3
+ EFLAGS = $(LDFLAGS)
+ EFILE  = SeqNoise
+-LIBS   = -lm 
++LIBS   = -lm $(MPI_LIBS)
+ OBJS   = SeqNoise.o
+ 
+ $(EFILE) : $(OBJS)
diff --minimal -Nru ampliconnoise-1.29/debian/patches/series 
ampliconnoise-1.29/debian/patches/series
--- ampliconnoise-1.29/debian/patches/series    2024-08-07 13:41:01.000000000 
+0200
+++ ampliconnoise-1.29/debian/patches/series    2025-06-03 08:29:42.000000000 
+0200
@@ -6,3 +6,4 @@
 fix_sequence_of_function_definitions.patch
 fix_missing_header.patch
 gcc-14.patch
+cross.patch
diff --minimal -Nru ampliconnoise-1.29/debian/rules 
ampliconnoise-1.29/debian/rules
--- ampliconnoise-1.29/debian/rules     2024-11-26 22:07:12.000000000 +0100
+++ ampliconnoise-1.29/debian/rules     2025-06-03 08:29:42.000000000 +0200
@@ -5,15 +5,24 @@
 #export DH_VERBOSE=1
 
 include /usr/share/dpkg/architecture.mk
+include /usr/share/dpkg/buildtools.mk
 
 export DEB_BUILD_MAINT_OPTIONS = hardening=+all
 
 # Compensate test result mismatches occurring on i386 only.
 ifeq ($(DEB_HOST_ARCH),i386)
-export DEB_CFLAGS_MAINT_APPEND=-ffloat-store
-export DEB_CXXFLAGS_MAINT_APPEND=-ffloat-store
+DEB_CFLAGS_MAINT_APPEND=-ffloat-store
+DEB_CXXFLAGS_MAINT_APPEND=-ffloat-store
 endif
 
+# mpi-c only works for openmpi and mpicc only works for native builds.
+# With these settings mpich cross builds are broken and everything else works.
+DEB_CFLAGS_MAINT_APPEND += $(shell $(PKG_CONFIG) --cflags mpi-c)
+DEB_CXXFLAGS_MAINT_APPEND += $(shell $(PKG_CONFIG) --cflags mpi-c)
+MPI_LIBS += $(shell $(PKG_CONFIG) --libs mpi-c)
+
+export DEB_CFLAGS_MAINT_APPEND DEB_CXXFLAGS_MAINT_APPEND MPI_LIBS
+
 %:
        dh $@
 

Reply via email to