├── publish ├── .config │ └── mill-version ├── .gitignore ├── build.mill ├── mill.bat └── mill ├── .gitignore ├── .github ├── cs-cache-files ├── dependabot.yml └── workflows │ ├── test.yml │ ├── publish.yml │ └── update-index.yml ├── src └── coursier │ └── jvmindex │ ├── OsArchIndex.scala │ ├── GhToken.scala │ ├── Asset.scala │ ├── Release.scala │ ├── GitHub.scala │ ├── GenerateIndex.scala │ ├── Oracle.scala │ ├── GraalvmLegacy.scala │ ├── Graalvm.scala │ ├── Zulu.scala │ ├── Liberica.scala │ ├── IbmSemeru.scala │ ├── LibericaNik.scala │ ├── Corretto.scala │ ├── Temurin.scala │ └── Index.scala ├── .scalafmt.conf ├── scala-cli.sh ├── README.md └── indices ├── solaris-amd64.json ├── linux-ppc64.json └── windows-arm64.json /publish/.config/mill-version: -------------------------------------------------------------------------------- 1 | 0.12.14 -------------------------------------------------------------------------------- /publish/.gitignore: -------------------------------------------------------------------------------- 1 | .bloop/ 2 | .bsp/ 3 | out/ 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .scala-build/ 2 | .bsp/ 3 | .metals/ 4 | .vscode/ -------------------------------------------------------------------------------- /.github/cs-cache-files: -------------------------------------------------------------------------------- 1 | generate-index.* 2 | .github/scripts/*.sh 3 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/OsArchIndex.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | final case class OsArchIndex(map: Map[String, Map[String, String]]) { 4 | def json: String = 5 | Index.json2(map).render(indent = 2) 6 | } 7 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/GhToken.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | object GhToken { 4 | 5 | lazy val token = Option(System.getenv("GH_TOKEN")).getOrElse { 6 | System.err.println( 7 | "Warning: GH_TOKEN not set, it's likely we'll get rate-limited by the GitHub API" 8 | ) 9 | "" 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | on: 3 | push: 4 | branches: 5 | - master 6 | pull_request: 7 | 8 | jobs: 9 | test: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v6 13 | - uses: coursier/cache-action@v7.0 14 | - uses: coursier/setup-action@v1.3 15 | with: 16 | jvm: 11 17 | - run: ./scala-cli.sh compile src 18 | 19 | fmt: 20 | runs-on: ubuntu-latest 21 | steps: 22 | - uses: actions/checkout@v6 23 | - uses: coursier/cache-action@v7.0 24 | - uses: coursier/setup-action@v1.3 25 | with: 26 | jvm: 11 27 | apps: scalafmt 28 | - run: scalafmt --test 29 | -------------------------------------------------------------------------------- /.scalafmt.conf: -------------------------------------------------------------------------------- 1 | version = 3.7.14 2 | project.git = true 3 | 4 | align.preset = more 5 | maxColumn = 100 6 | assumeStandardLibraryStripMargin = true 7 | indent.defnSite = 2 8 | indentOperator.topLevelOnly = false 9 | align.preset = more 10 | align.openParenCallSite = false 11 | newlines.source = keep 12 | newlines.beforeMultiline = keep 13 | newlines.afterCurlyLambdaParams = keep 14 | newlines.alwaysBeforeElseAfterCurlyIf = true 15 | 16 | runner.dialect = scala3 17 | 18 | rewrite.rules = [ 19 | RedundantBraces 20 | RedundantParens 21 | SortModifiers 22 | ] 23 | 24 | rewrite.redundantBraces { 25 | ifElseExpressions = true 26 | includeUnitMethods = false 27 | stringInterpolation = true 28 | } 29 | 30 | rewrite.sortModifiers.order = [ 31 | "private", "final", "override", "protected", 32 | "implicit", "sealed", "abstract", "lazy" 33 | ] 34 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish 2 | on: 3 | push: 4 | branches: 5 | - master 6 | pull_request: 7 | 8 | jobs: 9 | publish: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v6 13 | with: 14 | fetch-depth: 0 15 | - uses: coursier/cache-action@v7.0 16 | - uses: coursier/setup-action@v1.3 17 | with: 18 | jvm: 17 19 | - name: Publish local 20 | run: cd publish && ./mill -i __.publishLocal 21 | if: github.ref != 'refs/heads/master' 22 | - name: Publish 23 | run: cd publish && ./mill -i mill.scalalib.SonatypeCentralPublishModule/ 24 | if: github.ref == 'refs/heads/master' 25 | env: 26 | MILL_PGP_SECRET_BASE64: ${{ secrets.PUBLISH_SECRET_KEY }} 27 | MILL_PGP_PASSPHRASE: ${{ secrets.PUBLISH_SECRET_KEY_PASSWORD }} 28 | MILL_SONATYPE_USERNAME: ${{ secrets.PUBLISH_USER }} 29 | MILL_SONATYPE_PASSWORD: ${{ secrets.PUBLISH_PASSWORD }} 30 | -------------------------------------------------------------------------------- /.github/workflows/update-index.yml: -------------------------------------------------------------------------------- 1 | name: Update index 2 | on: 3 | push: 4 | schedule: 5 | - cron: "0 0 * * *" 6 | workflow_dispatch: 7 | 8 | concurrency: 9 | group: ${{ github.workflow }}-${{ github.ref }} 10 | cancel-in-progress: false 11 | 12 | jobs: 13 | update-index: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v6 17 | - uses: coursier/cache-action@v7.0 18 | - uses: coursier/setup-action@v1.3 19 | with: 20 | jvm: 11 21 | - run: ./scala-cli.sh src 22 | env: 23 | GH_TOKEN: ${{ secrets.INDEX_GITHUB_TOKEN }} 24 | 25 | - name: Print diff 26 | run: git diff --color --diff-algorithm=patience 27 | 28 | - name: Create Pull Request 29 | if: github.ref == 'refs/heads/master' 30 | id: cpr 31 | uses: peter-evans/create-pull-request@v7.0.9 32 | with: 33 | commit-message: Update index 34 | author: GitHub 35 | delete-branch: true 36 | title: Update index 37 | - name: Generate Job Summary 38 | if: github.ref == 'refs/heads/master' 39 | run: |- 40 | PR_NUMBER=$(echo "${{ steps.cpr.outputs.pull-request-number }}") 41 | PR_URL=$(echo "${{ steps.cpr.outputs.pull-request-url }}") 42 | echo "## Index Update Summary" >> $GITHUB_STEP_SUMMARY 43 | echo "" >> $GITHUB_STEP_SUMMARY 44 | echo "Pull Request Number - **${PR_NUMBER}**" >> $GITHUB_STEP_SUMMARY 45 | echo "Pull Request URL - **${PR_URL}**" >> $GITHUB_STEP_SUMMARY 46 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/Asset.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import scala.util.control.NonFatal 4 | 5 | final case class Asset( 6 | name: String, 7 | downloadUrl: String 8 | ) 9 | 10 | object Asset { 11 | 12 | def releaseAssets( 13 | ghOrg: String, 14 | ghProj: String, 15 | ghToken: String, 16 | tagName: String 17 | ): Iterator[Asset] = { 18 | 19 | def helper(before: Option[String]): Iterator[Asset] = { 20 | System.err.println( 21 | s"Getting assets of $ghOrg/$ghProj for release $tagName${before.fold("")(" before " + _)} …" 22 | ) 23 | val resp = GitHub.queryRepo(ghOrg, ghProj, ghToken) { 24 | s"""|release(tagName: "$tagName") { 25 | | releaseAssets( 26 | | ${before.fold("")(cursor => s"before: \"$cursor\"")} 27 | | last: 100 28 | | ) { 29 | | nodes { name downloadUrl } 30 | | pageInfo { hasPreviousPage, startCursor } 31 | | } 32 | |}""".stripMargin 33 | } 34 | val json = resp("release")("releaseAssets") 35 | 36 | val res = 37 | try json("nodes").arr.map { obj => 38 | Asset(obj("name").str, obj("downloadUrl").str) 39 | } 40 | catch { 41 | case NonFatal(e) => 42 | System.err.println(json) 43 | throw e 44 | } 45 | 46 | val pageInfo = json("pageInfo") 47 | if (pageInfo("hasPreviousPage").bool) 48 | res.iterator ++ helper(Some(pageInfo("startCursor").str)) 49 | else 50 | res.iterator 51 | } 52 | 53 | helper(None) 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /publish/build.mill: -------------------------------------------------------------------------------- 1 | import $ivy.`de.tototec::de.tobiasroeser.mill.vcs.version::0.4.0` 2 | 3 | import de.tobiasroeser.mill.vcs.version.VcsVersion 4 | import mill._ 5 | import mill.api.WorkspaceRoot 6 | import mill.scalalib._ 7 | import mill.scalalib.publish._ 8 | 9 | import scala.concurrent.duration._ 10 | 11 | trait IndexModule extends Cross.Module[String] with PublishModule { 12 | def moduleName = s"index-$crossValue" 13 | def pomSettings = PomSettings( 14 | description = s"JVM index for $crossValue", 15 | organization = "io.get-coursier.jvm.indices", 16 | url = "https://github.com/coursier/jvm-index", 17 | licenses = Seq(License.`Apache-2.0`), 18 | versionControl = VersionControl.github("io.get-coursier", "jvm-index"), 19 | developers = Seq( 20 | Developer("alexarchambault", "Alex Archambault", "https://github.com/alexarchambault") 21 | ) 22 | ) 23 | def publishVersion = VcsVersion.vcsState().format() 24 | 25 | def indexFile = T.source { 26 | PathRef(T.workspace / os.up / "indices" / s"$crossValue.json") 27 | } 28 | 29 | def indexResourceDir = T { 30 | val dest = T.dest 31 | os.copy.over( 32 | indexFile().path, 33 | dest / "coursier/jvm/indices/v1" / s"$crossValue.json", 34 | createFolders = true 35 | ) 36 | PathRef(dest) 37 | } 38 | 39 | def resources = T.sources( 40 | Seq(indexResourceDir()) 41 | ) 42 | } 43 | 44 | lazy val osCpus = 45 | os.list(WorkspaceRoot.workspaceRoot / os.up / "indices") 46 | .filter(_.last.endsWith(".json")) 47 | .filter(os.isFile) 48 | .map(_.last.stripSuffix(".json")) 49 | 50 | object index extends Cross[IndexModule](osCpus) 51 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/Release.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import scala.util.control.NonFatal 4 | 5 | final case class Release( 6 | tagName: String, 7 | prerelease: Boolean 8 | ) 9 | 10 | object Release { 11 | 12 | def releaseIds( 13 | ghOrg: String, 14 | ghProj: String, 15 | ghToken: String 16 | ): Iterator[Release] = { 17 | def helper(before: Option[String]): Iterator[Release] = { 18 | System.err.println(s"Getting releases of $ghOrg/$ghProj${before.fold("")(" before " + _)} …") 19 | val resp = GitHub.queryRepo(ghOrg, ghProj, ghToken) { 20 | s"""|releases( 21 | | ${before.fold("")(cursor => s"before: \"$cursor\"")} 22 | | orderBy: {field: CREATED_AT, direction: DESC} 23 | | last: 100 24 | |) { 25 | | nodes { tagName isPrerelease } 26 | | pageInfo { hasPreviousPage, startCursor } 27 | |}""".stripMargin 28 | } 29 | 30 | if (resp.isNull) 31 | Iterator.empty 32 | else { 33 | val json = resp("releases") 34 | val res = 35 | try json("nodes").arr.map { obj => 36 | Release(obj("tagName").str, obj("isPrerelease").bool) 37 | } 38 | catch { 39 | case NonFatal(e) => 40 | System.err.println(json) 41 | throw e 42 | } 43 | 44 | val pageInfo = json("pageInfo") 45 | if (pageInfo("hasPreviousPage").bool) 46 | res.iterator ++ helper(Some(pageInfo("startCursor").str)) 47 | else 48 | res.iterator 49 | } 50 | } 51 | 52 | helper(None) 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/GitHub.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import sttp.client3.quick._ 4 | import sttp.model.HeaderNames 5 | 6 | import scala.annotation.tailrec 7 | import scala.util.control.NonFatal 8 | 9 | object GitHub { 10 | @tailrec 11 | def queryRepo( 12 | owner: String, 13 | name: String, 14 | ghToken: String 15 | )( 16 | q: String 17 | ): ujson.Value = { 18 | val body = ujson.Obj( 19 | "query" -> ujson.Str(s"""query { repository(owner: "$owner" name: "$name") { $q } }""") 20 | ) 21 | 22 | val resp = quickRequest 23 | .headers { 24 | if (ghToken.isEmpty) Map[String, String]() 25 | else Map("Authorization" -> s"token $ghToken") 26 | } 27 | .body(body.render()) 28 | .post(uri"https://api.github.com/graphql") 29 | .send(backend) 30 | 31 | val json = ujson.read(resp.body) 32 | 33 | if (!json.obj.contains("data")) 34 | pprint.err.log(resp) 35 | 36 | val retryDelayOpt = resp.header(HeaderNames.RetryAfter) 37 | .filter(_ => !json.obj.contains("data")) 38 | .flatMap(_.toIntOption) 39 | retryDelayOpt match { 40 | case Some(delaySeconds) => 41 | System.err.println(s"GitHub rate limit exceeded, waiting $delaySeconds seconds") 42 | Thread.sleep(delaySeconds * 1000L) 43 | queryRepo(owner, name, ghToken)(q) 44 | case None => 45 | if ( 46 | !json.obj.contains("data") && 47 | json.obj.get("message").exists(_.str.contains("API rate limit exceeded")) 48 | ) { 49 | System.err.println("GitHub rate limit exceeded, waiting one minute") 50 | Thread.sleep(60L * 1000L) 51 | queryRepo(owner, name, ghToken)(q) 52 | } 53 | else 54 | try json("data")("repository") 55 | catch { case NonFatal(e) => println(body); println(resp); throw e } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /scala-cli.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # This is the launcher script of Scala CLI (https://github.com/VirtusLab/scala-cli). 4 | # This script downloads and runs the Scala CLI version set by SCALA_CLI_VERSION below. 5 | # 6 | # Download the latest version of this script at https://github.com/VirtusLab/scala-cli/raw/main/scala-cli.sh 7 | 8 | set -eu 9 | 10 | SCALA_CLI_VERSION="1.1.3" 11 | 12 | GH_ORG="VirtusLab" 13 | GH_NAME="scala-cli" 14 | 15 | if [ "$SCALA_CLI_VERSION" == "nightly" ]; then 16 | TAG="nightly" 17 | else 18 | TAG="v$SCALA_CLI_VERSION" 19 | fi 20 | 21 | if [ "$(expr substr $(uname -s) 1 5 2>/dev/null)" == "Linux" ]; then 22 | arch=$(uname -m) 23 | if [[ "$arch" == "aarch64" ]] || [[ "$arch" == "x86_64" ]]; then 24 | SCALA_CLI_URL="https://github.com/$GH_ORG/$GH_NAME/releases/download/$TAG/scala-cli-${arch}-pc-linux.gz" 25 | else 26 | echoerr "scala-cli is not supported on $arch" 27 | exit 2 28 | fi 29 | CACHE_BASE="$HOME/.cache/coursier/v1" 30 | elif [ "$(uname)" == "Darwin" ]; then 31 | SCALA_CLI_URL="https://github.com/$GH_ORG/$GH_NAME/releases/download/$TAG/scala-cli-x86_64-apple-darwin.gz" 32 | CACHE_BASE="$HOME/Library/Caches/Coursier/v1" 33 | else 34 | echo "This standalone scala-cli launcher is supported only in Linux and macOS. If you are using Windows, please use the dedicated launcher scala-cli.bat" 35 | exit 1 36 | fi 37 | 38 | CACHE_DEST="$CACHE_BASE/$(echo "$SCALA_CLI_URL" | sed 's@://@/@')" 39 | SCALA_CLI_BIN_PATH=${CACHE_DEST%.gz} 40 | 41 | if [ ! -f "$CACHE_DEST" ]; then 42 | mkdir -p "$(dirname "$CACHE_DEST")" 43 | TMP_DEST="$CACHE_DEST.tmp-setup" 44 | echo "Downloading $SCALA_CLI_URL" 45 | curl -fLo "$TMP_DEST" "$SCALA_CLI_URL" 46 | mv "$TMP_DEST" "$CACHE_DEST" 47 | fi 48 | 49 | if [ ! -f "$SCALA_CLI_BIN_PATH" ]; then 50 | gunzip -k "$CACHE_DEST" 51 | fi 52 | 53 | if [ ! -x "$SCALA_CLI_BIN_PATH" ]; then 54 | chmod +x "$SCALA_CLI_BIN_PATH" 55 | fi 56 | 57 | exec "$SCALA_CLI_BIN_PATH" "$@" 58 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/GenerateIndex.scala: -------------------------------------------------------------------------------- 1 | //> using scala 3 2 | //> using dep com.softwaremill.sttp.client3::core:3.10.1 3 | //> using dep com.lihaoyi::ujson:4.0.2 4 | //> using dep com.lihaoyi::os-lib:0.11.3 5 | //> using dep com.lihaoyi::pprint:0.9.0 6 | //> using dep io.get-coursier:versions_2.13:0.3.3 7 | //> using options -Wunused:all -deprecation 8 | 9 | package coursier.jvmindex 10 | 11 | import java.util.concurrent.Executors 12 | 13 | import scala.concurrent.{Await, ExecutionContext, Future} 14 | import scala.concurrent.duration.Duration 15 | 16 | object GenerateIndex { 17 | 18 | def main(args: Array[String]): Unit = { 19 | 20 | val baseName = "index" 21 | 22 | val dest = os.sub / s"$baseName.json" 23 | 24 | val pool = Executors.newFixedThreadPool(6) 25 | 26 | val index = 27 | try { 28 | implicit val ec: ExecutionContext = ExecutionContext.fromExecutorService(pool) 29 | 30 | val futures = Seq( 31 | Future(Corretto.fullIndex(GhToken.token)), 32 | Future(GraalvmLegacy.fullIndex(GhToken.token)), 33 | Future(Graalvm.fullIndex(GhToken.token)), 34 | Future(Oracle.index()), 35 | Future(Temurin.fullIndex(GhToken.token)), 36 | Future(Zulu.index()), 37 | Future(Liberica.index()), 38 | Future(LibericaNik.index()), 39 | Future(IbmSemeru.fullIndex(GhToken.token)) 40 | ) 41 | 42 | futures 43 | .map(f => Await.result(f, Duration.Inf)) 44 | .foldLeft(Index.empty)(_ + _) 45 | } 46 | finally 47 | pool.shutdown() 48 | 49 | val json = index.json 50 | os.write.over(os.pwd / dest, json) 51 | System.err.println(s"Wrote $dest") 52 | 53 | val indicesDir = os.sub / "indices" 54 | 55 | System.err.println(s"Removed $indicesDir") 56 | os.remove.all(os.pwd / indicesDir) 57 | for (((os0, arch), osArchIndex) <- index.osArchIndices.toVector.sortBy(_._1)) { 58 | val dest0 = indicesDir / s"$os0-$arch.json" 59 | val json0 = osArchIndex.json 60 | os.write.over(os.pwd / dest0, json0, createFolders = true) 61 | System.err.println(s"Wrote $dest0") 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/Oracle.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import sttp.client3.quick._ 4 | import Index.{Arch, Os} 5 | 6 | object Oracle { 7 | 8 | private def minJavaVersion = 21 9 | 10 | final case class Params( 11 | indexOs: Os, 12 | indexArch: Arch, 13 | indexJdkName: String, 14 | jdkVersion: String, 15 | indexArchiveType: String 16 | ) { 17 | lazy val url: sttp.model.Uri = 18 | uri"https://download.oracle.com/$indexJdkName/$jdkVersion/latest/$jdkName-${jdkVersion}_$os-${indexArch}_bin.$ext" 19 | 20 | lazy val jdkName = indexJdkName match { 21 | case "java" => "jdk" 22 | case "graalvm" => "graalvm-jdk" 23 | } 24 | 25 | lazy val os = indexOs match { 26 | case Os("linux") => "linux" 27 | case Os("darwin") => "macos" 28 | case Os("windows") => "windows" 29 | case x => x 30 | } 31 | 32 | lazy val arch = indexArch match { 33 | case Arch("aarch64") => Arch("arm64") 34 | case Arch("x64") => Arch("amd64") 35 | case _ => ??? 36 | } 37 | 38 | lazy val ext = indexArchiveType match { 39 | case "tgz" => "tar.gz" 40 | case x => x 41 | } 42 | 43 | def index(url: String) = 44 | val indexUrl = s"$indexArchiveType+$url" 45 | Index(indexOs, arch, s"jdk@$indexJdkName-oracle", jdkVersion, indexUrl) 46 | } 47 | 48 | def index(): Index = { 49 | val oses = Seq(Os("darwin"), Os("linux"), Os("windows")) 50 | val jdks = (0 until 10).map(minJavaVersion + _).map(_.toString) 51 | val jdkNames = Seq("java", "graalvm") 52 | val allParams = for { 53 | os <- oses 54 | cpu <- if (os == Os("windows")) Seq(Arch("x64")) else Seq(Arch("x64"), Arch("aarch64")) 55 | jdk <- jdks 56 | jdkName <- jdkNames 57 | ext = if (os == Os("windows")) "zip" else "tgz" 58 | } yield Params(os, cpu, jdkName, jdk, ext) 59 | 60 | allParams 61 | .map { params => 62 | val resp = quickRequest.get(params.url) 63 | .followRedirects(false) // invalid URL => 301 + redirect to 200; keep the 301 64 | .response(ignore) // don't download and hang on 200s 65 | .send(backend) 66 | 67 | if (resp.code.isSuccess) { 68 | System.err.println(s"Valid url (status code ${resp.code}): ${params.url}") 69 | params.index(params.url.toString) 70 | } 71 | else { 72 | System.err.println(s"Invalid url (status code ${resp.code}): ${params.url}") 73 | Index.empty 74 | } 75 | } 76 | .filter(_ != Index.empty) 77 | .foldLeft(Index.empty)(_ + _) 78 | } 79 | 80 | } 81 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/GraalvmLegacy.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import Index.{Arch, Os} 4 | 5 | object GraalvmLegacy { 6 | 7 | private def ghOrg = "graalvm" 8 | private def ghProj = "graalvm-ce-builds" 9 | 10 | private def javaVersions = Seq("8", "11", "16", "17", "19") 11 | 12 | def fullIndex(ghToken: String): Index = { 13 | 14 | val releases = Release.releaseIds(ghOrg, ghProj, ghToken) 15 | .filter(!_.prerelease) 16 | .map(_.tagName) 17 | .toVector 18 | 19 | val indices = javaVersions.map(v => index(releases, ghToken, v)) 20 | 21 | indices.foldLeft(Index.empty)(_ + _) 22 | } 23 | 24 | def index( 25 | releases: Seq[String], 26 | ghToken: String, 27 | javaVersion: String 28 | ): Index = { 29 | 30 | val javaVersionInName0 = javaVersion != "8" 31 | val name = 32 | if (javaVersionInName0) 33 | s"jdk@graalvm-java$javaVersion" 34 | else 35 | "jdk@graalvm" 36 | 37 | val assetNamePrefix = s"graalvm-ce-java$javaVersion-" 38 | 39 | def osOpt(input: String): Option[(Os, String)] = 40 | if (input.startsWith("linux-")) 41 | Some((Os("linux"), input.stripPrefix("linux-"))) 42 | else if (input.startsWith("darwin-")) 43 | Some((Os("darwin"), input.stripPrefix("darwin-"))) 44 | else if (input.startsWith("windows-")) 45 | Some((Os("windows"), input.stripPrefix("windows-"))) 46 | else 47 | None 48 | 49 | def archOpt(input: String): Option[(Arch, String)] = 50 | if (input.startsWith("amd64-")) 51 | Some((Arch("amd64"), input.stripPrefix("amd64-"))) 52 | else if (input.startsWith("aarch64-")) 53 | Some((Arch("arm64"), input.stripPrefix("aarch64-"))) 54 | else 55 | None 56 | 57 | def archiveTypeOpt(input: String): Option[String] = 58 | if (input == "zip") Some("zip") 59 | else if (input == "tar.gz") Some("tgz") 60 | else None 61 | 62 | val indices = releases 63 | .filter(_.startsWith("vm-")) 64 | .flatMap { tagName => 65 | val version = tagName.stripPrefix("vm-") 66 | val assets = Asset.releaseAssets(ghOrg, ghProj, ghToken, tagName) 67 | assets 68 | .filter(asset => asset.name.startsWith(assetNamePrefix)) 69 | .flatMap { asset => 70 | val name0 = asset.name.stripPrefix(assetNamePrefix) 71 | val opt = for { 72 | (os, rem) <- osOpt(name0) 73 | (arch, rem0) <- archOpt(rem) 74 | ext <- Some(rem0) 75 | .filter(_.startsWith(version + ".")) 76 | .map(_.stripPrefix(version + ".")) 77 | archiveType <- archiveTypeOpt(ext) 78 | } yield Index(os, arch, name, version, archiveType + "+" + asset.downloadUrl) 79 | opt.toSeq 80 | } 81 | } 82 | 83 | indices.foldLeft(Index.empty)(_ + _) 84 | } 85 | 86 | } 87 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/Graalvm.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import Index.{Arch, Os} 4 | 5 | object Graalvm { 6 | 7 | private def ghOrg = "graalvm" 8 | private def ghProj = "graalvm-ce-builds" 9 | 10 | def fullIndex(ghToken: String): Index = { 11 | 12 | val releases = Release.releaseIds(ghOrg, ghProj, ghToken) 13 | .filter(!_.prerelease) 14 | .map(_.tagName) 15 | .toVector 16 | 17 | (Iterator(17) ++ Iterator.from(20)) 18 | .map(v => index(releases, ghToken, v.toString)) 19 | .takeWhile(!_.isEmpty) 20 | .foldLeft(Index.empty)(_ + _) 21 | } 22 | 23 | def index( 24 | releases: Seq[String], 25 | ghToken: String, 26 | javaVersion: String 27 | ): Index = { 28 | 29 | def osOpt(input: String): Option[(Os, String)] = 30 | if (input.startsWith("linux-")) 31 | Some((Os("linux"), input.stripPrefix("linux-"))) 32 | else if (input.startsWith("macos-")) 33 | Some((Os("darwin"), input.stripPrefix("macos-"))) 34 | else if (input.startsWith("windows-")) 35 | Some((Os("windows"), input.stripPrefix("windows-"))) 36 | else 37 | None 38 | 39 | def archOpt(input: String): Option[(Arch, String)] = 40 | if (input.startsWith("x64_")) 41 | Some((Arch("amd64"), input.stripPrefix("x64_bin"))) 42 | else if (input.startsWith("aarch64_")) 43 | Some((Arch("arm64"), input.stripPrefix("aarch64_bin"))) 44 | else 45 | None 46 | 47 | def archiveTypeOpt(input: String): Option[String] = 48 | if (input == "zip") Some("zip") 49 | else if (input == "tar.gz") Some("tgz") 50 | else None 51 | 52 | val indices = releases 53 | .filter(_.startsWith(s"jdk-$javaVersion")) 54 | .flatMap { tagName => 55 | val version = tagName.stripPrefix("jdk-") 56 | val assetNamePrefix = s"graalvm-community-jdk-${version}_" 57 | val assets = Asset.releaseAssets(ghOrg, ghProj, ghToken, tagName) 58 | assets 59 | .filter(asset => asset.name.startsWith(assetNamePrefix)) 60 | .flatMap { asset => 61 | val name0 = asset.name.stripPrefix(assetNamePrefix) 62 | val nameGlobal = "jdk@graalvm-community" 63 | val nameVersion = s"jdk@graalvm-java$javaVersion" 64 | val opt = 65 | for { 66 | (os, rem) <- osOpt(name0) 67 | (arch, rem0) <- archOpt(rem) 68 | ext <- Some(rem0) 69 | .filter(_.startsWith(".")) 70 | .map(_.stripPrefix(".")) 71 | archiveType <- archiveTypeOpt(ext) 72 | } yield Seq( 73 | Index(os, arch, nameGlobal, version, archiveType + "+" + asset.downloadUrl), 74 | Index(os, arch, nameVersion, version, archiveType + "+" + asset.downloadUrl) 75 | ) 76 | opt.toSeq.flatten 77 | } 78 | } 79 | 80 | indices.foldLeft(Index.empty)(_ + _) 81 | } 82 | 83 | } 84 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/Zulu.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import Index.{Arch, Os} 4 | import sttp.client3.quick.* 5 | 6 | import scala.math.Ordering.Implicits.seqOrdering 7 | 8 | object Zulu { 9 | final case class ZuluParams( 10 | indexOs: Os, 11 | indexArch: Arch, 12 | indexArchiveType: String, 13 | bundleType: String = "jdk", 14 | releaseStatus: String = "ga" 15 | ) { 16 | lazy val url: sttp.model.Uri = 17 | uri"https://api.azul.com/zulu/download/community/v1.0/bundles/?os=$os&arch=$arch&hw_bitness=$bitness&bundle_type=$bundleType&ext=$ext&release_status=$releaseStatus&javafx=false" 18 | 19 | lazy val os = indexOs match { 20 | case Os("linux-musl") => "linux_musl" 21 | case Os("darwin") => "macos" 22 | case x => x 23 | } 24 | 25 | lazy val (arch, bitness) = indexArch match { 26 | case Arch("arm") => (Arch("arm"), "32") 27 | case Arch("arm64") => (Arch("arm"), "64") 28 | case Arch("x86") => (Arch("x86"), "32") 29 | case Arch("amd64") => (Arch("x86"), "64") 30 | case Arch("ppc64") => (Arch("ppc"), "64") 31 | case _ => ??? 32 | } 33 | 34 | lazy val ext = indexArchiveType match { 35 | case "tgz" => "tar.gz" 36 | case x => x 37 | } 38 | 39 | lazy val indexJdkName = bundleType match { 40 | case "jdk" => "jdk@zulu" 41 | case x => s"jdk@zulu-$x" 42 | } 43 | 44 | def index(jdkVersion: Seq[Int], url: String): Index = { 45 | val indexUrl = s"$indexArchiveType+$url" 46 | Index(indexOs, indexArch, indexJdkName, jdkVersion.take(3).mkString("."), indexUrl) 47 | } 48 | } 49 | 50 | def index(): Index = { 51 | 52 | val oses = 53 | Seq(Os("darwin"), Os("linux"), Os("windows"), Os("linux-musl")) // Add "solaris", "qnx"? 54 | val cpus = Seq(Arch("x86"), Arch("amd64"), Arch("arm"), Arch("arm64"), Arch("ppc64")) 55 | val bundleTypes = Seq("jdk", "jre") 56 | val allParams = for { 57 | os <- oses 58 | cpu <- cpus 59 | ext = if (os == Os("windows")) "zip" else "tgz" 60 | bundleType <- bundleTypes 61 | } yield ZuluParams(os, cpu, ext, bundleType = bundleType) 62 | 63 | allParams 64 | .flatMap { params => 65 | System.err.println(s"Getting ${params.url}") 66 | val resp = quickRequest.get(params.url).send(backend) 67 | val json = ujson.read(resp.body) 68 | 69 | val count = json.arr.length 70 | System.err.println(s"Found $count elements") 71 | 72 | json.arr 73 | .toArray 74 | .map(_.obj) 75 | .map(a => a("jdk_version").arr.toList.map(_.num.toInt) -> a) 76 | .sortBy(_._1) 77 | .iterator 78 | .map(_._2) 79 | .map { obj => 80 | val url = obj("url").str 81 | val jdkVersion = obj("jdk_version").arr.toList.map(_.num.toInt) 82 | params.index(jdkVersion, url) 83 | } 84 | } 85 | .foldLeft(Index.empty)(_ + _) 86 | } 87 | 88 | } 89 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/Liberica.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import sttp.client3.quick._ 4 | import scala.util.control.NonFatal 5 | import Index.{Arch, Os} 6 | 7 | object Liberica { 8 | 9 | final case class LibericaEntry( 10 | featureVersion: Int, 11 | patchVersion: Int, 12 | updateVersion: Int, 13 | buildVersion: Int, 14 | bitness: Int, 15 | os: String, 16 | url: String, 17 | bundleType: String, 18 | packageType: String, 19 | architecture: String 20 | ) { 21 | lazy val sortKey = (featureVersion, patchVersion, updateVersion, buildVersion, packageType) 22 | 23 | def jdkVersion: String = s"$featureVersion.$patchVersion.$updateVersion" 24 | 25 | def indexOs: Os = os match { 26 | case "macos" => Os("darwin") 27 | case x => Os(x) 28 | } 29 | def indexArchOpt = (architecture, bitness) match { 30 | case ("arm", 32) => Some(Arch("arm")) 31 | case ("arm", 64) => Some(Arch("arm64")) 32 | case ("x86", 32) => Some(Arch("x86")) 33 | case ("x86", 64) => Some(Arch("amd64")) 34 | case ("ppc", 64) => Some(Arch("ppc64")) 35 | case _ => None 36 | } 37 | 38 | def indexJdkName = bundleType match { 39 | case "jdk" => "jdk@liberica" 40 | case jdk if jdk.startsWith("jdk-") => "jdk@liberica" + jdk.stripPrefix("jdk") 41 | case x => s"jdk@liberica-$x" 42 | } 43 | 44 | def indexUrl = { 45 | val packageTypePrefix = packageType match { 46 | case "tar.gz" => "tgz" 47 | case x => x 48 | } 49 | s"$packageTypePrefix+$url" 50 | } 51 | 52 | def indexOpt: Option[Index] = 53 | if (packageType == "zip" || packageType == "tar.gz") 54 | indexArchOpt.map { indexArch => 55 | Index(indexOs, indexArch, indexJdkName, jdkVersion, indexUrl) 56 | } 57 | else 58 | None 59 | } 60 | 61 | object LibericaEntry { 62 | def apply(obj: ujson.Obj): LibericaEntry = 63 | LibericaEntry( 64 | featureVersion = obj("featureVersion").num.toInt, 65 | patchVersion = obj("patchVersion").num.toInt, 66 | updateVersion = obj("updateVersion").num.toInt, 67 | buildVersion = obj("buildVersion").num.toInt, 68 | bitness = obj("bitness").num.toInt, 69 | os = obj("os").str, 70 | url = obj("downloadUrl").str, 71 | bundleType = obj("bundleType").str, 72 | packageType = obj("packageType").str, 73 | architecture = obj("architecture").str 74 | ) 75 | } 76 | 77 | def index(): Index = { 78 | 79 | val url = uri"https://api.bell-sw.com/v1/liberica/releases" 80 | System.err.println(s"Getting $url") 81 | val ua = 82 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/601.7.8 (KHTML, like Gecko) Version/9.1.3 Safari/537.86.7" 83 | val resp = quickRequest 84 | .header("User-Agent", ua) 85 | .get(url) 86 | .send(backend) 87 | val json = 88 | try ujson.read(resp.body) 89 | catch { 90 | case NonFatal(e) => 91 | System.err.println(s"Error parsing '${resp.body}'") 92 | throw e 93 | } 94 | 95 | val count = json.arr.length 96 | System.err.println(s"Found $count elements") 97 | 98 | json 99 | .arr 100 | .toArray 101 | .map(elem => LibericaEntry(elem.obj)) 102 | .sortBy(_.sortKey) 103 | .iterator 104 | .flatMap(_.indexOpt.iterator) 105 | .foldLeft(Index.empty)(_ + _) 106 | } 107 | 108 | } 109 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/IbmSemeru.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import Index.{Arch, Os} 4 | 5 | object IbmSemeru { 6 | 7 | def fullIndex(ghToken: String): Index = 8 | (Iterator("8", "11") ++ Iterator.from(16).map(_.toString)) 9 | .map(index(ghToken, _)) 10 | .takeWhile(!_.isEmpty) 11 | .foldLeft(Index.empty)(_ + _) 12 | 13 | def index( 14 | ghToken: String, 15 | javaVersion: String 16 | ): Index = { 17 | 18 | val ghOrg = "ibmruntimes" 19 | val ghProj = s"semeru$javaVersion-binaries" 20 | val releases0 = Release.releaseIds(ghOrg, ghProj, ghToken) 21 | .filter(!_.prerelease) 22 | 23 | def osOpt(input: String): Option[(Os, String)] = 24 | input match 25 | case input if input.startsWith("linux") => Some((Os("linux"), input.stripPrefix("linux_"))) 26 | case input if input.startsWith("mac") => Some((Os("darwin"), input.stripPrefix("mac_"))) 27 | case input if input.startsWith("windows") => 28 | Some((Os("windows"), input.stripPrefix("windows_"))) 29 | case input if input.startsWith("aix") => Some((Os("aix"), input.stripPrefix("aix_"))) 30 | case _ => None 31 | 32 | def archOpt(input: String): Option[(Arch, String)] = 33 | input match 34 | case input if input.startsWith("x64") => Some((Arch("amd64"), input.stripPrefix("x64_"))) 35 | case input if input.startsWith("aarch64") => 36 | Some((Arch("arm64"), input.stripPrefix("aarch64_"))) 37 | case input if input.startsWith("ppc64le") => 38 | Some((Arch("ppc64le"), input.stripPrefix("ppc64le_"))) 39 | case input if input.startsWith("ppc64") => 40 | Some((Arch("ppc64"), input.stripPrefix("ppc64_"))) 41 | case input if input.startsWith("s390x") => 42 | Some((Arch("s390x"), input.stripPrefix("s390x_"))) 43 | case _ => None 44 | 45 | def archiveTypeOpt(input: String): Option[(String, String)] = 46 | input match 47 | case input if input.endsWith(".zip") => Some(("zip", input.stripSuffix(".zip"))) 48 | case input if input.endsWith(".tar.gz") => Some(("tgz", input.stripSuffix(".tar.gz"))) 49 | case _ => None 50 | 51 | val indices = releases0 52 | .filter { release => 53 | release.tagName.startsWith((if (javaVersion == "8") "jdk" else "jdk-") + javaVersion) 54 | } 55 | .flatMap { release => 56 | val version = 57 | if (javaVersion == "8") 58 | release.tagName.stripPrefix("jdk").split("-b").apply(0).replace("8u", "8.0.") 59 | else 60 | release.tagName.stripPrefix("jdk-") 61 | val shortVersion = version.takeWhile(_ != '+') 62 | val assetNamePrefix = "ibm-semeru-open-jdk_" 63 | val assets = Asset.releaseAssets(ghOrg, ghProj, ghToken, release.tagName) 64 | assets 65 | .filter(asset => asset.name.startsWith(assetNamePrefix)) 66 | .flatMap { asset => 67 | val assetName = asset.name.stripPrefix(assetNamePrefix) 68 | val name = s"jdk@ibm-semeru-openj9-java$javaVersion" 69 | val shortName = "jdk@ibm-semeru" 70 | val opt = 71 | for { 72 | (arch, rem) <- archOpt(assetName).toSeq 73 | (os, rem0) <- osOpt(rem).toSeq 74 | (archiveType, _) <- archiveTypeOpt(rem0).toSeq 75 | } yield Seq( 76 | Index(os, arch, name, version, archiveType + "+" + asset.downloadUrl), 77 | Index(os, arch, shortName, shortVersion, archiveType + "+" + asset.downloadUrl) 78 | ) 79 | opt.flatten 80 | } 81 | } 82 | 83 | indices.foldLeft(Index.empty)(_ + _) 84 | } 85 | 86 | } 87 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/LibericaNik.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import sttp.client3.quick._ 4 | import scala.util.control.NonFatal 5 | import Index.{Arch, Os} 6 | 7 | object LibericaNik { 8 | 9 | final case class LibericaNikEntry( 10 | version: String, 11 | jdkVersion: String, 12 | bitness: Int, 13 | os: String, 14 | url: String, 15 | bundleType: String, 16 | packageType: String, 17 | architecture: String 18 | ) { 19 | lazy val sortKey = 20 | (coursier.version.Version(version), coursier.version.Version(jdkVersion), packageType) 21 | 22 | def indexOs: Os = os match { 23 | case "macos" => Os("darwin") 24 | case x => Os(x) 25 | } 26 | def indexArchOpt = (architecture, bitness) match { 27 | case ("arm", 32) => Some(Arch("arm")) 28 | case ("arm", 64) => Some(Arch("arm64")) 29 | case ("x86", 32) => Some(Arch("x86")) 30 | case ("x86", 64) => Some(Arch("amd64")) 31 | case ("ppc", 64) => Some(Arch("ppc64")) 32 | case _ => None 33 | } 34 | 35 | def javaVersion: Int = 36 | val semver = jdkVersion.split('+').head 37 | semver.split('.').head.toInt 38 | 39 | def indexJdkName = bundleType match { 40 | case "core" => "jdk@liberica-nik-core" 41 | case "standard" => "jdk@liberica-nik" 42 | case "full" => "jdk@liberica-nik-full" 43 | case x => s"jdk@liberica-nik-$x" 44 | } 45 | 46 | def indexUrl = { 47 | val packageTypePrefix = packageType match { 48 | case "tar.gz" => "tgz" 49 | case x => x 50 | } 51 | s"$packageTypePrefix+$url" 52 | } 53 | 54 | def indexOpt: Option[Index] = 55 | if packageType == "zip" || packageType == "tar.gz" then 56 | indexArchOpt.map { indexArch => 57 | Index(indexOs, indexArch, indexJdkName, jdkVersion.takeWhile(_ != '+'), indexUrl) 58 | } 59 | else 60 | None 61 | } 62 | 63 | object LibericaNikEntry { 64 | def apply(obj: ujson.Obj): Option[LibericaNikEntry] = 65 | val jdkVersionOpt = obj("components") 66 | .arr 67 | .filter(_.obj("component").str == "liberica") 68 | .headOption 69 | .map(_.obj("version").str) 70 | 71 | jdkVersionOpt.map { jdkVersion => 72 | LibericaNikEntry( 73 | version = obj("version").str.split('+').head, 74 | jdkVersion = jdkVersion, 75 | bitness = obj("bitness").num.toInt, 76 | os = obj("os").str, 77 | url = obj("downloadUrl").str, 78 | bundleType = obj("bundleType").str, 79 | packageType = obj("packageType").str, 80 | architecture = obj("architecture").str 81 | ) 82 | } 83 | } 84 | 85 | def index(): Index = { 86 | 87 | val url = uri"https://api.bell-sw.com/v1/nik/releases" 88 | System.err.println(s"Getting $url") 89 | val ua = 90 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/601.7.8 (KHTML, like Gecko) Version/9.1.3 Safari/537.86.7" 91 | val resp = quickRequest 92 | .header("User-Agent", ua) 93 | .get(url) 94 | .send(backend) 95 | val json = 96 | try ujson.read(resp.body) 97 | catch { 98 | case NonFatal(e) => 99 | System.err.println(s"Error parsing '${resp.body}'") 100 | throw e 101 | } 102 | 103 | val count = json.arr.length 104 | System.err.println(s"Found $count elements") 105 | 106 | json 107 | .arr 108 | .toArray 109 | .flatMap(elem => LibericaNikEntry(elem.obj).toSeq) 110 | .sortBy(_.sortKey) 111 | .iterator 112 | .flatMap(_.indexOpt.iterator) 113 | .foldLeft(Index.empty)(_ + _) 114 | } 115 | 116 | } 117 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/Corretto.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import sttp.client3.quick._ 4 | import Index.{Arch, Os} 5 | 6 | /* 7 | - Latest Corretto binaries are listed at https://docs.aws.amazon.com/corretto/ 8 | - Previous tags for various JDK versions are in GitHub 9 | - See all Corretto JDK versions: https://github.com/orgs/corretto/repositories?q=corretto, 10 | - See all tag names for a given JDK version: e.g. https://github.com/corretto/corretto-17/releases 11 | - In GitHub releases, artefacts are stored as links to downloads on the Corretto website: 12 | - e.g. https://corretto.aws/downloads/resources/17.0.6.10.1/amazon-corretto-17.0.6.10.1-linux-x64.tar.gz 13 | - Based on this, we used a mix of approaches based on e.g. Graalvm (GitHub path) and Zulu (try combinations of downloads) 14 | - 1. use GitHub to get the tag names for a given JDK version 15 | - 2. Make requests to the Corretto site, to check for valid combinations 16 | - This lets us verify downloads are valid 17 | - Invalid combinations give HTTP 301, and a redirect (if enabled) 18 | - Valid combinations give HTTP 200, and we can ignore the download to move on quickly 19 | */ 20 | object Corretto { 21 | 22 | final case class CorrettoParams( 23 | indexOs: Os, 24 | indexArch: Arch, 25 | indexArchiveType: String 26 | ) { 27 | lazy val os = indexOs match { 28 | case Os("linux-musl") => "alpine-linux" 29 | case Os("darwin") => "macosx" 30 | case x => x 31 | } 32 | 33 | lazy val ext = indexArchiveType match { 34 | case "tgz" => "tar.gz" 35 | case x => x 36 | } 37 | 38 | lazy val arch = indexArch match { 39 | case Arch("arm64") => "aarch64" 40 | case Arch("amd64") => "x64" 41 | case _ => ??? 42 | } 43 | 44 | lazy val jdk = indexOs match { 45 | case Os("windows") => "-jdk" 46 | case _ => "" 47 | } 48 | 49 | def index(jdkTagVersion: String, url: String): Index = 50 | Index(indexOs, indexArch, "jdk@corretto", jdkTagVersion, url) 51 | } 52 | 53 | def fullIndex(ghToken: String): Index = 54 | (Iterator("8", "11") ++ Iterator.from(17).map(_.toString)) 55 | .map(v => index(ghToken, v)) 56 | .takeWhile(!_.isEmpty) 57 | .foldLeft(Index.empty)(_ + _) 58 | 59 | def index( 60 | ghToken: String, 61 | javaVersion: String 62 | ): Index = { 63 | val ghOrg = "corretto" 64 | val ghProj = s"corretto-$javaVersion" 65 | val releases0 = Release.releaseIds(ghOrg, ghProj, ghToken) 66 | .filter(!_.prerelease) 67 | 68 | releases0 69 | .flatMap { release => 70 | // See https://github.com/corretto/corretto-17/releases/tag/17.0.6.10.1 for os/cpu combinations 71 | val oses = Seq( 72 | Os("darwin"), 73 | Os("linux"), 74 | Os("windows"), 75 | Os("alpine-linux"), // deprecated, use linux-musl instead 76 | Os("linux-musl") 77 | ) 78 | val cpus = Seq(Arch("amd64"), Arch("arm64")) 79 | val allParams = for { 80 | os <- oses 81 | cpu <- cpus 82 | ext = if (os == Os("windows")) "zip" else "tgz" 83 | } yield CorrettoParams(os, cpu, ext) 84 | 85 | allParams 86 | .flatMap { params => 87 | // url is like: 88 | // https://corretto.aws/downloads/resources/17.0.4.9.1/amazon-corretto-17.0.4.9.1-alpine-linux-x64.tar.gz 89 | val url: sttp.model.Uri = 90 | uri"https://corretto.aws/downloads/resources/${release.tagName}/amazon-corretto-${release.tagName}-${params.os}-${params.arch}${params.jdk}.${params.ext}" 91 | val resp = quickRequest.get(url) 92 | .followRedirects(false) // invalid URL => 301 + redirect to 200; keep the 301 93 | .response(ignore) // don't download and hang on 200s 94 | .send(backend) 95 | val code = resp.code 96 | 97 | if (code.isSuccess) { 98 | System.err.println(s"Valid url (status code $code): $url") 99 | Some(params.index( 100 | jdkTagVersion = release.tagName, 101 | url = s"${params.indexArchiveType}+${url.toString}" 102 | )) 103 | } 104 | else { 105 | System.err.println(s"Invalid url (status code $code): $url") 106 | None 107 | } 108 | } // have list of indexes, for one jdk tag 109 | }.foldLeft(Index.empty)(_ + _) // combining all indexes for all jdk tags 110 | } // all indexing done 111 | } 112 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/Temurin.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import Index.{Arch, Os} 4 | 5 | object Temurin { 6 | 7 | def fullIndex(ghToken: String): Index = { 8 | val adoptIndices = (8 to 16).map(ver => ver -> index(ghToken, ver, adopt = true)) 9 | val temurinIndices = (Iterator(8, 11) ++ Iterator.from(16)) 10 | .map(ver => ver -> index(ghToken, ver, adopt = false)) 11 | .takeWhile(!_._2.isEmpty) 12 | .toVector 13 | 14 | val adoptiumIndices = (adoptIndices.toMap ++ temurinIndices) 15 | .toVector 16 | .sortBy(_._1) 17 | .map(_._2) 18 | .map { index0 => 19 | index0.mapJdkName { name => 20 | val suffix = name 21 | .stripPrefix("jdk@adopt") 22 | .stripPrefix("jdk@temurin") 23 | "jdk@adoptium" + suffix 24 | } 25 | } 26 | 27 | val allIndices = adoptIndices.iterator.map(_._2) ++ 28 | temurinIndices.iterator.map(_._2) ++ 29 | adoptiumIndices.iterator 30 | allIndices.foldLeft(Index.empty)(_ + _) 31 | } 32 | 33 | def index( 34 | ghToken: String, 35 | baseVersion: Int, 36 | adopt: Boolean 37 | ): Index = { 38 | val ghOrg = if (adopt) "AdoptOpenJDK" else "adoptium" 39 | val projectPrefix = if (adopt) "openjdk" else "temurin" 40 | val ghProj = s"$projectPrefix$baseVersion-binaries" 41 | val releases0 = Release.releaseIds(ghOrg, ghProj, ghToken) 42 | .filter(!_.prerelease) 43 | 44 | def jdkName(suffix: String = ""): String = 45 | "jdk@" + (if (adopt) "adopt" else "temurin") + suffix 46 | 47 | def assetNamePrefix(jdkStr: String) = Seq( 48 | s"OpenJDK${baseVersion}U-${jdkStr}_", 49 | s"OpenJDK$baseVersion-${jdkStr}_" 50 | ) 51 | 52 | def archOpt(input: String): Option[(Arch, String)] = 53 | Map( 54 | Arch("amd64") -> "x64_", 55 | Arch("x86") -> "x86-32_", 56 | Arch("arm64") -> "aarch64_", 57 | Arch("arm") -> "arm_", 58 | Arch("s390x") -> "s390x_", 59 | Arch("ppc64") -> "ppc64_", 60 | Arch("ppc64le") -> "ppc64le_" 61 | ).collectFirst { 62 | case (k, v) if input.startsWith(v) => 63 | k -> input.stripPrefix(v) 64 | } 65 | 66 | def oses(input: String): Seq[(Os, String)] = 67 | if (input.startsWith("linux_")) 68 | Seq((Os("linux"), input.stripPrefix("linux_"))) 69 | else if (input.startsWith("alpine-linux_")) { 70 | val remaining = input.stripPrefix("alpine-linux_") 71 | Seq( 72 | (Os("alpine-linux"), remaining), // deprecated, use linux-musl instead 73 | (Os("linux-musl"), remaining) 74 | ) 75 | } 76 | else if (input.startsWith("mac_")) 77 | Seq((Os("darwin"), input.stripPrefix("mac_"))) 78 | else if (input.startsWith("windows_")) 79 | Seq((Os("windows"), input.stripPrefix("windows_"))) 80 | else if (input.startsWith("aix_")) 81 | Seq((Os("aix"), input.stripPrefix("aix_"))) 82 | else 83 | Nil 84 | 85 | def archiveTypeOpt(input: String): Option[String] = 86 | if (input == "zip") Some("zip") 87 | else if (input == "tar.gz") Some("tgz") 88 | else None 89 | 90 | val prefixes = 91 | if (baseVersion == 8) Seq("jdk8u") 92 | else Seq(s"jdk-$baseVersion.", s"jdk-$baseVersion+") 93 | val indices = releases0 94 | .filter { release => 95 | prefixes.exists(prefix => release.tagName.startsWith(prefix)) 96 | } 97 | .flatMap { release => 98 | val version0 = release.tagName.stripPrefix("jdk-").stripPrefix("jdk") 99 | val versionInFileName = 100 | if (version0.contains("+")) 101 | version0.split('+') match { 102 | case Array(before, after) => s"${before}_${after.takeWhile(_ != '.')}" 103 | case _ => version0 104 | } 105 | else version0 106 | val assets = Asset.releaseAssets(ghOrg, ghProj, ghToken, release.tagName).to(LazyList) 107 | def index(jdkName: String, assetNamePrefix: Seq[String]) = assets 108 | .iterator 109 | .filter(asset => assetNamePrefix.exists(asset.name.startsWith)) 110 | .flatMap { asset => 111 | val name0 = assetNamePrefix.foldLeft(asset.name)(_ stripPrefix _) 112 | for { 113 | (arch, rem) <- archOpt(name0).toSeq 114 | (os, rem0) <- oses(rem) 115 | ext <- { 116 | val prefix = "hotspot_" + versionInFileName.filter(_ != '-') + "." 117 | Seq(rem0) 118 | .filter(_.startsWith(prefix)) 119 | .map(_.stripPrefix(prefix)) 120 | } 121 | archiveType <- archiveTypeOpt(ext).toSeq 122 | } yield Index( 123 | os, 124 | arch, 125 | jdkName, 126 | "1." + version0.takeWhile(c => c != '-' && c != '+' && c != '_').replace("u", ".0-"), 127 | archiveType + "+" + asset.downloadUrl 128 | ) 129 | } 130 | def releaseIndex = index(jdkName(), assetNamePrefix("jdk")) 131 | def debugIndex = index(jdkName("-debugimage"), assetNamePrefix("debugimage")) 132 | def testIndex = index(jdkName("-testimage"), assetNamePrefix("testimage")) 133 | def jreIndex = index(jdkName("-jre"), assetNamePrefix("jre")) 134 | releaseIndex ++ debugIndex ++ testIndex ++ jreIndex 135 | } 136 | 137 | indices.foldLeft(Index.empty)(_ + _) 138 | } 139 | 140 | } 141 | -------------------------------------------------------------------------------- /src/coursier/jvmindex/Index.scala: -------------------------------------------------------------------------------- 1 | package coursier.jvmindex 2 | 3 | import Index.{Arch, Os} 4 | 5 | final case class Index(map: Map[Os, Map[Arch, Map[String, Map[String, String]]]]) { 6 | 7 | def mapJdkName(f: String => String): Index = 8 | Index( 9 | map.map { 10 | case (os, map0) => 11 | os -> map0.map { 12 | case (arch, map1) => 13 | arch -> map1.map { 14 | case (jdkName, map2) => 15 | f(jdkName) -> map2 16 | } 17 | } 18 | } 19 | ) 20 | 21 | def +(other: Index): Index = 22 | Index(Index.merge4(map, other.map)) 23 | 24 | def json: String = 25 | Index.json4(map).render(indent = 2) 26 | 27 | def osArchIndices: Map[(Os, Arch), OsArchIndex] = 28 | map 29 | .toSeq 30 | .flatMap { 31 | case (os, osMap) => 32 | osMap.toSeq.map { 33 | case (arch, osArchMap) => 34 | val cleanedUpOs = 35 | if (os == Os("alpine-linux")) Os("linux-musl") 36 | else os 37 | val cleanedUp = osArchMap.map { 38 | case (jdkName, map) => 39 | jdkName.stripPrefix("jdk@") -> map.map { 40 | case (version, url) => 41 | (version.stripPrefix("1."), url) 42 | } 43 | } 44 | ((cleanedUpOs, arch), OsArchIndex(cleanedUp)) 45 | } 46 | } 47 | .groupBy(_._1) 48 | .map { 49 | case (k, Seq()) => sys.error("Cannot happen after a groupMap") 50 | case (k, Seq((_, v))) => k -> v 51 | case (k, Seq(h, t @ _*)) => 52 | k -> OsArchIndex(t.map(_._2.map).foldLeft(h._2.map)(Index.merge2)) 53 | } 54 | 55 | def isEmpty: Boolean = 56 | map.isEmpty || 57 | map.forall(_._2.isEmpty) || 58 | map.forall(_._2.forall(_._2.isEmpty)) || 59 | map.forall(_._2.forall(_._2.forall(_._2.isEmpty))) 60 | } 61 | 62 | object Index { 63 | 64 | opaque type Os = String 65 | object Os: 66 | def apply(value: String): Os = value 67 | def unapply(os: Os): Option[String] = Some(os) 68 | 69 | given Ordering[Os] with 70 | def compare(a: Os, b: Os) = a.compareTo(b) 71 | 72 | opaque type Arch = String 73 | object Arch: 74 | def apply(value: String): Arch = value 75 | def unapply(arch: Arch): Option[String] = Some(arch) 76 | 77 | given Ordering[Arch] with 78 | def compare(a: Arch, b: Arch) = a.compareTo(b) 79 | 80 | def empty: Index = 81 | Index(Map.empty) 82 | def apply( 83 | os: Os, 84 | architecture: Arch, 85 | jdkName: String, 86 | jdkVersion: String, 87 | url: String 88 | ): Index = 89 | Index(Map(os -> Map(architecture -> Map(jdkName -> Map(jdkVersion -> url))))) 90 | 91 | private def merge4( 92 | a: Map[Os, Map[Arch, Map[String, Map[String, String]]]], 93 | b: Map[Os, Map[Arch, Map[String, Map[String, String]]]] 94 | ): Map[Os, Map[Arch, Map[String, Map[String, String]]]] = 95 | (a.keySet ++ b.keySet) 96 | .iterator 97 | .map { key => 98 | val m = (a.get(key), b.get(key)) match { 99 | case (Some(a0), Some(b0)) => 100 | merge3(a0, b0) 101 | case (Some(a0), None) => 102 | a0 103 | case (None, Some(b0)) => 104 | b0 105 | case (None, None) => 106 | sys.error("cannot happen") 107 | } 108 | key -> m 109 | } 110 | .toMap 111 | 112 | private def merge3( 113 | a: Map[String, Map[String, Map[String, String]]], 114 | b: Map[String, Map[String, Map[String, String]]] 115 | ): Map[String, Map[String, Map[String, String]]] = 116 | (a.keySet ++ b.keySet) 117 | .iterator 118 | .map { key => 119 | val m = (a.get(key), b.get(key)) match { 120 | case (Some(a0), Some(b0)) => 121 | merge2(a0, b0) 122 | case (Some(a0), None) => 123 | a0 124 | case (None, Some(b0)) => 125 | b0 126 | case (None, None) => 127 | sys.error("cannot happen") 128 | } 129 | key -> m 130 | } 131 | .toMap 132 | 133 | private def merge2( 134 | a: Map[String, Map[String, String]], 135 | b: Map[String, Map[String, String]] 136 | ): Map[String, Map[String, String]] = 137 | (a.keySet ++ b.keySet) 138 | .iterator 139 | .map { key => 140 | val m = (a.get(key), b.get(key)) match { 141 | case (Some(a0), Some(b0)) => 142 | merge1(a0, b0) 143 | case (Some(a0), None) => 144 | a0 145 | case (None, Some(b0)) => 146 | b0 147 | case (None, None) => 148 | sys.error("cannot happen") 149 | } 150 | key -> m 151 | } 152 | .toMap 153 | 154 | private def merge1( 155 | a: Map[String, String], 156 | b: Map[String, String] 157 | ): Map[String, String] = 158 | (a.keySet ++ b.keySet) 159 | .iterator 160 | .map { key => 161 | val m = (a.get(key), b.get(key)) match { 162 | case (Some(_), Some(b0)) => 163 | b0 // keeping value from the map on the right 164 | case (Some(a0), None) => 165 | a0 166 | case (None, Some(b0)) => 167 | b0 168 | case (None, None) => 169 | sys.error("cannot happen") 170 | } 171 | key -> m 172 | } 173 | .toMap 174 | 175 | private def json4( 176 | map: Map[Os, Map[Arch, Map[String, Map[String, String]]]] 177 | ) = { 178 | val l = map 179 | .toVector 180 | .sortBy(_._1) 181 | .map { 182 | case (os, m) => 183 | os.toString() -> json3(m) 184 | } 185 | if (l.isEmpty) 186 | ujson.Obj() 187 | else 188 | ujson.Obj(l.head, l.tail*) 189 | } 190 | 191 | private def json3( 192 | map: Map[Arch, Map[String, Map[String, String]]] 193 | ) = { 194 | val l = map 195 | .toVector 196 | .sortBy(_._1) 197 | .map { 198 | case (k, m) => 199 | k -> json2(m) 200 | } 201 | if (l.isEmpty) 202 | ujson.Obj() 203 | else 204 | ujson.Obj(l.head, l.tail*) 205 | } 206 | 207 | def json2( 208 | map: Map[String, Map[String, String]] 209 | ) = { 210 | val l = map 211 | .toVector 212 | .sortBy(_._1) 213 | .map { 214 | case (k, m) => 215 | k -> json1(m) 216 | } 217 | if (l.isEmpty) 218 | ujson.Obj() 219 | else 220 | ujson.Obj(l.head, l.tail*) 221 | } 222 | 223 | private def json1( 224 | map: Map[String, String] 225 | ) = { 226 | val list = map 227 | .toVector 228 | .map { 229 | case (k, v) => 230 | coursier.version.Version(k) -> v 231 | } 232 | .sortBy(_._1) 233 | val requiredVersionLengthOpt = { 234 | val versionLengthMap = 235 | list.groupMap(_._1.items.length)(_ => ()).view.mapValues(_.length).toMap 236 | if (versionLengthMap.size > 1) Some(versionLengthMap.maxBy(_._2)._1.min(4)) 237 | else None 238 | } 239 | val list0 = list.map { 240 | case (k, v) => 241 | val version = requiredVersionLengthOpt match { 242 | case Some(requiredVersionLength) if k.items.length < requiredVersionLength => 243 | k.repr + (".0" * (requiredVersionLength - k.items.length)) 244 | case _ => k.repr 245 | } 246 | version -> ujson.Str(v) 247 | } 248 | if (list0.isEmpty) 249 | ujson.Obj() 250 | else 251 | ujson.Obj(list0.head, list0.tail*) 252 | } 253 | 254 | } 255 | -------------------------------------------------------------------------------- /publish/mill.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | rem This is a wrapper script, that automatically selects or downloads Mill from Maven Central or GitHub release pages. 4 | rem 5 | rem This script determines the Mill version to use by trying these sources 6 | rem - env-variable `MILL_VERSION` 7 | rem - local file `.mill-version` 8 | rem - local file `.config/mill-version` 9 | rem - `mill-version` from YAML fronmatter of current buildfile 10 | rem - if accessible, find the latest stable version available on Maven Central (https://repo1.maven.org/maven2) 11 | rem - env-variable `DEFAULT_MILL_VERSION` 12 | rem 13 | rem If a version has the suffix '-native' a native binary will be used. 14 | rem If a version has the suffix '-jvm' an executable jar file will be used, requiring an already installed Java runtime. 15 | rem If no such suffix is found, the script will pick a default based on version and platform. 16 | rem 17 | rem Once a version was determined, it tries to use either 18 | rem - a system-installed mill, if found and it's version matches 19 | rem - an already downloaded version under %USERPROFILE%\.mill\download 20 | rem 21 | rem If no working mill version was found on the system, 22 | rem this script downloads a binary file from Maven Central or Github Pages (this is version dependent) 23 | rem into a cache location (%USERPROFILE%\.mill\download). 24 | rem 25 | rem Mill Project URL: https://github.com/com-lihaoyi/mill 26 | rem Script Version: 1.0.0-M1-21-7b6fae-DIRTY892b63e8 27 | rem 28 | rem If you want to improve this script, please also contribute your changes back! 29 | rem This script was generated from: dist/scripts/src/mill.bat 30 | rem 31 | rem Licensed under the Apache License, Version 2.0 32 | 33 | rem setlocal seems to be unavailable on Windows 95/98/ME 34 | rem but I don't think we need to support them in 2019 35 | setlocal enabledelayedexpansion 36 | 37 | if [!DEFAULT_MILL_VERSION!]==[] ( set "DEFAULT_MILL_VERSION=0.12.10" ) 38 | 39 | if [!MILL_GITHUB_RELEASE_CDN!]==[] ( set "MILL_GITHUB_RELEASE_CDN=" ) 40 | 41 | if [!MILL_MAIN_CLI!]==[] ( set "MILL_MAIN_CLI=%~f0" ) 42 | 43 | set "MILL_REPO_URL=https://github.com/com-lihaoyi/mill" 44 | 45 | SET MILL_BUILD_SCRIPT= 46 | 47 | if exist "build.mill" ( 48 | set MILL_BUILD_SCRIPT=build.mill 49 | ) else ( 50 | if exist "build.mill.scala" ( 51 | set MILL_BUILD_SCRIPT=build.mill.scala 52 | ) else ( 53 | if exist "build.sc" ( 54 | set MILL_BUILD_SCRIPT=build.sc 55 | ) else ( 56 | rem no-op 57 | ) 58 | ) 59 | ) 60 | 61 | if [!MILL_VERSION!]==[] ( 62 | if exist .mill-version ( 63 | set /p MILL_VERSION=<.mill-version 64 | ) else ( 65 | if exist .config\mill-version ( 66 | set /p MILL_VERSION=<.config\mill-version 67 | ) else ( 68 | if not "%MILL_BUILD_SCRIPT%"=="" ( 69 | for /f "tokens=1-2*" %%a in ('findstr /C:"//| mill-version:" %MILL_BUILD_SCRIPT%') do ( 70 | set "MILL_VERSION=%%c" 71 | ) 72 | ) else ( 73 | rem no-op 74 | ) 75 | ) 76 | ) 77 | ) 78 | 79 | if [!MILL_VERSION!]==[] set MILL_VERSION=%DEFAULT_MILL_VERSION% 80 | 81 | if [!MILL_DOWNLOAD_PATH!]==[] set MILL_DOWNLOAD_PATH=%USERPROFILE%\.mill\download 82 | 83 | rem without bat file extension, cmd doesn't seem to be able to run it 84 | 85 | set "MILL_NATIVE_SUFFIX=-native" 86 | set "MILL_JVM_SUFFIX=-jvm" 87 | set "FULL_MILL_VERSION=%MILL_VERSION%" 88 | set "MILL_EXT=.bat" 89 | set "ARTIFACT_SUFFIX=" 90 | REM Check if MILL_VERSION contains MILL_NATIVE_SUFFIX 91 | echo !MILL_VERSION! | findstr /C:"%MILL_NATIVE_SUFFIX%" >nul 92 | if !errorlevel! equ 0 ( 93 | set "MILL_VERSION=%MILL_VERSION:-native=%" 94 | REM -native images compiled with graal do not support windows-arm 95 | REM https://github.com/oracle/graal/issues/9215 96 | IF /I NOT "%PROCESSOR_ARCHITECTURE%"=="ARM64" ( 97 | set "ARTIFACT_SUFFIX=-native-windows-amd64" 98 | set "MILL_EXT=.exe" 99 | ) else ( 100 | rem no-op 101 | ) 102 | ) else ( 103 | echo !MILL_VERSION! | findstr /C:"%MILL_JVM_SUFFIX%" >nul 104 | if !errorlevel! equ 0 ( 105 | set "MILL_VERSION=%MILL_VERSION:-jvm=%" 106 | ) else ( 107 | set "SKIP_VERSION=false" 108 | set "MILL_PREFIX=%MILL_VERSION:~0,4%" 109 | if "!MILL_PREFIX!"=="0.1." set "SKIP_VERSION=true" 110 | if "!MILL_PREFIX!"=="0.2." set "SKIP_VERSION=true" 111 | if "!MILL_PREFIX!"=="0.3." set "SKIP_VERSION=true" 112 | if "!MILL_PREFIX!"=="0.4." set "SKIP_VERSION=true" 113 | if "!MILL_PREFIX!"=="0.5." set "SKIP_VERSION=true" 114 | if "!MILL_PREFIX!"=="0.6." set "SKIP_VERSION=true" 115 | if "!MILL_PREFIX!"=="0.7." set "SKIP_VERSION=true" 116 | if "!MILL_PREFIX!"=="0.8." set "SKIP_VERSION=true" 117 | if "!MILL_PREFIX!"=="0.9." set "SKIP_VERSION=true" 118 | set "MILL_PREFIX=%MILL_VERSION:~0,5%" 119 | if "!MILL_PREFIX!"=="0.10." set "SKIP_VERSION=true" 120 | if "!MILL_PREFIX!"=="0.11." set "SKIP_VERSION=true" 121 | if "!MILL_PREFIX!"=="0.12." set "SKIP_VERSION=true" 122 | 123 | if "!SKIP_VERSION!"=="false" ( 124 | IF /I NOT "%PROCESSOR_ARCHITECTURE%"=="ARM64" ( 125 | set "ARTIFACT_SUFFIX=-native-windows-amd64" 126 | set "MILL_EXT=.exe" 127 | ) 128 | ) else ( 129 | rem no-op 130 | ) 131 | ) 132 | ) 133 | 134 | set MILL=%MILL_DOWNLOAD_PATH%\!FULL_MILL_VERSION!!MILL_EXT! 135 | 136 | set MILL_RESOLVE_DOWNLOAD= 137 | 138 | if not exist "%MILL%" ( 139 | set MILL_RESOLVE_DOWNLOAD=true 140 | ) else ( 141 | if defined MILL_TEST_DRY_RUN_LAUNCHER_SCRIPT ( 142 | set MILL_RESOLVE_DOWNLOAD=true 143 | ) else ( 144 | rem no-op 145 | ) 146 | ) 147 | 148 | 149 | if [!MILL_RESOLVE_DOWNLOAD!]==[true] ( 150 | set MILL_VERSION_PREFIX=%MILL_VERSION:~0,4% 151 | set MILL_SHORT_VERSION_PREFIX=%MILL_VERSION:~0,2% 152 | rem Since 0.5.0 153 | set MILL_DOWNLOAD_SUFFIX=-assembly 154 | rem Since 0.11.0 155 | set MILL_DOWNLOAD_FROM_MAVEN=1 156 | if [!MILL_VERSION_PREFIX!]==[0.0.] ( 157 | set MILL_DOWNLOAD_SUFFIX= 158 | set MILL_DOWNLOAD_FROM_MAVEN=0 159 | ) 160 | if [!MILL_VERSION_PREFIX!]==[0.1.] ( 161 | set MILL_DOWNLOAD_SUFFIX= 162 | set MILL_DOWNLOAD_FROM_MAVEN=0 163 | ) 164 | if [!MILL_VERSION_PREFIX!]==[0.2.] ( 165 | set MILL_DOWNLOAD_SUFFIX= 166 | set MILL_DOWNLOAD_FROM_MAVEN=0 167 | ) 168 | if [!MILL_VERSION_PREFIX!]==[0.3.] ( 169 | set MILL_DOWNLOAD_SUFFIX= 170 | set MILL_DOWNLOAD_FROM_MAVEN=0 171 | ) 172 | if [!MILL_VERSION_PREFIX!]==[0.4.] ( 173 | set MILL_DOWNLOAD_SUFFIX= 174 | set MILL_DOWNLOAD_FROM_MAVEN=0 175 | ) 176 | if [!MILL_VERSION_PREFIX!]==[0.5.] set MILL_DOWNLOAD_FROM_MAVEN=0 177 | if [!MILL_VERSION_PREFIX!]==[0.6.] set MILL_DOWNLOAD_FROM_MAVEN=0 178 | if [!MILL_VERSION_PREFIX!]==[0.7.] set MILL_DOWNLOAD_FROM_MAVEN=0 179 | if [!MILL_VERSION_PREFIX!]==[0.8.] set MILL_DOWNLOAD_FROM_MAVEN=0 180 | if [!MILL_VERSION_PREFIX!]==[0.9.] set MILL_DOWNLOAD_FROM_MAVEN=0 181 | 182 | set MILL_VERSION_PREFIX=%MILL_VERSION:~0,5% 183 | if [!MILL_VERSION_PREFIX!]==[0.10.] set MILL_DOWNLOAD_FROM_MAVEN=0 184 | 185 | set MILL_VERSION_PREFIX=%MILL_VERSION:~0,8% 186 | if [!MILL_VERSION_PREFIX!]==[0.11.0-M] set MILL_DOWNLOAD_FROM_MAVEN=0 187 | 188 | set MILL_VERSION_PREFIX=%MILL_VERSION:~0,5% 189 | set DOWNLOAD_EXT=exe 190 | if [!MILL_SHORT_VERSION_PREFIX!]==[0.] set DOWNLOAD_EXT=jar 191 | if [!MILL_VERSION_PREFIX!]==[0.12.] set DOWNLOAD_EXT=exe 192 | if [!MILL_VERSION!]==[0.12.0] set DOWNLOAD_EXT=jar 193 | if [!MILL_VERSION!]==[0.12.1] set DOWNLOAD_EXT=jar 194 | if [!MILL_VERSION!]==[0.12.2] set DOWNLOAD_EXT=jar 195 | if [!MILL_VERSION!]==[0.12.3] set DOWNLOAD_EXT=jar 196 | if [!MILL_VERSION!]==[0.12.4] set DOWNLOAD_EXT=jar 197 | if [!MILL_VERSION!]==[0.12.5] set DOWNLOAD_EXT=jar 198 | if [!MILL_VERSION!]==[0.12.6] set DOWNLOAD_EXT=jar 199 | if [!MILL_VERSION!]==[0.12.7] set DOWNLOAD_EXT=jar 200 | if [!MILL_VERSION!]==[0.12.8] set DOWNLOAD_EXT=jar 201 | if [!MILL_VERSION!]==[0.12.9] set DOWNLOAD_EXT=jar 202 | if [!MILL_VERSION!]==[0.12.10] set DOWNLOAD_EXT=jar 203 | if [!MILL_VERSION!]==[0.12.11] set DOWNLOAD_EXT=jar 204 | 205 | set MILL_VERSION_PREFIX= 206 | set MILL_SHORT_VERSION_PREFIX= 207 | 208 | for /F "delims=- tokens=1" %%A in ("!MILL_VERSION!") do set MILL_VERSION_BASE=%%A 209 | set MILL_VERSION_MILESTONE= 210 | for /F "delims=- tokens=2" %%A in ("!MILL_VERSION!") do set MILL_VERSION_MILESTONE=%%A 211 | set MILL_VERSION_MILESTONE_START=!MILL_VERSION_MILESTONE:~0,1! 212 | if [!MILL_VERSION_MILESTONE_START!]==[M] ( 213 | set MILL_VERSION_TAG=!MILL_VERSION_BASE!-!MILL_VERSION_MILESTONE! 214 | ) else ( 215 | set MILL_VERSION_TAG=!MILL_VERSION_BASE! 216 | ) 217 | if [!MILL_DOWNLOAD_FROM_MAVEN!]==[1] ( 218 | set MILL_DOWNLOAD_URL=https://repo1.maven.org/maven2/com/lihaoyi/mill-dist!ARTIFACT_SUFFIX!/!MILL_VERSION!/mill-dist!ARTIFACT_SUFFIX!-!MILL_VERSION!.!DOWNLOAD_EXT! 219 | ) else ( 220 | set MILL_DOWNLOAD_URL=!MILL_GITHUB_RELEASE_CDN!%MILL_REPO_URL%/releases/download/!MILL_VERSION_TAG!/!MILL_VERSION!!MILL_DOWNLOAD_SUFFIX! 221 | ) 222 | 223 | if defined MILL_TEST_DRY_RUN_LAUNCHER_SCRIPT ( 224 | echo !MILL_DOWNLOAD_URL! 225 | echo !MILL! 226 | exit /b 0 227 | ) 228 | 229 | rem there seems to be no way to generate a unique temporary file path (on native Windows) 230 | set MILL_DOWNLOAD_FILE=%MILL%.tmp 231 | 232 | echo Downloading mill !MILL_VERSION! from !MILL_DOWNLOAD_URL! ... 1>&2 233 | 234 | if not exist "%MILL_DOWNLOAD_PATH%" mkdir "%MILL_DOWNLOAD_PATH%" 235 | rem curl is bundled with recent Windows 10 236 | rem but I don't think we can expect all the users to have it in 2019 237 | where /Q curl 238 | if !ERRORLEVEL! EQU 0 ( 239 | curl -f -L "!MILL_DOWNLOAD_URL!" -o "!MILL_DOWNLOAD_FILE!" 240 | ) else ( 241 | rem bitsadmin seems to be available on Windows 7 242 | rem without /dynamic, github returns 403 243 | rem bitsadmin is sometimes needlessly slow but it looks better with /priority foreground 244 | bitsadmin /transfer millDownloadJob /dynamic /priority foreground "!MILL_DOWNLOAD_URL!" "!MILL_DOWNLOAD_FILE!" 245 | ) 246 | if not exist "!MILL_DOWNLOAD_FILE!" ( 247 | echo Could not download mill !MILL_VERSION! 1>&2 248 | exit /b 1 249 | ) 250 | 251 | move /y "!MILL_DOWNLOAD_FILE!" "%MILL%" 252 | 253 | set MILL_DOWNLOAD_FILE= 254 | set MILL_DOWNLOAD_SUFFIX= 255 | ) 256 | 257 | set MILL_DOWNLOAD_PATH= 258 | set MILL_VERSION= 259 | set MILL_REPO_URL= 260 | 261 | rem Need to preserve the first position of those listed options 262 | set MILL_FIRST_ARG= 263 | if [%~1%]==[--bsp] ( 264 | set MILL_FIRST_ARG=%1% 265 | ) else ( 266 | if [%~1%]==[-i] ( 267 | set MILL_FIRST_ARG=%1% 268 | ) else ( 269 | if [%~1%]==[--interactive] ( 270 | set MILL_FIRST_ARG=%1% 271 | ) else ( 272 | if [%~1%]==[--no-server] ( 273 | set MILL_FIRST_ARG=%1% 274 | ) else ( 275 | if [%~1%]==[--no-daemon] ( 276 | set MILL_FIRST_ARG=%1% 277 | ) else ( 278 | if [%~1%]==[--repl] ( 279 | set MILL_FIRST_ARG=%1% 280 | ) else ( 281 | if [%~1%]==[--help] ( 282 | set MILL_FIRST_ARG=%1% 283 | ) 284 | ) 285 | ) 286 | ) 287 | ) 288 | ) 289 | ) 290 | set "MILL_PARAMS=%*%" 291 | 292 | if not [!MILL_FIRST_ARG!]==[] ( 293 | for /f "tokens=1*" %%a in ("%*") do ( 294 | set "MILL_PARAMS=%%b" 295 | ) 296 | ) 297 | 298 | rem -D mill.main.cli is for compatibility with Mill 0.10.9 - 0.13.0-M2 299 | "%MILL%" %MILL_FIRST_ARG% -D "mill.main.cli=%MILL_MAIN_CLI%" %MILL_PARAMS% 300 | -------------------------------------------------------------------------------- /publish/mill: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # This is a wrapper script, that automatically selects or downloads Mill from Maven Central or GitHub release pages. 4 | # 5 | # This script determines the Mill version to use by trying these sources 6 | # - env-variable `MILL_VERSION` 7 | # - local file `.mill-version` 8 | # - local file `.config/mill-version` 9 | # - `mill-version` from YAML fronmatter of current buildfile 10 | # - if accessible, find the latest stable version available on Maven Central (https://repo1.maven.org/maven2) 11 | # - env-variable `DEFAULT_MILL_VERSION` 12 | # 13 | # If a version has the suffix '-native' a native binary will be used. 14 | # If a version has the suffix '-jvm' an executable jar file will be used, requiring an already installed Java runtime. 15 | # If no such suffix is found, the script will pick a default based on version and platform. 16 | # 17 | # Once a version was determined, it tries to use either 18 | # - a system-installed mill, if found and it's version matches 19 | # - an already downloaded version under ~/.cache/mill/download 20 | # 21 | # If no working mill version was found on the system, 22 | # this script downloads a binary file from Maven Central or Github Pages (this is version dependent) 23 | # into a cache location (~/.cache/mill/download). 24 | # 25 | # Mill Project URL: https://github.com/com-lihaoyi/mill 26 | # Script Version: 1.0.0-M1-21-7b6fae-DIRTY892b63e8 27 | # 28 | # If you want to improve this script, please also contribute your changes back! 29 | # This script was generated from: dist/scripts/src/mill.sh 30 | # 31 | # Licensed under the Apache License, Version 2.0 32 | 33 | set -e 34 | 35 | if [ "$1" = "--setup-completions" ] ; then 36 | # Need to preserve the first position of those listed options 37 | MILL_FIRST_ARG=$1 38 | shift 39 | fi 40 | 41 | if [ -z "${DEFAULT_MILL_VERSION}" ] ; then 42 | DEFAULT_MILL_VERSION="0.12.10" 43 | fi 44 | 45 | 46 | if [ -z "${GITHUB_RELEASE_CDN}" ] ; then 47 | GITHUB_RELEASE_CDN="" 48 | fi 49 | 50 | 51 | MILL_REPO_URL="https://github.com/com-lihaoyi/mill" 52 | 53 | if [ -z "${CURL_CMD}" ] ; then 54 | CURL_CMD=curl 55 | fi 56 | 57 | # Explicit commandline argument takes precedence over all other methods 58 | if [ "$1" = "--mill-version" ] ; then 59 | echo "The --mill-version option is no longer supported." 1>&2 60 | fi 61 | 62 | MILL_BUILD_SCRIPT="" 63 | 64 | if [ -f "build.mill" ] ; then 65 | MILL_BUILD_SCRIPT="build.mill" 66 | elif [ -f "build.mill.scala" ] ; then 67 | MILL_BUILD_SCRIPT="build.mill.scala" 68 | elif [ -f "build.sc" ] ; then 69 | MILL_BUILD_SCRIPT="build.sc" 70 | fi 71 | 72 | # Please note, that if a MILL_VERSION is already set in the environment, 73 | # We reuse it's value and skip searching for a value. 74 | 75 | # If not already set, read .mill-version file 76 | if [ -z "${MILL_VERSION}" ] ; then 77 | if [ -f ".mill-version" ] ; then 78 | MILL_VERSION="$(tr '\r' '\n' < .mill-version | head -n 1 2> /dev/null)" 79 | elif [ -f ".config/mill-version" ] ; then 80 | MILL_VERSION="$(tr '\r' '\n' < .config/mill-version | head -n 1 2> /dev/null)" 81 | elif [ -n "${MILL_BUILD_SCRIPT}" ] ; then 82 | MILL_VERSION="$(cat ${MILL_BUILD_SCRIPT} | grep '//[|] *mill-version: *' | sed 's;//| *mill-version: *;;')" 83 | fi 84 | fi 85 | 86 | MILL_USER_CACHE_DIR="${XDG_CACHE_HOME:-${HOME}/.cache}/mill" 87 | 88 | if [ -z "${MILL_DOWNLOAD_PATH}" ] ; then 89 | MILL_DOWNLOAD_PATH="${MILL_USER_CACHE_DIR}/download" 90 | fi 91 | 92 | # If not already set, try to fetch newest from Github 93 | if [ -z "${MILL_VERSION}" ] ; then 94 | # TODO: try to load latest version from release page 95 | echo "No mill version specified." 1>&2 96 | echo "You should provide a version via a '//| mill-version: ' comment or a '.mill-version' file." 1>&2 97 | 98 | mkdir -p "${MILL_DOWNLOAD_PATH}" 99 | LANG=C touch -d '1 hour ago' "${MILL_DOWNLOAD_PATH}/.expire_latest" 2>/dev/null || ( 100 | # we might be on OSX or BSD which don't have -d option for touch 101 | # but probably a -A [-][[hh]mm]SS 102 | touch "${MILL_DOWNLOAD_PATH}/.expire_latest"; touch -A -010000 "${MILL_DOWNLOAD_PATH}/.expire_latest" 103 | ) || ( 104 | # in case we still failed, we retry the first touch command with the intention 105 | # to show the (previously suppressed) error message 106 | LANG=C touch -d '1 hour ago' "${MILL_DOWNLOAD_PATH}/.expire_latest" 107 | ) 108 | 109 | # POSIX shell variant of bash's -nt operator, see https://unix.stackexchange.com/a/449744/6993 110 | # if [ "${MILL_DOWNLOAD_PATH}/.latest" -nt "${MILL_DOWNLOAD_PATH}/.expire_latest" ] ; then 111 | if [ -n "$(find -L "${MILL_DOWNLOAD_PATH}/.latest" -prune -newer "${MILL_DOWNLOAD_PATH}/.expire_latest")" ]; then 112 | # we know a current latest version 113 | MILL_VERSION=$(head -n 1 "${MILL_DOWNLOAD_PATH}"/.latest 2> /dev/null) 114 | fi 115 | 116 | if [ -z "${MILL_VERSION}" ] ; then 117 | # we don't know a current latest version 118 | echo "Retrieving latest mill version ..." 1>&2 119 | LANG=C ${CURL_CMD} -s -i -f -I ${MILL_REPO_URL}/releases/latest 2> /dev/null | grep --ignore-case Location: | sed s'/^.*tag\///' | tr -d '\r\n' > "${MILL_DOWNLOAD_PATH}/.latest" 120 | MILL_VERSION=$(head -n 1 "${MILL_DOWNLOAD_PATH}"/.latest 2> /dev/null) 121 | fi 122 | 123 | if [ -z "${MILL_VERSION}" ] ; then 124 | # Last resort 125 | MILL_VERSION="${DEFAULT_MILL_VERSION}" 126 | echo "Falling back to hardcoded mill version ${MILL_VERSION}" 1>&2 127 | else 128 | echo "Using mill version ${MILL_VERSION}" 1>&2 129 | fi 130 | fi 131 | 132 | MILL_NATIVE_SUFFIX="-native" 133 | MILL_JVM_SUFFIX="-jvm" 134 | FULL_MILL_VERSION=$MILL_VERSION 135 | ARTIFACT_SUFFIX="" 136 | set_artifact_suffix(){ 137 | if [ "$(expr substr $(uname -s) 1 5 2>/dev/null)" = "Linux" ]; then 138 | if [ "$(uname -m)" = "aarch64" ]; then 139 | ARTIFACT_SUFFIX="-native-linux-aarch64" 140 | else 141 | ARTIFACT_SUFFIX="-native-linux-amd64" 142 | fi 143 | elif [ "$(uname)" = "Darwin" ]; then 144 | if [ "$(uname -m)" = "arm64" ]; then 145 | ARTIFACT_SUFFIX="-native-mac-aarch64" 146 | else 147 | ARTIFACT_SUFFIX="-native-mac-amd64" 148 | fi 149 | else 150 | echo "This native mill launcher supports only Linux and macOS." 1>&2 151 | exit 1 152 | fi 153 | } 154 | 155 | case "$MILL_VERSION" in 156 | *"$MILL_NATIVE_SUFFIX") 157 | MILL_VERSION=${MILL_VERSION%"$MILL_NATIVE_SUFFIX"} 158 | set_artifact_suffix 159 | ;; 160 | 161 | *"$MILL_JVM_SUFFIX") 162 | MILL_VERSION=${MILL_VERSION%"$MILL_JVM_SUFFIX"} 163 | ;; 164 | 165 | *) 166 | case "$MILL_VERSION" in 167 | 0.1.*) ;; 168 | 0.2.*) ;; 169 | 0.3.*) ;; 170 | 0.4.*) ;; 171 | 0.5.*) ;; 172 | 0.6.*) ;; 173 | 0.7.*) ;; 174 | 0.8.*) ;; 175 | 0.9.*) ;; 176 | 0.10.*) ;; 177 | 0.11.*) ;; 178 | 0.12.*) ;; 179 | *) 180 | set_artifact_suffix 181 | esac 182 | ;; 183 | esac 184 | 185 | MILL="${MILL_DOWNLOAD_PATH}/$MILL_VERSION$ARTIFACT_SUFFIX" 186 | 187 | try_to_use_system_mill() { 188 | if [ "$(uname)" != "Linux" ]; then 189 | return 0 190 | fi 191 | 192 | MILL_IN_PATH="$(command -v mill || true)" 193 | 194 | if [ -z "${MILL_IN_PATH}" ]; then 195 | return 0 196 | fi 197 | 198 | SYSTEM_MILL_FIRST_TWO_BYTES=$(head --bytes=2 "${MILL_IN_PATH}") 199 | if [ "${SYSTEM_MILL_FIRST_TWO_BYTES}" = "#!" ]; then 200 | # MILL_IN_PATH is (very likely) a shell script and not the mill 201 | # executable, ignore it. 202 | return 0 203 | fi 204 | 205 | SYSTEM_MILL_PATH=$(readlink -e "${MILL_IN_PATH}") 206 | SYSTEM_MILL_SIZE=$(stat --format=%s "${SYSTEM_MILL_PATH}") 207 | SYSTEM_MILL_MTIME=$(stat --format=%y "${SYSTEM_MILL_PATH}") 208 | 209 | if [ ! -d "${MILL_USER_CACHE_DIR}" ]; then 210 | mkdir -p "${MILL_USER_CACHE_DIR}" 211 | fi 212 | 213 | SYSTEM_MILL_INFO_FILE="${MILL_USER_CACHE_DIR}/system-mill-info" 214 | if [ -f "${SYSTEM_MILL_INFO_FILE}" ]; then 215 | parseSystemMillInfo() { 216 | LINE_NUMBER="${1}" 217 | # Select the line number of the SYSTEM_MILL_INFO_FILE, cut the 218 | # variable definition in that line in two halves and return 219 | # the value, and finally remove the quotes. 220 | sed -n "${LINE_NUMBER}p" "${SYSTEM_MILL_INFO_FILE}" |\ 221 | cut -d= -f2 |\ 222 | sed 's/"\(.*\)"/\1/' 223 | } 224 | 225 | CACHED_SYSTEM_MILL_PATH=$(parseSystemMillInfo 1) 226 | CACHED_SYSTEM_MILL_VERSION=$(parseSystemMillInfo 2) 227 | CACHED_SYSTEM_MILL_SIZE=$(parseSystemMillInfo 3) 228 | CACHED_SYSTEM_MILL_MTIME=$(parseSystemMillInfo 4) 229 | 230 | if [ "${SYSTEM_MILL_PATH}" = "${CACHED_SYSTEM_MILL_PATH}" ] \ 231 | && [ "${SYSTEM_MILL_SIZE}" = "${CACHED_SYSTEM_MILL_SIZE}" ] \ 232 | && [ "${SYSTEM_MILL_MTIME}" = "${CACHED_SYSTEM_MILL_MTIME}" ]; then 233 | if [ "${CACHED_SYSTEM_MILL_VERSION}" = "${MILL_VERSION}" ]; then 234 | MILL="${SYSTEM_MILL_PATH}" 235 | return 0 236 | else 237 | return 0 238 | fi 239 | fi 240 | fi 241 | 242 | SYSTEM_MILL_VERSION=$(${SYSTEM_MILL_PATH} --version | head -n1 | sed -n 's/^Mill.*version \(.*\)/\1/p') 243 | 244 | cat < "${SYSTEM_MILL_INFO_FILE}" 245 | CACHED_SYSTEM_MILL_PATH="${SYSTEM_MILL_PATH}" 246 | CACHED_SYSTEM_MILL_VERSION="${SYSTEM_MILL_VERSION}" 247 | CACHED_SYSTEM_MILL_SIZE="${SYSTEM_MILL_SIZE}" 248 | CACHED_SYSTEM_MILL_MTIME="${SYSTEM_MILL_MTIME}" 249 | EOF 250 | 251 | if [ "${SYSTEM_MILL_VERSION}" = "${MILL_VERSION}" ]; then 252 | MILL="${SYSTEM_MILL_PATH}" 253 | fi 254 | } 255 | try_to_use_system_mill 256 | 257 | # If not already downloaded, download it 258 | if [ ! -s "${MILL}" ] || [ "$MILL_TEST_DRY_RUN_LAUNCHER_SCRIPT" = "1" ] ; then 259 | case $MILL_VERSION in 260 | 0.0.* | 0.1.* | 0.2.* | 0.3.* | 0.4.* ) 261 | DOWNLOAD_SUFFIX="" 262 | DOWNLOAD_FROM_MAVEN=0 263 | ;; 264 | 0.5.* | 0.6.* | 0.7.* | 0.8.* | 0.9.* | 0.10.* | 0.11.0-M* ) 265 | DOWNLOAD_SUFFIX="-assembly" 266 | DOWNLOAD_FROM_MAVEN=0 267 | ;; 268 | *) 269 | DOWNLOAD_SUFFIX="-assembly" 270 | DOWNLOAD_FROM_MAVEN=1 271 | ;; 272 | esac 273 | case $MILL_VERSION in 274 | 0.12.0 | 0.12.1 | 0.12.2 | 0.12.3 | 0.12.4 | 0.12.5 | 0.12.6 | 0.12.7 | 0.12.8 | 0.12.9 | 0.12.10 | 0.12.11 ) 275 | DOWNLOAD_EXT="jar" 276 | ;; 277 | 0.12.* ) 278 | DOWNLOAD_EXT="exe" 279 | ;; 280 | 0.* ) 281 | DOWNLOAD_EXT="jar" 282 | ;; 283 | *) 284 | DOWNLOAD_EXT="exe" 285 | ;; 286 | esac 287 | 288 | DOWNLOAD_FILE=$(mktemp mill.XXXXXX) 289 | if [ "$DOWNLOAD_FROM_MAVEN" = "1" ] ; then 290 | DOWNLOAD_URL="https://repo1.maven.org/maven2/com/lihaoyi/mill-dist${ARTIFACT_SUFFIX}/${MILL_VERSION}/mill-dist${ARTIFACT_SUFFIX}-${MILL_VERSION}.${DOWNLOAD_EXT}" 291 | else 292 | MILL_VERSION_TAG=$(echo "$MILL_VERSION" | sed -E 's/([^-]+)(-M[0-9]+)?(-.*)?/\1\2/') 293 | DOWNLOAD_URL="${GITHUB_RELEASE_CDN}${MILL_REPO_URL}/releases/download/${MILL_VERSION_TAG}/${MILL_VERSION}${DOWNLOAD_SUFFIX}" 294 | unset MILL_VERSION_TAG 295 | fi 296 | 297 | if [ "$MILL_TEST_DRY_RUN_LAUNCHER_SCRIPT" = "1" ] ; then 298 | echo $DOWNLOAD_URL 299 | echo $MILL 300 | exit 0 301 | fi 302 | # TODO: handle command not found 303 | echo "Downloading mill ${MILL_VERSION} from ${DOWNLOAD_URL} ..." 1>&2 304 | ${CURL_CMD} -f -L -o "${DOWNLOAD_FILE}" "${DOWNLOAD_URL}" 305 | chmod +x "${DOWNLOAD_FILE}" 306 | mkdir -p "${MILL_DOWNLOAD_PATH}" 307 | mv "${DOWNLOAD_FILE}" "${MILL}" 308 | 309 | unset DOWNLOAD_FILE 310 | unset DOWNLOAD_SUFFIX 311 | fi 312 | 313 | if [ -z "$MILL_MAIN_CLI" ] ; then 314 | MILL_MAIN_CLI="${0}" 315 | fi 316 | 317 | MILL_FIRST_ARG="" 318 | if [ "$1" = "--bsp" ] || [ "${1#"-i"}" != "$1" ] || [ "$1" = "--interactive" ] || [ "$1" = "--no-server" ] || [ "$1" = "--no-daemon" ] || [ "$1" = "--repl" ] || [ "$1" = "--help" ] ; then 319 | # Need to preserve the first position of those listed options 320 | MILL_FIRST_ARG=$1 321 | shift 322 | fi 323 | 324 | unset MILL_DOWNLOAD_PATH 325 | unset MILL_OLD_DOWNLOAD_PATH 326 | unset OLD_MILL 327 | unset MILL_VERSION 328 | unset MILL_REPO_URL 329 | 330 | # -D mill.main.cli is for compatibility with Mill 0.10.9 - 0.13.0-M2 331 | # We don't quote MILL_FIRST_ARG on purpose, so we can expand the empty value without quotes 332 | # shellcheck disable=SC2086 333 | exec "${MILL}" $MILL_FIRST_ARG -D "mill.main.cli=${MILL_MAIN_CLI}" "$@" 334 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # coursier jvm-index 2 | 3 | [![Update index](https://github.com/coursier/jvm-index/actions/workflows/update-index.yml/badge.svg)](https://github.com/coursier/jvm-index/actions/workflows/update-index.yml) 4 | [![Publish](https://github.com/coursier/jvm-index/actions/workflows/publish.yml/badge.svg)](https://github.com/coursier/jvm-index/actions/workflows/publish.yml) 5 | 6 | This repository hosts and manages the JVM index used by the `cs java` and `cs java-home` 7 | commands of [coursier](https://get-coursier.io), and more generally, the JVM management 8 | capabilities of coursier. 9 | 10 | ## Available JDKs 11 | 12 | | JDK | id in index | 13 | | ------------------------------------------------------------------------------------ | ------------------- | 14 | | [Eclipse Temurin](https://adoptium.net/temurin/releases) (recommended / default) | `temurin` | 15 | | [GraalVM community](https://github.com/graalvm/graalvm-ce-builds/releases) | `graalvm-community` | 16 | | [Oracle JDKs](https://www.oracle.com/java/technologies/downloads/) | `oracle` | 17 | | [Azul Zulu](https://www.azul.com/downloads/?package=jdk#zulu) | `zulu` | 18 | | [bellsoft Liberica](https://bell-sw.com/pages/downloads/) | `liberica` | 19 | | [bellsoft Liberica Native Image Kit](https://bell-sw.com/liberica-native-image-kit/) | `liberica-nik` | 20 | | [Amazon Corretto](https://aws.amazon.com/corretto/) | `corretto` | 21 | | [IBM Semeru](https://developer.ibm.com/languages/java/semeru-runtimes/) | `ibm-semeru` | 22 | 23 | ## Legacy JDKs 24 | 25 | | JDK | id in index | 26 | | ---------------------------------------------- | ----------- | 27 | | AdoptOpenJDK | `adopt` | 28 | | Merge of AdoptOpenJDK and Eclipse Temurin JDKs | `adoptium` | 29 | 30 | ## Index structure 31 | 32 | The index comes in 2 shapes: 33 | - a [Jabba](https://github.com/shyiko/jabba)-compatible single JSON file, [`index.json`](https://github.com/coursier/jvm-index/blob/master/index.json) 34 | - per-OS and CPU architecture indices, under [`indices/`](https://github.com/coursier/jvm-index/tree/master/indices) 35 | 36 | While the former is only available on GitHub, the latter is also pushed to Maven Central, 37 | under the [`io.get-coursier.jvm.indices`](https://repo1.maven.org/maven2/io/get-coursier/jvm/indices/) 38 | organization. 39 | 40 | ### Jabba-compatible index 41 | 42 | That index consists in 4 nested JSON objects, with the successive keys of these objects being: 43 | - the OS 44 | - `linux` 45 | - `darwin` (macOS) 46 | - `windows` 47 | - `linux-musl` (for [musl libc](https://www.musl-libc.org)-based systems, like Alpine Linux), 48 | - `aix` 49 | - `solaris` 50 | - the CPU architecture 51 | - `amd64` 52 | - `arm64` (a.k.a. `aarch64`, Raspberry PI or Mac M1-M4 CPUs) 53 | - `x86` (32-bit) 54 | - `arm` (32-bit ARM) 55 | - `ppc64` 56 | - `ppc64le` 57 | - `s390x` 58 | - the JDK name, prefixed by `jdk@`, like 59 | - `jdk@temurin` 60 | - `jdk@graalvm-community` 61 | - `jdk@liberica` 62 | - `jdk@liberica-nik` 63 | - `jdk@zulu` 64 | - `jdk@corretto` 65 | - `jdk@java-oracle` 66 | - … 67 | - the JDK version, often prefixed with `1.`, like 68 | - `1.8.0-432` 69 | - `1.17.0.13` 70 | - `1.21.0.5` 71 | - `1.23.0.1` 72 | - … 73 | 74 | The values of the fourth nested object look like 75 | ``` 76 | ${TYPE}+${URL} 77 | ``` 78 | 79 | `${TYPE}` being one of 80 | - `tgz` (for gzip-compressed tar archive JDKs, on Unixes typically) 81 | - `zip` (for zip-compressed JDKs, on Windows typically) 82 | 83 | `${URL}` being the URL of the JDK archive, like `https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_aarch64_mac_hotspot_23.0.1_11.tar.gz`. 84 | 85 | Value examples 86 | ```text 87 | tgz+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_aarch64_mac_hotspot_23.0.1_11.tar.gz 88 | zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23%2B37/OpenJDK23U-jdk_x64_windows_hotspot_23_37.zip 89 | ``` 90 | 91 | Example commands to inspect the index locally: 92 | ```bash 93 | $ cat "$(cs get https://github.com/coursier/jvm-index/raw/refs/heads/master/index.json)" | 94 | jq 'keys' 95 | [ 96 | "aix", 97 | "alpine-linux", 98 | "darwin", 99 | "linux", 100 | "linux-musl", 101 | "solaris", 102 | "windows" 103 | ] 104 | 105 | $ cat "$(cs get https://github.com/coursier/jvm-index/raw/refs/heads/master/index.json)" | 106 | jq '.darwin | keys' 107 | [ 108 | "amd64", 109 | "arm64" 110 | ] 111 | 112 | $ cat "$(cs get https://github.com/coursier/jvm-index/raw/refs/heads/master/index.json)" | 113 | jq '.darwin.amd64 | keys' 114 | [ 115 | "jdk@corretto", 116 | "jdk@graalvm-community", 117 | "jdk@graalvm-oracle", 118 | "jdk@java-oracle", 119 | "jdk@liberica", 120 | "jdk@temurin", 121 | "jdk@zulu", 122 | … 123 | ] 124 | 125 | $ cat "$(cs get https://github.com/coursier/jvm-index/raw/refs/heads/master/index.json)" | 126 | jq '.darwin.amd64["jdk@temurin"] | keys' 127 | [ 128 | "1.11.0.25", 129 | "1.16.0.2", 130 | "1.17.0.13", 131 | "1.18.0.2.1", 132 | "1.19.0.2", 133 | "1.20.0.2", 134 | "1.21.0.5", 135 | "1.22.0.2", 136 | "1.23", 137 | "1.23.0.1", 138 | "1.8.0-432", 139 | … 140 | ] 141 | 142 | $ cat "$(cs get https://github.com/coursier/jvm-index/raw/refs/heads/master/index.json)" | 143 | jq '.darwin.amd64["jdk@temurin"]["1.23.0.1"]' 144 | "tgz+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_x64_mac_hotspot_23.0.1_11.tar.gz" 145 | ``` 146 | 147 | ### Per-OS and CPU architecture indices 148 | 149 | These consist in 2 nested JSON objects, whose keys are: 150 | - the JDK name, like 151 | - `temurin` 152 | - `graalvm-community` 153 | - `liberica` 154 | - `zulu` 155 | - `corretto` 156 | - `java-oracle` 157 | - … 158 | - the JDK version, like 159 | - `8.0-432` 160 | - `17.0.13` 161 | - `21.0.5` 162 | - `23.0.1` 163 | - … 164 | 165 | The values of the second nested object look like those of the [Jabba-compatible index](#jabba-compatible-index): 166 | ``` 167 | ${TYPE}+${URL} 168 | ``` 169 | 170 | `${TYPE}` being one of 171 | - `tgz` (for gzip-compressed tar archive JDKs, on Unixes typically) 172 | - `zip` (for zip-compressed JDKs, on Windows typically) 173 | 174 | `${URL}` being the URL of the JDK archive, like `https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_aarch64_mac_hotspot_23.0.1_11.tar.gz`. 175 | 176 | Value examples 177 | ```text 178 | tgz+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_aarch64_mac_hotspot_23.0.1_11.tar.gz 179 | zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23%2B37/OpenJDK23U-jdk_x64_windows_hotspot_23_37.zip 180 | ``` 181 | 182 | These indices live at Maven coordinates like 183 | ```text 184 | io.get-coursier.jvm.indices:index-${OS}-${CPU}:${INDEX_VERSION} 185 | ``` 186 | 187 | `${OS}` being one of: 188 | - `linux` 189 | - `darwin` (macOS) 190 | - `windows` 191 | - `linux-musl` (for [musl libc](https://www.musl-libc.org)-based systems, like Alpine Linux), 192 | - `aix` 193 | - `solaris` 194 | 195 | `${CPU}` being one of: 196 | - `amd64` 197 | - `arm64` (a.k.a. `aarch64`, Raspberry PI or Mac M1-M4 CPUs) 198 | - `x86` (32-bit) 199 | - `arm` (32-bit ARM) 200 | - `ppc64` 201 | - `ppc64le` 202 | - `s390x` 203 | 204 | `${INDEX_VERSION}` can be found from [directory listings](https://repo1.maven.org/maven2/io/get-coursier/jvm/indices/index-darwin-arm64/) 205 | or [`maven-metadata.xml`](https://repo1.maven.org/maven2/io/get-coursier/jvm/indices/index-darwin-arm64/maven-metadata.xml) files on Maven Central. 206 | 207 | Example commands to inspect such an index locally: 208 | ```text 209 | $ unzip -l "$(cs get https://repo1.maven.org/maven2/io/get-coursier/jvm/indices/index-darwin-arm64/0.0.4-70-51469f/index-darwin-arm64-0.0.4-70-51469f.jar)" 210 | Archive: ~/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jvm/indices/index-darwin-arm64/0.0.4-70-51469f/index-darwin-arm64-0.0.4-70-51469f.jar 211 | Length Date Time Name 212 | --------- ---------- ----- ---- 213 | 332 11-14-2024 09:51 META-INF/MANIFEST.MF 214 | 0 11-14-2024 09:51 META-INF/ 215 | 0 11-14-2024 09:51 coursier/ 216 | 0 11-14-2024 09:51 coursier/jvm/ 217 | 0 11-14-2024 09:51 coursier/jvm/indices/ 218 | 0 11-14-2024 09:51 coursier/jvm/indices/v1/ 219 | 157254 11-14-2024 09:51 coursier/jvm/indices/v1/darwin-arm64.json 220 | --------- ------- 221 | 157586 7 files 222 | 223 | $ unzip -p "$(cs get https://repo1.maven.org/maven2/io/get-coursier/jvm/indices/index-darwin-arm64/0.0.4-70-51469f/index-darwin-arm64-0.0.4-70-51469f.jar)" coursier/jvm/indices/v1/darwin-arm64.json | 224 | jq keys 225 | [ 226 | "corretto", 227 | "graalvm-community", 228 | "graalvm-oracle", 229 | "ibm-semeru", 230 | "java-oracle", 231 | "liberica", 232 | "temurin", 233 | "zulu", 234 | … 235 | ] 236 | 237 | $ unzip -p "$(cs get https://repo1.maven.org/maven2/io/get-coursier/jvm/indices/index-darwin-arm64/0.0.4-70-51469f/index-darwin-arm64-0.0.4-70-51469f.jar)" coursier/jvm/indices/v1/darwin-arm64.json | 238 | jq '.temurin | keys' 239 | [ 240 | "11.0.25", 241 | "17.0.13", 242 | "18.0.2.1", 243 | "19.0.2", 244 | "20.0.2", 245 | "21.0.5", 246 | "22.0.2", 247 | "23.0.1", 248 | … 249 | ] 250 | 251 | $ unzip -p "$(cs get https://repo1.maven.org/maven2/io/get-coursier/jvm/indices/index-darwin-arm64/0.0.4-70-51469f/index-darwin-arm64-0.0.4-70-51469f.jar)" coursier/jvm/indices/v1/darwin-arm64.json | 252 | jq '.temurin["23.0.1"]' 253 | "tgz+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_aarch64_mac_hotspot_23.0.1_11.tar.gz" 254 | ``` 255 | 256 | ## Use by coursier 257 | 258 | ### API 259 | 260 | As of writing this (coursier `2.1.18`), coursier relies by default on the Jabba-compatible single JSON file index, but is able to use the per-OS and CPU index from Maven Central. 261 | 262 | ```scala mdoc:silent 263 | import coursier.cache.FileCache 264 | import coursier.jvm._ 265 | val cache = FileCache() 266 | val jvmCache = JvmCache().withDefaultIndex 267 | val javaHomeManager = JavaHome().withCache(jvmCache) 268 | val javaHome = javaHomeManager.get("temurin:21") 269 | .unsafeRun()(cache.ec) 270 | ``` 271 | 272 | Using the per-OS and CPU index from Maven Central: 273 | ```scala mdoc:silent:reset 274 | import coursier.cache.FileCache 275 | import coursier.jvm._ 276 | val cache = FileCache() 277 | val jvmCache = JvmCache().withIndexChannel( 278 | coursier.Resolve().finalRepositories.unsafeRun()(cache.ec), 279 | JvmChannel.central() 280 | ) 281 | val javaHomeManager = JavaHome().withCache(jvmCache) 282 | val javaHome = javaHomeManager.get("temurin:21") 283 | .unsafeRun()(cache.ec) 284 | ``` 285 | 286 | ### CLI 287 | 288 | The index generated here is now used by the `java` and `java-home` 289 | commands of [coursier](https://get-coursier.io). 290 | 291 | If you suspect one of those commands doesn't use a newer JVM version, pass `--update --ttl 0` to them, 292 | like 293 | ```text 294 | $ cs java --env --jvm graalvm-community:23 --update --ttl 0 295 | ``` 296 | 297 | ## Use by Scala CLI 298 | 299 | [Scala CLI](https://github.com/VirtusLab/scala-cli) relies on coursier to manage JDKs. It automatically 300 | downloads JDKs if needed, based on the `--jvm …` option and `//> jvm …` directive. 301 | 302 | ## Use by Mill 303 | 304 | The [Mill build tool](https://mill-build.org) allows its users to pick a JVM to compile / run / test code. As of 305 | writing this, this feature has just been merged via [`com-lihaoyi/mill#3716`](https://github.com/com-lihaoyi/mill/pull/3716) 306 | 307 | ## How this repository works 308 | 309 | ### Workflow 310 | 311 | The [`update-index` workflow](https://github.com/coursier/jvm-index/blob/master/.github/workflows/update-index.yml) 312 | runs daily. It lists available JVMs from various providers, and re-generates the indices. If any 313 | change is found, a PR for it is opened. 314 | 315 | Maintainers need to pick the PR, check that it doesn't contain anything suspicious, approve it, 316 | and merge it. 317 | 318 | Upon merge, the [Jabba-compatible index](#jabba-compatible-index) is immediately up-to-date. 319 | The [`publish` workflow](https://github.com/coursier/jvm-index/blob/master/.github/workflows/publish.yml) 320 | runs and pushes updated [per-OS and CPU architecture indices](#per-os-and-cpu-architecture-indices) 321 | to Maven Central. Once the `publish` workflow ran successfully, up to a few hours are sometimes needed 322 | for the newer indices to be available on [Maven Central](https://repo1.maven.org/maven2). 323 | 324 | ## Generating the index locally 325 | 326 | Generate an index with 327 | ```bash 328 | $ GH_TOKEN="****" ./scala-cli.sh src 329 | ``` 330 | or 331 | ```powershell 332 | $Env:GH_TOKEN="*****" 333 | scala-cli src 334 | ``` 335 | 336 | Just `./scala-cli.sh src` can work if `GH_TOKEN` is not set, but it usually gets 337 | rate-limited by the GitHub API. You can read more about creating a token 338 | [here](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens). 339 | Just having the `public_repo` scope will be enough for the access you need. 340 | 341 | The index is written in `index.json` in the current directory. 342 | 343 | ## About 344 | 345 | Copyright (c) 2020-2022, Alexandre Archambault 346 | 347 | Licensed under the Apache version 2 license. 348 | -------------------------------------------------------------------------------- /indices/solaris-amd64.json: -------------------------------------------------------------------------------- 1 | { 2 | "liberica": { 3 | "8.0.202": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u202/bellsoft-jdk8u202-solaris-x64.tar.gz", 4 | "8.0.212": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u212/bellsoft-jdk8u212-solaris-x64.tar.gz", 5 | "8.0.222": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u222/bellsoft-jdk8u222-solaris-x64.tar.gz", 6 | "8.0.232": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u232+10/bellsoft-jdk8u232+10-solaris-x64.tar.gz", 7 | "8.0.242": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u242+7/bellsoft-jdk8u242+7-solaris-x64.tar.gz", 8 | "8.0.252": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u252+9/bellsoft-jdk8u252+9-solaris-x64.tar.gz", 9 | "8.0.262": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u262+10/bellsoft-jdk8u262+10-solaris-x64.tar.gz", 10 | "8.0.265": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u265+1/bellsoft-jdk8u265+1-solaris-x64.tar.gz", 11 | "8.0.272": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u272+10/bellsoft-jdk8u272+10-solaris-x64.tar.gz", 12 | "8.0.275": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u275+1/bellsoft-jdk8u275+1-solaris-x64.tar.gz", 13 | "8.0.282": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u282+8/bellsoft-jdk8u282+8-solaris-x64.tar.gz", 14 | "8.0.292": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u292+10/bellsoft-jdk8u292+10-solaris-x64.tar.gz", 15 | "8.0.302": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u302+8/bellsoft-jdk8u302+8-solaris-x64.tar.gz", 16 | "8.0.312": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u312+7/bellsoft-jdk8u312+7-solaris-x64.tar.gz", 17 | "8.0.322": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u322+6/bellsoft-jdk8u322+6-solaris-x64.tar.gz", 18 | "8.0.332": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u332+9/bellsoft-jdk8u332+9-solaris-x64.tar.gz", 19 | "8.0.333": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u333+2/bellsoft-jdk8u333+2-solaris-x64.tar.gz", 20 | "8.0.342": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u342+7/bellsoft-jdk8u342+7-solaris-x64.tar.gz", 21 | "8.0.345": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u345+1/bellsoft-jdk8u345+1-solaris-x64.tar.gz", 22 | "8.0.352": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u352+8/bellsoft-jdk8u352+8-solaris-x64.tar.gz", 23 | "8.0.362": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u362+9/bellsoft-jdk8u362+9-solaris-x64.tar.gz", 24 | "8.0.372": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u372+7/bellsoft-jdk8u372+7-solaris-x64.tar.gz", 25 | "8.0.382": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u382+6/bellsoft-jdk8u382+6-solaris-x64.tar.gz", 26 | "8.0.392": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u392+9/bellsoft-jdk8u392+9-solaris-x64.tar.gz", 27 | "8.0.402": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u402+7/bellsoft-jdk8u402+7-solaris-x64.tar.gz", 28 | "8.0.412": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u412+9/bellsoft-jdk8u412+9-solaris-x64.tar.gz", 29 | "8.0.422": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u422+6/bellsoft-jdk8u422+6-solaris-x64.tar.gz", 30 | "8.0.432": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u432+7/bellsoft-jdk8u432+7-solaris-x64.tar.gz", 31 | "8.0.442": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u442+7/bellsoft-jdk8u442+7-solaris-x64.tar.gz", 32 | "8.0.452": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u452+11/bellsoft-jdk8u452+11-solaris-x64.tar.gz", 33 | "8.0.462": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u462+11/bellsoft-jdk8u462+11-solaris-x64.tar.gz", 34 | "8.0.472": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u472+11/bellsoft-jdk8u472+11-solaris-x64.tar.gz", 35 | "11.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.2/bellsoft-jdk11.0.2-solaris-x64.tar.gz", 36 | "11.0.3": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.3/bellsoft-jdk11.0.3-solaris-x64.tar.gz", 37 | "11.0.4": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.4/bellsoft-jdk11.0.4-solaris-x64.tar.gz", 38 | "11.0.5": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.5+11/bellsoft-jdk11.0.5+11-solaris-x64.tar.gz", 39 | "11.0.6": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.6+10/bellsoft-jdk11.0.6+10-solaris-x64.tar.gz", 40 | "11.0.7": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.7+10/bellsoft-jdk11.0.7+10-solaris-x64.tar.gz", 41 | "11.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.8+10/bellsoft-jdk11.0.8+10-solaris-x64.tar.gz", 42 | "11.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9+12/bellsoft-jdk11.0.9+12-solaris-x64.tar.gz", 43 | "11.0.10": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.10+9/bellsoft-jdk11.0.10+9-solaris-x64.tar.gz", 44 | "11.0.11": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jdk11.0.11+9-solaris-x64.tar.gz", 45 | "11.0.12": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jdk11.0.12+7-solaris-x64.tar.gz", 46 | "11.0.13": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jdk11.0.13+8-solaris-x64.tar.gz", 47 | "11.0.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14+9/bellsoft-jdk11.0.14+9-solaris-x64.tar.gz", 48 | "11.0.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15+10/bellsoft-jdk11.0.15+10-solaris-x64.tar.gz", 49 | "11.0.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16+8/bellsoft-jdk11.0.16+8-solaris-x64.tar.gz", 50 | "11.0.17": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.17+7/bellsoft-jdk11.0.17+7-solaris-x64.tar.gz", 51 | "11.0.18": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.18+10/bellsoft-jdk11.0.18+10-solaris-x64.tar.gz", 52 | "11.0.19": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.19+7/bellsoft-jdk11.0.19+7-solaris-x64.tar.gz", 53 | "11.0.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20+8/bellsoft-jdk11.0.20+8-solaris-x64.tar.gz", 54 | "11.0.21": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.21+10/bellsoft-jdk11.0.21+10-solaris-x64.tar.gz", 55 | "11.0.22": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.22+12/bellsoft-jdk11.0.22+12-solaris-x64.tar.gz", 56 | "11.0.23": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.23+12/bellsoft-jdk11.0.23+12-solaris-x64.tar.gz", 57 | "11.0.24": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.24+9/bellsoft-jdk11.0.24+9-solaris-x64.tar.gz", 58 | "11.0.25": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.25+11/bellsoft-jdk11.0.25+11-solaris-x64.tar.gz", 59 | "11.0.26": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.26+9/bellsoft-jdk11.0.26+9-solaris-x64.tar.gz", 60 | "11.0.27": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.27+9/bellsoft-jdk11.0.27+9-solaris-x64.tar.gz", 61 | "11.0.28": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.28+12/bellsoft-jdk11.0.28+12-solaris-x64.tar.gz", 62 | "11.0.29": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.29+12/bellsoft-jdk11.0.29+12-solaris-x64.tar.gz", 63 | "11.1.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9.1+1/bellsoft-jdk11.0.9.1+1-solaris-x64.tar.gz", 64 | "11.1.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14.1+1/bellsoft-jdk11.0.14.1+1-solaris-x64.tar.gz", 65 | "11.1.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15.1+2/bellsoft-jdk11.0.15.1+2-solaris-x64.tar.gz", 66 | "11.1.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16.1+1/bellsoft-jdk11.0.16.1+1-solaris-x64.tar.gz", 67 | "11.1.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20.1+1/bellsoft-jdk11.0.20.1+1-solaris-x64.tar.gz", 68 | "12.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/12/bellsoft-jdk12-solaris-x64.tar.gz", 69 | "12.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/12.0.1/bellsoft-jdk12.0.1-solaris-x64.tar.gz", 70 | "12.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/12.0.2/bellsoft-jdk12.0.2-solaris-x64.tar.gz", 71 | "13.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/13.0.1+10/bellsoft-jdk13.0.1+10-solaris-x64.tar.gz" 72 | }, 73 | "liberica-jre": { 74 | "8.0.202": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u202/bellsoft-jre8u202-solaris-x64.tar.gz", 75 | "8.0.212": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u212/bellsoft-jre8u212-solaris-x64.tar.gz", 76 | "8.0.222": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u222/bellsoft-jre8u222-solaris-x64.tar.gz", 77 | "8.0.232": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u232+10/bellsoft-jre8u232+10-solaris-x64.tar.gz", 78 | "8.0.242": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u242+7/bellsoft-jre8u242+7-solaris-x64.tar.gz", 79 | "8.0.252": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u252+9/bellsoft-jre8u252+9-solaris-x64.tar.gz", 80 | "8.0.262": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u262+10/bellsoft-jre8u262+10-solaris-x64.tar.gz", 81 | "8.0.265": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u265+1/bellsoft-jre8u265+1-solaris-x64.tar.gz", 82 | "8.0.272": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u272+10/bellsoft-jre8u272+10-solaris-x64.tar.gz", 83 | "8.0.275": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u275+1/bellsoft-jre8u275+1-solaris-x64.tar.gz", 84 | "8.0.282": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u282+8/bellsoft-jre8u282+8-solaris-x64.tar.gz", 85 | "8.0.292": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u292+10/bellsoft-jre8u292+10-solaris-x64.tar.gz", 86 | "8.0.302": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u302+8/bellsoft-jre8u302+8-solaris-x64.tar.gz", 87 | "8.0.312": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u312+7/bellsoft-jre8u312+7-solaris-x64.tar.gz", 88 | "8.0.322": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u322+6/bellsoft-jre8u322+6-solaris-x64.tar.gz", 89 | "8.0.332": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u332+9/bellsoft-jre8u332+9-solaris-x64.tar.gz", 90 | "8.0.333": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u333+2/bellsoft-jre8u333+2-solaris-x64.tar.gz", 91 | "8.0.342": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u342+7/bellsoft-jre8u342+7-solaris-x64.tar.gz", 92 | "8.0.345": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u345+1/bellsoft-jre8u345+1-solaris-x64.tar.gz", 93 | "8.0.352": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u352+8/bellsoft-jre8u352+8-solaris-x64.tar.gz", 94 | "8.0.362": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u362+9/bellsoft-jre8u362+9-solaris-x64.tar.gz", 95 | "8.0.372": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u372+7/bellsoft-jre8u372+7-solaris-x64.tar.gz", 96 | "8.0.382": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u382+6/bellsoft-jre8u382+6-solaris-x64.tar.gz", 97 | "8.0.392": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u392+9/bellsoft-jre8u392+9-solaris-x64.tar.gz", 98 | "8.0.402": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u402+7/bellsoft-jre8u402+7-solaris-x64.tar.gz", 99 | "8.0.412": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u412+9/bellsoft-jre8u412+9-solaris-x64.tar.gz", 100 | "8.0.422": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u422+6/bellsoft-jre8u422+6-solaris-x64.tar.gz", 101 | "8.0.432": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u432+7/bellsoft-jre8u432+7-solaris-x64.tar.gz", 102 | "8.0.442": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u442+7/bellsoft-jre8u442+7-solaris-x64.tar.gz", 103 | "8.0.452": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u452+11/bellsoft-jre8u452+11-solaris-x64.tar.gz", 104 | "8.0.462": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u462+11/bellsoft-jre8u462+11-solaris-x64.tar.gz", 105 | "8.0.472": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u472+11/bellsoft-jre8u472+11-solaris-x64.tar.gz", 106 | "11.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.8+10/bellsoft-jre11.0.8+10-solaris-x64.tar.gz", 107 | "11.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9+12/bellsoft-jre11.0.9+12-solaris-x64.tar.gz", 108 | "11.0.10": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.10+9/bellsoft-jre11.0.10+9-solaris-x64.tar.gz", 109 | "11.0.11": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jre11.0.11+9-solaris-x64.tar.gz", 110 | "11.0.12": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jre11.0.12+7-solaris-x64.tar.gz", 111 | "11.0.13": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jre11.0.13+8-solaris-x64.tar.gz", 112 | "11.0.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14+9/bellsoft-jre11.0.14+9-solaris-x64.tar.gz", 113 | "11.0.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15+10/bellsoft-jre11.0.15+10-solaris-x64.tar.gz", 114 | "11.0.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16+8/bellsoft-jre11.0.16+8-solaris-x64.tar.gz", 115 | "11.0.17": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.17+7/bellsoft-jre11.0.17+7-solaris-x64.tar.gz", 116 | "11.0.18": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.18+10/bellsoft-jre11.0.18+10-solaris-x64.tar.gz", 117 | "11.0.19": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.19+7/bellsoft-jre11.0.19+7-solaris-x64.tar.gz", 118 | "11.0.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20+8/bellsoft-jre11.0.20+8-solaris-x64.tar.gz", 119 | "11.0.21": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.21+10/bellsoft-jre11.0.21+10-solaris-x64.tar.gz", 120 | "11.0.22": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.22+12/bellsoft-jre11.0.22+12-solaris-x64.tar.gz", 121 | "11.0.23": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.23+12/bellsoft-jre11.0.23+12-solaris-x64.tar.gz", 122 | "11.0.24": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.24+9/bellsoft-jre11.0.24+9-solaris-x64.tar.gz", 123 | "11.0.25": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.25+11/bellsoft-jre11.0.25+11-solaris-x64.tar.gz", 124 | "11.0.26": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.26+9/bellsoft-jre11.0.26+9-solaris-x64.tar.gz", 125 | "11.0.27": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.27+9/bellsoft-jre11.0.27+9-solaris-x64.tar.gz", 126 | "11.0.28": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.28+12/bellsoft-jre11.0.28+12-solaris-x64.tar.gz", 127 | "11.0.29": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.29+12/bellsoft-jre11.0.29+12-solaris-x64.tar.gz", 128 | "11.1.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9.1+1/bellsoft-jre11.0.9.1+1-solaris-x64.tar.gz", 129 | "11.1.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14.1+1/bellsoft-jre11.0.14.1+1-solaris-x64.tar.gz", 130 | "11.1.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15.1+2/bellsoft-jre11.0.15.1+2-solaris-x64.tar.gz", 131 | "11.1.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16.1+1/bellsoft-jre11.0.16.1+1-solaris-x64.tar.gz", 132 | "11.1.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20.1+1/bellsoft-jre11.0.20.1+1-solaris-x64.tar.gz" 133 | }, 134 | "liberica-lite": { 135 | "8.0.302": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u302+8/bellsoft-jdk8u302+8-solaris-x64-lite.tar.gz", 136 | "8.0.312": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u312+7/bellsoft-jdk8u312+7-solaris-x64-lite.tar.gz", 137 | "8.0.322": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u322+6/bellsoft-jdk8u322+6-solaris-x64-lite.tar.gz", 138 | "8.0.332": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u332+9/bellsoft-jdk8u332+9-solaris-x64-lite.tar.gz", 139 | "8.0.333": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u333+2/bellsoft-jdk8u333+2-solaris-x64-lite.tar.gz", 140 | "8.0.342": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u342+7/bellsoft-jdk8u342+7-solaris-x64-lite.tar.gz", 141 | "8.0.345": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u345+1/bellsoft-jdk8u345+1-solaris-x64-lite.tar.gz", 142 | "8.0.352": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u352+8/bellsoft-jdk8u352+8-solaris-x64-lite.tar.gz", 143 | "8.0.362": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u362+9/bellsoft-jdk8u362+9-solaris-x64-lite.tar.gz", 144 | "8.0.372": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u372+7/bellsoft-jdk8u372+7-solaris-x64-lite.tar.gz", 145 | "8.0.382": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u382+6/bellsoft-jdk8u382+6-solaris-x64-lite.tar.gz", 146 | "8.0.392": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u392+9/bellsoft-jdk8u392+9-solaris-x64-lite.tar.gz", 147 | "8.0.402": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u402+7/bellsoft-jdk8u402+7-solaris-x64-lite.tar.gz", 148 | "8.0.412": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u412+9/bellsoft-jdk8u412+9-solaris-x64-lite.tar.gz", 149 | "8.0.422": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u422+6/bellsoft-jdk8u422+6-solaris-x64-lite.tar.gz", 150 | "8.0.432": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u432+7/bellsoft-jdk8u432+7-solaris-x64-lite.tar.gz", 151 | "8.0.442": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u442+7/bellsoft-jdk8u442+7-solaris-x64-lite.tar.gz", 152 | "8.0.452": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u452+11/bellsoft-jdk8u452+11-solaris-x64-lite.tar.gz", 153 | "8.0.462": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u462+11/bellsoft-jdk8u462+11-solaris-x64-lite.tar.gz", 154 | "8.0.472": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u472+11/bellsoft-jdk8u472+11-solaris-x64-lite.tar.gz", 155 | "11.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.2/bellsoft-jdk11.0.2-solaris-x64-lite.tar.gz", 156 | "11.0.3": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.3/bellsoft-jdk11.0.3-solaris-x64-lite.tar.gz", 157 | "11.0.4": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.4/bellsoft-jdk11.0.4-solaris-x64-lite.tar.gz", 158 | "11.0.5": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.5+11/bellsoft-jdk11.0.5+11-solaris-x64-lite.tar.gz", 159 | "11.0.6": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.6+10/bellsoft-jdk11.0.6+10-solaris-x64-lite.tar.gz", 160 | "11.0.7": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.7+10/bellsoft-jdk11.0.7+10-solaris-x64-lite.tar.gz", 161 | "11.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.8+10/bellsoft-jdk11.0.8+10-solaris-x64-lite.tar.gz", 162 | "11.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9+12/bellsoft-jdk11.0.9+12-solaris-x64-lite.tar.gz", 163 | "11.0.10": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.10+9/bellsoft-jdk11.0.10+9-solaris-x64-lite.tar.gz", 164 | "11.0.11": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jdk11.0.11+9-solaris-x64-lite.tar.gz", 165 | "11.0.12": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jdk11.0.12+7-solaris-x64-lite.tar.gz", 166 | "11.0.13": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jdk11.0.13+8-solaris-x64-lite.tar.gz", 167 | "11.0.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14+9/bellsoft-jdk11.0.14+9-solaris-x64-lite.tar.gz", 168 | "11.0.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15+10/bellsoft-jdk11.0.15+10-solaris-x64-lite.tar.gz", 169 | "11.0.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16+8/bellsoft-jdk11.0.16+8-solaris-x64-lite.tar.gz", 170 | "11.0.17": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.17+7/bellsoft-jdk11.0.17+7-solaris-x64-lite.tar.gz", 171 | "11.0.18": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.18+10/bellsoft-jdk11.0.18+10-solaris-x64-lite.tar.gz", 172 | "11.0.19": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.19+7/bellsoft-jdk11.0.19+7-solaris-x64-lite.tar.gz", 173 | "11.0.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20+8/bellsoft-jdk11.0.20+8-solaris-x64-lite.tar.gz", 174 | "11.0.21": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.21+10/bellsoft-jdk11.0.21+10-solaris-x64-lite.tar.gz", 175 | "11.0.22": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.22+12/bellsoft-jdk11.0.22+12-solaris-x64-lite.tar.gz", 176 | "11.0.23": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.23+12/bellsoft-jdk11.0.23+12-solaris-x64-lite.tar.gz", 177 | "11.0.24": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.24+9/bellsoft-jdk11.0.24+9-solaris-x64-lite.tar.gz", 178 | "11.0.25": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.25+11/bellsoft-jdk11.0.25+11-solaris-x64-lite.tar.gz", 179 | "11.0.26": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.26+9/bellsoft-jdk11.0.26+9-solaris-x64-lite.tar.gz", 180 | "11.0.27": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.27+9/bellsoft-jdk11.0.27+9-solaris-x64-lite.tar.gz", 181 | "11.0.28": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.28+12/bellsoft-jdk11.0.28+12-solaris-x64-lite.tar.gz", 182 | "11.0.29": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.29+12/bellsoft-jdk11.0.29+12-solaris-x64-lite.tar.gz", 183 | "11.1.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9.1+1/bellsoft-jdk11.0.9.1+1-solaris-x64-lite.tar.gz", 184 | "11.1.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14.1+1/bellsoft-jdk11.0.14.1+1-solaris-x64-lite.tar.gz", 185 | "11.1.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15.1+2/bellsoft-jdk11.0.15.1+2-solaris-x64-lite.tar.gz", 186 | "11.1.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16.1+1/bellsoft-jdk11.0.16.1+1-solaris-x64-lite.tar.gz", 187 | "11.1.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20.1+1/bellsoft-jdk11.0.20.1+1-solaris-x64-lite.tar.gz", 188 | "12.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/12/bellsoft-jdk12-solaris-x64-lite.tar.gz", 189 | "12.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/12.0.1/bellsoft-jdk12.0.1-solaris-x64-lite.tar.gz", 190 | "12.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/12.0.2/bellsoft-jdk12.0.2-solaris-x64-lite.tar.gz", 191 | "13.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/13.0.1+10/bellsoft-jdk13.0.1+10-solaris-x64-lite.tar.gz" 192 | } 193 | } -------------------------------------------------------------------------------- /indices/linux-ppc64.json: -------------------------------------------------------------------------------- 1 | { 2 | "liberica": { 3 | "8.0.232": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u232+10/bellsoft-jdk8u232+10-linux-ppc64le.tar.gz", 4 | "8.0.242": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u242+7/bellsoft-jdk8u242+7-linux-ppc64le.tar.gz", 5 | "8.0.252": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u252+9/bellsoft-jdk8u252+9-linux-ppc64le.tar.gz", 6 | "8.0.262": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u262+10/bellsoft-jdk8u262+10-linux-ppc64le.tar.gz", 7 | "8.0.265": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u265+1/bellsoft-jdk8u265+1-linux-ppc64le.tar.gz", 8 | "8.0.272": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u272+10/bellsoft-jdk8u272+10-linux-ppc64le.tar.gz", 9 | "8.0.275": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u275+1/bellsoft-jdk8u275+1-linux-ppc64le.tar.gz", 10 | "8.0.282": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u282+8/bellsoft-jdk8u282+8-linux-ppc64le.tar.gz", 11 | "8.0.292": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u292+10/bellsoft-jdk8u292+10-linux-ppc64le.tar.gz", 12 | "8.0.302": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u302+8/bellsoft-jdk8u302+8-linux-ppc64le.tar.gz", 13 | "8.0.312": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u312+7/bellsoft-jdk8u312+7-linux-ppc64le.tar.gz", 14 | "8.0.322": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u322+6/bellsoft-jdk8u322+6-linux-ppc64le.tar.gz", 15 | "8.0.332": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u332+9/bellsoft-jdk8u332+9-linux-ppc64le.tar.gz", 16 | "8.0.333": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u333+2/bellsoft-jdk8u333+2-linux-ppc64le.tar.gz", 17 | "8.0.342": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u342+7/bellsoft-jdk8u342+7-linux-ppc64le.tar.gz", 18 | "8.0.345": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u345+1/bellsoft-jdk8u345+1-linux-ppc64le.tar.gz", 19 | "8.0.352": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u352+8/bellsoft-jdk8u352+8-linux-ppc64le.tar.gz", 20 | "8.0.362": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u362+9/bellsoft-jdk8u362+9-linux-ppc64le.tar.gz", 21 | "8.0.372": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u372+7/bellsoft-jdk8u372+7-linux-ppc64le.tar.gz", 22 | "8.0.382": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u382+6/bellsoft-jdk8u382+6-linux-ppc64le.tar.gz", 23 | "8.0.392": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u392+9/bellsoft-jdk8u392+9-linux-ppc64le.tar.gz", 24 | "8.0.402": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u402+7/bellsoft-jdk8u402+7-linux-ppc64le.tar.gz", 25 | "8.0.412": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u412+9/bellsoft-jdk8u412+9-linux-ppc64le.tar.gz", 26 | "8.0.422": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u422+6/bellsoft-jdk8u422+6-linux-ppc64le.tar.gz", 27 | "8.0.432": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u432+7/bellsoft-jdk8u432+7-linux-ppc64le.tar.gz", 28 | "8.0.442": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u442+7/bellsoft-jdk8u442+7-linux-ppc64le.tar.gz", 29 | "8.0.452": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u452+11/bellsoft-jdk8u452+11-linux-ppc64le.tar.gz", 30 | "8.0.462": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u462+11/bellsoft-jdk8u462+11-linux-ppc64le.tar.gz", 31 | "8.0.472": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u472+11/bellsoft-jdk8u472+11-linux-ppc64le.tar.gz", 32 | "11.0.5": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.5+11/bellsoft-jdk11.0.5+11-linux-ppc64le.tar.gz", 33 | "11.0.6": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.6+10/bellsoft-jdk11.0.6+10-linux-ppc64le.tar.gz", 34 | "11.0.7": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.7+10/bellsoft-jdk11.0.7+10-linux-ppc64le.tar.gz", 35 | "11.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.8+10/bellsoft-jdk11.0.8+10-linux-ppc64le.tar.gz", 36 | "11.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9+12/bellsoft-jdk11.0.9+12-linux-ppc64le.tar.gz", 37 | "11.0.10": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.10+9/bellsoft-jdk11.0.10+9-linux-ppc64le.tar.gz", 38 | "11.0.11": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jdk11.0.11+9-linux-ppc64le.tar.gz", 39 | "11.0.12": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jdk11.0.12+7-linux-ppc64le.tar.gz", 40 | "11.0.13": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jdk11.0.13+8-linux-ppc64le.tar.gz", 41 | "11.0.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14+9/bellsoft-jdk11.0.14+9-linux-ppc64le.tar.gz", 42 | "11.0.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15+10/bellsoft-jdk11.0.15+10-linux-ppc64le.tar.gz", 43 | "11.0.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16+8/bellsoft-jdk11.0.16+8-linux-ppc64le.tar.gz", 44 | "11.0.17": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.17+7/bellsoft-jdk11.0.17+7-linux-ppc64le.tar.gz", 45 | "11.0.18": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.18+10/bellsoft-jdk11.0.18+10-linux-ppc64le.tar.gz", 46 | "11.0.19": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.19+7/bellsoft-jdk11.0.19+7-linux-ppc64le.tar.gz", 47 | "11.0.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20+8/bellsoft-jdk11.0.20+8-linux-ppc64le.tar.gz", 48 | "11.0.21": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.21+10/bellsoft-jdk11.0.21+10-linux-ppc64le.tar.gz", 49 | "11.0.22": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.22+12/bellsoft-jdk11.0.22+12-linux-ppc64le.tar.gz", 50 | "11.0.23": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.23+12/bellsoft-jdk11.0.23+12-linux-ppc64le.tar.gz", 51 | "11.0.24": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.24+9/bellsoft-jdk11.0.24+9-linux-ppc64le.tar.gz", 52 | "11.0.25": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.25+11/bellsoft-jdk11.0.25+11-linux-ppc64le.tar.gz", 53 | "11.0.26": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.26+9/bellsoft-jdk11.0.26+9-linux-ppc64le.tar.gz", 54 | "11.0.27": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.27+9/bellsoft-jdk11.0.27+9-linux-ppc64le.tar.gz", 55 | "11.0.28": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.28+12/bellsoft-jdk11.0.28+12-linux-ppc64le.tar.gz", 56 | "11.0.29": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.29+12/bellsoft-jdk11.0.29+12-linux-ppc64le.tar.gz", 57 | "11.1.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9.1+1/bellsoft-jdk11.0.9.1+1-linux-ppc64le.tar.gz", 58 | "11.1.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14.1+1/bellsoft-jdk11.0.14.1+1-linux-ppc64le.tar.gz", 59 | "11.1.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15.1+2/bellsoft-jdk11.0.15.1+2-linux-ppc64le.tar.gz", 60 | "11.1.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16.1+1/bellsoft-jdk11.0.16.1+1-linux-ppc64le.tar.gz", 61 | "11.1.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20.1+1/bellsoft-jdk11.0.20.1+1-linux-ppc64le.tar.gz", 62 | "12.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/12.0.2/bellsoft-jdk12.0.2-linux-ppc64le.tar.gz", 63 | "13.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/13/bellsoft-jdk13-linux-ppc64le.tar.gz", 64 | "13.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/13.0.1+10/bellsoft-jdk13.0.1+10-linux-ppc64le.tar.gz", 65 | "13.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/13.0.2+9/bellsoft-jdk13.0.2+9-linux-ppc64le.tar.gz", 66 | "14.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/14+36/bellsoft-jdk14+36-linux-ppc64le.tar.gz", 67 | "14.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/14.0.1+8/bellsoft-jdk14.0.1+8-linux-ppc64le.tar.gz", 68 | "14.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/14.0.2+13/bellsoft-jdk14.0.2+13-linux-ppc64le.tar.gz", 69 | "15.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/15+36/bellsoft-jdk15+36-linux-ppc64le.tar.gz", 70 | "15.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/15.0.1+9/bellsoft-jdk15.0.1+9-linux-ppc64le.tar.gz", 71 | "15.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/15.0.2+10/bellsoft-jdk15.0.2+10-linux-ppc64le.tar.gz", 72 | "16.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/16+36/bellsoft-jdk16+36-linux-ppc64le.tar.gz", 73 | "16.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/16.0.1+9/bellsoft-jdk16.0.1+9-linux-ppc64le.tar.gz", 74 | "16.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/16.0.2+7/bellsoft-jdk16.0.2+7-linux-ppc64le.tar.gz", 75 | "17.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/17+35/bellsoft-jdk17+35-linux-ppc64le.tar.gz", 76 | "17.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.1+12/bellsoft-jdk17.0.1+12-linux-ppc64le.tar.gz", 77 | "17.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.2+9/bellsoft-jdk17.0.2+9-linux-ppc64le.tar.gz", 78 | "17.0.3": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.3+7/bellsoft-jdk17.0.3+7-linux-ppc64le.tar.gz", 79 | "17.0.4": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.4+8/bellsoft-jdk17.0.4+8-linux-ppc64le.tar.gz", 80 | "17.0.5": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.5+8/bellsoft-jdk17.0.5+8-linux-ppc64le.tar.gz", 81 | "17.0.6": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.6+10/bellsoft-jdk17.0.6+10-linux-ppc64le.tar.gz", 82 | "17.0.7": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.7+7/bellsoft-jdk17.0.7+7-linux-ppc64le.tar.gz", 83 | "17.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.8+7/bellsoft-jdk17.0.8+7-linux-ppc64le.tar.gz", 84 | "17.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.9+11/bellsoft-jdk17.0.9+11-linux-ppc64le.tar.gz", 85 | "17.0.10": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.10+13/bellsoft-jdk17.0.10+13-linux-ppc64le.tar.gz", 86 | "17.0.11": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.11+12/bellsoft-jdk17.0.11+12-linux-ppc64le.tar.gz", 87 | "17.0.12": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.12+10/bellsoft-jdk17.0.12+10-linux-ppc64le.tar.gz", 88 | "17.0.13": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.13+12/bellsoft-jdk17.0.13+12-linux-ppc64le.tar.gz", 89 | "17.0.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.14+10/bellsoft-jdk17.0.14+10-linux-ppc64le.tar.gz", 90 | "17.0.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.15+10/bellsoft-jdk17.0.15+10-linux-ppc64le.tar.gz", 91 | "17.0.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.16+12/bellsoft-jdk17.0.16+12-linux-ppc64le.tar.gz", 92 | "17.0.17": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.17+15/bellsoft-jdk17.0.17+15-linux-ppc64le.tar.gz", 93 | "17.1.3": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.3.1+2/bellsoft-jdk17.0.3.1+2-linux-ppc64le.tar.gz", 94 | "17.1.4": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.4.1+1/bellsoft-jdk17.0.4.1+1-linux-ppc64le.tar.gz", 95 | "17.1.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.8.1+1/bellsoft-jdk17.0.8.1+1-linux-ppc64le.tar.gz", 96 | "18.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/18+37/bellsoft-jdk18+37-linux-ppc64le.tar.gz", 97 | "18.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.1+12/bellsoft-jdk18.0.1+12-linux-ppc64le.tar.gz", 98 | "18.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.2+10/bellsoft-jdk18.0.2+10-linux-ppc64le.tar.gz", 99 | "18.1.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.1.1+2/bellsoft-jdk18.0.1.1+2-linux-ppc64le.tar.gz", 100 | "18.1.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.2.1+1/bellsoft-jdk18.0.2.1+1-linux-ppc64le.tar.gz", 101 | "19.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/19+37/bellsoft-jdk19+37-linux-ppc64le.tar.gz", 102 | "19.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/19.0.1+11/bellsoft-jdk19.0.1+11-linux-ppc64le.tar.gz", 103 | "19.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/19.0.2+9/bellsoft-jdk19.0.2+9-linux-ppc64le.tar.gz", 104 | "20.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/20+37/bellsoft-jdk20+37-linux-ppc64le.tar.gz", 105 | "20.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/20.0.1+10/bellsoft-jdk20.0.1+10-linux-ppc64le.tar.gz", 106 | "20.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/20.0.2+10/bellsoft-jdk20.0.2+10-linux-ppc64le.tar.gz", 107 | "21.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/21+37/bellsoft-jdk21+37-linux-ppc64le.tar.gz", 108 | "21.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.1+12/bellsoft-jdk21.0.1+12-linux-ppc64le.tar.gz", 109 | "21.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.2+14/bellsoft-jdk21.0.2+14-linux-ppc64le.tar.gz", 110 | "21.0.3": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.3+12/bellsoft-jdk21.0.3+12-linux-ppc64le.tar.gz", 111 | "21.0.4": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.4+9/bellsoft-jdk21.0.4+9-linux-ppc64le.tar.gz", 112 | "21.0.5": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.5+11/bellsoft-jdk21.0.5+11-linux-ppc64le.tar.gz", 113 | "21.0.6": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.6+10/bellsoft-jdk21.0.6+10-linux-ppc64le.tar.gz", 114 | "21.0.7": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.7+9/bellsoft-jdk21.0.7+9-linux-ppc64le.tar.gz", 115 | "21.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.8+12/bellsoft-jdk21.0.8+12-linux-ppc64le.tar.gz", 116 | "21.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.9+15/bellsoft-jdk21.0.9+15-linux-ppc64le.tar.gz", 117 | "22.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/22+37/bellsoft-jdk22+37-linux-ppc64le.tar.gz", 118 | "22.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/22.0.1+12/bellsoft-jdk22.0.1+12-linux-ppc64le.tar.gz", 119 | "22.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/22.0.2+11/bellsoft-jdk22.0.2+11-linux-ppc64le.tar.gz", 120 | "23.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/23+38/bellsoft-jdk23+38-linux-ppc64le.tar.gz", 121 | "23.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/23.0.1+13/bellsoft-jdk23.0.1+13-linux-ppc64le.tar.gz", 122 | "23.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/23.0.2+9/bellsoft-jdk23.0.2+9-linux-ppc64le.tar.gz", 123 | "24.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/24+37/bellsoft-jdk24+37-linux-ppc64le.tar.gz", 124 | "24.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/24.0.1+11/bellsoft-jdk24.0.1+11-linux-ppc64le.tar.gz", 125 | "24.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/24.0.2+12/bellsoft-jdk24.0.2+12-linux-ppc64le.tar.gz", 126 | "25.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/25+37/bellsoft-jdk25+37-linux-ppc64le.tar.gz", 127 | "25.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/25.0.1+13/bellsoft-jdk25.0.1+13-linux-ppc64le.tar.gz" 128 | }, 129 | "liberica-jre": { 130 | "8.0.232": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u232+10/bellsoft-jre8u232+10-linux-ppc64le.tar.gz", 131 | "8.0.242": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u242+7/bellsoft-jre8u242+7-linux-ppc64le.tar.gz", 132 | "8.0.252": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u252+9/bellsoft-jre8u252+9-linux-ppc64le.tar.gz", 133 | "8.0.262": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u262+10/bellsoft-jre8u262+10-linux-ppc64le.tar.gz", 134 | "8.0.265": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u265+1/bellsoft-jre8u265+1-linux-ppc64le.tar.gz", 135 | "8.0.272": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u272+10/bellsoft-jre8u272+10-linux-ppc64le.tar.gz", 136 | "8.0.275": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u275+1/bellsoft-jre8u275+1-linux-ppc64le.tar.gz", 137 | "8.0.282": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u282+8/bellsoft-jre8u282+8-linux-ppc64le.tar.gz", 138 | "8.0.292": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u292+10/bellsoft-jre8u292+10-linux-ppc64le.tar.gz", 139 | "8.0.302": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u302+8/bellsoft-jre8u302+8-linux-ppc64le.tar.gz", 140 | "8.0.312": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u312+7/bellsoft-jre8u312+7-linux-ppc64le.tar.gz", 141 | "8.0.322": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u322+6/bellsoft-jre8u322+6-linux-ppc64le.tar.gz", 142 | "8.0.332": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u332+9/bellsoft-jre8u332+9-linux-ppc64le.tar.gz", 143 | "8.0.333": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u333+2/bellsoft-jre8u333+2-linux-ppc64le.tar.gz", 144 | "8.0.342": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u342+7/bellsoft-jre8u342+7-linux-ppc64le.tar.gz", 145 | "8.0.345": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u345+1/bellsoft-jre8u345+1-linux-ppc64le.tar.gz", 146 | "8.0.352": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u352+8/bellsoft-jre8u352+8-linux-ppc64le.tar.gz", 147 | "8.0.362": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u362+9/bellsoft-jre8u362+9-linux-ppc64le.tar.gz", 148 | "8.0.372": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u372+7/bellsoft-jre8u372+7-linux-ppc64le.tar.gz", 149 | "8.0.382": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u382+6/bellsoft-jre8u382+6-linux-ppc64le.tar.gz", 150 | "8.0.392": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u392+9/bellsoft-jre8u392+9-linux-ppc64le.tar.gz", 151 | "8.0.402": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u402+7/bellsoft-jre8u402+7-linux-ppc64le.tar.gz", 152 | "8.0.412": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u412+9/bellsoft-jre8u412+9-linux-ppc64le.tar.gz", 153 | "8.0.422": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u422+6/bellsoft-jre8u422+6-linux-ppc64le.tar.gz", 154 | "8.0.432": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u432+7/bellsoft-jre8u432+7-linux-ppc64le.tar.gz", 155 | "8.0.442": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u442+7/bellsoft-jre8u442+7-linux-ppc64le.tar.gz", 156 | "8.0.452": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u452+11/bellsoft-jre8u452+11-linux-ppc64le.tar.gz", 157 | "8.0.462": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u462+11/bellsoft-jre8u462+11-linux-ppc64le.tar.gz", 158 | "8.0.472": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u472+11/bellsoft-jre8u472+11-linux-ppc64le.tar.gz", 159 | "11.0.5": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.5+11/bellsoft-jre11.0.5+11-linux-ppc64le.tar.gz", 160 | "11.0.6": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.6+10/bellsoft-jre11.0.6+10-linux-ppc64le.tar.gz", 161 | "11.0.7": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.7+10/bellsoft-jre11.0.7+10-linux-ppc64le.tar.gz", 162 | "11.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.8+10/bellsoft-jre11.0.8+10-linux-ppc64le.tar.gz", 163 | "11.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9+12/bellsoft-jre11.0.9+12-linux-ppc64le.tar.gz", 164 | "11.0.10": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.10+9/bellsoft-jre11.0.10+9-linux-ppc64le.tar.gz", 165 | "11.0.11": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jre11.0.11+9-linux-ppc64le.tar.gz", 166 | "11.0.12": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jre11.0.12+7-linux-ppc64le.tar.gz", 167 | "11.0.13": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jre11.0.13+8-linux-ppc64le.tar.gz", 168 | "11.0.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14+9/bellsoft-jre11.0.14+9-linux-ppc64le.tar.gz", 169 | "11.0.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15+10/bellsoft-jre11.0.15+10-linux-ppc64le.tar.gz", 170 | "11.0.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16+8/bellsoft-jre11.0.16+8-linux-ppc64le.tar.gz", 171 | "11.0.17": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.17+7/bellsoft-jre11.0.17+7-linux-ppc64le.tar.gz", 172 | "11.0.18": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.18+10/bellsoft-jre11.0.18+10-linux-ppc64le.tar.gz", 173 | "11.0.19": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.19+7/bellsoft-jre11.0.19+7-linux-ppc64le.tar.gz", 174 | "11.0.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20+8/bellsoft-jre11.0.20+8-linux-ppc64le.tar.gz", 175 | "11.0.21": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.21+10/bellsoft-jre11.0.21+10-linux-ppc64le.tar.gz", 176 | "11.0.22": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.22+12/bellsoft-jre11.0.22+12-linux-ppc64le.tar.gz", 177 | "11.0.23": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.23+12/bellsoft-jre11.0.23+12-linux-ppc64le.tar.gz", 178 | "11.0.24": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.24+9/bellsoft-jre11.0.24+9-linux-ppc64le.tar.gz", 179 | "11.0.25": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.25+11/bellsoft-jre11.0.25+11-linux-ppc64le.tar.gz", 180 | "11.0.26": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.26+9/bellsoft-jre11.0.26+9-linux-ppc64le.tar.gz", 181 | "11.0.27": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.27+9/bellsoft-jre11.0.27+9-linux-ppc64le.tar.gz", 182 | "11.0.28": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.28+12/bellsoft-jre11.0.28+12-linux-ppc64le.tar.gz", 183 | "11.0.29": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.29+12/bellsoft-jre11.0.29+12-linux-ppc64le.tar.gz", 184 | "11.1.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9.1+1/bellsoft-jre11.0.9.1+1-linux-ppc64le.tar.gz", 185 | "11.1.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14.1+1/bellsoft-jre11.0.14.1+1-linux-ppc64le.tar.gz", 186 | "11.1.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15.1+2/bellsoft-jre11.0.15.1+2-linux-ppc64le.tar.gz", 187 | "11.1.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16.1+1/bellsoft-jre11.0.16.1+1-linux-ppc64le.tar.gz", 188 | "11.1.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20.1+1/bellsoft-jre11.0.20.1+1-linux-ppc64le.tar.gz", 189 | "13.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/13.0.1+10/bellsoft-jre13.0.1+10-linux-ppc64le.tar.gz", 190 | "13.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/13.0.2+9/bellsoft-jre13.0.2+9-linux-ppc64le.tar.gz", 191 | "14.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/14+36/bellsoft-jre14+36-linux-ppc64le.tar.gz", 192 | "14.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/14.0.1+8/bellsoft-jre14.0.1+8-linux-ppc64le.tar.gz", 193 | "14.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/14.0.2+13/bellsoft-jre14.0.2+13-linux-ppc64le.tar.gz", 194 | "15.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/15+36/bellsoft-jre15+36-linux-ppc64le.tar.gz", 195 | "15.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/15.0.1+9/bellsoft-jre15.0.1+9-linux-ppc64le.tar.gz", 196 | "15.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/15.0.2+10/bellsoft-jre15.0.2+10-linux-ppc64le.tar.gz", 197 | "16.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/16+36/bellsoft-jre16+36-linux-ppc64le.tar.gz", 198 | "16.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/16.0.1+9/bellsoft-jre16.0.1+9-linux-ppc64le.tar.gz", 199 | "16.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/16.0.2+7/bellsoft-jre16.0.2+7-linux-ppc64le.tar.gz", 200 | "17.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/17+35/bellsoft-jre17+35-linux-ppc64le.tar.gz", 201 | "17.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.1+12/bellsoft-jre17.0.1+12-linux-ppc64le.tar.gz", 202 | "17.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.2+9/bellsoft-jre17.0.2+9-linux-ppc64le.tar.gz", 203 | "17.0.3": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.3+7/bellsoft-jre17.0.3+7-linux-ppc64le.tar.gz", 204 | "17.0.4": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.4+8/bellsoft-jre17.0.4+8-linux-ppc64le.tar.gz", 205 | "17.0.5": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.5+8/bellsoft-jre17.0.5+8-linux-ppc64le.tar.gz", 206 | "17.0.6": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.6+10/bellsoft-jre17.0.6+10-linux-ppc64le.tar.gz", 207 | "17.0.7": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.7+7/bellsoft-jre17.0.7+7-linux-ppc64le.tar.gz", 208 | "17.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.8+7/bellsoft-jre17.0.8+7-linux-ppc64le.tar.gz", 209 | "17.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.9+11/bellsoft-jre17.0.9+11-linux-ppc64le.tar.gz", 210 | "17.0.10": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.10+13/bellsoft-jre17.0.10+13-linux-ppc64le.tar.gz", 211 | "17.0.11": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.11+12/bellsoft-jre17.0.11+12-linux-ppc64le.tar.gz", 212 | "17.0.12": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.12+10/bellsoft-jre17.0.12+10-linux-ppc64le.tar.gz", 213 | "17.0.13": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.13+12/bellsoft-jre17.0.13+12-linux-ppc64le.tar.gz", 214 | "17.0.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.14+10/bellsoft-jre17.0.14+10-linux-ppc64le.tar.gz", 215 | "17.0.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.15+10/bellsoft-jre17.0.15+10-linux-ppc64le.tar.gz", 216 | "17.0.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.16+12/bellsoft-jre17.0.16+12-linux-ppc64le.tar.gz", 217 | "17.0.17": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.17+15/bellsoft-jre17.0.17+15-linux-ppc64le.tar.gz", 218 | "17.1.3": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.3.1+2/bellsoft-jre17.0.3.1+2-linux-ppc64le.tar.gz", 219 | "17.1.4": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.4.1+1/bellsoft-jre17.0.4.1+1-linux-ppc64le.tar.gz", 220 | "17.1.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.8.1+1/bellsoft-jre17.0.8.1+1-linux-ppc64le.tar.gz", 221 | "18.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/18+37/bellsoft-jre18+37-linux-ppc64le.tar.gz", 222 | "18.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.1+12/bellsoft-jre18.0.1+12-linux-ppc64le.tar.gz", 223 | "18.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.2+10/bellsoft-jre18.0.2+10-linux-ppc64le.tar.gz", 224 | "18.1.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.1.1+2/bellsoft-jre18.0.1.1+2-linux-ppc64le.tar.gz", 225 | "18.1.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.2.1+1/bellsoft-jre18.0.2.1+1-linux-ppc64le.tar.gz", 226 | "19.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/19+37/bellsoft-jre19+37-linux-ppc64le.tar.gz", 227 | "19.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/19.0.1+11/bellsoft-jre19.0.1+11-linux-ppc64le.tar.gz", 228 | "19.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/19.0.2+9/bellsoft-jre19.0.2+9-linux-ppc64le.tar.gz", 229 | "20.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/20+37/bellsoft-jre20+37-linux-ppc64le.tar.gz", 230 | "20.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/20.0.1+10/bellsoft-jre20.0.1+10-linux-ppc64le.tar.gz", 231 | "20.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/20.0.2+10/bellsoft-jre20.0.2+10-linux-ppc64le.tar.gz", 232 | "21.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/21+37/bellsoft-jre21+37-linux-ppc64le.tar.gz", 233 | "21.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.1+12/bellsoft-jre21.0.1+12-linux-ppc64le.tar.gz", 234 | "21.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.2+14/bellsoft-jre21.0.2+14-linux-ppc64le.tar.gz", 235 | "21.0.3": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.3+12/bellsoft-jre21.0.3+12-linux-ppc64le.tar.gz", 236 | "21.0.4": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.4+9/bellsoft-jre21.0.4+9-linux-ppc64le.tar.gz", 237 | "21.0.5": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.5+11/bellsoft-jre21.0.5+11-linux-ppc64le.tar.gz", 238 | "21.0.6": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.6+10/bellsoft-jre21.0.6+10-linux-ppc64le.tar.gz", 239 | "21.0.7": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.7+9/bellsoft-jre21.0.7+9-linux-ppc64le.tar.gz", 240 | "21.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.8+12/bellsoft-jre21.0.8+12-linux-ppc64le.tar.gz", 241 | "21.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.9+15/bellsoft-jre21.0.9+15-linux-ppc64le.tar.gz", 242 | "22.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/22+37/bellsoft-jre22+37-linux-ppc64le.tar.gz", 243 | "22.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/22.0.1+12/bellsoft-jre22.0.1+12-linux-ppc64le.tar.gz", 244 | "22.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/22.0.2+11/bellsoft-jre22.0.2+11-linux-ppc64le.tar.gz", 245 | "23.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/23+38/bellsoft-jre23+38-linux-ppc64le.tar.gz", 246 | "23.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/23.0.1+13/bellsoft-jre23.0.1+13-linux-ppc64le.tar.gz", 247 | "23.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/23.0.2+9/bellsoft-jre23.0.2+9-linux-ppc64le.tar.gz", 248 | "24.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/24+37/bellsoft-jre24+37-linux-ppc64le.tar.gz", 249 | "24.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/24.0.1+11/bellsoft-jre24.0.1+11-linux-ppc64le.tar.gz", 250 | "24.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/24.0.2+12/bellsoft-jre24.0.2+12-linux-ppc64le.tar.gz", 251 | "25.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/25+37/bellsoft-jre25+37-linux-ppc64le.tar.gz", 252 | "25.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/25.0.1+13/bellsoft-jre25.0.1+13-linux-ppc64le.tar.gz" 253 | }, 254 | "liberica-lite": { 255 | "8.0.302": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u302+8/bellsoft-jdk8u302+8-linux-ppc64le-lite.tar.gz", 256 | "8.0.312": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u312+7/bellsoft-jdk8u312+7-linux-ppc64le-lite.tar.gz", 257 | "8.0.322": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u322+6/bellsoft-jdk8u322+6-linux-ppc64le-lite.tar.gz", 258 | "8.0.332": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u332+9/bellsoft-jdk8u332+9-linux-ppc64le-lite.tar.gz", 259 | "8.0.333": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u333+2/bellsoft-jdk8u333+2-linux-ppc64le-lite.tar.gz", 260 | "8.0.342": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u342+7/bellsoft-jdk8u342+7-linux-ppc64le-lite.tar.gz", 261 | "8.0.345": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u345+1/bellsoft-jdk8u345+1-linux-ppc64le-lite.tar.gz", 262 | "8.0.352": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u352+8/bellsoft-jdk8u352+8-linux-ppc64le-lite.tar.gz", 263 | "8.0.362": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u362+9/bellsoft-jdk8u362+9-linux-ppc64le-lite.tar.gz", 264 | "8.0.372": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u372+7/bellsoft-jdk8u372+7-linux-ppc64le-lite.tar.gz", 265 | "8.0.382": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u382+6/bellsoft-jdk8u382+6-linux-ppc64le-lite.tar.gz", 266 | "8.0.392": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u392+9/bellsoft-jdk8u392+9-linux-ppc64le-lite.tar.gz", 267 | "8.0.402": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u402+7/bellsoft-jdk8u402+7-linux-ppc64le-lite.tar.gz", 268 | "8.0.412": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u412+9/bellsoft-jdk8u412+9-linux-ppc64le-lite.tar.gz", 269 | "8.0.422": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u422+6/bellsoft-jdk8u422+6-linux-ppc64le-lite.tar.gz", 270 | "8.0.432": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u432+7/bellsoft-jdk8u432+7-linux-ppc64le-lite.tar.gz", 271 | "8.0.442": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u442+7/bellsoft-jdk8u442+7-linux-ppc64le-lite.tar.gz", 272 | "8.0.452": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u452+11/bellsoft-jdk8u452+11-linux-ppc64le-lite.tar.gz", 273 | "8.0.462": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u462+11/bellsoft-jdk8u462+11-linux-ppc64le-lite.tar.gz", 274 | "8.0.472": "tgz+https://github.com/bell-sw/Liberica/releases/download/8u472+11/bellsoft-jdk8u472+11-linux-ppc64le-lite.tar.gz", 275 | "11.0.5": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.5+11/bellsoft-jdk11.0.5+11-linux-ppc64le-lite.tar.gz", 276 | "11.0.6": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.6+10/bellsoft-jdk11.0.6+10-linux-ppc64le-lite.tar.gz", 277 | "11.0.7": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.7+10/bellsoft-jdk11.0.7+10-linux-ppc64le-lite.tar.gz", 278 | "11.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.8+10/bellsoft-jdk11.0.8+10-linux-ppc64le-lite.tar.gz", 279 | "11.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9+12/bellsoft-jdk11.0.9+12-linux-ppc64le-lite.tar.gz", 280 | "11.0.10": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.10+9/bellsoft-jdk11.0.10+9-linux-ppc64le-lite.tar.gz", 281 | "11.0.11": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jdk11.0.11+9-linux-ppc64le-lite.tar.gz", 282 | "11.0.12": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jdk11.0.12+7-linux-ppc64le-lite.tar.gz", 283 | "11.0.13": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jdk11.0.13+8-linux-ppc64le-lite.tar.gz", 284 | "11.0.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14+9/bellsoft-jdk11.0.14+9-linux-ppc64le-lite.tar.gz", 285 | "11.0.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15+10/bellsoft-jdk11.0.15+10-linux-ppc64le-lite.tar.gz", 286 | "11.0.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16+8/bellsoft-jdk11.0.16+8-linux-ppc64le-lite.tar.gz", 287 | "11.0.17": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.17+7/bellsoft-jdk11.0.17+7-linux-ppc64le-lite.tar.gz", 288 | "11.0.18": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.18+10/bellsoft-jdk11.0.18+10-linux-ppc64le-lite.tar.gz", 289 | "11.0.19": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.19+7/bellsoft-jdk11.0.19+7-linux-ppc64le-lite.tar.gz", 290 | "11.0.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20+8/bellsoft-jdk11.0.20+8-linux-ppc64le-lite.tar.gz", 291 | "11.0.21": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.21+10/bellsoft-jdk11.0.21+10-linux-ppc64le-lite.tar.gz", 292 | "11.0.22": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.22+12/bellsoft-jdk11.0.22+12-linux-ppc64le-lite.tar.gz", 293 | "11.0.23": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.23+12/bellsoft-jdk11.0.23+12-linux-ppc64le-lite.tar.gz", 294 | "11.0.24": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.24+9/bellsoft-jdk11.0.24+9-linux-ppc64le-lite.tar.gz", 295 | "11.0.25": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.25+11/bellsoft-jdk11.0.25+11-linux-ppc64le-lite.tar.gz", 296 | "11.0.26": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.26+9/bellsoft-jdk11.0.26+9-linux-ppc64le-lite.tar.gz", 297 | "11.0.27": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.27+9/bellsoft-jdk11.0.27+9-linux-ppc64le-lite.tar.gz", 298 | "11.0.28": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.28+12/bellsoft-jdk11.0.28+12-linux-ppc64le-lite.tar.gz", 299 | "11.0.29": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.29+12/bellsoft-jdk11.0.29+12-linux-ppc64le-lite.tar.gz", 300 | "11.1.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.9.1+1/bellsoft-jdk11.0.9.1+1-linux-ppc64le-lite.tar.gz", 301 | "11.1.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.14.1+1/bellsoft-jdk11.0.14.1+1-linux-ppc64le-lite.tar.gz", 302 | "11.1.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.15.1+2/bellsoft-jdk11.0.15.1+2-linux-ppc64le-lite.tar.gz", 303 | "11.1.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.16.1+1/bellsoft-jdk11.0.16.1+1-linux-ppc64le-lite.tar.gz", 304 | "11.1.20": "tgz+https://github.com/bell-sw/Liberica/releases/download/11.0.20.1+1/bellsoft-jdk11.0.20.1+1-linux-ppc64le-lite.tar.gz", 305 | "12.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/12.0.2/bellsoft-jdk12.0.2-linux-ppc64le-lite.tar.gz", 306 | "13.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/13/bellsoft-jdk13-linux-ppc64le-lite.tar.gz", 307 | "13.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/13.0.1+10/bellsoft-jdk13.0.1+10-linux-ppc64le-lite.tar.gz", 308 | "13.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/13.0.2+9/bellsoft-jdk13.0.2+9-linux-ppc64le-lite.tar.gz", 309 | "14.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/14+36/bellsoft-jdk14+36-linux-ppc64le-lite.tar.gz", 310 | "14.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/14.0.1+8/bellsoft-jdk14.0.1+8-linux-ppc64le-lite.tar.gz", 311 | "14.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/14.0.2+13/bellsoft-jdk14.0.2+13-linux-ppc64le-lite.tar.gz", 312 | "15.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/15+36/bellsoft-jdk15+36-linux-ppc64le-lite.tar.gz", 313 | "15.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/15.0.1+9/bellsoft-jdk15.0.1+9-linux-ppc64le-lite.tar.gz", 314 | "15.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/15.0.2+10/bellsoft-jdk15.0.2+10-linux-ppc64le-lite.tar.gz", 315 | "16.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/16+36/bellsoft-jdk16+36-linux-ppc64le-lite.tar.gz", 316 | "16.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/16.0.1+9/bellsoft-jdk16.0.1+9-linux-ppc64le-lite.tar.gz", 317 | "16.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/16.0.2+7/bellsoft-jdk16.0.2+7-linux-ppc64le-lite.tar.gz", 318 | "17.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/17+35/bellsoft-jdk17+35-linux-ppc64le-lite.tar.gz", 319 | "17.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.1+12/bellsoft-jdk17.0.1+12-linux-ppc64le-lite.tar.gz", 320 | "17.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.2+9/bellsoft-jdk17.0.2+9-linux-ppc64le-lite.tar.gz", 321 | "17.0.3": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.3+7/bellsoft-jdk17.0.3+7-linux-ppc64le-lite.tar.gz", 322 | "17.0.4": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.4+8/bellsoft-jdk17.0.4+8-linux-ppc64le-lite.tar.gz", 323 | "17.0.5": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.5+8/bellsoft-jdk17.0.5+8-linux-ppc64le-lite.tar.gz", 324 | "17.0.6": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.6+10/bellsoft-jdk17.0.6+10-linux-ppc64le-lite.tar.gz", 325 | "17.0.7": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.7+7/bellsoft-jdk17.0.7+7-linux-ppc64le-lite.tar.gz", 326 | "17.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.8+7/bellsoft-jdk17.0.8+7-linux-ppc64le-lite.tar.gz", 327 | "17.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.9+11/bellsoft-jdk17.0.9+11-linux-ppc64le-lite.tar.gz", 328 | "17.0.10": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.10+13/bellsoft-jdk17.0.10+13-linux-ppc64le-lite.tar.gz", 329 | "17.0.11": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.11+12/bellsoft-jdk17.0.11+12-linux-ppc64le-lite.tar.gz", 330 | "17.0.12": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.12+10/bellsoft-jdk17.0.12+10-linux-ppc64le-lite.tar.gz", 331 | "17.0.13": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.13+12/bellsoft-jdk17.0.13+12-linux-ppc64le-lite.tar.gz", 332 | "17.0.14": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.14+10/bellsoft-jdk17.0.14+10-linux-ppc64le-lite.tar.gz", 333 | "17.0.15": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.15+10/bellsoft-jdk17.0.15+10-linux-ppc64le-lite.tar.gz", 334 | "17.0.16": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.16+12/bellsoft-jdk17.0.16+12-linux-ppc64le-lite.tar.gz", 335 | "17.0.17": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.17+15/bellsoft-jdk17.0.17+15-linux-ppc64le-lite.tar.gz", 336 | "17.1.3": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.3.1+2/bellsoft-jdk17.0.3.1+2-linux-ppc64le-lite.tar.gz", 337 | "17.1.4": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.4.1+1/bellsoft-jdk17.0.4.1+1-linux-ppc64le-lite.tar.gz", 338 | "17.1.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/17.0.8.1+1/bellsoft-jdk17.0.8.1+1-linux-ppc64le-lite.tar.gz", 339 | "18.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/18+37/bellsoft-jdk18+37-linux-ppc64le-lite.tar.gz", 340 | "18.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.1+12/bellsoft-jdk18.0.1+12-linux-ppc64le-lite.tar.gz", 341 | "18.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.2+10/bellsoft-jdk18.0.2+10-linux-ppc64le-lite.tar.gz", 342 | "18.1.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.1.1+2/bellsoft-jdk18.0.1.1+2-linux-ppc64le-lite.tar.gz", 343 | "18.1.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/18.0.2.1+1/bellsoft-jdk18.0.2.1+1-linux-ppc64le-lite.tar.gz", 344 | "19.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/19+37/bellsoft-jdk19+37-linux-ppc64le-lite.tar.gz", 345 | "19.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/19.0.1+11/bellsoft-jdk19.0.1+11-linux-ppc64le-lite.tar.gz", 346 | "19.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/19.0.2+9/bellsoft-jdk19.0.2+9-linux-ppc64le-lite.tar.gz", 347 | "20.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/20+37/bellsoft-jdk20+37-linux-ppc64le-lite.tar.gz", 348 | "20.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/20.0.1+10/bellsoft-jdk20.0.1+10-linux-ppc64le-lite.tar.gz", 349 | "20.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/20.0.2+10/bellsoft-jdk20.0.2+10-linux-ppc64le-lite.tar.gz", 350 | "21.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/21+37/bellsoft-jdk21+37-linux-ppc64le-lite.tar.gz", 351 | "21.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.1+12/bellsoft-jdk21.0.1+12-linux-ppc64le-lite.tar.gz", 352 | "21.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.2+14/bellsoft-jdk21.0.2+14-linux-ppc64le-lite.tar.gz", 353 | "21.0.3": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.3+12/bellsoft-jdk21.0.3+12-linux-ppc64le-lite.tar.gz", 354 | "21.0.4": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.4+9/bellsoft-jdk21.0.4+9-linux-ppc64le-lite.tar.gz", 355 | "21.0.5": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.5+11/bellsoft-jdk21.0.5+11-linux-ppc64le-lite.tar.gz", 356 | "21.0.6": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.6+10/bellsoft-jdk21.0.6+10-linux-ppc64le-lite.tar.gz", 357 | "21.0.7": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.7+9/bellsoft-jdk21.0.7+9-linux-ppc64le-lite.tar.gz", 358 | "21.0.8": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.8+12/bellsoft-jdk21.0.8+12-linux-ppc64le-lite.tar.gz", 359 | "21.0.9": "tgz+https://github.com/bell-sw/Liberica/releases/download/21.0.9+15/bellsoft-jdk21.0.9+15-linux-ppc64le-lite.tar.gz", 360 | "22.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/22+37/bellsoft-jdk22+37-linux-ppc64le-lite.tar.gz", 361 | "22.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/22.0.1+12/bellsoft-jdk22.0.1+12-linux-ppc64le-lite.tar.gz", 362 | "22.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/22.0.2+11/bellsoft-jdk22.0.2+11-linux-ppc64le-lite.tar.gz", 363 | "23.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/23+38/bellsoft-jdk23+38-linux-ppc64le-lite.tar.gz", 364 | "23.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/23.0.1+13/bellsoft-jdk23.0.1+13-linux-ppc64le-lite.tar.gz", 365 | "23.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/23.0.2+9/bellsoft-jdk23.0.2+9-linux-ppc64le-lite.tar.gz", 366 | "24.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/24+37/bellsoft-jdk24+37-linux-ppc64le-lite.tar.gz", 367 | "24.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/24.0.1+11/bellsoft-jdk24.0.1+11-linux-ppc64le-lite.tar.gz", 368 | "24.0.2": "tgz+https://github.com/bell-sw/Liberica/releases/download/24.0.2+12/bellsoft-jdk24.0.2+12-linux-ppc64le-lite.tar.gz", 369 | "25.0.0": "tgz+https://github.com/bell-sw/Liberica/releases/download/25+37/bellsoft-jdk25+37-linux-ppc64le-lite.tar.gz", 370 | "25.0.1": "tgz+https://github.com/bell-sw/Liberica/releases/download/25.0.1+13/bellsoft-jdk25.0.1+13-linux-ppc64le-lite.tar.gz" 371 | }, 372 | "zulu": { 373 | "8.0.232": "tgz+https://cdn.azul.com/zulu/bin/zulu8.42.0.196-ca-hl-jdk1.8.0_232-linux_ppc64.tar.gz", 374 | "8.0.242": "tgz+https://cdn.azul.com/zulu/bin/zulu8.44.0.213-ca-hl-jdk1.8.0_242-linux_ppc64.tar.gz", 375 | "8.0.252": "tgz+https://cdn.azul.com/zulu/bin/zulu8.46.0.225-ca-hl-jdk8.0.252-linux_ppc64.tar.gz", 376 | "8.0.265": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.48.3.247-ca-hl-jdk8.0.265-linux_ppc64.tar.gz", 377 | "8.0.272": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.50.0.261-ca-hl-jdk8.0.272-linux_ppc64.tar.gz", 378 | "8.0.275": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.50.51.263-ca-hl-jdk8.0.275-linux_ppc64.tar.gz", 379 | "8.0.282": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.52.0.23-ca-hl-embvm-jdk8.0.282-linux_ppc64.tar.gz", 380 | "8.0.292": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.54.0.21-ca-hl-embvm-jdk8.0.292-linux_ppc64.tar.gz", 381 | "8.0.302": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.56.0.21-ca-hl-embvm-jdk8.0.302-linux_ppc64.tar.gz", 382 | "8.0.312": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.58.0.13-ca-hl-jdk8.0.312-linux_ppc64.tar.gz", 383 | "8.0.322": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.60.0.21-ca-hl-jdk8.0.322-linux_ppc64.tar.gz", 384 | "8.0.332": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.62.0.19-ca-hl-jdk8.0.332-linux_ppc64.tar.gz", 385 | "8.0.342": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.64.0.15-ca-hl-jdk8.0.342-linux_ppc64.tar.gz", 386 | "8.0.352": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.66.0.15-ca-hl-jdk8.0.352-linux_ppc64.tar.gz", 387 | "8.0.362": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.68.0.21-ca-hl-jdk8.0.362-linux_ppc64.tar.gz", 388 | "8.0.372": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.70.0.23-ca-hl-jdk8.0.372-linux_ppc64.tar.gz", 389 | "8.0.382": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.72.0.17-ca-hl-jdk8.0.382-linux_ppc64.tar.gz", 390 | "8.0.392": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.74.0.17-ca-hl-jdk8.0.392-linux_ppc64.tar.gz", 391 | "8.0.402": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.76.0.17-ca-hl-jdk8.0.402-linux_ppc64.tar.gz", 392 | "8.0.412": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.78.0.19-ca-hl-jdk8.0.412-linux_ppc64.tar.gz", 393 | "8.0.422": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.80.0.17-ca-hl-jdk8.0.422-linux_ppc64.tar.gz", 394 | "8.0.432": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.82.0.23-ca-hl-jdk8.0.432-linux_ppc64.tar.gz", 395 | "8.0.442": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.84.0.15-ca-hl-jdk8.0.442-linux_ppc64.tar.gz", 396 | "8.0.452": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.86.0.25-ca-hl-jdk8.0.452-linux_ppc64.tar.gz", 397 | "8.0.462": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.88.0.19-ca-hl-jdk8.0.462-linux_ppc64.tar.gz" 398 | }, 399 | "zulu-jre": { 400 | "8.0.382": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.72.0.17-ca-hl-jre8.0.382-linux_ppc64.tar.gz", 401 | "8.0.392": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.74.0.17-ca-hl-jre8.0.392-linux_ppc64.tar.gz", 402 | "8.0.402": "tgz+https://cdn.azul.com/zulu-embedded/bin/zulu8.76.0.17-ca-cp1-jre8.0.402-linux_ppc64.tar.gz" 403 | } 404 | } -------------------------------------------------------------------------------- /indices/windows-arm64.json: -------------------------------------------------------------------------------- 1 | { 2 | "adoptium": { 3 | "21.0.5": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jdk_aarch64_windows_hotspot_21.0.5_11.zip", 4 | "21.0.6": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6%2B7/OpenJDK21U-jdk_aarch64_windows_hotspot_21.0.6_7.zip", 5 | "21.0.7": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.7%2B6/OpenJDK21U-jdk_aarch64_windows_hotspot_21.0.7_6.zip", 6 | "21.0.8": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.8%2B9/OpenJDK21U-jdk_aarch64_windows_hotspot_21.0.8_9.zip", 7 | "21.0.9": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9%2B10/OpenJDK21U-jdk_aarch64_windows_hotspot_21.0.9_10.zip", 8 | "23.0.1": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_aarch64_windows_hotspot_23.0.1_11.zip", 9 | "23.0.2": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-jdk_aarch64_windows_hotspot_23.0.2_7.zip" 10 | }, 11 | "adoptium-debugimage": { 12 | "21.0.5": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-debugimage_aarch64_windows_hotspot_21.0.5_11.zip", 13 | "21.0.6": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6%2B7/OpenJDK21U-debugimage_aarch64_windows_hotspot_21.0.6_7.zip", 14 | "21.0.7": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.7%2B6/OpenJDK21U-debugimage_aarch64_windows_hotspot_21.0.7_6.zip", 15 | "21.0.8": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.8%2B9/OpenJDK21U-debugimage_aarch64_windows_hotspot_21.0.8_9.zip", 16 | "21.0.9": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9%2B10/OpenJDK21U-debugimage_aarch64_windows_hotspot_21.0.9_10.zip", 17 | "23.0.1": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-debugimage_aarch64_windows_hotspot_23.0.1_11.zip", 18 | "23.0.2": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-debugimage_aarch64_windows_hotspot_23.0.2_7.zip" 19 | }, 20 | "adoptium-jre": { 21 | "21.0.5": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jre_aarch64_windows_hotspot_21.0.5_11.zip", 22 | "21.0.6": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6%2B7/OpenJDK21U-jre_aarch64_windows_hotspot_21.0.6_7.zip", 23 | "21.0.7": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.7%2B6/OpenJDK21U-jre_aarch64_windows_hotspot_21.0.7_6.zip", 24 | "21.0.8": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.8%2B9/OpenJDK21U-jre_aarch64_windows_hotspot_21.0.8_9.zip", 25 | "21.0.9": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9%2B10/OpenJDK21U-jre_aarch64_windows_hotspot_21.0.9_10.zip", 26 | "23.0.1": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jre_aarch64_windows_hotspot_23.0.1_11.zip", 27 | "23.0.2": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-jre_aarch64_windows_hotspot_23.0.2_7.zip" 28 | }, 29 | "adoptium-testimage": { 30 | "21.0.5": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-testimage_aarch64_windows_hotspot_21.0.5_11.zip", 31 | "21.0.6": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6%2B7/OpenJDK21U-testimage_aarch64_windows_hotspot_21.0.6_7.zip", 32 | "21.0.7": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.7%2B6/OpenJDK21U-testimage_aarch64_windows_hotspot_21.0.7_6.zip", 33 | "21.0.8": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.8%2B9/OpenJDK21U-testimage_aarch64_windows_hotspot_21.0.8_9.zip", 34 | "21.0.9": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9%2B10/OpenJDK21U-testimage_aarch64_windows_hotspot_21.0.9_10.zip", 35 | "23.0.1": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-testimage_aarch64_windows_hotspot_23.0.1_11.zip", 36 | "23.0.2": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-testimage_aarch64_windows_hotspot_23.0.2_7.zip" 37 | }, 38 | "liberica": { 39 | "11.0.11": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jdk11.0.11+9-windows-aarch64.zip", 40 | "11.0.12": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jdk11.0.12+7-windows-aarch64.zip", 41 | "11.0.13": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jdk11.0.13+8-windows-aarch64.zip", 42 | "11.0.14": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.14+9/bellsoft-jdk11.0.14+9-windows-aarch64.zip", 43 | "11.0.15": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.15+10/bellsoft-jdk11.0.15+10-windows-aarch64.zip", 44 | "11.0.16": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.16+8/bellsoft-jdk11.0.16+8-windows-aarch64.zip", 45 | "11.0.17": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.17+7/bellsoft-jdk11.0.17+7-windows-aarch64.zip", 46 | "11.0.18": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.18+10/bellsoft-jdk11.0.18+10-windows-aarch64.zip", 47 | "11.0.19": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.19+7/bellsoft-jdk11.0.19+7-windows-aarch64.zip", 48 | "11.0.20": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.20+8/bellsoft-jdk11.0.20+8-windows-aarch64.zip", 49 | "11.0.21": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.21+10/bellsoft-jdk11.0.21+10-windows-aarch64.zip", 50 | "11.0.22": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.22+12/bellsoft-jdk11.0.22+12-windows-aarch64.zip", 51 | "11.0.23": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.23+12/bellsoft-jdk11.0.23+12-windows-aarch64.zip", 52 | "11.0.24": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.24+9/bellsoft-jdk11.0.24+9-windows-aarch64.zip", 53 | "11.0.25": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.25+11/bellsoft-jdk11.0.25+11-windows-aarch64.zip", 54 | "11.0.26": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.26+9/bellsoft-jdk11.0.26+9-windows-aarch64.zip", 55 | "11.0.27": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.27+9/bellsoft-jdk11.0.27+9-windows-aarch64.zip", 56 | "11.0.28": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.28+12/bellsoft-jdk11.0.28+12-windows-aarch64.zip", 57 | "11.0.29": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.29+12/bellsoft-jdk11.0.29+12-windows-aarch64.zip", 58 | "11.1.14": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.14.1+1/bellsoft-jdk11.0.14.1+1-windows-aarch64.zip", 59 | "11.1.15": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.15.1+2/bellsoft-jdk11.0.15.1+2-windows-aarch64.zip", 60 | "11.1.16": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.16.1+1/bellsoft-jdk11.0.16.1+1-windows-aarch64.zip", 61 | "11.1.20": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.20.1+1/bellsoft-jdk11.0.20.1+1-windows-aarch64.zip", 62 | "16.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/16.0.1+9/bellsoft-jdk16.0.1+9-windows-aarch64.zip", 63 | "16.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/16.0.2+7/bellsoft-jdk16.0.2+7-windows-aarch64.zip", 64 | "17.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/17+35/bellsoft-jdk17+35-windows-aarch64.zip", 65 | "17.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.1+12/bellsoft-jdk17.0.1+12-windows-aarch64.zip", 66 | "17.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.2+9/bellsoft-jdk17.0.2+9-windows-aarch64.zip", 67 | "17.0.3": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.3+7/bellsoft-jdk17.0.3+7-windows-aarch64.zip", 68 | "17.0.4": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.4+8/bellsoft-jdk17.0.4+8-windows-aarch64.zip", 69 | "17.0.5": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.5+8/bellsoft-jdk17.0.5+8-windows-aarch64.zip", 70 | "17.0.6": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.6+10/bellsoft-jdk17.0.6+10-windows-aarch64.zip", 71 | "17.0.7": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.7+7/bellsoft-jdk17.0.7+7-windows-aarch64.zip", 72 | "17.0.8": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.8+7/bellsoft-jdk17.0.8+7-windows-aarch64.zip", 73 | "17.0.9": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.9+11/bellsoft-jdk17.0.9+11-windows-aarch64.zip", 74 | "17.0.10": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.10+13/bellsoft-jdk17.0.10+13-windows-aarch64.zip", 75 | "17.0.11": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.11+12/bellsoft-jdk17.0.11+12-windows-aarch64.zip", 76 | "17.0.12": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.12+10/bellsoft-jdk17.0.12+10-windows-aarch64.zip", 77 | "17.0.13": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.13+12/bellsoft-jdk17.0.13+12-windows-aarch64.zip", 78 | "17.0.14": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.14+10/bellsoft-jdk17.0.14+10-windows-aarch64.zip", 79 | "17.0.15": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.15+10/bellsoft-jdk17.0.15+10-windows-aarch64.zip", 80 | "17.0.16": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.16+12/bellsoft-jdk17.0.16+12-windows-aarch64.zip", 81 | "17.0.17": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.17+15/bellsoft-jdk17.0.17+15-windows-aarch64.zip", 82 | "17.1.3": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.3.1+2/bellsoft-jdk17.0.3.1+2-windows-aarch64.zip", 83 | "17.1.4": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.4.1+1/bellsoft-jdk17.0.4.1+1-windows-aarch64.zip", 84 | "17.1.8": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.8.1+1/bellsoft-jdk17.0.8.1+1-windows-aarch64.zip", 85 | "18.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/18+37/bellsoft-jdk18+37-windows-aarch64.zip", 86 | "18.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.1+12/bellsoft-jdk18.0.1+12-windows-aarch64.zip", 87 | "18.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.2+10/bellsoft-jdk18.0.2+10-windows-aarch64.zip", 88 | "18.1.1": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.1.1+2/bellsoft-jdk18.0.1.1+2-windows-aarch64.zip", 89 | "18.1.2": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.2.1+1/bellsoft-jdk18.0.2.1+1-windows-aarch64.zip", 90 | "19.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/19+37/bellsoft-jdk19+37-windows-aarch64.zip", 91 | "19.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/19.0.1+11/bellsoft-jdk19.0.1+11-windows-aarch64.zip", 92 | "19.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/19.0.2+9/bellsoft-jdk19.0.2+9-windows-aarch64.zip", 93 | "20.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/20+37/bellsoft-jdk20+37-windows-aarch64.zip", 94 | "20.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/20.0.1+10/bellsoft-jdk20.0.1+10-windows-aarch64.zip", 95 | "20.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/20.0.2+10/bellsoft-jdk20.0.2+10-windows-aarch64.zip", 96 | "21.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/21+37/bellsoft-jdk21+37-windows-aarch64.zip", 97 | "21.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.1+12/bellsoft-jdk21.0.1+12-windows-aarch64.zip", 98 | "21.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.2+14/bellsoft-jdk21.0.2+14-windows-aarch64.zip", 99 | "21.0.3": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.3+12/bellsoft-jdk21.0.3+12-windows-aarch64.zip", 100 | "21.0.4": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.4+9/bellsoft-jdk21.0.4+9-windows-aarch64.zip", 101 | "21.0.5": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.5+11/bellsoft-jdk21.0.5+11-windows-aarch64.zip", 102 | "21.0.6": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.6+10/bellsoft-jdk21.0.6+10-windows-aarch64.zip", 103 | "21.0.7": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.7+9/bellsoft-jdk21.0.7+9-windows-aarch64.zip", 104 | "21.0.8": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.8+12/bellsoft-jdk21.0.8+12-windows-aarch64.zip", 105 | "21.0.9": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.9+15/bellsoft-jdk21.0.9+15-windows-aarch64.zip", 106 | "22.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/22+37/bellsoft-jdk22+37-windows-aarch64.zip", 107 | "22.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/22.0.1+12/bellsoft-jdk22.0.1+12-windows-aarch64.zip", 108 | "22.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/22.0.2+11/bellsoft-jdk22.0.2+11-windows-aarch64.zip", 109 | "23.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/23+38/bellsoft-jdk23+38-windows-aarch64.zip", 110 | "23.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/23.0.1+13/bellsoft-jdk23.0.1+13-windows-aarch64.zip", 111 | "23.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/23.0.2+9/bellsoft-jdk23.0.2+9-windows-aarch64.zip", 112 | "24.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/24+37/bellsoft-jdk24+37-windows-aarch64.zip", 113 | "24.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/24.0.1+11/bellsoft-jdk24.0.1+11-windows-aarch64.zip", 114 | "24.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/24.0.2+12/bellsoft-jdk24.0.2+12-windows-aarch64.zip", 115 | "25.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/25+37/bellsoft-jdk25+37-windows-aarch64.zip", 116 | "25.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/25.0.1+13/bellsoft-jdk25.0.1+13-windows-aarch64.zip" 117 | }, 118 | "liberica-full": { 119 | "11.0.11": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jdk11.0.11+9-windows-aarch64-full.zip", 120 | "11.0.12": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jdk11.0.12+7-windows-aarch64-full.zip", 121 | "11.0.13": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jdk11.0.13+8-windows-aarch64-full.zip", 122 | "11.0.14": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.14+9/bellsoft-jdk11.0.14+9-windows-aarch64-full.zip", 123 | "11.0.15": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.15+10/bellsoft-jdk11.0.15+10-windows-aarch64-full.zip", 124 | "11.0.16": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.16+8/bellsoft-jdk11.0.16+8-windows-aarch64-full.zip", 125 | "11.0.17": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.17+7/bellsoft-jdk11.0.17+7-windows-aarch64-full.zip", 126 | "11.0.18": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.18+10/bellsoft-jdk11.0.18+10-windows-aarch64-full.zip", 127 | "11.0.19": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.19+7/bellsoft-jdk11.0.19+7-windows-aarch64-full.zip", 128 | "11.0.20": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.20+8/bellsoft-jdk11.0.20+8-windows-aarch64-full.zip", 129 | "11.0.21": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.21+10/bellsoft-jdk11.0.21+10-windows-aarch64-full.zip", 130 | "11.0.22": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.22+12/bellsoft-jdk11.0.22+12-windows-aarch64-full.zip", 131 | "11.0.23": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.23+12/bellsoft-jdk11.0.23+12-windows-aarch64-full.zip", 132 | "11.0.24": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.24+9/bellsoft-jdk11.0.24+9-windows-aarch64-full.zip", 133 | "11.0.25": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.25+11/bellsoft-jdk11.0.25+11-windows-aarch64-full.zip", 134 | "11.0.26": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.26+9/bellsoft-jdk11.0.26+9-windows-aarch64-full.zip", 135 | "11.0.27": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.27+9/bellsoft-jdk11.0.27+9-windows-aarch64-full.zip", 136 | "11.0.28": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.28+12/bellsoft-jdk11.0.28+12-windows-aarch64-full.zip", 137 | "11.0.29": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.29+12/bellsoft-jdk11.0.29+12-windows-aarch64-full.zip", 138 | "11.1.14": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.14.1+1/bellsoft-jdk11.0.14.1+1-windows-aarch64-full.zip", 139 | "11.1.15": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.15.1+2/bellsoft-jdk11.0.15.1+2-windows-aarch64-full.zip", 140 | "11.1.16": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.16.1+1/bellsoft-jdk11.0.16.1+1-windows-aarch64-full.zip", 141 | "11.1.20": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.20.1+1/bellsoft-jdk11.0.20.1+1-windows-aarch64-full.zip", 142 | "16.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/16.0.1+9/bellsoft-jdk16.0.1+9-windows-aarch64-full.zip", 143 | "16.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/16.0.2+7/bellsoft-jdk16.0.2+7-windows-aarch64-full.zip", 144 | "17.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/17+35/bellsoft-jdk17+35-windows-aarch64-full.zip", 145 | "17.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.1+12/bellsoft-jdk17.0.1+12-windows-aarch64-full.zip", 146 | "17.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.2+9/bellsoft-jdk17.0.2+9-windows-aarch64-full.zip", 147 | "17.0.3": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.3+7/bellsoft-jdk17.0.3+7-windows-aarch64-full.zip", 148 | "17.0.4": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.4+8/bellsoft-jdk17.0.4+8-windows-aarch64-full.zip", 149 | "17.0.5": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.5+8/bellsoft-jdk17.0.5+8-windows-aarch64-full.zip", 150 | "17.0.6": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.6+10/bellsoft-jdk17.0.6+10-windows-aarch64-full.zip", 151 | "17.0.7": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.7+7/bellsoft-jdk17.0.7+7-windows-aarch64-full.zip", 152 | "17.0.8": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.8+7/bellsoft-jdk17.0.8+7-windows-aarch64-full.zip", 153 | "17.0.9": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.9+11/bellsoft-jdk17.0.9+11-windows-aarch64-full.zip", 154 | "17.0.10": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.10+13/bellsoft-jdk17.0.10+13-windows-aarch64-full.zip", 155 | "17.0.11": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.11+12/bellsoft-jdk17.0.11+12-windows-aarch64-full.zip", 156 | "17.0.12": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.12+10/bellsoft-jdk17.0.12+10-windows-aarch64-full.zip", 157 | "17.0.13": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.13+12/bellsoft-jdk17.0.13+12-windows-aarch64-full.zip", 158 | "17.0.14": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.14+10/bellsoft-jdk17.0.14+10-windows-aarch64-full.zip", 159 | "17.0.15": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.15+10/bellsoft-jdk17.0.15+10-windows-aarch64-full.zip", 160 | "17.0.16": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.16+12/bellsoft-jdk17.0.16+12-windows-aarch64-full.zip", 161 | "17.0.17": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.17+15/bellsoft-jdk17.0.17+15-windows-aarch64-full.zip", 162 | "17.1.3": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.3.1+2/bellsoft-jdk17.0.3.1+2-windows-aarch64-full.zip", 163 | "17.1.4": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.4.1+1/bellsoft-jdk17.0.4.1+1-windows-aarch64-full.zip", 164 | "17.1.8": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.8.1+1/bellsoft-jdk17.0.8.1+1-windows-aarch64-full.zip", 165 | "18.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/18+37/bellsoft-jdk18+37-windows-aarch64-full.zip", 166 | "18.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.1+12/bellsoft-jdk18.0.1+12-windows-aarch64-full.zip", 167 | "18.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.2+10/bellsoft-jdk18.0.2+10-windows-aarch64-full.zip", 168 | "18.1.1": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.1.1+2/bellsoft-jdk18.0.1.1+2-windows-aarch64-full.zip", 169 | "18.1.2": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.2.1+1/bellsoft-jdk18.0.2.1+1-windows-aarch64-full.zip", 170 | "19.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/19+37/bellsoft-jdk19+37-windows-aarch64-full.zip", 171 | "19.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/19.0.1+11/bellsoft-jdk19.0.1+11-windows-aarch64-full.zip", 172 | "19.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/19.0.2+9/bellsoft-jdk19.0.2+9-windows-aarch64-full.zip", 173 | "20.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/20+37/bellsoft-jdk20+37-windows-aarch64-full.zip", 174 | "20.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/20.0.1+10/bellsoft-jdk20.0.1+10-windows-aarch64-full.zip", 175 | "20.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/20.0.2+10/bellsoft-jdk20.0.2+10-windows-aarch64-full.zip", 176 | "21.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/21+37/bellsoft-jdk21+37-windows-aarch64-full.zip", 177 | "21.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.1+12/bellsoft-jdk21.0.1+12-windows-aarch64-full.zip", 178 | "21.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.2+14/bellsoft-jdk21.0.2+14-windows-aarch64-full.zip", 179 | "21.0.3": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.3+12/bellsoft-jdk21.0.3+12-windows-aarch64-full.zip", 180 | "21.0.4": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.4+9/bellsoft-jdk21.0.4+9-windows-aarch64-full.zip", 181 | "21.0.5": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.5+11/bellsoft-jdk21.0.5+11-windows-aarch64-full.zip", 182 | "21.0.6": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.6+10/bellsoft-jdk21.0.6+10-windows-aarch64-full.zip", 183 | "21.0.7": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.7+9/bellsoft-jdk21.0.7+9-windows-aarch64-full.zip", 184 | "21.0.8": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.8+12/bellsoft-jdk21.0.8+12-windows-aarch64-full.zip", 185 | "21.0.9": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.9+15/bellsoft-jdk21.0.9+15-windows-aarch64-full.zip", 186 | "22.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/22+37/bellsoft-jdk22+37-windows-aarch64-full.zip", 187 | "22.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/22.0.1+12/bellsoft-jdk22.0.1+12-windows-aarch64-full.zip", 188 | "22.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/22.0.2+11/bellsoft-jdk22.0.2+11-windows-aarch64-full.zip", 189 | "23.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/23+38/bellsoft-jdk23+38-windows-aarch64-full.zip", 190 | "23.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/23.0.1+13/bellsoft-jdk23.0.1+13-windows-aarch64-full.zip", 191 | "23.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/23.0.2+9/bellsoft-jdk23.0.2+9-windows-aarch64-full.zip", 192 | "24.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/24+37/bellsoft-jdk24+37-windows-aarch64-full.zip", 193 | "24.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/24.0.1+11/bellsoft-jdk24.0.1+11-windows-aarch64-full.zip", 194 | "24.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/24.0.2+12/bellsoft-jdk24.0.2+12-windows-aarch64-full.zip", 195 | "25.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/25+37/bellsoft-jdk25+37-windows-aarch64-full.zip", 196 | "25.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/25.0.1+13/bellsoft-jdk25.0.1+13-windows-aarch64-full.zip" 197 | }, 198 | "liberica-jre": { 199 | "11.0.11": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jre11.0.11+9-windows-aarch64.zip", 200 | "11.0.12": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jre11.0.12+7-windows-aarch64.zip", 201 | "11.0.13": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jre11.0.13+8-windows-aarch64.zip", 202 | "11.0.14": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.14+9/bellsoft-jre11.0.14+9-windows-aarch64.zip", 203 | "11.0.15": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.15+10/bellsoft-jre11.0.15+10-windows-aarch64.zip", 204 | "11.0.16": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.16+8/bellsoft-jre11.0.16+8-windows-aarch64.zip", 205 | "11.0.17": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.17+7/bellsoft-jre11.0.17+7-windows-aarch64.zip", 206 | "11.0.18": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.18+10/bellsoft-jre11.0.18+10-windows-aarch64.zip", 207 | "11.0.19": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.19+7/bellsoft-jre11.0.19+7-windows-aarch64.zip", 208 | "11.0.20": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.20+8/bellsoft-jre11.0.20+8-windows-aarch64.zip", 209 | "11.0.21": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.21+10/bellsoft-jre11.0.21+10-windows-aarch64.zip", 210 | "11.0.22": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.22+12/bellsoft-jre11.0.22+12-windows-aarch64.zip", 211 | "11.0.23": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.23+12/bellsoft-jre11.0.23+12-windows-aarch64.zip", 212 | "11.0.24": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.24+9/bellsoft-jre11.0.24+9-windows-aarch64.zip", 213 | "11.0.25": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.25+11/bellsoft-jre11.0.25+11-windows-aarch64.zip", 214 | "11.0.26": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.26+9/bellsoft-jre11.0.26+9-windows-aarch64.zip", 215 | "11.0.27": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.27+9/bellsoft-jre11.0.27+9-windows-aarch64.zip", 216 | "11.0.28": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.28+12/bellsoft-jre11.0.28+12-windows-aarch64.zip", 217 | "11.0.29": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.29+12/bellsoft-jre11.0.29+12-windows-aarch64.zip", 218 | "11.1.14": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.14.1+1/bellsoft-jre11.0.14.1+1-windows-aarch64.zip", 219 | "11.1.15": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.15.1+2/bellsoft-jre11.0.15.1+2-windows-aarch64.zip", 220 | "11.1.16": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.16.1+1/bellsoft-jre11.0.16.1+1-windows-aarch64.zip", 221 | "11.1.20": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.20.1+1/bellsoft-jre11.0.20.1+1-windows-aarch64.zip", 222 | "16.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/16.0.1+9/bellsoft-jre16.0.1+9-windows-aarch64.zip", 223 | "16.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/16.0.2+7/bellsoft-jre16.0.2+7-windows-aarch64.zip", 224 | "17.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/17+35/bellsoft-jre17+35-windows-aarch64.zip", 225 | "17.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.1+12/bellsoft-jre17.0.1+12-windows-aarch64.zip", 226 | "17.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.2+9/bellsoft-jre17.0.2+9-windows-aarch64.zip", 227 | "17.0.3": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.3+7/bellsoft-jre17.0.3+7-windows-aarch64.zip", 228 | "17.0.4": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.4+8/bellsoft-jre17.0.4+8-windows-aarch64.zip", 229 | "17.0.5": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.5+8/bellsoft-jre17.0.5+8-windows-aarch64.zip", 230 | "17.0.6": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.6+10/bellsoft-jre17.0.6+10-windows-aarch64.zip", 231 | "17.0.7": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.7+7/bellsoft-jre17.0.7+7-windows-aarch64.zip", 232 | "17.0.8": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.8+7/bellsoft-jre17.0.8+7-windows-aarch64.zip", 233 | "17.0.9": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.9+11/bellsoft-jre17.0.9+11-windows-aarch64.zip", 234 | "17.0.10": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.10+13/bellsoft-jre17.0.10+13-windows-aarch64.zip", 235 | "17.0.11": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.11+12/bellsoft-jre17.0.11+12-windows-aarch64.zip", 236 | "17.0.12": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.12+10/bellsoft-jre17.0.12+10-windows-aarch64.zip", 237 | "17.0.13": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.13+12/bellsoft-jre17.0.13+12-windows-aarch64.zip", 238 | "17.0.14": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.14+10/bellsoft-jre17.0.14+10-windows-aarch64.zip", 239 | "17.0.15": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.15+10/bellsoft-jre17.0.15+10-windows-aarch64.zip", 240 | "17.0.16": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.16+12/bellsoft-jre17.0.16+12-windows-aarch64.zip", 241 | "17.0.17": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.17+15/bellsoft-jre17.0.17+15-windows-aarch64.zip", 242 | "17.1.3": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.3.1+2/bellsoft-jre17.0.3.1+2-windows-aarch64.zip", 243 | "17.1.4": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.4.1+1/bellsoft-jre17.0.4.1+1-windows-aarch64.zip", 244 | "17.1.8": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.8.1+1/bellsoft-jre17.0.8.1+1-windows-aarch64.zip", 245 | "18.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/18+37/bellsoft-jre18+37-windows-aarch64.zip", 246 | "18.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.1+12/bellsoft-jre18.0.1+12-windows-aarch64.zip", 247 | "18.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.2+10/bellsoft-jre18.0.2+10-windows-aarch64.zip", 248 | "18.1.1": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.1.1+2/bellsoft-jre18.0.1.1+2-windows-aarch64.zip", 249 | "18.1.2": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.2.1+1/bellsoft-jre18.0.2.1+1-windows-aarch64.zip", 250 | "19.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/19+37/bellsoft-jre19+37-windows-aarch64.zip", 251 | "19.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/19.0.1+11/bellsoft-jre19.0.1+11-windows-aarch64.zip", 252 | "19.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/19.0.2+9/bellsoft-jre19.0.2+9-windows-aarch64.zip", 253 | "20.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/20+37/bellsoft-jre20+37-windows-aarch64.zip", 254 | "20.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/20.0.1+10/bellsoft-jre20.0.1+10-windows-aarch64.zip", 255 | "20.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/20.0.2+10/bellsoft-jre20.0.2+10-windows-aarch64.zip", 256 | "21.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/21+37/bellsoft-jre21+37-windows-aarch64.zip", 257 | "21.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.1+12/bellsoft-jre21.0.1+12-windows-aarch64.zip", 258 | "21.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.2+14/bellsoft-jre21.0.2+14-windows-aarch64.zip", 259 | "21.0.3": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.3+12/bellsoft-jre21.0.3+12-windows-aarch64.zip", 260 | "21.0.4": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.4+9/bellsoft-jre21.0.4+9-windows-aarch64.zip", 261 | "21.0.5": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.5+11/bellsoft-jre21.0.5+11-windows-aarch64.zip", 262 | "21.0.6": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.6+10/bellsoft-jre21.0.6+10-windows-aarch64.zip", 263 | "21.0.7": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.7+9/bellsoft-jre21.0.7+9-windows-aarch64.zip", 264 | "21.0.8": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.8+12/bellsoft-jre21.0.8+12-windows-aarch64.zip", 265 | "21.0.9": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.9+15/bellsoft-jre21.0.9+15-windows-aarch64.zip", 266 | "22.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/22+37/bellsoft-jre22+37-windows-aarch64.zip", 267 | "22.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/22.0.1+12/bellsoft-jre22.0.1+12-windows-aarch64.zip", 268 | "22.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/22.0.2+11/bellsoft-jre22.0.2+11-windows-aarch64.zip", 269 | "23.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/23+38/bellsoft-jre23+38-windows-aarch64.zip", 270 | "23.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/23.0.1+13/bellsoft-jre23.0.1+13-windows-aarch64.zip", 271 | "23.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/23.0.2+9/bellsoft-jre23.0.2+9-windows-aarch64.zip", 272 | "24.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/24+37/bellsoft-jre24+37-windows-aarch64.zip", 273 | "24.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/24.0.1+11/bellsoft-jre24.0.1+11-windows-aarch64.zip", 274 | "24.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/24.0.2+12/bellsoft-jre24.0.2+12-windows-aarch64.zip", 275 | "25.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/25+37/bellsoft-jre25+37-windows-aarch64.zip", 276 | "25.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/25.0.1+13/bellsoft-jre25.0.1+13-windows-aarch64.zip" 277 | }, 278 | "liberica-jre-full": { 279 | "11.0.11": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jre11.0.11+9-windows-aarch64-full.zip", 280 | "11.0.12": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jre11.0.12+7-windows-aarch64-full.zip", 281 | "11.0.13": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jre11.0.13+8-windows-aarch64-full.zip", 282 | "11.0.14": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.14+9/bellsoft-jre11.0.14+9-windows-aarch64-full.zip", 283 | "11.0.15": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.15+10/bellsoft-jre11.0.15+10-windows-aarch64-full.zip", 284 | "11.0.16": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.16+8/bellsoft-jre11.0.16+8-windows-aarch64-full.zip", 285 | "11.0.17": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.17+7/bellsoft-jre11.0.17+7-windows-aarch64-full.zip", 286 | "11.0.18": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.18+10/bellsoft-jre11.0.18+10-windows-aarch64-full.zip", 287 | "11.0.19": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.19+7/bellsoft-jre11.0.19+7-windows-aarch64-full.zip", 288 | "11.0.20": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.20+8/bellsoft-jre11.0.20+8-windows-aarch64-full.zip", 289 | "11.0.21": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.21+10/bellsoft-jre11.0.21+10-windows-aarch64-full.zip", 290 | "11.0.22": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.22+12/bellsoft-jre11.0.22+12-windows-aarch64-full.zip", 291 | "11.0.23": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.23+12/bellsoft-jre11.0.23+12-windows-aarch64-full.zip", 292 | "11.0.24": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.24+9/bellsoft-jre11.0.24+9-windows-aarch64-full.zip", 293 | "11.0.25": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.25+11/bellsoft-jre11.0.25+11-windows-aarch64-full.zip", 294 | "11.0.26": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.26+9/bellsoft-jre11.0.26+9-windows-aarch64-full.zip", 295 | "11.0.27": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.27+9/bellsoft-jre11.0.27+9-windows-aarch64-full.zip", 296 | "11.0.28": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.28+12/bellsoft-jre11.0.28+12-windows-aarch64-full.zip", 297 | "11.0.29": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.29+12/bellsoft-jre11.0.29+12-windows-aarch64-full.zip", 298 | "11.1.14": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.14.1+1/bellsoft-jre11.0.14.1+1-windows-aarch64-full.zip", 299 | "11.1.15": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.15.1+2/bellsoft-jre11.0.15.1+2-windows-aarch64-full.zip", 300 | "11.1.16": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.16.1+1/bellsoft-jre11.0.16.1+1-windows-aarch64-full.zip", 301 | "11.1.20": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.20.1+1/bellsoft-jre11.0.20.1+1-windows-aarch64-full.zip", 302 | "16.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/16.0.1+9/bellsoft-jre16.0.1+9-windows-aarch64-full.zip", 303 | "16.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/16.0.2+7/bellsoft-jre16.0.2+7-windows-aarch64-full.zip", 304 | "17.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/17+35/bellsoft-jre17+35-windows-aarch64-full.zip", 305 | "17.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.1+12/bellsoft-jre17.0.1+12-windows-aarch64-full.zip", 306 | "17.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.2+9/bellsoft-jre17.0.2+9-windows-aarch64-full.zip", 307 | "17.0.3": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.3+7/bellsoft-jre17.0.3+7-windows-aarch64-full.zip", 308 | "17.0.4": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.4+8/bellsoft-jre17.0.4+8-windows-aarch64-full.zip", 309 | "17.0.5": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.5+8/bellsoft-jre17.0.5+8-windows-aarch64-full.zip", 310 | "17.0.6": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.6+10/bellsoft-jre17.0.6+10-windows-aarch64-full.zip", 311 | "17.0.7": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.7+7/bellsoft-jre17.0.7+7-windows-aarch64-full.zip", 312 | "17.0.8": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.8+7/bellsoft-jre17.0.8+7-windows-aarch64-full.zip", 313 | "17.0.9": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.9+11/bellsoft-jre17.0.9+11-windows-aarch64-full.zip", 314 | "17.0.10": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.10+13/bellsoft-jre17.0.10+13-windows-aarch64-full.zip", 315 | "17.0.11": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.11+12/bellsoft-jre17.0.11+12-windows-aarch64-full.zip", 316 | "17.0.12": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.12+10/bellsoft-jre17.0.12+10-windows-aarch64-full.zip", 317 | "17.0.13": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.13+12/bellsoft-jre17.0.13+12-windows-aarch64-full.zip", 318 | "17.0.14": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.14+10/bellsoft-jre17.0.14+10-windows-aarch64-full.zip", 319 | "17.0.15": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.15+10/bellsoft-jre17.0.15+10-windows-aarch64-full.zip", 320 | "17.0.16": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.16+12/bellsoft-jre17.0.16+12-windows-aarch64-full.zip", 321 | "17.0.17": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.17+15/bellsoft-jre17.0.17+15-windows-aarch64-full.zip", 322 | "17.1.3": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.3.1+2/bellsoft-jre17.0.3.1+2-windows-aarch64-full.zip", 323 | "17.1.4": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.4.1+1/bellsoft-jre17.0.4.1+1-windows-aarch64-full.zip", 324 | "17.1.8": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.8.1+1/bellsoft-jre17.0.8.1+1-windows-aarch64-full.zip", 325 | "18.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/18+37/bellsoft-jre18+37-windows-aarch64-full.zip", 326 | "18.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.1+12/bellsoft-jre18.0.1+12-windows-aarch64-full.zip", 327 | "18.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.2+10/bellsoft-jre18.0.2+10-windows-aarch64-full.zip", 328 | "18.1.1": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.1.1+2/bellsoft-jre18.0.1.1+2-windows-aarch64-full.zip", 329 | "18.1.2": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.2.1+1/bellsoft-jre18.0.2.1+1-windows-aarch64-full.zip", 330 | "19.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/19+37/bellsoft-jre19+37-windows-aarch64-full.zip", 331 | "19.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/19.0.1+11/bellsoft-jre19.0.1+11-windows-aarch64-full.zip", 332 | "19.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/19.0.2+9/bellsoft-jre19.0.2+9-windows-aarch64-full.zip", 333 | "20.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/20+37/bellsoft-jre20+37-windows-aarch64-full.zip", 334 | "20.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/20.0.1+10/bellsoft-jre20.0.1+10-windows-aarch64-full.zip", 335 | "20.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/20.0.2+10/bellsoft-jre20.0.2+10-windows-aarch64-full.zip", 336 | "21.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/21+37/bellsoft-jre21+37-windows-aarch64-full.zip", 337 | "21.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.1+12/bellsoft-jre21.0.1+12-windows-aarch64-full.zip", 338 | "21.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.2+14/bellsoft-jre21.0.2+14-windows-aarch64-full.zip", 339 | "21.0.3": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.3+12/bellsoft-jre21.0.3+12-windows-aarch64-full.zip", 340 | "21.0.4": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.4+9/bellsoft-jre21.0.4+9-windows-aarch64-full.zip", 341 | "21.0.5": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.5+11/bellsoft-jre21.0.5+11-windows-aarch64-full.zip", 342 | "21.0.6": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.6+10/bellsoft-jre21.0.6+10-windows-aarch64-full.zip", 343 | "21.0.7": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.7+9/bellsoft-jre21.0.7+9-windows-aarch64-full.zip", 344 | "21.0.8": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.8+12/bellsoft-jre21.0.8+12-windows-aarch64-full.zip", 345 | "21.0.9": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.9+15/bellsoft-jre21.0.9+15-windows-aarch64-full.zip", 346 | "22.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/22+37/bellsoft-jre22+37-windows-aarch64-full.zip", 347 | "22.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/22.0.1+12/bellsoft-jre22.0.1+12-windows-aarch64-full.zip", 348 | "22.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/22.0.2+11/bellsoft-jre22.0.2+11-windows-aarch64-full.zip", 349 | "23.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/23+38/bellsoft-jre23+38-windows-aarch64-full.zip", 350 | "23.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/23.0.1+13/bellsoft-jre23.0.1+13-windows-aarch64-full.zip", 351 | "23.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/23.0.2+9/bellsoft-jre23.0.2+9-windows-aarch64-full.zip", 352 | "24.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/24+37/bellsoft-jre24+37-windows-aarch64-full.zip", 353 | "24.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/24.0.1+11/bellsoft-jre24.0.1+11-windows-aarch64-full.zip", 354 | "24.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/24.0.2+12/bellsoft-jre24.0.2+12-windows-aarch64-full.zip", 355 | "25.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/25+37/bellsoft-jre25+37-windows-aarch64-full.zip", 356 | "25.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/25.0.1+13/bellsoft-jre25.0.1+13-windows-aarch64-full.zip" 357 | }, 358 | "liberica-lite": { 359 | "11.0.11": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.11+9/bellsoft-jdk11.0.11+9-windows-aarch64-lite.zip", 360 | "11.0.12": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.12+7/bellsoft-jdk11.0.12+7-windows-aarch64-lite.zip", 361 | "11.0.13": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.13+8/bellsoft-jdk11.0.13+8-windows-aarch64-lite.zip", 362 | "11.0.14": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.14+9/bellsoft-jdk11.0.14+9-windows-aarch64-lite.zip", 363 | "11.0.15": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.15+10/bellsoft-jdk11.0.15+10-windows-aarch64-lite.zip", 364 | "11.0.16": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.16+8/bellsoft-jdk11.0.16+8-windows-aarch64-lite.zip", 365 | "11.0.17": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.17+7/bellsoft-jdk11.0.17+7-windows-aarch64-lite.zip", 366 | "11.0.18": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.18+10/bellsoft-jdk11.0.18+10-windows-aarch64-lite.zip", 367 | "11.0.19": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.19+7/bellsoft-jdk11.0.19+7-windows-aarch64-lite.zip", 368 | "11.0.20": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.20+8/bellsoft-jdk11.0.20+8-windows-aarch64-lite.zip", 369 | "11.0.21": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.21+10/bellsoft-jdk11.0.21+10-windows-aarch64-lite.zip", 370 | "11.0.22": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.22+12/bellsoft-jdk11.0.22+12-windows-aarch64-lite.zip", 371 | "11.0.23": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.23+12/bellsoft-jdk11.0.23+12-windows-aarch64-lite.zip", 372 | "11.0.24": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.24+9/bellsoft-jdk11.0.24+9-windows-aarch64-lite.zip", 373 | "11.0.25": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.25+11/bellsoft-jdk11.0.25+11-windows-aarch64-lite.zip", 374 | "11.0.26": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.26+9/bellsoft-jdk11.0.26+9-windows-aarch64-lite.zip", 375 | "11.0.27": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.27+9/bellsoft-jdk11.0.27+9-windows-aarch64-lite.zip", 376 | "11.0.28": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.28+12/bellsoft-jdk11.0.28+12-windows-aarch64-lite.zip", 377 | "11.0.29": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.29+12/bellsoft-jdk11.0.29+12-windows-aarch64-lite.zip", 378 | "11.1.14": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.14.1+1/bellsoft-jdk11.0.14.1+1-windows-aarch64-lite.zip", 379 | "11.1.15": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.15.1+2/bellsoft-jdk11.0.15.1+2-windows-aarch64-lite.zip", 380 | "11.1.16": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.16.1+1/bellsoft-jdk11.0.16.1+1-windows-aarch64-lite.zip", 381 | "11.1.20": "zip+https://github.com/bell-sw/Liberica/releases/download/11.0.20.1+1/bellsoft-jdk11.0.20.1+1-windows-aarch64-lite.zip", 382 | "16.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/16.0.1+9/bellsoft-jdk16.0.1+9-windows-aarch64-lite.zip", 383 | "16.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/16.0.2+7/bellsoft-jdk16.0.2+7-windows-aarch64-lite.zip", 384 | "17.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/17+35/bellsoft-jdk17+35-windows-aarch64-lite.zip", 385 | "17.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.1+12/bellsoft-jdk17.0.1+12-windows-aarch64-lite.zip", 386 | "17.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.2+9/bellsoft-jdk17.0.2+9-windows-aarch64-lite.zip", 387 | "17.0.3": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.3+7/bellsoft-jdk17.0.3+7-windows-aarch64-lite.zip", 388 | "17.0.4": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.4+8/bellsoft-jdk17.0.4+8-windows-aarch64-lite.zip", 389 | "17.0.5": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.5+8/bellsoft-jdk17.0.5+8-windows-aarch64-lite.zip", 390 | "17.0.6": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.6+10/bellsoft-jdk17.0.6+10-windows-aarch64-lite.zip", 391 | "17.0.7": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.7+7/bellsoft-jdk17.0.7+7-windows-aarch64-lite.zip", 392 | "17.0.8": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.8+7/bellsoft-jdk17.0.8+7-windows-aarch64-lite.zip", 393 | "17.0.9": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.9+11/bellsoft-jdk17.0.9+11-windows-aarch64-lite.zip", 394 | "17.0.10": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.10+13/bellsoft-jdk17.0.10+13-windows-aarch64-lite.zip", 395 | "17.0.11": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.11+12/bellsoft-jdk17.0.11+12-windows-aarch64-lite.zip", 396 | "17.0.12": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.12+10/bellsoft-jdk17.0.12+10-windows-aarch64-lite.zip", 397 | "17.0.13": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.13+12/bellsoft-jdk17.0.13+12-windows-aarch64-lite.zip", 398 | "17.0.14": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.14+10/bellsoft-jdk17.0.14+10-windows-aarch64-lite.zip", 399 | "17.0.15": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.15+10/bellsoft-jdk17.0.15+10-windows-aarch64-lite.zip", 400 | "17.0.16": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.16+12/bellsoft-jdk17.0.16+12-windows-aarch64-lite.zip", 401 | "17.0.17": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.17+15/bellsoft-jdk17.0.17+15-windows-aarch64-lite.zip", 402 | "17.1.3": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.3.1+2/bellsoft-jdk17.0.3.1+2-windows-aarch64-lite.zip", 403 | "17.1.4": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.4.1+1/bellsoft-jdk17.0.4.1+1-windows-aarch64-lite.zip", 404 | "17.1.8": "zip+https://github.com/bell-sw/Liberica/releases/download/17.0.8.1+1/bellsoft-jdk17.0.8.1+1-windows-aarch64-lite.zip", 405 | "18.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/18+37/bellsoft-jdk18+37-windows-aarch64-lite.zip", 406 | "18.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.1+12/bellsoft-jdk18.0.1+12-windows-aarch64-lite.zip", 407 | "18.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.2+10/bellsoft-jdk18.0.2+10-windows-aarch64-lite.zip", 408 | "18.1.1": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.1.1+2/bellsoft-jdk18.0.1.1+2-windows-aarch64-lite.zip", 409 | "18.1.2": "zip+https://github.com/bell-sw/Liberica/releases/download/18.0.2.1+1/bellsoft-jdk18.0.2.1+1-windows-aarch64-lite.zip", 410 | "19.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/19+37/bellsoft-jdk19+37-windows-aarch64-lite.zip", 411 | "19.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/19.0.1+11/bellsoft-jdk19.0.1+11-windows-aarch64-lite.zip", 412 | "19.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/19.0.2+9/bellsoft-jdk19.0.2+9-windows-aarch64-lite.zip", 413 | "20.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/20+37/bellsoft-jdk20+37-windows-aarch64-lite.zip", 414 | "20.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/20.0.1+10/bellsoft-jdk20.0.1+10-windows-aarch64-lite.zip", 415 | "20.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/20.0.2+10/bellsoft-jdk20.0.2+10-windows-aarch64-lite.zip", 416 | "21.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/21+37/bellsoft-jdk21+37-windows-aarch64-lite.zip", 417 | "21.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.1+12/bellsoft-jdk21.0.1+12-windows-aarch64-lite.zip", 418 | "21.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.2+14/bellsoft-jdk21.0.2+14-windows-aarch64-lite.zip", 419 | "21.0.3": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.3+12/bellsoft-jdk21.0.3+12-windows-aarch64-lite.zip", 420 | "21.0.4": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.4+9/bellsoft-jdk21.0.4+9-windows-aarch64-lite.zip", 421 | "21.0.5": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.5+11/bellsoft-jdk21.0.5+11-windows-aarch64-lite.zip", 422 | "21.0.6": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.6+10/bellsoft-jdk21.0.6+10-windows-aarch64-lite.zip", 423 | "21.0.7": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.7+9/bellsoft-jdk21.0.7+9-windows-aarch64-lite.zip", 424 | "21.0.8": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.8+12/bellsoft-jdk21.0.8+12-windows-aarch64-lite.zip", 425 | "21.0.9": "zip+https://github.com/bell-sw/Liberica/releases/download/21.0.9+15/bellsoft-jdk21.0.9+15-windows-aarch64-lite.zip", 426 | "22.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/22+37/bellsoft-jdk22+37-windows-aarch64-lite.zip", 427 | "22.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/22.0.1+12/bellsoft-jdk22.0.1+12-windows-aarch64-lite.zip", 428 | "22.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/22.0.2+11/bellsoft-jdk22.0.2+11-windows-aarch64-lite.zip", 429 | "23.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/23+38/bellsoft-jdk23+38-windows-aarch64-lite.zip", 430 | "23.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/23.0.1+13/bellsoft-jdk23.0.1+13-windows-aarch64-lite.zip", 431 | "23.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/23.0.2+9/bellsoft-jdk23.0.2+9-windows-aarch64-lite.zip", 432 | "24.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/24+37/bellsoft-jdk24+37-windows-aarch64-lite.zip", 433 | "24.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/24.0.1+11/bellsoft-jdk24.0.1+11-windows-aarch64-lite.zip", 434 | "24.0.2": "zip+https://github.com/bell-sw/Liberica/releases/download/24.0.2+12/bellsoft-jdk24.0.2+12-windows-aarch64-lite.zip", 435 | "25.0.0": "zip+https://github.com/bell-sw/Liberica/releases/download/25+37/bellsoft-jdk25+37-windows-aarch64-lite.zip", 436 | "25.0.1": "zip+https://github.com/bell-sw/Liberica/releases/download/25.0.1+13/bellsoft-jdk25.0.1+13-windows-aarch64-lite.zip" 437 | }, 438 | "temurin": { 439 | "21.0.5": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jdk_aarch64_windows_hotspot_21.0.5_11.zip", 440 | "21.0.6": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6%2B7/OpenJDK21U-jdk_aarch64_windows_hotspot_21.0.6_7.zip", 441 | "21.0.7": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.7%2B6/OpenJDK21U-jdk_aarch64_windows_hotspot_21.0.7_6.zip", 442 | "21.0.8": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.8%2B9/OpenJDK21U-jdk_aarch64_windows_hotspot_21.0.8_9.zip", 443 | "21.0.9": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9%2B10/OpenJDK21U-jdk_aarch64_windows_hotspot_21.0.9_10.zip", 444 | "23.0.1": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_aarch64_windows_hotspot_23.0.1_11.zip", 445 | "23.0.2": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-jdk_aarch64_windows_hotspot_23.0.2_7.zip" 446 | }, 447 | "temurin-debugimage": { 448 | "21.0.5": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-debugimage_aarch64_windows_hotspot_21.0.5_11.zip", 449 | "21.0.6": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6%2B7/OpenJDK21U-debugimage_aarch64_windows_hotspot_21.0.6_7.zip", 450 | "21.0.7": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.7%2B6/OpenJDK21U-debugimage_aarch64_windows_hotspot_21.0.7_6.zip", 451 | "21.0.8": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.8%2B9/OpenJDK21U-debugimage_aarch64_windows_hotspot_21.0.8_9.zip", 452 | "21.0.9": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9%2B10/OpenJDK21U-debugimage_aarch64_windows_hotspot_21.0.9_10.zip", 453 | "23.0.1": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-debugimage_aarch64_windows_hotspot_23.0.1_11.zip", 454 | "23.0.2": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-debugimage_aarch64_windows_hotspot_23.0.2_7.zip" 455 | }, 456 | "temurin-jre": { 457 | "21.0.5": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jre_aarch64_windows_hotspot_21.0.5_11.zip", 458 | "21.0.6": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6%2B7/OpenJDK21U-jre_aarch64_windows_hotspot_21.0.6_7.zip", 459 | "21.0.7": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.7%2B6/OpenJDK21U-jre_aarch64_windows_hotspot_21.0.7_6.zip", 460 | "21.0.8": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.8%2B9/OpenJDK21U-jre_aarch64_windows_hotspot_21.0.8_9.zip", 461 | "21.0.9": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9%2B10/OpenJDK21U-jre_aarch64_windows_hotspot_21.0.9_10.zip", 462 | "23.0.1": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jre_aarch64_windows_hotspot_23.0.1_11.zip", 463 | "23.0.2": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-jre_aarch64_windows_hotspot_23.0.2_7.zip" 464 | }, 465 | "temurin-testimage": { 466 | "21.0.5": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-testimage_aarch64_windows_hotspot_21.0.5_11.zip", 467 | "21.0.6": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6%2B7/OpenJDK21U-testimage_aarch64_windows_hotspot_21.0.6_7.zip", 468 | "21.0.7": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.7%2B6/OpenJDK21U-testimage_aarch64_windows_hotspot_21.0.7_6.zip", 469 | "21.0.8": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.8%2B9/OpenJDK21U-testimage_aarch64_windows_hotspot_21.0.8_9.zip", 470 | "21.0.9": "zip+https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.9%2B10/OpenJDK21U-testimage_aarch64_windows_hotspot_21.0.9_10.zip", 471 | "23.0.1": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-testimage_aarch64_windows_hotspot_23.0.1_11.zip", 472 | "23.0.2": "zip+https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-testimage_aarch64_windows_hotspot_23.0.2_7.zip" 473 | }, 474 | "zulu": { 475 | "16.0.1": "zip+https://cdn.azul.com/zulu/bin/zulu16.30.17-ca-jdk16.0.1-win_aarch64.zip", 476 | "16.0.2": "zip+https://cdn.azul.com/zulu/bin/zulu16.32.15-ca-jdk16.0.2-win_aarch64.zip", 477 | "17.0.0": "zip+https://cdn.azul.com/zulu/bin/zulu17.28.13-ca-jdk17.0.0-win_aarch64.zip", 478 | "17.0.1": "zip+https://cdn.azul.com/zulu/bin/zulu17.30.15-ca-jdk17.0.1-win_aarch64.zip", 479 | "17.0.2": "zip+https://cdn.azul.com/zulu/bin/zulu17.32.13-ca-jdk17.0.2-win_aarch64.zip", 480 | "17.0.3": "zip+https://cdn.azul.com/zulu/bin/zulu17.34.19-ca-jdk17.0.3-win_aarch64.zip", 481 | "17.0.4": "zip+https://cdn.azul.com/zulu/bin/zulu17.36.13-ca-jdk17.0.4-win_aarch64.zip", 482 | "17.0.5": "zip+https://cdn.azul.com/zulu/bin/zulu17.38.21-ca-jdk17.0.5-win_aarch64.zip", 483 | "17.0.6": "zip+https://cdn.azul.com/zulu/bin/zulu17.40.19-ca-jdk17.0.6-win_aarch64.zip", 484 | "17.0.7": "zip+https://cdn.azul.com/zulu/bin/zulu17.42.19-ca-jdk17.0.7-win_aarch64.zip", 485 | "17.0.8": "zip+https://cdn.azul.com/zulu/bin/zulu17.44.15-ca-jdk17.0.8-win_aarch64.zip", 486 | "17.0.9": "zip+https://cdn.azul.com/zulu/bin/zulu17.46.19-ca-jdk17.0.9-win_aarch64.zip", 487 | "17.0.10": "zip+https://cdn.azul.com/zulu/bin/zulu17.48.15-ca-jdk17.0.10-win_aarch64.zip", 488 | "17.0.11": "zip+https://cdn.azul.com/zulu/bin/zulu17.50.19-ca-jdk17.0.11-win_aarch64.zip", 489 | "17.0.12": "zip+https://cdn.azul.com/zulu/bin/zulu17.52.17-ca-jdk17.0.12-win_aarch64.zip", 490 | "17.0.13": "zip+https://cdn.azul.com/zulu/bin/zulu17.54.21-ca-jdk17.0.13-win_aarch64.zip", 491 | "17.0.14": "zip+https://cdn.azul.com/zulu/bin/zulu17.56.15-ca-jdk17.0.14-win_aarch64.zip", 492 | "17.0.15": "zip+https://cdn.azul.com/zulu/bin/zulu17.58.21-ca-jdk17.0.15-win_aarch64.zip", 493 | "17.0.16": "zip+https://cdn.azul.com/zulu/bin/zulu17.60.17-ca-jdk17.0.16-win_aarch64.zip", 494 | "17.0.17": "zip+https://cdn.azul.com/zulu/bin/zulu17.62.17-ca-jdk17.0.17-win_aarch64.zip", 495 | "18.0.0": "zip+https://cdn.azul.com/zulu/bin/zulu18.28.13-ca-jdk18.0.0-win_aarch64.zip", 496 | "18.0.1": "zip+https://cdn.azul.com/zulu/bin/zulu18.30.11-ca-jdk18.0.1-win_aarch64.zip", 497 | "18.0.2": "zip+https://cdn.azul.com/zulu/bin/zulu18.32.11-ca-jdk18.0.2-win_aarch64.zip", 498 | "19.0.0": "zip+https://cdn.azul.com/zulu/bin/zulu19.28.81-ca-jdk19.0.0-win_aarch64.zip", 499 | "21.0.3": "zip+https://cdn.azul.com/zulu/bin/zulu21.34.19-ca-jdk21.0.3-win_aarch64.zip", 500 | "21.0.4": "zip+https://cdn.azul.com/zulu/bin/zulu21.36.17-ca-jdk21.0.4-win_aarch64.zip", 501 | "21.0.5": "zip+https://cdn.azul.com/zulu/bin/zulu21.38.21-ca-jdk21.0.5-win_aarch64.zip", 502 | "21.0.6": "zip+https://cdn.azul.com/zulu/bin/zulu21.40.17-ca-jdk21.0.6-win_aarch64.zip", 503 | "21.0.7": "zip+https://cdn.azul.com/zulu/bin/zulu21.42.19-ca-jdk21.0.7-win_aarch64.zip", 504 | "21.0.8": "zip+https://cdn.azul.com/zulu/bin/zulu21.44.17-ca-jdk21.0.8-win_aarch64.zip", 505 | "21.0.9": "zip+https://cdn.azul.com/zulu/bin/zulu21.46.19-ca-jdk21.0.9-win_aarch64.zip", 506 | "25.0.0": "zip+https://cdn.azul.com/zulu/bin/zulu25.28.85-ca-jdk25.0.0-win_aarch64.zip", 507 | "25.0.1": "zip+https://cdn.azul.com/zulu/bin/zulu25.30.17-ca-jdk25.0.1-win_aarch64.zip" 508 | }, 509 | "zulu-jre": { 510 | "16.0.1": "zip+https://cdn.azul.com/zulu/bin/zulu16.30.17-ca-jre16.0.1-win_aarch64.zip", 511 | "16.0.2": "zip+https://cdn.azul.com/zulu/bin/zulu16.32.15-ca-jre16.0.2-win_aarch64.zip" 512 | } 513 | } --------------------------------------------------------------------------------