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

From: Janneke Nieuwenhuizen <[email-masked]>
Date: Tue, 12 Nov 2024 17:25:09 +0100

From: "Janneke Nieuwenhuizen" <[email-masked]>

New in V2:

Add 64bit native compilation/development support:
  * commencement: update of gnumach-headers-boot0, mig-boot0, hurd-headers-boot0,
  * more 64bit Hurd/gcc-14 build fixes: m4, texinfo-4, flex,
  * cross build fix: gettext-[minimal],
  * rebased on latest master (NOTE: u-boot-tools tests must be disabled in
    order to build a VM, see <https://issues.guix.gnu.org/74270>).

Fixes:
  * guile-static now actually has (convinced libtool to create) a static guile,
  * guile-static-stripped-tarball is now packaged in a guile v3 bag,
  * binutils-static now actually has (convinced libtool to create) static binaries,
  * the hashes for bin/{bash,mkdir,tar,xz} now use guix hash _-r_,
  * the 32bit childhurd uses a 32bit gnumach again (and boots),
  * gnumach-headers-boot0 resets patches, resolving native i586-pc-gnu builds hanging,
  * a new bare-hurd64.tmpl (and devel-hurd64.tmpl) now work around this
    terrible "cannot-cross-build-gnumach-so-let's-guess-an-arch" issue,
    using NOIDE needed for the 64bit hurd to boot, and with better suggestions,

This is about the extent of what it can do right now: 

--8<---------------cut here---------------start------------->8---
15:07:14 janneke@dundal:~/var/geert 
$ ssh root@childhurd1


  This is the GNU Hurd.  Welcome.
root@guixygnu64 ~# uname -a
GNU guixygnu64 0.9 GNU-Mach 1.8/Hurd-0.9 x86_64 GNU
root@guixygnu64 ~# guix shell --bootstrap -D --expression='(@@ (gnu packages commencement) gnu-make-boot0)'
hint: Consider passing the `--check' option once to make sure your shell does not
clobber environment variables.

substitute: updating substitutes from 'http://dezyne.org:8181'... 100.0%
substitute: updating substitutes from 'https://bordeaux.guix.gnu.org'... 100.0%
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
The following derivations will be built:
  /gnu/store/w8y6ksif8m5x5340nc1f7chdmnidhsza-profile.drv
  /gnu/store/8kqnvyf9i8qgizq69314xa576fj4idy5-gcc-bootstrap-0.drv
  /gnu/store/kxi3vim4rl018vrg8gqchn84vda33dwy-bash.drv
  /gnu/store/mx6bmgkli4m404d9mzl4is9nsgycibw4-gcc-stripped-14.2.0-x86_64-pc-gnu.tar.xz.drv
  /gnu/store/mydw2x1m3nwxl2yz8p7kgr043mgzn1vd-tar.drv
  /gnu/store/ps0shilnqwpm40886dnqg4bkazw8pq7i-glibc-bootstrap-0.drv
  /gnu/store/fyk1fklwccp9m0g4x10rsgi6bw2nz3y5-glibc-stripped-2.39-x86_64-pc-gnu.tar.xz.drv
  /gnu/store/q4y6c1xk2vzfm5qff4kxw6skakkdz5mx-module-import-compiled.drv
  /gnu/store/z8bbhrwjlcrb1why3ahz1dk4x1xnwf0j-guile-bootstrap-2.0.drv
  /gnu/store/av844016j5sh8zy7y4h4wxkrs10a2rwd-guile-static-stripped-3.0.9-x86_64-pc-gnu.tar.xz.drv
  /gnu/store/rs264sapynb56fapyrklb5plsn0gsk49-xz.drv
  /gnu/store/zw7x3ln4wl3b0hvrzgjjvywx5bdiffaz-mkdir.drv
  /gnu/store/8llks4si3nqiw0n6sb3nc70nhpnfzw9j-module-import-compiled.drv
  /gnu/store/h0i9912383rhczlxca6pv5d6w9np9ici-bootstrap-binaries-0.drv
  /gnu/store/pllyzbxxbg249x6ckn4hb67g3q4v7xk5-static-binaries-0-x86_64-pc-gnu.tar.xz.drv
  /gnu/store/pa9pzpm6blxiasz5wz98lxdbvlz1a2wn-binutils-bootstrap-0.drv
  /gnu/store/6cg3h8i0mrsizrg1y06gnj491ydhdj9v-binutils-static-stripped-2.41-x86_64-pc-gnu.tar.xz.drv

building /gnu/store/kxi3vim4rl018vrg8gqchn84vda33dwy-bash.drv...
building /gnu/store/6cg3h8i0mrsizrg1y06gnj491ydhdj9v-binutils-static-stripped-2.41-x86_64-pc-gnu.tar.xz.drv...
building /gnu/store/mx6bmgkli4m404d9mzl4is9nsgycibw4-gcc-stripped-14.2.0-x86_64-pc-gnu.tar.xz.drv...
building /gnu/store/fyk1fklwccp9m0g4x10rsgi6bw2nz3y5-glibc-stripped-2.39-x86_64-pc-gnu.tar.xz.drv...
building /gnu/store/av844016j5sh8zy7y4h4wxkrs10a2rwd-guile-static-stripped-3.0.9-x86_64-pc-gnu.tar.xz.drv...
building /gnu/store/zw7x3ln4wl3b0hvrzgjjvywx5bdiffaz-mkdir.drv...
building /gnu/store/pllyzbxxbg249x6ckn4hb67g3q4v7xk5-static-binaries-0-x86_64-pc-gnu.tar.xz.drv...
building /gnu/store/mydw2x1m3nwxl2yz8p7kgr043mgzn1vd-tar.drv...
building /gnu/store/rs264sapynb56fapyrklb5plsn0gsk49-xz.drv...
building /gnu/store/z8bbhrwjlcrb1why3ahz1dk4x1xnwf0j-guile-bootstrap-2.0.drv...
building /gnu/store/8llks4si3nqiw0n6sb3nc70nhpnfzw9j-module-import-compiled.drv...
building /gnu/store/q4y6c1xk2vzfm5qff4kxw6skakkdz5mx-module-import-compiled.drv...
building /gnu/store/pa9pzpm6blxiasz5wz98lxdbvlz1a2wn-binutils-bootstrap-0.drv...
building /gnu/store/h0i9912383rhczlxca6pv5d6w9np9ici-bootstrap-binaries-0.drv...
building /gnu/store/ps0shilnqwpm40886dnqg4bkazw8pq7i-glibc-bootstrap-0.drv...
building /gnu/store/8kqnvyf9i8qgizq69314xa576fj4idy5-gcc-bootstrap-0.drv...
building profile with 4 packages...
bash-5.1# 
--8<---------------cut here---------------end--------------->8---

Reset and updated the hurd-team branch.

Greetings,
Janneke

Janneke Nieuwenhuizen (40):
  gnu: gnumach: Update to v1.8+git20240714.
  gnu: mig: Update to 1.8+git20231217.
  gnu: hurd: Update to 0.9.git20240714.
  gnu: gcc: Add indirections current-gcc, current-gcc-toolchain.
  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: Fix build for 64bit Hurd.
  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: gcc-13, gcc-14: Support being used as parent for gcc-static.
  DRAFT gnu: bootstrap: Add support for x86_64-gnu, aka the 64bit Hurd.
  system: image: Add hurd64 image types.
  gnu: Add libgpg-error-1.50.
  gnu: libgcrypt: Use libgpg-error-1.50 for the 64bit Hurd.
  gnu: perl: Support cross-building for 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: git-minimal: Support 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: texinfo-4: Fix build for the 64bit Hurd.
  gnu: flex: Fix build for the 64bit Hurd.
  system: examples: Add bare-hurd64.tmpl.
  system: examples: Add devel-hurd64.tmpl.

 doc/guix.texi                                 |   9 +-
 gnu/ci.scm                                    |   4 +-
 gnu/local.mk                                  |   9 +
 gnu/packages/admin.scm                        |  14 +-
 gnu/packages/avr.scm                          |   7 +-
 gnu/packages/base.scm                         |  74 ++++---
 gnu/packages/bash.scm                         |   9 +
 gnu/packages/benchmark.scm                    |   6 +-
 gnu/packages/bootloaders.scm                  |  10 +-
 gnu/packages/bootstrap.scm                    |  41 +++-
 gnu/packages/c.scm                            |   4 +-
 gnu/packages/chicken.scm                      |   7 +-
 gnu/packages/commencement.scm                 |  55 +++---
 gnu/packages/containers.scm                   |   5 +-
 gnu/packages/cross-base.scm                   |  27 +--
 gnu/packages/crypto.scm                       |  15 ++
 gnu/packages/dlang.scm                        |   3 +-
 gnu/packages/elf.scm                          |   6 +-
 gnu/packages/engineering.scm                  |   4 +-
 gnu/packages/flex.scm                         |   8 +
 gnu/packages/gawk.scm                         |   3 +-
 gnu/packages/gcc.scm                          |  69 ++++---
 gnu/packages/gettext.scm                      |  16 +-
 gnu/packages/gnupg.scm                        |  19 +-
 gnu/packages/golang.scm                       |   3 +-
 gnu/packages/guile-xyz.scm                    |   2 +-
 gnu/packages/hurd.scm                         | 187 ++++++++++++------
 gnu/packages/julia-xyz.scm                    |   3 +-
 gnu/packages/lisp.scm                         |   3 +-
 gnu/packages/llvm.scm                         |   7 +-
 gnu/packages/m4.scm                           |   9 +-
 gnu/packages/make-bootstrap.scm               |  76 ++++---
 gnu/packages/mpi.scm                          |   3 +-
 gnu/packages/parallel.scm                     |   5 +-
 gnu/packages/patches/gnumach-version.patch    |  23 +++
 gnu/packages/patches/grub-hurd64.patch        |  32 +++
 gnu/packages/patches/hurd-64bit.patch         |  56 ++++++
 gnu/packages/patches/inetutils-hurd64.patch   |  65 ++++++
 .../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                         |  20 +-
 gnu/packages/rocm.scm                         |   3 +-
 gnu/packages/texinfo.scm                      |  50 ++---
 gnu/packages/tls.scm                          |   9 +
 gnu/packages/version-control.scm              |   8 +-
 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                                |  15 +-
 m4/guix.m4                                    |  12 +-
 61 files changed, 1312 insertions(+), 330 deletions(-)
 create mode 100644 gnu/packages/patches/gnumach-version.patch
 create mode 100644 gnu/packages/patches/grub-hurd64.patch
 create mode 100644 gnu/packages/patches/hurd-64bit.patch
 create mode 100644 gnu/packages/patches/inetutils-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: b10ce47d8be5b6c15987f4e1d93b3bd71b1eb220
-- 
Janneke Nieuwenhuizen <[email-masked]>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com