Source: openblas
Version: 0.3.29+ds-3
Tags: patch
User: [email protected]
Usertags: cross-satisfiability ftcbfs

openblas fails to cross build from source for several reasons. The
immediate problem is that gfortran as a build dependency cannot be
installed. "gfortran" refers to the native compiler for the host
architecture and if it were installable it could not be run. Instead,
openblas should build depend on "gfortran-for-host". Doing so comes with
a twist though. You cannot just run "gfortran" then. A triplet-prefixed
variant must be used (even for native builds). To comply with this
limitation, a suitable FC variable needs to be passed to the build
system. A suitable value can be obtained from dpkg's buildtools.mk.
While at it, I suggest also setting CC to make the build system honour
the builders choice. For actually cross compiling, the build system
needs to be told via CROSS=1 and it also needs a HOSTCC. And with that
in place, cross building openblas seems to just work. I'm attaching a
patch meant for forky for your convenience.

Helmut
diff --minimal -Nru openblas-0.3.29+ds/debian/changelog 
openblas-0.3.29+ds/debian/changelog
--- openblas-0.3.29+ds/debian/changelog 2025-03-10 19:55:28.000000000 +0100
+++ openblas-0.3.29+ds/debian/changelog 2025-05-31 19:51:06.000000000 +0200
@@ -1,3 +1,12 @@
+openblas (0.3.29+ds-3.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Fix FTCBFS: (Closes: #-1)
+    * Build-Depend on gfortran-for-host.
+    * Set more MAKE_OPTIONS to forward the toolchain.
+
+ -- Helmut Grohne <[email protected]>  Sat, 31 May 2025 19:51:06 +0200
+
 openblas (0.3.29+ds-3) unstable; urgency=medium
 
   * Cherry-pick upstream PR#5170 for thread safety of pthread build.
diff --minimal -Nru openblas-0.3.29+ds/debian/control 
openblas-0.3.29+ds/debian/control
--- openblas-0.3.29+ds/debian/control   2025-01-28 02:08:14.000000000 +0100
+++ openblas-0.3.29+ds/debian/control   2025-05-31 19:47:49.000000000 +0200
@@ -6,7 +6,7 @@
 Priority: optional
 Build-Depends: debhelper-compat (= 13),
                debhelper (>= 12.8~),
-               gfortran,
+               gfortran-for-host,
                liblapack-dev (>= 3.12),
                liblapack64-dev (>= 3.12) [amd64 arm64 ppc64el ppc64 mips64el 
riscv64 sparc64 s390x loong64],
 Standards-Version: 4.7.0
diff --minimal -Nru openblas-0.3.29+ds/debian/rules 
openblas-0.3.29+ds/debian/rules
--- openblas-0.3.29+ds/debian/rules     2025-03-10 19:55:23.000000000 +0100
+++ openblas-0.3.29+ds/debian/rules     2025-05-31 19:51:06.000000000 +0200
@@ -4,12 +4,18 @@
 export DEB_LDFLAGS_MAINT_STRIP := "-Wl,-Bsymbolic-functions"
 
 include /usr/share/dpkg/buildflags.mk
+include /usr/share/dpkg/buildtools.mk
 include /usr/share/dpkg/pkg-info.mk
 SOVER := 0
 SRCS := $(filter-out debian $(FLAVORS), $(wildcard ./*))
 
 MAKE_OPTIONS := NO_LAPACKE=1 NO_AFFINITY=1 NO_WARMUP=1 CFLAGS="$(CPPFLAGS) 
$(CFLAGS)" FFLAGS="$(FFLAGS)"
 
+MAKE_OPTIONS += CC='$(CC)' FC='$(FC)'
+ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
+MAKE_OPTIONS += CROSS=1 HOSTCC='$(CC_FOR_BUILD)'
+endif
+
 # Avoid having -O2 automatically added (especially for DEB_BUILD_OPTIONS=noopt)
 MAKE_OPTIONS += COMMON_OPT=
 

Reply via email to