Bug#1107056: libhdf4 FTCBFS: gfortran dependency not satisfiable

Helmut Grohne helmut at subdivi.de
Sat May 31 18:33:45 BST 2025


Source: libhdf4
Version: 4.3.0-1
Tags: patch
User: debian-cross at lists.debian.org
Usertags: ftcbfs

libhdf4 fails to cross build from source, because its gfortran build
dependency is not satisfiable. In general, bare toolchain dependencies
are not compatible with cross compilation, because they do not indicate
the architecture they are used for. In this case, gfortran-for-host
should be used.

Note that gfortran-for-host does not provide a bare gfortran. For using
it, it must be invoked as ${DEB_HOST_GNU_TYPE}-gfortran. All other
alternatives regress some other use case. Hence I propose letting dpkg's
buildtools.mk initialize F77.

With these changes, we may run configure, but that fails detecting
whether szip provides an encoder. It invokes SZ_encoder_enabled() and
this is not something we can do during cross compilation. Recent
versions always have encoder support, so I suggest guessing this during
cross builds.

With that additional change, configure passes, but make still fails. It
runs ncgen during build for ctest0 and ftest0. Both are check programs
not needed in a nocheck build, but the upstream build system insists
building them. For one thing, mfhdf/ncgen/Makefile.am adds them to
noinst_PROGRAMS (which it likely should not do). For another
config/conclude.am explicitly adds $(chk_TESTS) to all-local so even
then check_PROGRAMS are built with the all target.  I tried removing
them from the nocheck build, but I did not find a good way to achieve
that. Thus leaving this aspect unaddressed for the moment. Let me know
if you have good ideas.

I note that the patch is meant for forky, not trixie. And then even if
you leave the ncgen aspect unaddressed, please close this bug when
addressing the Build-Dependency.

Helmut
-------------- next part --------------
diff --minimal -Nru libhdf4-4.3.0/debian/changelog libhdf4-4.3.0/debian/changelog
--- libhdf4-4.3.0/debian/changelog	2024-04-09 20:42:32.000000000 +0200
+++ libhdf4-4.3.0/debian/changelog	2025-05-31 17:49:16.000000000 +0200
@@ -1,3 +1,10 @@
+libhdf4 (4.3.0-1.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Improve cross building: Use gfortran-for-host. (Closes: #-1)
+
+ -- Helmut Grohne <helmut at subdivi.de>  Sat, 31 May 2025 17:49:16 +0200
+
 libhdf4 (4.3.0-1) unstable; urgency=medium
 
   * Team upload.
diff --minimal -Nru libhdf4-4.3.0/debian/control libhdf4-4.3.0/debian/control
--- libhdf4-4.3.0/debian/control	2024-04-09 20:42:13.000000000 +0200
+++ libhdf4-4.3.0/debian/control	2025-05-31 17:47:51.000000000 +0200
@@ -8,7 +8,7 @@
                chrpath,
                debhelper-compat (= 13),
                flex,
-               gfortran,
+               gfortran-for-host,
                libaec-dev,
                libjpeg-dev,
                libtirpc-dev,
diff --minimal -Nru libhdf4-4.3.0/debian/patches/cross.patch libhdf4-4.3.0/debian/patches/cross.patch
--- libhdf4-4.3.0/debian/patches/cross.patch	1970-01-01 01:00:00.000000000 +0100
+++ libhdf4-4.3.0/debian/patches/cross.patch	2025-05-31 17:49:16.000000000 +0200
@@ -0,0 +1,26 @@
+--- libhdf4-4.3.0.orig/configure.ac
++++ libhdf4-4.3.0/configure.ac
+@@ -845,15 +845,16 @@
+         else
+             exit(1);
+     }
+-    ]])],[CAN_ENCODE="yes"],[CAN_ENCODE="no"],[])
+-
+-    ## Report szip encoder test results
+-    if test "X$CAN_ENCODE" = "Xyes"; then
++    ]])],[
+         AC_MSG_RESULT([yes])
+-    fi
+-    if test "X$CAN_ENCODE" = "Xno"; then
++        CAN_ENCODE="yes"
++    ],[
+         AC_MSG_RESULT([no])
+-    fi
++        CAN_ENCODE="no"
++    ],[
++        AC_MSG_RESULT([cross compiling. guessing yes])
++        CAN_ENCODE="yes"
++    ])
+ 
+     ## Add "szip" to external filter list
+     if test "X$CAN_ENCODE" = "Xyes"; then
diff --minimal -Nru libhdf4-4.3.0/debian/patches/series libhdf4-4.3.0/debian/patches/series
--- libhdf4-4.3.0/debian/patches/series	2024-04-09 20:42:02.000000000 +0200
+++ libhdf4-4.3.0/debian/patches/series	2025-05-31 17:49:16.000000000 +0200
@@ -1,3 +1,4 @@
 enablesharedfortran.diff
 reproducible-builds.patch
 szlib.patch
+cross.patch
diff --minimal -Nru libhdf4-4.3.0/debian/rules libhdf4-4.3.0/debian/rules
--- libhdf4-4.3.0/debian/rules	2024-04-09 20:42:02.000000000 +0200
+++ libhdf4-4.3.0/debian/rules	2025-05-31 17:49:16.000000000 +0200
@@ -9,12 +9,11 @@
 export DEB_BUILD_MAINT_OPTIONS=hardening=+all
 
 include /usr/share/dpkg/architecture.mk
+include /usr/share/dpkg/buildtools.mk
 include /usr/share/dpkg/pkg-info.mk
 
 UPSTREAM_VERSION = $(shell echo $(DEB_VERSION_UPSTREAM) | sed -e 's/\+.*//')
 
-DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
-
 RELEASE := $(UPSTREAM_VERSION)
 PACKAGE := libhdf4
 SOVER   := 0
@@ -22,9 +21,6 @@
 DESTDIR     := $(CURDIR)/debian/tmp
 DESTDIR_ALT := $(CURDIR)/debian/tmp-alt
 
-F77  := gfortran
-CC   := gcc
-CXX  := g++
 LIBS := -ljpeg -lz -lm
 
 export DEB_FFLAGS_MAINT_APPEND += -fallow-argument-mismatch


More information about the Pkg-grass-devel mailing list