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

From: <[email-masked]>
Date: Sun, 10 Nov 2024 15:40:23 +0100

Janneke Nieuwenhuizen writes:

> * 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

--8<---------------cut here---------------start------------->8---
      (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))))
--8<---------------cut here---------------end--------------->8---

...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 <[email-masked]>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com