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

From: Josselin Poiret <[email-masked]>
Date: Mon, 20 Mar 2023 23:07:26 +0100

Hello everyone,

Someone convinced me to have a look at Hurd on core-updates, since it was not
building.  The reason was a newer libc, as well as a newer gcc which turned
warnings into errors.  I figured the best way to resolve this would be to update
our Hurd packages, but it's not as simple as it sounds!

gnumach, mig, hurd and glibc are quite coupled, and even though they have git
tags now, it doesn't mean those tags actually build!  I had to pick some tag
from August for Hurd, since anything newer would require some patches for glibc,
and also pick gnumach and mig versions around that time.  We also need some
patches for glibc (only when cross-building) and gcc (for cross and native).
For the latter, I added some kludge to only modify the derivation if we're
building for the Hurd, so that it doesn't cause rebuilds.  I think it works
fine, but please do tell me if it still causes rebuilds elsewhere.

I've also tried cleaning up the packages, so that building Hurd could be
possible on non-x86 architectures.  We had quite a lot of hacks, like building a
32-bit mig that we would then run to generate headers.  Now, we should be using
proper cross tools everywhere, even mig.

I've fixed a couple of things as well so that I could build the basic disk image
using `guix system image -t hurd-raw gnu/system/examples/bare-hurd.tmpl` (fixes
to u-boot and opensbi will be sent separately, needed for qemu-minimal).  It
boots up to early userspace, but then the image is unable to set the passive
translators for /servers/exec and /servers/socket/1, the setxattr call fails
with ENOTSUP.  I guess this will be left as an exercise for the reader...

Best,

Josselin Poiret (15):
  gnu: glibc/fix-for-hurd-cross: Add new variant.
  gnu-build-system: Sneak fixed glibc when cross-building for Hurd.
  gcc-11: Patch libstdc++ libpthread issue for Hurd only.
  cross-base: Factor out cross-mig.
  cross-base: Add cross arguments to hurd derivatives.
  cross-base: Removed useless inputs to xhurd-core-headers.
  mig: Update to 1.8+git20220827.
  gnumach: Update to 1.8+git20220827.
  hurd: Update to 91a51672ff4cfe1f1a0712b4c542ded3081c825b.
  hurd: Remove useless glibc/hurd-headers input.
  gnumach, hurd-headers, hurd: Switch to using cross-mig.
  hurd: Update DDE and use libdde_linux26.
  mig/32-bit: Remove.
  system: hurd: Use shepherd-0.8 in the package list.
  system: pam: Only add linux-pam reference if on Linux.

 gnu/local.mk                                  |  10 +-
 gnu/packages/base.scm                         |  13 +-
 gnu/packages/commencement.scm                 |  10 +-
 gnu/packages/cross-base.scm                   | 128 ++-
 gnu/packages/gcc.scm                          |  32 +
 gnu/packages/hurd.scm                         | 294 +++---
 .../gcc-11-libstdc++-hurd-libpthread.patch    |  62 ++
 ...-hurd-add-freestanding-for-configure.patch |  87 ++
 ...bc-hurd-add-freestanding-to-cppflags.patch |  72 ++
 ...ng-const_mach_port_name_array_t-type.patch |  32 +
 ...rd-add-without-rump-configure-option.patch |  82 ++
 gnu/packages/patches/hurd-cross.patch         |  33 -
 ...f-read-write-and-readables-methods-2.patch | 155 +++
 ...-of-read-write-and-readables-methods.patch | 891 ++++++++++++++++++
 gnu/packages/patches/hurd-xattr.patch         |  53 --
 ...ig-generate-cpu.h-with-ffreestanding.patch |  37 +
 gnu/system/hurd.scm                           |   2 +-
 gnu/system/pam.scm                            |  16 +-
 guix/build-system/gnu.scm                     |  48 +-
 19 files changed, 1760 insertions(+), 297 deletions(-)
 create mode 100644 gnu/packages/patches/gcc-11-libstdc++-hurd-libpthread.patch
 create mode 100644 gnu/packages/patches/glibc-hurd-add-freestanding-for-configure.patch
 create mode 100644 gnu/packages/patches/glibc-hurd-add-freestanding-to-cppflags.patch
 create mode 100644 gnu/packages/patches/gnumach-add-missing-const_mach_port_name_array_t-type.patch
 create mode 100644 gnu/packages/patches/hurd-add-without-rump-configure-option.patch
 delete mode 100644 gnu/packages/patches/hurd-cross.patch
 create mode 100644 gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch
 create mode 100644 gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch
 delete mode 100644 gnu/packages/patches/hurd-xattr.patch
 create mode 100644 gnu/packages/patches/mig-generate-cpu.h-with-ffreestanding.patch

base-commit: bfe569e84b539c505e1e432d8ceea91e1481e904
-- 
2.39.2