Subject: [bug#74290] [PATCH 31/31] system: hurd: Use 64bit gnumach for the 64bit Hurd.

From: Janneke Nieuwenhuizen <[email-masked]>
Date: Sun, 10 Nov 2024 11:38:27 +0100

* 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))))
 
 (define %base-packages/hurd
   ;; Note: the Shepherd comes before the Hurd, not just because its duty is to
-- 
Janneke Nieuwenhuizen <[email-masked]>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com