Skip to content

Commit 3b0f691

Browse files
authored
feat: add support for Dragonwell 25 (#103)
1 parent 320649c commit 3b0f691

2 files changed

Lines changed: 145 additions & 0 deletions

File tree

bin/dragonwell25.bash

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
#!/usr/bin/env bash
2+
set -e
3+
set -Euo pipefail
4+
5+
TEMP_DIR=$(mktemp -d)
6+
trap 'rm -rf ${TEMP_DIR}' EXIT
7+
8+
if [[ "$#" -lt 2 ]]
9+
then
10+
echo "Usage: ${0} metadata-directory checksum-directory"
11+
exit 1
12+
fi
13+
14+
# shellcheck source=bin/functions.bash
15+
source "$(dirname "${0}")/functions.bash"
16+
17+
VENDOR='dragonwell'
18+
METADATA_DIR="${1}/${VENDOR}"
19+
CHECKSUM_DIR="${2}/${VENDOR}"
20+
21+
ensure_directory "${METADATA_DIR}"
22+
ensure_directory "${CHECKSUM_DIR}"
23+
24+
function normalize_release_type {
25+
case "${1}" in
26+
ea|*Experimental*|FP1) echo 'ea'
27+
;;
28+
*) echo 'ga'
29+
;;
30+
esac
31+
}
32+
33+
function download {
34+
local tag_name="${1}"
35+
local asset_name="${2}"
36+
local filename="${asset_name}"
37+
38+
local url="https://github.com/dragonwell-project/dragonwell25/releases/download/${tag_name}/${asset_name}"
39+
local metadata_file="${METADATA_DIR}/${filename}.json"
40+
local archive="${TEMP_DIR}/${filename}"
41+
42+
if [[ -f "${metadata_file}" ]]
43+
then
44+
echo "Skipping ${filename}"
45+
elif [[ "${filename}" =~ (tar\.gz|zip)$ ]]
46+
then
47+
download_file "${url}" "${archive}" || return 1
48+
49+
local regex
50+
if [[ "${filename}" =~ ^Alibaba_Dragonwell_(Standard|Extended) ]]
51+
then
52+
# shellcheck disable=SC2016
53+
regex='s/^Alibaba_Dragonwell_(?:Standard|Extended)[–_]([0-9\+.]{1,}[^_]*)_(aarch64|x64)(?:_alpine)?[-_](Linux|linux|Windows|windows)\.(.*)$/VERSION="$1" JAVA_VERSION="$1" ARCH="$2" OS="$3" EXT="$4"/g'
54+
elif [[ "${filename}" = Alibaba_Dragonwell* ]];
55+
then
56+
# shellcheck disable=SC2016
57+
regex='s/^Alibaba_Dragonwell_([0-9\+.]{1,}[^_]*)(?:_alpine)?[_-](?:(GA|Experimental|GA_Experimental|FP1)_)?(Linux|linux|Windows|windows)_(aarch64|x64)\.(.*)$/VERSION="$1" JAVA_VERSION="$1" RELEASE_TYPE="$2" OS="$3" ARCH="$4" EXT="$5"/g'
58+
else
59+
# shellcheck disable=SC2016
60+
regex='s/^OpenJDK(?:[0-9\+].{1,})_(x64|aarch64)_(linux|windows)_dragonwell_dragonwell-([0-9.]+)(?:_jdk)?[-_]([0-9._]+)-?(ga|.*)\.(tar\.gz|zip)$/ARCH="$1" OS="$2" VERSION="$3" JAVA_VERSION="$4" RELEASE_TYPE="$5" EXT="$6"/g'
61+
fi
62+
63+
local VERSION=""
64+
local JAVA_VERSION=""
65+
local RELEASE_TYPE=""
66+
local OS=""
67+
local ARCH=""
68+
local EXT=""
69+
local FEATURES=""
70+
71+
# Parse meta-data from file name
72+
eval "$(perl -pe "${regex}" <<< "${asset_name}")"
73+
74+
if [[ -z "${VERSION}" ]]
75+
then
76+
# shellcheck disable=SC2016
77+
regex='s/^Alibaba_Dragonwell_([0-9\+.]{1,}[^_]*)(?:_alpine)?_(aarch64|x64)_(Linux|linux|Windows|windows)\.(.*)$/VERSION="$1" JAVA_VERSION="$1" RELEASE_TYPE="jdk" OS="$3" ARCH="$2" EXT="$4"/g'
78+
eval "$(perl -pe "${regex}" <<< "${asset_name}")"
79+
fi
80+
81+
if [[ -z "${VERSION}" ]]
82+
then
83+
echo "Unable to parse ${asset_name}"
84+
return 1
85+
fi
86+
87+
if [[ -z "${RELEASE_TYPE}" ]]
88+
then
89+
RELEASE_TYPE='ga'
90+
fi
91+
92+
if [[ "${VERSION}" =~ "preview" ]]
93+
then
94+
RELEASE_TYPE='ea'
95+
fi
96+
97+
if [[ "${filename}" =~ "_alpine" ]]
98+
then
99+
FEATURES='musl'
100+
fi
101+
102+
local json
103+
json="$(metadata_json \
104+
"${VENDOR}" \
105+
"${filename}" \
106+
"$(normalize_release_type "${RELEASE_TYPE}")" \
107+
"${VERSION}" \
108+
"${JAVA_VERSION}" \
109+
'hotspot' \
110+
"$(normalize_os "${OS}")" \
111+
"$(normalize_arch "${ARCH}")" \
112+
"${EXT}" \
113+
'jdk' \
114+
"${FEATURES}" \
115+
"${url}" \
116+
"$(hash_file 'md5' "${archive}" "${CHECKSUM_DIR}")" \
117+
"$(hash_file 'sha1' "${archive}" "${CHECKSUM_DIR}")" \
118+
"$(hash_file 'sha256' "${archive}" "${CHECKSUM_DIR}")" \
119+
"$(hash_file 'sha512' "${archive}" "${CHECKSUM_DIR}")" \
120+
"$(file_size "${archive}")" \
121+
"${filename}"
122+
)"
123+
124+
echo "${json}" > "${metadata_file}"
125+
rm -f "${archive}"
126+
else
127+
echo "Skipping ${filename}"
128+
fi
129+
}
130+
131+
RELEASE_FILE="${TEMP_DIR}/releases-${VENDOR}-25.json"
132+
download_github_releases 'dragonwell-project' 'dragonwell25' "${RELEASE_FILE}"
133+
134+
versions=$(jq -r '.[].tag_name' "${RELEASE_FILE}" | sort -V)
135+
for version in ${versions}
136+
do
137+
assets=$(jq -r ".[] | select(.tag_name == \"${version}\") | .assets[] | select(.content_type | startswith(\"application\")) | select(.name | contains(\"_source\") | not) | select(.name | endswith(\"jar\") | not) | .name" "${RELEASE_FILE}")
138+
for asset in ${assets}
139+
do
140+
download "${version}" "${asset}" || echo "Cannot download ${asset}"
141+
done
142+
done
143+
144+
jq -s -S . "${METADATA_DIR}"/{Alibaba_Dragonwell,OpenJDK}*.json > "${METADATA_DIR}/all.json"

bin/update.bash

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ vendors=(
5252
"$(cmd 'dragonwell11')"
5353
"$(cmd 'dragonwell17')"
5454
"$(cmd 'dragonwell21')"
55+
"$(cmd 'dragonwell25')"
5556
"$(cmd 'oracle')"
5657
"$(cmd 'oracle-graalvm')"
5758
"$(cmd 'oracle-graalvm-ea')"

0 commit comments

Comments
 (0)