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

  • Open
  • quality assurance status badge
Details
3 participants
  • Janneke Nieuwenhuizen
  • Ludovic Courtès
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Janneke Nieuwenhuizen
Severity
normal
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:32 +0100
(address . guix-patches@gnu.org)(name . Jan (janneke) Nieuwenhuizen)(address . janneke@gnu.org)
cover.1731232753.git.janneke@gnu.org
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:

Toggle snippet (4 lines)
./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:

Toggle snippet (10 lines)
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

Toggle snippet (11 lines)
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
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:37 +0100
[PATCH 02/31] gnu: gnumach: Update to v1.8+git20240714.
(address . 74290@debbugs.gnu.org)
e6b7b545eb806208c6c58c3096bf83753728b73c.1731232753.git.janneke@gnu.org
* gnu/packages/patches/gnumach-version.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/hurd.scm (gnumach-headers): Update to v1.8+git20240714 and use
it.

Change-Id: I147c64021c2ee79dfc4cd4fd9a29529eef8890c5
---
gnu/local.mk | 1 +
gnu/packages/hurd.scm | 9 ++++-----
gnu/packages/patches/gnumach-version.patch | 23 ++++++++++++++++++++++
3 files changed, 28 insertions(+), 5 deletions(-)
create mode 100644 gnu/packages/patches/gnumach-version.patch

Toggle diff (74 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 2c810117eb..4d3ee9ea35 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1459,6 +1459,7 @@ dist_patch_DATA = \
%D%/packages/patches/gnome-session-support-elogind.patch \
%D%/packages/patches/gnome-tweaks-search-paths.patch \
%D%/packages/patches/gnulib-bootstrap.patch \
+ %D%/packages/patches/gnumach-version.patch \
%D%/packages/patches/gnupg-default-pinentry.patch \
%D%/packages/patches/gnupg-1-build-with-gcc10.patch \
%D%/packages/patches/gnutls-skip-trust-store-test.patch \
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 0a7db31e1c..28f39cc448 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -57,21 +57,20 @@ (define (hurd-source-url version)
version ".tar.gz"))
(define-public gnumach-headers
- (let ((revision "0")
- (commit "2556fdece900d67529d5eda01f1bdaae4ffe96b0"))
+ (let ((commit "v1.8+git20240714"))
(package
(name "gnumach-headers")
- (version (git-version "1.8" revision commit))
+ (version (string-drop commit 1))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://git.savannah.gnu.org/git/hurd/gnumach.git")
(commit commit)))
+ (patches (search-patches "gnumach-version.patch"))
(file-name (git-file-name "gnumach" version))
(sha256
- (base32
- "1lzsbix0l4jhab38pvwnmk7ip1lsn7m5smhnrciqajsqnadsnlzs"))))
+ (base32 "0ykav1kx0bgxcxw04bpcsh5s4531fzdkahjgrlsfs2h3w3vfkga0"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/patches/gnumach-version.patch b/gnu/packages/patches/gnumach-version.patch
new file mode 100644
index 0000000000..aec3c86a16
--- /dev/null
+++ b/gnu/packages/patches/gnumach-version.patch
@@ -0,0 +1,23 @@
+Upstream-status: Taken from Debian upstream:
+ <https://salsa.debian.org/hurd-team/gnumach/-/raw/master/debian/patches/12_version_suffix.patch>
+
+Index: gnumach/configure.ac
+===================================================================
+--- gnumach.orig/configure.ac
++++ gnumach/configure.ac
+@@ -19,6 +19,7 @@ AC_PREREQ([2.57])
+ m4_include([version.m4])
+ AC_INIT([AC_PACKAGE_NAME], [AC_PACKAGE_VERSION], [AC_PACKAGE_BUGREPORT],
+ [AC_PACKAGE_TARNAME])
++AC_SUBST([PACKAGE_VERSION_SUFFIX])
+ AC_CONFIG_SRCDIR([kern/ipc_kobject.c])
+
+ if test -z "${CFLAGS+set}"; then
+Index: gnumach/version.c.in
+===================================================================
+--- gnumach.orig/version.c.in
++++ gnumach/version.c.in
+@@ -1,2 +1,2 @@
+ /* @configure_input@ */
+-const char version[] = "@PACKAGE_NAME@ @PACKAGE_VERSION@";
++const char version[] = "@PACKAGE_NAME@ @PACKAGE_VERSION@@PACKAGE_VERSION_SUFFIX@";
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:37 +0100
[PATCH 01/31] gnu: mig: Update to v1.8+git20231217.
(address . 74290@debbugs.gnu.org)
2b7c13c96850e5a00c9986fcad82215d06405291.1731232753.git.janneke@gnu.org
* gnu/packages/hurd.scm (mig): Update to v1.8+git20231217.

Change-Id: I0e531ecc7fdcfbefe2e0e24d7b2fb5e0fe8a3ae2
---
gnu/packages/hurd.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (25 lines)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 9c1681f236..0a7db31e1c 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -93,7 +93,7 @@ (define-public gnumach-headers
(define-public mig
(package
(name "mig")
- (version "1.8+git20230520")
+ (version "1.8+git20231217")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -102,7 +102,7 @@ (define-public mig
(file-name (git-file-name name version))
(sha256
(base32
- "10r0fdjqjzqsy6ajb21rifvhw0wpjvrw6a1zdyliqlzqny5k0qlz"))))
+ "1mx7w5vzw5ws0zplm1y6s679jb1g2hjkiwl3dlk5lxys0dxs5g4g"))))
(build-system gnu-build-system)
;; Flex is needed both at build and run time.
(inputs (list gnumach-headers flex))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:37 +0100
[PATCH 03/31] gnu: hurd: Update to v0.9.git20240714.
(address . 74290@debbugs.gnu.org)
fae55dd7027b6cb60c0e1cd6a1129ea1e2a632b6.1731232753.git.janneke@gnu.org
* gnu/packages/hurd.scm (hurd-headers): Update to v0.9.git20240714.
(hurd)[arguments]: Remove rumpdisk build hack from "prepare-addons" stage.
Instead, when cross-compiling, add stage "fixup-cross-configure" to enable
rumpdisk.
* gnu/system.scm (hurd-multiboot-modules): Remove
"--x-xattr-translator-records" option that has been removed and is now the
default.

Change-Id: I4609b5a959c1ece98e2fe1aedbb1d31d6edadcca
---
gnu/packages/hurd.scm | 12 +++++++++---
gnu/system.scm | 1 -
2 files changed, 9 insertions(+), 4 deletions(-)

Toggle diff (59 lines)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 28f39cc448..06fae1bd3b 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -132,7 +132,7 @@ (define-public mig
(define-public hurd-headers
(let ((revision "3")
- (commit "v0.9.git20231217"))
+ (commit "v0.9.git20240714"))
(package
(name "hurd-headers")
(version (string-drop commit 1))
@@ -143,7 +143,7 @@ (define-public hurd-headers
(commit commit)))
(sha256
(base32
- "1d138kzhil6s5gf9di8grpz1iziakyfv037wkc8s7qyd61imm31d"))
+ "0wvzil3llmrjg7ymwqs86d11bm5fl771jwncv7kk679lsvqca0ll"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(native-inputs
@@ -336,7 +336,7 @@ (define-public hurd
;; Makefile. libdde_linux26 is built later in its own phase.
(substitute* "Makefile"
(("libbpf ")
- "libbpf libmachdevdde libddekit rumpdisk"))))
+ "libbpf libmachdevdde libddekit "))))
(add-after 'unpack 'find-tirpc
(lambda* (#:key inputs #:allow-other-keys)
(for-each (lambda (var)
@@ -362,6 +362,12 @@ (define-public hurd
(("#include <rpc/pmap_prot.h>" m)
(string-append "#include <rpc/types.h>\n#include <rpc/xdr.h>\n" m)))
#t))
+ ,@(if (%current-target-system)
+ '((add-after 'configure 'fixup-cross-configure
+ (lambda _
+ (substitute* "config.make"
+ (("HAVE_LIBRUMP = no") "HAVE_LIBRUMP = yes")))))
+ '())
(add-before 'build 'pre-build
(lambda _
;; Don't change the ownership of any file at this time.
diff --git a/gnu/system.scm b/gnu/system.scm
index 533a4154d6..6e1ebbcc9c 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -1534,7 +1534,6 @@ (define (hurd-multiboot-modules os)
"--multiboot-command-line='${kernel-command-line}'"
"--exec-server-task='${exec-task}'"
"--store-type=typed"
- "--x-xattr-translator-records"
"'${root}'"
"'$(fs-task=task-create)'"))
(target (%current-target-system))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 06/31] gnu: cross-libc: Support cross-building for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
5d540a65fb1897c844300061df1eb72ec630c4b8.1731232753.git.janneke@gnu.org
* gnu/packages/base.scm (glibc)[arguments]: When building for the Hurd, in
phase "create-machine-symlink", do not assume CPU is i386, also cater for
x86_64.
* gnu/packages/cross-base.scm (cross-libc*)[arguments]: Likewise.

Change-Id: Ib009b7bd301b543b8629382330cca9d963b7a812
---
gnu/packages/base.scm | 18 ++++++++++++------
gnu/packages/cross-base.scm | 17 +++++++++++------
2 files changed, 23 insertions(+), 12 deletions(-)

Toggle diff (74 lines)
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 4e8121ae2c..02ef71f20d 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -1079,7 +1079,7 @@ (define-public glibc
(string-append locale "/C.UTF-8")))))
,@(if (target-hurd?)
- '((add-after 'install 'augment-libc.so
+ `((add-after 'install 'augment-libc.so
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* (string-append out "/lib/libc.so")
@@ -1088,11 +1088,17 @@ (define-public glibc
" libmachuser.so libhurduser.so"))))))
(add-after 'install 'create-machine-symlink
(lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (cpu "i386"))
- (symlink cpu
- (string-append out
- "/include/mach/machine"))))))
+ (let* ((out (assoc-ref outputs "out"))
+ (cpu ,(match (or (%current-target-system)
+ (%current-system))
+ ((? target-x86-32?)
+ "i386")
+ ((? target-x86-64?)
+ "x86_64")))
+ (machine (string-append
+ out "/include/mach/machine")))
+ (unless (file-exists? machine)
+ (symlink cpu machine))))))
'()))))
(inputs `(("static-bash" ,static-bash)))
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 7b32a6b64e..3827e87aec 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -738,7 +738,7 @@ (define* (cross-libc* target
(delete 'install-utf8-c-locale)
,@(if (target-hurd? target)
- '((add-after 'install 'augment-libc.so
+ `((add-after 'install 'augment-libc.so
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* (string-append out "/lib/libc.so")
@@ -747,11 +747,16 @@ (define* (cross-libc* target
" libmachuser.so libhurduser.so"))))))
(add-after 'install 'create-machine-symlink
(lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (cpu "i386"))
- (symlink cpu
- (string-append out
- "/include/mach/machine"))))))
+ (let* ((out (assoc-ref outputs "out"))
+ (cpu ,(match target
+ ((? target-x86-32?)
+ "i386")
+ ((? target-x86-64?)
+ "x86_64")))
+ (machine (string-append
+ out "/include/mach/machine")))
+ (unless (file-exists? machine)
+ (symlink cpu machine))))))
'())))))
;; Shadow the native "kernel-headers" because glibc's recipe expects the
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 05/31] gnu: Add basic support for x86_64-pc-gnu target, aka 64bit Hurd.
(address . 74290@debbugs.gnu.org)
41db48275160489ce01568c14a301d2724e5f4f4.1731232753.git.janneke@gnu.org
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Update comment on where
to find shared linker name.
* guix/platforms/x86.scm (x86_64-gnu): New exported variable.
* guix/utils.scm (target-hurd64? system-hurd64?): New procedures.
* gnu/packages/gcc.scm: (current-gcc): Use target-hurd64? in new procedure to
select gcc-14 on 64bit Hurd.
(libstdc++): Change to procedure.
(libstdc++-headers): Update accordingly.
* gnu/packages/commencement.scm (current-gcc-toolchain): Likewise, to select
gcc-toolchain-14 on 64bit Hurd.
* gnu/packages/cross-base.scm (%xgcc): Use current-gcc.
(cross-kernel-headers*): Use target-hurd? instead of custom "i586..."
matching to also use xhurd-core-headers for target-hurd64.
* gnu/packages/make-bootstrap.scm (package-with-relocatable-glibc):
Capture (current-gcc) before resetting %current-target-system.
[native-inputs]: Move final-inputs before cross-packages.
(%glibc-stripped): Likewise.
(%gcc-static): Change to procedure.
(%gcc-stripped): Likewise, update accordingly.
(%gcc-bootstrap-tarball): Likewise, update accordingly.
* gnu/ci.scm (%core-packages): Update accordingly.
* gnu/packages/patches/gcc-14-cross-without-bootstrap.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/cross-base.scm (cross-gcc)[origin]: Use it when
cross-building gcc >= 14.

Change-Id: I4ae189e7e5188ced91744b89fe9d753b6a1fca78
---
gnu/ci.scm | 4 ++--
gnu/packages/commencement.scm | 6 +++--
gnu/packages/cross-base.scm | 6 ++---
gnu/packages/gcc.scm | 32 +++++++++++++-------------
gnu/packages/make-bootstrap.scm | 40 +++++++++++++++++++++------------
guix/platforms/x86.scm | 11 ++++++++-
guix/utils.scm | 15 ++++++++++++-
7 files changed, 76 insertions(+), 38 deletions(-)

Toggle diff (325 lines)
diff --git a/gnu/ci.scm b/gnu/ci.scm
index 4e282d197f..e7e839d968 100644
--- a/gnu/ci.scm
+++ b/gnu/ci.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012-2024 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2017, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2017, 2020, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020, 2021 Mathieu Othacehe <othacehe@gnu.org>
@@ -146,7 +146,7 @@ (define %core-packages
%bootstrap-binaries-tarball
%binutils-bootstrap-tarball
(%glibc-bootstrap-tarball)
- %gcc-bootstrap-tarball
+ (%gcc-bootstrap-tarball)
%guile-bootstrap-tarball
%bootstrap-tarballs))
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 2b43759dac..682deb89cf 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3642,10 +3642,12 @@ (define-public gcc-toolchain-14
;; The default GCC
(define (current-gcc-toolchain)
"The current default gcc-toolchain version."
- gcc-toolchain-11)
+ (if (target-hurd64?)
+ gcc-toolchain-14
+ gcc-toolchain-11))
(define-public gcc-toolchain
- (deprecated-package "gcc-toolchain" gcc-toolchain-11))
+ (deprecated-package "gcc-toolchain" (current-gcc-toolchain)))
(define-public gcc-toolchain-aka-gcc
;; It's natural for users to try "guix install gcc". This package
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 9c701efae8..7b32a6b64e 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -641,9 +641,9 @@ (define* (cross-kernel-headers* target
("hurd-headers" ,xhurd-headers)
("hurd-minimal" ,xhurd-minimal)))))
- (match target
- ((or "i586-pc-gnu" "i586-gnu") xhurd-core-headers)
- (_ xlinux-headers)))
+ (if (target-hurd? target)
+ xhurd-core-headers
+ xlinux-headers))
(define* (cross-libc . args)
(if (or (= (length args) 1) (contains-keyword? args))
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 3b5d05b9a9..fc3746fb05 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -861,10 +861,12 @@ (define-public gcc-14
;; the gcc-toolchain-* definitions.
(define (current-gcc)
"The current default gcc version."
- gcc-11)
+ (if (target-hurd64?)
+ gcc-14
+ gcc-11))
(define-public gcc
- (deprecated-package "gcc" gcc-11))
+ (deprecated-package "gcc" (current-gcc)))
;;;
@@ -903,15 +905,15 @@ (define-public gcc-2.95
(outputs '("out"))
(arguments
(let ((matching-system
- (match (%current-system)
- ;; This package predates our 64-bit architectures.
- ;; Force a 32-bit build targeting a similar architecture.
- ("aarch64-linux"
- "armhf-linux")
- ("x86_64-linux"
- "i686-linux")
- (_
- (%current-system)))))
+ (match (%current-system)
+ ;; This package predates our 64-bit architectures.
+ ;; Force a 32-bit build targeting a similar architecture.
+ ("aarch64-linux"
+ "armhf-linux")
+ ("x86_64-linux"
+ "i686-linux")
+ (_
+ (%current-system)))))
(list #:system matching-system
#:configure-flags #~'("--disable-werror")
@@ -1050,8 +1052,8 @@ (define-public (make-libstdc++ gcc)
(propagated-inputs '())
(synopsis "GNU C++ standard library")))
-(define libstdc++
- ;; Libstdc++ matching the default GCC.
+(define (current-libstdc++)
+ ;; Libstdc++ matching the CURRENT-GCC.
(make-libstdc++ (current-gcc)))
(define libstdc++-headers
@@ -1061,7 +1063,7 @@ (define libstdc++-headers
;; is right under include/c++ and not under
;; include/c++/x86_64-unknown-linux-gnu (aka. GPLUSPLUS_TOOL_INCLUDE_DIR).
(package
- (inherit libstdc++)
+ (inherit (current-libstdc++))
(name "libstdc++-headers")
(outputs '("out"))
(build-system trivial-build-system)
@@ -1072,7 +1074,7 @@ (define libstdc++-headers
(mkdir (string-append out "/include"))
(symlink (string-append libstdc++ "/include")
(string-append out "/include/c++")))))
- (inputs `(("libstdc++" ,libstdc++)))
+ (inputs `(("libstdc++" ,(current-libstdc++))))
(synopsis "Headers of GNU libstdc++")))
(define-public libstdc++-4.9
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index c6293b9a38..18281198ba 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -124,8 +124,11 @@ (define (package-with-relocatable-glibc p)
(glibc-for-bootstrap
;; `cross-libc' already returns a cross libc, so clear
;; %CURRENT-TARGET-SYSTEM.
- (parameterize ((%current-target-system #f))
- (cross-libc target))))
+ (let ((xgcc (cross-gcc target #:xgcc (current-gcc))))
+ (parameterize ((%current-target-system #f))
+ (cross-libc target #:xgcc xgcc
+ #:xheaders (cross-kernel-headers
+ target #:xgcc xgcc))))))
;; Standard inputs with the above libc and corresponding GCC.
@@ -145,7 +148,10 @@ (define (package-with-relocatable-glibc p)
target
#:xbinutils (cross-binutils target)
#:libc (cross-bootstrap-libc target))))
- `(("cross-gcc" ,(package
+ `(,@(%final-inputs)
+ ;; As versions for gcc and cross-gcc can differ, make sure to have
+ ;; cross-gcc behind gcc in CPLUS_INCLUDE_PATH.
+ ("cross-gcc" ,(package
(inherit xgcc)
(search-paths
;; Ensure the cross libc headers appears on the
@@ -154,8 +160,7 @@ (define (package-with-relocatable-glibc p)
(variable "CROSS_CPLUS_INCLUDE_PATH")
(files '("include")))
(package-search-paths (current-gcc))))))
- ("cross-binutils" ,(cross-binutils target))
- ,@(%final-inputs)))
+ ("cross-binutils" ,(cross-binutils target))))
`(("libc" ,(glibc-for-bootstrap glibc))
("libc:static" ,(glibc-for-bootstrap glibc) "static")
("gcc" ,(gcc-for-bootstrap glibc))
@@ -446,7 +451,8 @@ (define (%glibc-stripped)
;; GNU libc's essential shared libraries, dynamic linker, and headers,
;; with all references to store directories stripped. As a result,
;; libc.so is unusable and need to be patched for proper relocation.
- (let ((glibc (glibc-for-bootstrap glibc)))
+ (let ((glibc (glibc-for-bootstrap glibc))
+ (gcc (current-gcc)))
(package (inherit glibc)
(name "glibc-stripped")
(build-system trivial-build-system)
@@ -463,8 +469,13 @@ (define (%glibc-stripped)
`(("libc" ,(let ((target (%current-target-system)))
(if target
(glibc-for-bootstrap
- (parameterize ((%current-target-system #f))
- (cross-libc target)))
+ (let* ((xgcc (cross-gcc target #:xgcc gcc))
+ (xheaders (cross-kernel-headers target
+ #:xgcc xgcc)))
+ (parameterize ((%current-target-system #f))
+ (cross-libc target
+ #:xgcc xgcc
+ #:xheaders xheaders))))
glibc)))))
(inputs
`(("kernel-headers"
@@ -478,11 +489,12 @@ (define (%glibc-stripped)
;; Only one output.
(outputs '("out")))))
-(define %gcc-static
+(define (%gcc-static)
;; A statically-linked GCC, with stripped-down functionality.
(package-with-relocatable-glibc
(package (inherit (current-gcc))
(name "gcc-static")
+ (source (package-source (current-gcc)))
(outputs '("out")) ; all in one
(arguments
(substitute-keyword-arguments (package-arguments (current-gcc))
@@ -552,7 +564,7 @@ (define %gcc-static
,@(package-native-inputs (current-gcc)))
(package-native-inputs (current-gcc)))))))
-(define %gcc-stripped
+(define (%gcc-stripped)
;; The subset of GCC files needed for bootstrap.
(package
(inherit (current-gcc))
@@ -575,7 +587,7 @@ (define %gcc-stripped
(libdir (string-append out "/lib"))
(includedir (string-append out "/include"))
(libexecdir (string-append out "/libexec"))
- (gcc #$%gcc-static))
+ (gcc #$(%gcc-static)))
(copy-recursively (string-append gcc "/bin") bindir)
(for-each remove-store-references
(find-files bindir ".*"))
@@ -813,9 +825,9 @@ (define (%glibc-bootstrap-tarball)
;; A tarball with GNU libc's shared libraries, dynamic linker, and headers.
(tarball-package (%glibc-stripped)))
-(define %gcc-bootstrap-tarball
+(define (%gcc-bootstrap-tarball)
;; A tarball with a dynamic-linked GCC and its headers.
- (tarball-package %gcc-stripped))
+ (tarball-package (%gcc-stripped)))
(define %guile-bootstrap-tarball
;; A tarball with the statically-linked, relocatable Guile.
@@ -856,7 +868,7 @@ (define %bootstrap-tarballs
((or "i686-linux" "x86_64-linux")
(list %linux-libre-headers-bootstrap-tarball))
(_
- (list %gcc-bootstrap-tarball
+ (list (%gcc-bootstrap-tarball)
%binutils-bootstrap-tarball
(%glibc-bootstrap-tarball)
%bootstrap-binaries-tarball)))))
diff --git a/guix/platforms/x86.scm b/guix/platforms/x86.scm
index 0c8fc7296c..5617e6dd68 100644
--- a/guix/platforms/x86.scm
+++ b/guix/platforms/x86.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
;;; Copyright © 2023, 2024 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -25,7 +26,8 @@ (define-module (guix platforms x86)
x86_64-linux-x32
i686-mingw
x86_64-mingw
- i586-gnu))
+ i586-gnu
+ x86_64-gnu))
(define i686-linux
(platform
@@ -71,3 +73,10 @@ (define i586-gnu
(system "i586-gnu")
(rust-target "i686-unknown-hurd-gnu")
(glibc-dynamic-linker "/lib/ld.so.1")))
+
+(define x86_64-gnu
+ (platform
+ (target "x86_64-pc-gnu")
+ (system "x86_64-gnu")
+ (rust-target "x86_64-unknown-hurd-gnu")
+ (glibc-dynamic-linker "/lib/ld-x86-64.so.1")))
diff --git a/guix/utils.scm b/guix/utils.scm
index f161cb4ef3..e100c03365 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -17,7 +17,7 @@
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
;;; Copyright © 2023 Philip McGrath <philip@philipmcgrath.com>
-;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
;;; Copyright © 2024 Herman Rimm <herman@rimm.ee>
@@ -94,6 +94,8 @@ (define-module (guix utils)
target-linux?
target-hurd?
system-hurd?
+ target-hurd64?
+ system-hurd64?
target-mingw?
target-x86-32?
target-x86-64?
@@ -716,6 +718,17 @@ (define* (system-hurd?)
"Is the current system the GNU(/Hurd) system?"
(and=> (%current-system) target-hurd?))
+(define* (target-hurd64? #:optional (target (or (%current-target-system)
+ (%current-system))))
+ "Does TARGET represent the 64bit GNU(/Hurd) system?"
+ (and (target-hurd?)
+ (target-64bit? target)))
+
+(define* (system-hurd64?)
+ "Is the current system the 64bit GNU(/Hurd) system?"
+ (and (system-hurd?)
+ (target-64bit? (%current-system))))
+
(define* (target-mingw? #:optional (target (%current-target-system)))
"Is the operating system of TARGET Windows?"
(and target
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 07/31] gnu: bash-minimal: Fix build for 64bit Hurd.
(address . 74290@debbugs.gnu.org)
cf70058256a3be9607fffde6ca1ec4db7b2e564d.1731232753.git.janneke@gnu.org
* gnu/packages/bash-minimal.scm (bash)[arguments]: When building with gcc >=
14 use "CFLAGS=-Wno-implicit-function-declaration".

Change-Id: I3fd2da7a1d9011b155084dceadbad649dbb2a1b9
---
gnu/packages/bash.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 93641a78d5..1a3b014ad7 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2024 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -30,6 +31,7 @@ (define-module (gnu packages bash)
#:use-module (gnu packages base)
#:use-module (gnu packages bootstrap)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages elf)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages readline)
@@ -251,6 +253,13 @@ (define-public bash-minimal
;; modules and related code.
"ac_cv_func_dlopen=no"
+ ,@(if (version>=? (package-version (current-gcc)) "14")
+ ;; gcc-14 implictly uses -Wimplicit-function-declaration
+ ;; which together with -Werror causes:
+ ;; ./enable.def:492:11: error: implicit declaration of function ‘dlclose’;
+ '("CFLAGS=-Wno-implicit-function-declaration")
+ '())
+
,@(if (%current-target-system)
'("bash_cv_job_control_missing=no"
"bash_cv_getcwd_malloc=yes")
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 04/31] gnu: gcc: Add indirections current-gcc, current-gcc-toolchain.
(address . 74290@debbugs.gnu.org)
3e5801ce2795b91ba96a60ad239de717d0337a97.1731232753.git.janneke@gnu.org
Throughout: use (current-gcc) and (current-gcc-toolchain) instead of gcc and
gcc-toolchain.

* gnu/packages/gcc.scm (current-gcc): New procedure.
(gcc): Deprecate.
* gnu/packages/commencement.scm (current-gcc-toolchain): New procedure.
(gcc-toolchain): Deprecate.

Change-Id: I538897e53e2c9956abdc53c67621bb52cbd78a50
---
gnu/packages/avr.scm | 7 ++++---
gnu/packages/benchmark.scm | 6 ++++--
gnu/packages/bootloaders.scm | 2 +-
gnu/packages/bootstrap.scm | 4 ++--
gnu/packages/c.scm | 4 ++--
gnu/packages/chicken.scm | 7 ++++---
gnu/packages/commencement.scm | 33 +++++++++++++++++++--------------
gnu/packages/containers.scm | 5 +++--
gnu/packages/cross-base.scm | 4 ++--
gnu/packages/dlang.scm | 3 ++-
gnu/packages/engineering.scm | 4 ++--
gnu/packages/gawk.scm | 3 ++-
gnu/packages/gcc.scm | 21 ++++++++++++++-------
gnu/packages/golang.scm | 3 ++-
gnu/packages/julia-xyz.scm | 3 ++-
gnu/packages/lisp.scm | 3 ++-
gnu/packages/llvm.scm | 7 ++++---
gnu/packages/make-bootstrap.scm | 20 ++++++++++----------
gnu/packages/mpi.scm | 3 ++-
gnu/packages/parallel.scm | 5 +++--
gnu/packages/rocm.scm | 3 ++-
21 files changed, 88 insertions(+), 62 deletions(-)

Toggle diff (443 lines)
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index 6042c1bd55..00dc124aa9 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -53,7 +54,7 @@ (define make-avr-binutils
(inherit (cross-binutils "avr"))
(name "avr-binutils"))))
-(define* (make-avr-gcc/implementation #:key (xgcc gcc))
+(define* (make-avr-gcc/implementation #:key (xgcc (current-gcc)))
"Return a XGCC-base cross-compiler for the AVR target."
(let ((xgcc (cross-gcc "avr" #:xgcc xgcc #:xbinutils (make-avr-binutils))))
(package
@@ -96,7 +97,7 @@ (define* (make-avr-gcc/implementation #:key (xgcc gcc))
(variable "CROSS_LIBRARY_PATH")
(files '("avr/lib")))))
(native-inputs
- `(("gcc" ,gcc)
+ `(("gcc" ,(current-gcc))
,@(package-native-inputs xgcc))))))
(define make-avr-gcc
@@ -136,7 +137,7 @@ (define* (make-avr-libc/implementation #:key
(define make-avr-libc
(memoize make-avr-libc/implementation))
-(define* (make-avr-toolchain/implementation #:key (xgcc gcc))
+(define* (make-avr-toolchain/implementation #:key (xgcc (current-gcc)))
(let ((avr-binutils (make-avr-binutils))
(avr-libc (make-avr-libc #:xgcc (cross-gcc "avr" #:xgcc xgcc)))
(avr-gcc (make-avr-gcc #:xgcc xgcc)))
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index 326bbc99b4..c802e105ed 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -13,6 +13,7 @@
;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -75,8 +76,8 @@ (define-module (gnu packages benchmark)
;; Lazily resolve the gcc-toolchain to avoid a circular dependency.
(define gcc-toolchain*
- (delay (module-ref (resolve-interface '(gnu packages commencement))
- 'gcc-toolchain)))
+ (delay ((module-ref (resolve-interface '(gnu packages commencement))
+ 'current-gcc-toolchain))))
(define-public fio
(package
@@ -379,6 +380,7 @@ (define-public phoronix-test-suite
(list bash
coreutils
(force gcc-toolchain*)
+ gcc-toolchain*
gnu-make
gzip
php
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index fcc1088fd6..8ae9621e5b 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1707,7 +1707,7 @@ (define u-boot-ts-mx6
(add-before 'build 'adjust-for-current-gcc
(lambda _
(let ((gcc-major-version #$(version-major
- (package-version gcc))))
+ (package-version (current-gcc)))))
(copy-file "include/linux/compiler-gcc6.h"
(string-append "include/linux/compiler-gcc"
gcc-major-version ".h")))
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index 3743abf9fe..c4640b62e1 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2012-2020, 2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2018, 2019 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017, 2020, 2024 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018, 2020, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018, 2020, 2022, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2019 Carl Dong <contact@carldong.me>
;;; Copyright © 2019 Léo Le Bouter <lle-bout@zaclys.net>
;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
@@ -311,7 +311,7 @@ (define* (glibc-dynamic-linker
gnu-triplet->nix-system)
(%current-system))))
"Return the name of Glibc's dynamic linker for SYSTEM."
- ;; See the 'SYSDEP_KNOWN_INTERPRETER_NAMES' cpp macro in libc.
+ ;; See the appropriate 'shlib-versions' file in libc.
(let ((platform (false-if-platform-not-found
(lookup-platform-by-system system))))
(cond
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index 13fdb99424..f52a7c603e 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2019, 2020, 2022-2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019, 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
;;; Copyright © 2020, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -178,7 +178,7 @@ (define-public cproc
(string-append "--with-ld=" #$(ld-for-target))
(string-append "--with-gcc-libdir=" gcc-lib))))))))
(inputs `(("qbe" ,qbe)
- ("gcc:lib" ,gcc "lib")))
+ ("gcc:lib" ,(current-gcc) "lib")))
(supported-systems (list "x86_64-linux" "aarch64-linux"))
(synopsis "Simple C11 compiler backed by QBE")
(description "@code{cproc} is a C compiler using QBE as a backend,
diff --git a/gnu/packages/chicken.scm b/gnu/packages/chicken.scm
index 3743ae3e2a..64fd3cb86b 100644
--- a/gnu/packages/chicken.scm
+++ b/gnu/packages/chicken.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2020 Evan Hanson <evhan@foldling.org>
;;; Copyright © 2020 raingloom <raingloom@riseup.net>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -69,9 +70,9 @@ (define-public chicken
(files (list "var/lib/chicken/11")))))
;; Reference gcc-toolchain lazily to avoid circular module dependency
;; problems.
- (propagated-inputs (list (module-ref (resolve-interface
- '(gnu packages commencement))
- 'gcc-toolchain)))
+ (propagated-inputs (list ((module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'current-gcc-toolchain))))
(home-page "https://www.call-cc.org/")
(synopsis "R5RS Scheme implementation that compiles native code via C")
(description
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index ce40f0cea6..2b43759dac 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -73,7 +73,8 @@ (define-module (gnu packages commencement)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 vlist)
- #:use-module (ice-9 match))
+ #:use-module (ice-9 match)
+ #:export (current-gcc-toolchain))
;;; Commentary:
;;;
@@ -908,7 +909,7 @@ (define gcc-core-mesboot0
;; with gcc-2.95.3, binutils (2.14.0, 2.20.1a) and glibc-2.2.5 we found a
;; GNU toolchain triplet "that works".
(package
- (inherit gcc)
+ (inherit (current-gcc))
(name "gcc-core-mesboot0")
(version "2.95.3")
(source (origin
@@ -2319,19 +2320,19 @@ (define libstdc++-boot0-gcc7
(define gcc-boot0
(package
- (inherit gcc)
+ (inherit (current-gcc))
(name "gcc-cross-boot0")
- (outputs (delete "debug" (package-outputs gcc)))
+ (outputs (delete "debug" (package-outputs (current-gcc))))
(source
(bootstrap-origin
(origin
- (inherit (package-source gcc))
+ (inherit (package-source (current-gcc)))
(snippet
#~(begin
;; XXX: The GCC test suite contains files with non-ASCII file
;; names, which cannot be repacked by BOOTSTRAP-ORIGIN. Nor
;; can it be deleted from Guile, so resort to this evil hack.
- #$(origin-snippet (package-source gcc))
+ #$(origin-snippet (package-source (current-gcc)))
(system* #$(file-append (let-system system
;; 'coreutils-boot0' is Linux-only.
(if (target-hurd? system)
@@ -2348,7 +2349,7 @@ (define gcc-boot0
(ice-9 regex)
(srfi srfi-1)
(srfi srfi-26))
- (substitute-keyword-arguments (package-arguments gcc)
+ (substitute-keyword-arguments (package-arguments (current-gcc))
((#:configure-flags flags)
#~(append (list #$(string-append "--target=" (boot-triplet))
@@ -2436,7 +2437,7 @@ (define gcc-boot0
(with-directory-excursion
(string-append out "/lib/gcc/"
#$(boot-triplet)
- "/" #$(package-version gcc))
+ "/" #$(package-version (current-gcc)))
(symlink "libgcc.a" "libgcc_eh.a"))))))))))
(inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp-6.0)))
@@ -2951,7 +2952,7 @@ (define/system-dependent glibc-final-with-bootstrap-bash
(define (cross-gcc-wrapper gcc binutils glibc bash)
"Return a wrapper for the pseudo-cross toolchain GCC/BINUTILS/GLIBC
that makes it available under the native tool names."
- (package (inherit gcc)
+ (package (inherit (current-gcc))
(name (string-append (package-name gcc) "-wrapped"))
(source #f)
(build-system trivial-build-system)
@@ -3218,7 +3219,7 @@ (define gcc-final
(srfi srfi-26)
,@%default-gnu-modules)
- (substitute-keyword-arguments (package-arguments gcc)
+ (substitute-keyword-arguments (package-arguments (current-gcc))
((#:make-flags flags)
;; Since $LIBRARY_PATH is not honored, add the relevant flags.
#~(let ((zlib (assoc-ref %build-inputs "zlib")))
@@ -3541,8 +3542,8 @@ (define* (make-gcc-toolchain gcc
(let ((gcc (if libc (make-gcc-libc gcc libc) gcc))
(libc (if libc libc glibc-final)))
(package
- (name (string-append (package-name gcc) "-toolchain"))
- (version (package-version gcc))
+ (name (string-append (package-name (current-gcc)) "-toolchain"))
+ (version (package-version (current-gcc)))
(source #f)
(build-system trivial-build-system)
(arguments
@@ -3639,13 +3640,17 @@ (define-public gcc-toolchain-14
(make-gcc-toolchain gcc-14))
;; The default GCC
-(define-public gcc-toolchain
+(define (current-gcc-toolchain)
+ "The current default gcc-toolchain version."
gcc-toolchain-11)
+(define-public gcc-toolchain
+ (deprecated-package "gcc-toolchain" gcc-toolchain-11))
+
(define-public gcc-toolchain-aka-gcc
;; It's natural for users to try "guix install gcc". This package
;; automatically "redirects" them to 'gcc-toolchain'.
- (deprecated-package "gcc" gcc-toolchain))
+ (deprecated-package "gcc" (current-gcc-toolchain)))
(define-public gdc-toolchain-10
diff --git a/gnu/packages/containers.scm b/gnu/packages/containers.scm
index d32bc2704a..78304cebbc 100644
--- a/gnu/packages/containers.scm
+++ b/gnu/packages/containers.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz>
;;; Copyright © 2024 Foundation Devices, Inc. <hello@foundation.xyz>
;;; Copyright © 2024 Jean-Pierre De Jesus DIAZ <jean@foundation.xyz>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -533,7 +534,7 @@ (define-public podman
(,(string-append #$catatonit "/bin")
,(string-append #$conmon "/bin")
,(string-append #$crun "/bin")
- ,(string-append #$gcc "/bin") ; cpp
+ ,(string-append #$(current-gcc) "/bin") ; cpp
,(string-append #$iptables "/sbin")
,(string-append #$passt "/bin")
,(string-append #$procps "/bin") ; ps
@@ -667,7 +668,7 @@ (define-public buildah
(,(string-append #$output "/_guix")))
`("PATH" suffix
(,(string-append #$crun "/bin")
- ,(string-append #$gcc "/bin") ; cpp
+ ,(string-append #$(current-gcc) "/bin") ; cpp
,(string-append #$passt "/bin")
"/run/privileged/bin")))))
(add-after 'install 'install-completions
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index cecc21083e..9c701efae8 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013-2018, 2020, 2023-2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2019, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2019, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
@@ -61,7 +61,7 @@ (define-syntax %xgcc
;;
;; Note: This is a macro so that we do not refer to 'gcc' from the top
;; level, which would lead to circular-dependency issues.
- (identifier-syntax gcc))
+ (identifier-syntax (current-gcc)))
(define %gcc-include-paths
;; Environment variables for header search paths.
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index 8bf0ee685e..654d5b2281 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2021, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2022 Esther Flashner <esther@flashner.co.il>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -426,7 +427,7 @@ (define dmd-bootstrap
(build-system gnu-build-system)
(arguments
(list
- #:disallowed-references (list (gexp-input (canonical-package gcc)
+ #:disallowed-references (list (gexp-input (canonical-package (current-gcc))
"lib"))
;; Disable tests, as gdmd cannot cope with some arguments used such as
;; '-conf'.
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 6f449f0c39..07f3edd4dd 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2336,8 +2336,8 @@ (define-public freehdl
coreutils
;; Lazily resolve the gcc-toolchain to avoid a circular dependency.
- (module-ref (resolve-interface '(gnu packages commencement))
- 'gcc-toolchain)
+ ((module-ref (resolve-interface '(gnu packages commencement))
+ 'current-gcc-toolchain))
guile-2.2
perl
diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm
index 6a77a692f5..a8b8369d7b 100644
--- a/gnu/packages/gawk.scm
+++ b/gnu/packages/gawk.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2018, 2022-2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -227,7 +228,7 @@ (define-public cppawk
(inputs
(list coreutils ; For dirname, mktemp, printf, rm
gawk-mpfr ; Default variant, but supports others
- gcc ; For cpp
+ (current-gcc) ; For cpp
sed))
(home-page "https://www.kylheku.com/cgit/cppawk/")
(synopsis "Wrapper script that adds C preprocessing to Awk")
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index c9e475b676..3b5d05b9a9 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2024 Nguy?n Gia Phong <mcsinyx@disroot.org>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -57,7 +58,8 @@ (define-module (gnu packages gcc)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
- #:use-module (ice-9 regex))
+ #:use-module (ice-9 regex)
+ #:export (current-gcc))
(define %gcc-infrastructure
;; Base URL for GCC's infrastructure.
@@ -857,7 +859,12 @@ (define-public gcc-14
;; Note: When changing the default gcc version, update
;; the gcc-toolchain-* definitions.
-(define-public gcc gcc-11)
+(define (current-gcc)
+ "The current default gcc version."
+ gcc-11)
+
+(define-public gcc
+ (deprecated-package "gcc" gcc-11))
;;;
@@ -868,7 +875,7 @@ (define-public gcc-2.95
;; Note: 'gcc-core-mesboot0' in commencement.scm provides 2.95 as well, but
;; with additional tricks to support compilation with TinyCC and Mes-libc.
(package
- (inherit gcc)
+ (inherit (current-gcc))
(version "2.95.3")
(source (origin
(method url-fetch)
@@ -1045,7 +1052,7 @@ (define-public (make-libstdc++ gcc)
(define libstdc++
;; Libstdc++ matching the default GCC.
- (make-libstdc++ gcc))
+ (make-libstdc++ (current-gcc)))
(define libstdc++-headers
;; XXX: This package is for internal use to work around
@@ -1100,7 +1107,7 @@ (define (make-libiberty gcc)
(synopsis "Collection of subroutines used by various GNU programs")))
(define-public libiberty
- (make-libiberty gcc))
+ (make-libiberty (current-gcc)))
(define* (custom-gcc gcc name languages
#:optional
@@ -1157,7 +1164,7 @@ (define-public gfortran-13
(define-public gfortran
(hidden-package
-
This message was truncated. Download the full message here.
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 08/31] gnu: elfutils: Fix build for 64bit Hurd.
(address . 74290@debbugs.gnu.org)
3112163cbeb58f04bff54368364741ae8a16cdcc.1731232753.git.janneke@gnu.org
* gnu/packages/elf.scm (elfutils)[arguments]: When building for a 64bit Hurd,
set #:make-flags.

Change-Id: I00abf360a7de5b1f78c1e912f0dcf27c62c1af68
---
gnu/packages/elf.scm | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

Toggle diff (27 lines)
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 119f8d13dd..81a753a483 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -10,7 +10,7 @@
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
-;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -86,6 +86,10 @@ (define-public elfutils
"--disable-libdebuginfod"
"--disable-debuginfod")
+ ,@(if (target-hurd64?)
+ '(#:make-flags '("core-file_no_Werror=yes"))
+ '())
+
;; Disable tests on MIPS and PowerPC (without changing
;; the arguments list on other systems).
,@(if (any (cute string-prefix? <> (or (%current-target-system)
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 09/31] gnu: grep: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
ae7a6ed0238a5a9f669d05335f7c9547ec368a7c.1731232753.git.janneke@gnu.org
* gnu/packages/base.scm (grep)[arguments]: When building for the 64bit Hurd,
add patch-sigsegv.h stage.

Change-Id: I795a591ef8282ee5b760fec43bd4ad849007f602
---
gnu/packages/base.scm | 7 +++++++
1 file changed, 7 insertions(+)

Toggle diff (21 lines)
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 02ef71f20d..010be631d7 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -154,6 +154,13 @@ (define-public grep
(string-append bin "/fgrep"))
(("^exec grep")
(string-append "exec " bin "/grep"))))))
+ #$@(if (target-hurd64?)
+ #~((add-after 'unpack 'patch-sigsegv
+ (lambda _
+ ;; Stack overflow recovery does not compile
+ (substitute* "lib/sigsegv.in.h"
+ (("__GNU__") "__XGNU__")))))
+ #~())
#$@(if (system-hurd?)
#~((add-before 'check 'skip-test
(lambda _
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 10/31] gnu: patch: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
e30cecfddb17c5894800f08cdb56906b9056ca30.1731232753.git.janneke@gnu.org
* gnu/packages/base.scm (patch)[arguments]: When building for the 64bit Hurd,
set #:configure-flags.

Change-Id: I795a591ef8282ee5b760fec43bd4ad849007f602
---
gnu/packages/base.scm | 49 ++++++++++++++++++++++++-------------------
1 file changed, 28 insertions(+), 21 deletions(-)

Toggle diff (63 lines)
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 010be631d7..83f8c0d9e9 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -339,27 +339,34 @@ (define-public patch
"1bk38169c0xh01b0q0zmnrjqz8k9byz3arp4q7q66sn6xwf94nvz"))
(patches (search-patches "patch-hurd-path-max.patch"))))
(arguments
- (substitute-keyword-arguments (package-arguments base)
- ((#:phases phases '%standard-phases)
- #~(modify-phases #$phases
- (add-after 'unpack 'copy-gnulib-sources
- (lambda _
- ;; XXX: We copy the source instead of using 'gnulib' as a
- ;; native input to avoid introducing a dependency cycle.
- (copy-recursively #+gnulib "gnulib")
- (setenv "GNULIB_SRCDIR"
- (string-append (getcwd) "/gnulib/src/gnulib"))))
- (add-after 'copy-gnulib-sources 'update-bootstrap-script
- (lambda _
- (copy-file "gnulib/src/gnulib/build-aux/bootstrap"
- "bootstrap")))
- (add-after 'unpack 'patch-configure.ac
- (lambda _
- (substitute* "configure.ac"
- ;; The gnulib-provided git-version-gen script has a plain
- ;; shebang of #!/bin/sh; avoid using it.
- (("build-aux/git-version-gen" all)
- (string-append "sh " all)))))))))
+ (let ((arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'copy-gnulib-sources
+ (lambda _
+ ;; XXX: We copy the source instead of using 'gnulib' as a
+ ;; native input to avoid introducing a dependency cycle.
+ (copy-recursively #+gnulib "gnulib")
+ (setenv "GNULIB_SRCDIR"
+ (string-append (getcwd) "/gnulib/src/gnulib"))))
+ (add-after 'copy-gnulib-sources 'update-bootstrap-script
+ (lambda _
+ (copy-file "gnulib/src/gnulib/build-aux/bootstrap"
+ "bootstrap")))
+ (add-after 'unpack 'patch-configure.ac
+ (lambda _
+ (substitute* "configure.ac"
+ ;; The gnulib-provided git-version-gen script has a plain
+ ;; shebang of #!/bin/sh; avoid using it.
+ (("build-aux/git-version-gen" all)
+ (string-append "sh " all))))))))))
+ (if (target-hurd64?)
+ (substitute-keyword-arguments arguments
+ ((#:configure-flags flags '())
+ #~(list "--disable-threads"
+ "gl_cv_func_working_mktime=yes")))
+ arguments)))
(native-inputs (list autoconf automake bison ed))
(properties '()))))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 11/31] gnu: libxcrypt: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
ed2b361b5ed1e1dc7864f89a7276ac210f99a537.1731232753.git.janneke@gnu.org
* gnu/packages/patches/libxcrypt-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/crypto.scm (libxcrypt)[arguments]: When building for the 64bit
Hurd, use it in new phase `apply-patch'.

Change-Id: I795a591ef8282ee5b760fec43bd4ad849007f602
---
gnu/local.mk | 1 +
gnu/packages/crypto.scm | 15 ++++++++
gnu/packages/patches/libxcrypt-hurd64.patch | 38 +++++++++++++++++++++
3 files changed, 54 insertions(+)
create mode 100644 gnu/packages/patches/libxcrypt-hurd64.patch

Toggle diff (92 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 4d3ee9ea35..4b9fa95658 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1725,6 +1725,7 @@ dist_patch_DATA = \
%D%/packages/patches/libvpx-CVE-2016-2818.patch \
%D%/packages/patches/libvpx-CVE-2023-5217.patch \
%D%/packages/patches/libvpx-CVE-2023-44488.patch \
+ %D%/packages/patches/libxcrypt-hurd64.patch \
%D%/packages/patches/libxml2-xpath0-Add-option-xpath0.patch \
%D%/packages/patches/libwpd-gcc-compat.patch \
%D%/packages/patches/libxslt-generated-ids.patch \
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 2a298c4caf..94a98bb0ad 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -27,6 +27,7 @@
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2023 Ivan Vilata-i-Balaguer <ivan@selidor.net>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1661,6 +1662,20 @@ (define-public libxcrypt
(build-system gnu-build-system)
(native-inputs
(list perl))
+ (arguments
+ (if (target-hurd64?)
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'apply-patch
+ (lambda _
+ (let ((patch-file
+ #$(local-file
+ (search-patch
+ "libxcrypt-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i"
+ patch-file))))))
+ '()))
(synopsis
"Extended crypt library for descrypt, md5crypt, bcrypt, and others")
(description
diff --git a/gnu/packages/patches/libxcrypt-hurd64.patch b/gnu/packages/patches/libxcrypt-hurd64.patch
new file mode 100644
index 0000000000..9fc3018539
--- /dev/null
+++ b/gnu/packages/patches/libxcrypt-hurd64.patch
@@ -0,0 +1,38 @@
+Upstream-status: Taken from upstream:
+ <https://github.com/besser82/libxcrypt/commit/b2c1da2e1ce2d3e72f511f5bc94a6ffa68b70917>
+
+From b2c1da2e1ce2d3e72f511f5bc94a6ffa68b70917 Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Sun, 14 Jul 2024 13:13:07 +0200
+Subject: [PATCH] Add binary compatibility for x86_64 GNU/Hurd
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+
+diff --git a/lib/libcrypt.map.in b/lib/libcrypt.map.in
+index 88ea911..a56b7bf 100644
+--- a/lib/libcrypt.map.in
++++ b/lib/libcrypt.map.in
+@@ -43,5 +43,5 @@ fcrypt - GLIBC_2.0
+ %chain GLIBC_2.0 GLIBC_2.2 GLIBC_2.2.1 GLIBC_2.2.2 GLIBC_2.2.5 GLIBC_2.2.6
+ %chain GLIBC_2.3 GLIBC_2.4 GLIBC_2.12 GLIBC_2.16 GLIBC_2.17 GLIBC_2.18
+ %chain GLIBC_2.21 GLIBC_2.27 GLIBC_2.29 GLIBC_2.32 GLIBC_2.33 GLIBC_2.35
+-%chain GLIBC_2.36
++%chain GLIBC_2.36 GLIBC_2.38
+ %chain OW_CRYPT_1.0 XCRYPT_2.0 XCRYPT_4.3 XCRYPT_4.4
+diff --git a/lib/libcrypt.minver b/lib/libcrypt.minver
+index 8478077..c5a5bf2 100644
+--- a/lib/libcrypt.minver
++++ b/lib/libcrypt.minver
+@@ -51,6 +51,7 @@
+ #VERSION SYSTEM CPU_FAMILY PREPROCESSOR_CHECK
+
+ # GNU Hurd
++GLIBC_2.38 gnu x86_64
+ GLIBC_2.2.6 gnu i[3-9]86
+ ERROR gnu .
+
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 12/31] gnu: libstdc++: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
1351fabb950e28169511b86e1e85fc197eac1674.1731232753.git.janneke@gnu.org
* gnu/packages/gcc.scm (make-libstdc++)[arguments]: When building for the
64bit Hurd, add stage patch-hurd64.

Change-Id: I795a591ef8282ee5b760fec43bd4ad849007f602
---
gnu/packages/gcc.scm | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index fc3746fb05..850a14cb1c 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -1033,7 +1033,15 @@ (define-public (make-libstdc++ gcc)
(("/lib64") "/lib")))))
(add-before 'configure 'chdir
(lambda _
- (chdir "libstdc++-v3"))))
+ (chdir "libstdc++-v3")))
+ #$@(let ((version (package-version gcc)))
+ (if (target-hurd64?)
+ #~((add-after 'unpack 'patch-hurd64
+ (lambda _
+ (substitute* "libstdc++-v3/src/c++20/tzdb.cc"
+ (("#if ! defined _GLIBCXX_ZONEINFO_DIR")
+ "#if __GNU__ || ! defined _GLIBCXX_ZONEINFO_DIR")))))
+ '())))
#:configure-flags '`("--disable-libstdcxx-pch"
,(string-append "--with-gxx-include-dir="
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 13/31] gnu: gcc-13, gcc-14: Support being used as parent for gcc-static.
(address . 74290@debbugs.gnu.org)
7a8acd375aa807b7d4386ed8052aa743261c42ce.1731232753.git.janneke@gnu.org
* gnu/packages/gcc.scm (gcc-13)[arguments]: Use quasiquote instead of
g-expressions.
(gcc-14)[arguments]: Likewise.

Change-Id: I22269b31d49868effe967d46247b189ed9a9d394
---
gnu/packages/gcc.scm | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

Toggle diff (32 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 850a14cb1c..befbbda027 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -811,10 +811,10 @@ (define-public gcc-13
(snippet gcc-canadian-cross-objdump-snippet)))
(arguments
(substitute-keyword-arguments (package-arguments gcc-11)
- ((#:phases phases #~%standard-phases)
+ ((#:phases phases '%standard-phases)
(if (target-hurd?)
- #~(modify-phases #$phases
- (delete 'patch-hurd-libpthread))
+ `(modify-phases ,phases
+ (delete 'patch-hurd-libpthread))
phases))))
(properties
`((compiler-cpu-architectures
@@ -841,8 +841,8 @@ (define-public gcc-14
(modules '((guix build utils)))
(snippet gcc-canadian-cross-objdump-snippet)))
(arguments (substitute-keyword-arguments (package-arguments gcc-13)
- ((#:phases phases #~%standard-phases)
- #~(modify-phases #$phases
+ ((#:phases phases '%standard-phases)
+ `(modify-phases ,phases
(add-before 'configure 'pre-x86-configure
(lambda _
(substitute* "gcc/config/i386/t-linux64"
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 14/31] DRAFT gnu: bootstrap: Add support for x86_64-gnu, aka the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
43e8a79925bda014c70618de24c2936772bb829b.1731232753.git.janneke@gnu.org
XXX TODO:

v Boot a 64bit hurd and guix build hello,
o Push the commit below,
o Re-check the bootstrap-tarballs build/hash,
o Update this commit message with new commit hash,
o Push it with remainder of hurd-team branch,
o Update blog post.

On commit:
7a8acd375aa807b7d4386ed8052aa743261c42ce
gnu: gcc-13, gcc-14: Support being used as parent for gcc-static.

Run:
./pre-inst-env guix build --target=x86_64-gnu bootstrap-tarballs

Producing:
/gnu/store/sm23f2g91k554w2clcm9l9airwn9gqmz-bootstrap-tarballs-0

With guix hash -r:
1v9ld86vw76drrxlqf0b930644mgj6mgxqak9ybx4h0xsiczxisw

* gnu/packages/bootstrap.scm (%bootstrap-executables): Add entries for
x86_64-gnu.
(%bootstrap-guile-hash, %bootstrap-coreutils&co, %bootstrap-binutils,
%bootstrap-glibc, %bootstrap-gcc): Add entry for x86_64-gnu.
* guix/packages.scm (%supported-systems, %hurd-systems): Add x86_64-gnu.
(%cuirass-supported-systems): Remove x86_64-gnu.
* guix/utils.scm (target-64bit?): Add x86_64-gnu.
* m4/guix.m4: Add x86_64-gnu as a supported system.
* doc/guix.texi (GNU Distribution): Add x86_64-gnu.

Change-Id: Ic0e09d5b3b035aec27c7274e57cccedee9c0611c
---
doc/guix.texi | 9 +++++++-
gnu/packages/bootstrap.scm | 42 ++++++++++++++++++++++++++++++++++----
guix/packages.scm | 8 +++++---
m4/guix.m4 | 12 ++++++++---
4 files changed, 60 insertions(+), 11 deletions(-)

Toggle diff (239 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 187bae6898..73692d73d6 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -36,7 +36,7 @@
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Efraim Flashner@*
Copyright @copyright{} 2016 John Darrington@*
Copyright @copyright{} 2016, 2017 Nikita Gillmann@*
-Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Jan Nieuwenhuizen@*
+Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Janneke Nieuwenhuizen@*
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Julien Lepiller@*
Copyright @copyright{} 2016 Alex ter Weele@*
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Christopher Baines@*
@@ -637,6 +637,13 @@ GNU Distribution
(@pxref{transparent-emulation-qemu, @code{hurd-vm-service-type}}).
@xref{Contributing}, on how to help!
+@item x86_64-gnu
+@uref{https://hurd.gnu.org, GNU/Hurd} on the @code{x86_64} Intel/AMD
+64-bit architecture.
+
+This configuration is even more experimental and under heavy upstream
+development.
+
@item mips64el-linux (unsupported)
little-endian 64-bit MIPS processors, specifically the Loongson series,
n32 ABI, and Linux-Libre kernel. This configuration is no longer fully
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index c4640b62e1..eb6a4f1917 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -118,13 +118,22 @@ (define %bootstrap-executables
,(base32 "0i9kxdi17bm5gxfi2xzm0y73p3ii0cqxli1sbljm6rh2fjgyn90k")))
("i586-gnu"
("bash"
- ,(base32 "1as8649aqaibahhhrvkj10ci8shpi4hq5n7gnik8rhhy0dc1jarg"))
+ ,(base32 "0nb8ga2j7a4kf6j7pnavq8zf68mj8mhqh26nwkilz1ykj86vg9ml"))
("mkdir"
- ,(base32 "1snqgpfrl00hfn82lm29jqylzjsfb9jd6ha74dp12phwb8fpbmb9"))
+ ,(base32 "0ldsx9pwan40fx2hf4s9d10sfkhvkljvl20hksvm4192p7jb4shp"))
("tar"
- ,(base32 "0nq2c1zb3wv5bf7kd83sziaashydazrn7xgq6kijlk0zj2syzc2m"))
+ ,(base32 "1z6kfvpwhy14vc52i61v1vzzk3gzxka3db5rlg1jsq6kli35s2ab"))
("xz"
- ,(base32 "033rhpk6zrpxpd6ffjyg5y2zwq9x9cnq0zljb7k8jlncbalsayq5")))
+ ,(base32 "1f7g40sk5a6k6qf65k58vlybnnmhyyzczdxy60m3jgcsp674wfcr")))
+ ("x86_64-gnu"
+ ("bash"
+ ,(base32 "0l0dnighcipvdfbk14q834n57q859i2b9ssiq4bnbh0jpxvvqp1l"))
+ ("mkdir"
+ ,(base32 "1nd17k8pwwi7zsqi685w4rn1p2cvfcalrzdhfgwpsk1ilxnmdvsq"))
+ ("tar"
+ ,(base32 "0lf94y22ngmxdwhsp0cvj33m23p33r999xnlrff0s1yvlf20w3ks"))
+ ("xz"
+ ,(base32 "145aq65rx7w0qk1sw9239888id5ri60ha0xp1kyp6ir3pvizh6by")))
("mips64el-linux"
("bash"
,(base32 "1aw046dhda240k9pb9iaj5aqkm23gkvxa9j82n4k7fk87nbrixw6"))
@@ -165,6 +174,7 @@ (define (bootstrap-executable-file-name system program)
(match system
("powerpc64le-linux" (string-append system "/20210106/" program))
("i586-gnu" (string-append system "/20200326/" program))
+ ("x86_64-gnu" (string-append system "/20241110/" program))
("powerpc-linux" (string-append system "/20200923/bin/" program))
("riscv64-linux" (string-append system "/20210725/bin/" program))
(_ (string-append system "/" program
@@ -366,6 +376,8 @@ (define (bootstrap-guile-url-path system)
"/20150101/guile-2.0.11.tar.xz")
("i586-gnu"
"/20200326/guile-static-stripped-2.0.14-i586-pc-gnu.tar.xz")
+ ("x86_64-gnu"
+ "/20241110/guile-static-stripped-3.0.9-x86_64-pc-gnu.tar.xz")
("powerpc64le-linux"
"/20210106/guile-static-stripped-2.0.14-powerpc64le-linux-gnu.tar.xz")
("riscv64-linux"
@@ -390,6 +402,8 @@ (define (bootstrap-guile-hash system)
(base32 "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r"))
("i586-gnu"
(base32 "0wgqpsmvg25rnqn49ap7kwd2qxccd8dr4lllzp7i3rjvgav27vac"))
+ ("x86_64-gnu"
+ (base32 "0fgasmbidp584ibr5fbirmp3wr8qchv84a50i4bichysp00gg26p"))
("powerpc-linux"
(base32 "1by2p7s27fbyjzfkcw8h65h4kkqh7d23kv4sgg5jppjn2qx7swq4"))
("riscv64-linux"
@@ -598,6 +612,8 @@ (define %bootstrap-coreutils&co
"/20210106/static-binaries-0-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20200326/static-binaries-0-i586-pc-gnu.tar.xz")
+ ("x86_64-gnu"
+ "/20241110/static-binaries-0-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/static-binaries.tar.xz")
("riscv64-linux"
@@ -625,6 +641,9 @@ (define %bootstrap-coreutils&co
("i586-gnu"
(base32
"17kllqnf3fg79gzy9ansgi801c46yh9c23h4d923plvb0nfm1cfn"))
+ ("x86_64-gnu"
+ (base32
+ "118s161df8hgrdfph2w5spnrms02rh1dk7mzfvx1k1prvgngpm9p"))
("powerpc-linux"
(base32
"0kspxy0yczan2vlih6aa9hailr2inz000fqa0gn5x9d1fxxa5y8m"))
@@ -681,6 +700,8 @@ (define %bootstrap-binutils
"/20210106/binutils-static-stripped-2.34-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20200326/binutils-static-stripped-2.34-i586-pc-gnu.tar.xz")
+ ("x86_64-gnu"
+ "/20241110/binutils-static-stripped-2.41-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/binutils-2.35.1.tar.xz")
("riscv64-linux"
@@ -711,6 +732,9 @@ (define %bootstrap-binutils
("i586-gnu"
(base32
"11kykv1kmqc5wln57rs4klaqa13hm952smkc57qcsyss21kfjprs"))
+ ("x86_64-gnu"
+ (base32
+ "07r74sa7341frhf5a7h1p3pklsrmfpfrf5s8dxm3yz2kqzhish48"))
("powerpc-linux"
(base32
"0asbg1c4avkrvh057mx0942xwddd136jni382zqsxzn79ls42yq8"))
@@ -771,6 +795,8 @@ (define %bootstrap-glibc
"/20210106/glibc-stripped-2.31-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20240816/glibc-stripped-2.39-i586-pc-gnu.tar.xz")
+ ("x86_64-gnu"
+ "/20241110/glibc-stripped-2.39-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/glibc-2.32.tar.xz")
("riscv64-linux"
@@ -801,6 +827,9 @@ (define %bootstrap-glibc
("i586-gnu"
(base32
"0x2x6w611k6v9qdabacawamw2475p04hm3s0q95xcg063wjq4ig2"))
+ ("x86_64-gnu"
+ (base32
+ "1dcgrnlxbsdic0xmmrjbr8gl6ra5y2xbj8f8jr6y0zvpdyi12ldd"))
("powerpc-linux"
(base32
"0smmssyjrlk5cvx49586smmk81gkwff0i6r91n4rir4jm6ba25sb"))
@@ -877,6 +906,8 @@ (define %bootstrap-gcc
"/20210106/gcc-stripped-5.5.0-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20200326/gcc-stripped-5.5.0-i586-pc-gnu.tar.xz")
+ ("x86_64-gnu"
+ "/20241110/gcc-stripped-14.2.0-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/gcc-5.5.0.tar.xz")
("riscv64-linux"
@@ -907,6 +938,9 @@ (define %bootstrap-gcc
("i586-gnu"
(base32
"1j2zc58wzil71a34h7c70sd68dmqvcscrw3rmn2whq79vd70zvv5"))
+ ("x86_64-gnu"
+ (base32
+ "0vqvjvw6xi16lihiqz4mhisfwx3dgs15y60q07ksdkgvi1wdli2w"))
("powerpc-linux"
(base32
"1p7df3yixhm87dw5sccc6yn1i9db1r9hnmsg87wq5xi4rfmirq7w"))
diff --git a/guix/packages.scm b/guix/packages.scm
index f373136d22..403217d711 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -10,6 +10,7 @@
;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -419,7 +420,7 @@ (define %32bit-supported-systems
(define %64bit-supported-systems
;; This is the list of 64-bit system types that are supported.
'("x86_64-linux" "mips64el-linux" "aarch64-linux" "powerpc64le-linux"
- "riscv64-linux"))
+ "riscv64-linux" "x86_64-gnu"))
(define %supported-systems
;; This is the list of system types that are supported. By default, we
@@ -428,14 +429,15 @@ (define %supported-systems
(define %hurd-systems
;; The GNU/Hurd systems for which support is being developed.
- '("i586-gnu"))
+ '("i586-gnu" "x86_64-gnu"))
(define %cuirass-supported-systems
;; This is the list of system types for which build machines are available.
;;
;; XXX: MIPS is unavailable in CI:
;; <https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00790.html>.
- (fold delete %supported-systems '("mips64el-linux" "powerpc-linux" "riscv64-linux")))
+ (fold delete %supported-systems '("mips64el-linux" "powerpc-linux"
+ "riscv64-linux" "x86_64-gnu")))
(define (maybe-add-input-labels inputs)
"Add labels to INPUTS unless it already has them."
diff --git a/m4/guix.m4 b/m4/guix.m4
index b93daba5c3..8c2757a8b7 100644
--- a/m4/guix.m4
+++ b/m4/guix.m4
@@ -3,6 +3,7 @@ dnl Copyright © 2012, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021 Ludovic Co
dnl Copyright © 2014 Mark H Weaver <mhw@netris.org>
dnl Copyright © 2017, 2020, 2021, 2023 Efraim Flashner <efraim@flashner.co.il>
dnl Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
+dnl Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
dnl
dnl This file is part of GNU Guix.
dnl
@@ -61,8 +62,13 @@ AC_DEFUN([GUIX_SYSTEM_TYPE], [
linux-musl*)
guix_system="$machine_name-linux";;
gnu*)
- # Always use i586 for GNU/Hurd.
- guix_system="i586-gnu";;
+ case "$machine_name" in
+ i386|i486|i586|i686)
+ # Always use i586 for 32bit GNU/Hurd.
+ guix_system="i586-gnu";;
+ *)
+ guix_system="$machine_name-gnu";;
+ esac;;
*)
# Strip the version number from names such as `gnu0.3',
# `darwin10.2.0', etc.
@@ -91,7 +97,7 @@ courageous and port the GNU System distribution to it (see
# Currently only Linux-based systems are supported, and only on some
# platforms.
case "$guix_system" in
- x86_64-linux|i686-linux|armhf-linux|aarch64-linux|powerpc64le-linux|riscv64-linux|i586-gnu)
+ x86_64-linux|i686-linux|armhf-linux|aarch64-linux|powerpc64le-linux|riscv64-linux|i586-gnu|x86_64-gnu)
;;
mips64el-linux|powerpc-linux)
AC_MSG_WARN([building Guix on `$guix_system', which is not supported])
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 15/31] system: image: Add hurd64 image types.
(address . 74290@debbugs.gnu.org)
bf129f5e6dd084e2589732cb2b4625b84357004b.1731232753.git.janneke@gnu.org
* gnu/system/images/hurd.scm (hurd64-disk-image, hurd64-image-type,
hurd64-qcow2-image-type, hurd64-barebones-disk-image,
hurd64-barebones-qcow2-image): New variables.

Change-Id: I68834a4c5c18b0e154d06082824008d13ca52214
---
gnu/system/images/hurd.scm | 47 ++++++++++++++++++++++++++++++++++++--
1 file changed, 45 insertions(+), 2 deletions(-)

Toggle diff (73 lines)
diff --git a/gnu/system/images/hurd.scm b/gnu/system/images/hurd.scm
index 01c422a54f..75f255ed94 100644
--- a/gnu/system/images/hurd.scm
+++ b/gnu/system/images/hurd.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -36,7 +36,13 @@ (define-module (gnu system images hurd)
hurd-image-type
hurd-qcow2-image-type
hurd-barebones-disk-image
- hurd-barebones-qcow2-image))
+ hurd-barebones-qcow2-image
+
+ hurd64-disk-image
+ hurd6-image-type
+ hurd64-qcow2-image-type
+ hurd64-barebones-disk-image
+ hurd64-barebones-qcow2-image))
(define hurd-barebones-os
(operating-system
@@ -115,5 +121,42 @@ (define hurd-barebones-qcow2-image
#:type hurd-qcow2-image-type))
(name 'hurd-barebones.qcow2)))
+
+;;;
+;;; 64bit Hurd
+;;;
+(define hurd64-disk-image
+ (image
+ (inherit hurd-disk-image)
+ (platform x86_64-gnu)))
+
+(define hurd64-image-type
+ (image-type
+ (name 'hurd64-raw)
+ (constructor (cut image-with-os hurd64-disk-image <>))))
+
+(define hurd64-qcow2-image-type
+ (image-type
+ (name 'hurd64-qcow2)
+ (constructor (lambda (os)
+ (image
+ (inherit hurd64-disk-image)
+ (format 'compressed-qcow2)
+ (operating-system os))))))
+
+(define hurd64-barebones-disk-image
+ (image
+ (inherit
+ (os+platform->image hurd-barebones-os x86_64-gnu
+ #:type hurd64-image-type))
+ (name 'hurd64-barebones-disk-image)))
+
+(define hurd64-barebones-qcow2-image
+ (image
+ (inherit
+ (os+platform->image hurd-barebones-os x86_64-gnu
+ #:type hurd64-qcow2-image-type))
+ (name 'hurd64-barebones.qcow2)))
+
;; Return the default image.
hurd-barebones-qcow2-image
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 16/31] gnu: Add libgpg-error-1.50.
(address . 74290@debbugs.gnu.org)
035b5874f436601f436bcfe480890da38c8ca0c5.1731232753.git.janneke@gnu.org
* gnu/packages/gnupg.scm (libgpg-error-1.50): New variable.

Change-Id: Ia34c0f339f331420d76b2c840205f29e511d1dcc
---
gnu/packages/gnupg.scm | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)

Toggle diff (36 lines)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 2e97c2244a..a4863542f2 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -22,7 +22,7 @@
;;; Copyright © 2021 Nikita Domnitskii <nikita@domnitskii.me>
;;; Copyright © 2021 Aleksandr Vityazev <avityazev@posteo.org>
;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
@@ -164,6 +164,19 @@ (define-public libgpg-error
(properties '((ftp-server . "ftp.gnupg.org")
(ftp-directory . "/gcrypt/libgpg-error")))))
+(define-public libgpg-error-1.50
+ (package
+ (inherit libgpg-error)
+ (version "1.50")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnupg/libgpg-error/libgpg-error-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "02p2jgz95688ib28sl4aa624cj0liz73anwcl92f8cx6w14m6h39"))))))
+
(define-public libgcrypt
(package
(name "libgcrypt")
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 17/31] gnu: libgcrypt: Use libgpg-error-1.50 for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
668ec237bdfe5be3c277094abd035fbbf7d07c2c.1731232753.git.janneke@gnu.org
* gnu/packages/gnupg.scm (libgcrypt)[propagated-inputs]: When building for the
64bit Hurd, use libgcrypt-1.50.

Change-Id: I608d283a4a307527d5b09a81fa1a53cec5d6bb76
---
gnu/packages/gnupg.scm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

Toggle diff (18 lines)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index a4863542f2..6c6efff026 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -190,7 +190,9 @@ (define-public libgcrypt
"1pp9zyx02bzgzjzldxf0mx9kp3530xgaaqcz4n2cv100ddaaw57g"))))
(build-system gnu-build-system)
(propagated-inputs
- `(("libgpg-error-host" ,libgpg-error)))
+ `(("libgpg-error-host" ,(if (target-hurd64?)
+ libgpg-error-1.50
+ libgpg-error))))
(native-inputs
;; Needed here for the 'gpg-error' program.
`(("libgpg-error-native" ,libgpg-error)))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 18/31] gnu: perl: Support cross-building for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
05a9e4531639c0b21f2cb936d9fd605539360315.1731232753.git.janneke@gnu.org
* gnu/packages/cross-base.scm (perl)[native-inputs]: When cross-building for
the 64bit Hurd, use perl-cross-1.6.

Change-Id: I4a77f51a6757ad4aed9bcca8f9bbbf2cbd162e15
---
gnu/packages/perl.scm | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)

Toggle diff (34 lines)
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index faaac13bf1..2ea7c49419 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -248,14 +248,18 @@ (define-public perl
(native-inputs
(if (%current-target-system)
`(("perl-cross"
- ,(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/arsv/perl-cross")
- (commit "1.4")))
- (file-name (git-file-name "perl-cross" "1.4"))
- (sha256
- (base32 "1ydjvlhrk06ccyj4bm8by7xk90krsll2k380mc3x1mhfrc7r9gzy")))))
+ ,(let ((version (if (target-hurd64?) "1.6" "1.4"))
+ (hash
+ (if (target-hurd64?)
+ "0s06lkx5b79r9cn6pm5p6d4jbdjq7wg7rjr75nw5xdhw1z3wnl2d"
+ "1ydjvlhrk06ccyj4bm8by7xk90krsll2k380mc3x1mhfrc7r9gzy")))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/arsv/perl-cross")
+ (commit version)))
+ (file-name (git-file-name "perl-cross" version))
+ (sha256 (base32 hash))))))
'()))
(native-search-paths (list (search-path-specification
(variable "PERL5LIB")
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 19/31] gnu: openssl-3.0: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
bb85fef425df3d9a07dce34dc73acdbedc1717f6.1731232753.git.janneke@gnu.org
* gnu/packages/patches/openssl-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/tls.scm (openssl-3.0)[arguments]: When building for
the 64bit Hurd, use it in new "apply-hurd-patch" phase.

Change-Id: I8936377da726681b748cc010e1fbae3fb19dee05
---
gnu/local.mk | 1 +
gnu/packages/patches/openssl-hurd64.patch | 99 +++++++++++++++++++++++
gnu/packages/tls.scm | 9 +++
3 files changed, 109 insertions(+)
create mode 100644 gnu/packages/patches/openssl-hurd64.patch

Toggle diff (140 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 4b9fa95658..576f60579e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1891,6 +1891,7 @@ dist_patch_DATA = \
%D%/packages/patches/opensles-add-license-file.patch \
%D%/packages/patches/openssl-1.1-c-rehash-in.patch \
%D%/packages/patches/openssl-3.0-c-rehash-in.patch \
+ %D%/packages/patches/openssl-hurd64.patch \
%D%/packages/patches/opentaxsolver-file-browser-fix.patch \
%D%/packages/patches/open-zwave-hidapi.patch \
%D%/packages/patches/orangeduck-mpc-fix-pkg-config.patch \
diff --git a/gnu/packages/patches/openssl-hurd64.patch b/gnu/packages/patches/openssl-hurd64.patch
new file mode 100644
index 0000000000..372fda834a
--- /dev/null
+++ b/gnu/packages/patches/openssl-hurd64.patch
@@ -0,0 +1,99 @@
+Upstream-status: Taken from upstream:
+
+<https://github.com/openssl/openssl/commit/7c729851d169f30d9e0c0ad6e7c1cf6cefb37935>.
+
+From 795699363be8f717e36802c3ac503011b74ad752 Mon Sep 17 00:00:00 2001
+From: Janneke Nieuwenhuizen <janneke@gnu.org>
+Date: Thu, 7 Nov 2024 14:08:05 +0100
+Subject: [PATCH] Add support for the 64bit Hurd.
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+Taken from <https://salsa.debian.org/debian/openssl>.
+---
+ Configurations/10-main.conf | 45 ++++++++++++++++++++++++++++++++-----
+ util/perl/OpenSSL/config.pm | 3 ++-
+ 2 files changed, 41 insertions(+), 7 deletions(-)
+
+diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
+index b578a3c2a8..740460ebd3 100644
+--- a/Configurations/10-main.conf
++++ b/Configurations/10-main.conf
+@@ -1685,20 +1685,53 @@ my %targets = (
+ },
+
+ ##### GNU Hurd
+- "hurd-x86" => {
++ "hurd-generic32" => {
+ inherit_from => [ "BASE_unix" ],
+ CC => "gcc",
+- CFLAGS => "-O3 -fomit-frame-pointer -Wall",
++ CXX => "g++",
++ CFLAGS => picker(default => "-Wall",
++ debug => "-O0 -g",
++ release => "-O3"),
++ CXXFLAGS => picker(default => "-Wall",
++ debug => "-O0 -g",
++ release => "-O3"),
+ cflags => threads("-pthread"),
+- lib_cppflags => "-DL_ENDIAN",
++ cxxflags => combine("-std=c++11", threads("-pthread")),
+ ex_libs => add("-ldl", threads("-pthread")),
+- bn_ops => "BN_LLONG",
+- asm_arch => 'x86',
+- perlasm_scheme => 'elf',
++ bn_ops => "BN_LLONG RC4_CHAR",
+ thread_scheme => "pthreads",
+ dso_scheme => "dlfcn",
+ shared_target => "linux-shared",
+ shared_cflag => "-fPIC",
++ shared_ldflag => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" },
++ },
++
++ "hurd-generic64" => {
++ inherit_from => [ "hurd-generic32" ],
++ bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
++ },
++
++ #### X86 / X86_64 targets
++ "hurd-x86" => {
++ inherit_from => [ "hurd-generic32" ],
++ CFLAGS => add(picker(release => "-fomit-frame-pointer")),
++ cflags => add("-m32"),
++ cxxflags => add("-m32"),
++ lib_cppflags => add("-DL_ENDIAN"),
++ bn_ops => "BN_LLONG",
++ asm_arch => 'x86',
++ perlasm_scheme => 'elf',
++ },
++
++ "hurd-x86_64" => {
++ inherit_from => [ "hurd-generic64" ],
++ cflags => add("-m64"),
++ cxxflags => add("-m64"),
++ lib_cppflags => add("-DL_ENDIAN"),
++ bn_ops => "SIXTY_FOUR_BIT_LONG",
++ asm_arch => 'x86_64',
++ perlasm_scheme => 'elf',
++ multilib => "64",
+ },
+
+ ##### VxWorks for various targets
+diff --git a/util/perl/OpenSSL/config.pm b/util/perl/OpenSSL/config.pm
+index 2f1edcafb6..707db71537 100755
+--- a/util/perl/OpenSSL/config.pm
++++ b/util/perl/OpenSSL/config.pm
+@@ -92,7 +92,8 @@ my $guess_patterns = [
+ [ 'IRIX64:.*', 'mips4-sgi-irix64' ],
+ [ 'Linux:[2-9]\..*', '${MACHINE}-whatever-linux2' ],
+ [ 'Linux:1\..*', '${MACHINE}-whatever-linux1' ],
+- [ 'GNU.*', 'hurd-x86' ],
++ [ 'GNU:.*86-AT386', 'hurd-x86' ],
++ [ 'GNU:.*86_64-AT386', 'hurd-x86_64' ],
+ [ 'LynxOS:.*', '${MACHINE}-lynx-lynxos' ],
+ # BSD/OS always says 386
+ [ 'BSD\/OS:4\..*', 'i486-whatever-bsdi4' ],
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 1a1ce0d215..261a063090 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -589,6 +589,15 @@ (define-public openssl-3.0
"/bin/perl"))))
#$@(if (target-hurd?)
#~((delete 'patch-configure))
+ #~())
+ #$@(if (target-hurd64?)
+ #~((add-after 'unpack 'apply-hurd-patch
+ (lambda _
+ (let ((patch-file
+ #$(local-file
+ (search-patch "openssl-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i"
+ patch-file)))))
#~())))
((#:configure-flags flags #~'())
(if (system-hurd?)
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 20/31] gnu: pciutils: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
93bbee8b3e815afc25b5c833498b4f0e1d339827.1731232753.git.janneke@gnu.org
* gnu/packages/patches/pciutils-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/pciutils.scm (pciutils)[arguments]: Use g-expressions. When
building for the 64bit Hurd, use it in new "apply-hurd64-patch" phase.

Change-Id: I8936377da726681b748cc010e1fbae3fb19dee05
---
gnu/local.mk | 1 +
gnu/packages/patches/pciutils-hurd64.patch | 31 ++++++++++++++++++++++
gnu/packages/pciutils.scm | 25 +++++++++++------
3 files changed, 49 insertions(+), 8 deletions(-)
create mode 100644 gnu/packages/patches/pciutils-hurd64.patch

Toggle diff (115 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 576f60579e..ad18f62eb6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1906,6 +1906,7 @@ dist_patch_DATA = \
%D%/packages/patches/pam-krb5-CVE-2020-10595.patch \
%D%/packages/patches/pango-skip-libthai-test.patch \
%D%/packages/patches/password-store-tree-compat.patch \
+ %D%/packages/patches/pciutils-hurd64.patch \
%D%/packages/patches/pdfpc-build-with-vala-0.56.patch \
%D%/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch \
%D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
diff --git a/gnu/packages/patches/pciutils-hurd64.patch b/gnu/packages/patches/pciutils-hurd64.patch
new file mode 100644
index 0000000000..316f12e131
--- /dev/null
+++ b/gnu/packages/patches/pciutils-hurd64.patch
@@ -0,0 +1,31 @@
+Upstream-status: Not presented upstream.
+
+--- pciutils-3.8.0/lib/hurd.c.orig 2024-11-07 15:09:20.728973822 +0100
++++ pciutils-3.8.0/lib/hurd.c 2024-11-07 15:05:08.524682813 +0100
+@@ -213,7 +213,7 @@
+ hurd_read(struct pci_dev *d, int pos, byte * buf, int len)
+ {
+ int err;
+- size_t nread;
++ mach_msg_type_number_t nread;
+ char *data;
+ mach_port_t device_port = device_port_lookup(d);
+
+@@ -266,7 +266,7 @@
+ mach_port_t device_port = device_port_lookup(d);
+ struct pci_bar regions[6];
+ char *buf = (char *) &regions;
+- size_t size = sizeof(regions);
++ mach_msg_type_number_t size = sizeof(regions);
+
+ int err = pci_get_dev_regions(device_port, &buf, &size);
+ if (err)
+@@ -305,7 +305,7 @@
+ struct pci_xrom_bar rom;
+ mach_port_t device_port = device_port_lookup(d);
+ char *buf = (char *) &rom;
+- size_t size = sizeof(rom);
++ mach_msg_type_number_t size = sizeof(rom);
+
+ int err = pci_get_dev_rom(device_port, &buf, &size);
+ if (err)
diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scm
index d2a352eb6b..08f1634113 100644
--- a/gnu/packages/pciutils.scm
+++ b/gnu/packages/pciutils.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2022 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
;;;
@@ -81,25 +81,34 @@ (define-public pciutils
"01aglgw9ds9qiswcbi2lx90lswncikrlyv8mmp4haix8542bvvci"))))
(build-system gnu-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
(add-after 'unpack 'unbundle-pci.ids
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(copy-file (search-input-file (or native-inputs inputs)
"share/hwdata/pci.ids")
"pci.ids")))
+ #$@(if (target-hurd64?)
+ #~((add-after 'unpack 'apply-hurd64-patch
+ (lambda _
+ (let ((patch-file
+ #$(local-file
+ (search-patch "pciutils-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i" patch-file)))))
+ #~())
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
;; There's no 'configure' script, just a raw makefile.
(substitute* "Makefile"
- ,@(if (%current-target-system)
- `((("^CROSS_COMPILE=.*$")
+ #$@(if (%current-target-system)
+ #~((("^CROSS_COMPILE=.*$")
(string-append "CROSS_COMPILE="
- ,(%current-target-system) "-"
+ #$(%current-target-system) "-"
"\n"))
(("^HOST=.*$")
(string-append "HOST="
- ,(gnu-triplet->nix-system
+ #$(gnu-triplet->nix-system
(%current-target-system)) "\n"))
;; Disable 'install' strip option, that would fail when
;; we are cross-compiling.
@@ -139,7 +148,7 @@ (define-public pciutils
(invoke "make" "install" "install-lib"))))
;; Make sure programs have an RPATH so they can find libpciutils.so.
- #:make-flags (list ,(string-append "CC="
+ #:make-flags #~(list #$(string-append "CC="
(if (%current-target-system)
(cc-for-target)
"gcc"))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 21/31] gnu: libpciaccess: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
b2949836a31d158de0a90d58a5dede5c94dff729.1731232753.git.janneke@gnu.org
* gnu/packages/patches/libpciaccess-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/xorg.scm (libpciaccess) [arguments]: Use g-expressions. When
building for the 64bit Hurd, use it in new "apply-hurd64-patch" phase.

Change-Id: I8936377da726681b748cc010e1fbae3fb19dee05
---
gnu/local.mk | 1 +
.../patches/libpciaccess-hurd64.patch | 58 +++++++++++++++++++
gnu/packages/xorg.scm | 23 +++++---
3 files changed, 75 insertions(+), 7 deletions(-)
create mode 100644 gnu/packages/patches/libpciaccess-hurd64.patch

Toggle diff (132 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index ad18f62eb6..1e81c16979 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1701,6 +1701,7 @@ dist_patch_DATA = \
%D%/packages/patches/libmpeg2-global-symbol-test.patch \
%D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch \
%D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch \
+ %D%/packages/patches/libpciaccess-hurd64.patch \
%D%/packages/patches/libphonenumber-reproducible-build.patch \
%D%/packages/patches/libqalculate-3.8.0-libcurl-ssl-fix.patch \
%D%/packages/patches/libquicktime-ffmpeg.patch \
diff --git a/gnu/packages/patches/libpciaccess-hurd64.patch b/gnu/packages/patches/libpciaccess-hurd64.patch
new file mode 100644
index 0000000000..f7e11059b1
--- /dev/null
+++ b/gnu/packages/patches/libpciaccess-hurd64.patch
@@ -0,0 +1,58 @@
+Upstream-status: Taken from upstream:
+
+<https://gitlab.freedesktop.org/xorg/lib/libpciaccess/-/commit/6cd5a4afbb70868c7746de8d50dea59e02e9acf2>.
+
+From 6cd5a4afbb70868c7746de8d50dea59e02e9acf2 Mon Sep 17 00:00:00 2001
+From: Flavio Cruz <flaviocruz@gmail.com>
+Date: Wed, 28 Jun 2023 01:02:34 -0400
+Subject: [PATCH] Fix compilation warnings when building against hurd-amd64.
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+Passes mach_msg_type_number_t instead of size_t which have different
+sizes. Example warning:
+
+/hurd_pci.c:101:53: warning: passing argument 3 of 'pci_get_dev_regions' from incompatible pointer type [-Wincompatible-pointer-types]
+ 101 | err = pci_get_dev_regions(d->device_port, &buf, &size);
+ | ^~~~~
+ | |
+ | size_t * {aka long unsigned int *}
+---
+ src/hurd_pci.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/hurd_pci.c b/src/hurd_pci.c
+index 8653e1b..9ac3813 100644
+--- a/src/hurd_pci.c
++++ b/src/hurd_pci.c
+@@ -82,7 +82,7 @@ pci_device_hurd_probe(struct pci_device *dev)
+ struct pci_bar regions[6];
+ struct pci_xrom_bar rom;
+ struct pci_device_private *d;
+- size_t size;
++ mach_msg_type_number_t size;
+ char *buf;
+
+ /* Many of the fields were filled in during initial device enumeration.
+@@ -323,7 +323,7 @@ pciclient_cfg_read(mach_port_t device_port, int reg, char *buf,
+ size_t * nbytes)
+ {
+ int err;
+- size_t nread;
++ mach_msg_type_number_t nread;
+ char *data;
+
+ data = buf;
+@@ -473,7 +473,7 @@ simple_readdir(mach_port_t port, uint32_t *first_entry)
+ {
+ char *data;
+ int nentries = 0;
+- vm_size_t size;
++ mach_msg_type_number_t size;
+
+ dir_readdir (port, &data, &size, *first_entry, 1, 0, &nentries);
+
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 0de08a4ad1..b106a604a7 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -36,7 +36,7 @@
;;; Copyright © 2021 Lu Hui <luhux76@gmail.com>
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
-;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2023, 2024 Kaelyn Takata <kaelyn.alexi@protonmail.com>
;;;
@@ -1157,16 +1157,17 @@ (define-public libpciaccess
"12glp4w1kgvmqn89lk19cgr6jccd3awxra4dxisp7pagi06rsk11"))))
(build-system gnu-build-system)
(arguments
- '(;; Make sure libpciaccess can read compressed 'pci.ids' files as
- ;; provided by pciutils.
- #:configure-flags
- (list "--with-zlib"
+ (list
+ ;; Make sure libpciaccess can read compressed 'pci.ids' files as
+ ;; provided by pciutils.
+ #:configure-flags
+ #~(list "--with-zlib"
(string-append "--with-pciids-path="
(assoc-ref %build-inputs "pciutils")
"/share/hwdata"))
#:phases
- (modify-phases %standard-phases
+ #~(modify-phases %standard-phases
(add-after 'install 'add-L-zlib
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Provide '-LZLIB/lib' next to '-lz' in the .la file.
@@ -1175,7 +1176,15 @@ (define-public libpciaccess
(substitute* (string-append out "/lib/libpciaccess.la")
(("-lz")
(string-append "-L" zlib "/lib -lz")))
- #t))))))
+ #t)))
+ #$@(if (target-hurd64?)
+ #~((add-after 'unpack 'apply-hurd64-patch
+ (lambda _
+ (let ((patch-file
+ #$(local-file
+ (search-patch "libpciaccess-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i" patch-file)))))
+ #~()))))
(inputs
(list zlib pciutils)) ;for 'pci.ids.gz'
(native-inputs
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 22/31] gnu: netdde: Update to c0ef248dc7c5ccc1273e2a796f3ece30c5b645df.
(address . 74290@debbugs.gnu.org)
971d5c18860f5dc1dba30ffa5f4dd817b5f977c1.1731232753.git.janneke@gnu.org
* gnu/packages/hurd.scm (netdde): Update to
c0ef248dc7c5ccc1273e2a796f3ece30c5b645df.
(dde-sources): Update to b6c8526c703f3ba76294d9002f195c63897ec661.

Change-Id: Id03f5c5124f16e9ffd6a77cbb2507d274e0f325a
---
gnu/packages/hurd.scm | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

Toggle diff (45 lines)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 06fae1bd3b..f9d8b28b8c 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -294,7 +294,7 @@ (define unifont
(define dde-sources
;; This is the current tip of the dde branch
- (let ((commit "066797b576ebf8364ad157f50bef2a655597deeb"))
+ (let ((commit "b6c8526c703f3ba76294d9002f195c63897ec661"))
(origin
(method git-fetch)
(uri (git-reference
@@ -302,7 +302,7 @@ (define dde-sources
(commit commit)))
(sha256
(base32
- "19f2awlfnar5gyhi0w5zawla5brzck2s88iv0f20022pd1l5v9hl"))
+ "0k1ilj8ghli8x43xaksbc4y419pqh0w16k374914c07svq419bbr"))
(file-name (git-file-name "dde" (string-take commit 7))))))
(define %import-from-dde
@@ -561,8 +561,8 @@ (define-public hurd
(license gpl2+)))
(define-public netdde
- (let ((commit "e67c284ac113d939b10b4578334f27dab29d5b08")
- (revision "2"))
+ (let ((commit "c0ef248dc7c5ccc1273e2a796f3ece30c5b645df")
+ (revision "3"))
(package
(name "netdde")
;; The version prefix corresponds to the version of Linux from which the
@@ -576,7 +576,7 @@ (define-public netdde
(patches (list (search-patch "netdde-build-fix.patch")))
(sha256
(base32
- "0vnkls7sr7srzib5mnw6gybzl5qa8c5a4zf3h08w6gdr7zqbndh0"))
+ "070fpmd4nvn3mp8dj9w4if63iwz7j2m0h6ywq888znw70wlrc6sh"))
(file-name (git-file-name name commit))))
(build-system gnu-build-system)
(arguments
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 23/31] gnu: netdde: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
22aeb4fc3065120e43b55b1a169e76b53e5da4e7.1731232753.git.janneke@gnu.org
* gnu/packages/patches/netdde-csum.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/hurd.scm (netdde)[source]: Use it.
[arguments]: Do not assume x86, rather use actual ARCH in #:make-flags,
disable -Wstrict-prototypes and -Wint-conversion, and follow upstream's
"amd64" symlinking voodoo.

Change-Id: Ie825e56779dae2f489066569dc3c4405bac778c1
---
gnu/local.mk | 1 +
gnu/packages/hurd.scm | 22 ++++++++++++++++++++--
gnu/packages/patches/netdde-csum.patch | 18 ++++++++++++++++++
3 files changed, 39 insertions(+), 2 deletions(-)
create mode 100644 gnu/packages/patches/netdde-csum.patch

Toggle diff (88 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 1e81c16979..9a4715df86 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1816,6 +1816,7 @@ dist_patch_DATA = \
%D%/packages/patches/ncftp-reproducible.patch \
%D%/packages/patches/netcdf-date-time.patch \
%D%/packages/patches/netdde-build-fix.patch \
+ %D%/packages/patches/netdde-csum.patch \
%D%/packages/patches/netpbm-CVE-2017-2586.patch \
%D%/packages/patches/netpbm-CVE-2017-2587.patch \
%D%/packages/patches/netsurf-message-timestamp.patch \
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index f9d8b28b8c..973564ee33 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -573,7 +573,8 @@ (define-public netdde
(uri (git-reference
(url "https://git.savannah.gnu.org/git/hurd/incubator.git")
(commit commit)))
- (patches (list (search-patch "netdde-build-fix.patch")))
+ (patches (search-patches "netdde-build-fix.patch"
+ "netdde-csum.patch"))
(sha256
(base32
"070fpmd4nvn3mp8dj9w4if63iwz7j2m0h6ywq888znw70wlrc6sh"))
@@ -586,7 +587,13 @@ (define-public netdde
(search-input-file %build-inputs "/bin/bash"))
"PKGDIR=libdde_linux26"
(string-append "CC=" ,(cc-for-target))
- "ARCH=x86")
+ (let ((arch ,(match (or (%current-target-system)
+ (%current-system))
+ ((? target-x86-32?)
+ "x86")
+ ((? target-x86-64?)
+ "amd64"))))
+ (string-append "ARCH=" arch)))
#:configure-flags
,#~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
#:phases
@@ -604,8 +611,19 @@ (define-public netdde
(("/bin/bash") (which "bash")))))
(add-after 'patch-generated-file-shebangs 'build-libdde-linux26
(lambda* (#:key make-flags #:allow-other-keys)
+ (when ,(target-hurd64?)
+ (let ((dir "libdde_linux26/build/include"))
+ (mkdir-p (string-append dir "/x86"))
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/x86/amd64") "x86")
+ (symlink "x86" (string-append dir "/amd64"))
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/amd64/asm-x86_64") "asm-x86")
+ (symlink "asm-x86" (string-append dir "/amd64/asm-x86_64"))))
(with-directory-excursion "libdde_linux26"
(apply invoke "make"
+ (string-append "WARNINGS=-Wno-strict-prototypes"
+ " -Wno-int-conversion")
(delete "PKGDIR=libdde_linux26" make-flags)))))
(add-after 'build-libdde-linux26 'convert
(lambda* (#:key make-flags #:allow-other-keys)
diff --git a/gnu/packages/patches/netdde-csum.patch b/gnu/packages/patches/netdde-csum.patch
new file mode 100644
index 0000000000..4fdd004898
--- /dev/null
+++ b/gnu/packages/patches/netdde-csum.patch
@@ -0,0 +1,18 @@
+Upstream-status: Taken from debian.
+
+<https://salsa.debian.org/hurd-team/netdde/raw/master/debian/patches/csum>.
+
+---
+ linux/drivers/net/vmxnet3/vmxnet3_drv.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/linux/drivers/net/vmxnet3/vmxnet3_drv.c
++++ b/linux/drivers/net/vmxnet3/vmxnet3_drv.c
+@@ -25,6 +25,7 @@
+ */
+
+ #include "vmxnet3_int.h"
++#include <net/ip6_checksum.h>
+
+ char vmxnet3_driver_name[] = "vmxnet3";
+ #define VMXNET3_DRIVER_DESC "VMware vmxnet3 virtual NIC driver"
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 24/31] gnu: rumpkernel: Update to f1ffd6405f225336e595a0f99f01095ed7438337.
(address . 74290@debbugs.gnu.org)
16521725d101731b06d55d21be690ee457fcd26d.1731232753.git.janneke@gnu.org
* gnu/packages/hurd.scm (rumpkernel): Update to
f1ffd6405f225336e595a0f99f01095ed7438337.
[arguments]: In stage "build", add "-Wno-error=sign-compare" to CWARNFLAGS.

Change-Id: I8936377da726681b748cc010e1fbae3fb19dee05
---
gnu/packages/hurd.scm | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)

Toggle diff (37 lines)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 973564ee33..b156fcea4c 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -665,8 +665,8 @@ (define-public netdde
(license gpl2))))
(define-public rumpkernel
- (let ((commit "81043d42fabda9baed7ac9ca36e3f3f5ed11ba81")
- (revision "3"))
+ (let ((commit "f1ffd6405f225336e595a0f99f01095ed7438337")
+ (revision "0"))
(package
(name "rumpkernel")
(version (git-version "0-20211031" revision commit))
@@ -680,7 +680,7 @@ (define-public rumpkernel
(commit commit)))
(sha256
(base32
- "0fv0k52qqcg3nq9012hibgsamvsd7mnvn2ikdasmzjhsp8qh5q3r"))
+ "1ygn3ysji06ik3k44sf906fjpdmabznkspw70llldbk2zkrcdw7i"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
@@ -800,7 +800,8 @@ (define-public rumpkernel
" -Wno-error=stack-protector"
" -Wno-error=array-parameter"
" -Wno-error=array-bounds"
- " -Wno-error=stringop-overflow")
+ " -Wno-error=stringop-overflow"
+ " -Wno-error=sign-compare")
"-V" "LIBCRTBEGIN="
"-V" "LIBCRTEND="
"-V" "LIBCRT0="
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 25/31] gnu: rumpkernel: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
dbb7cd514016b00c56e7a28a6ec4a433d42734b0.1731232753.git.janneke@gnu.org
* gnu/packages/hurd.scm (rumpkernel)[argument]: In stage "build", follow
Debian upstream to use -DPAE disable the DTRACE and ZFS builds.

Change-Id: I534da31eefb378c72b4896d64a51a73109e38aa6
---
gnu/packages/hurd.scm | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

Toggle diff (27 lines)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index b156fcea4c..d29ec22cd7 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -781,6 +781,9 @@ (define-public rumpkernel
"-V" "MKBINUTILS=no"
"-V" "MKGDB=no"
"-V" "MKGROFF=no"
+ "-V" "MKDTRACE=no"
+ "-V" "MKZFS=no"
+
"-V" (string-append "TOPRUMP=" toprump)
"-V" "BUILDRUMP_CPPFLAGS=-Wno-error=stringop-overread"
"-V" "RUMPUSER_EXTERNAL_DPLIBS=pthread"
@@ -791,7 +794,8 @@ (define-public rumpkernel
" -DRUMP_REGISTER_T=int"
" -DRUMPUSER_CONFIG=yes"
" -DNO_PCI_MSI_MSIX=yes"
- " -DNUSB_DMA=1")
+ " -DNUSB_DMA=1"
+ " -DPAE")
"-V" (string-append
"CWARNFLAGS="
" -Wno-error=maybe-uninitialized"
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 26/31] gnu: hurd: Build fixes for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
b0b0b768a76a38dfe26bfe134415a359e7f4d739.1731232753.git.janneke@gnu.org
* gnu/packages/patches/hurd-64bit.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/hurd.scm (hurd)[source]: Use it.
[arguments]: When building for the 64bit Hurd, add "create-machine-symlink"
phase. In phases "build-libdde-linux" and "install-goodies", do not assume
x86, rather use actual ARCH, disable -Wstrict-prototypes and -Wint-conversion,
and follow upstream's "amd64" symlinking voodoo.

Change-Id: If264a91b2433add13f9121c482f0abe67ae5f1e9
---
gnu/local.mk | 1 +
gnu/packages/hurd.scm | 115 +++++++++++++++++---------
gnu/packages/patches/hurd-64bit.patch | 56 +++++++++++++
3 files changed, 131 insertions(+), 41 deletions(-)
create mode 100644 gnu/packages/patches/hurd-64bit.patch

Toggle diff (212 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 9a4715df86..cf0de3d92e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1545,6 +1545,7 @@ dist_patch_DATA = \
%D%/packages/patches/htslib-for-stringtie.patch \
%D%/packages/patches/hubbub-sort-entities.patch \
%D%/packages/patches/hueplusplus-mbedtls.patch \
+ %D%/packages/patches/hurd-64bit.patch \
%D%/packages/patches/hurd-rumpdisk-no-hd.patch \
%D%/packages/patches/hurd-startup.patch \
%D%/packages/patches/hwloc-1-test-btrfs.patch \
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index d29ec22cd7..7aed0ebe1d 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -317,7 +317,8 @@ (define-public hurd
(source (origin
(inherit (package-source hurd-headers))
(patches (search-patches "hurd-rumpdisk-no-hd.patch"
- "hurd-startup.patch"))))
+ "hurd-startup.patch"
+ "hurd-64bit.patch"))))
(version (package-version hurd-headers))
(arguments
`(#:tests? #f ;no "check" target
@@ -467,48 +468,80 @@ (define-public hurd
(find-files (string-append out "/libexec")))
#t)))
(add-after 'build 'build-libdde-linux
- (lambda* (#:key inputs native-inputs #:allow-other-keys)
- (invoke (string-append (assoc-ref (or native-inputs inputs) "make")
- "/bin/make")
- ;; XXX There can be a race condition because subdirs
- ;; aren't interdependent targets in the Makefile.
- "-j1" "-C" "libdde_linux26"
- (string-append "SHELL="
- (assoc-ref (or native-inputs inputs) "bash")
- "/bin/bash")
- (string-append "CC="
- ,(cc-for-target))
- "ARCH=x86")))
+ (lambda* (#:key inputs native-inputs #:allow-other-keys)
+ (let ((arch ,(match (or (%current-target-system)
+ (%current-system))
+ ((? target-x86-32?)
+ "x86")
+ ((? target-x86-64?)
+ "amd64"))))
+ (when ,(target-hurd64?)
+ (let ((dir "libdde_linux26/build/include"))
+ (mkdir-p (string-append dir "/x86"))
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/x86/amd64") "x86")
+ (symlink "x86" (string-append dir "/amd64"))
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/amd64/asm-x86_64") "asm-x86")
+ (symlink "asm-x86" (string-append dir "/amd64/asm-x86_64"))))
+ (invoke (string-append (assoc-ref (or native-inputs inputs) "make")
+ "/bin/make")
+ ;; XXX There can be a race condition because subdirs
+ ;; aren't interdependent targets in the Makefile.
+ "-j1" "-C" "libdde_linux26"
+ (string-append "SHELL="
+ (assoc-ref (or native-inputs inputs) "bash")
+ "/bin/bash")
+ (string-append "CC="
+ ,(cc-for-target))
+ (string-append "WARNINGS=-Wno-int-conversion"
+ " -Wno-strict-prototypes")
+ (string-append "ARCH=" arch)))))
(add-after 'install 'install-goodies
- (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
- ;; Install additional goodies.
- ;; TODO: Build & install *.msgids for rpctrace.
- (let* ((out (assoc-ref outputs "out"))
- (datadir (string-append out "/share/hurd")))
- ;; Install libdde_linux26.
- (invoke (string-append (assoc-ref (or native-inputs inputs) "make")
- "/bin/make")
- "-C" "libdde_linux26" "install"
- (string-append "SHELL="
- (assoc-ref (or native-inputs inputs) "bash")
- "/bin/bash")
- (string-append "INSTALLDIR="
- out
- "/share/libdde_linux26/build/include")
- "ARCH=x86")
- ;; Install the fancy UTF-8 motd.
- (mkdir-p (string-append out "/etc"))
- (copy-file "console/motd.UTF8"
- (string-append out "/etc/motd"))
+ (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
+ ;; Install additional goodies.
+ ;; TODO: Build & install *.msgids for rpctrace.
+ (let* ((out (assoc-ref outputs "out"))
+ (datadir (string-append out "/share/hurd"))
+ (arch ,(match (or (%current-target-system)
+ (%current-system))
+ ((? target-x86-32?)
+ "x86")
+ ((? target-x86-64?)
+ "amd64")))
+ (dir (string-append out "/share/libdde_linux26/build/include")))
+ (mkdir-p dir)
+ (when ,(target-hurd64?)
+ (mkdir-p (string-append dir "/amd64"))
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/amd64/asm-x86_64")
+ "x86")
+ (symlink "x86" (string-append dir "/amd46")))
+ (invoke (string-append (assoc-ref (or native-inputs inputs) "make")
+ "/bin/make")
+ "-C" "libdde_linux26" "install"
+ (string-append "SHELL="
+ (assoc-ref (or native-inputs inputs) "bash")
+ "/bin/bash")
+ (string-append "INSTALLDIR=" dir)
+ (string-append "ARCH=" arch))
+ (when ,(target-hurd64?)
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/amd64/asm-x86_64")
+ "asm-x86")
+ (symlink "asm-x86" (string-append dir "/amd64/asm-x86_64")))
+ ;; Install the fancy UTF-8 motd.
+ (mkdir-p (string-append out "/etc"))
+ (copy-file "console/motd.UTF8"
+ (string-append out "/etc/motd"))
- ;; Install the BDF font for use by the console client.
- (copy-file (assoc-ref inputs "unifont")
- "unifont.gz")
- (invoke "gunzip" "unifont.gz")
- (mkdir-p datadir)
- (copy-file "unifont"
- (string-append datadir "/vga-system.bdf"))
- #t))))
+ ;; Install the BDF font for use by the console client.
+ (copy-file (assoc-ref inputs "unifont")
+ "unifont.gz")
+ (invoke "gunzip" "unifont.gz")
+ (mkdir-p datadir)
+ (copy-file "unifont"
+ (string-append datadir "/vga-system.bdf"))))))
#:configure-flags
,#~(list (string-append "LDFLAGS=-Wl,-rpath="
#$output "/lib")
diff --git a/gnu/packages/patches/hurd-64bit.patch b/gnu/packages/patches/hurd-64bit.patch
new file mode 100644
index 0000000000..643550ad68
--- /dev/null
+++ b/gnu/packages/patches/hurd-64bit.patch
@@ -0,0 +1,56 @@
+Upstream-status: Taken from upstream:
+ <https://git.savannah.gnu.org/cgit/hurd/hurd.git/commit/?id=d494333e7607ea03819adcfb69d89f8248ec2044>.
+
+From d494333e7607ea03819adcfb69d89f8248ec2044 Mon Sep 17 00:00:00 2001
+From: Flavio Cruz <flaviocruz@gmail.com>
+Date: Sun, 21 Jul 2024 17:20:55 -0400
+Subject: [PATCH] nfsd: fix -Werror=incompatible-pointer-types issues for
+ x86_64
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+Message-ID: <3pmgbk2myx4phdb6wcso54solmybulrvbytols5md3nri2p2qp@xjmfmpvwjp6t>
+---
+ nfsd/cache.c | 2 +-
+ nfsd/ops.c | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/nfsd/cache.c b/nfsd/cache.c
+index cd5524af..864739c0 100644
+--- a/nfsd/cache.c
++++ b/nfsd/cache.c
+@@ -387,7 +387,7 @@ create_cached_handle (int fs, struct cache_handle *credc, file_t userport)
+ struct cache_handle *c;
+ int hash;
+ char *bp = fhandle.array + sizeof (int);
+- size_t handlelen = NFS2_FHSIZE - sizeof (int);
++ mach_msg_type_number_t handlelen = NFS2_FHSIZE - sizeof (int);
+ mach_port_t newport, ref;
+
+ /* Authenticate USERPORT so that we can call file_getfh on it. */
+diff --git a/nfsd/ops.c b/nfsd/ops.c
+index 463a9c87..64e94b93 100644
+--- a/nfsd/ops.c
++++ b/nfsd/ops.c
+@@ -292,7 +292,7 @@ op_write (struct cache_handle *c,
+ off_t offset;
+ size_t count;
+ error_t err;
+- mach_msg_type_number_t amt;
++ vm_size_t amt;
+ char *bp;
+ struct stat st;
+
+@@ -583,7 +583,7 @@ op_readdir (struct cache_handle *c,
+ error_t err;
+ char *buf;
+ struct dirent *dp;
+- size_t bufsize;
++ mach_msg_type_number_t bufsize;
+ int nentries;
+ int i;
+ int *replystart;
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 27/31] gnu: git-minimal: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
ab55c68442e9638d8c6e6d66732b9056686c52cf.1731232753.git.janneke@gnu.org
* gnu/packages/version-control.scm (git-minimal)[arguments]: When using gcc >=
14, use "-Wno-implicit-function-declaration" in #:make-flags.
Use target-hurd? instead of comparing with "i586-pc-gnu" in "use-host-uname_S"
phase.

Change-Id: Ib9836be8a1e389a82c8a89adf22aaeac0d85bd14
---
gnu/packages/version-control.scm | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

Toggle diff (36 lines)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 6bd37fee82..136d52af51 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -111,6 +111,7 @@ (define-module (gnu packages version-control)
#:use-module (gnu packages file)
#:use-module (gnu packages flex)
#:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
@@ -292,7 +293,10 @@ (define-public git-minimal
;; By default 'make install' creates hard links for
;; things in 'libexec/git-core', which leads to huge
;; nars; see <https://bugs.gnu.org/21949>.
- "NO_INSTALL_HARDLINKS=indeed")
+ "NO_INSTALL_HARDLINKS=indeed"
+ #$@(if (version>=? (package-version (current-gcc)) "14")
+ #~("-Wno-implicit-function-declaration")
+ #~()))
#:phases
#~(modify-phases %standard-phases
#$@(if (%current-target-system)
@@ -301,7 +305,7 @@ (define-public git-minimal
(lambda _
(substitute* "config.mak.uname"
(("uname_S := .*" all)
- (if (equal? #$(%current-target-system) "i586-pc-gnu")
+ (if #$(target-hurd?)
"uname_S := GNU\n"
all))))))
;; We do not have a full bash when cross-compiling.
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 28/31] gnu: inetutils: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
e84d13c6690c6d23f0b96738eed7548c5487934c.1731232753.git.janneke@gnu.org
* gnu/packages/patches/inetutils-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/admin.scm (inetutils)[arguments]: When building for the 64bit
Hurd, use it in new "apply-hurd64-patch" stage.

Change-Id: I780f6a92418b49e5fe0d23eb1c90e155216f1428
---
gnu/local.mk | 1 +
gnu/packages/admin.scm | 14 ++++-
gnu/packages/patches/inetutils-hurd64.patch | 65 +++++++++++++++++++++
3 files changed, 78 insertions(+), 2 deletions(-)
create mode 100644 gnu/packages/patches/inetutils-hurd64.patch

Toggle diff (118 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index cf0de3d92e..6a46241e5f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1568,6 +1568,7 @@ dist_patch_DATA = \
%D%/packages/patches/ilmbase-fix-tests.patch \
%D%/packages/patches/instead-use-games-path.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
+ %D%/packages/patches/inetutils-hurd64.patch \
%D%/packages/patches/irrlicht-use-system-libs.patch \
%D%/packages/patches/irrlicht-link-against-needed-libs.patch \
%D%/packages/patches/isl-0.11.1-aarch64-support.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index db9aea31a5..f0dde60d6a 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -31,7 +31,7 @@
;;; Copyright © 2019, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019, 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
@@ -1000,7 +1000,17 @@ (define-public inetutils
"\\\""))
;; On some systems, 'libls.sh' may fail with an error such as:
;; "Failed to tell switch -a apart from -A".
- #:parallel-tests? #f))
+ #:parallel-tests? #f
+ #:phases (if (target-hurd64?)
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'apply-hurd64-patch
+ (lambda _
+ (let ((patch
+ #$(local-file
+ (search-patch
+ "inetutils-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i" patch)))))
+ #~%standard-phases)))
(inputs
(list coreutils
shadow ;for login (used in telnetd and rlogind)
diff --git a/gnu/packages/patches/inetutils-hurd64.patch b/gnu/packages/patches/inetutils-hurd64.patch
new file mode 100644
index 0000000000..3fb238bcdc
--- /dev/null
+++ b/gnu/packages/patches/inetutils-hurd64.patch
@@ -0,0 +1,65 @@
+Upstream-status: Not presented upstream.
+
+From 0804e655a7abfd22dc3a053f03fab8f811405f84 Mon Sep 17 00:00:00 2001
+From: Janneke Nieuwenhuizen <janneke@gnu.org>
+Date: Fri, 8 Nov 2024 11:07:56 +0100
+Subject: [PATCH] ifconfig hurd: Build fix for the 64bit HUrd.
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+* ifconfig/system/hurd.c (check_driving): Use mach_msg_type_number_t
+instead of size_t for file_get_fs_options.
+---
+ ifconfig/system/hurd.c | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/ifconfig/system/hurd.c b/ifconfig/system/hurd.c
+index 70b2ed27..86fe6375 100644
+--- a/ifconfig/system/hurd.c
++++ b/ifconfig/system/hurd.c
+@@ -47,7 +47,7 @@ check_driving (const char *name)
+ error_t err;
+
+ char *argz = 0, *new_argz = 0;
+- size_t argz_len = 0;
++ mach_msg_type_number_t argz_len = 0;
+ char *entry = 0;
+ const char *socket = _SERVERS_SOCKET "/2";
+
+@@ -106,7 +106,9 @@ check_driving (const char *name)
+ new_argz = malloc (argz_len);
+ memcpy (new_argz, argz, argz_len);
+
+- err = argz_insert (&new_argz, &argz_len, new_argz, name);
++ size_t new_argz_len = 0;
++
++ err = argz_insert (&new_argz, &new_argz_len, new_argz, name);
+ if (err)
+ {
+ error (0, err, "Could not prepend name %s to '%s' for %s", name,
+@@ -114,7 +116,7 @@ check_driving (const char *name)
+ goto out;
+ }
+
+- err = argz_insert (&new_argz, &argz_len, new_argz, "-i");
++ err = argz_insert (&new_argz, &new_argz_len, new_argz, "-i");
+ if (err)
+ {
+ argz_stringify (new_argz, argz_len, ' ');
+@@ -122,10 +124,10 @@ check_driving (const char *name)
+ goto out;
+ }
+
+- err = fsys_set_options (fsys, new_argz, argz_len, 1);
++ err = fsys_set_options (fsys, new_argz, new_argz_len, 1);
+ if (err)
+ {
+- argz_stringify (new_argz, argz_len, ' ');
++ argz_stringify (new_argz, new_argz_len, ' ');
+ error (0, err, "Could not make pfinet %s drive %s with '%s'", socket,
+ name, new_argz);
+ goto out;
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 29/31] gnu: grub: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
83a995681b1b8cf9894b9fbc1e3c65cbbb855bbf.1731232753.git.janneke@gnu.org
* gnu/packages/patches/grub-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/bootloaders.scm (grub)[arguments]: When building for the 64bit
Hurd, use it in new "apply-hurd64-patch" stage.

Change-Id: I780f6a92418b49e5fe0d23eb1c90e155216f1428
---
gnu/local.mk | 1 +
gnu/packages/bootloaders.scm | 8 +++++++
gnu/packages/patches/grub-hurd64.patch | 32 ++++++++++++++++++++++++++
3 files changed, 41 insertions(+)
create mode 100644 gnu/packages/patches/grub-hurd64.patch

Toggle diff (72 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 6a46241e5f..11955c7a49 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1487,6 +1487,7 @@ dist_patch_DATA = \
%D%/packages/patches/gromacs-tinyxml2.patch \
%D%/packages/patches/groovy-add-exceptionutilsgenerator.patch \
%D%/packages/patches/grub-efi-fat-serial-number.patch \
+ %D%/packages/patches/grub-hurd64.patch \
%D%/packages/patches/grub-setup-root.patch \
%D%/packages/patches/guile-1.8-cpp-4.5.patch \
%D%/packages/patches/guile-2.2-skip-oom-test.patch \
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 8ae9621e5b..781000af1b 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -192,6 +192,14 @@ (define-public grub
(setenv "BUILD_FREETYPE_CFLAGS"
(string-append "-I" freetype
"/include/freetype2"))))))
+ #$@(if (target-hurd64?)
+ #~((add-after 'unpack 'apply-hurd64-patch
+ (lambda _
+ (let ((patch
+ #$(local-file
+ (search-patch "grub-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i" patch)))))
+ #~())
(add-before 'check 'disable-flaky-test
(lambda _
;; This test is unreliable. For more information, see:
diff --git a/gnu/packages/patches/grub-hurd64.patch b/gnu/packages/patches/grub-hurd64.patch
new file mode 100644
index 0000000000..d5acd99eb8
--- /dev/null
+++ b/gnu/packages/patches/grub-hurd64.patch
@@ -0,0 +1,32 @@
+Upstream-status: Not presented upstream.
+
+From a4eb7d1f2cbd02132a9f5512f1294182576d4653 Mon Sep 17 00:00:00 2001
+From: Janneke Nieuwenhuizen <janneke@gnu.org>
+Date: Fri, 8 Nov 2024 11:47:49 +0100
+Subject: [PATCH] osdep/hurd: Support the 64bit Hurd.
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+* grub-core/osdep/hurd/getroot.c (grub_util_find_hurd_root_device):
+Use mach_msg_type_number_t instead of size_t.
+---
+ grub-core/osdep/hurd/getroot.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/grub-core/osdep/hurd/getroot.c b/grub-core/osdep/hurd/getroot.c
+index 0efefdab4..b849700e6 100644
+--- a/grub-core/osdep/hurd/getroot.c
++++ b/grub-core/osdep/hurd/getroot.c
+@@ -58,7 +58,7 @@ grub_util_find_hurd_root_device (const char *path)
+ file_t file;
+ error_t err;
+ char *argz = NULL, *name = NULL, *ret;
+- size_t argz_len = 0;
++ mach_msg_type_number_t argz_len = 0;
+ int i;
+
+ file = file_name_lookup (path, 0, 0);
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 30/31] gnu: guile-fibers: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
86686ad32c0d7b3213d9e7c3640b61b4e4672fc2.1731232753.git.janneke@gnu.org
* gnu/packages/guile-xyz.scm (guile-fibers)[arguments]: Also modify phases for
the 64bit Hurd.

Change-Id: I780f6a92418b49e5fe0d23eb1c90e155216f1428
---
gnu/packages/guile-xyz.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (16 lines)
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index ea192c2c03..a874ab908d 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -855,7 +855,7 @@ (define-public guile-fibers
(list #:make-flags
#~(list "GUILE_AUTO_COMPILE=0")
#:phases
- (if (target-x86-64?)
+ (if (and (target-x86-64?) (not (target-hurd?)))
#~%standard-phases
#~(modify-phases %standard-phases
(add-before 'check 'disable-some-tests
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 10 Nov 11:38 +0100
[PATCH 31/31] system: hurd: Use 64bit gnumach for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
52f615e031e134f37d20b5bda18e24391c6654c0.1731232753.git.janneke@gnu.org
* gnu/system/hurd.scm (%hurd-default-operating-system-kernel): Use
actual (%current-target-system) to specify (%current-system) instead of using
hardcoded "i686-linux".

Change-Id: Ifc179bce221b1a54461860c24ba400cf6932ec86
---
gnu/system/hurd.scm | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)

Toggle diff (32 lines)
diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm
index 9a351529e8..58e41959f4 100644
--- a/gnu/system/hurd.scm
+++ b/gnu/system/hurd.scm
@@ -18,6 +18,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu system hurd)
+ #:use-module (ice-9 match)
#:use-module (guix gexp)
#:use-module (guix profiles)
#:use-module (guix utils)
@@ -64,9 +65,13 @@ (define %hurd-default-operating-system-kernel
(if (system-hurd?)
gnumach
;; A cross-built GNUmach does not work
- (with-parameters ((%current-system "i686-linux")
- (%current-target-system #f))
- gnumach)))
+ (let ((system (match (%current-system)
+ ((? target-x86-32?) "i686-linux")
+ ((? target-x86-64?) "x86_64-linux")
+ (_ "i686-linux"))))
+ (with-parameters ((%current-system system)
+ (%current-target-system #f))
+ gnumach))))
(define %base-packages/hurd
;; Note: the Shepherd comes before the Hurd, not just because its duty is to
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
janneke wrote on 10 Nov 12:45 +0100
Re: [PATCH 02/31] gnu: gnumach: Update to v1.8+git20240714.
(address . 74290@debbugs.gnu.org)
87serz1fde.fsf@gnu.org
Janneke Nieuwenhuizen writes:

Toggle quote (5 lines)
> * gnu/packages/patches/gnumach-version.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Register it.
> * gnu/packages/hurd.scm (gnumach-headers): Update to v1.8+git20240714 and use
> it.

Err, this needs

Toggle snippet (15 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 682deb89cf..a000cbfdc5 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2640,6 +2640,7 @@ (define gnumach-headers-boot0
(source
(origin
(inherit (package-source gnumach-headers))
+ (patches '())
(method
(git-fetch-from-tarball
(origin


in order for `guix build --system=x86_64-gnu' (checking bootstrap
hashes) not to hang.

Oops, caused by a last minute adding of "nice cosmetic" version number
patch from Debian.

Janneke
From efb58c8deb6693aaa9dcec6d616289d36c3967b3 Mon Sep 17 00:00:00 2001
Message-ID: <efb58c8deb6693aaa9dcec6d616289d36c3967b3.1731238981.git.janneke@gnu.org>
From: Janneke Nieuwenhuizen <janneke@gnu.org>
Date: Sun, 10 Nov 2024 12:31:13 +0100
Subject: [PATCH] squash! gnu: gnumach: Update to v1.8+git20240714.
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8

* gnu/packages/commencement.scm (gnumach-headers-boot0)[origin]: Reset
patches.

Change-Id: I5186c6c0e4f8df6ea55a74943b919bd13530d4d3
---
gnu/packages/commencement.scm | 1 +
1 file changed, 1 insertion(+)

Toggle diff (17 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 682deb89cf..a000cbfdc5 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2640,6 +2640,7 @@ (define gnumach-headers-boot0
(source
(origin
(inherit (package-source gnumach-headers))
+ (patches '())
(method
(git-fetch-from-tarball
(origin

base-commit: 52f615e031e134f37d20b5bda18e24391c6654c0
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J
J
janneke wrote on 10 Nov 15:40 +0100
Re: [PATCH 31/31] system: hurd: Use 64bit gnumach for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
874j4fywx4.fsf@gnu.org
Janneke Nieuwenhuizen writes:

Toggle quote (36 lines)
> * gnu/system/hurd.scm (%hurd-default-operating-system-kernel): Use
> actual (%current-target-system) to specify (%current-system) instead of using
> hardcoded "i686-linux".
>
> Change-Id: Ifc179bce221b1a54461860c24ba400cf6932ec86
> ---
> gnu/system/hurd.scm | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm
> index 9a351529e8..58e41959f4 100644
> --- a/gnu/system/hurd.scm
> +++ b/gnu/system/hurd.scm
> @@ -18,6 +18,7 @@
> ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
>
> (define-module (gnu system hurd)
> + #:use-module (ice-9 match)
> #:use-module (guix gexp)
> #:use-module (guix profiles)
> #:use-module (guix utils)
> @@ -64,9 +65,13 @@ (define %hurd-default-operating-system-kernel
> (if (system-hurd?)
> gnumach
> ;; A cross-built GNUmach does not work
> - (with-parameters ((%current-system "i686-linux")
> - (%current-target-system #f))
> - gnumach)))
> + (let ((system (match (%current-system)
> + ((? target-x86-32?) "i686-linux")
> + ((? target-x86-64?) "x86_64-linux")
> + (_ "i686-linux"))))
> + (with-parameters ((%current-system system)
> + (%current-target-system #f))
> + gnumach))))

This is obviously wrong; the idea was to do something like

Toggle snippet (10 lines)
(let ((system (match (or (%current-target-system)
(%current-system))
((? target-x86-32?) "i686-linux")
((? target-x86-64?) "x86_64-linux")
(_ "i686-linux"))))
(with-parameters ((%current-system system)
(%current-target-system #f))
gnumach))))

...but as %hurd-default-operating-system-kernel is a variable that is
evaluated at toplevel/too early, this also doesn't work. Ideas?

Janneke

--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J
J
janneke wrote on 10 Nov 15:15 +0100
[PATCH 00/31] Add support for x86_64-gnu, aka the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
87iksvyy1x.fsf@gnu.org
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.

Toggle quote (150 lines)
> 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

--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J
J
janneke wrote on 11 Nov 19:05 +0100
Re: [PATCH 14/31] DRAFT gnu: bootstrap: Add support for x86_64-gnu, aka the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
87o72lve7g.fsf@gnu.org
Janneke Nieuwenhuizen writes:

Oops! This inadvertedly changed i586-gnu-pc hashes:

Toggle quote (20 lines)
> diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
> index c4640b62e1..eb6a4f1917 100644
> --- a/gnu/packages/bootstrap.scm
> +++ b/gnu/packages/bootstrap.scm
> @@ -118,13 +118,22 @@ (define %bootstrap-executables
> ,(base32 "0i9kxdi17bm5gxfi2xzm0y73p3ii0cqxli1sbljm6rh2fjgyn90k")))
> ("i586-gnu"
> ("bash"
> - ,(base32 "1as8649aqaibahhhrvkj10ci8shpi4hq5n7gnik8rhhy0dc1jarg"))
> + ,(base32 "0nb8ga2j7a4kf6j7pnavq8zf68mj8mhqh26nwkilz1ykj86vg9ml"))
> ("mkdir"
> - ,(base32 "1snqgpfrl00hfn82lm29jqylzjsfb9jd6ha74dp12phwb8fpbmb9"))
> + ,(base32 "0ldsx9pwan40fx2hf4s9d10sfkhvkljvl20hksvm4192p7jb4shp"))
> ("tar"
> - ,(base32 "0nq2c1zb3wv5bf7kd83sziaashydazrn7xgq6kijlk0zj2syzc2m"))
> + ,(base32 "1z6kfvpwhy14vc52i61v1vzzk3gzxka3db5rlg1jsq6kli35s2ab"))
> ("xz"
> - ,(base32 "033rhpk6zrpxpd6ffjyg5y2zwq9x9cnq0zljb7k8jlncbalsayq5")))
> + ,(base32 "1f7g40sk5a6k6qf65k58vlybnnmhyyzczdxy60m3jgcsp674wfcr")))

and did not use "-r" in guix hash -r (I thought that meant "recursive"):

Toggle quote (9 lines)
> + ("x86_64-gnu"
> + ("bash"
> + ,(base32 "0l0dnighcipvdfbk14q834n57q859i2b9ssiq4bnbh0jpxvvqp1l"))
> + ("mkdir"
> + ,(base32 "1nd17k8pwwi7zsqi685w4rn1p2cvfcalrzdhfgwpsk1ilxnmdvsq"))
> + ("tar"
> + ,(base32 "0lf94y22ngmxdwhsp0cvj33m23p33r999xnlrff0s1yvlf20w3ks"))
> + ("xz"
> + ,(base32 "145aq65rx7w0qk1sw9239888id5ri60ha0xp1kyp6ir3pvizh6by")))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
M
M
Maxim Cournoyer wrote on 12 Nov 02:17 +0100
Re: [PATCH 00/31] Add support for x86_64-gnu, aka the 64bit Hurd.
(address . janneke@gnu.org)
87bjyl8d3o.fsf@gmail.com
Hi Janneke!

<janneke@gnu.org> writes:

Toggle quote (6 lines)
> 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.

--
Thanks,
Maxim
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 00/40] Add support for x86_64-gnu, aka the 64bit Hurd.
(address . 74290@debbugs.gnu.org)(name . Janneke Nieuwenhuizen)(address . janneke@gnu.org)
cover.1731427612.git.janneke@gnu.org
From: "Janneke Nieuwenhuizen" <janneke@gnu.org>

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:

Toggle snippet (53 lines)
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#

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 <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 01/40] gnu: gnumach: Update to v1.8+git20240714.
(address . 74290@debbugs.gnu.org)
c09a7ad59dac41aa45774f899a36aea4670604d7.1731427612.git.janneke@gnu.org
* gnu/packages/patches/gnumach-version.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/hurd.scm (gnumach-headers): Update to v1.8+git20240714 and use
it.
* gnu/packages/commencement.scm (gnumach-headers-boot0)[origin]: Reset
patches.

Change-Id: I147c64021c2ee79dfc4cd4fd9a29529eef8890c5
---
gnu/local.mk | 1 +
gnu/packages/commencement.scm | 1 +
gnu/packages/hurd.scm | 9 ++++-----
gnu/packages/patches/gnumach-version.patch | 23 ++++++++++++++++++++++
4 files changed, 29 insertions(+), 5 deletions(-)
create mode 100644 gnu/packages/patches/gnumach-version.patch

Toggle diff (86 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 1f48fddc9e..2bd857e7ac 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1460,6 +1460,7 @@ dist_patch_DATA = \
%D%/packages/patches/gnome-session-support-elogind.patch \
%D%/packages/patches/gnome-tweaks-search-paths.patch \
%D%/packages/patches/gnulib-bootstrap.patch \
+ %D%/packages/patches/gnumach-version.patch \
%D%/packages/patches/gnupg-default-pinentry.patch \
%D%/packages/patches/gnupg-1-build-with-gcc10.patch \
%D%/packages/patches/gnutls-skip-trust-store-test.patch \
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index ce40f0cea6..1cfaaae1e7 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2639,6 +2639,7 @@ (define gnumach-headers-boot0
(source
(origin
(inherit (package-source gnumach-headers))
+ (patches '())
(method
(git-fetch-from-tarball
(origin
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 9c1681f236..a22d0cadce 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -57,21 +57,20 @@ (define (hurd-source-url version)
version ".tar.gz"))
(define-public gnumach-headers
- (let ((revision "0")
- (commit "2556fdece900d67529d5eda01f1bdaae4ffe96b0"))
+ (let ((commit "v1.8+git20240714"))
(package
(name "gnumach-headers")
- (version (git-version "1.8" revision commit))
+ (version (string-drop commit 1))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://git.savannah.gnu.org/git/hurd/gnumach.git")
(commit commit)))
+ (patches (search-patches "gnumach-version.patch"))
(file-name (git-file-name "gnumach" version))
(sha256
- (base32
- "1lzsbix0l4jhab38pvwnmk7ip1lsn7m5smhnrciqajsqnadsnlzs"))))
+ (base32 "0ykav1kx0bgxcxw04bpcsh5s4531fzdkahjgrlsfs2h3w3vfkga0"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/patches/gnumach-version.patch b/gnu/packages/patches/gnumach-version.patch
new file mode 100644
index 0000000000..aec3c86a16
--- /dev/null
+++ b/gnu/packages/patches/gnumach-version.patch
@@ -0,0 +1,23 @@
+Upstream-status: Taken from Debian upstream:
+ <https://salsa.debian.org/hurd-team/gnumach/-/raw/master/debian/patches/12_version_suffix.patch>
+
+Index: gnumach/configure.ac
+===================================================================
+--- gnumach.orig/configure.ac
++++ gnumach/configure.ac
+@@ -19,6 +19,7 @@ AC_PREREQ([2.57])
+ m4_include([version.m4])
+ AC_INIT([AC_PACKAGE_NAME], [AC_PACKAGE_VERSION], [AC_PACKAGE_BUGREPORT],
+ [AC_PACKAGE_TARNAME])
++AC_SUBST([PACKAGE_VERSION_SUFFIX])
+ AC_CONFIG_SRCDIR([kern/ipc_kobject.c])
+
+ if test -z "${CFLAGS+set}"; then
+Index: gnumach/version.c.in
+===================================================================
+--- gnumach.orig/version.c.in
++++ gnumach/version.c.in
+@@ -1,2 +1,2 @@
+ /* @configure_input@ */
+-const char version[] = "@PACKAGE_NAME@ @PACKAGE_VERSION@";
++const char version[] = "@PACKAGE_NAME@ @PACKAGE_VERSION@@PACKAGE_VERSION_SUFFIX@";
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 02/40] gnu: mig: Update to 1.8+git20231217.
(address . 74290@debbugs.gnu.org)
216c0ef048600378b213add34715705e2c728363.1731427612.git.janneke@gnu.org
* gnu/packages/hurd.scm (mig): Update to 1.8+git20231217.

Change-Id: I0e531ecc7fdcfbefe2e0e24d7b2fb5e0fe8a3ae2
---
gnu/packages/hurd.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (25 lines)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index a22d0cadce..28f39cc448 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -92,7 +92,7 @@ (define-public gnumach-headers
(define-public mig
(package
(name "mig")
- (version "1.8+git20230520")
+ (version "1.8+git20231217")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -101,7 +101,7 @@ (define-public mig
(file-name (git-file-name name version))
(sha256
(base32
- "10r0fdjqjzqsy6ajb21rifvhw0wpjvrw6a1zdyliqlzqny5k0qlz"))))
+ "1mx7w5vzw5ws0zplm1y6s679jb1g2hjkiwl3dlk5lxys0dxs5g4g"))))
(build-system gnu-build-system)
;; Flex is needed both at build and run time.
(inputs (list gnumach-headers flex))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 03/40] gnu: hurd: Update to 0.9.git20240714.
(address . 74290@debbugs.gnu.org)
e25fb866b24f42a2470284125860b8dd2e1d6cd4.1731427612.git.janneke@gnu.org
* gnu/packages/hurd.scm (hurd-headers): Update to 0.9.git20240714.
(hurd)[arguments]: Remove rumpdisk build hack from "prepare-addons" stage.
Instead, when cross-compiling, add stage "fixup-cross-configure" to enable
rumpdisk.
* gnu/system.scm (hurd-multiboot-modules): Remove
"--x-xattr-translator-records" option that has been removed and is now the
default.

Change-Id: I4609b5a959c1ece98e2fe1aedbb1d31d6edadcca
---
gnu/packages/hurd.scm | 12 +++++++++---
gnu/system.scm | 1 -
2 files changed, 9 insertions(+), 4 deletions(-)

Toggle diff (59 lines)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 28f39cc448..06fae1bd3b 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -132,7 +132,7 @@ (define-public mig
(define-public hurd-headers
(let ((revision "3")
- (commit "v0.9.git20231217"))
+ (commit "v0.9.git20240714"))
(package
(name "hurd-headers")
(version (string-drop commit 1))
@@ -143,7 +143,7 @@ (define-public hurd-headers
(commit commit)))
(sha256
(base32
- "1d138kzhil6s5gf9di8grpz1iziakyfv037wkc8s7qyd61imm31d"))
+ "0wvzil3llmrjg7ymwqs86d11bm5fl771jwncv7kk679lsvqca0ll"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(native-inputs
@@ -336,7 +336,7 @@ (define-public hurd
;; Makefile. libdde_linux26 is built later in its own phase.
(substitute* "Makefile"
(("libbpf ")
- "libbpf libmachdevdde libddekit rumpdisk"))))
+ "libbpf libmachdevdde libddekit "))))
(add-after 'unpack 'find-tirpc
(lambda* (#:key inputs #:allow-other-keys)
(for-each (lambda (var)
@@ -362,6 +362,12 @@ (define-public hurd
(("#include <rpc/pmap_prot.h>" m)
(string-append "#include <rpc/types.h>\n#include <rpc/xdr.h>\n" m)))
#t))
+ ,@(if (%current-target-system)
+ '((add-after 'configure 'fixup-cross-configure
+ (lambda _
+ (substitute* "config.make"
+ (("HAVE_LIBRUMP = no") "HAVE_LIBRUMP = yes")))))
+ '())
(add-before 'build 'pre-build
(lambda _
;; Don't change the ownership of any file at this time.
diff --git a/gnu/system.scm b/gnu/system.scm
index 074cd04a0e..dfcb8fb279 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -1539,7 +1539,6 @@ (define (hurd-multiboot-modules os)
"--multiboot-command-line='${kernel-command-line}'"
"--exec-server-task='${exec-task}'"
"--store-type=typed"
- "--x-xattr-translator-records"
"'${root}'"
"'$(fs-task=task-create)'"))
(target (%current-target-system))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 05/40] gnu: Add basic support for x86_64-pc-gnu target, aka 64bit Hurd.
(address . 74290@debbugs.gnu.org)
99a9152dc069538a151504d65b85fd5105149a51.1731427612.git.janneke@gnu.org
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Update comment on where
to find shared linker name.
(make-raw-bag): Also use raw-build-guile3 when building for the 64bit Hurd.
* guix/platforms/x86.scm (x86_64-gnu): New exported variable.
* guix/utils.scm (target-hurd64? system-hurd64?): New procedures.
* gnu/packages/gcc.scm: (current-gcc): Use target-hurd64? in new procedure to
select gcc-14 on 64bit Hurd.
(libstdc++): Change to procedure.
(libstdc++-headers): Update accordingly.
* gnu/packages/commencement.scm (current-gcc-toolchain): Likewise, to select
gcc-toolchain-14 on 64bit Hurd.
* gnu/packages/cross-base.scm (%xgcc): Use current-gcc.
(cross-kernel-headers*): Use target-hurd? instead of custom "i586..."
matching to also use xhurd-core-headers for target-hurd64.
* gnu/packages/make-bootstrap.scm (package-with-relocatable-glibc):
Capture (current-gcc) before resetting %current-target-system.
[native-inputs]: Move final-inputs before cross-packages.
(%glibc-stripped): Likewise.
(%gcc-static): Change to procedure.
(%gcc-stripped): Likewise, update accordingly.
(%gcc-bootstrap-tarball): Likewise, update accordingly.
(make-guile-static)[arguments]: When building for the 64bit Hurd, add
"lt_cv_prog_compiler_static_works=yes" to #:configure-flags to convince
libtool to actually link guile statically.
(%binutils-static)[arguments]: When building for the 64bit Hurd, add
"lt_cv_prog_compiler_static_works=yes", "lt_cv_prog_compiler_static_works_CXX=yes"
to #:make-flags to convince to actually link the binaries statically.
* gnu/ci.scm (%core-packages): Update accordingly.
* gnu/packages/patches/gcc-14-cross-without-bootstrap.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/cross-base.scm (cross-gcc)[origin]: Use it when
cross-building gcc >= 14.

Change-Id: I4ae189e7e5188ced91744b89fe9d753b6a1fca78
---
gnu/ci.scm | 4 +--
gnu/packages/bootstrap.scm | 3 +-
gnu/packages/commencement.scm | 6 ++--
gnu/packages/cross-base.scm | 6 ++--
gnu/packages/gcc.scm | 32 ++++++++++---------
gnu/packages/make-bootstrap.scm | 56 ++++++++++++++++++++++-----------
guix/platforms/x86.scm | 11 ++++++-
guix/utils.scm | 15 ++++++++-
8 files changed, 90 insertions(+), 43 deletions(-)

Toggle diff (369 lines)
diff --git a/gnu/ci.scm b/gnu/ci.scm
index 4e282d197f..e7e839d968 100644
--- a/gnu/ci.scm
+++ b/gnu/ci.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012-2024 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2017, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2017, 2020, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020, 2021 Mathieu Othacehe <othacehe@gnu.org>
@@ -146,7 +146,7 @@ (define %core-packages
%bootstrap-binaries-tarball
%binutils-bootstrap-tarball
(%glibc-bootstrap-tarball)
- %gcc-bootstrap-tarball
+ (%gcc-bootstrap-tarball)
%guile-bootstrap-tarball
%bootstrap-tarballs))
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index c4640b62e1..234d001fc1 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -558,7 +558,8 @@ (define* (make-raw-bag name
(name name)
(system system)
(build-inputs inputs)
- (build (cond ((target-riscv64?)
+ (build (cond ((or (target-riscv64?)
+ (target-hurd64?))
raw-build-guile3)
(else raw-build)))))
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 70641267a8..a000cbfdc5 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3643,10 +3643,12 @@ (define-public gcc-toolchain-14
;; The default GCC
(define (current-gcc-toolchain)
"The current default gcc-toolchain version."
- gcc-toolchain-11)
+ (if (target-hurd64?)
+ gcc-toolchain-14
+ gcc-toolchain-11))
(define-public gcc-toolchain
- (deprecated-package "gcc-toolchain" gcc-toolchain-11))
+ (deprecated-package "gcc-toolchain" (current-gcc-toolchain)))
(define-public gcc-toolchain-aka-gcc
;; It's natural for users to try "guix install gcc". This package
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 9c701efae8..7b32a6b64e 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -641,9 +641,9 @@ (define* (cross-kernel-headers* target
("hurd-headers" ,xhurd-headers)
("hurd-minimal" ,xhurd-minimal)))))
- (match target
- ((or "i586-pc-gnu" "i586-gnu") xhurd-core-headers)
- (_ xlinux-headers)))
+ (if (target-hurd? target)
+ xhurd-core-headers
+ xlinux-headers))
(define* (cross-libc . args)
(if (or (= (length args) 1) (contains-keyword? args))
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 3b5d05b9a9..fc3746fb05 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -861,10 +861,12 @@ (define-public gcc-14
;; the gcc-toolchain-* definitions.
(define (current-gcc)
"The current default gcc version."
- gcc-11)
+ (if (target-hurd64?)
+ gcc-14
+ gcc-11))
(define-public gcc
- (deprecated-package "gcc" gcc-11))
+ (deprecated-package "gcc" (current-gcc)))
;;;
@@ -903,15 +905,15 @@ (define-public gcc-2.95
(outputs '("out"))
(arguments
(let ((matching-system
- (match (%current-system)
- ;; This package predates our 64-bit architectures.
- ;; Force a 32-bit build targeting a similar architecture.
- ("aarch64-linux"
- "armhf-linux")
- ("x86_64-linux"
- "i686-linux")
- (_
- (%current-system)))))
+ (match (%current-system)
+ ;; This package predates our 64-bit architectures.
+ ;; Force a 32-bit build targeting a similar architecture.
+ ("aarch64-linux"
+ "armhf-linux")
+ ("x86_64-linux"
+ "i686-linux")
+ (_
+ (%current-system)))))
(list #:system matching-system
#:configure-flags #~'("--disable-werror")
@@ -1050,8 +1052,8 @@ (define-public (make-libstdc++ gcc)
(propagated-inputs '())
(synopsis "GNU C++ standard library")))
-(define libstdc++
- ;; Libstdc++ matching the default GCC.
+(define (current-libstdc++)
+ ;; Libstdc++ matching the CURRENT-GCC.
(make-libstdc++ (current-gcc)))
(define libstdc++-headers
@@ -1061,7 +1063,7 @@ (define libstdc++-headers
;; is right under include/c++ and not under
;; include/c++/x86_64-unknown-linux-gnu (aka. GPLUSPLUS_TOOL_INCLUDE_DIR).
(package
- (inherit libstdc++)
+ (inherit (current-libstdc++))
(name "libstdc++-headers")
(outputs '("out"))
(build-system trivial-build-system)
@@ -1072,7 +1074,7 @@ (define libstdc++-headers
(mkdir (string-append out "/include"))
(symlink (string-append libstdc++ "/include")
(string-append out "/include/c++")))))
- (inputs `(("libstdc++" ,libstdc++)))
+ (inputs `(("libstdc++" ,(current-libstdc++))))
(synopsis "Headers of GNU libstdc++")))
(define-public libstdc++-4.9
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index c6293b9a38..f4165178fe 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -124,8 +124,11 @@ (define (package-with-relocatable-glibc p)
(glibc-for-bootstrap
;; `cross-libc' already returns a cross libc, so clear
;; %CURRENT-TARGET-SYSTEM.
- (parameterize ((%current-target-system #f))
- (cross-libc target))))
+ (let ((xgcc (cross-gcc target #:xgcc (current-gcc))))
+ (parameterize ((%current-target-system #f))
+ (cross-libc target #:xgcc xgcc
+ #:xheaders (cross-kernel-headers
+ target #:xgcc xgcc))))))
;; Standard inputs with the above libc and corresponding GCC.
@@ -145,7 +148,10 @@ (define (package-with-relocatable-glibc p)
target
#:xbinutils (cross-binutils target)
#:libc (cross-bootstrap-libc target))))
- `(("cross-gcc" ,(package
+ `(,@(%final-inputs)
+ ;; As versions for gcc and cross-gcc can differ, make sure to have
+ ;; cross-gcc behind gcc in CPLUS_INCLUDE_PATH.
+ ("cross-gcc" ,(package
(inherit xgcc)
(search-paths
;; Ensure the cross libc headers appears on the
@@ -154,8 +160,7 @@ (define (package-with-relocatable-glibc p)
(variable "CROSS_CPLUS_INCLUDE_PATH")
(files '("include")))
(package-search-paths (current-gcc))))))
- ("cross-binutils" ,(cross-binutils target))
- ,@(%final-inputs)))
+ ("cross-binutils" ,(cross-binutils target))))
`(("libc" ,(glibc-for-bootstrap glibc))
("libc:static" ,(glibc-for-bootstrap glibc) "static")
("gcc" ,(gcc-for-bootstrap glibc))
@@ -395,10 +400,15 @@ (define %binutils-static
((#:configure-flags flags _ ...)
flags)))
#:make-flags
- (match (memq #:make-flags (package-arguments binutils))
- ((#:make-flags flags _ ...)
- flags)
- (_ #~'()))
+ #~(append
+ #$(if (target-hurd64?)
+ #~'("lt_cv_prog_compiler_static_works=yes"
+ "lt_cv_prog_compiler_static_works_CXX=yes")
+ #~'())
+ #$(match (memq #:make-flags (package-arguments binutils))
+ ((#:make-flags flags _ ...)
+ flags)
+ (_ #~'())))
#:strip-flags #~'("--strip-all")
#:phases
#~(modify-phases %standard-phases
@@ -446,7 +456,8 @@ (define (%glibc-stripped)
;; GNU libc's essential shared libraries, dynamic linker, and headers,
;; with all references to store directories stripped. As a result,
;; libc.so is unusable and need to be patched for proper relocation.
- (let ((glibc (glibc-for-bootstrap glibc)))
+ (let ((glibc (glibc-for-bootstrap glibc))
+ (gcc (current-gcc)))
(package (inherit glibc)
(name "glibc-stripped")
(build-system trivial-build-system)
@@ -463,8 +474,13 @@ (define (%glibc-stripped)
`(("libc" ,(let ((target (%current-target-system)))
(if target
(glibc-for-bootstrap
- (parameterize ((%current-target-system #f))
- (cross-libc target)))
+ (let* ((xgcc (cross-gcc target #:xgcc gcc))
+ (xheaders (cross-kernel-headers target
+ #:xgcc xgcc)))
+ (parameterize ((%current-target-system #f))
+ (cross-libc target
+ #:xgcc xgcc
+ #:xheaders xheaders))))
glibc)))))
(inputs
`(("kernel-headers"
@@ -478,11 +494,12 @@ (define (%glibc-stripped)
;; Only one output.
(outputs '("out")))))
-(define %gcc-static
+(define (%gcc-static)
;; A statically-linked GCC, with stripped-down functionality.
(package-with-relocatable-glibc
(package (inherit (current-gcc))
(name "gcc-static")
+ (source (package-source (current-gcc)))
(outputs '("out")) ; all in one
(arguments
(substitute-keyword-arguments (package-arguments (current-gcc))
@@ -552,7 +569,7 @@ (define %gcc-static
,@(package-native-inputs (current-gcc)))
(package-native-inputs (current-gcc)))))))
-(define %gcc-stripped
+(define (%gcc-stripped)
;; The subset of GCC files needed for bootstrap.
(package
(inherit (current-gcc))
@@ -575,7 +592,7 @@ (define %gcc-stripped
(libdir (string-append out "/lib"))
(includedir (string-append out "/include"))
(libexecdir (string-append out "/libexec"))
- (gcc #$%gcc-static))
+ (gcc #$(%gcc-static)))
(copy-recursively (string-append gcc "/bin") bindir)
(for-each remove-store-references
(find-files bindir ".*"))
@@ -642,6 +659,9 @@ (define* (make-guile-static guile patches)
#$@(if (target-hurd?)
#~("--disable-jit")
+ #~())
+ #$@(if (target-hurd64?)
+ #~("lt_cv_prog_compiler_static_works=yes")
#~())))
((#:phases phases '%standard-phases)
#~(modify-phases #$phases
@@ -813,9 +833,9 @@ (define (%glibc-bootstrap-tarball)
;; A tarball with GNU libc's shared libraries, dynamic linker, and headers.
(tarball-package (%glibc-stripped)))
-(define %gcc-bootstrap-tarball
+(define (%gcc-bootstrap-tarball)
;; A tarball with a dynamic-linked GCC and its headers.
- (tarball-package %gcc-stripped))
+ (tarball-package (%gcc-stripped)))
(define %guile-bootstrap-tarball
;; A tarball with the statically-linked, relocatable Guile.
@@ -856,7 +876,7 @@ (define %bootstrap-tarballs
((or "i686-linux" "x86_64-linux")
(list %linux-libre-headers-bootstrap-tarball))
(_
- (list %gcc-bootstrap-tarball
+ (list (%gcc-bootstrap-tarball)
%binutils-bootstrap-tarball
(%glibc-bootstrap-tarball)
%bootstrap-binaries-tarball)))))
diff --git a/guix/platforms/x86.scm b/guix/platforms/x86.scm
index 0c8fc7296c..5617e6dd68 100644
--- a/guix/platforms/x86.scm
+++ b/guix/platforms/x86.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
;;; Copyright © 2023, 2024 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -25,7 +26,8 @@ (define-module (guix platforms x86)
x86_64-linux-x32
i686-mingw
x86_64-mingw
- i586-gnu))
+ i586-gnu
+ x86_64-gnu))
(define i686-linux
(platform
@@ -71,3 +73,10 @@ (define i586-gnu
(system "i586-gnu")
(rust-target "i686-unknown-hurd-gnu")
(glibc-dynamic-linker "/lib/ld.so.1")))
+
+(define x86_64-gnu
+ (platform
+ (target "x86_64-pc-gnu")
+ (system "x86_64-gnu")
+ (rust-target "x86_64-unknown-hurd-gnu")
+ (glibc-dynamic-linker "/lib/ld-x86-64.so.1")))
diff --git a/guix/utils.scm b/guix/utils.scm
index f161cb4ef3..e100c03365 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -17,7 +17,7 @@
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2022 Antero Mejr <antero@mailbox.org>
;;; Copyright © 2023 Philip McGrath <philip@philipmcgrath.com>
-;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
;;; Copyright © 2024 Herman Rimm <herman@rimm.ee>
@@ -94,6 +94,8 @@ (define-module (guix utils)
target-linux?
target-hurd?
system-hurd?
+ target-hurd64?
+ system-hurd64?
target-mingw?
target-x86-32?
target-x86-64?
@@ -716,6 +718,17 @@ (define* (system-hurd?)
"Is the current system the GNU(/Hurd) system?"
(and=> (%current-system) target-hurd?))
+(define* (target-hurd64? #:optional (target (or (%current-target-system)
+ (%current-system))))
+ "Does TARGET represent the 64bit GNU(/Hurd) system?"
+ (and (target-hurd?)
+ (target-64bit? target)))
+
+(define* (system-hurd64?)
+ "Is the current system the 64bit GNU(/Hurd) system?"
+ (and (system-hurd?)
+ (target-64bit? (%current-system))))
+
(define* (target-mingw? #:optional (target (%current-target-system)))
"Is the operating system of TARGET Windows?"
(and target
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 04/40] gnu: gcc: Add indirections current-gcc, current-gcc-toolchain.
(address . 74290@debbugs.gnu.org)
e43ac3adb6a1de703ebc8b02f9aa0b40be92ec24.1731427612.git.janneke@gnu.org
Throughout: use (current-gcc) and (current-gcc-toolchain) instead of gcc and
gcc-toolchain.

* gnu/packages/gcc.scm (current-gcc): New procedure.
(gcc): Deprecate.
* gnu/packages/commencement.scm (current-gcc-toolchain): New procedure.
(gcc-toolchain): Deprecate.

Change-Id: I538897e53e2c9956abdc53c67621bb52cbd78a50
---
gnu/packages/avr.scm | 7 ++++---
gnu/packages/benchmark.scm | 6 ++++--
gnu/packages/bootloaders.scm | 2 +-
gnu/packages/bootstrap.scm | 4 ++--
gnu/packages/c.scm | 4 ++--
gnu/packages/chicken.scm | 7 ++++---
gnu/packages/commencement.scm | 33 +++++++++++++++++++--------------
gnu/packages/containers.scm | 5 +++--
gnu/packages/cross-base.scm | 4 ++--
gnu/packages/dlang.scm | 3 ++-
gnu/packages/engineering.scm | 4 ++--
gnu/packages/gawk.scm | 3 ++-
gnu/packages/gcc.scm | 21 ++++++++++++++-------
gnu/packages/golang.scm | 3 ++-
gnu/packages/julia-xyz.scm | 3 ++-
gnu/packages/lisp.scm | 3 ++-
gnu/packages/llvm.scm | 7 ++++---
gnu/packages/make-bootstrap.scm | 20 ++++++++++----------
gnu/packages/mpi.scm | 3 ++-
gnu/packages/parallel.scm | 5 +++--
gnu/packages/rocm.scm | 3 ++-
21 files changed, 88 insertions(+), 62 deletions(-)

Toggle diff (443 lines)
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index 6042c1bd55..00dc124aa9 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -53,7 +54,7 @@ (define make-avr-binutils
(inherit (cross-binutils "avr"))
(name "avr-binutils"))))
-(define* (make-avr-gcc/implementation #:key (xgcc gcc))
+(define* (make-avr-gcc/implementation #:key (xgcc (current-gcc)))
"Return a XGCC-base cross-compiler for the AVR target."
(let ((xgcc (cross-gcc "avr" #:xgcc xgcc #:xbinutils (make-avr-binutils))))
(package
@@ -96,7 +97,7 @@ (define* (make-avr-gcc/implementation #:key (xgcc gcc))
(variable "CROSS_LIBRARY_PATH")
(files '("avr/lib")))))
(native-inputs
- `(("gcc" ,gcc)
+ `(("gcc" ,(current-gcc))
,@(package-native-inputs xgcc))))))
(define make-avr-gcc
@@ -136,7 +137,7 @@ (define* (make-avr-libc/implementation #:key
(define make-avr-libc
(memoize make-avr-libc/implementation))
-(define* (make-avr-toolchain/implementation #:key (xgcc gcc))
+(define* (make-avr-toolchain/implementation #:key (xgcc (current-gcc)))
(let ((avr-binutils (make-avr-binutils))
(avr-libc (make-avr-libc #:xgcc (cross-gcc "avr" #:xgcc xgcc)))
(avr-gcc (make-avr-gcc #:xgcc xgcc)))
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index 326bbc99b4..c802e105ed 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -13,6 +13,7 @@
;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -75,8 +76,8 @@ (define-module (gnu packages benchmark)
;; Lazily resolve the gcc-toolchain to avoid a circular dependency.
(define gcc-toolchain*
- (delay (module-ref (resolve-interface '(gnu packages commencement))
- 'gcc-toolchain)))
+ (delay ((module-ref (resolve-interface '(gnu packages commencement))
+ 'current-gcc-toolchain))))
(define-public fio
(package
@@ -379,6 +380,7 @@ (define-public phoronix-test-suite
(list bash
coreutils
(force gcc-toolchain*)
+ gcc-toolchain*
gnu-make
gzip
php
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 52a077ecea..e188553910 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1710,7 +1710,7 @@ (define u-boot-ts-mx6
(add-before 'build 'adjust-for-current-gcc
(lambda _
(let ((gcc-major-version #$(version-major
- (package-version gcc))))
+ (package-version (current-gcc)))))
(copy-file "include/linux/compiler-gcc6.h"
(string-append "include/linux/compiler-gcc"
gcc-major-version ".h")))
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index 3743abf9fe..c4640b62e1 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2012-2020, 2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2018, 2019 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017, 2020, 2024 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018, 2020, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018, 2020, 2022, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2019 Carl Dong <contact@carldong.me>
;;; Copyright © 2019 Léo Le Bouter <lle-bout@zaclys.net>
;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
@@ -311,7 +311,7 @@ (define* (glibc-dynamic-linker
gnu-triplet->nix-system)
(%current-system))))
"Return the name of Glibc's dynamic linker for SYSTEM."
- ;; See the 'SYSDEP_KNOWN_INTERPRETER_NAMES' cpp macro in libc.
+ ;; See the appropriate 'shlib-versions' file in libc.
(let ((platform (false-if-platform-not-found
(lookup-platform-by-system system))))
(cond
diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm
index 13fdb99424..f52a7c603e 100644
--- a/gnu/packages/c.scm
+++ b/gnu/packages/c.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2019, 2020, 2022-2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019, 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
;;; Copyright © 2020, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -178,7 +178,7 @@ (define-public cproc
(string-append "--with-ld=" #$(ld-for-target))
(string-append "--with-gcc-libdir=" gcc-lib))))))))
(inputs `(("qbe" ,qbe)
- ("gcc:lib" ,gcc "lib")))
+ ("gcc:lib" ,(current-gcc) "lib")))
(supported-systems (list "x86_64-linux" "aarch64-linux"))
(synopsis "Simple C11 compiler backed by QBE")
(description "@code{cproc} is a C compiler using QBE as a backend,
diff --git a/gnu/packages/chicken.scm b/gnu/packages/chicken.scm
index a499c5d9ee..02674577ed 100644
--- a/gnu/packages/chicken.scm
+++ b/gnu/packages/chicken.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2020 Evan Hanson <evhan@foldling.org>
;;; Copyright © 2020 raingloom <raingloom@riseup.net>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -69,9 +70,9 @@ (define-public chicken
(files (list "var/lib/chicken/11")))))
;; Reference gcc-toolchain lazily to avoid circular module dependency
;; problems.
- (propagated-inputs (list (module-ref (resolve-interface
- '(gnu packages commencement))
- 'gcc-toolchain)))
+ (propagated-inputs (list ((module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'current-gcc-toolchain))))
(home-page "https://www.call-cc.org/")
(synopsis "R5RS Scheme implementation that compiles native code via C")
(description
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 1cfaaae1e7..70641267a8 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -73,7 +73,8 @@ (define-module (gnu packages commencement)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 vlist)
- #:use-module (ice-9 match))
+ #:use-module (ice-9 match)
+ #:export (current-gcc-toolchain))
;;; Commentary:
;;;
@@ -908,7 +909,7 @@ (define gcc-core-mesboot0
;; with gcc-2.95.3, binutils (2.14.0, 2.20.1a) and glibc-2.2.5 we found a
;; GNU toolchain triplet "that works".
(package
- (inherit gcc)
+ (inherit (current-gcc))
(name "gcc-core-mesboot0")
(version "2.95.3")
(source (origin
@@ -2319,19 +2320,19 @@ (define libstdc++-boot0-gcc7
(define gcc-boot0
(package
- (inherit gcc)
+ (inherit (current-gcc))
(name "gcc-cross-boot0")
- (outputs (delete "debug" (package-outputs gcc)))
+ (outputs (delete "debug" (package-outputs (current-gcc))))
(source
(bootstrap-origin
(origin
- (inherit (package-source gcc))
+ (inherit (package-source (current-gcc)))
(snippet
#~(begin
;; XXX: The GCC test suite contains files with non-ASCII file
;; names, which cannot be repacked by BOOTSTRAP-ORIGIN. Nor
;; can it be deleted from Guile, so resort to this evil hack.
- #$(origin-snippet (package-source gcc))
+ #$(origin-snippet (package-source (current-gcc)))
(system* #$(file-append (let-system system
;; 'coreutils-boot0' is Linux-only.
(if (target-hurd? system)
@@ -2348,7 +2349,7 @@ (define gcc-boot0
(ice-9 regex)
(srfi srfi-1)
(srfi srfi-26))
- (substitute-keyword-arguments (package-arguments gcc)
+ (substitute-keyword-arguments (package-arguments (current-gcc))
((#:configure-flags flags)
#~(append (list #$(string-append "--target=" (boot-triplet))
@@ -2436,7 +2437,7 @@ (define gcc-boot0
(with-directory-excursion
(string-append out "/lib/gcc/"
#$(boot-triplet)
- "/" #$(package-version gcc))
+ "/" #$(package-version (current-gcc)))
(symlink "libgcc.a" "libgcc_eh.a"))))))))))
(inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp-6.0)))
@@ -2952,7 +2953,7 @@ (define/system-dependent glibc-final-with-bootstrap-bash
(define (cross-gcc-wrapper gcc binutils glibc bash)
"Return a wrapper for the pseudo-cross toolchain GCC/BINUTILS/GLIBC
that makes it available under the native tool names."
- (package (inherit gcc)
+ (package (inherit (current-gcc))
(name (string-append (package-name gcc) "-wrapped"))
(source #f)
(build-system trivial-build-system)
@@ -3219,7 +3220,7 @@ (define gcc-final
(srfi srfi-26)
,@%default-gnu-modules)
- (substitute-keyword-arguments (package-arguments gcc)
+ (substitute-keyword-arguments (package-arguments (current-gcc))
((#:make-flags flags)
;; Since $LIBRARY_PATH is not honored, add the relevant flags.
#~(let ((zlib (assoc-ref %build-inputs "zlib")))
@@ -3542,8 +3543,8 @@ (define* (make-gcc-toolchain gcc
(let ((gcc (if libc (make-gcc-libc gcc libc) gcc))
(libc (if libc libc glibc-final)))
(package
- (name (string-append (package-name gcc) "-toolchain"))
- (version (package-version gcc))
+ (name (string-append (package-name (current-gcc)) "-toolchain"))
+ (version (package-version (current-gcc)))
(source #f)
(build-system trivial-build-system)
(arguments
@@ -3640,13 +3641,17 @@ (define-public gcc-toolchain-14
(make-gcc-toolchain gcc-14))
;; The default GCC
-(define-public gcc-toolchain
+(define (current-gcc-toolchain)
+ "The current default gcc-toolchain version."
gcc-toolchain-11)
+(define-public gcc-toolchain
+ (deprecated-package "gcc-toolchain" gcc-toolchain-11))
+
(define-public gcc-toolchain-aka-gcc
;; It's natural for users to try "guix install gcc". This package
;; automatically "redirects" them to 'gcc-toolchain'.
- (deprecated-package "gcc" gcc-toolchain))
+ (deprecated-package "gcc" (current-gcc-toolchain)))
(define-public gdc-toolchain-10
diff --git a/gnu/packages/containers.scm b/gnu/packages/containers.scm
index adae2f5bfc..80b9c6e03d 100644
--- a/gnu/packages/containers.scm
+++ b/gnu/packages/containers.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz>
;;; Copyright © 2024 Foundation Devices, Inc. <hello@foundation.xyz>
;;; Copyright © 2024 Jean-Pierre De Jesus DIAZ <jean@foundation.xyz>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -533,7 +534,7 @@ (define-public podman
(,(string-append #$catatonit "/bin")
,(string-append #$conmon "/bin")
,(string-append #$crun "/bin")
- ,(string-append #$gcc "/bin") ; cpp
+ ,(string-append #$(current-gcc) "/bin") ; cpp
,(string-append #$iptables "/sbin")
,(string-append #$passt "/bin")
,(string-append #$procps "/bin") ; ps
@@ -667,7 +668,7 @@ (define-public buildah
(,(string-append #$output "/_guix")))
`("PATH" suffix
(,(string-append #$crun "/bin")
- ,(string-append #$gcc "/bin") ; cpp
+ ,(string-append #$(current-gcc) "/bin") ; cpp
,(string-append #$passt "/bin")
"/run/privileged/bin")))))
(add-after 'install 'install-completions
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index cecc21083e..9c701efae8 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013-2018, 2020, 2023-2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016, 2019, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2019, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
@@ -61,7 +61,7 @@ (define-syntax %xgcc
;;
;; Note: This is a macro so that we do not refer to 'gcc' from the top
;; level, which would lead to circular-dependency issues.
- (identifier-syntax gcc))
+ (identifier-syntax (current-gcc)))
(define %gcc-include-paths
;; Environment variables for header search paths.
diff --git a/gnu/packages/dlang.scm b/gnu/packages/dlang.scm
index 8bf0ee685e..654d5b2281 100644
--- a/gnu/packages/dlang.scm
+++ b/gnu/packages/dlang.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2021, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2022 Esther Flashner <esther@flashner.co.il>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -426,7 +427,7 @@ (define dmd-bootstrap
(build-system gnu-build-system)
(arguments
(list
- #:disallowed-references (list (gexp-input (canonical-package gcc)
+ #:disallowed-references (list (gexp-input (canonical-package (current-gcc))
"lib"))
;; Disable tests, as gdmd cannot cope with some arguments used such as
;; '-conf'.
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 3ceeb4425a..5abca92ebf 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -2340,8 +2340,8 @@ (define-public freehdl
coreutils
;; Lazily resolve the gcc-toolchain to avoid a circular dependency.
- (module-ref (resolve-interface '(gnu packages commencement))
- 'gcc-toolchain)
+ ((module-ref (resolve-interface '(gnu packages commencement))
+ 'current-gcc-toolchain))
guile-2.2
perl
diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm
index 6a77a692f5..a8b8369d7b 100644
--- a/gnu/packages/gawk.scm
+++ b/gnu/packages/gawk.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2018, 2022-2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -227,7 +228,7 @@ (define-public cppawk
(inputs
(list coreutils ; For dirname, mktemp, printf, rm
gawk-mpfr ; Default variant, but supports others
- gcc ; For cpp
+ (current-gcc) ; For cpp
sed))
(home-page "https://www.kylheku.com/cgit/cppawk/")
(synopsis "Wrapper script that adds C preprocessing to Awk")
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index c9e475b676..3b5d05b9a9 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2024 Nguy?n Gia Phong <mcsinyx@disroot.org>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -57,7 +58,8 @@ (define-module (gnu packages gcc)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
- #:use-module (ice-9 regex))
+ #:use-module (ice-9 regex)
+ #:export (current-gcc))
(define %gcc-infrastructure
;; Base URL for GCC's infrastructure.
@@ -857,7 +859,12 @@ (define-public gcc-14
;; Note: When changing the default gcc version, update
;; the gcc-toolchain-* definitions.
-(define-public gcc gcc-11)
+(define (current-gcc)
+ "The current default gcc version."
+ gcc-11)
+
+(define-public gcc
+ (deprecated-package "gcc" gcc-11))
;;;
@@ -868,7 +875,7 @@ (define-public gcc-2.95
;; Note: 'gcc-core-mesboot0' in commencement.scm provides 2.95 as well, but
;; with additional tricks to support compilation with TinyCC and Mes-libc.
(package
- (inherit gcc)
+ (inherit (current-gcc))
(version "2.95.3")
(source (origin
(method url-fetch)
@@ -1045,7 +1052,7 @@ (define-public (make-libstdc++ gcc)
(define libstdc++
;; Libstdc++ matching the default GCC.
- (make-libstdc++ gcc))
+ (make-libstdc++ (current-gcc)))
(define libstdc++-headers
;; XXX: This package is for internal use to work around
@@ -1100,7 +1107,7 @@ (define (make-libiberty gcc)
(synopsis "Collection of subroutines used by various GNU programs")))
(define-public libiberty
- (make-libiberty gcc))
+ (make-libiberty (current-gcc)))
(define* (custom-gcc gcc name languages
#:optional
@@ -1157,7 +1164,7 @@ (define-public gfortran-13
(define-public gfortran
(hidden-package
-
This message was truncated. Download the full message here.
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 06/40] gnu: cross-libc: Support cross-building for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
ca5eadb8bdc83980300d4c90f81e5cb97a0f8706.1731427612.git.janneke@gnu.org
* gnu/packages/base.scm (glibc)[arguments]: When building for the Hurd, in
phase "create-machine-symlink", do not assume CPU is i386, also cater for
x86_64.
* gnu/packages/cross-base.scm (cross-libc*)[arguments]: Likewise.

Change-Id: Ib009b7bd301b543b8629382330cca9d963b7a812
---
gnu/packages/base.scm | 18 ++++++++++++------
gnu/packages/cross-base.scm | 17 +++++++++++------
2 files changed, 23 insertions(+), 12 deletions(-)

Toggle diff (74 lines)
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 4e8121ae2c..02ef71f20d 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -1079,7 +1079,7 @@ (define-public glibc
(string-append locale "/C.UTF-8")))))
,@(if (target-hurd?)
- '((add-after 'install 'augment-libc.so
+ `((add-after 'install 'augment-libc.so
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* (string-append out "/lib/libc.so")
@@ -1088,11 +1088,17 @@ (define-public glibc
" libmachuser.so libhurduser.so"))))))
(add-after 'install 'create-machine-symlink
(lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (cpu "i386"))
- (symlink cpu
- (string-append out
- "/include/mach/machine"))))))
+ (let* ((out (assoc-ref outputs "out"))
+ (cpu ,(match (or (%current-target-system)
+ (%current-system))
+ ((? target-x86-32?)
+ "i386")
+ ((? target-x86-64?)
+ "x86_64")))
+ (machine (string-append
+ out "/include/mach/machine")))
+ (unless (file-exists? machine)
+ (symlink cpu machine))))))
'()))))
(inputs `(("static-bash" ,static-bash)))
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 7b32a6b64e..3827e87aec 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -738,7 +738,7 @@ (define* (cross-libc* target
(delete 'install-utf8-c-locale)
,@(if (target-hurd? target)
- '((add-after 'install 'augment-libc.so
+ `((add-after 'install 'augment-libc.so
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* (string-append out "/lib/libc.so")
@@ -747,11 +747,16 @@ (define* (cross-libc* target
" libmachuser.so libhurduser.so"))))))
(add-after 'install 'create-machine-symlink
(lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (cpu "i386"))
- (symlink cpu
- (string-append out
- "/include/mach/machine"))))))
+ (let* ((out (assoc-ref outputs "out"))
+ (cpu ,(match target
+ ((? target-x86-32?)
+ "i386")
+ ((? target-x86-64?)
+ "x86_64")))
+ (machine (string-append
+ out "/include/mach/machine")))
+ (unless (file-exists? machine)
+ (symlink cpu machine))))))
'())))))
;; Shadow the native "kernel-headers" because glibc's recipe expects the
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 08/40] gnu: elfutils: Fix build for 64bit Hurd.
(address . 74290@debbugs.gnu.org)
a413959a04c8291c44bf964603f27f90b789b361.1731427612.git.janneke@gnu.org
* gnu/packages/elf.scm (elfutils)[arguments]: When building for a 64bit Hurd,
set #:make-flags.

Change-Id: I00abf360a7de5b1f78c1e912f0dcf27c62c1af68
---
gnu/packages/elf.scm | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

Toggle diff (27 lines)
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 119f8d13dd..81a753a483 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -10,7 +10,7 @@
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
-;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -86,6 +86,10 @@ (define-public elfutils
"--disable-libdebuginfod"
"--disable-debuginfod")
+ ,@(if (target-hurd64?)
+ '(#:make-flags '("core-file_no_Werror=yes"))
+ '())
+
;; Disable tests on MIPS and PowerPC (without changing
;; the arguments list on other systems).
,@(if (any (cute string-prefix? <> (or (%current-target-system)
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 09/40] gnu: grep: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
b83a4208f27678c4d86ad5c9983473bd74bf6ea4.1731427612.git.janneke@gnu.org
* gnu/packages/base.scm (grep)[arguments]: When building for the 64bit Hurd,
add patch-sigsegv.h stage.

Change-Id: I795a591ef8282ee5b760fec43bd4ad849007f602
---
gnu/packages/base.scm | 7 +++++++
1 file changed, 7 insertions(+)

Toggle diff (21 lines)
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 02ef71f20d..010be631d7 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -154,6 +154,13 @@ (define-public grep
(string-append bin "/fgrep"))
(("^exec grep")
(string-append "exec " bin "/grep"))))))
+ #$@(if (target-hurd64?)
+ #~((add-after 'unpack 'patch-sigsegv
+ (lambda _
+ ;; Stack overflow recovery does not compile
+ (substitute* "lib/sigsegv.in.h"
+ (("__GNU__") "__XGNU__")))))
+ #~())
#$@(if (system-hurd?)
#~((add-before 'check 'skip-test
(lambda _
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 07/40] gnu: bash-minimal: Fix build for 64bit Hurd.
(address . 74290@debbugs.gnu.org)
1f92fed3939c2be15f88c5952cb79eaafd23e7dc.1731427612.git.janneke@gnu.org
* gnu/packages/bash-minimal.scm (bash)[arguments]: When building with gcc >=
14 use "CFLAGS=-Wno-implicit-function-declaration".

Change-Id: I3fd2da7a1d9011b155084dceadbad649dbb2a1b9
---
gnu/packages/bash.scm | 9 +++++++++
1 file changed, 9 insertions(+)

Toggle diff (37 lines)
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 93641a78d5..1a3b014ad7 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2024 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -30,6 +31,7 @@ (define-module (gnu packages bash)
#:use-module (gnu packages base)
#:use-module (gnu packages bootstrap)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages elf)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages readline)
@@ -251,6 +253,13 @@ (define-public bash-minimal
;; modules and related code.
"ac_cv_func_dlopen=no"
+ ,@(if (version>=? (package-version (current-gcc)) "14")
+ ;; gcc-14 implictly uses -Wimplicit-function-declaration
+ ;; which together with -Werror causes:
+ ;; ./enable.def:492:11: error: implicit declaration of function ‘dlclose’;
+ '("CFLAGS=-Wno-implicit-function-declaration")
+ '())
+
,@(if (%current-target-system)
'("bash_cv_job_control_missing=no"
"bash_cv_getcwd_malloc=yes")
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 10/40] gnu: patch: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
1e21777bab62f575ccfa64425673fa51c6baac1f.1731427612.git.janneke@gnu.org
* gnu/packages/base.scm (patch)[arguments]: When building for the 64bit Hurd,
set #:configure-flags.

Change-Id: I795a591ef8282ee5b760fec43bd4ad849007f602
---
gnu/packages/base.scm | 49 ++++++++++++++++++++++++-------------------
1 file changed, 28 insertions(+), 21 deletions(-)

Toggle diff (63 lines)
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 010be631d7..83f8c0d9e9 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -339,27 +339,34 @@ (define-public patch
"1bk38169c0xh01b0q0zmnrjqz8k9byz3arp4q7q66sn6xwf94nvz"))
(patches (search-patches "patch-hurd-path-max.patch"))))
(arguments
- (substitute-keyword-arguments (package-arguments base)
- ((#:phases phases '%standard-phases)
- #~(modify-phases #$phases
- (add-after 'unpack 'copy-gnulib-sources
- (lambda _
- ;; XXX: We copy the source instead of using 'gnulib' as a
- ;; native input to avoid introducing a dependency cycle.
- (copy-recursively #+gnulib "gnulib")
- (setenv "GNULIB_SRCDIR"
- (string-append (getcwd) "/gnulib/src/gnulib"))))
- (add-after 'copy-gnulib-sources 'update-bootstrap-script
- (lambda _
- (copy-file "gnulib/src/gnulib/build-aux/bootstrap"
- "bootstrap")))
- (add-after 'unpack 'patch-configure.ac
- (lambda _
- (substitute* "configure.ac"
- ;; The gnulib-provided git-version-gen script has a plain
- ;; shebang of #!/bin/sh; avoid using it.
- (("build-aux/git-version-gen" all)
- (string-append "sh " all)))))))))
+ (let ((arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ((#:phases phases '%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'copy-gnulib-sources
+ (lambda _
+ ;; XXX: We copy the source instead of using 'gnulib' as a
+ ;; native input to avoid introducing a dependency cycle.
+ (copy-recursively #+gnulib "gnulib")
+ (setenv "GNULIB_SRCDIR"
+ (string-append (getcwd) "/gnulib/src/gnulib"))))
+ (add-after 'copy-gnulib-sources 'update-bootstrap-script
+ (lambda _
+ (copy-file "gnulib/src/gnulib/build-aux/bootstrap"
+ "bootstrap")))
+ (add-after 'unpack 'patch-configure.ac
+ (lambda _
+ (substitute* "configure.ac"
+ ;; The gnulib-provided git-version-gen script has a plain
+ ;; shebang of #!/bin/sh; avoid using it.
+ (("build-aux/git-version-gen" all)
+ (string-append "sh " all))))))))))
+ (if (target-hurd64?)
+ (substitute-keyword-arguments arguments
+ ((#:configure-flags flags '())
+ #~(list "--disable-threads"
+ "gl_cv_func_working_mktime=yes")))
+ arguments)))
(native-inputs (list autoconf automake bison ed))
(properties '()))))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 12/40] gnu: libstdc++: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
7d1dafc36c5b23a342dced99c93cd8033a3bc852.1731427612.git.janneke@gnu.org
* gnu/packages/gcc.scm (make-libstdc++)[arguments]: When building for the
64bit Hurd, add stage patch-hurd64.

Change-Id: I795a591ef8282ee5b760fec43bd4ad849007f602
---
gnu/packages/gcc.scm | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index fc3746fb05..850a14cb1c 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -1033,7 +1033,15 @@ (define-public (make-libstdc++ gcc)
(("/lib64") "/lib")))))
(add-before 'configure 'chdir
(lambda _
- (chdir "libstdc++-v3"))))
+ (chdir "libstdc++-v3")))
+ #$@(let ((version (package-version gcc)))
+ (if (target-hurd64?)
+ #~((add-after 'unpack 'patch-hurd64
+ (lambda _
+ (substitute* "libstdc++-v3/src/c++20/tzdb.cc"
+ (("#if ! defined _GLIBCXX_ZONEINFO_DIR")
+ "#if __GNU__ || ! defined _GLIBCXX_ZONEINFO_DIR")))))
+ '())))
#:configure-flags '`("--disable-libstdcxx-pch"
,(string-append "--with-gxx-include-dir="
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 11/40] gnu: libxcrypt: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
e1549c8837d80f2bcd44f0bb7730d3ee07eeaacb.1731427612.git.janneke@gnu.org
* gnu/packages/patches/libxcrypt-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/crypto.scm (libxcrypt)[arguments]: When building for the 64bit
Hurd, use it in new phase `apply-patch'.

Change-Id: I795a591ef8282ee5b760fec43bd4ad849007f602
---
gnu/local.mk | 1 +
gnu/packages/crypto.scm | 15 ++++++++
gnu/packages/patches/libxcrypt-hurd64.patch | 38 +++++++++++++++++++++
3 files changed, 54 insertions(+)
create mode 100644 gnu/packages/patches/libxcrypt-hurd64.patch

Toggle diff (92 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 2bd857e7ac..c952e090ec 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1727,6 +1727,7 @@ dist_patch_DATA = \
%D%/packages/patches/libvpx-CVE-2016-2818.patch \
%D%/packages/patches/libvpx-CVE-2023-5217.patch \
%D%/packages/patches/libvpx-CVE-2023-44488.patch \
+ %D%/packages/patches/libxcrypt-hurd64.patch \
%D%/packages/patches/libxml2-xpath0-Add-option-xpath0.patch \
%D%/packages/patches/libwpd-gcc-compat.patch \
%D%/packages/patches/libxslt-generated-ids.patch \
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 2a298c4caf..94a98bb0ad 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -27,6 +27,7 @@
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2023 Ivan Vilata-i-Balaguer <ivan@selidor.net>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1661,6 +1662,20 @@ (define-public libxcrypt
(build-system gnu-build-system)
(native-inputs
(list perl))
+ (arguments
+ (if (target-hurd64?)
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'apply-patch
+ (lambda _
+ (let ((patch-file
+ #$(local-file
+ (search-patch
+ "libxcrypt-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i"
+ patch-file))))))
+ '()))
(synopsis
"Extended crypt library for descrypt, md5crypt, bcrypt, and others")
(description
diff --git a/gnu/packages/patches/libxcrypt-hurd64.patch b/gnu/packages/patches/libxcrypt-hurd64.patch
new file mode 100644
index 0000000000..9fc3018539
--- /dev/null
+++ b/gnu/packages/patches/libxcrypt-hurd64.patch
@@ -0,0 +1,38 @@
+Upstream-status: Taken from upstream:
+ <https://github.com/besser82/libxcrypt/commit/b2c1da2e1ce2d3e72f511f5bc94a6ffa68b70917>
+
+From b2c1da2e1ce2d3e72f511f5bc94a6ffa68b70917 Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Sun, 14 Jul 2024 13:13:07 +0200
+Subject: [PATCH] Add binary compatibility for x86_64 GNU/Hurd
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+
+diff --git a/lib/libcrypt.map.in b/lib/libcrypt.map.in
+index 88ea911..a56b7bf 100644
+--- a/lib/libcrypt.map.in
++++ b/lib/libcrypt.map.in
+@@ -43,5 +43,5 @@ fcrypt - GLIBC_2.0
+ %chain GLIBC_2.0 GLIBC_2.2 GLIBC_2.2.1 GLIBC_2.2.2 GLIBC_2.2.5 GLIBC_2.2.6
+ %chain GLIBC_2.3 GLIBC_2.4 GLIBC_2.12 GLIBC_2.16 GLIBC_2.17 GLIBC_2.18
+ %chain GLIBC_2.21 GLIBC_2.27 GLIBC_2.29 GLIBC_2.32 GLIBC_2.33 GLIBC_2.35
+-%chain GLIBC_2.36
++%chain GLIBC_2.36 GLIBC_2.38
+ %chain OW_CRYPT_1.0 XCRYPT_2.0 XCRYPT_4.3 XCRYPT_4.4
+diff --git a/lib/libcrypt.minver b/lib/libcrypt.minver
+index 8478077..c5a5bf2 100644
+--- a/lib/libcrypt.minver
++++ b/lib/libcrypt.minver
+@@ -51,6 +51,7 @@
+ #VERSION SYSTEM CPU_FAMILY PREPROCESSOR_CHECK
+
+ # GNU Hurd
++GLIBC_2.38 gnu x86_64
+ GLIBC_2.2.6 gnu i[3-9]86
+ ERROR gnu .
+
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 13/40] gnu: gcc-13, gcc-14: Support being used as parent for gcc-static.
(address . 74290@debbugs.gnu.org)
b4c0b38776c048869626bed8aefd4efb042cea11.1731427612.git.janneke@gnu.org
* gnu/packages/gcc.scm (gcc-13)[arguments]: Use quasiquote instead of
g-expressions.
(gcc-14)[arguments]: Likewise.

Change-Id: I22269b31d49868effe967d46247b189ed9a9d394
---
gnu/packages/gcc.scm | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

Toggle diff (32 lines)
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 850a14cb1c..befbbda027 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -811,10 +811,10 @@ (define-public gcc-13
(snippet gcc-canadian-cross-objdump-snippet)))
(arguments
(substitute-keyword-arguments (package-arguments gcc-11)
- ((#:phases phases #~%standard-phases)
+ ((#:phases phases '%standard-phases)
(if (target-hurd?)
- #~(modify-phases #$phases
- (delete 'patch-hurd-libpthread))
+ `(modify-phases ,phases
+ (delete 'patch-hurd-libpthread))
phases))))
(properties
`((compiler-cpu-architectures
@@ -841,8 +841,8 @@ (define-public gcc-14
(modules '((guix build utils)))
(snippet gcc-canadian-cross-objdump-snippet)))
(arguments (substitute-keyword-arguments (package-arguments gcc-13)
- ((#:phases phases #~%standard-phases)
- #~(modify-phases #$phases
+ ((#:phases phases '%standard-phases)
+ `(modify-phases ,phases
(add-before 'configure 'pre-x86-configure
(lambda _
(substitute* "gcc/config/i386/t-linux64"
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 14/40] DRAFT gnu: bootstrap: Add support for x86_64-gnu, aka the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
c5bb9d59fbc4da6afce444a8da0b057bd8607a39.1731427612.git.janneke@gnu.org
XXX TODO:

v Boot a 64bit hurd, and
o Guix build hello,
o Push the commit below,
o Re-check the bootstrap-tarballs build/hash,
o Update this commit message with new commit hash,
o Push it with remainder of hurd-team branch,
o Update blog post.

On commit:
b4c0b38776c048869626bed8aefd4efb042cea11
gnu: gcc-13, gcc-14: Support being used as parent for gcc-static.

Run:
./pre-inst-env guix build --target=x86_64-gnu bootstrap-tarballs

Producing:
/gnu/store/46ndf3vaic6cfk7a486saaa8xxnqfpxk-bootstrap-tarballs-0/

With guix hash -r:
1w9sp8dhgpawf88qd89ykrgyrpfxr9qxxqwpbpd893rnn4cp16v2

* gnu/packages/bootstrap.scm (%bootstrap-executables): Add entries for
x86_64-gnu.
(%bootstrap-guile-hash, %bootstrap-coreutils&co, %bootstrap-binutils,
%bootstrap-glibc, %bootstrap-gcc): Add entry for x86_64-gnu.
* guix/packages.scm (%supported-systems, %hurd-systems): Add x86_64-gnu.
(%cuirass-supported-systems): Remove x86_64-gnu.
* guix/utils.scm (target-64bit?): Add x86_64-gnu.
* m4/guix.m4: Add x86_64-gnu as a supported system.
* doc/guix.texi (GNU Distribution): Add x86_64-gnu.

Change-Id: Id96715cee07572cd0635594d3b1aa6756fa8a822
---
doc/guix.texi | 9 ++++++++-
gnu/packages/bootstrap.scm | 34 ++++++++++++++++++++++++++++++++++
guix/packages.scm | 8 +++++---
m4/guix.m4 | 12 +++++++++---
4 files changed, 56 insertions(+), 7 deletions(-)

Toggle diff (228 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 8f65387e92..0f5e11a305 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -36,7 +36,7 @@
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Efraim Flashner@*
Copyright @copyright{} 2016 John Darrington@*
Copyright @copyright{} 2016, 2017 Nikita Gillmann@*
-Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Jan Nieuwenhuizen@*
+Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Janneke Nieuwenhuizen@*
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Julien Lepiller@*
Copyright @copyright{} 2016 Alex ter Weele@*
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Christopher Baines@*
@@ -639,6 +639,13 @@ GNU Distribution
(@pxref{transparent-emulation-qemu, @code{hurd-vm-service-type}}).
@xref{Contributing}, on how to help!
+@item x86_64-gnu
+@uref{https://hurd.gnu.org, GNU/Hurd} on the @code{x86_64} Intel/AMD
+64-bit architecture.
+
+This configuration is even more experimental and under heavy upstream
+development.
+
@item mips64el-linux (unsupported)
little-endian 64-bit MIPS processors, specifically the Loongson series,
n32 ABI, and Linux-Libre kernel. This configuration is no longer fully
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm
index 234d001fc1..3efb21eab3 100644
--- a/gnu/packages/bootstrap.scm
+++ b/gnu/packages/bootstrap.scm
@@ -125,6 +125,15 @@ (define %bootstrap-executables
,(base32 "0nq2c1zb3wv5bf7kd83sziaashydazrn7xgq6kijlk0zj2syzc2m"))
("xz"
,(base32 "033rhpk6zrpxpd6ffjyg5y2zwq9x9cnq0zljb7k8jlncbalsayq5")))
+ ("x86_64-gnu"
+ ("bash"
+ ,(base32 "1ib1kk1larki3dm46lhl756856zpjwhhlnzkgdyh9f1yf6wm431y"))
+ ("mkdir"
+ ,(base32 "15cnckq4qj1nlmgqy9vq3qa3kcbfm1pc2z38pscxix11j4aqswsm"))
+ ("tar"
+ ,(base32 "1m8v7ddmn42wym2kl9mf7csnwsw6c3jdglg7d7kp7yaa16h5fbck"))
+ ("xz"
+ ,(base32 "16cnr7vr0zawrwcnhshms3v5kyzb2vz1rp4kxmx507cs6rivd05b")))
("mips64el-linux"
("bash"
,(base32 "1aw046dhda240k9pb9iaj5aqkm23gkvxa9j82n4k7fk87nbrixw6"))
@@ -165,6 +174,7 @@ (define (bootstrap-executable-file-name system program)
(match system
("powerpc64le-linux" (string-append system "/20210106/" program))
("i586-gnu" (string-append system "/20200326/" program))
+ ("x86_64-gnu" (string-append system "/20241112/" program))
("powerpc-linux" (string-append system "/20200923/bin/" program))
("riscv64-linux" (string-append system "/20210725/bin/" program))
(_ (string-append system "/" program
@@ -366,6 +376,8 @@ (define (bootstrap-guile-url-path system)
"/20150101/guile-2.0.11.tar.xz")
("i586-gnu"
"/20200326/guile-static-stripped-2.0.14-i586-pc-gnu.tar.xz")
+ ("x86_64-gnu"
+ "/20241112/guile-static-stripped-3.0.9-x86_64-pc-gnu.tar.xz")
("powerpc64le-linux"
"/20210106/guile-static-stripped-2.0.14-powerpc64le-linux-gnu.tar.xz")
("riscv64-linux"
@@ -390,6 +402,8 @@ (define (bootstrap-guile-hash system)
(base32 "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r"))
("i586-gnu"
(base32 "0wgqpsmvg25rnqn49ap7kwd2qxccd8dr4lllzp7i3rjvgav27vac"))
+ ("x86_64-gnu"
+ (base32 "06a26dd1r6svcxi6wk9xcdc8ldnxm0p51cnq1klghbc4djarmg6v"))
("powerpc-linux"
(base32 "1by2p7s27fbyjzfkcw8h65h4kkqh7d23kv4sgg5jppjn2qx7swq4"))
("riscv64-linux"
@@ -599,6 +613,8 @@ (define %bootstrap-coreutils&co
"/20210106/static-binaries-0-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20200326/static-binaries-0-i586-pc-gnu.tar.xz")
+ ("x86_64-gnu"
+ "/20241112/static-binaries-0-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/static-binaries.tar.xz")
("riscv64-linux"
@@ -626,6 +642,9 @@ (define %bootstrap-coreutils&co
("i586-gnu"
(base32
"17kllqnf3fg79gzy9ansgi801c46yh9c23h4d923plvb0nfm1cfn"))
+ ("x86_64-gnu"
+ (base32
+ "118s161df8hgrdfph2w5spnrms02rh1dk7mzfvx1k1prvgngpm9p"))
("powerpc-linux"
(base32
"0kspxy0yczan2vlih6aa9hailr2inz000fqa0gn5x9d1fxxa5y8m"))
@@ -682,6 +701,8 @@ (define %bootstrap-binutils
"/20210106/binutils-static-stripped-2.34-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20200326/binutils-static-stripped-2.34-i586-pc-gnu.tar.xz")
+ ("x86_64-gnu"
+ "/20241112/binutils-static-stripped-2.41-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/binutils-2.35.1.tar.xz")
("riscv64-linux"
@@ -712,6 +733,9 @@ (define %bootstrap-binutils
("i586-gnu"
(base32
"11kykv1kmqc5wln57rs4klaqa13hm952smkc57qcsyss21kfjprs"))
+ ("x86_64-gnu"
+ (base32
+ "1nibcgqqkqvpqs9636an2ikiybz0mn6vqhl57hvfs6cxfylm5c5x"))
("powerpc-linux"
(base32
"0asbg1c4avkrvh057mx0942xwddd136jni382zqsxzn79ls42yq8"))
@@ -772,6 +796,8 @@ (define %bootstrap-glibc
"/20210106/glibc-stripped-2.31-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20240816/glibc-stripped-2.39-i586-pc-gnu.tar.xz")
+ ("x86_64-gnu"
+ "/20241112/glibc-stripped-2.39-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/glibc-2.32.tar.xz")
("riscv64-linux"
@@ -802,6 +828,9 @@ (define %bootstrap-glibc
("i586-gnu"
(base32
"0x2x6w611k6v9qdabacawamw2475p04hm3s0q95xcg063wjq4ig2"))
+ ("x86_64-gnu"
+ (base32
+ "1dcgrnlxbsdic0xmmrjbr8gl6ra5y2xbj8f8jr6y0zvpdyi12ldd"))
("powerpc-linux"
(base32
"0smmssyjrlk5cvx49586smmk81gkwff0i6r91n4rir4jm6ba25sb"))
@@ -878,6 +907,8 @@ (define %bootstrap-gcc
"/20210106/gcc-stripped-5.5.0-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20200326/gcc-stripped-5.5.0-i586-pc-gnu.tar.xz")
+ ("x86_64-gnu"
+ "/20241112/gcc-stripped-14.2.0-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/gcc-5.5.0.tar.xz")
("riscv64-linux"
@@ -908,6 +939,9 @@ (define %bootstrap-gcc
("i586-gnu"
(base32
"1j2zc58wzil71a34h7c70sd68dmqvcscrw3rmn2whq79vd70zvv5"))
+ ("x86_64-gnu"
+ (base32
+ "0vqvjvw6xi16lihiqz4mhisfwx3dgs15y60q07ksdkgvi1wdli2w"))
("powerpc-linux"
(base32
"1p7df3yixhm87dw5sccc6yn1i9db1r9hnmsg87wq5xi4rfmirq7w"))
diff --git a/guix/packages.scm b/guix/packages.scm
index f373136d22..403217d711 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -10,6 +10,7 @@
;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -419,7 +420,7 @@ (define %32bit-supported-systems
(define %64bit-supported-systems
;; This is the list of 64-bit system types that are supported.
'("x86_64-linux" "mips64el-linux" "aarch64-linux" "powerpc64le-linux"
- "riscv64-linux"))
+ "riscv64-linux" "x86_64-gnu"))
(define %supported-systems
;; This is the list of system types that are supported. By default, we
@@ -428,14 +429,15 @@ (define %supported-systems
(define %hurd-systems
;; The GNU/Hurd systems for which support is being developed.
- '("i586-gnu"))
+ '("i586-gnu" "x86_64-gnu"))
(define %cuirass-supported-systems
;; This is the list of system types for which build machines are available.
;;
;; XXX: MIPS is unavailable in CI:
;; <https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00790.html>.
- (fold delete %supported-systems '("mips64el-linux" "powerpc-linux" "riscv64-linux")))
+ (fold delete %supported-systems '("mips64el-linux" "powerpc-linux"
+ "riscv64-linux" "x86_64-gnu")))
(define (maybe-add-input-labels inputs)
"Add labels to INPUTS unless it already has them."
diff --git a/m4/guix.m4 b/m4/guix.m4
index b93daba5c3..8c2757a8b7 100644
--- a/m4/guix.m4
+++ b/m4/guix.m4
@@ -3,6 +3,7 @@ dnl Copyright © 2012, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021 Ludovic Co
dnl Copyright © 2014 Mark H Weaver <mhw@netris.org>
dnl Copyright © 2017, 2020, 2021, 2023 Efraim Flashner <efraim@flashner.co.il>
dnl Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
+dnl Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
dnl
dnl This file is part of GNU Guix.
dnl
@@ -61,8 +62,13 @@ AC_DEFUN([GUIX_SYSTEM_TYPE], [
linux-musl*)
guix_system="$machine_name-linux";;
gnu*)
- # Always use i586 for GNU/Hurd.
- guix_system="i586-gnu";;
+ case "$machine_name" in
+ i386|i486|i586|i686)
+ # Always use i586 for 32bit GNU/Hurd.
+ guix_system="i586-gnu";;
+ *)
+ guix_system="$machine_name-gnu";;
+ esac;;
*)
# Strip the version number from names such as `gnu0.3',
# `darwin10.2.0', etc.
@@ -91,7 +97,7 @@ courageous and port the GNU System distribution to it (see
# Currently only Linux-based systems are supported, and only on some
# platforms.
case "$guix_system" in
- x86_64-linux|i686-linux|armhf-linux|aarch64-linux|powerpc64le-linux|riscv64-linux|i586-gnu)
+ x86_64-linux|i686-linux|armhf-linux|aarch64-linux|powerpc64le-linux|riscv64-linux|i586-gnu|x86_64-gnu)
;;
mips64el-linux|powerpc-linux)
AC_MSG_WARN([building Guix on `$guix_system', which is not supported])
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 15/40] system: image: Add hurd64 image types.
(address . 74290@debbugs.gnu.org)
393e1a7d799e913bb4343cb03fa00f772404c607.1731427612.git.janneke@gnu.org
* gnu/system/hurd.scm (%hurd64-default-operating-system-kernel,
%hurd64-default-operating-system): New variables.
* gnu/system/images/hurd.scm (hurd64-disk-image, hurd64-image-type,
hurd64-qcow2-image-type, hurd64-barebones-disk-image,
hurd64-barebones-qcow2-image): New variables.

* gnu/system/images/hurd.scm (hurd64-barebones-os): New variable.
---
gnu/system/hurd.scm | 17 +++++++++
gnu/system/images/hurd.scm | 72 ++++++++++++++++++++++++++++++++++++--
2 files changed, 87 insertions(+), 2 deletions(-)

Toggle diff (151 lines)
diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm
index 9a351529e8..6263d3de71 100644
--- a/gnu/system/hurd.scm
+++ b/gnu/system/hurd.scm
@@ -18,6 +18,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu system hurd)
+ #:use-module (ice-9 match)
#:use-module (guix gexp)
#:use-module (guix profiles)
#:use-module (guix utils)
@@ -51,6 +52,8 @@ (define-module (gnu system hurd)
%desktop-services/hurd
%hurd-default-operating-system
%hurd-default-operating-system-kernel
+ %hurd64-default-operating-system
+ %hurd64-default-operating-system-kernel
%setuid-programs/hurd))
;;; Commentary:
@@ -68,6 +71,14 @@ (define %hurd-default-operating-system-kernel
(%current-target-system #f))
gnumach)))
+(define %hurd64-default-operating-system-kernel
+ (if (system-hurd?)
+ gnumach
+ ;; A cross-built GNUmach does not work
+ (with-parameters ((%current-system "x86_64-linux")
+ (%current-target-system #f))
+ gnumach)))
+
(define %base-packages/hurd
;; Note: the Shepherd comes before the Hurd, not just because its duty is to
;; shepherd the herd, but also because we want its 'halt' and 'reboot'
@@ -142,3 +153,9 @@ (define %hurd-default-operating-system
(essential-services (hurd-default-essential-services this-operating-system))
(privileged-programs '())
(setuid-programs %setuid-programs/hurd)))
+
+(define %hurd64-default-operating-system
+ (operating-system
+ (inherit %hurd-default-operating-system)
+ (kernel %hurd64-default-operating-system-kernel)))
+
diff --git a/gnu/system/images/hurd.scm b/gnu/system/images/hurd.scm
index 01c422a54f..67815aeb9b 100644
--- a/gnu/system/images/hurd.scm
+++ b/gnu/system/images/hurd.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -36,7 +36,14 @@ (define-module (gnu system images hurd)
hurd-image-type
hurd-qcow2-image-type
hurd-barebones-disk-image
- hurd-barebones-qcow2-image))
+ hurd-barebones-qcow2-image
+
+ hurd64-barebones-os
+ hurd64-disk-image
+ hurd6-image-type
+ hurd64-qcow2-image-type
+ hurd64-barebones-disk-image
+ hurd64-barebones-qcow2-image))
(define hurd-barebones-os
(operating-system
@@ -62,6 +69,30 @@ (define hurd-barebones-os
(password-authentication? #t)))
%base-services+qemu-networking/hurd))))
+(define hurd64-barebones-os
+ (operating-system
+ (inherit %hurd64-default-operating-system)
+ (bootloader (bootloader-configuration
+ (bootloader grub-minimal-bootloader)
+ (targets '("/dev/sdX"))))
+ (file-systems (cons (file-system
+ (device (file-system-label "my-root"))
+ (mount-point "/")
+ (type "ext2"))
+ %base-file-systems))
+ (host-name "guixygnu")
+ (timezone "Europe/Amsterdam")
+ (packages (cons openssh-sans-x %base-packages/hurd))
+ (services (cons (service openssh-service-type
+ (openssh-configuration
+ (openssh openssh-sans-x)
+ (use-pam? #f)
+ (port-number 2222)
+ (permit-root-login #t)
+ (allow-empty-passwords? #t)
+ (password-authentication? #t)))
+ %base-services+qemu-networking/hurd))))
+
(define hurd-initialize-root-partition
#~(lambda* (#:rest args)
(apply initialize-root-partition
@@ -115,5 +146,42 @@ (define hurd-barebones-qcow2-image
#:type hurd-qcow2-image-type))
(name 'hurd-barebones.qcow2)))
+
+;;;
+;;; 64bit Hurd
+;;;
+(define hurd64-disk-image
+ (image
+ (inherit hurd-disk-image)
+ (platform x86_64-gnu)))
+
+(define hurd64-image-type
+ (image-type
+ (name 'hurd64-raw)
+ (constructor (cut image-with-os hurd64-disk-image <>))))
+
+(define hurd64-qcow2-image-type
+ (image-type
+ (name 'hurd64-qcow2)
+ (constructor (lambda (os)
+ (image
+ (inherit hurd64-disk-image)
+ (format 'compressed-qcow2)
+ (operating-system os))))))
+
+(define hurd64-barebones-disk-image
+ (image
+ (inherit
+ (os+platform->image hurd64-barebones-os x86_64-gnu
+ #:type hurd64-image-type))
+ (name 'hurd64-barebones-disk-image)))
+
+(define hurd64-barebones-qcow2-image
+ (image
+ (inherit
+ (os+platform->image hurd64-barebones-os x86_64-gnu
+ #:type hurd64-qcow2-image-type))
+ (name 'hurd64-barebones.qcow2)))
+
;; Return the default image.
hurd-barebones-qcow2-image
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 16/40] gnu: Add libgpg-error-1.50.
(address . 74290@debbugs.gnu.org)
063156615284b14ea316a35cebb9636f0202742c.1731427612.git.janneke@gnu.org
* gnu/packages/gnupg.scm (libgpg-error-1.50): New variable.

Change-Id: Ia34c0f339f331420d76b2c840205f29e511d1dcc
---
gnu/packages/gnupg.scm | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)

Toggle diff (36 lines)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 2e97c2244a..a4863542f2 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -22,7 +22,7 @@
;;; Copyright © 2021 Nikita Domnitskii <nikita@domnitskii.me>
;;; Copyright © 2021 Aleksandr Vityazev <avityazev@posteo.org>
;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
@@ -164,6 +164,19 @@ (define-public libgpg-error
(properties '((ftp-server . "ftp.gnupg.org")
(ftp-directory . "/gcrypt/libgpg-error")))))
+(define-public libgpg-error-1.50
+ (package
+ (inherit libgpg-error)
+ (version "1.50")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnupg/libgpg-error/libgpg-error-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "02p2jgz95688ib28sl4aa624cj0liz73anwcl92f8cx6w14m6h39"))))))
+
(define-public libgcrypt
(package
(name "libgcrypt")
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 18/40] gnu: perl: Support cross-building for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
781fce468514304963ebfe976cf2ede2417a905b.1731427612.git.janneke@gnu.org
* gnu/packages/cross-base.scm (perl)[native-inputs]: When cross-building for
the 64bit Hurd, use perl-cross-1.6.

Change-Id: I4a77f51a6757ad4aed9bcca8f9bbbf2cbd162e15
---
gnu/packages/perl.scm | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)

Toggle diff (34 lines)
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index faaac13bf1..2ea7c49419 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -248,14 +248,18 @@ (define-public perl
(native-inputs
(if (%current-target-system)
`(("perl-cross"
- ,(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/arsv/perl-cross")
- (commit "1.4")))
- (file-name (git-file-name "perl-cross" "1.4"))
- (sha256
- (base32 "1ydjvlhrk06ccyj4bm8by7xk90krsll2k380mc3x1mhfrc7r9gzy")))))
+ ,(let ((version (if (target-hurd64?) "1.6" "1.4"))
+ (hash
+ (if (target-hurd64?)
+ "0s06lkx5b79r9cn6pm5p6d4jbdjq7wg7rjr75nw5xdhw1z3wnl2d"
+ "1ydjvlhrk06ccyj4bm8by7xk90krsll2k380mc3x1mhfrc7r9gzy")))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/arsv/perl-cross")
+ (commit version)))
+ (file-name (git-file-name "perl-cross" version))
+ (sha256 (base32 hash))))))
'()))
(native-search-paths (list (search-path-specification
(variable "PERL5LIB")
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 17/40] gnu: libgcrypt: Use libgpg-error-1.50 for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
8dc78d1028c40206a6fc87197c3de2a5cce95dd8.1731427612.git.janneke@gnu.org
* gnu/packages/gnupg.scm (libgcrypt)[propagated-inputs]: When building for the
64bit Hurd, use libgcrypt-1.50.

Change-Id: I608d283a4a307527d5b09a81fa1a53cec5d6bb76
---
gnu/packages/gnupg.scm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

Toggle diff (18 lines)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index a4863542f2..6c6efff026 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -190,7 +190,9 @@ (define-public libgcrypt
"1pp9zyx02bzgzjzldxf0mx9kp3530xgaaqcz4n2cv100ddaaw57g"))))
(build-system gnu-build-system)
(propagated-inputs
- `(("libgpg-error-host" ,libgpg-error)))
+ `(("libgpg-error-host" ,(if (target-hurd64?)
+ libgpg-error-1.50
+ libgpg-error))))
(native-inputs
;; Needed here for the 'gpg-error' program.
`(("libgpg-error-native" ,libgpg-error)))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 19/40] gnu: openssl-3.0: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
9f00bfe5365aabf524069f8a5d435fecdf9016b5.1731427612.git.janneke@gnu.org
* gnu/packages/patches/openssl-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/tls.scm (openssl-3.0)[arguments]: When building for
the 64bit Hurd, use it in new "apply-hurd-patch" phase.

Change-Id: I8936377da726681b748cc010e1fbae3fb19dee05
---
gnu/local.mk | 1 +
gnu/packages/patches/openssl-hurd64.patch | 99 +++++++++++++++++++++++
gnu/packages/tls.scm | 9 +++
3 files changed, 109 insertions(+)
create mode 100644 gnu/packages/patches/openssl-hurd64.patch

Toggle diff (140 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index c952e090ec..a7e5e903e3 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1893,6 +1893,7 @@ dist_patch_DATA = \
%D%/packages/patches/opensles-add-license-file.patch \
%D%/packages/patches/openssl-1.1-c-rehash-in.patch \
%D%/packages/patches/openssl-3.0-c-rehash-in.patch \
+ %D%/packages/patches/openssl-hurd64.patch \
%D%/packages/patches/opentaxsolver-file-browser-fix.patch \
%D%/packages/patches/open-zwave-hidapi.patch \
%D%/packages/patches/orangeduck-mpc-fix-pkg-config.patch \
diff --git a/gnu/packages/patches/openssl-hurd64.patch b/gnu/packages/patches/openssl-hurd64.patch
new file mode 100644
index 0000000000..372fda834a
--- /dev/null
+++ b/gnu/packages/patches/openssl-hurd64.patch
@@ -0,0 +1,99 @@
+Upstream-status: Taken from upstream:
+
+<https://github.com/openssl/openssl/commit/7c729851d169f30d9e0c0ad6e7c1cf6cefb37935>.
+
+From 795699363be8f717e36802c3ac503011b74ad752 Mon Sep 17 00:00:00 2001
+From: Janneke Nieuwenhuizen <janneke@gnu.org>
+Date: Thu, 7 Nov 2024 14:08:05 +0100
+Subject: [PATCH] Add support for the 64bit Hurd.
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+Taken from <https://salsa.debian.org/debian/openssl>.
+---
+ Configurations/10-main.conf | 45 ++++++++++++++++++++++++++++++++-----
+ util/perl/OpenSSL/config.pm | 3 ++-
+ 2 files changed, 41 insertions(+), 7 deletions(-)
+
+diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
+index b578a3c2a8..740460ebd3 100644
+--- a/Configurations/10-main.conf
++++ b/Configurations/10-main.conf
+@@ -1685,20 +1685,53 @@ my %targets = (
+ },
+
+ ##### GNU Hurd
+- "hurd-x86" => {
++ "hurd-generic32" => {
+ inherit_from => [ "BASE_unix" ],
+ CC => "gcc",
+- CFLAGS => "-O3 -fomit-frame-pointer -Wall",
++ CXX => "g++",
++ CFLAGS => picker(default => "-Wall",
++ debug => "-O0 -g",
++ release => "-O3"),
++ CXXFLAGS => picker(default => "-Wall",
++ debug => "-O0 -g",
++ release => "-O3"),
+ cflags => threads("-pthread"),
+- lib_cppflags => "-DL_ENDIAN",
++ cxxflags => combine("-std=c++11", threads("-pthread")),
+ ex_libs => add("-ldl", threads("-pthread")),
+- bn_ops => "BN_LLONG",
+- asm_arch => 'x86',
+- perlasm_scheme => 'elf',
++ bn_ops => "BN_LLONG RC4_CHAR",
+ thread_scheme => "pthreads",
+ dso_scheme => "dlfcn",
+ shared_target => "linux-shared",
+ shared_cflag => "-fPIC",
++ shared_ldflag => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" },
++ },
++
++ "hurd-generic64" => {
++ inherit_from => [ "hurd-generic32" ],
++ bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
++ },
++
++ #### X86 / X86_64 targets
++ "hurd-x86" => {
++ inherit_from => [ "hurd-generic32" ],
++ CFLAGS => add(picker(release => "-fomit-frame-pointer")),
++ cflags => add("-m32"),
++ cxxflags => add("-m32"),
++ lib_cppflags => add("-DL_ENDIAN"),
++ bn_ops => "BN_LLONG",
++ asm_arch => 'x86',
++ perlasm_scheme => 'elf',
++ },
++
++ "hurd-x86_64" => {
++ inherit_from => [ "hurd-generic64" ],
++ cflags => add("-m64"),
++ cxxflags => add("-m64"),
++ lib_cppflags => add("-DL_ENDIAN"),
++ bn_ops => "SIXTY_FOUR_BIT_LONG",
++ asm_arch => 'x86_64',
++ perlasm_scheme => 'elf',
++ multilib => "64",
+ },
+
+ ##### VxWorks for various targets
+diff --git a/util/perl/OpenSSL/config.pm b/util/perl/OpenSSL/config.pm
+index 2f1edcafb6..707db71537 100755
+--- a/util/perl/OpenSSL/config.pm
++++ b/util/perl/OpenSSL/config.pm
+@@ -92,7 +92,8 @@ my $guess_patterns = [
+ [ 'IRIX64:.*', 'mips4-sgi-irix64' ],
+ [ 'Linux:[2-9]\..*', '${MACHINE}-whatever-linux2' ],
+ [ 'Linux:1\..*', '${MACHINE}-whatever-linux1' ],
+- [ 'GNU.*', 'hurd-x86' ],
++ [ 'GNU:.*86-AT386', 'hurd-x86' ],
++ [ 'GNU:.*86_64-AT386', 'hurd-x86_64' ],
+ [ 'LynxOS:.*', '${MACHINE}-lynx-lynxos' ],
+ # BSD/OS always says 386
+ [ 'BSD\/OS:4\..*', 'i486-whatever-bsdi4' ],
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 43806e24da..fab88518ce 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -589,6 +589,15 @@ (define-public openssl-3.0
"/bin/perl"))))
#$@(if (target-hurd?)
#~((delete 'patch-configure))
+ #~())
+ #$@(if (target-hurd64?)
+ #~((add-after 'unpack 'apply-hurd-patch
+ (lambda _
+ (let ((patch-file
+ #$(local-file
+ (search-patch "openssl-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i"
+ patch-file)))))
#~())))
((#:configure-flags flags #~'())
(if (system-hurd?)
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 20/40] gnu: pciutils: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
c14730c47b48a92f6a80dcc2106035d8bd5fc8f2.1731427612.git.janneke@gnu.org
* gnu/packages/patches/pciutils-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/pciutils.scm (pciutils)[arguments]: Use g-expressions. When
building for the 64bit Hurd, use it in new "apply-hurd64-patch" phase.

Change-Id: I8936377da726681b748cc010e1fbae3fb19dee05
---
gnu/local.mk | 1 +
gnu/packages/patches/pciutils-hurd64.patch | 31 ++++++++++++++++++++++
gnu/packages/pciutils.scm | 25 +++++++++++------
3 files changed, 49 insertions(+), 8 deletions(-)
create mode 100644 gnu/packages/patches/pciutils-hurd64.patch

Toggle diff (115 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index a7e5e903e3..34023909a1 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1908,6 +1908,7 @@ dist_patch_DATA = \
%D%/packages/patches/pam-krb5-CVE-2020-10595.patch \
%D%/packages/patches/pango-skip-libthai-test.patch \
%D%/packages/patches/password-store-tree-compat.patch \
+ %D%/packages/patches/pciutils-hurd64.patch \
%D%/packages/patches/pdfpc-build-with-vala-0.56.patch \
%D%/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch \
%D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
diff --git a/gnu/packages/patches/pciutils-hurd64.patch b/gnu/packages/patches/pciutils-hurd64.patch
new file mode 100644
index 0000000000..316f12e131
--- /dev/null
+++ b/gnu/packages/patches/pciutils-hurd64.patch
@@ -0,0 +1,31 @@
+Upstream-status: Not presented upstream.
+
+--- pciutils-3.8.0/lib/hurd.c.orig 2024-11-07 15:09:20.728973822 +0100
++++ pciutils-3.8.0/lib/hurd.c 2024-11-07 15:05:08.524682813 +0100
+@@ -213,7 +213,7 @@
+ hurd_read(struct pci_dev *d, int pos, byte * buf, int len)
+ {
+ int err;
+- size_t nread;
++ mach_msg_type_number_t nread;
+ char *data;
+ mach_port_t device_port = device_port_lookup(d);
+
+@@ -266,7 +266,7 @@
+ mach_port_t device_port = device_port_lookup(d);
+ struct pci_bar regions[6];
+ char *buf = (char *) &regions;
+- size_t size = sizeof(regions);
++ mach_msg_type_number_t size = sizeof(regions);
+
+ int err = pci_get_dev_regions(device_port, &buf, &size);
+ if (err)
+@@ -305,7 +305,7 @@
+ struct pci_xrom_bar rom;
+ mach_port_t device_port = device_port_lookup(d);
+ char *buf = (char *) &rom;
+- size_t size = sizeof(rom);
++ mach_msg_type_number_t size = sizeof(rom);
+
+ int err = pci_get_dev_rom(device_port, &buf, &size);
+ if (err)
diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scm
index d2a352eb6b..08f1634113 100644
--- a/gnu/packages/pciutils.scm
+++ b/gnu/packages/pciutils.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2022 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
;;;
@@ -81,25 +81,34 @@ (define-public pciutils
"01aglgw9ds9qiswcbi2lx90lswncikrlyv8mmp4haix8542bvvci"))))
(build-system gnu-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
(add-after 'unpack 'unbundle-pci.ids
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(copy-file (search-input-file (or native-inputs inputs)
"share/hwdata/pci.ids")
"pci.ids")))
+ #$@(if (target-hurd64?)
+ #~((add-after 'unpack 'apply-hurd64-patch
+ (lambda _
+ (let ((patch-file
+ #$(local-file
+ (search-patch "pciutils-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i" patch-file)))))
+ #~())
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
;; There's no 'configure' script, just a raw makefile.
(substitute* "Makefile"
- ,@(if (%current-target-system)
- `((("^CROSS_COMPILE=.*$")
+ #$@(if (%current-target-system)
+ #~((("^CROSS_COMPILE=.*$")
(string-append "CROSS_COMPILE="
- ,(%current-target-system) "-"
+ #$(%current-target-system) "-"
"\n"))
(("^HOST=.*$")
(string-append "HOST="
- ,(gnu-triplet->nix-system
+ #$(gnu-triplet->nix-system
(%current-target-system)) "\n"))
;; Disable 'install' strip option, that would fail when
;; we are cross-compiling.
@@ -139,7 +148,7 @@ (define-public pciutils
(invoke "make" "install" "install-lib"))))
;; Make sure programs have an RPATH so they can find libpciutils.so.
- #:make-flags (list ,(string-append "CC="
+ #:make-flags #~(list #$(string-append "CC="
(if (%current-target-system)
(cc-for-target)
"gcc"))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 21/40] gnu: libpciaccess: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
68c9662ea16fdb7498a7a10ad36eafc923db5570.1731427612.git.janneke@gnu.org
* gnu/packages/patches/libpciaccess-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/xorg.scm (libpciaccess) [arguments]: Use g-expressions. When
building for the 64bit Hurd, use it in new "apply-hurd64-patch" phase.

Change-Id: I8936377da726681b748cc010e1fbae3fb19dee05
---
gnu/local.mk | 1 +
.../patches/libpciaccess-hurd64.patch | 58 +++++++++++++++++++
gnu/packages/xorg.scm | 23 +++++---
3 files changed, 75 insertions(+), 7 deletions(-)
create mode 100644 gnu/packages/patches/libpciaccess-hurd64.patch

Toggle diff (132 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 34023909a1..8c4f052b75 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1703,6 +1703,7 @@ dist_patch_DATA = \
%D%/packages/patches/libmpeg2-global-symbol-test.patch \
%D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch \
%D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch \
+ %D%/packages/patches/libpciaccess-hurd64.patch \
%D%/packages/patches/libphonenumber-reproducible-build.patch \
%D%/packages/patches/libqalculate-3.8.0-libcurl-ssl-fix.patch \
%D%/packages/patches/libquicktime-ffmpeg.patch \
diff --git a/gnu/packages/patches/libpciaccess-hurd64.patch b/gnu/packages/patches/libpciaccess-hurd64.patch
new file mode 100644
index 0000000000..f7e11059b1
--- /dev/null
+++ b/gnu/packages/patches/libpciaccess-hurd64.patch
@@ -0,0 +1,58 @@
+Upstream-status: Taken from upstream:
+
+<https://gitlab.freedesktop.org/xorg/lib/libpciaccess/-/commit/6cd5a4afbb70868c7746de8d50dea59e02e9acf2>.
+
+From 6cd5a4afbb70868c7746de8d50dea59e02e9acf2 Mon Sep 17 00:00:00 2001
+From: Flavio Cruz <flaviocruz@gmail.com>
+Date: Wed, 28 Jun 2023 01:02:34 -0400
+Subject: [PATCH] Fix compilation warnings when building against hurd-amd64.
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+Passes mach_msg_type_number_t instead of size_t which have different
+sizes. Example warning:
+
+/hurd_pci.c:101:53: warning: passing argument 3 of 'pci_get_dev_regions' from incompatible pointer type [-Wincompatible-pointer-types]
+ 101 | err = pci_get_dev_regions(d->device_port, &buf, &size);
+ | ^~~~~
+ | |
+ | size_t * {aka long unsigned int *}
+---
+ src/hurd_pci.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/hurd_pci.c b/src/hurd_pci.c
+index 8653e1b..9ac3813 100644
+--- a/src/hurd_pci.c
++++ b/src/hurd_pci.c
+@@ -82,7 +82,7 @@ pci_device_hurd_probe(struct pci_device *dev)
+ struct pci_bar regions[6];
+ struct pci_xrom_bar rom;
+ struct pci_device_private *d;
+- size_t size;
++ mach_msg_type_number_t size;
+ char *buf;
+
+ /* Many of the fields were filled in during initial device enumeration.
+@@ -323,7 +323,7 @@ pciclient_cfg_read(mach_port_t device_port, int reg, char *buf,
+ size_t * nbytes)
+ {
+ int err;
+- size_t nread;
++ mach_msg_type_number_t nread;
+ char *data;
+
+ data = buf;
+@@ -473,7 +473,7 @@ simple_readdir(mach_port_t port, uint32_t *first_entry)
+ {
+ char *data;
+ int nentries = 0;
+- vm_size_t size;
++ mach_msg_type_number_t size;
+
+ dir_readdir (port, &data, &size, *first_entry, 1, 0, &nentries);
+
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 0de08a4ad1..b106a604a7 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -36,7 +36,7 @@
;;; Copyright © 2021 Lu Hui <luhux76@gmail.com>
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
-;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2023, 2024 Kaelyn Takata <kaelyn.alexi@protonmail.com>
;;;
@@ -1157,16 +1157,17 @@ (define-public libpciaccess
"12glp4w1kgvmqn89lk19cgr6jccd3awxra4dxisp7pagi06rsk11"))))
(build-system gnu-build-system)
(arguments
- '(;; Make sure libpciaccess can read compressed 'pci.ids' files as
- ;; provided by pciutils.
- #:configure-flags
- (list "--with-zlib"
+ (list
+ ;; Make sure libpciaccess can read compressed 'pci.ids' files as
+ ;; provided by pciutils.
+ #:configure-flags
+ #~(list "--with-zlib"
(string-append "--with-pciids-path="
(assoc-ref %build-inputs "pciutils")
"/share/hwdata"))
#:phases
- (modify-phases %standard-phases
+ #~(modify-phases %standard-phases
(add-after 'install 'add-L-zlib
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Provide '-LZLIB/lib' next to '-lz' in the .la file.
@@ -1175,7 +1176,15 @@ (define-public libpciaccess
(substitute* (string-append out "/lib/libpciaccess.la")
(("-lz")
(string-append "-L" zlib "/lib -lz")))
- #t))))))
+ #t)))
+ #$@(if (target-hurd64?)
+ #~((add-after 'unpack 'apply-hurd64-patch
+ (lambda _
+ (let ((patch-file
+ #$(local-file
+ (search-patch "libpciaccess-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i" patch-file)))))
+ #~()))))
(inputs
(list zlib pciutils)) ;for 'pci.ids.gz'
(native-inputs
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 22/40] gnu: netdde: Update to c0ef248dc7c5ccc1273e2a796f3ece30c5b645df.
(address . 74290@debbugs.gnu.org)
f6aae3737e0a8ff28774bd349574960fad2d82de.1731427612.git.janneke@gnu.org
* gnu/packages/hurd.scm (netdde): Update to
c0ef248dc7c5ccc1273e2a796f3ece30c5b645df.
(dde-sources): Update to b6c8526c703f3ba76294d9002f195c63897ec661.

Change-Id: Id03f5c5124f16e9ffd6a77cbb2507d274e0f325a
---
gnu/packages/hurd.scm | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

Toggle diff (45 lines)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 06fae1bd3b..f9d8b28b8c 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -294,7 +294,7 @@ (define unifont
(define dde-sources
;; This is the current tip of the dde branch
- (let ((commit "066797b576ebf8364ad157f50bef2a655597deeb"))
+ (let ((commit "b6c8526c703f3ba76294d9002f195c63897ec661"))
(origin
(method git-fetch)
(uri (git-reference
@@ -302,7 +302,7 @@ (define dde-sources
(commit commit)))
(sha256
(base32
- "19f2awlfnar5gyhi0w5zawla5brzck2s88iv0f20022pd1l5v9hl"))
+ "0k1ilj8ghli8x43xaksbc4y419pqh0w16k374914c07svq419bbr"))
(file-name (git-file-name "dde" (string-take commit 7))))))
(define %import-from-dde
@@ -561,8 +561,8 @@ (define-public hurd
(license gpl2+)))
(define-public netdde
- (let ((commit "e67c284ac113d939b10b4578334f27dab29d5b08")
- (revision "2"))
+ (let ((commit "c0ef248dc7c5ccc1273e2a796f3ece30c5b645df")
+ (revision "3"))
(package
(name "netdde")
;; The version prefix corresponds to the version of Linux from which the
@@ -576,7 +576,7 @@ (define-public netdde
(patches (list (search-patch "netdde-build-fix.patch")))
(sha256
(base32
- "0vnkls7sr7srzib5mnw6gybzl5qa8c5a4zf3h08w6gdr7zqbndh0"))
+ "070fpmd4nvn3mp8dj9w4if63iwz7j2m0h6ywq888znw70wlrc6sh"))
(file-name (git-file-name name commit))))
(build-system gnu-build-system)
(arguments
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 23/40] gnu: netdde: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
52cd8b7a905961b0ea70dcfcae561792a833e3ba.1731427612.git.janneke@gnu.org
* gnu/packages/patches/netdde-csum.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/hurd.scm (netdde)[source]: Use it.
[arguments]: Do not assume x86, rather use actual ARCH in #:make-flags,
disable -Wstrict-prototypes and -Wint-conversion, and follow upstream's
"amd64" symlinking voodoo.

Change-Id: Ie825e56779dae2f489066569dc3c4405bac778c1
---
gnu/local.mk | 1 +
gnu/packages/hurd.scm | 22 ++++++++++++++++++++--
gnu/packages/patches/netdde-csum.patch | 18 ++++++++++++++++++
3 files changed, 39 insertions(+), 2 deletions(-)
create mode 100644 gnu/packages/patches/netdde-csum.patch

Toggle diff (88 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 8c4f052b75..073a95a556 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1818,6 +1818,7 @@ dist_patch_DATA = \
%D%/packages/patches/ncftp-reproducible.patch \
%D%/packages/patches/netcdf-date-time.patch \
%D%/packages/patches/netdde-build-fix.patch \
+ %D%/packages/patches/netdde-csum.patch \
%D%/packages/patches/netpbm-CVE-2017-2586.patch \
%D%/packages/patches/netpbm-CVE-2017-2587.patch \
%D%/packages/patches/netsurf-message-timestamp.patch \
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index f9d8b28b8c..973564ee33 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -573,7 +573,8 @@ (define-public netdde
(uri (git-reference
(url "https://git.savannah.gnu.org/git/hurd/incubator.git")
(commit commit)))
- (patches (list (search-patch "netdde-build-fix.patch")))
+ (patches (search-patches "netdde-build-fix.patch"
+ "netdde-csum.patch"))
(sha256
(base32
"070fpmd4nvn3mp8dj9w4if63iwz7j2m0h6ywq888znw70wlrc6sh"))
@@ -586,7 +587,13 @@ (define-public netdde
(search-input-file %build-inputs "/bin/bash"))
"PKGDIR=libdde_linux26"
(string-append "CC=" ,(cc-for-target))
- "ARCH=x86")
+ (let ((arch ,(match (or (%current-target-system)
+ (%current-system))
+ ((? target-x86-32?)
+ "x86")
+ ((? target-x86-64?)
+ "amd64"))))
+ (string-append "ARCH=" arch)))
#:configure-flags
,#~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
#:phases
@@ -604,8 +611,19 @@ (define-public netdde
(("/bin/bash") (which "bash")))))
(add-after 'patch-generated-file-shebangs 'build-libdde-linux26
(lambda* (#:key make-flags #:allow-other-keys)
+ (when ,(target-hurd64?)
+ (let ((dir "libdde_linux26/build/include"))
+ (mkdir-p (string-append dir "/x86"))
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/x86/amd64") "x86")
+ (symlink "x86" (string-append dir "/amd64"))
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/amd64/asm-x86_64") "asm-x86")
+ (symlink "asm-x86" (string-append dir "/amd64/asm-x86_64"))))
(with-directory-excursion "libdde_linux26"
(apply invoke "make"
+ (string-append "WARNINGS=-Wno-strict-prototypes"
+ " -Wno-int-conversion")
(delete "PKGDIR=libdde_linux26" make-flags)))))
(add-after 'build-libdde-linux26 'convert
(lambda* (#:key make-flags #:allow-other-keys)
diff --git a/gnu/packages/patches/netdde-csum.patch b/gnu/packages/patches/netdde-csum.patch
new file mode 100644
index 0000000000..4fdd004898
--- /dev/null
+++ b/gnu/packages/patches/netdde-csum.patch
@@ -0,0 +1,18 @@
+Upstream-status: Taken from debian.
+
+<https://salsa.debian.org/hurd-team/netdde/raw/master/debian/patches/csum>.
+
+---
+ linux/drivers/net/vmxnet3/vmxnet3_drv.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/linux/drivers/net/vmxnet3/vmxnet3_drv.c
++++ b/linux/drivers/net/vmxnet3/vmxnet3_drv.c
+@@ -25,6 +25,7 @@
+ */
+
+ #include "vmxnet3_int.h"
++#include <net/ip6_checksum.h>
+
+ char vmxnet3_driver_name[] = "vmxnet3";
+ #define VMXNET3_DRIVER_DESC "VMware vmxnet3 virtual NIC driver"
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 24/40] gnu: rumpkernel: Update to f1ffd6405f225336e595a0f99f01095ed7438337.
(address . 74290@debbugs.gnu.org)
e20d9cff993aab6a75adff9747838c0c61fcc8cb.1731427612.git.janneke@gnu.org
* gnu/packages/hurd.scm (rumpkernel): Update to
f1ffd6405f225336e595a0f99f01095ed7438337.
[arguments]: In stage "build", add "-Wno-error=sign-compare" to CWARNFLAGS.

Change-Id: I8936377da726681b748cc010e1fbae3fb19dee05
---
gnu/packages/hurd.scm | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)

Toggle diff (37 lines)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 973564ee33..b156fcea4c 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -665,8 +665,8 @@ (define-public netdde
(license gpl2))))
(define-public rumpkernel
- (let ((commit "81043d42fabda9baed7ac9ca36e3f3f5ed11ba81")
- (revision "3"))
+ (let ((commit "f1ffd6405f225336e595a0f99f01095ed7438337")
+ (revision "0"))
(package
(name "rumpkernel")
(version (git-version "0-20211031" revision commit))
@@ -680,7 +680,7 @@ (define-public rumpkernel
(commit commit)))
(sha256
(base32
- "0fv0k52qqcg3nq9012hibgsamvsd7mnvn2ikdasmzjhsp8qh5q3r"))
+ "1ygn3ysji06ik3k44sf906fjpdmabznkspw70llldbk2zkrcdw7i"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
@@ -800,7 +800,8 @@ (define-public rumpkernel
" -Wno-error=stack-protector"
" -Wno-error=array-parameter"
" -Wno-error=array-bounds"
- " -Wno-error=stringop-overflow")
+ " -Wno-error=stringop-overflow"
+ " -Wno-error=sign-compare")
"-V" "LIBCRTBEGIN="
"-V" "LIBCRTEND="
"-V" "LIBCRT0="
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 25/40] gnu: rumpkernel: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
b604cb1ffbaac6d49f160c97103631f616552b92.1731427612.git.janneke@gnu.org
* gnu/packages/hurd.scm (rumpkernel)[argument]: In stage "build", follow
Debian upstream to use -DPAE disable the DTRACE and ZFS builds.

Change-Id: I534da31eefb378c72b4896d64a51a73109e38aa6
---
gnu/packages/hurd.scm | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

Toggle diff (27 lines)
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index b156fcea4c..d29ec22cd7 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -781,6 +781,9 @@ (define-public rumpkernel
"-V" "MKBINUTILS=no"
"-V" "MKGDB=no"
"-V" "MKGROFF=no"
+ "-V" "MKDTRACE=no"
+ "-V" "MKZFS=no"
+
"-V" (string-append "TOPRUMP=" toprump)
"-V" "BUILDRUMP_CPPFLAGS=-Wno-error=stringop-overread"
"-V" "RUMPUSER_EXTERNAL_DPLIBS=pthread"
@@ -791,7 +794,8 @@ (define-public rumpkernel
" -DRUMP_REGISTER_T=int"
" -DRUMPUSER_CONFIG=yes"
" -DNO_PCI_MSI_MSIX=yes"
- " -DNUSB_DMA=1")
+ " -DNUSB_DMA=1"
+ " -DPAE")
"-V" (string-append
"CWARNFLAGS="
" -Wno-error=maybe-uninitialized"
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 26/40] gnu: hurd: Build fixes for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
433661697f325485bd9b04aaec878af8145df0ab.1731427612.git.janneke@gnu.org
* gnu/packages/patches/hurd-64bit.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/hurd.scm (hurd)[source]: Use it.
[arguments]: When building for the 64bit Hurd, add "create-machine-symlink"
phase. In phases "build-libdde-linux" and "install-goodies", do not assume
x86, rather use actual ARCH, disable -Wstrict-prototypes and -Wint-conversion,
and follow upstream's "amd64" symlinking voodoo.

Change-Id: If264a91b2433add13f9121c482f0abe67ae5f1e9
---
gnu/local.mk | 1 +
gnu/packages/hurd.scm | 115 +++++++++++++++++---------
gnu/packages/patches/hurd-64bit.patch | 56 +++++++++++++
3 files changed, 131 insertions(+), 41 deletions(-)
create mode 100644 gnu/packages/patches/hurd-64bit.patch

Toggle diff (212 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 073a95a556..948fc4ba73 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1546,6 +1546,7 @@ dist_patch_DATA = \
%D%/packages/patches/htslib-for-stringtie.patch \
%D%/packages/patches/hubbub-sort-entities.patch \
%D%/packages/patches/hueplusplus-mbedtls.patch \
+ %D%/packages/patches/hurd-64bit.patch \
%D%/packages/patches/hurd-rumpdisk-no-hd.patch \
%D%/packages/patches/hurd-startup.patch \
%D%/packages/patches/hwloc-1-test-btrfs.patch \
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index d29ec22cd7..7aed0ebe1d 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -317,7 +317,8 @@ (define-public hurd
(source (origin
(inherit (package-source hurd-headers))
(patches (search-patches "hurd-rumpdisk-no-hd.patch"
- "hurd-startup.patch"))))
+ "hurd-startup.patch"
+ "hurd-64bit.patch"))))
(version (package-version hurd-headers))
(arguments
`(#:tests? #f ;no "check" target
@@ -467,48 +468,80 @@ (define-public hurd
(find-files (string-append out "/libexec")))
#t)))
(add-after 'build 'build-libdde-linux
- (lambda* (#:key inputs native-inputs #:allow-other-keys)
- (invoke (string-append (assoc-ref (or native-inputs inputs) "make")
- "/bin/make")
- ;; XXX There can be a race condition because subdirs
- ;; aren't interdependent targets in the Makefile.
- "-j1" "-C" "libdde_linux26"
- (string-append "SHELL="
- (assoc-ref (or native-inputs inputs) "bash")
- "/bin/bash")
- (string-append "CC="
- ,(cc-for-target))
- "ARCH=x86")))
+ (lambda* (#:key inputs native-inputs #:allow-other-keys)
+ (let ((arch ,(match (or (%current-target-system)
+ (%current-system))
+ ((? target-x86-32?)
+ "x86")
+ ((? target-x86-64?)
+ "amd64"))))
+ (when ,(target-hurd64?)
+ (let ((dir "libdde_linux26/build/include"))
+ (mkdir-p (string-append dir "/x86"))
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/x86/amd64") "x86")
+ (symlink "x86" (string-append dir "/amd64"))
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/amd64/asm-x86_64") "asm-x86")
+ (symlink "asm-x86" (string-append dir "/amd64/asm-x86_64"))))
+ (invoke (string-append (assoc-ref (or native-inputs inputs) "make")
+ "/bin/make")
+ ;; XXX There can be a race condition because subdirs
+ ;; aren't interdependent targets in the Makefile.
+ "-j1" "-C" "libdde_linux26"
+ (string-append "SHELL="
+ (assoc-ref (or native-inputs inputs) "bash")
+ "/bin/bash")
+ (string-append "CC="
+ ,(cc-for-target))
+ (string-append "WARNINGS=-Wno-int-conversion"
+ " -Wno-strict-prototypes")
+ (string-append "ARCH=" arch)))))
(add-after 'install 'install-goodies
- (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
- ;; Install additional goodies.
- ;; TODO: Build & install *.msgids for rpctrace.
- (let* ((out (assoc-ref outputs "out"))
- (datadir (string-append out "/share/hurd")))
- ;; Install libdde_linux26.
- (invoke (string-append (assoc-ref (or native-inputs inputs) "make")
- "/bin/make")
- "-C" "libdde_linux26" "install"
- (string-append "SHELL="
- (assoc-ref (or native-inputs inputs) "bash")
- "/bin/bash")
- (string-append "INSTALLDIR="
- out
- "/share/libdde_linux26/build/include")
- "ARCH=x86")
- ;; Install the fancy UTF-8 motd.
- (mkdir-p (string-append out "/etc"))
- (copy-file "console/motd.UTF8"
- (string-append out "/etc/motd"))
+ (lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
+ ;; Install additional goodies.
+ ;; TODO: Build & install *.msgids for rpctrace.
+ (let* ((out (assoc-ref outputs "out"))
+ (datadir (string-append out "/share/hurd"))
+ (arch ,(match (or (%current-target-system)
+ (%current-system))
+ ((? target-x86-32?)
+ "x86")
+ ((? target-x86-64?)
+ "amd64")))
+ (dir (string-append out "/share/libdde_linux26/build/include")))
+ (mkdir-p dir)
+ (when ,(target-hurd64?)
+ (mkdir-p (string-append dir "/amd64"))
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/amd64/asm-x86_64")
+ "x86")
+ (symlink "x86" (string-append dir "/amd46")))
+ (invoke (string-append (assoc-ref (or native-inputs inputs) "make")
+ "/bin/make")
+ "-C" "libdde_linux26" "install"
+ (string-append "SHELL="
+ (assoc-ref (or native-inputs inputs) "bash")
+ "/bin/bash")
+ (string-append "INSTALLDIR=" dir)
+ (string-append "ARCH=" arch))
+ (when ,(target-hurd64?)
+ (format #t "symlink ~a -> ~a\n"
+ (string-append dir "/amd64/asm-x86_64")
+ "asm-x86")
+ (symlink "asm-x86" (string-append dir "/amd64/asm-x86_64")))
+ ;; Install the fancy UTF-8 motd.
+ (mkdir-p (string-append out "/etc"))
+ (copy-file "console/motd.UTF8"
+ (string-append out "/etc/motd"))
- ;; Install the BDF font for use by the console client.
- (copy-file (assoc-ref inputs "unifont")
- "unifont.gz")
- (invoke "gunzip" "unifont.gz")
- (mkdir-p datadir)
- (copy-file "unifont"
- (string-append datadir "/vga-system.bdf"))
- #t))))
+ ;; Install the BDF font for use by the console client.
+ (copy-file (assoc-ref inputs "unifont")
+ "unifont.gz")
+ (invoke "gunzip" "unifont.gz")
+ (mkdir-p datadir)
+ (copy-file "unifont"
+ (string-append datadir "/vga-system.bdf"))))))
#:configure-flags
,#~(list (string-append "LDFLAGS=-Wl,-rpath="
#$output "/lib")
diff --git a/gnu/packages/patches/hurd-64bit.patch b/gnu/packages/patches/hurd-64bit.patch
new file mode 100644
index 0000000000..643550ad68
--- /dev/null
+++ b/gnu/packages/patches/hurd-64bit.patch
@@ -0,0 +1,56 @@
+Upstream-status: Taken from upstream:
+ <https://git.savannah.gnu.org/cgit/hurd/hurd.git/commit/?id=d494333e7607ea03819adcfb69d89f8248ec2044>.
+
+From d494333e7607ea03819adcfb69d89f8248ec2044 Mon Sep 17 00:00:00 2001
+From: Flavio Cruz <flaviocruz@gmail.com>
+Date: Sun, 21 Jul 2024 17:20:55 -0400
+Subject: [PATCH] nfsd: fix -Werror=incompatible-pointer-types issues for
+ x86_64
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+Message-ID: <3pmgbk2myx4phdb6wcso54solmybulrvbytols5md3nri2p2qp@xjmfmpvwjp6t>
+---
+ nfsd/cache.c | 2 +-
+ nfsd/ops.c | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/nfsd/cache.c b/nfsd/cache.c
+index cd5524af..864739c0 100644
+--- a/nfsd/cache.c
++++ b/nfsd/cache.c
+@@ -387,7 +387,7 @@ create_cached_handle (int fs, struct cache_handle *credc, file_t userport)
+ struct cache_handle *c;
+ int hash;
+ char *bp = fhandle.array + sizeof (int);
+- size_t handlelen = NFS2_FHSIZE - sizeof (int);
++ mach_msg_type_number_t handlelen = NFS2_FHSIZE - sizeof (int);
+ mach_port_t newport, ref;
+
+ /* Authenticate USERPORT so that we can call file_getfh on it. */
+diff --git a/nfsd/ops.c b/nfsd/ops.c
+index 463a9c87..64e94b93 100644
+--- a/nfsd/ops.c
++++ b/nfsd/ops.c
+@@ -292,7 +292,7 @@ op_write (struct cache_handle *c,
+ off_t offset;
+ size_t count;
+ error_t err;
+- mach_msg_type_number_t amt;
++ vm_size_t amt;
+ char *bp;
+ struct stat st;
+
+@@ -583,7 +583,7 @@ op_readdir (struct cache_handle *c,
+ error_t err;
+ char *buf;
+ struct dirent *dp;
+- size_t bufsize;
++ mach_msg_type_number_t bufsize;
+ int nentries;
+ int i;
+ int *replystart;
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 27/40] gnu: git-minimal: Support the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
a32f714f0556a99e042e2500945569a5278c8fec.1731427612.git.janneke@gnu.org
* gnu/packages/version-control.scm (git-minimal)[arguments]: When using gcc >=
14, use "-Wno-implicit-function-declaration" in #:make-flags.
Use target-hurd? instead of comparing with "i586-pc-gnu" in "use-host-uname_S"
phase.

Change-Id: Ib9836be8a1e389a82c8a89adf22aaeac0d85bd14
---
gnu/packages/version-control.scm | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

Toggle diff (36 lines)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index c892a83a98..325b7ca8d8 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -113,6 +113,7 @@ (define-module (gnu packages version-control)
#:use-module (gnu packages flex)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gawk)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
@@ -296,7 +297,10 @@ (define-public git-minimal
;; By default 'make install' creates hard links for
;; things in 'libexec/git-core', which leads to huge
;; nars; see <https://bugs.gnu.org/21949>.
- "NO_INSTALL_HARDLINKS=indeed")
+ "NO_INSTALL_HARDLINKS=indeed"
+ #$@(if (version>=? (package-version (current-gcc)) "14")
+ #~("-Wno-implicit-function-declaration")
+ #~()))
#:phases
#~(modify-phases %standard-phases
#$@(if (%current-target-system)
@@ -305,7 +309,7 @@ (define-public git-minimal
(lambda _
(substitute* "config.mak.uname"
(("uname_S := .*" all)
- (if (equal? #$(%current-target-system) "i586-pc-gnu")
+ (if #$(target-hurd?)
"uname_S := GNU\n"
all))))))
;; We do not have a full bash when cross-compiling.
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 28/40] gnu: inetutils: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
1f456c4d97b5d0e1e017b2048daa8af5680fea13.1731427612.git.janneke@gnu.org
* gnu/packages/patches/inetutils-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/admin.scm (inetutils)[arguments]: When building for the 64bit
Hurd, use it in new "apply-hurd64-patch" stage.

Change-Id: I780f6a92418b49e5fe0d23eb1c90e155216f1428
---
gnu/local.mk | 1 +
gnu/packages/admin.scm | 14 ++++-
gnu/packages/patches/inetutils-hurd64.patch | 65 +++++++++++++++++++++
3 files changed, 78 insertions(+), 2 deletions(-)
create mode 100644 gnu/packages/patches/inetutils-hurd64.patch

Toggle diff (118 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 948fc4ba73..0759555494 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1570,6 +1570,7 @@ dist_patch_DATA = \
%D%/packages/patches/indent-CVE-2024-0911.patch \
%D%/packages/patches/instead-use-games-path.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
+ %D%/packages/patches/inetutils-hurd64.patch \
%D%/packages/patches/irrlicht-use-system-libs.patch \
%D%/packages/patches/irrlicht-link-against-needed-libs.patch \
%D%/packages/patches/isl-0.11.1-aarch64-support.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 9c765b51a9..311d613b68 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -31,7 +31,7 @@
;;; Copyright © 2019, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2019, 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
@@ -1044,7 +1044,17 @@ (define-public inetutils
"\\\""))
;; On some systems, 'libls.sh' may fail with an error such as:
;; "Failed to tell switch -a apart from -A".
- #:parallel-tests? #f))
+ #:parallel-tests? #f
+ #:phases (if (target-hurd64?)
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'apply-hurd64-patch
+ (lambda _
+ (let ((patch
+ #$(local-file
+ (search-patch
+ "inetutils-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i" patch)))))
+ #~%standard-phases)))
(inputs
(list coreutils
shadow ;for login (used in telnetd and rlogind)
diff --git a/gnu/packages/patches/inetutils-hurd64.patch b/gnu/packages/patches/inetutils-hurd64.patch
new file mode 100644
index 0000000000..3fb238bcdc
--- /dev/null
+++ b/gnu/packages/patches/inetutils-hurd64.patch
@@ -0,0 +1,65 @@
+Upstream-status: Not presented upstream.
+
+From 0804e655a7abfd22dc3a053f03fab8f811405f84 Mon Sep 17 00:00:00 2001
+From: Janneke Nieuwenhuizen <janneke@gnu.org>
+Date: Fri, 8 Nov 2024 11:07:56 +0100
+Subject: [PATCH] ifconfig hurd: Build fix for the 64bit HUrd.
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+* ifconfig/system/hurd.c (check_driving): Use mach_msg_type_number_t
+instead of size_t for file_get_fs_options.
+---
+ ifconfig/system/hurd.c | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/ifconfig/system/hurd.c b/ifconfig/system/hurd.c
+index 70b2ed27..86fe6375 100644
+--- a/ifconfig/system/hurd.c
++++ b/ifconfig/system/hurd.c
+@@ -47,7 +47,7 @@ check_driving (const char *name)
+ error_t err;
+
+ char *argz = 0, *new_argz = 0;
+- size_t argz_len = 0;
++ mach_msg_type_number_t argz_len = 0;
+ char *entry = 0;
+ const char *socket = _SERVERS_SOCKET "/2";
+
+@@ -106,7 +106,9 @@ check_driving (const char *name)
+ new_argz = malloc (argz_len);
+ memcpy (new_argz, argz, argz_len);
+
+- err = argz_insert (&new_argz, &argz_len, new_argz, name);
++ size_t new_argz_len = 0;
++
++ err = argz_insert (&new_argz, &new_argz_len, new_argz, name);
+ if (err)
+ {
+ error (0, err, "Could not prepend name %s to '%s' for %s", name,
+@@ -114,7 +116,7 @@ check_driving (const char *name)
+ goto out;
+ }
+
+- err = argz_insert (&new_argz, &argz_len, new_argz, "-i");
++ err = argz_insert (&new_argz, &new_argz_len, new_argz, "-i");
+ if (err)
+ {
+ argz_stringify (new_argz, argz_len, ' ');
+@@ -122,10 +124,10 @@ check_driving (const char *name)
+ goto out;
+ }
+
+- err = fsys_set_options (fsys, new_argz, argz_len, 1);
++ err = fsys_set_options (fsys, new_argz, new_argz_len, 1);
+ if (err)
+ {
+- argz_stringify (new_argz, argz_len, ' ');
++ argz_stringify (new_argz, new_argz_len, ' ');
+ error (0, err, "Could not make pfinet %s drive %s with '%s'", socket,
+ name, new_argz);
+ goto out;
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 29/40] gnu: grub: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
5ccd41575a2915402ce6eb1175cd6c149f762ae8.1731427612.git.janneke@gnu.org
* gnu/packages/patches/grub-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/bootloaders.scm (grub)[arguments]: When building for the 64bit
Hurd, use it in new "apply-hurd64-patch" stage.

Change-Id: I780f6a92418b49e5fe0d23eb1c90e155216f1428
---
gnu/local.mk | 1 +
gnu/packages/bootloaders.scm | 8 +++++++
gnu/packages/patches/grub-hurd64.patch | 32 ++++++++++++++++++++++++++
3 files changed, 41 insertions(+)
create mode 100644 gnu/packages/patches/grub-hurd64.patch

Toggle diff (72 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 0759555494..2b8a8d7065 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1488,6 +1488,7 @@ dist_patch_DATA = \
%D%/packages/patches/gromacs-tinyxml2.patch \
%D%/packages/patches/groovy-add-exceptionutilsgenerator.patch \
%D%/packages/patches/grub-efi-fat-serial-number.patch \
+ %D%/packages/patches/grub-hurd64.patch \
%D%/packages/patches/grub-setup-root.patch \
%D%/packages/patches/guile-1.8-cpp-4.5.patch \
%D%/packages/patches/guile-2.2-skip-oom-test.patch \
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index e188553910..caec26edc7 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -192,6 +192,14 @@ (define-public grub
(setenv "BUILD_FREETYPE_CFLAGS"
(string-append "-I" freetype
"/include/freetype2"))))))
+ #$@(if (target-hurd64?)
+ #~((add-after 'unpack 'apply-hurd64-patch
+ (lambda _
+ (let ((patch
+ #$(local-file
+ (search-patch "grub-hurd64.patch"))))
+ (invoke "patch" "--force" "-p1" "-i" patch)))))
+ #~())
(add-before 'check 'disable-flaky-test
(lambda _
;; This test is unreliable. For more information, see:
diff --git a/gnu/packages/patches/grub-hurd64.patch b/gnu/packages/patches/grub-hurd64.patch
new file mode 100644
index 0000000000..d5acd99eb8
--- /dev/null
+++ b/gnu/packages/patches/grub-hurd64.patch
@@ -0,0 +1,32 @@
+Upstream-status: Not presented upstream.
+
+From a4eb7d1f2cbd02132a9f5512f1294182576d4653 Mon Sep 17 00:00:00 2001
+From: Janneke Nieuwenhuizen <janneke@gnu.org>
+Date: Fri, 8 Nov 2024 11:47:49 +0100
+Subject: [PATCH] osdep/hurd: Support the 64bit Hurd.
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+* grub-core/osdep/hurd/getroot.c (grub_util_find_hurd_root_device):
+Use mach_msg_type_number_t instead of size_t.
+---
+ grub-core/osdep/hurd/getroot.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/grub-core/osdep/hurd/getroot.c b/grub-core/osdep/hurd/getroot.c
+index 0efefdab4..b849700e6 100644
+--- a/grub-core/osdep/hurd/getroot.c
++++ b/grub-core/osdep/hurd/getroot.c
+@@ -58,7 +58,7 @@ grub_util_find_hurd_root_device (const char *path)
+ file_t file;
+ error_t err;
+ char *argz = NULL, *name = NULL, *ret;
+- size_t argz_len = 0;
++ mach_msg_type_number_t argz_len = 0;
+ int i;
+
+ file = file_name_lookup (path, 0, 0);
+--
+Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 30/40] gnu: guile-fibers: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
99063d4c0e6038e2a42739f0b8eb6d01f6eb1cd2.1731427612.git.janneke@gnu.org
* gnu/packages/guile-xyz.scm (guile-fibers)[arguments]: Also modify phases for
the 64bit Hurd.

Change-Id: I780f6a92418b49e5fe0d23eb1c90e155216f1428
---
gnu/packages/guile-xyz.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

Toggle diff (16 lines)
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index ea192c2c03..a874ab908d 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -855,7 +855,7 @@ (define-public guile-fibers
(list #:make-flags
#~(list "GUILE_AUTO_COMPILE=0")
#:phases
- (if (target-x86-64?)
+ (if (and (target-x86-64?) (not (target-hurd?)))
#~%standard-phases
#~(modify-phases %standard-phases
(add-before 'check 'disable-some-tests
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 31/40] gnu: m4: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
3cfbaa61642a2298009a4ef94d66a02a31a96331.1731427612.git.janneke@gnu.org
* gnu/packages/base.scm (grep)[arguments]: When building for the 64bit Hurd,
add patch-sigsegv.h stage.

Change-Id: I82993ebde268867348893556a9476faa5c4e9453
---
gnu/packages/m4.scm | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

Toggle diff (30 lines)
diff --git a/gnu/packages/m4.scm b/gnu/packages/m4.scm
index 39b50b6800..081304db34 100644
--- a/gnu/packages/m4.scm
+++ b/gnu/packages/m4.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2012, 2013, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
-;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -64,6 +64,13 @@ (define-public m4
(("(^| )main *\\(.*" all)
(string-append all "{\n exit (77);//"))))))
'())
+ ,@(if (target-hurd64?)
+ '((add-after 'unpack 'patch-sigsegv
+ (lambda _
+ ;; Stack overflow recovery does not compile
+ (substitute* "lib/sigsegv.in.h"
+ (("__GNU__") "__XGNU__")))))
+ '())
(add-after 'unpack 'configure-shell
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(let ((/bin/sh (search-input-file (or native-inputs inputs)
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 33/40] gnu: commencement: mig-boot0: Update to 1.8+git20231217..
(address . 74290@debbugs.gnu.org)
90a2eb69481e3fed9e9018c58a068e0d81573eea.1731427612.git.janneke@gnu.org
* gnu/packages/commencement.scm (mig-boot0): Update to 1.8+git20231217.

Change-Id: I591ff7cb84ac1e567d49f51eb40be19fa6b15f5b
---
gnu/packages/commencement.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (25 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index a8d48fbb93..faa4c903e4 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2671,7 +2671,7 @@ (define mig-boot0
(package
(inherit mig)
(name "mig-boot0")
- (version "1.8+git20230520")
+ (version "1.8+git20231217")
(source
(origin
(inherit (package-source mig))
@@ -2684,7 +2684,7 @@ (define mig-boot0
"mig-" version ".tar.gz"))
(sha256
(base32
- "1l1vfm4wap5yxylv91wssgpy7fnq22wp3akgd5nv995kychfa9jy")))))))
+ "18vz3ifrhhlvrdmlv70h63wl0kh5w8jcpsjx9yscsw9yazm1lzs7")))))))
(native-inputs (list autoconf-boot0 automake-boot0 bison-boot0 flex-boot0
gnumach-headers-boot0))
(inputs (list flex-boot0 gnumach-headers-boot0))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 32/40] gnu: commencement: gnumach-headers-boot0: Update to 1.8+git20240714.
(address . 74290@debbugs.gnu.org)
ef637ea92ec20cfd83e85744bcb7b2fa92373522.1731427612.git.janneke@gnu.org
* gnu/packages/commencement.scm (gnumach-headers-boot0): Update to
1.8+git20240714.

Change-Id: If30d7b4a688070d70741173c97a60284ca8299ef
---
gnu/packages/commencement.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (25 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index a000cbfdc5..a8d48fbb93 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2636,7 +2636,7 @@ (define gnumach-headers-boot0
(package
(inherit gnumach-headers)
(name "gnumach-headers-boot0")
- (version "1.8+git20230410")
+ (version "1.8+git20240714")
(source
(origin
(inherit (package-source gnumach-headers))
@@ -2650,7 +2650,7 @@ (define gnumach-headers-boot0
"gnumach-" version ".tar.gz"))
(sha256
(base32
- "1s09256g2ny46idrn8frzs7r51la9ni45bmglmswlsmz9ii7dpi4")))))))
+ "1bnw5vdbq91zjxklx23qvim40fb0yw1qdxhn9n37jdfypm6q3xir")))))))
(native-inputs (list autoconf-boot0 automake-boot0 texinfo-boot0))
(arguments
(substitute-keyword-arguments (package-arguments gnumach-headers)
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 35/40] gnu: commencement: libstdc++-boot0-gcc7: Replace by make-libstdc++-boot0.
(address . 74290@debbugs.gnu.org)
185134dc100369ffbf6362e9b8b1fb58ae9f8707.1731427612.git.janneke@gnu.org
* gnu/packages/commencement.scm (libstdc++-boot0-gcc7): Change variable to...
(make-libstdc++-boot0): ...this new procedure and update accordingly.
(gcc-boot0): Update accordingly, and cater for x86_64-gnu.

Change-Id: Ib0bc84e4dab90b080e5a01e6ab932f8be456c656
---
gnu/packages/commencement.scm | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

Toggle diff (29 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index aad3f523b5..b2558c0d54 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2274,9 +2274,9 @@ (define libstdc++-boot0
(inputs (%boot0-inputs))
(native-inputs '()))))
-(define libstdc++-boot0-gcc7
+(define (make-libstdc++-boot0 gcc)
;; GCC >= 7 is needed by architectures which use C++-14 features.
- (let ((lib (make-libstdc++ gcc-7)))
+ (let ((lib (make-libstdc++ gcc)))
(package
(inherit lib)
(source (bootstrap-origin (package-source lib)))
@@ -2447,7 +2447,8 @@ (define gcc-boot0
;; The libstdc++ that libcc1 links against.
("libstdc++" ,(match (%current-system)
- ("riscv64-linux" libstdc++-boot0-gcc7)
+ ("riscv64-linux" (make-libstdc++-boot0 gcc-7))
+ ("x86_64-gnu" (make-libstdc++-boot0 gcc-14))
(_ libstdc++-boot0)))
;; Call it differently so that the builder can check whether
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 34/40] gnu: commencement: hurd-headers-boot0: Update to 0.9.git20240714.
(address . 74290@debbugs.gnu.org)
058b38812125dd2c1557a9fc8113899d4671cb7c.1731427612.git.janneke@gnu.org
* gnu/packages/commencement.scm (hurd-headers-boot0): Update to
0.9.git20240714.

Change-Id: Ib3edaa3adb9cfe4cb8c5a3af83cb2701ee9dda1b
---
gnu/packages/commencement.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (25 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index faa4c903e4..aad3f523b5 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -2700,7 +2700,7 @@ (define hurd-headers-boot0
(package
(inherit hurd-headers)
(name "hurd-headers-boot0")
- (version "0.9.git20230520")
+ (version "0.9.git20240714")
(source
(origin
(inherit (package-source hurd-headers))
@@ -2713,7 +2713,7 @@ (define hurd-headers-boot0
"hurd-v" version ".tar.gz"))
(sha256
(base32
- "0ybmx7bhy21zv1if2hfdspn13zn68vki1na72sw2jj87gj8przna")))))))
+ "0wcihffclwijjamx4cjbr8i92yg780538ipg2z208ahg96jjrmgq")))))))
(native-inputs
(list autoconf-boot0 automake-boot0 mig-boot0))
(inputs '()))))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 38/40] gnu: flex: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
4c0589e8f0a3a305ac75921c57f6d89301a43adb.1731427612.git.janneke@gnu.org
* gnu/packages/flex.scm (flex): When building for the 64bit Hurd, add
"-Wno-int-conversion "-Wno-implicit-function-declaration" to #:configure-flags.

Change-Id: Ia0503e3f5c7aa5354a949b69035a1be6f93ec85f
---
gnu/packages/flex.scm | 8 ++++++++
1 file changed, 8 insertions(+)

Toggle diff (36 lines)
diff --git a/gnu/packages/flex.scm b/gnu/packages/flex.scm
index 7972675971..cf2dfe9ec9 100644
--- a/gnu/packages/flex.scm
+++ b/gnu/packages/flex.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,6 +23,7 @@ (define-module (gnu packages flex)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
+ #:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages m4)
@@ -53,6 +55,12 @@ (define-public flex
((#:tests? _ #f) #f)))
(inputs (alist-delete "flex" (package-inputs bison))))))
`(("bison" ,bison-for-tests))))
+ (arguments
+ (if (target-hurd64?)
+ (list #:configure-flags
+ #~'(#$(string-append "CFLAGS=-Wno-int-conversion"
+ " -Wno-implicit-function-declaration")))
+ '()))
;; m4 is not present in PATH when cross-building
(native-inputs
(list help2man m4))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 37/40] gnu: texinfo-4: Fix build for the 64bit Hurd.
(address . 74290@debbugs.gnu.org)
645534e6b891ad98d6d2971cb8dc14acb508aed1.1731427612.git.janneke@gnu.org
* gnu/packages/texinfo.scm (texinfo-4): When building for the 64bit Hurd, add
"-Wno-incompatible-pointer-types" to #:configure-flags.

Change-Id: Ia0503e3f5c7aa5354a949b69035a1be6f93ec85f
---
gnu/packages/texinfo.scm | 50 ++++++++++++++++++++++------------------
1 file changed, 27 insertions(+), 23 deletions(-)

Toggle diff (74 lines)
diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm
index 81afdaf7a7..c0a35b6ffa 100644
--- a/gnu/packages/texinfo.scm
+++ b/gnu/packages/texinfo.scm
@@ -7,7 +7,7 @@
;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022 ( <paren@disroot.org>
;;;
@@ -165,31 +165,35 @@ (define-public texinfo-4
(modify-inputs (package-native-inputs texinfo)
(prepend automake)))
(arguments
- (substitute-keyword-arguments (package-arguments texinfo)
- ((#:phases phases)
- `(modify-phases ,phases
- (add-after 'unpack 'fix-configure
- (lambda* (#:key inputs native-inputs #:allow-other-keys)
- ;; Replace outdated config.sub and config.guess.
- (with-directory-excursion "build-aux"
- (for-each
- (lambda (file)
- (install-file (string-append
- (assoc-ref
- (or native-inputs inputs) "automake")
- "/share/automake-"
- ,(version-major+minor
- (package-version automake))
- "/" file) "."))
- '("config.sub" "config.guess")))
- #t))
- ;; Build native version of tools before running 'build phase.
- ,@(if (%current-target-system)
- `((add-before 'build 'make-native-gnu-lib
+ (append
+ (substitute-keyword-arguments (package-arguments texinfo)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'fix-configure
+ (lambda* (#:key inputs native-inputs #:allow-other-keys)
+ ;; Replace outdated config.sub and config.guess.
+ (with-directory-excursion "build-aux"
+ (for-each
+ (lambda (file)
+ (install-file (string-append
+ (assoc-ref
+ (or native-inputs inputs) "automake")
+ "/share/automake-"
+ ,(version-major+minor
+ (package-version automake))
+ "/" file) "."))
+ '("config.sub" "config.guess")))
+ #t))
+ ;; Build native version of tools before running 'build phase.
+ ,@(if (%current-target-system)
+ `((add-before 'build 'make-native-gnu-lib
(lambda* (#:key inputs #:allow-other-keys)
(invoke "make" "-C" "tools/gnulib/lib")
#t)))
- '())))))))
+ '()))))
+ (if (target-hurd64?)
+ (list #:configure-flags ''("CFLAGS=-Wno-incompatible-pointer-types"))
+ '())))))
(define-public info-reader
;; The idea of this package is to have the standalone Info reader without
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 36/40] gnu: gettext: Fix cross-build shebangs.
(address . 74290@debbugs.gnu.org)
73bba6d236af4d1501d9a28f94dba8aa77f4148c.1731427612.git.janneke@gnu.org
This fixes running autopoint from a cross-built gettext[-minimal].

* gnu/packages/gettext.scm (gettext-minimal): When cross-building, add stage
"patch-cross-shebangs".

Change-Id: I5029a3be0b5cee3c173de66d8f0b027b02c3bc47
---
gnu/packages/gettext.scm | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)

Toggle diff (37 lines)
diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm
index cabe4f3be9..7862c296bd 100644
--- a/gnu/packages/gettext.scm
+++ b/gnu/packages/gettext.scm
@@ -9,7 +9,7 @@
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Miguel <rosen644835@gmail.com>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 EuAndreh <eu@euandre.org>
;;; Copyright © 2022, 2024 gemmaro <gemmaro.dev@gmail.com>
;;; Copyright © 2023 Maxim Cournoyer maxim.cournoyer@gmail.com>
@@ -130,7 +130,19 @@ (define-public gettext-minimal
((" test-tls\\$\\(EXEEXT\\) ") " ")))
'())
- #t)))))
+ #t))))
+ #$@(if (%current-target-system)
+ #~((add-after 'install 'patch-cross-shebangs
+ (lambda _
+ (let ((path (list (string-append #$bash-minimal "/bin"))))
+ (define (patch-cross-shebang file)
+ (patch-shebang file path))
+ (with-directory-excursion
+ (string-append #$output "/bin")
+ (for-each
+ patch-cross-shebang
+ '("autopoint" "gettext.sh" "gettextize")))))))
+ '()))
;; When tests fail, we want to know the details.
#:make-flags #~'("VERBOSE=yes")))
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 39/40] system: examples: Add bare-hurd64.tmpl.
(address . 74290@debbugs.gnu.org)
3621f843cd8df63d2d5c66774f1a953153c7e035.1731427612.git.janneke@gnu.org
* gnu/system/examples/bare-hurd.tmpl: Update comments.
* gnu/system/examples/bare-hurd64.tmpl: New file.

Change-Id: I8d26afd19afaa8fb3558948b50b0efdc0f83f29c
---
gnu/system/examples/bare-hurd.tmpl | 21 +++++----
gnu/system/examples/bare-hurd64.tmpl | 70 ++++++++++++++++++++++++++++
2 files changed, 82 insertions(+), 9 deletions(-)
create mode 100644 gnu/system/examples/bare-hurd64.tmpl

Toggle diff (127 lines)
diff --git a/gnu/system/examples/bare-hurd.tmpl b/gnu/system/examples/bare-hurd.tmpl
index 68c6d3c166..9bfa776769 100644
--- a/gnu/system/examples/bare-hurd.tmpl
+++ b/gnu/system/examples/bare-hurd.tmpl
@@ -3,23 +3,26 @@
;; This is an operating system configuration template
;; for a "bare bones" QEMU setup, with no X11 display server.
-;; To build a disk image for a virtual machine, do
+;; To build a disk image for a virtual machine, do:
;;
-;; ./pre-inst-env guix system image --image-type=hurd-raw \
+;; ./pre-inst-env guix system image --image-type=hurd-qcow2 \
;; gnu/system/examples/bare-hurd.tmpl
;;
-;; You may run it like so
+;; You may run it like so:
;;
-;; guix shell qemu -- qemu-system-i386 -enable-kvm -m 2048 \
-;; -device rtl8139,netdev=net0 -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
-;; -snapshot -hda <the-image>
+;; guix shell qemu -- qemu-system-i386 -m 2048 \
+;; --enable-kvm \
+;; --device e1000,netdev=net0 \
+;; --netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
+;; --snapshot
+;; --hda /gnu/store/...-disk-image
;;
-;; and use it like
+;; and use it like:
;;
;; ssh -p 10022 root@localhost
;; guix build -e '(@@ (gnu packages commencement) gnu-make-boot0)'
;;
-;; or even (if you use --image-size=3G)
+;; or even, if you build the image with at least --image-size=3G:
;;
;; guix build hello
@@ -34,7 +37,7 @@
(bootloader grub-minimal-bootloader)
(targets '("/dev/sdX"))))
(file-systems (cons (file-system
- (device (file-system-label "my-root"))
+ (device (file-system-label "hurd"))
(mount-point "/")
(type "ext2"))
%base-file-systems))
diff --git a/gnu/system/examples/bare-hurd64.tmpl b/gnu/system/examples/bare-hurd64.tmpl
new file mode 100644
index 0000000000..89811e458a
--- /dev/null
+++ b/gnu/system/examples/bare-hurd64.tmpl
@@ -0,0 +1,70 @@
+;; -*-scheme-*-
+
+;; This is an operating system configuration template
+;; for a "bare bones" QEMU setup, with no X11 display server.
+
+;; To build a disk image for a virtual machine, do:
+;;
+;; ./pre-inst-env guix system image --image-type=hurd64-qcow2 \
+;; gnu/system/examples/bare-hurd64.tmpl
+;;
+;; You may run it like so:
+;;
+;; guix shell qemu@7 -- qemu-system-x86_64 -m 2048 \
+;; --machine q35 \
+;; --enable-kvm \
+;; --device e1000,netdev=net0 \
+;; --netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
+;; --snapshot
+;; --hda /gnu/store/...-disk-image
+;;
+;; and use it like:
+;;
+;; ssh -p 10022 root@localhost
+;; guix build -e '(@@ (gnu packages commencement) gnu-make-boot0)'
+;;
+;; or even, if you build the image with at least --image-size=3G:
+;;
+;; guix build hello
+
+(use-modules (gnu) (gnu system hurd) (guix utils))
+(use-service-modules ssh)
+(use-package-modules ssh)
+
+(define %hurd64-os
+ (operating-system
+ (inherit %hurd64-default-operating-system)
+ (bootloader (bootloader-configuration
+ (bootloader grub-minimal-bootloader)
+ (targets '("/dev/sdX"))))
+ (kernel-arguments '("noide")) ;use rumpdisk
+ (file-systems (cons (file-system
+ (device (file-system-label "hurd"))
+ (mount-point "/")
+ (type "ext2"))
+ %base-file-systems))
+ (host-name "guixygnu64")
+ (timezone "Europe/Amsterdam")
+ (users (cons (user-account
+ (name "guix")
+ (comment "Anonymous Hurd Hacker")
+ (group "users")
+ (supplementary-groups '("wheel")))
+ %base-user-accounts))
+ (packages (cons openssh-sans-x %base-packages/hurd))
+ (services (cons (service openssh-service-type
+ (openssh-configuration
+ (openssh openssh-sans-x)
+ (port-number 2222)
+ (permit-root-login #t)
+ (allow-empty-passwords? #t)
+ (password-authentication? #t)))
+ ;; For installing on a real (non-QEMU) machine, use:
+ ;; (static-networking-service-type
+ ;; (list %loopback-static-networking
+ ;; (static-networking
+ ;; ...)))
+ ;; %base-services/hurd
+ %base-services+qemu-networking/hurd))))
+
+%hurd64-os
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
J
J
Janneke Nieuwenhuizen wrote on 12 Nov 17:25 +0100
[PATCH v2 40/40] system: examples: Add devel-hurd64.tmpl.
(address . 74290@debbugs.gnu.org)
6e21691025e2b9a3284e5be628779b6838bcde54.1731427612.git.janneke@gnu.org
This also updates comments and removes the comment about a very old
`bootstrap-profile' hack.

* gnu/system/examples/devel-hurd.tmpl (hurd-packages): New variable
(%hurd-devel-os): Use it.
* gnu/system/examples/devel-hurd64.tmpl: New file.

Change-Id: I54b6b0843f0dd635d89cca483ae43d23b20d21e8
---
gnu/system/examples/devel-hurd.tmpl | 70 +++++++++++----------------
gnu/system/examples/devel-hurd64.tmpl | 65 +++++++++++++++++++++++++
2 files changed, 93 insertions(+), 42 deletions(-)
create mode 100644 gnu/system/examples/devel-hurd64.tmpl

Toggle diff (199 lines)
diff --git a/gnu/system/examples/devel-hurd.tmpl b/gnu/system/examples/devel-hurd.tmpl
index 3dca0706d1..066bdfe9d8 100644
--- a/gnu/system/examples/devel-hurd.tmpl
+++ b/gnu/system/examples/devel-hurd.tmpl
@@ -3,7 +3,7 @@
;; This is an operating system configuration template for a "bare bones
;; development" setup, with no X11 display server.
-;; To build a disk image for a virtual machine, do
+;; To build a disk image for a virtual machine, do something like:
;;
;; ./pre-inst-env guix system image --image-type=hurd-qcow2 --image-size=6G \
;; --no-offload gnu/system/examples/devel-hurd.tmpl
@@ -11,41 +11,38 @@
;; You may run it like so
;;
;; cp /gnu/store/.../disk-image devel-hurd.img
-;; guix shell qemu -- qemu-system-i386 -enable-kvm -m 4096 \
-;; -device rtl8139,netdev=net0 \
-;; -netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
-;; -hda devel-hurd.img
-;;
-;; and use it like
+;; guix shell qemu -- qemu-system-i386 -m 4096 \
+;; --enable-kvm \
+;; --device e1000,netdev=net0 \
+;; --netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
+;; --hda devel-hurd.img
;;
;; ssh -p 10022 root@localhost
;; guix build -e '(@@ (gnu packages commencement) gnu-make-boot0)'
;;
-;; or even (if you use --image-size=3G)
+;; or even:
;;
;; guix build hello
;;
-;; Building Guix, do something like:
+;; For Guix hacking, do something like:
;;
-;; GUIX_PROFILE=/run/current-system/bootstrap-profile
-;; source $GUIX_PROFILE/etc/profile
+;; guix shell --boostrap -D guix
;; mkdir -p ~/src/guix
;; cd src/guix
;; git clone https://git.savannah.gnu.org/git/guix.git master
;; cd master
;; ./bootstrap
-;; ./configure --with-courage
+;; ./configure
;; make
+(include "bare-hurd.tmpl")
+
(use-modules (srfi srfi-1)
(ice-9 match)
- (gnu)
(gnu system hurd)
- (gnu system locale)
(guix packages)
- (guix store)
- (guix utils))
-(use-service-modules ssh virtualization)
+ (guix store))
+
(use-package-modules base compression file gawk gdb hurd less m4
package-management ssh version-control)
@@ -64,23 +61,23 @@
;; These are not essential and do not build yet.
'("graphviz" "guile-avahi" "po4a"))))
+(define hurd-packages
+ (filter-map input->package
+ (fold alist-delete (package-direct-inputs hurd)
+ ;; These are not essential, rumpkernel is very big.
+ '("dde-sources" "parted" "rumpkernel" "util-linux"
+ "texinfo"))))
+
(define %hurd-devel-os
(operating-system
- (inherit %hurd-vm-operating-system)
- (host-name "guixydevel")
+ (inherit %hurd-os)
+ (bootloader (bootloader-configuration
+ (bootloader grub-minimal-bootloader)
+ (targets '("/dev/sdX"))
+ (timeout 0)))
(timezone "Europe/Berlin")
- (file-systems (cons (file-system
- (device (file-system-label "hurd"))
- (mount-point "/")
- (type "ext2"))
- %base-file-systems))
(swap-devices (list (swap-space
(target "/swapfile"))))
- (users (cons (user-account
- (name "guix")
- (group "users")
- (supplementary-groups '("wheel")))
- %base-user-accounts))
(packages (cons*
gdb-minimal
git-minimal
@@ -89,18 +86,7 @@
openssh-sans-x
(append
guix-packages
- %base-packages/hurd)))
- (services (cons*
- (modify-services (operating-system-user-services
- %hurd-vm-operating-system)
- (openssh-service-type
- config =>
- ;; Set wide open
- (openssh-configuration
- (openssh openssh-sans-x)
- (port-number 2222)
- (permit-root-login #t)
- (allow-empty-passwords? #t)
- (password-authentication? #t))))))))
+ hurd-packages
+ %base-packages/hurd)))))
%hurd-devel-os
diff --git a/gnu/system/examples/devel-hurd64.tmpl b/gnu/system/examples/devel-hurd64.tmpl
new file mode 100644
index 0000000000..ebc9fe8138
--- /dev/null
+++ b/gnu/system/examples/devel-hurd64.tmpl
@@ -0,0 +1,65 @@
+;; -*-scheme-*-
+
+;; This is an operating system configuration template
+;; for a "bare bones" QEMU setup, with no X11 display server.
+
+;; To build a disk image for a virtual machine, do:
+;;
+;; ./pre-inst-env guix system image --image-type=hurd-qcow2 --image-size=6G \
+;; --no-offload gnu/system/examples/devel-hurd64.tmpl
+;;
+;; You may run it like so:
+;;
+;; cp /gnu/store/.../disk-image devel-hurd.img
+;; guix shell qemu@7 -- qemu-system-x86_64 -m 4096 \
+;; --machine q35 \
+;; --enable-kvm \
+;; --device e1000,netdev=net0 \
+;; --netdev user,id=net0,hostfwd=tcp:127.0.0.1:10022-:2222 \
+;; --hda devel-hurd.img
+;;
+;; and use it like:
+;;
+;; ssh -p 10022 root@localhost
+;; guix build -e '(@@ (gnu packages commencement) gnu-make-boot0)'
+;;
+;; or even:
+;;
+;; guix build hello
+;;
+;; For Guix hacking, do something like:
+;;
+;; guix shell --boostrap -D guix
+;; mkdir -p ~/src/guix
+;; cd src/guix
+;; git clone git clone git://git.savannah.gnu.org/guix
+;; cd master
+;; ./bootstrap
+;; ./configure
+;; make
+
+(include "devel-hurd.tmpl")
+(include "bare-hurd64.tmpl")
+
+(define %hurd64-devel-os
+ (operating-system
+ (inherit %hurd64-os)
+ (bootloader (bootloader-configuration
+ (bootloader grub-minimal-bootloader)
+ (targets '("/dev/sdX"))
+ (timeout 0)))
+ (timezone "Europe/Berlin")
+ (swap-devices (list (swap-space
+ (target "/swapfile"))))
+ (packages (cons*
+ gdb-minimal
+ git-minimal
+ gnu-make
+ m4
+ openssh-sans-x
+ (append
+ guix-packages
+ hurd-packages
+ %base-packages/hurd)))))
+
+%hurd64-devel-os
--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
L
L
Ludovic Courtès wrote on 17 Nov 17:49 +0100
Re: [bug#74290] [PATCH v2 13/40] gnu: gcc-13, gcc-14: Support being used as parent for gcc-static.
(name . Janneke Nieuwenhuizen)(address . janneke@gnu.org)
878qthlsao.fsf@gnu.org
Hi!

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

Toggle quote (6 lines)
> * gnu/packages/gcc.scm (gcc-13)[arguments]: Use quasiquote instead of
> g-expressions.
> (gcc-14)[arguments]: Likewise.
>
> Change-Id: I22269b31d49868effe967d46247b189ed9a9d394

[...]

Toggle quote (5 lines)
> - #~(modify-phases #$phases
> - (delete 'patch-hurd-libpthread))
> + `(modify-phases ,phases
> + (delete 'patch-hurd-libpthread))

I think we should not do that as this undoes previous changes.

Instead, can we change whichever package expects to get an sexp here to
use gexps?

Ludo’.
L
L
Ludovic Courtès wrote on 17 Nov 17:50 +0100
Re: [bug#74290] [PATCH v2 14/40] DRAFT gnu: bootstrap: Add support for x86_64-gnu, aka the 64bit Hurd.
(name . Janneke Nieuwenhuizen)(address . janneke@gnu.org)
874j45ls8s.fsf@gnu.org
Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

Toggle quote (15 lines)
> +++ b/gnu/packages/bootstrap.scm
> @@ -125,6 +125,15 @@ (define %bootstrap-executables
> ,(base32 "0nq2c1zb3wv5bf7kd83sziaashydazrn7xgq6kijlk0zj2syzc2m"))
> ("xz"
> ,(base32 "033rhpk6zrpxpd6ffjyg5y2zwq9x9cnq0zljb7k8jlncbalsayq5")))
> + ("x86_64-gnu"
> + ("bash"
> + ,(base32 "1ib1kk1larki3dm46lhl756856zpjwhhlnzkgdyh9f1yf6wm431y"))
> + ("mkdir"
> + ,(base32 "15cnckq4qj1nlmgqy9vq3qa3kcbfm1pc2z38pscxix11j4aqswsm"))
> + ("tar"
> + ,(base32 "1m8v7ddmn42wym2kl9mf7csnwsw6c3jdglg7d7kp7yaa16h5fbck"))
> + ("xz"
> + ,(base32 "16cnr7vr0zawrwcnhshms3v5kyzb2vz1rp4kxmx507cs6rivd05b")))

Are the i586-gnu binaries usable on x86_64-gnu? That would be sweet,
and it would allow us have a single set of binary seeds instead of two.
L
L
Ludovic Courtès wrote on 17 Nov 17:51 +0100
Re: [bug#74290] [PATCH v2 17/40] gnu: libgcrypt: Use libgpg-error-1.50 for the 64bit Hurd.
(name . Janneke Nieuwenhuizen)(address . janneke@gnu.org)(address . 74290@debbugs.gnu.org)
87zflxkdmx.fsf@gnu.org
Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

Toggle quote (5 lines)
> * gnu/packages/gnupg.scm (libgcrypt)[propagated-inputs]: When building for the
> 64bit Hurd, use libgcrypt-1.50.
>
> Change-Id: I608d283a4a307527d5b09a81fa1a53cec5d6bb76

[...]

Toggle quote (6 lines)
> (propagated-inputs
> - `(("libgpg-error-host" ,libgpg-error)))
> + `(("libgpg-error-host" ,(if (target-hurd64?)
> + libgpg-error-1.50
> + libgpg-error))))

Could you add a short comment explaining why this version is needed?
L
L
Ludovic Courtès wrote on 17 Nov 17:51 +0100
Re: [bug#74290] [PATCH v2 04/40] gnu: gcc: Add indirections current-gcc, current-gcc-toolchain.
(name . Janneke Nieuwenhuizen)(address . janneke@gnu.org)
87v7wlkdlf.fsf@gnu.org
Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

Toggle quote (10 lines)
> Throughout: use (current-gcc) and (current-gcc-toolchain) instead of gcc and
> gcc-toolchain.
>
> * gnu/packages/gcc.scm (current-gcc): New procedure.
> (gcc): Deprecate.
> * gnu/packages/commencement.scm (current-gcc-toolchain): New procedure.
> (gcc-toolchain): Deprecate.
>
> Change-Id: I538897e53e2c9956abdc53c67621bb52cbd78a50

I would have loved to avoid those indirections… but can we? :-)
L
L
Ludovic Courtès wrote on 17 Nov 17:59 +0100
Re: [bug#74290] [PATCH v2 05/40] gnu: Add basic support for x86_64-pc-gnu target, aka 64bit Hurd.
(name . Janneke Nieuwenhuizen)(address . janneke@gnu.org)
87mshxkd89.fsf@gnu.org
Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

Toggle quote (10 lines)
> +++ b/gnu/packages/commencement.scm
> @@ -3643,10 +3643,12 @@ (define-public gcc-toolchain-14
> ;; The default GCC
> (define (current-gcc-toolchain)
> "The current default gcc-toolchain version."
> - gcc-toolchain-11)
> + (if (target-hurd64?)
> + gcc-toolchain-14
> + gcc-toolchain-11))

[...]

Toggle quote (10 lines)
> +++ b/gnu/packages/gcc.scm
> @@ -861,10 +861,12 @@ (define-public gcc-14
> ;; the gcc-toolchain-* definitions.
> (define (current-gcc)
> "The current default gcc version."
> - gcc-11)
> + (if (target-hurd64?)
> + gcc-14
> + gcc-11))

This affects not just cross-compilation but also native compilation.

Let’s assume we only want cross-compilation to x86_64-gnu for now, how
about changing the GCC version used for cross-compilation, and only
that:
Toggle diff (13 lines)
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 5781341a87..6120740b3c 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -61,7 +61,7 @@ (define-syntax %xgcc
;;
;; Note: This is a macro so that we do not refer to 'gcc' from the top
;; level, which would lead to circular-dependency issues.
- (identifier-syntax gcc))
+ (identifier-syntax gcc-14))
(define %gcc-include-paths
;; Environment variables for header search paths.
That would affect also non-Hurd cross-compilation targets, but if it
works, it’s simpler.

Then, as a second step, we could prepare a ‘core-packages-team’ branch
that upgrades ‘gcc’ globally, and that way we keep something consistent
and simpler, without ‘current-gcc’. (Though it means we’d have to wait
before we can build natively on x86_64-gnu.)

WDYT?

Ludo’.
L
L
Ludovic Courtès wrote on 17 Nov 18:03 +0100
Re: [bug#74290] [PATCH v2 00/40] Add support for x86_64-gnu, aka the 64bit Hurd.
(name . Janneke Nieuwenhuizen)(address . janneke@gnu.org)(address . 74290@debbugs.gnu.org)
87h685kd2x.fsf@gnu.org
Hi!

Janneke Nieuwenhuizen <janneke@gnu.org> skribis:

Toggle quote (6 lines)
> 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.

[...]

Toggle quote (4 lines)
> building /gnu/store/ps0shilnqwpm40886dnqg4bkazw8pq7i-glibc-bootstrap-0.drv...
> building /gnu/store/8kqnvyf9i8qgizq69314xa576fj4idy5-gcc-bootstrap-0.drv...
> building profile with 4 packages...

This is amazing!!

Glad to see it happen. I’ve just posted a bargaining proposal :-)
regarding ‘current-gcc’ etc., let’s see where that goes.

Anyhow, this is great, it makes the OS more usable.

Ludo’.
J
J
janneke wrote on 17 Nov 18:26 +0100
Re: [bug#74290] [PATCH v2 05/40] gnu: Add basic support for x86_64-pc-gnu target, aka 64bit Hurd.
(name . Ludovic Courtès)(address . ludo@gnu.org)
87o72dn544.fsf@gnu.org
Ludovic Courtès writes:

Toggle quote (26 lines)
> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> +++ b/gnu/packages/commencement.scm
>> @@ -3643,10 +3643,12 @@ (define-public gcc-toolchain-14
>> ;; The default GCC
>> (define (current-gcc-toolchain)
>> "The current default gcc-toolchain version."
>> - gcc-toolchain-11)
>> + (if (target-hurd64?)
>> + gcc-toolchain-14
>> + gcc-toolchain-11))
>
> [...]
>
>> +++ b/gnu/packages/gcc.scm
>> @@ -861,10 +861,12 @@ (define-public gcc-14
>> ;; the gcc-toolchain-* definitions.
>> (define (current-gcc)
>> "The current default gcc version."
>> - gcc-11)
>> + (if (target-hurd64?)
>> + gcc-14
>> + gcc-11))
>
> This affects not just cross-compilation but also native compilation.

Eh, if you mean for the 64bit Hurd, sure! That was the idea, it needs
gcc-14...

Toggle quote (2 lines)
> Let’s assume we only want cross-compilation to x86_64-gnu for now,

Cross-compilation works pretty well, I've been mostly working on native
compilation the past week...

Toggle quote (14 lines)
> how about changing the GCC version used for cross-compilation, and
> only that:
>
> diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
> index 5781341a87..6120740b3c 100644
> --- a/gnu/packages/cross-base.scm
> +++ b/gnu/packages/cross-base.scm
> @@ -61,7 +61,7 @@ (define-syntax %xgcc
> ;;
> ;; Note: This is a macro so that we do not refer to 'gcc' from the top
> ;; level, which would lead to circular-dependency issues.
> - (identifier-syntax gcc))
> + (identifier-syntax gcc-14))

Interesting...I would have thought this would cause a world rebuild,
because of the cross-gcc in commencement. Apparently, it doesn't.

Toggle quote (3 lines)
> That would affect also non-Hurd cross-compilation targets, but if it
> works, it’s simpler.

Ok, I very much like the simplicity of this.

Toggle quote (7 lines)
> Then, as a second step, we could prepare a ‘core-packages-team’ branch
> that upgrades ‘gcc’ globally, and that way we keep something consistent
> and simpler, without ‘current-gcc’. (Though it means we’d have to wait
> before we can build natively on x86_64-gnu.)
>
> WDYT?

I've been thinking about this route and decided against it because it
seems to me that upgrading to gcc-14 will cause a lot of trouble/work.

However, if that work is shared, and we have the build farm to help, it
may be the best route. Maybe the wait doesn't have to be too long?
Also, in the mean time, upstream support might improve.

Maybe we can decide to go the route you propose and also keep this
current-gcc patch on the hurd-team branch for a bit (we prepend a fat
REMOVEME in front of it). We can keep working on native Hurd builds
that use gcc-14 on hurd-team using this hack, until core-packages-team
is ready to make it obsolete?

Greetings,
Janneke


--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J
J
janneke wrote on 17 Nov 18:34 +0100
Re: [bug#74290] [PATCH v2 14/40] DRAFT gnu: bootstrap: Add support for x86_64-gnu, aka the 64bit Hurd.
(name . Ludovic Courtès)(address . ludo@gnu.org)
87frnpn4r2.fsf@gnu.org
Ludovic Courtès writes:

Toggle quote (19 lines)
> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> +++ b/gnu/packages/bootstrap.scm
>> @@ -125,6 +125,15 @@ (define %bootstrap-executables
>> ,(base32 "0nq2c1zb3wv5bf7kd83sziaashydazrn7xgq6kijlk0zj2syzc2m"))
>> ("xz"
>> ,(base32 "033rhpk6zrpxpd6ffjyg5y2zwq9x9cnq0zljb7k8jlncbalsayq5")))
>> + ("x86_64-gnu"
>> + ("bash"
>> + ,(base32 "1ib1kk1larki3dm46lhl756856zpjwhhlnzkgdyh9f1yf6wm431y"))
>> + ("mkdir"
>> + ,(base32 "15cnckq4qj1nlmgqy9vq3qa3kcbfm1pc2z38pscxix11j4aqswsm"))
>> + ("tar"
>> + ,(base32 "1m8v7ddmn42wym2kl9mf7csnwsw6c3jdglg7d7kp7yaa16h5fbck"))
>> + ("xz"
>> + ,(base32 "16cnr7vr0zawrwcnhshms3v5kyzb2vz1rp4kxmx507cs6rivd05b")))
>
> Are the i586-gnu binaries usable on x86_64-gnu?

No, at least not currently. The mach message format even differs, AFAIK.

Toggle snippet (16 lines)
root@guixygnu64 ~# file bash-i586
bash-i586: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Hurd 0.0.0, stripped

root@guixygnu64 ~# ./bash-i586 --help
-bash: ./bash-i586: cannot execute binary file: Exec format error
[..]
root@debian:~# ./bash-i586 --help
-bash: ./bash-i586: cannot execute binary file: Exec format error
[..]
root@childhurd ~# ./bash-i586
I have no name!@childhurd ~# ./bash-i586 --help
GNU bash, version 5.0.16(1)-release-(i586-pc-gnu)
Usage: ./bash-i586 [GNU long option] [option] ...
./bash-i586 [GNU long option] [option] script-file ...

Toggle quote (3 lines)
> That would be sweet, and it would allow us have a single set of binary
> seeds instead of two.

Yeah...but no, and we'd need a gcc-14 anyway.

Greetings,
Janneke

--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J
J
janneke wrote on 17 Nov 18:51 +0100
Re: [bug#74290] [PATCH v2 00/40] Add support for x86_64-gnu, aka the 64bit Hurd.
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 74290@debbugs.gnu.org)
8734jpn3zk.fsf@gnu.org
Ludovic Courtès writes:

Hi!

Toggle quote (17 lines)
> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> 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.
>
> [...]
>
>> building /gnu/store/ps0shilnqwpm40886dnqg4bkazw8pq7i-glibc-bootstrap-0.drv...
>> building /gnu/store/8kqnvyf9i8qgizq69314xa576fj4idy5-gcc-bootstrap-0.drv...
>> building profile with 4 packages...
>
> This is amazing!!

Thank you! FWIW, I'm currently up to here

Toggle snippet (24 lines)
building /gnu/store/b1zafmkrz9dhh8dmglgjiv4yrf29ygqa-file-boot0-5.45.drv...
building /gnu/store/4b0xk1jdggh2vkca4mj3q29zgbmn06h1-findutils-boot0-4.9.0.drv...
building /gnu/store/k1anwx8nm03i6akc3y65gy1vqj2h14c0-gcc-14.2.0.tar.xz.drv...
building /gnu/store/kycw4rv3vc17a9147i4v8b5cy3cpdj7r-binutils-cross-boot0-2.41.drv...
building /gnu/store/jh9kknd4xnml9bxmdrs2j0vmjxixw6jk-expat-2.5.0.drv...
building /gnu/store/ks454i900xdqizkvjzxff9yg78jhzh08-gcc-14.2.0.tar.xz.drv...
building /gnu/store/7sm2cm9dmhjqqq3qz52dsm2nb6ah4yrg-glibc-2.39.tar.xz.drv...
building /gnu/store/2ykm8n6yynnk4mv8b9qy6liccpbhj9h4-gmp-6.0.0a.tar.xz.drv...
building /gnu/store/vbk133fp4ldi2jrgbg5121f29z7x886w-grep-3.11.tar.xz.drv...
building /gnu/store/h4r8v4kv268vksf2sb0fj1l026svbncg-guile-3.0.9.tar.xz.drv...
building /gnu/store/77pq0ygp8xqxp198r1d924wmgyqc2df6-ld-wrapper-boot0-0.drv...
building /gnu/store/w35zl5n42b8q4m095xb6ng8sxvxxm1xw-libstdc++-boot0-14.2.0.drv...
building /gnu/store/jg59zvvl58dkrpvyxcyg9sghax7skgvw-m4-boot0-1.4.19.drv...
building /gnu/store/2ac7j9xyzv96v52z3gnipb30z61f71kf-gcc-cross-boot0-14.2.0.drv...
- 'build' phasebuilder for `/gnu/store/2ac7j9xyzv96v52z3gnipb30z61f71kf-gcc-cross-boot0-14.2.0.drv' failed with exit code 1
build of /gnu/store/2ac7j9xyzv96v52z3gnipb30z61f71kf-gcc-cross-boot0-14.2.0.drv failed
[..]
checking build system compiler gcc... no
configure: error: Specified CC_FOR_BUILD doesn't seem to work
make[1]: *** [Makefile:5118: configure-gmp] Error 1
make[1]: Leaving directory '/tmp/guix-build-gcc-cross-boot0-14.2.0.drv-0/build'


but small things like guix copy (and offloading) don't seem to work.
I'm working up towards a v3 (and getting that "merged") so that others
might help :)

Toggle quote (3 lines)
> Glad to see it happen. I’ve just posted a bargaining proposal :-)
> regarding ‘current-gcc’ etc., let’s see where that goes.

Yeah, I think that's a very good call.

Toggle quote (2 lines)
> Anyhow, this is great, it makes the OS more usable.

Yes, that's the idea!

Greetings,
Janneke

--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J
J
janneke wrote on 17 Nov 18:53 +0100
Re: [bug#74290] [PATCH v2 17/40] gnu: libgcrypt: Use libgpg-error-1.50 for the 64bit Hurd.
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 74290@debbugs.gnu.org)
87y11hlpb2.fsf@gnu.org
Ludovic Courtès writes:

Toggle quote (17 lines)
> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> * gnu/packages/gnupg.scm (libgcrypt)[propagated-inputs]: When building for the
>> 64bit Hurd, use libgcrypt-1.50.
>>
>> Change-Id: I608d283a4a307527d5b09a81fa1a53cec5d6bb76
>
> [...]
>
>> (propagated-inputs
>> - `(("libgpg-error-host" ,libgpg-error)))
>> + `(("libgpg-error-host" ,(if (target-hurd64?)
>> + libgpg-error-1.50
>> + libgpg-error))))
>
> Could you add a short comment explaining why this version is needed?

Sure. Upstream added 64bit Hurd support (me looks into git, hmm) in
1.48 with a single patch. I could also add that patch to
libgpg-error-1.47 when building for the Hurd. Maybe that's nicer?

--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J
J
janneke wrote on 17 Nov 19:27 +0100
Re: [bug#74290] [PATCH v2 13/40] gnu: gcc-13, gcc-14: Support being used as parent for gcc-static.
(name . Ludovic Courtès)(address . ludo@gnu.org)
87jzd1lnr0.fsf@gnu.org
Ludovic Courtès writes:

Toggle quote (22 lines)
> Hi!
>
> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>
>> * gnu/packages/gcc.scm (gcc-13)[arguments]: Use quasiquote instead of
>> g-expressions.
>> (gcc-14)[arguments]: Likewise.
>>
>> Change-Id: I22269b31d49868effe967d46247b189ed9a9d394
>
> [...]
>
>> - #~(modify-phases #$phases
>> - (delete 'patch-hurd-libpthread))
>> + `(modify-phases ,phases
>> + (delete 'patch-hurd-libpthread))
>
> I think we should not do that as this undoes previous changes.
>
> Instead, can we change whichever package expects to get an sexp here to
> use gexps?

Hmm, how would that work? The package that expects a sexp is
gcc-static.

If we update gcc-static to also use gexps we can no longer build any gcc
< 13 static? Unless we update also update gcc-4.7, gcc-4.8, and those
in commencement. Maybe (hopefully!) I'm missing something?

Greetings,
Janneke

--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J
J
janneke wrote on 17 Nov 19:46 +0100
(name . Ludovic Courtès)(address . ludo@gnu.org)
87a5dxlmv0.fsf@gnu.org
Toggle quote (29 lines)
> Ludovic Courtès writes:

>> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>>
>>> * gnu/packages/gcc.scm (gcc-13)[arguments]: Use quasiquote instead of
>>> g-expressions.
>>> (gcc-14)[arguments]: Likewise.
>>>
>>> Change-Id: I22269b31d49868effe967d46247b189ed9a9d394
>>
>> [...]
>>
>>> - #~(modify-phases #$phases
>>> - (delete 'patch-hurd-libpthread))
>>> + `(modify-phases ,phases
>>> + (delete 'patch-hurd-libpthread))
>>
>> I think we should not do that as this undoes previous changes.
>>
>> Instead, can we change whichever package expects to get an sexp here to
>> use gexps?
>
> Hmm, how would that work? The package that expects a sexp is
> gcc-static.
>
> If we update gcc-static to also use gexps we can no longer build any gcc
> < 13 static? Unless we update also update gcc-4.7, gcc-4.8, and those
> in commencement. Maybe (hopefully!) I'm missing something?

I have upgraded %gcc-static in make-bootstrap to gcc-14, problem solved :)
hopefully.

--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J
J
janneke wrote on 18 Nov 09:45 +0100
Re: [bug#74290] [PATCH v2 05/40] gnu: Add basic support for x86_64-pc-gnu target, aka 64bit Hurd.
(name . Ludovic Courtès)(address . ludo@gnu.org)
87bjydhquw.fsf@gnu.org
Toggle quote (24 lines)
> Ludovic Courtès writes:
>
>> Janneke Nieuwenhuizen <janneke@gnu.org> skribis:
>>
>> Then, as a second step, we could prepare a ‘core-packages-team’ branch
>> that upgrades ‘gcc’ globally, and that way we keep something consistent
>> and simpler, without ‘current-gcc’. (Though it means we’d have to wait
>> before we can build natively on x86_64-gnu.)
>>
>> WDYT?
>
> I've been thinking about this route and decided against it because it
> seems to me that upgrading to gcc-14 will cause a lot of trouble/work.
>
> However, if that work is shared, and we have the build farm to help, it
> may be the best route. Maybe the wait doesn't have to be too long?
> Also, in the mean time, upstream support might improve.
>
> Maybe we can decide to go the route you propose and also keep this
> current-gcc patch on the hurd-team branch for a bit (we prepend a fat
> REMOVEME in front of it). We can keep working on native Hurd builds
> that use gcc-14 on hurd-team using this hack, until core-packages-team
> is ready to make it obsolete?

So, what about if we do, in addition to the %xgcc => gcc-14 in
cross-base -- we use gcc-14 on the 64bit hurd /system/:

Toggle snippet (33 lines)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index a14de3002f..2b0b4b07b4 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3642,7 +3642,9 @@ (define-public gcc-toolchain-14
;; The default GCC
(define-public gcc-toolchain
- gcc-toolchain-11)
+ (if (system-hurd64?)
+ gcc-toolchain-14
+ gcc-toolchain-11))
(define-public gcc-toolchain-aka-gcc
;; It's natural for users to try "guix install gcc". This package
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 64ba37fd69..d90502f403 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -857,7 +857,10 @@ (define-public gcc-14
;; Note: When changing the default gcc version, update
;; the gcc-toolchain-* definitions.
-(define-public gcc gcc-11)
+(define-public gcc
+ (if (system-hurd64?)
+ gcc-14
+ gcc-11))
;;;

Wouldn't that just work?

We can do that in parallel with the gcc-14 update in core-packages-team.

Greetings,
Janneke

--
Janneke Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com| Avatar® https://AvatarAcademy.com
J