Subject: [PATCH v4 00/58] Add support for x86_64-gnu, aka the 64bit Hurd.

From: Janneke Nieuwenhuizen <[email-masked]>
Date: Sun, 24 Nov 2024 08:54:23 +0100

New in v4:

  * Fix %bootstrap-glibc for riscv64/non-hurd -- thanks Efraim!
  * Fix host-x86-64? to remove Hurd references -- thanks Efraim!
  * Have %bootstrap-gcc also wrap g++ _only_ for the 64bit Hurd,
  * Add refcounts-assert patch for the Hurd (32 and 64bit alike) to
    avoid the dreaded
    ext2fs: refcounts_ref: Assertion '! (r.hard == 1 && r.weak == 0) || !"refcount detected use-after-free!"' failed.
    -- thanks Samuel!
  * libstdc++-boot0: Support the 64bit Hurd,
  * gcc-boot0: Support the 64bit Hurd,
  * gcc-final: Support the 64bit Hurd (almost?),
  * gcc-14: Force libdir /lib instead of /lib64 for the 64bit Hurd,
  * Adds another Debian glibc patch {get,set,make,swap}-context, for the 64bit
    Hurd, working around the gnulib-tests/test-sigaction problem -- thanks
    Sergey!
  * Removes findutils patch that disabled all tests on the 64bit Hurd.

The gcc-problem turned out to be a probable gcc bug, see
<https://gcc.gnu.org/pipermail/gcc-bugs/2024-November/889817.html>.

I have built commencement up to, but not just yet including, gcc-final.

--8<---------------cut here---------------start------------->8---
phase `build' failed after 20698.0 seconds
--8<---------------cut here---------------end--------------->8---

just started another round.

The biggest question here is: [When] are we ready to push the cross-gcc 14
patch that's needed for the bootstrap seeds.  Is there anything we could/
should do?

After we have the cross-build gcc 14 patch, rechecking and pushing the
bootstrap seeds patch and the subsequent commencement patches should have
little or no impact.

Greetings,
Janneke

Janneke Nieuwenhuizen (58):
  gnu: gnumach: Update to v1.8+git20240714.
  gnu: mig: Update to 1.8+git20231217.
  gnu: hurd: Update to 0.9.git20240714.
  gnu: Add basic support for x86_64-pc-gnu target, aka 64bit Hurd.
  gnu: cross-libc: Support cross-building for the 64bit Hurd.
  gnu: bash-minimal: Support [cross-]build with gcc-14.
  gnu: elfutils: Fix build for 64bit Hurd.
  gnu: grep: Fix build for the 64bit Hurd.
  gnu: patch: Fix build for the 64bit Hurd.
  gnu: libxcrypt: Support the 64bit Hurd.
  gnu: libstdc++: Support the 64bit Hurd.
  gnu: glibc/hurd: Add patches for the 64bit Hurd.
  gnu: bash: Avoid hang when cross-built for the Hurd.
  gnu: git-minimal: Support [cross-]build with gcc-14 and the 64bit
    Hurd.
  gnu: flex: Fix [cross-]build with gcc-14.
  gnu: libffi: Fix [cross-]build with gcc-14.
  gnu: perl: Support [cross-]build with gcc-14 and the 64bit Hurd.
  gnu: texinfo-4: Fix [cross-]build with gcc-14 and the 64bit Hurd.
  gnu: hurd: Fix build with gcc-14.
  gnu: netdde: Fix build with gcc-14.
  gnu: libedit: Fix [cross-]build with gcc-14 for 32bit.
  gnu: libssh: Fix [cross-]build with gcc-14 for 32bit.
  gnu: guile-lzlib: Support [cross-]build with gcc-14 and the 64bit
    Hurd.
  gnu: cross-base: Update %xgcc to gcc-14, to support the 64bit Hurd.
  gnu: gcc-14: Force libdir /lib instead of /lib64 for the 64bit Hurd.
  gnu: glibc/hurd: Add patch for the 64bit Hurd, fixing "raise".
  gnu: make-bootstrap: Update gcc-static to gcc-14, for the 64bit Hurd.
  DRAFT gnu: bootstrap: Add support for x86_64-gnu, aka the 64bit Hurd.
  system: image: Add hurd64 image types.
  gnu: libgpg-error: Support the 64bit Hurd.
  gnu: openssl-3.0: Support the 64bit Hurd.
  gnu: pciutils: Support the 64bit Hurd.
  gnu: libpciaccess: Support the 64bit Hurd.
  gnu: netdde: Update to c0ef248dc7c5ccc1273e2a796f3ece30c5b645df.
  gnu: netdde: Support the 64bit Hurd.
  gnu: rumpkernel: Update to f1ffd6405f225336e595a0f99f01095ed7438337.
  gnu: rumpkernel: Support the 64bit Hurd.
  gnu: hurd: Build fixes for the 64bit Hurd.
  gnu: inetutils: Fix build for the 64bit Hurd.
  gnu: grub: Fix build for the 64bit Hurd.
  gnu: guile-fibers: Fix build for the 64bit Hurd.
  gnu: m4: Fix build for the 64bit Hurd.
  gnu: commencement: gnumach-headers-boot0: Update to 1.8+git20240714.
  gnu: commencement: mig-boot0: Update to 1.8+git20231217..
  gnu: commencement: hurd-headers-boot0: Update to 0.9.git20240714.
  gnu: commencement: libstdc++-boot0-gcc7: Replace by
    make-libstdc++-boot0.
  gnu: gettext: Fix cross-build shebangs.
  gnu: Add gdb-15.2, with support for the 64bit Hurd.
  gnu: bootstrap: %bootstrap-glibc: Also fix libm.so.
  system: examples: Add bare-hurd64.tmpl.
  system: examples: Add devel-hurd64.tmpl.
  gnu: Use gcc-14, gcc-toolchain-14 on the 64bit Hurd.
  gnu: commencement: kernel-headers-boot0: Support the 64bit Hurd.
  gnu: hurd: Add refcounts-assert patch.
  gnu: bootstrap: %bootstrap-gcc: Also wrap g++ for the 64bit Hurd.
  gnu: commencement: libstdc++-boot0: Support the 64bit Hurd.
  gnu: commencement: gcc-boot0: Support the 64bit Hurd.
  gnu: commencement: gcc-final: Support the 64bit Hurd.

 doc/guix.texi                                 |   9 +-
 gnu/local.mk                                  |  18 +
 gnu/packages/admin.scm                        |  14 +-
 gnu/packages/base.scm                         |  78 +-
 gnu/packages/bash.scm                         |  22 +
 gnu/packages/bootloaders.scm                  |   8 +
 gnu/packages/bootstrap.scm                    |  88 +-
 gnu/packages/commencement.scm                 | 107 +-
 gnu/packages/cross-base.scm                   |  18 +-
 gnu/packages/crypto.scm                       |  13 +
 gnu/packages/elf.scm                          |   6 +-
 gnu/packages/flex.scm                         |   8 +
 gnu/packages/gcc.scm                          |  18 +-
 gnu/packages/gdb.scm                          |  22 +
 gnu/packages/gettext.scm                      |  16 +-
 gnu/packages/gnupg.scm                        |  22 +-
 gnu/packages/guile-xyz.scm                    |   2 +-
 gnu/packages/guile.scm                        |  16 +-
 gnu/packages/hurd.scm                         | 198 ++--
 gnu/packages/libedit.scm                      |   8 +
 gnu/packages/libffi.scm                       |   8 +-
 gnu/packages/m4.scm                           |   9 +-
 gnu/packages/make-bootstrap.scm               |  49 +-
 gnu/packages/patches/gdb-hurd64.patch         | 923 ++++++++++++++++++
 .../glibc-hurd-pthread_setcancelstate.patch   |  92 ++
 gnu/packages/patches/glibc-hurd64-fault.patch |  32 +
 .../glibc-hurd64-gcc-14.2-tls-bug.patch       |  28 +
 .../glibc-hurd64-intr-msg-clobber.patch       |  62 ++
 .../patches/glibc-hurd64-sgms-context.patch   | 505 ++++++++++
 gnu/packages/patches/gnumach-version.patch    |  23 +
 gnu/packages/patches/grub-hurd64.patch        |  32 +
 gnu/packages/patches/guile-lzlib-hurd64.patch |  32 +
 gnu/packages/patches/hurd-64bit.patch         |  56 ++
 .../patches/hurd-refcounts-assert.patch       |  26 +
 gnu/packages/patches/inetutils-hurd64.patch   |  65 ++
 .../patches/libgpg-error-hurd64.patch         |  78 ++
 .../patches/libpciaccess-hurd64.patch         |  58 ++
 gnu/packages/patches/libxcrypt-hurd64.patch   |  38 +
 gnu/packages/patches/netdde-csum.patch        |  18 +
 gnu/packages/patches/openssl-hurd64.patch     |  99 ++
 gnu/packages/patches/pciutils-hurd64.patch    |  31 +
 gnu/packages/pciutils.scm                     |  25 +-
 gnu/packages/perl.scm                         |  18 +-
 gnu/packages/ssh.scm                          |   9 +-
 gnu/packages/texinfo.scm                      |  50 +-
 gnu/packages/tls.scm                          |   9 +
 gnu/packages/version-control.scm              |   7 +-
 gnu/packages/xorg.scm                         |  23 +-
 gnu/system.scm                                |   1 -
 gnu/system/examples/bare-hurd.tmpl            |  21 +-
 gnu/system/examples/bare-hurd64.tmpl          |  70 ++
 gnu/system/examples/devel-hurd.tmpl           |  70 +-
 gnu/system/examples/devel-hurd64.tmpl         |  65 ++
 gnu/system/hurd.scm                           |  17 +
 gnu/system/images/hurd.scm                    |  72 +-
 guix/packages.scm                             |   8 +-
 guix/platforms/x86.scm                        |  11 +-
 guix/utils.scm                                |  34 +-
 m4/guix.m4                                    |  12 +-
 59 files changed, 3190 insertions(+), 287 deletions(-)
 create mode 100644 gnu/packages/patches/gdb-hurd64.patch
 create mode 100644 gnu/packages/patches/glibc-hurd-pthread_setcancelstate.patch
 create mode 100644 gnu/packages/patches/glibc-hurd64-fault.patch
 create mode 100644 gnu/packages/patches/glibc-hurd64-gcc-14.2-tls-bug.patch
 create mode 100644 gnu/packages/patches/glibc-hurd64-intr-msg-clobber.patch
 create mode 100644 gnu/packages/patches/glibc-hurd64-sgms-context.patch
 create mode 100644 gnu/packages/patches/gnumach-version.patch
 create mode 100644 gnu/packages/patches/grub-hurd64.patch
 create mode 100644 gnu/packages/patches/guile-lzlib-hurd64.patch
 create mode 100644 gnu/packages/patches/hurd-64bit.patch
 create mode 100644 gnu/packages/patches/hurd-refcounts-assert.patch
 create mode 100644 gnu/packages/patches/inetutils-hurd64.patch
 create mode 100644 gnu/packages/patches/libgpg-error-hurd64.patch
 create mode 100644 gnu/packages/patches/libpciaccess-hurd64.patch
 create mode 100644 gnu/packages/patches/libxcrypt-hurd64.patch
 create mode 100644 gnu/packages/patches/netdde-csum.patch
 create mode 100644 gnu/packages/patches/openssl-hurd64.patch
 create mode 100644 gnu/packages/patches/pciutils-hurd64.patch
 create mode 100644 gnu/system/examples/bare-hurd64.tmpl
 create mode 100644 gnu/system/examples/devel-hurd64.tmpl

base-commit: 047967c42f237695d5af2af53321c70f157685a3
-- 
2.46.0