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=

