Bug#1107057: suitesparse FTCBFS: gfortran dependency not satisfiable

Helmut Grohne helmut at subdivi.de
Sat May 31 16:44:17 BST 2025


Source: suitesparse
Version: 1:7.10.1+dfsg-1
Tags: patch
User: debian-cross at lists.debian.org
Usertags: cross-satisfiability

suitesparse fails to cross build from source, because its build
dependency on gfortran is not satisfiable. Generally, bare toolchain
names are not satisfiable in cross builds as they do not indicate what
architecture it is being used for. We need to annotate such dependencies
indicating whether they are needed for the build or host architecture.
In this case, it should be gfortran-for-host.

Note that merely replacing the package name is not enough. It'll work
for cross builds but break native builds. The -for-host variant does not
provide the bare toolchain name. You may not run it as "gfortran" (even
when building natively). Instead, ${DEB_HOST_GNU_TYPE}-gfortran must be
used. We sought for alternative solutions, but every other alternative
degrades some other use case. That said, adding the architecture prefix
is never wrong and hence we now recommend being explicit over being
implicit.

I'm attaching a patch for your convenience. It happens to also reduce
Build-Depends a bit more to get the Python stuff removed from the
arch-only build.

I do not consider the patch appropriate for inclusion in trixie. It is
meant for forky.

Helmut
-------------- next part --------------
diff --minimal -Nru suitesparse-7.10.1+dfsg/debian/changelog suitesparse-7.10.1+dfsg/debian/changelog
--- suitesparse-7.10.1+dfsg/debian/changelog	2025-03-09 20:48:30.000000000 +0100
+++ suitesparse-7.10.1+dfsg/debian/changelog	2025-05-31 10:21:42.000000000 +0200
@@ -1,3 +1,11 @@
+suitesparse (1:7.10.1+dfsg-1.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix FTCBFS: Use gfortran-for-host (Closes: #-1)
+  + Demote more Build-Depends to B-D-I.
+
+ -- Helmut Grohne <helmut at subdivi.de>  Sat, 31 May 2025 10:21:42 +0200
+
 suitesparse (1:7.10.1+dfsg-1) unstable; urgency=medium
 
   * New upstream version 7.10.1+dfsg
diff --minimal -Nru suitesparse-7.10.1+dfsg/debian/control suitesparse-7.10.1+dfsg/debian/control
--- suitesparse-7.10.1+dfsg/debian/control	2025-03-02 10:36:08.000000000 +0100
+++ suitesparse-7.10.1+dfsg/debian/control	2025-05-31 10:21:42.000000000 +0200
@@ -5,19 +5,19 @@
 Priority: optional
 Build-Depends: debhelper-compat (= 13),
                cmake,
-               dh-sequence-python3,
-               python3-setuptools
 Build-Depends-Arch: pkgconf,
-                    gfortran,
+                    gfortran-for-host,
                     libblas-dev,
                     liblapack-dev,
                     libgmp-dev,
                     libmpfr-dev
-Build-Depends-Indep: texlive-latex-extra,
+Build-Depends-Indep: dh-sequence-python3,
+                     texlive-latex-extra,
                      texlive-plain-generic,
                      texlive-bibtex-extra,
                      texlive-fonts-extra,
                      ghostscript,
+                     python3-setuptools,
                      texlive-science,
                      texlive-xetex,
                      python3-pygments
diff --minimal -Nru suitesparse-7.10.1+dfsg/debian/rules suitesparse-7.10.1+dfsg/debian/rules
--- suitesparse-7.10.1+dfsg/debian/rules	2025-03-02 10:36:08.000000000 +0100
+++ suitesparse-7.10.1+dfsg/debian/rules	2025-05-31 10:21:42.000000000 +0200
@@ -4,6 +4,10 @@
 
 include /usr/share/dpkg/default.mk
 
+ifeq ($(origin FC),default)
+export FC := $(DEB_HOST_GNU_TYPE)-gfortran
+endif
+
 PDF_DOCS := AMD/Doc/AMD_UserGuide.pdf CAMD/Doc/CAMD_UserGuide.pdf CHOLMOD/Doc/CHOLMOD_UserGuide.pdf KLU/Doc/KLU_UserGuide.pdf Mongoose/Doc/Mongoose_UserGuide.pdf UMFPACK/Doc/UMFPACK_QuickStart.pdf UMFPACK/Doc/UMFPACK_UserGuide.pdf LDL/Doc/ldl_userguide.pdf ParU/Doc/paru_user_guide.pdf SPQR/Doc/spqr_user_guide.pdf SPEX/Doc/SPEX_UserGuide.pdf
 
 # Force CMake buildsystem, because otherwise the top-level Makefile is used
@@ -35,7 +39,7 @@
 execute_after_dh_auto_clean:
 	make purge
 	rm -f $(PDF_DOCS)
-	pybuild --clean
+	if [ -e .pybuild ]; then pybuild --clean; fi
 	# For some unknown reason, pybuild --clean does not clean the following
 	rm -rf .pybuild
 


More information about the debian-science-maintainers mailing list