scalameta / sbt-native-image

Plugin to generate native-image binaries with sbt
251 stars 22 forks source link

GraalVM 20.2.0 support #3

Closed reibitto closed 3 years ago

reibitto commented 4 years ago

Is GraalVM 20.2.0 supported? I see the default is 20.1.0, so I'm wondering if there's still a blocker somewhere for 20.2.0.

I tried setting nativeImageVersion := "20.2.0" and it seems to download it fine. But then it fails with:

Downloaded https://repo1.maven.org/maven2/org/graalvm/compiler/compiler/20.2.0/compiler-20.2.0.jar
Exception in thread "main" coursier.jvm.JvmCache$JvmNotFoundInIndex: JVM graalvm:20.2.0 not found in index: No graalvm version matching '20.2.0' found
    at coursier.jvm.JvmCache.$anonfun$getIfInstalled$2(JvmCache.scala:100)
    at coursier.jvm.JvmCache.$anonfun$getIfInstalled$2$adapted(JvmCache.scala:99)
    at coursier.util.Task$.$anonfun$flatMap$2(Task.scala:14)
    at scala.concurrent.Future.$anonfun$flatMap$1(Future.scala:307)
    at scala.concurrent.impl.Promise.$anonfun$transformWith$1(Promise.scala:41)
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:64)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)

Installation:

Additional context

No particular special config set besides nativeImageVersion.

olafurpg commented 4 years ago

Thank you for reporting! The GraalVM installation is implemented via Coursier that uses Jabba configuration under the hood. The currently supported versions are

❯ jabba ls-remote | grep graalvm
graalvm@20.1.0
graalvm@20.0.0
graalvm@19.3.2
graalvm@19.3.1
graalvm@19.3.0
graalvm@19.2.1
graalvm@19.2.0
graalvm@19.2.0-1
graalvm@19.1.1
graalvm@19.1.0
graalvm@19.0.2
graalvm@19.0.0
graalvm@1.0.0-16
graalvm@1.0.0-15
graalvm@1.0.0-14
graalvm@1.0.0-13
graalvm@1.0.0-12
graalvm@1.0.0-11
graalvm@1.0.0-10
graalvm@1.0.0-9
graalvm@1.0.0-8
graalvm@1.0.0-7
graalvm@1.0.0-6
graalvm@1.0.0-5
graalvm-ce-java11@20.1.0
graalvm-ce-java11@20.0.0
graalvm-ce-java11@19.3.2
graalvm-ce-java11@19.3.1
graalvm-ce-java11@19.3.0
graalvm-ce-java8@20.1.0
graalvm-ce-java8@20.0.0
graalvm-ce-java8@19.3.2
graalvm-ce-java8@19.3.1
graalvm-ce-java8@19.3.0
graalvm-ce-java8@19.2.1
graalvm-ce-java8@19.2.0
graalvm-ce-java8@19.2.0-1
graalvm-ce-java8@19.1.1
graalvm-ce-java8@19.1.0
graalvm-ce-java8@19.0.2
graalvm-ce-java8@19.0.0
graalvm-ce-java8@1.0.0-16
graalvm-ce-java8@1.0.0-15
graalvm-ce-java8@1.0.0-14
graalvm-ce-java8@1.0.0-13
graalvm-ce-java8@1.0.0-12
graalvm-ce-java8@1.0.0-11
graalvm-ce-java8@1.0.0-10
graalvm-ce-java8@1.0.0-9
graalvm-ce-java8@1.0.0-8
graalvm-ce-java8@1.0.0-7
graalvm-ce-java8@1.0.0-6
graalvm-ce-java8@1.0.0-5

I think this can be fixed by sending a PR to Jabba adding 20.2.0 around here https://github.com/shyiko/jabba/blob/ef8082dbaf6e26920d02061a2190b032f1794cbd/index.json#L198 similar to this commit here https://github.com/shyiko/jabba/commit/df6684ed1abca1eba1c18dfd8ec4ea7f39441390

reibitto commented 4 years ago

Thanks! I don't know anything about Jabba, but what you found seems to check out. I could try creating a PR later today.

reibitto commented 4 years ago

I looked into this and it seems like there's a sync tool of some kind that does the index.json additions in Jabba? I can't really tell. But given the number of open PRs, I opted for creating an issue first and asking about it.

https://github.com/shyiko/jabba/issues/714

reibitto commented 3 years ago

It looks like the issue upstream is fixed. I don't know if we have to wait for a release or the next version of Coursier for it to take effect though. I don't know the inner workings there.

olafurpg commented 3 years ago

I opened https://github.com/scalameta/sbt-native-image/pull/15 changing the default GraalVM version to 20.2.0 by using the JVM index from Coursier instead of Jabba https://github.com/scalameta/sbt-native-image/issues/8#issuecomment-704434014