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) {

Reply via email to