ScoopInstaller / Java

📦 A bucket for Scoop, for Oracle Java, OpenJDK, Eclipse Temurin, IBM Semeru, Zulu, ojdkbuild, Amazon Corretto, BellSoft Liberica, SapMachine and Microsoft JDK.
https://scoop.sh
The Unlicense
255 stars 88 forks source link

[Request] New Oracle GraalVM and GraalVM Community for JDK 17.0.7 and JDK 20.0.1 #472

Open azmankudus opened 1 year ago

azmankudus commented 1 year ago

Package Request

Criteria

For a package to be acceptable in the Java bucket, it should be:

Information

Name: Oracle GraalVM

Description: GraalVM compiles your Java applications ahead of time into standalone binaries that start instantly, provide peak performance with no warmup, and use fewer resources.

Homepage: https://www.graalvm.org

Download link(s): https://www.graalvm.org/downloads https://github.com/graalvm/graalvm-ce-builds/releases/tag/jdk-20.0.1 https://github.com/graalvm/graalvm-ce-builds/releases/tag/jdk-17.0.7

Some indication of popularity/repute: GitHub stars 18.4k

License: GPLv2

NuclearMissile commented 1 year ago

GraalVM CE is already in current scoop https://scoop.sh/#/apps?q=graalvm

The new Oracle GraalVM should be added: https://www.graalvm.org/downloads/# ,maybe it is better to switch to this new build from version graalvm23

he3als commented 1 year ago

The new Oracle GraalVM used to be called GraalVM Enterprise, and it offers much better performance over GraalVM Community Edition.

It should be switched to over CE.

NuclearMissile commented 1 year ago

@he3als I agree, the new Oracle GraalVM includes close-sourced optimizations from graalvm EE and now its version is 23.0.0.

Small-Ku commented 1 year ago

It seems hard to check its version when they only providing a latest URL.

azmankudus commented 1 year ago

It seems hard to check its version when they only providing a latest URL.

Not hard actually as they also release in their ce build github. As i shared the links in my first comment.

Btw, sdkman already release with -graal and -graalce.

sdk install java 20.0.1-graal sdk install java 17.0.7-graal sdk install java 20.0.1-graalce sdk install java 17.0.7-graalce

he3als commented 1 year ago

It seems hard to check its version when they only providing a latest URL.

You can use APIs

Small-Ku commented 1 year ago

I mean that they seems only providing URLs that specify java version of 20/17, but not specify their graalvm version. The current graalvm in this bucket is checking graalvm version. If the link is just always like https://download.oracle.com/graalvm/20/latest/graalvm-jdk-20_windows-x64_bin.zip, it seems that it will not work well with scoop with features like cache and hash checking, like when they updated graalvm in the same java version.

he3als commented 1 year ago

You can see how my script does it, not sure if it would work for Scoop or if there's a better option.

https://github.com/he3als/graalvm-downloader

Small-Ku commented 1 year ago

Your script still downloading something this: https://download.oracle.com/graalvm/20/latest/graalvm-jdk-20_windows-x64_bin.zip You can't ensure the graalvm you downloaded and checked hash for is the version you checked from the API.

But even their Github Actions is not specifying graalvm version. It seems the only choice currently. As a result, I think it might not fulfilling this:

he3als commented 1 year ago

To be fair, it's somewhat complex to get the version, and it's not really an API as I just got the link to that JSON for it from the 'Network' tab of the Oracle GraalVM website.

However, it might be possible other ways.

Small-Ku commented 1 year ago

Made some manifests in my own bucket: https://github.com/Small-Ku/turbo-bucket/blob/442dedecdda3c3fe54efa53f3e536ff2b862347a/bucket/graalvm.json https://github.com/Small-Ku/turbo-bucket/blob/442dedecdda3c3fe54efa53f3e536ff2b862347a/bucket/graalvm-jdk17.json It seems Oracle GraalVM is already updated at least once but did not mentioning it in release notes. In release note: 20.0.1+8 Current: 20.0.1+9.1

SPC-code commented 1 year ago

It seems like Oracle create a page specifically for tools like scoop: https://www.oracle.com/java/technologies/jdk-script-friendly-urls/

Small-Ku commented 1 year ago

It seems like Oracle create a page specifically for tools like scoop: oracle.com/java/technologies/jdk-script-friendly-urls

My manifests actually using it. They still don't have a quick way to check their version updates.

lread commented 1 year ago

This is hinted at in the comments above, but maybe it helps to spell it all out.

It's all a bit confusing because the Graal team changed the versioning scheme on us and made a new variant available.

The versioning scheme is now simply the JDK version. So we no longer have for example 22.3.1 jdk 17, we just have for example jdk 17.0.8.

And we no longer only have only the Community Edition, we now also have GraalVM Oracle.

For the new versioning scheme, as I think @azmankudus suggested, we might want to follow some sdkman-like scheme.

Maybe graalvm-ce and graalvm-oracle to clearly distinguish the new scheme and variant.

I think we should include both ce and oracle variants because licensing is different for these and maybe folks need to use one over the other for that reason.

So if I understand existing patterns.... maybe?:

Maybe:

As for the existing graalvm, these can be used for the legacy versioning scheme if there is an interest/want/need to keep them around. FWIW, sdkman chose not to list these legacy versions.

Let me know what you think of the above, and, if you'd like any help.

BTW, I don't know if the scoop java bucket takes advantage of the disco api at all. I know that sdkman does so to automate updating its record of java releases.

Small-Ku commented 1 year ago

Seems disco api is nice for checkver, but it is still difficult to auto-update the extract_dir value aside from using a checkver script extracting the zip once since the "+9.1" seems come from nowhere

https://github.com/Small-Ku/turbo-bucket/blob/main/bucket/graalvm-jdk.json https://github.com/Small-Ku/turbo-bucket/blob/main/bucket/graalvm17-jdk.json https://github.com/Small-Ku/turbo-bucket/blob/main/bucket/graalvm20-jdk.json

lread commented 1 year ago

@Small-Ku, I use scoop, but have never looked into how packages work, so I might be out to lunch here... but...

If the extract_dir is not predictable/described, maybe just extract the entire thing and then perhaps do some extra work under installer -> script? Would something like that work?

Small-Ku commented 1 year ago

It works, but one of the criteria to be in the Java bucket is:

lread commented 1 year ago

Ah... @Small-Ku, interesting. Sounds like a reasonable rule/goal in general.

I think the nature of the GraalVM distributions means we need a lil' something to help. And we could propose that:

  1. we aren't adding pre_install or post_install scripts (I think?)
  2. our installer->script would not be "elaborate", it would be "fairly standard".

Would that do the trick? Who would we appeal to?

HeroTch commented 1 year ago

@Small-Ku 新的 CE 版本似乎不再使用calendar year作为版本号的一部分。

https://www.graalvm.org/release-calendar/ Starting in 2023, GraalVM Community Edition will align with the six-month JDK release cadence. There will be two feature releases per year to support the latest JDK version. A new feature release supersedes all previous releases. GraalVM releases are named for the JDK release they provide, for example, GraalVM for JDK 17.

新的版本号规则应该确定下来了。原本的Github链接稍加修改应该可以使用。可以查看一下tags https://github.com/graalvm/graalvm-ce-builds/tags (如果没有看错的话仍然是CE的许可证)

se35710 commented 1 year ago

Sorry for being late to this conversation. I will review and accept the PR if someone creates it with the following content:

  1. Manifests with naming from https://github.com/ScoopInstaller/Java/issues/472#issuecomment-1657283265
  2. Elaborate install script, for example: https://github.com/ScoopInstaller/Java/blob/d2212702c653024cf92a10638c69be8048cfa950/bucket/microsoft17-jdk.json#L17-L22
  3. Checkver should not be from any third party repository. Please find a parseable source. You can also use an elaborate approach for the checkver, like in https://github.com/ScoopInstaller/Java/blob/d2212702c653024cf92a10638c69be8048cfa950/bucket/oraclejre8.json#L22-L32

Thanks for the contributions. Please write in the PR your design decisions, for later changes to the manifest.

rollingmoai commented 1 month ago