[SOLVED] Jekyll can't be installed anymore

Has anyone installed Jekyll recently?
There’s a build error here that seems quite new to me:

current directory: /boot/home/config/non-packaged/data/gem/ruby/3.2.0/gems/eventmachine-1.2.7/ext
make DESTDIR\= sitearchdir\=./.gem.20250312-2618-5n8sun sitelibdir\=./.gem.20250312-2618-5n8sun
compiling binder.cpp
In file included from project.h:168,
                 from binder.cpp:20:
em.h:279:31: error: field 'Karray' has incomplete type 'kevent [4096]'
  279 |                 struct kevent Karray [MaxEvents];
      |                               ^~~~~~
em.h:183:53: note: forward declaration of 'struct kevent'
  183 |                 void _HandleKqueueFileEvent (struct kevent*);
      |                                                     ^~~~~~
Makefile:239: recipe for target 'binder.o' failed
make: *** [binder.o] Error 1

Of course, I can’t try an older version of Ruby and whatever thing I try to appease the compiler did not work.
The problem is with eventmachine-1.2.7 not Jekyll itself, as far as I can tell.
Any thoughts?

struct kevent is defined in sys/event.h, which has been found or the part triggering the error wouldn’t be compiled in. It’s guarded by _DEFAULT_SOURCE. Can you check the compiler options to see if it is being compiled in some strict mode? As a dirty test, can you add #define _DEFAULT_SOURCE to the top of project.h?

Good spot!
Unfortunately, it just solved part of the problem but it gave me the inspiration for a solution. The build succeeds if HAVE_KQUEUE is disabled altogether:

gem install --user-install jekyll -- --with-cppflags="-U HAVE_KQUEUE"

Now I wonder what changed and when…

Introduction of kqueue in hrev57174? (2023-07-29)

Yes, it was too late yesterday to do some search. Thanks.
Eventmachine config tool relies on the presence of sys/event.h and sys/queue.h to enable kqueue support. I guess that a while ago it worked without a glitch because the kqueue code was disabled as the two headers were simply not there.
Our implementation is partial and does not include constants like EVFILT_VNODE and the underlying implementation.

We #ifdef around EVFILT_TIME and EVFILT_SIGNAL on all our Python interpreters and on libevent.

Maybe that’s something that could work for EVFILT_VNODE and other “offending” constants in Jekyll?