joschi / java-metadata

Project collecting release metadata of various JDK distributions.
https://joschi.github.io/java-metadata/index.html
MIT License
32 stars 11 forks source link

Add support for GraalVM new release model #31

Closed bric3 closed 1 year ago

bric3 commented 1 year ago

GraalVM 23 is not anymore a "version", instead the release model will now follow the latest JDK available.

Up to GraalVM 22.3 we had

Starting from GraalVM 23

Not mentioning common components that are released under the Graalvm 23, but that are irrelevant here. In order to not confuse consumers by inserting version 17.0.7 and 20.0.1 in the past I suggest to handle the new releases in different section.

So to accommodate the release model change

Note this PR does not address

I'm not sure I properly tested the new script. Please advise.


Source: https://medium.com/graalvm/a-new-graalvm-release-and-new-free-license-4aab483692f5

Source: https://medium.com/graalvm/graalvm-galahad-and-a-new-release-schedule-d081d1031bba

Release Alignment

Starting with JDK 20 in March 2023, GraalVM will follow the JDK’s six-month release cadence.

Since its first release, new feature releases of GraalVM Enterprise and Community Editions have followed a three-month cadence whereas, since 2017, new JDK feature releases have followed a six-month cadence. Starting with the JDK 20 release in March of 2023, GraalVM Enterprise and GraalVM Community Editions intend to align with the six-month JDK release cadence. This means there will not be a GraalVM 23.0 release in January 2023 as we transition to the new release model. In addition, starting with JDK 20, GraalVM releases will only support the latest JDK version (just as Oracle OpenJDK releases do). This will simplify the choice of versions and ensure that developers have access to the latest Java features with each GraalVM release.

As part of this alignment, GraalVM will adopt the JDK’s release numbering scheme based on the supported Java version. To avoid confusion with older releases, new releases will be named GraalVM for JDK , with the next release, in March of 2023, expected to be GraalVM for JDK 20.

bric3 commented 1 year ago

For reference here's what the release file shows :

$ cat ./graalvm-community-openjdk-20.0.1+9.1/release
IMPLEMENTOR="GraalVM Community"
JAVA_VERSION="20.0.1"
JAVA_VERSION_DATE="2023-04-18"
LIBC="default"
MODULES="java.base java.compiler java.instrument java.logging java.management jdk.internal.vm.ci jdk.jfr jdk.unsupported org.graalvm.sdk java.datatransfer java.xml java.prefs java.desktop java.transaction.xa java.sql jdk.management org.graalvm.truffle jdk.internal.vm.compiler com.oracle.graal.graal_enterprise com.oracle.svm.extraimage_enterprise com.oracle.svm.svm_enterprise com.oracle.svm_enterprise.ml_dataset java.security.sasl java.naming java.rmi java.management.rmi java.net.http java.scripting java.security.jgss java.sql.rowset java.xml.crypto java.se java.smartcardio jdk.accessibility jdk.internal.jvmstat jdk.attach jdk.charsets jdk.zipfs jdk.compiler jdk.crypto.ec jdk.crypto.cryptoki jdk.dynalink jdk.internal.ed jdk.editpad jdk.hotspot.agent jdk.httpserver jdk.incubator.concurrent jdk.incubator.vector jdk.internal.le jdk.internal.opt jdk.internal.vm.compiler.management jdk.internal.vm.compiler.truffle.jfr jdk.jartool jdk.javadoc jdk.jcmd jdk.management.agent jdk.jconsole jdk.jdeps jdk.jdwp.agent jdk.jdi jdk.jlink jdk.jpackage jdk.jshell jdk.jsobject jdk.jstatd jdk.localedata jdk.management.jfr jdk.naming.dns jdk.naming.rmi jdk.net jdk.nio.mapmode jdk.random jdk.sctp jdk.security.auth jdk.security.jgss jdk.unsupported.desktop jdk.xml.dom org.graalvm.extraimage.builder org.graalvm.js.scriptengine org.graalvm.locator"
OS_ARCH="x86_64"
OS_NAME="Darwin"
SOURCE=".:git:e912b0b508f2+ labsjdk-builder:238767be59821c185f83121baa3858648fa7f709 compiler:f9ef31f0c872872f7008ae771540f3020223414c graal-js:940f9a35184ed498c66f156bd9f7adc99a3cec97 java-benchmarks:f9ef31f0c872872f7008ae771540f3020223414c regex:f9ef31f0c872872f7008ae771540f3020223414c sdk:f9ef31f0c872872f7008ae771540f3020223414c substratevm:f9ef31f0c872872f7008ae771540f3020223414c tools:f9ef31f0c872872f7008ae771540f3020223414c truffle:f9ef31f0c872872f7008ae771540f3020223414c vm:f9ef31f0c872872f7008ae771540f3020223414c"
GRAALVM_VERSION="23.0.0"
COMMIT_INFO={"compiler": {"commit.committer": "Gilles Duboscq <gilles.m.duboscq@oracle.com>", "commit.committer-ts": 1686090907, "commit.rev": "f9ef31f0c872872f7008ae771540f3020223414c"}, "graal-js": {"commit.committer": "Gilles Duboscq <gilles.m.duboscq@oracle.com>", "commit.committer-ts": 1686090643, "commit.rev": "940f9a35184ed498c66f156bd9f7adc99a3cec97"}, "java-benchmarks": {"commit.committer": "Gilles Duboscq <gilles.m.duboscq@oracle.com>", "commit.committer-ts": 1686090907, "commit.rev": "f9ef31f0c872872f7008ae771540f3020223414c"}, "regex": {"commit.committer": "Gilles Duboscq <gilles.m.duboscq@oracle.com>", "commit.committer-ts": 1686090907, "commit.rev": "f9ef31f0c872872f7008ae771540f3020223414c"}, "sdk": {"commit.committer": "Gilles Duboscq <gilles.m.duboscq@oracle.com>", "commit.committer-ts": 1686090907, "commit.rev": "f9ef31f0c872872f7008ae771540f3020223414c"}, "substratevm": {"commit.committer": "Gilles Duboscq <gilles.m.duboscq@oracle.com>", "commit.committer-ts": 1686090907, "commit.rev": "f9ef31f0c872872f7008ae771540f3020223414c"}, "tools": {"commit.committer": "Gilles Duboscq <gilles.m.duboscq@oracle.com>", "commit.committer-ts": 1686090907, "commit.rev": "f9ef31f0c872872f7008ae771540f3020223414c"}, "truffle": {"commit.committer": "Gilles Duboscq <gilles.m.duboscq@oracle.com>", "commit.committer-ts": 1686090907, "commit.rev": "f9ef31f0c872872f7008ae771540f3020223414c"}, "vm": {"commit.committer": "Gilles Duboscq <gilles.m.duboscq@oracle.com>", "commit.committer-ts": 1686090907, "commit.rev": "f9ef31f0c872872f7008ae771540f3020223414c"}}
component_catalog="https://www.graalvm.org/component-catalog/v2/graal-updater-component-catalog-java20.properties|{ee=GraalVM Enterprise Edition}rest://gds.oracle.com/api/20220101/"
GDS_PRODUCT_ID="D53FAE8052773FFAE0530F15000AA6C6"%

And

$ java --version
openjdk 20.0.1 2023-04-18
OpenJDK Runtime Environment GraalVM CE 20.0.1+9.1 (build 20.0.1+9-jvmci-23.0-b12)
OpenJDK 64-Bit Server VM GraalVM CE 20.0.1+9.1 (build 20.0.1+9-jvmci-23.0-b12, mixed mode, sharing)
joschi commented 1 year ago

I'm not sure I properly tested the new script. Please advise.

Testing is a bit lacking in this project. 😓

Testing a new provider should be as simple as calling it with two parameters, the metadata directory (the JSON files) and the checksum directory:

# bin/graalvm-community.bash graalvm-meta/ graalvm-checksums/

Right now, the detection of version seems to be broken in the new GraalVM Community provider:

  {
    "architecture": "x86_64",
    "features": [],
    "file_type": "tar.gz",
    "filename": "graalvm-community-jdk-17.0.7_linux-x64_bin.tar.gz",
    "image_type": "jdk",
    "java_version": "17.0.7",
    "jvm_impl": "graalvm",
    "md5": "6b046ae911e08d40c363bb5222b71638",
    "md5_file": "graalvm-community-jdk-17.0.7_linux-x64_bin.tar.gz.md5",
    "os": "linux",
    "release_type": "ga",
    "sha1": "f78de5343c5e380418926d46cc16eb8c929ca00c",
    "sha1_file": "graalvm-community-jdk-17.0.7_linux-x64_bin.tar.gz.sha1",
    "sha256": "094e5a7dcc4a903b70741d5c3c1688f83e83e2d44eb3d8d798c5d79ed902032c",
    "sha256_file": "graalvm-community-jdk-17.0.7_linux-x64_bin.tar.gz.sha256",
    "sha512": "ffaefa0fd6fd9c55817d4fbe74905781ec65d1c1874e04f0422b49cdb7e2e811dc2c00f19e1bdce97939ff4d9ecfd06e5660aa2b411d91496c9916d2a8cfb369",
    "sha512_file": "graalvm-community-jdk-17.0.7_linux-x64_bin.tar.gz.sha512",
    "size": 289319971,
    "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-17.0.7/graalvm-community-jdk-17.0.7_linux-x64_bin.tar.gz",
    "vendor": "graalvm-community",
    "version": "+java17.0.7"
  },

After f1833dd7809d8ba196b9a7c761b5aba71e762da2 it looks like this:

{
  "vendor": "graalvm-community",
  "filename": "graalvm-community-jdk-17.0.7_linux-aarch64_bin.tar.gz",
  "release_type": "ga",
  "version": "17.0.7",
  "java_version": "17.0.7",
  "jvm_impl": "graalvm",
  "os": "linux",
  "architecture": "aarch64",
  "file_type": "tar.gz",
  "image_type": "jdk",
  "features": [],
  "url": "https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-17.0.7/graalvm-community-jdk-17.0.7_linux-aarch64_bin.tar.gz",
  "md5": "4c4e014d732e1989b1af36ab1b7e8855",
  "md5_file": "graalvm-community-jdk-17.0.7_linux-aarch64_bin.tar.gz.md5",
  "sha1": "e8b220ddbff232d7f56996ad316c25636045d72b",
  "sha1_file": "graalvm-community-jdk-17.0.7_linux-aarch64_bin.tar.gz.sha1",
  "sha256": "cb5bedf6244d30018856559a393029e98de48c9608eb35ec6c4937dcb7d97224",
  "sha256_file": "graalvm-community-jdk-17.0.7_linux-aarch64_bin.tar.gz.sha256",
  "sha512": "af5efabb54e9eea7e6b612964701a75aa3ea9854e4b45b75ebcf8ddc99a70ad1dc867eacca86377eee9ebfdf00a84f729fac1907f16b514f383c39c7a5d4c5f6",
  "sha512_file": "graalvm-community-jdk-17.0.7_linux-aarch64_bin.tar.gz.sha512",
  "size": 281719482
}
bric3 commented 1 year ago

Cool thank you for the review and fixing the remaining bits.