diff --git a/.circleci/config.pkl b/.circleci/config.pkl index c3f9c503..006ea2b4 100644 --- a/.circleci/config.pkl +++ b/.circleci/config.pkl @@ -108,10 +108,12 @@ local gradleCheckJobs: Mapping = new { ["gradle-check-jdk17"] { javaVersion = "17.0" isRelease = false + os = "linux" } ["gradle-check-jdk21"] { javaVersion = "21.0" isRelease = false + os = "linux" } ["gradle-check-jdk17-windows"] { javaVersion = "17.0" diff --git a/.circleci/config.yml b/.circleci/config.yml index f787090e..d0508b76 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -39,7 +39,7 @@ jobs: && rm -rf /var/cache/dnf # install jdk - curl -L \ + curl -Lf \ https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz -o /tmp/jdk.tar.gz mkdir /jdk \ @@ -52,7 +52,7 @@ jobs: # install zlib if [[ ! -f ~/staticdeps/include/zlib.h ]]; then - curl -L https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz + curl -Lf https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz mkdir -p /tmp/dep_zlib-1.2.13 \ && cd /tmp/dep_zlib-1.2.13 \ @@ -65,7 +65,7 @@ jobs: # install musl if [[ ! -f ~/staticdeps/bin/x86_64-linux-musl-gcc ]]; then - curl -L https://musl.libc.org/releases/musl-1.2.2.tar.gz -o /tmp/musl.tar.gz + curl -Lf https://musl.libc.org/releases/musl-1.2.2.tar.gz -o /tmp/musl.tar.gz mkdir -p /tmp/dep_musl-1.2.2 \ && cd /tmp/dep_musl-1.2.2 \ @@ -135,7 +135,7 @@ jobs: && rm -rf /var/cache/dnf # install jdk - curl -L \ + curl -Lf \ https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.9_9.tar.gz -o /tmp/jdk.tar.gz mkdir /jdk \ @@ -148,7 +148,7 @@ jobs: # install zlib if [[ ! -f ~/staticdeps/include/zlib.h ]]; then - curl -L https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz + curl -Lf https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz mkdir -p /tmp/dep_zlib-1.2.13 \ && cd /tmp/dep_zlib-1.2.13 \ @@ -196,7 +196,7 @@ jobs: && rm -rf /var/cache/dnf # install jdk - curl -L \ + curl -Lf \ https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz -o /tmp/jdk.tar.gz mkdir /jdk \ @@ -209,7 +209,7 @@ jobs: # install zlib if [[ ! -f ~/staticdeps/include/zlib.h ]]; then - curl -L https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz + curl -Lf https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz mkdir -p /tmp/dep_zlib-1.2.13 \ && cd /tmp/dep_zlib-1.2.13 \ @@ -222,7 +222,7 @@ jobs: # install musl if [[ ! -f ~/staticdeps/bin/x86_64-linux-musl-gcc ]]; then - curl -L https://musl.libc.org/releases/musl-1.2.2.tar.gz -o /tmp/musl.tar.gz + curl -Lf https://musl.libc.org/releases/musl-1.2.2.tar.gz -o /tmp/musl.tar.gz mkdir -p /tmp/dep_musl-1.2.2 \ && cd /tmp/dep_musl-1.2.2 \ @@ -262,6 +262,18 @@ jobs: pkl-cli-windows-amd64-release: steps: - checkout + - run: + command: |- + # install jdk + curl -Lf \ + https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9.1/OpenJDK17U-jdk_x64_windows_hotspot_17.0.9_9.zip -o /tmp/jdk.zip + + unzip /tmp/jdk.zip -d /tmp/jdk \ + && cd /tmp/jdk/jdk-* \ + && mkdir /jdk \ + && cp -r . /jdk + name: Set up environment + shell: bash.exe - run: command: |- export PATH=~/staticdeps/bin:$PATH @@ -276,6 +288,7 @@ jobs: path: ~/test-results environment: LANG: en_US.UTF-8 + JAVA_HOME: /jdk resource_class: windows.large machine: image: windows-server-2022-gui:current @@ -315,7 +328,7 @@ jobs: && rm -rf /var/cache/dnf # install jdk - curl -L \ + curl -Lf \ https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz -o /tmp/jdk.tar.gz mkdir /jdk \ @@ -328,7 +341,7 @@ jobs: # install zlib if [[ ! -f ~/staticdeps/include/zlib.h ]]; then - curl -L https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz + curl -Lf https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz mkdir -p /tmp/dep_zlib-1.2.13 \ && cd /tmp/dep_zlib-1.2.13 \ @@ -341,7 +354,7 @@ jobs: # install musl if [[ ! -f ~/staticdeps/bin/x86_64-linux-musl-gcc ]]; then - curl -L https://musl.libc.org/releases/musl-1.2.2.tar.gz -o /tmp/musl.tar.gz + curl -Lf https://musl.libc.org/releases/musl-1.2.2.tar.gz -o /tmp/musl.tar.gz mkdir -p /tmp/dep_musl-1.2.2 \ && cd /tmp/dep_musl-1.2.2 \ @@ -411,7 +424,7 @@ jobs: && rm -rf /var/cache/dnf # install jdk - curl -L \ + curl -Lf \ https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jdk_aarch64_linux_hotspot_17.0.9_9.tar.gz -o /tmp/jdk.tar.gz mkdir /jdk \ @@ -424,7 +437,7 @@ jobs: # install zlib if [[ ! -f ~/staticdeps/include/zlib.h ]]; then - curl -L https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz + curl -Lf https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz mkdir -p /tmp/dep_zlib-1.2.13 \ && cd /tmp/dep_zlib-1.2.13 \ @@ -472,7 +485,7 @@ jobs: && rm -rf /var/cache/dnf # install jdk - curl -L \ + curl -Lf \ https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz -o /tmp/jdk.tar.gz mkdir /jdk \ @@ -485,7 +498,7 @@ jobs: # install zlib if [[ ! -f ~/staticdeps/include/zlib.h ]]; then - curl -L https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz + curl -Lf https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz -o /tmp/zlib.tar.gz mkdir -p /tmp/dep_zlib-1.2.13 \ && cd /tmp/dep_zlib-1.2.13 \ @@ -498,7 +511,7 @@ jobs: # install musl if [[ ! -f ~/staticdeps/bin/x86_64-linux-musl-gcc ]]; then - curl -L https://musl.libc.org/releases/musl-1.2.2.tar.gz -o /tmp/musl.tar.gz + curl -Lf https://musl.libc.org/releases/musl-1.2.2.tar.gz -o /tmp/musl.tar.gz mkdir -p /tmp/dep_musl-1.2.2 \ && cd /tmp/dep_musl-1.2.2 \ @@ -538,6 +551,18 @@ jobs: pkl-cli-windows-amd64-snapshot: steps: - checkout + - run: + command: |- + # install jdk + curl -Lf \ + https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9.1/OpenJDK17U-jdk_x64_windows_hotspot_17.0.9_9.zip -o /tmp/jdk.zip + + unzip /tmp/jdk.zip -d /tmp/jdk \ + && cd /tmp/jdk/jdk-* \ + && mkdir /jdk \ + && cp -r . /jdk + name: Set up environment + shell: bash.exe - run: command: |- export PATH=~/staticdeps/bin:$PATH @@ -552,6 +577,7 @@ jobs: path: ~/test-results environment: LANG: en_US.UTF-8 + JAVA_HOME: /jdk resource_class: windows.large machine: image: windows-server-2022-gui:current @@ -582,6 +608,18 @@ jobs: gradle-check-jdk17-windows: steps: - checkout + - run: + command: |- + # install jdk + curl -Lf \ + https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9.1/OpenJDK17U-jdk_x64_windows_hotspot_17.0.9_9.zip -o /tmp/jdk.zip + + unzip /tmp/jdk.zip -d /tmp/jdk \ + && cd /tmp/jdk/jdk-* \ + && mkdir /jdk \ + && cp -r . /jdk + name: Set up environment + shell: bash.exe - run: command: ./gradlew --info --stacktrace -DtestReportsDir=${HOME}/test-results check name: gradle check @@ -589,6 +627,7 @@ jobs: path: ~/test-results environment: LANG: en_US.UTF-8 + JAVA_HOME: /jdk resource_class: windows.large machine: image: windows-server-2022-gui:current diff --git a/.circleci/jobs/BuildNativeJob.pkl b/.circleci/jobs/BuildNativeJob.pkl index 5d48d029..3405e720 100644 --- a/.circleci/jobs/BuildNativeJob.pkl +++ b/.circleci/jobs/BuildNativeJob.pkl @@ -17,7 +17,6 @@ extends "GradleJob.pkl" import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.1.2#/Config.pkl" -import "package://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.uri@1.0.0#/URI.pkl" /// The architecture to use arch: "amd64"|"aarch64" @@ -25,13 +24,11 @@ arch: "amd64"|"aarch64" /// Whether to link to musl. Otherwise, links to glibc. musl: Boolean = false +javaVersion = "17.0" + local setupLinuxEnvironment: Config.RunStep = - let (jdkVersion = "17.0.9+9") let (muslVersion = "1.2.2") let (zlibVersion = "1.2.13") - let (jdkVersionEncoded = URI.encodeComponent(jdkVersion)) - let (jdkVersionAlt = jdkVersion.replaceLast("+", "_")) - let (majorJdkVersion = jdkVersion.split(".").first) new { name = "Set up environment" shell = "#!/bin/bash -exo pipefail" @@ -43,8 +40,8 @@ local setupLinuxEnvironment: Config.RunStep = && rm -rf /var/cache/dnf # install jdk - curl -L \ - https://github.com/adoptium/temurin\#(majorJdkVersion)-binaries/releases/download/jdk-\#(jdkVersionEncoded)/OpenJDK\#(majorJdkVersion)U-jdk_\#(if (arch == "amd64") "x64" else "aarch64")_linux_hotspot_\#(jdkVersionAlt).tar.gz -o /tmp/jdk.tar.gz + curl -Lf \ + https://github.com/adoptium/temurin\#(module.majorJdkVersion)-binaries/releases/download/\#(module.jdkGitHubReleaseName)/OpenJDK\#(module.majorJdkVersion)U-jdk_\#(if (arch == "amd64") "x64" else "aarch64")_linux_hotspot_\#(module.jdkVersionAlt).tar.gz -o /tmp/jdk.tar.gz mkdir /jdk \ && cd /jdk \ @@ -56,7 +53,7 @@ local setupLinuxEnvironment: Config.RunStep = # install zlib if [[ ! -f ~/staticdeps/include/zlib.h ]]; then - curl -L https://github.com/madler/zlib/releases/download/v\#(zlibVersion)/zlib-\#(zlibVersion).tar.gz -o /tmp/zlib.tar.gz + curl -Lf https://github.com/madler/zlib/releases/download/v\#(zlibVersion)/zlib-\#(zlibVersion).tar.gz -o /tmp/zlib.tar.gz mkdir -p /tmp/dep_zlib-\#(zlibVersion) \ && cd /tmp/dep_zlib-\#(zlibVersion) \ @@ -72,7 +69,7 @@ local setupLinuxEnvironment: Config.RunStep = #""" # install musl if [[ ! -f ~/staticdeps/bin/x86_64-linux-musl-gcc ]]; then - curl -L https://musl.libc.org/releases/musl-\#(muslVersion).tar.gz -o /tmp/musl.tar.gz + curl -Lf https://musl.libc.org/releases/musl-\#(muslVersion).tar.gz -o /tmp/musl.tar.gz mkdir -p /tmp/dep_musl-\#(muslVersion) \ && cd /tmp/dep_musl-\#(muslVersion) \ @@ -145,7 +142,7 @@ job { resource_class = "macos.m1.large.gen1" } when (os == "linux") { - docker { + docker = new Listing { new { image = if (arch == "aarch64") "arm64v8/oraclelinux:8-slim" else "oraclelinux:8-slim" } @@ -160,5 +157,8 @@ job { image = "windows-server-2022-gui:current" } resource_class = "windows.large" + environment { + ["JAVA_HOME"] = "/jdk" + } } } diff --git a/.circleci/jobs/DeployJob.pkl b/.circleci/jobs/DeployJob.pkl index a46faea7..b6126981 100644 --- a/.circleci/jobs/DeployJob.pkl +++ b/.circleci/jobs/DeployJob.pkl @@ -19,13 +19,9 @@ import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.1.2#/Config.pkl" local self = this -command: String +javaVersion = "17.0" -job { - docker { - new { image = "cimg/openjdk:17.0" } - } -} +command: String os = "linux" diff --git a/.circleci/jobs/GradleCheckJob.pkl b/.circleci/jobs/GradleCheckJob.pkl index 39ab7beb..41358081 100644 --- a/.circleci/jobs/GradleCheckJob.pkl +++ b/.circleci/jobs/GradleCheckJob.pkl @@ -17,29 +17,9 @@ extends "GradleJob.pkl" import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.1.2#/Config.pkl" -javaVersion: "17.0"|"21.0" - -os = "linux" - steps { new Config.RunStep { name = "gradle check" command = "./gradlew \(module.gradleArgs) check" } } - -job { - when (os == "linux") { - docker { - new { - image = "cimg/openjdk:\(javaVersion)" - } - } - } - when (os == "windows") { - machine { - image = "windows-server-2022-gui:current" - } - resource_class = "windows.large" - } -} diff --git a/.circleci/jobs/GradleJob.pkl b/.circleci/jobs/GradleJob.pkl index bb9c7fb1..92621ceb 100644 --- a/.circleci/jobs/GradleJob.pkl +++ b/.circleci/jobs/GradleJob.pkl @@ -16,6 +16,7 @@ abstract module GradleJob import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.1.2#/Config.pkl" +import "package://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.uri@1.0.3#/URI.pkl" /// Whether this is a release build or not. isRelease: Boolean = false @@ -23,6 +24,25 @@ isRelease: Boolean = false /// The OS to run on os: "macOS"|"linux"|"windows" +/// The version of Java to use. +javaVersion: "17.0"|"21.0" + +fixed javaVersionFull = + if (javaVersion == "17.0") "17.0.9+9" + else "21.0.5+11" + +fixed jdkVersionAlt = javaVersionFull.replaceLast("+", "_") + +fixed majorJdkVersion = javaVersionFull.split(".").first + +fixed jdkGitHubReleaseName = + let (ver = + // 17.0.9+9 is missing some binaries (see https://github.com/adoptium/adoptium-support/issues/994) + if (javaVersionFull == "17.0.9+9" && os == "windows") "jdk-17.0.9+9.1" + else "jdk-\(javaVersionFull)" + ) + URI.encodeComponent(ver) + fixed gradleArgs = new Listing { "--info" "--stacktrace" @@ -37,9 +57,41 @@ steps: Listing job: Config.Job = new { environment { ["LANG"] = "en_US.UTF-8" + when (os == "windows") { + ["JAVA_HOME"] = "/jdk" + } + } + when (os == "linux") { + docker { + new { + image = "cimg/openjdk:\(javaVersion)" + } + } + } + when (os == "windows") { + machine { + image = "windows-server-2022-gui:current" + } + resource_class = "windows.large" } steps { "checkout" + when (os == "windows") { + new Config.RunStep { + name = "Set up environment" + shell = "bash.exe" + command = #""" + # install jdk + curl -Lf \ + https://github.com/adoptium/temurin\#(majorJdkVersion)-binaries/releases/download/\#(jdkGitHubReleaseName)/OpenJDK\#(majorJdkVersion)U-jdk_x64_windows_hotspot_\#(jdkVersionAlt).zip -o /tmp/jdk.zip + + unzip /tmp/jdk.zip -d /tmp/jdk \ + && cd /tmp/jdk/jdk-* \ + && mkdir /jdk \ + && cp -r . /jdk + """# + } + } ...module.steps new Config.StoreTestResults { path = "~/test-results" diff --git a/.circleci/jobs/SimpleGradleJob.pkl b/.circleci/jobs/SimpleGradleJob.pkl index ef2526b9..8f33706c 100644 --- a/.circleci/jobs/SimpleGradleJob.pkl +++ b/.circleci/jobs/SimpleGradleJob.pkl @@ -23,6 +23,8 @@ command: String os = "linux" +javaVersion = "17.0" + steps { new Config.RunStep { name = module.name @@ -31,9 +33,3 @@ steps { """ } } - -job { - docker { - new { image = "cimg/openjdk:17.0" } - } -}