mbox series

[bug#74290,00/31] Add support for x86_64-gnu, aka the 64bit Hurd.

Message ID cover.1731232753.git.janneke@gnu.org
Headers show
Series Add support for x86_64-gnu, aka the 64bit Hurd. | expand

Message

Janneke Nieuwenhuizen Nov. 10, 2024, 10:32 a.m. UTC
From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org>

Hi,

Lo and behold, the 64bit Hurd boots!  Again, thanks to the help from the
kind folks over at libera #hurd and their excellent work.  Do something like:

--8<---------------cut here---------------start------------->8---
./pre-inst-env guix system image --image-type=hurd64-qcow2 \
  gnu/system/examples/bare-hurd.tmpl
--8<---------------cut here---------------end--------------->8---

producing something like: /gnu/store/...-disk-image.

Run the image in QEMU:

--8<---------------cut here---------------start------------->8---
guix shell qemu@7 -- qemu-system-x86_64                 \
--machine q35                                           \
-m 4096                                                 \
--enable-kvm                                            \
--device rtl8139,netdev=net0                            \
--netdev user,id=net0,hostfwd=tcp:0.0.0.0:11022-:2222   \
--snapshot                                              \
--hda /gnu/store/...-disk-image
--8<---------------cut here---------------end--------------->8---

and login

--8<---------------cut here---------------start------------->8---
11:03:20 janneke@dundal:~/src/guix/hurd-team 
$ ssh -p 11022 root@localhost
Last login: Sun Nov 10 10:09:00 2024 from 10.0.2.2


  This is the GNU Hurd.  Welcome.

root@guixygnu ~# uname -a
GNU guixygnu 0.9 GNU-Mach 1.8/Hurd-0.9 x86_64 GNU
--8<---------------cut here---------------end--------------->8---

Most notably, besides the expected updates, this series adds an indirection
for gcc and gcc-toolchain, (current-gcc) and (current-gcc-toolchain)
respectively, as the 64bit Hurd needs gcc-14.  We may also want to think about
image names hurd64-qcow2 etc. and their defaults, vs hurd-qcow2/hurd32-qcow2.
We'll probably also want a 64bit childhurd service, etc, etc...

This series builds on/waits for #73927, which I intend to rebase and push
later this weekend if there are no further comments.  And I guess that the
pending blog post will also need an update :)

For your hacking convenience I have reset and updated the `hurd-team' branch.

Greetings,
Janneke

Janneke Nieuwenhuizen (31):
  gnu: mig: Update to v1.8+git20231217.
  gnu: gnumach: Update to v1.8+git20240714.
  gnu: hurd: Update to v0.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.
  system: hurd: Use 64bit gnumach for the 64bit Hurd.

 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                    |  46 ++++-
 gnu/packages/c.scm                            |   4 +-
 gnu/packages/chicken.scm                      |   7 +-
 gnu/packages/commencement.scm                 |  35 ++--
 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/gawk.scm                         |   3 +-
 gnu/packages/gcc.scm                          |  69 ++++---
 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/make-bootstrap.scm               |  60 +++---
 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/tls.scm                          |   9 +
 gnu/packages/version-control.scm              |   8 +-
 gnu/packages/xorg.scm                         |  23 ++-
 gnu/system.scm                                |   1 -
 gnu/system/hurd.scm                           |  11 +-
 gnu/system/images/hurd.scm                    |  47 ++++-
 guix/packages.scm                             |   8 +-
 guix/platforms/x86.scm                        |  11 +-
 guix/utils.scm                                |  15 +-
 m4/guix.m4                                    |  12 +-
 53 files changed, 1025 insertions(+), 246 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


base-commit: 7105e7125882be35e334448eafd6d81b37b627f0

Comments

Janneke Nieuwenhuizen Nov. 10, 2024, 2:15 p.m. UTC | #1
Janneke Nieuwenhuizen writes:

From running etc/teams.scm by hand I found that you should have been
CC'd on this patch series, sorry.  Working from a backup laptop that
missed the ../etc/git/gitconfig teams include.

> Hi,
>
> Lo and behold, the 64bit Hurd boots!  Again, thanks to the help from the
> kind folks over at libera #hurd and their excellent work.  Do something like:
>
> ./pre-inst-env guix system image --image-type=hurd64-qcow2 \
>   gnu/system/examples/bare-hurd.tmpl
>
>
> producing something like: /gnu/store/...-disk-image.
>
> Run the image in QEMU:
>
> guix shell qemu@7 -- qemu-system-x86_64                 \
> --machine q35                                           \
> -m 4096                                                 \
> --enable-kvm                                            \
> --device rtl8139,netdev=net0                            \
> --netdev user,id=net0,hostfwd=tcp:0.0.0.0:11022-:2222   \
> --snapshot                                              \
> --hda /gnu/store/...-disk-image
>
>
> and login
>
> 11:03:20 janneke@dundal:~/src/guix/hurd-team 
> $ ssh -p 11022 root@localhost
> Last login: Sun Nov 10 10:09:00 2024 from 10.0.2.2
> 
> 
>   This is the GNU Hurd.  Welcome.
>
> root@guixygnu ~# uname -a
> GNU guixygnu 0.9 GNU-Mach 1.8/Hurd-0.9 x86_64 GNU
>
> Most notably, besides the expected updates, this series adds an indirection
> for gcc and gcc-toolchain, (current-gcc) and (current-gcc-toolchain)
> respectively, as the 64bit Hurd needs gcc-14.  We may also want to think about
> image names hurd64-qcow2 etc. and their defaults, vs hurd-qcow2/hurd32-qcow2.
> We'll probably also want a 64bit childhurd service, etc, etc...
>
> This series builds on/waits for #73927, which I intend to rebase and push
> later this weekend if there are no further comments.  And I guess that the
> pending blog post will also need an update :)
>
> For your hacking convenience I have reset and updated the `hurd-team' branch.
>
> Greetings,
> Janneke
>
> Janneke Nieuwenhuizen (31):
>   gnu: mig: Update to v1.8+git20231217.
>   gnu: gnumach: Update to v1.8+git20240714.
>   gnu: hurd: Update to v0.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.
>   system: hurd: Use 64bit gnumach for the 64bit Hurd.
>
>  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                    |  46 ++++-
>  gnu/packages/c.scm                            |   4 +-
>  gnu/packages/chicken.scm                      |   7 +-
>  gnu/packages/commencement.scm                 |  35 ++--
>  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/gawk.scm                         |   3 +-
>  gnu/packages/gcc.scm                          |  69 ++++---
>  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/make-bootstrap.scm               |  60 +++---
>  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/tls.scm                          |   9 +
>  gnu/packages/version-control.scm              |   8 +-
>  gnu/packages/xorg.scm                         |  23 ++-
>  gnu/system.scm                                |   1 -
>  gnu/system/hurd.scm                           |  11 +-
>  gnu/system/images/hurd.scm                    |  47 ++++-
>  guix/packages.scm                             |   8 +-
>  guix/platforms/x86.scm                        |  11 +-
>  guix/utils.scm                                |  15 +-
>  m4/guix.m4                                    |  12 +-
>  53 files changed, 1025 insertions(+), 246 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
>
>
> base-commit: 7105e7125882be35e334448eafd6d81b37b627f0
Maxim Cournoyer Nov. 12, 2024, 1:17 a.m. UTC | #2
Hi Janneke!

<janneke@gnu.org> writes:

> Janneke Nieuwenhuizen writes:
>
> From running etc/teams.scm by hand I found that you should have been
> CC'd on this patch series, sorry.  Working from a backup laptop that
> missed the ../etc/git/gitconfig teams include.

No worries.  Note that the git configuration should self-heal/update
itself on every 'make' invocation, IIRC.