Subject: [bug#62307] [PATCH core-updates 00/15] Update Hurd and fix build failures

From: Ludovic Courtès <[email-masked]>
Date: Wed, 22 Mar 2023 15:54:33 +0100

Hi,

Josselin Poiret <[email-masked]> skribis:

> * gnu/packages/base.scm (glibc/fix-for-hurd-cross): New variable.
> (glibc/hurd-headers): Inherit it.
> * gnu/packages/patches/glibc-hurd-add-freestanding-for-configure.patch:
> * gnu/packages/patches/glibc-hurd-add-freestanding-to-cppflags.patch: New files
> * gnu/local.mk (dist_patch_DATA): Register patches.

I’d like to keep this approach (defining a package variant and carrying
Hurd-specific patches) as a last resort.

If I’m not mistaken, we should be able to achieve the same result with a
patch like this one (untested):

diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 2959616af6..9db12bcf9f 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -577,7 +577,20 @@ (define* (cross-libc* target
            ((#:configure-flags flags)
             `(cons ,(string-append "--host=" target)
                    ,(if (target-hurd? target)
-                        `(cons "--disable-werror" ,flags)
+                        `(cons* "--disable-werror"
+
+                                ;; 'configure' in glibc 2.35 omits to pass
+                                ;; '-ffreestanding' when detecting Mach
+                                ;; headers.  This is fixed in glibc commits
+                                ;; 8b8c768e3c701ed1993789bb46acb8a12c7a93df
+                                ;; and
+                                ;; 7685630b98ca2a3f5de86eadf130993e6cf998a0;
+                                ;; as a workaround, bypass those tests.
+                                "ac_cv_header_mach_mach_types_defs=yes"
+                                "ac_cv_header_mach_mach_types_h=yes"
+                                "ac_cv_header_mach_machine_ndr_def_h=yes"
+                                "libc_cv_mach_task_creation_time=yes"
+                                ,flags)
                         flags)))
            ((#:phases phases)
             `(modify-phases ,phases

How does that sound?

Thanks,
Ludo’.