[MacPorts] #71805: mysql57 @5.7.44 does not build on PPC Leopard, Mac OS X 10.5.8, because of error: 'EVFILT_USER' undeclared
MacPorts
noreply at macports.org
Fri Jan 10 12:14:19 UTC 2025
#71805: mysql57 @5.7.44 does not build on PPC Leopard, Mac OS X 10.5.8, because of
error: 'EVFILT_USER' undeclared
------------------------+-------------------------
Reporter: ballapete | Owner: (none)
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 2.10.5
Resolution: | Keywords: leopard ppc
Port: mysql57 |
------------------------+-------------------------
Comment (by ballapete):
`https://github.com/Ravenports/Ravenports/blob/master/bucket_1F/mysql80`
might have a cure:
{{{
--- configure.cmake.orig 2024-09-18 10:08:24 UTC
+++ configure.cmake
@@ -301,6 +297,7 @@ CHECK_SYMBOL_EXISTS(TIOCGWINSZ "sys/ioct
CHECK_SYMBOL_EXISTS(FIONREAD "sys/ioctl.h" FIONREAD_IN_SYS_IOCTL)
CHECK_SYMBOL_EXISTS(FIONREAD "sys/filio.h" FIONREAD_IN_SYS_FILIO)
CHECK_SYMBOL_EXISTS(MADV_DONTDUMP "sys/mman.h" HAVE_MADV_DONTDUMP)
+CHECK_SYMBOL_EXISTS(EVFILT_USER "sys/event.h" HAVE_EVFILT_USER)
CHECK_CXX_SOURCE_COMPILES(
"#include <sys/types.h>
#include <sys/stat.h>
@@ -333,6 +330,14 @@ ELSEIF(HAVE_TIMER_CREATE AND HAVE_TIMER_
SET(HAVE_POSIX_TIMERS 1 CACHE INTERNAL "Have POSIX timer-related
functions")
ENDIF()
+IF (NOT HAVE_EVFILT_USER)
+ SET(HAVE_KQUEUE 0)
+ SET(HAVE_KQUEUE_TIMERS 0)
+ IF(HAVE_TIMER_CREATE AND HAVE_TIMER_SETTIME)
+ SET(HAVE_POSIX_TIMERS 1 CACHE INTERNAL "Have POSIX timer-related
functions")
+ ENDIF()
+ENDIF()
+
IF(NOT HAVE_POSIX_TIMERS AND NOT HAVE_KQUEUE_TIMERS AND NOT WIN32)
MESSAGE(FATAL_ERROR "No mysys timer support detected!")
ENDIF()
[FILE:2034:patches/patch-mysys_kqueue__timers.cc]
$NetBSD: patch-mysys_kqueue__timers.cc,v 1.1 2021/05/13 15:25:20 jdolecek
Exp $
* support pre NetBSD 10 __intptr_t udata type
* Fix for systems whcich do not define EVFILT_USER
--- mysys/kqueue_timers.cc.orig 2024-09-18 10:08:24 UTC
+++ mysys/kqueue_timers.cc
@@ -41,6 +41,18 @@
#include "mysys_err.h"
#include "mysys_priv.h" /* key_thread_timer_notifier */
+#ifdef __NetBSD__
+#include <sys/param.h>
+#if __NetBSD_Version__ < 999001400
+#define KEVENT_UDATA_TYPE_CAST (__intptr_t)
+#else
+#define KEVENT_UDATA_TYPE_CAST
+#endif
+#else
+#define KEVENT_UDATA_TYPE_CAST
+#endif
+
+
/* Kernel event queue file descriptor. */
static int kq_fd = -1;
@@ -70,10 +82,12 @@ static void *timer_notify_thread_func(vo
}
if (kev.filter == EVFILT_TIMER) {
- timer = static_cast<my_timer_t *>(kev.udata);
+ timer = static_cast<my_timer_t *>((void *)kev.udata);
assert(timer->id == kev.ident);
timer->notify_function(timer);
+#ifdef EVFILT_USER
} else if (kev.filter == EVFILT_USER)
+#endif
break;
}
@@ -92,7 +106,9 @@ static void *timer_notify_thread_func(vo
static int start_helper_thread(void) {
struct kevent kev;
+#ifdef EVFILT_USER
EV_SET(&kev, 0, EVFILT_USER, EV_ADD, 0, 0, 0);
+#endif
if (kevent(kq_fd, &kev, 1, NULL, 0, NULL) < 0) {
my_message_local(ERROR_LEVEL, EE_FAILED_TO_CREATE_TIMER, errno);
@@ -135,7 +151,9 @@ int my_timer_initialize(void) {
void my_timer_deinitialize(void) {
struct kevent kev;
+#ifdef EVFILT_USER
EV_SET(&kev, 0, EVFILT_USER, 0, NOTE_TRIGGER, 0, 0);
+#endif
if (kevent(kq_fd, &kev, 1, NULL, 0, NULL) < 0)
my_message_local(ERROR_LEVEL,
@@ -166,7 +184,7 @@ int my_timer_create(my_timer_t *timer) {
int my_timer_set(my_timer_t *timer, unsigned long time) {
struct kevent kev;
- EV_SET(&kev, timer->id, EVFILT_TIMER, EV_ADD | EV_ONESHOT, 0, time,
timer);
+ EV_SET(&kev, timer->id, EVFILT_TIMER, EV_ADD | EV_ONESHOT, 0,
time,KEVENT_UDATA_TYPE_CAST timer);
return kevent(kq_fd, &kev, 1, NULL, 0, NULL);
}
@@ -70,10 +82,12 @@ static void *timer_notify_thread_func(vo
}
if (kev.filter == EVFILT_TIMER) {
- timer = static_cast<my_timer_t *>(kev.udata);
+ timer = static_cast<my_timer_t *>((void *)kev.udata);
assert(timer->id == kev.ident);
timer->notify_function(timer);
+#ifdef EVFILT_USER
} else if (kev.filter == EVFILT_USER)
+#endif
break;
}
@@ -92,7 +106,9 @@ static void *timer_notify_thread_func(vo
static int start_helper_thread(void) {
struct kevent kev;
+#ifdef EVFILT_USER
EV_SET(&kev, 0, EVFILT_USER, EV_ADD, 0, 0, 0);
+#endif
if (kevent(kq_fd, &kev, 1, NULL, 0, NULL) < 0) {
my_message_local(ERROR_LEVEL, EE_FAILED_TO_CREATE_TIMER, errno);
@@ -135,7 +151,9 @@ int my_timer_initialize(void) {
void my_timer_deinitialize(void) {
struct kevent kev;
+#ifdef EVFILT_USER
EV_SET(&kev, 0, EVFILT_USER, 0, NOTE_TRIGGER, 0, 0);
+#endif
if (kevent(kq_fd, &kev, 1, NULL, 0, NULL) < 0)
my_message_local(ERROR_LEVEL,
}}}
--
Ticket URL: <https://trac.macports.org/ticket/71805#comment:3>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list