Source: furnace
Version: 0.6.8.3+git20250912+ds-2
Severity: important
Justification: non-regression ftbfs on armhf
Tags: ftbfs patch upstream
furnace fails to build from source on all 32bit architectures that
enbale time64. This happens to include armhf but also a pile of ports
architectures. The problem is:
|
/build/reproducible-path/furnace-0.6.8.3+git20250912+ds/src/engine/platform/pcspkr.cpp:
In member function ‘void DivPlatformPCSpeaker::pcSpeakerThread()’:
|
/build/reproducible-path/furnace-0.6.8.3+git20250912+ds/src/engine/platform/pcspkr.cpp:94:14:
error: ‘struct input_event’ has no member named ‘time’
| 94 | ie.time.tv_sec=r.tv_sec;
| | ^~~~
|
/build/reproducible-path/furnace-0.6.8.3+git20250912+ds/src/engine/platform/pcspkr.cpp:95:14:
error: ‘struct input_event’ has no member named ‘time’
| 95 | ie.time.tv_usec=r.tv_nsec/1000;
| | ^~~~
Looking into the kernel uapi, Linux changed struct input_event via
commit 152194fe9c3f03232b9c0d0264793a7fa4af82f8. When enabling time64 on
32bit architectures, it no longer includes the time field. Instead one
is now supposed to use input_event_sec and input_event_usec virtual
fields that work in all situations.
I'm attaching a patch for your convenience.
Helmut
--- furnace-0.6.8.3+git20250912+ds.orig/src/engine/platform/pcspkr.cpp
+++ furnace-0.6.8.3+git20250912+ds/src/engine/platform/pcspkr.cpp
@@ -91,8 +91,8 @@
#ifdef HAVE_LINUX_INPUT
case 0: { // evdev
static struct input_event ie;
- ie.time.tv_sec=r.tv_sec;
- ie.time.tv_usec=r.tv_nsec/1000;
+ ie.input_event_sec=r.tv_sec;
+ ie.input_event_usec=r.tv_nsec/1000;
ie.type=EV_SND;
ie.code=SND_TONE;
if (r.val>0) {