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:
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.