package/libnpth: fix gnupg2 build with uclibc

Fix the following build failure of gnupg2 raised since bump to version
1.7 in commit 3ef4d24192 and
https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commitdiff;h=02ce6b2d27f91ed6285e4e92d99c21bcc7823c9b:

/home/autobuild/autobuild/instance-2/output-1/host/lib/gcc/armeb-buildroot-linux-uclibcgnueabi/13.2.0/../../../../armeb-buildroot-linux-uclibcgnueabi/bin/ld: /home/autobuild/autobuild/instance-2/output-1/host/bin/../armeb-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libnpth.so: undefined reference to `busy_wait_for'

Fixes: 3ef4d24192
 - http://autobuild.buildroot.org/results/9a27ffde79598a39b4fd55c716978d32d0beb924

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Fabrice Fontaine 2024-05-14 19:21:42 +02:00 committed by Peter Korsgaard
parent 15820bc0cd
commit ad64ddd4f3
2 changed files with 90 additions and 0 deletions

View File

@ -0,0 +1,51 @@
From 01f03a91c9bd63910995aeef412beb3ca6dc9a67 Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <gniibe@fsij.org>
Date: Tue, 7 May 2024 13:45:47 +0900
Subject: [PATCH] Return a run-time error if npth_rwlock_timedrdlock is not
supported.
* src/npth.c (npth_rwlock_timedrdlock): Return ENOSYS if not
supported.
(npth_rwlock_timedwrlock): Use HAVE_PTHREAD_RWLOCK_TRYWRLOCK.
--
GnuPG-bug-id: 7109
Fixed-commit: 363c370bd35dd0bb4e5636b2d4f06ea88c658794
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=01f03a91c9bd63910995aeef412beb3ca6dc9a67
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
src/npth.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/npth.c b/src/npth.c
index c0ff8da..f02540c 100644
--- a/src/npth.c
+++ b/src/npth.c
@@ -488,9 +488,11 @@ npth_rwlock_timedrdlock (npth_rwlock_t *rwlock, const struct timespec *abstime)
ENTER();
#if HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK
err = pthread_rwlock_timedrdlock (rwlock, abstime);
-#else
+#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK
err = busy_wait_for ((trylock_func_t) pthread_rwlock_tryrdlock, rwlock,
abstime);
+#else
+ err = ENOSYS;
#endif
LEAVE();
return err;
@@ -533,7 +535,7 @@ npth_rwlock_timedwrlock (npth_rwlock_t *rwlock, const struct timespec *abstime)
ENTER();
#if HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK
err = pthread_rwlock_timedwrlock (rwlock, abstime);
-#elif HAVE_PTHREAD_RWLOCK_TRYRDLOCK
+#elif HAVE_PTHREAD_RWLOCK_TRYWRLOCK
err = busy_wait_for ((trylock_func_t) pthread_rwlock_trywrlock, rwlock,
abstime);
#else
--
2.30.2

View File

@ -0,0 +1,39 @@
From 75c68399ef3bbb5d024f2a60474a7214fa479016 Mon Sep 17 00:00:00 2001
From: NIIBE Yutaka <gniibe@fsij.org>
Date: Mon, 13 May 2024 11:13:23 +0900
Subject: [PATCH] Fix previous commit.
Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
Upstream: https://git.gnupg.org/cgi-bin/gitweb.cgi?p=npth.git;a=commit;h=75c68399ef3bbb5d024f2a60474a7214fa479016
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
src/npth.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/npth.c b/src/npth.c
index f02540c..8dced17 100644
--- a/src/npth.c
+++ b/src/npth.c
@@ -178,6 +178,18 @@ static int initialized_or_any_threads;
typedef int (*trylock_func_t) (void *);
#ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK
+#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1
+#endif
+
+#if !HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK && HAVE_PTHREAD_RWLOCK_TRYRDLOCK
+#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1
+#endif
+
+#if !HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK && HAVE_PTHREAD_RWLOCK_TRYWRLOCK
+#define REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION 1
+#endif
+
+#if REQUIRE_THE_BUSY_WAIT_FOR_IMPLEMENTATION
static int
busy_wait_for (trylock_func_t trylock, void *lock,
const struct timespec *abstime)
--
2.30.2