Forráskód Böngészése

package/lighttpd: fix sparc/sparc64 compilation

From Upstream git, two patches to fix sparc/sparc64 specific
compile issues.

Fixes:

 http://autobuild.buildroot.org/results/c35/c35f9b78b8f114bb795ed162585d707331954b4b

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Waldemar Brodkorb 11 hónapja
szülő
commit
06b1f1fbd3

+ 34 - 0
package/lighttpd/0002-Revert-core-special-value-for-Linux-POLLRDHUP-on-SPA.patch

@@ -0,0 +1,34 @@
+From 88ff3763dae65371eab9f8a22ac1c95c96fe4490 Mon Sep 17 00:00:00 2001
+From: Glenn Strauss <gstrauss@gluelogic.com>
+Date: Tue, 23 Apr 2024 00:16:29 -0400
+Subject: [PATCH] Revert "[core] special value for Linux POLLRDHUP on SPARC"
+ (fixes #3251)
+
+This reverts commit f14f9142f4487704e2ce0f196263c091accdb12c.
+
+x-ref:
+  "[1.4.76] buildroot compile error with bootlin-sparc{64-g,-uc}libc"
+  https://redmine.lighttpd.net/issues/3251
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+Upstream: https://redmine.lighttpd.net/projects/lighttpd/repository/14/revisions/88ff3763dae65371eab9f8a22ac1c95c96fe4490
+---
+ src/fdevent.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/fdevent.h b/src/fdevent.h
+index e9c380b0..1b0a062f 100644
+--- a/src/fdevent.h
++++ b/src/fdevent.h
+@@ -40,8 +40,6 @@ struct fdnode_st {
+ #if (defined(__sun) && defined(__SVR4)) /* Solaris */ \
+  || defined(__FreeBSD__)
+ #define FDEVENT_RDHUP  0x4000
+-#elif (defined(__linux__) && (defined(__sparc__) || defined(__sparc)))
+-#define FDEVENT_RDHUP  0x0800
+ #else
+ #define FDEVENT_RDHUP  0x2000
+ #endif
+-- 
+2.30.2
+

+ 85 - 0
package/lighttpd/0003-core-special-value-for-Linux-POLLRDHUP-on-SPARC-fixe.patch

@@ -0,0 +1,85 @@
+From 524614455554163ec78b27b89ff52bbf7fe96958 Mon Sep 17 00:00:00 2001
+From: Glenn Strauss <gstrauss@gluelogic.com>
+Date: Wed, 24 Apr 2024 03:07:37 -0400
+Subject: [PATCH] [core] special value for Linux POLLRDHUP on SPARC (fixes
+ #3251)
+
+x-ref:
+  "[1.4.76] buildroot compile error with bootlin-sparc{64-g,-uc}libc"
+  https://redmine.lighttpd.net/issues/3251
+
+Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
+Upstream: https://redmine.lighttpd.net/projects/lighttpd/repository/14/revisions/524614455554163ec78b27b89ff52bbf7fe96958
+---
+ src/fdevent.h      |  2 ++
+ src/fdevent_impl.c | 18 ++++++++++++++++++
+ 2 files changed, 20 insertions(+)
+
+diff --git a/src/fdevent.h b/src/fdevent.h
+index 1b0a062f..556a1445 100644
+--- a/src/fdevent.h
++++ b/src/fdevent.h
+@@ -40,6 +40,8 @@ struct fdnode_st {
+ #if (defined(__sun) && defined(__SVR4)) /* Solaris */ \
+  || defined(__FreeBSD__)
+ #define FDEVENT_RDHUP  0x4000
++#elif (defined(__linux__) && (defined(__sparc__) || defined(__sparc)))
++#define FDEVENT_RDHUP  0x2800 /*(0x2000 EPOLLRDHUP | 0x0800 POLLRDHUP)*/
+ #else
+ #define FDEVENT_RDHUP  0x2000
+ #endif
+diff --git a/src/fdevent_impl.c b/src/fdevent_impl.c
+index 8bfc1cc6..c84c8df5 100644
+--- a/src/fdevent_impl.c
++++ b/src/fdevent_impl.c
+@@ -338,6 +338,11 @@ fdevent_linux_sysepoll_event_set (fdevents *ev, fdnode *fdn, int events)
+     struct epoll_event ep;
+   #ifndef EPOLLRDHUP
+     events &= ~FDEVENT_RDHUP;
++  #elif (defined(__linux__) && (defined(__sparc__) || defined(__sparc)))
++    if (events & FDEVENT_RDHUP) {
++        events &= ~FDEVENT_RDHUP;
++        events |= EPOLLRDHUP;
++    }
+   #endif
+     ep.events = events | EPOLLERR | EPOLLHUP;
+     ep.data.ptr = fdn;
+@@ -376,7 +381,11 @@ fdevent_linux_sysepoll_init (fdevents *ev)
+     ck_static_assert(EPOLLERR   == FDEVENT_ERR);
+     ck_static_assert(EPOLLHUP   == FDEVENT_HUP);
+   #ifdef EPOLLRDHUP
++   #if (defined(__linux__) && (defined(__sparc__) || defined(__sparc)))
++    ck_static_assert(EPOLLRDHUP  & FDEVENT_RDHUP);
++   #else
+     ck_static_assert(EPOLLRDHUP == FDEVENT_RDHUP);
++   #endif
+   #endif
+ 
+     ev->type      = FDEVENT_HANDLER_LINUX_SYSEPOLL;
+@@ -770,6 +779,11 @@ fdevent_poll_event_set (fdevents *ev, fdnode *fdn, int events)
+ 
+   #ifndef POLLRDHUP
+     events &= ~FDEVENT_RDHUP;
++  #elif (defined(__linux__) && (defined(__sparc__) || defined(__sparc)))
++    if (events & FDEVENT_RDHUP) {
++        events &= ~FDEVENT_RDHUP;
++        events |= POLLRDHUP;
++    }
+   #endif
+ 
+     if (k >= 0) {
+@@ -854,7 +868,11 @@ fdevent_poll_init (fdevents *ev)
+     ck_static_assert(POLLHUP   == FDEVENT_HUP);
+     ck_static_assert(POLLNVAL  == FDEVENT_NVAL);
+   #ifdef POLLRDHUP
++   #if (defined(__linux__) && (defined(__sparc__) || defined(__sparc)))
++    ck_static_assert(POLLRDHUP  & FDEVENT_RDHUP);
++   #else
+     ck_static_assert(POLLRDHUP == FDEVENT_RDHUP);
++   #endif
+   #endif
+ 
+     ev->type      = FDEVENT_HANDLER_POLL;
+-- 
+2.30.2
+