Subject: [bug#74290] [PATCH v4 30/58] gnu: libgpg-error: Support the 64bit Hurd.

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

* gnu/packages/patches/libgpg-error-hurd64.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/gnupg.scm (libgpg-error)[arguments]: Use it when building for
the 64bit Hurd.

Change-Id: Icabb7cd7bb5bcc771ccee5b8a7f57f52b9b58183
---
 gnu/local.mk                                  |  1 +
 gnu/packages/gnupg.scm                        | 22 +++++-
 .../patches/libgpg-error-hurd64.patch         | 78 +++++++++++++++++++
 3 files changed, 98 insertions(+), 3 deletions(-)
 create mode 100644 gnu/packages/patches/libgpg-error-hurd64.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 6164ee45c7..52239fb0e0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1625,6 +1625,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/libgeotiff-fix-tests-with-proj-9.3.0.patch	\
   %D%/packages/patches/libgeotiff-fix-tests-with-proj-9.3.1.patch	\
   %D%/packages/patches/libgeotiff-fix-tests-on-i386.patch	\
+  %D%/packages/patches/libgpg-error-hurd64.patch		\
   %D%/packages/patches/libguestfs-syms.patch            	\
   %D%/packages/patches/libobjc2-unbundle-robin-map.patch	\
   %D%/packages/patches/libvirt-add-install-prefix.patch	\
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 2e97c2244a..6535f94cb8 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -22,7 +22,7 @@
 ;;; Copyright © 2021 Nikita Domnitskii <[email-masked]>
 ;;; Copyright © 2021 Aleksandr Vityazev <[email-masked]>
 ;;; Copyright © 2022, 2023 Maxim Cournoyer <[email-masked]>
-;;; Copyright © 2023 Janneke Nieuwenhuizen <[email-masked]>
+;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <[email-masked]>
 ;;; Copyright © 2024 Zheng Junjie <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -144,9 +144,25 @@ (define-public libgpg-error
                                     ;; configuration, as this is not correct for
                                     ;; all architectures.
                                     (_ #t)))
-                            (#t #t)))))))
+                            (#t #t)))))
+              #$@(if (target-hurd64?)
+                     #~((add-after 'unpack 'apply-hurd64-patch
+                         (lambda _
+                           (let ((patch
+                                  #$(local-file
+                                     (search-patch
+                                      "libgpg-error-hurd64.patch"))))
+                             (invoke "patch" "--force" "-p1" "-i" patch)))))
+                     #~())))
           ((system-hurd?)
-           #~((add-after 'unpack 'skip-tests
+           #~((add-after 'unpack 'apply-hurd64-patch
+                         (lambda _
+                           (let ((patch
+                                  #$(local-file
+                                     (search-patch
+                                      "libgpg-error-hurd64.patch"))))
+                             (invoke "patch" "--force" "-p1" "-i" patch))))
+              (add-after 'unpack 'skip-tests
                 (lambda _
                   (substitute* "tests/t-syserror.c"
                     (("(^| )main *\\(.*" all)
diff --git a/gnu/packages/patches/libgpg-error-hurd64.patch b/gnu/packages/patches/libgpg-error-hurd64.patch
new file mode 100644
index 0000000000..aac8ce61f1
--- /dev/null
+++ b/gnu/packages/patches/libgpg-error-hurd64.patch
@@ -0,0 +1,78 @@
+Upstream-status: Taken from upstream (1.48 series).
+
+From c62157c615a6379677c8f106bf9413d2611fd95e Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <[email-masked]>
+Date: Sat, 6 May 2023 16:10:55 +0200
+Subject: [PATCH] core: Add hurd-amd64 support
+
+--
+This supports the x86_64-pc-gnu triplet
+
+Signed-off-by: Samuel Thibault <[email-masked]>
+---
+ src/Makefile.am                              |  1 +
+ src/mkheader.c                               |  2 ++
+ src/syscfg/lock-obj-pub.x86_64-unknown-gnu.h | 24 ++++++++++++++++++++
+ 3 files changed, 27 insertions(+)
+ create mode 100644 src/syscfg/lock-obj-pub.x86_64-unknown-gnu.h
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index c61adde..9389e99 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -67,6 +67,7 @@ lock_obj_pub = \
+         syscfg/lock-obj-pub.sparc-unknown-linux-gnu.h       \
+         syscfg/lock-obj-pub.sparc64-unknown-linux-gnu.h     \
+ 	syscfg/lock-obj-pub.x86_64-apple-darwin.h           \
++        syscfg/lock-obj-pub.x86_64-unknown-gnu.h              \
+         syscfg/lock-obj-pub.x86_64-unknown-kfreebsd-gnu.h   \
+         syscfg/lock-obj-pub.x86_64-unknown-linux-gnu.h      \
+         syscfg/lock-obj-pub.x86_64-unknown-linux-gnux32.h   \
+diff --git a/src/mkheader.c b/src/mkheader.c
+index 8fbfbd6..cc0eaa3 100644
+--- a/src/mkheader.c
++++ b/src/mkheader.c
+@@ -108,6 +108,8 @@ canon_host_triplet (const char *triplet, int no_vendor_hack, char **r_os)
+     {"x86_64-pc-linux-gnuhardened1", "x86_64-unknown-linux-gnu" },
+     {"x86_64-pc-linux-gnu" },
+ 
++    {"x86_64-pc-gnu"},
++
+     {"powerpc-unknown-linux-gnuspe", "powerpc-unknown-linux-gnu" },
+ 
+     {"arm-unknown-linux-gnueabihf",  "arm-unknown-linux-gnueabi" },
+diff --git a/src/syscfg/lock-obj-pub.x86_64-unknown-gnu.h b/src/syscfg/lock-obj-pub.x86_64-unknown-gnu.h
+new file mode 100644
+index 0000000..7c7e6f1
+--- /dev/null
++++ b/src/syscfg/lock-obj-pub.x86_64-unknown-gnu.h
+@@ -0,0 +1,24 @@
++## lock-obj-pub.x86_64-pc-gnu.h
++## File created by gen-posix-lock-obj - DO NOT EDIT
++## To be included by mkheader into gpg-error.h
++
++typedef struct
++{
++  long _vers;
++  union {
++    volatile char _priv[32];
++    long _x_align;
++    long *_xp_align;
++  } u;
++} gpgrt_lock_t;
++
++#define GPGRT_LOCK_INITIALIZER {1,{{0,0,0,0,0,0,0,0, \
++                                    0,0,0,0,0,0,0,0, \
++                                    0,0,0,0,0,0,0,0, \
++                                    0,0,0,0,0,0,0,0}}}
++##
++## Local Variables:
++## mode: c
++## buffer-read-only: t
++## End:
++##
+
+base-commit: 7a42ff0ec971f4f2add28b0edad6cf381b5b8acc
+-- 
+2.46.0
+
-- 
2.46.0