[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