Pi4J / pi4j-v2

Pi4J Version 2.0
Apache License 2.0
281 stars 62 forks source link

Failure during tests when attempting native build on 32-bit Raspberry Pi OS 12 #387

Open hackerjimbo opened 2 months ago

hackerjimbo commented 2 months ago

In trying to fix the issue of it core dumping on a Pi 0/1 (ARM v6) I'm building Pi4J on a 32-bit Raspberry Pi OS 12 running on a Pi 3. I'm using the HEAD of the build, literally git pull https://github.com/Pi4J/pi4j-v2 The build is almost OK except during the test phase when the following output occurs:

[INFO] Running com.pi4j.test.context.ContextTest
[main] INFO com.pi4j.Pi4J - New auto context
[main] INFO com.pi4j.Pi4J - New context builder
[main] INFO com.pi4j.context.impl.DefaultContext - Detected board model: Raspberry Pi 3 Model B+
[main] INFO com.pi4j.context.impl.DefaultContext - Running on: Name: Linux, version: 6.6.47+rpt-rpi-v7, architecture: arm
[main] INFO com.pi4j.context.impl.DefaultContext - With Java version: Version: 17.0.12, runtime: 17.0.12+7-Raspbian-2deb12u1rpt1, vendor: Raspbian, vendor version: null
[main] INFO com.pi4j.runtime.impl.DefaultRuntime - Initializing Pi4J context/runtime...
[main] INFO com.pi4j.runtime.impl.DefaultRuntime - Ignoring provider DIGITAL_INPUT LinuxFS Digital Input (GPIO) Provider with priority 50 as lower priority than GpioD Digital Input (GPIO) Provider which has priority 150
[main] INFO com.pi4j.runtime.impl.DefaultRuntime - Ignoring provider DIGITAL_OUTPUT LinuxFS Digital Output (GPIO) Provider with priority 50 as lower priority than GpioD Digital Output (GPIO) Provider which has priority 150
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.017 s <<< FAILURE! - in com.pi4j.test.context.ContextTest
[ERROR] com.pi4j.test.context.ContextTest  Time elapsed: 0.017 s  <<< ERROR!
java.lang.UnsatisfiedLinkError: 'java.lang.Long com.pi4j.library.gpiod.internal.GpioD.gpiod_chip_iter_new()'
    at com.pi4j.test@2.7.0-SNAPSHOT/com.pi4j.test.context.ContextTest.beforeTest(ContextTest.java:54)

[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Errors: 
[ERROR]   ContextTest.beforeTest:54 » UnsatisfiedLink 'java.lang.Long com.pi4j.library.g...
[ERROR]   I2CRawDataTest.beforeTest:70 » UnsatisfiedLink 'java.lang.Long com.pi4j.librar...
[ERROR]   I2CRawDataTest.beforeTest:70 » UnsatisfiedLink 'java.lang.Long com.pi4j.librar...
[ERROR]   I2CRegisterDataTest.beforeTest:71 » UnsatisfiedLink 'java.lang.Long com.pi4j.l...
[ERROR]   SpiRawDataTest.beforeTest:69 » UnsatisfiedLink 'java.lang.Long com.pi4j.librar...
[ERROR]   SpiRawDataTest.beforeTest:69 » UnsatisfiedLink 'java.lang.Long com.pi4j.librar...
[ERROR]   AutoPlatformsTest.beforeTest:51 » UnsatisfiedLink 'java.lang.Long com.pi4j.lib...
[ERROR]   AutoProvidersTest.beforeTest:54 » UnsatisfiedLink 'java.lang.Long com.pi4j.lib...
[ERROR]   RegistryTest.beforeTest:55 » UnsatisfiedLink 'java.lang.Long com.pi4j.library....
[ERROR]   RuntimeTest.testRuntimeShutdownEvents:55 » UnsatisfiedLink 'java.lang.Long com...
[INFO] 
[ERROR] Tests run: 60, Failures: 0, Errors: 10, Skipped: 0

If I run mvn -DskipTests package then it builds fine.

Any ideas?

hackerjimbo commented 1 month ago

This also happens on the new 2.7.0 build. I even removed the system gpiod libraries to see if that helped. It didn't. What am I missing here?

This is a fully up-to-date 32-bit Raspberry Pi OS 12 (bookworm) running on a Pi 3. I don't expect the Pi 3 to be the issue but I think the fault lies with building on a 32-bit OS.