openHAB’s modern scripting language support relies on the GraalVM Polyglot language framework, which provides access to multiple languages from within a Java language. Somewhere around GraalVM 24, a set of new features was added that provide deep integration with native operating system binaries. At that time, support for these features was limited to a subset of platforms that the greater Java language is able to run on, and after this point, trying to access polyglot features (among other things) would fail to work due to an UnsupportedPlatformException being thrown by GraalVM. Note that this error is thrown regardless of whether a feature that required native platform support was being used.
diff --git a/pom.xml b/pom.xml
index dabb801..a2d3abb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -67,7 +67,8 @@
org.graalvm.js.js-scriptengine
org.graalvm.llvm.llvm-api
org.graalvm.polyglot.polyglot
- org.graalvm.python.python-embedding
+
org.graalvm.python.python-language
org.graalvm.python.python-resources
org.graalvm.regex.regex
@@ -108,6 +109,20 @@
https://github.com/openhab/openhab-osgiify/issues
+
+
+ openhab-snapshot
+ My Custom Repository
+ http://localhost:80/
+
+ false
+
+
+ true
+
+
+
+
UTF-8
UTF-8
@@ -115,7 +130,7 @@
unknown
unknown
${project.version}
- 25.0.1
+ 25.1.0-SNAPSHOT
>Note: I disabled the python-embedding module because there seemed to be a missing jar in the maven bundle. I didn’t investigate this further, as I’m not using python, but it’s hopefully a straightforward fix.
diff --git a/pom.xml b/pom.xml
index acea21b0b3..67bf0586c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,20 @@
itests
+
+
+
+ false
+
+
+ true
+
+ openhab-snapshot
+ My Custom Repository
+ http://localhost:80/
+
+
+
scm:git:https://github.com/openhab/openhab-addons.git
scm:git:https://github.com/openhab/openhab-addons.git
@@ -73,7 +87,7 @@
4.4.8
5.19.0
4.1.126.Final
- 25.0.1
+ 25.1.0-SNAPSHOT
4.12.0
3.9.0
2.13.1
Also, apply the following changes to src/main/feature/feature.xml (NOTE: the urls I’m providing below are temporary, and probably won’t be available for long. I recommend making a copy of them, or building them yourself from the openhab-osgiify project.)
diff --git a/bundles/org.openhab.automation.jsscripting/src/main/feature/feature.xml b/bundles/org.openhab.automation.jsscripting/src/main/feature/feature.xml
index ecbdd3b3e0..3bced995c0 100644
--- a/bundles/org.openhab.automation.jsscripting/src/main/feature/feature.xml
+++ b/bundles/org.openhab.automation.jsscripting/src/main/feature/feature.xml
@@ -5,19 +5,19 @@
openhab-runtime-base
- mvn:org.openhab.osgiify/org.graalvm.js.js-language/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.js.js-scriptengine/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.regex.regex/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.polyglot.polyglot/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.sdk.collections/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.sdk.jniutils/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.sdk.nativeimage/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.sdk.word/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.shadowed.icu4j/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.shadowed.xz/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.truffle.truffle-api/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.truffle.truffle-compiler/25.0.1
- mvn:org.openhab.osgiify/org.graalvm.truffle.truffle-runtime/25.0.1
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.js.js-language-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.js.js-scriptengine-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.regex.regex-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.polyglot.polyglot-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.sdk.collections-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.sdk.jniutils-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.sdk.nativeimage-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.sdk.word-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.shadowed.icu4j-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.shadowed.xz-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.truffle.truffle-api-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.truffle.truffle-compiler-25.1.0-SNAPSHOT.jar
+ https://bill.welliver.org/dist/openhab/graalvm-fixes/org.graalvm.truffle.truffle-runtime-25.1.0-SNAPSHOT.jar
mvn:org.openhab.addons.bundles/org.openhab.automation.jsscripting/${project.version}
target/org.openhab.automation.jsscripting-5.1.3.jar
find . -name org.graalvm\*-SNAPSHOT.jar
bundle:install file:///pathto/org.graalvm.js.js-language-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.js.js-scriptengine-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.llvm.llvm-api-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.polyglot.polyglot-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.python.python-language-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.python.python-resources-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.regex.regex-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.sdk.collections-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.sdk.jniutils-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.sdk.nativeimage-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.sdk.word-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.shadowed.icu4j-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.shadowed.json-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.shadowed.xz-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.tools.chromeinspector-tool-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.tools.profiler-tool-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.truffle.truffle-api-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.truffle.truffle-compiler-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.truffle.truffle-nfi-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.truffle.truffle-nfi-libffi-25.1.0-SNAPSHOT.jar bundle:install file:///pathto/org.graalvm.truffle.truffle-runtime-25.1.0-SNAPSHOT.jar
bundle:start-level TRUFFLE_API_ID 79 bundle:start-level TREGEX_ID 78 bundle:start-level JS_LANGUAGE_ID 78
bundle:start JS_SCRIPTING_ID
269 │ Active │ 75 │ 5.1.3 │ openHAB Add-ons :: Bundles :: Transformation Service :: RegEx 271 │ Active │ 78 │ 25.1.0.SNAPSHOT │ GraalVM :: JS :: Language 272 │ Active │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: JS :: Script Engine 273 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: LLVM :: API 274 │ Active │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: Polyglot :: Polyglot 275 │ Resolved │ 78 │ 25.1.0.SNAPSHOT │ GraalVM :: Python :: Language 276 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: Python :: Resources 277 │ Resolved │ 78 │ 25.1.0.SNAPSHOT │ GraalVM :: Regex :: TRegex 278 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: SDK :: Collections 279 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: SDK :: JNI Utils 280 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: SDK :: Native Image 281 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: Truffle :: ICU4J 282 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: Truffle :: JSON 283 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: Truffle :: XZ 284 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: Tools :: Chrome Inspector 285 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: Tools :: Profiler 286 │ Active │ 79 │ 25.1.0.SNAPSHOT │ GraalVM :: Truffle :: API 287 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: Truffle :: Compiler 288 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: Truffle :: NFI 289 │ Active │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: Truffle :: NFI :: LibFFI 290 │ Active │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: Truffle :: Runtime 291 │ Resolved │ 80 │ 25.1.0.SNAPSHOT │ GraalVM :: SDK :: Word 292 │ Active │ 80 │ 5.1.3 │ openHAB Add-ons :: Bundles :: Automation :: JavaScript Scripting
console.log(“Hello, world!”)