Subject: [PATCH v3 37/51] gnu: inetutils: Fix build for the 64bit Hurd.

From: Janneke Nieuwenhuizen <[email-masked]>
Date: Tue, 19 Nov 2024 07:55:07 +0100

* 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

diff --git a/gnu/local.mk b/gnu/local.mk
index 8a607e5df7..0979414ec2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1577,6 +1577,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 <[email-masked]>
 ;;; Copyright © 2019, 2020, 2021 Mathieu Othacehe <[email-masked]>
 ;;; Copyright © 2020 Oleg Pykhalov <[email-masked]>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <[email-masked]>
+;;; Copyright © 2020, 2023, 2024 Janneke Nieuwenhuizen <[email-masked]>
 ;;; Copyright © 2020, 2021, 2022 Michael Rohleder <[email-masked]>
 ;;; Copyright © 2020 Vincent Legoll <[email-masked]>
 ;;; Copyright © 2020 Morgan Smith <[email-masked]>
@@ -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 <[email-masked]>
+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 <[email-masked]>  | GNU LilyPond https://LilyPond.org
+Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com
+
-- 
2.46.0