Subject: [bug#74290] [PATCH v4 40/58] gnu: grub: Fix build for the 64bit Hurd.

From: Janneke Nieuwenhuizen <[email-masked]>
Date: Sun, 24 Nov 2024 08:55:03 +0100

* 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

diff --git a/gnu/local.mk b/gnu/local.mk
index c8fbae91fc..3595c68800 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1494,6 +1494,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 da5abaca55..61ea74b69a 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 <[email-masked]>
+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 <[email-masked]>  | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
-- 
2.46.0