Skip to content

Commit d1e71b2

Browse files
committed
fix: add missing implementation for Tencent Kona JDK 21
1 parent 8fcff34 commit d1e71b2

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

bin/kona21.bash

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
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='kona'
18+
METADATA_DIR="${1}/${VENDOR}"
19+
CHECKSUM_DIR="${2}/${VENDOR}"
20+
21+
ensure_directory "${METADATA_DIR}"
22+
ensure_directory "${CHECKSUM_DIR}"
23+
24+
function download {
25+
local tag_name="${1}"
26+
local asset_name="${2}"
27+
local filename="${asset_name}"
28+
29+
local url="https://github.com/Tencent/TencentKona-21/releases/download/${tag_name}/${asset_name}"
30+
local metadata_file="${METADATA_DIR}/${filename}.json"
31+
local archive="${TEMP_DIR}/${filename}"
32+
33+
if [[ -f "${metadata_file}" ]]
34+
then
35+
echo "Skipping ${filename}"
36+
else
37+
download_file "${url}" "${archive}" || return 1
38+
39+
local VERSION=""
40+
local JAVA_VERSION=""
41+
local RELEASE_TYPE=""
42+
local OS=""
43+
local ARCH=""
44+
local EXT=""
45+
local FEATURES=""
46+
47+
# shellcheck disable=SC2016
48+
local regex='s/^TencentKona-([0-9b.]{1,})(?:[_-](ea))?[-_]jdk_(linux|macosx|windows)-(aarch64|x86_64)(?:_(notarized|signed))?\.(tar\.gz|zip)$/VERSION="$1" RELEASE_TYPE="$2" OS="$3" ARCH="$4" JAVA_VERSION="$1" FEATURES="$5" EXT="$6"/g'
49+
50+
# Parse meta-data from file name
51+
eval "$(perl -pe "${regex}" <<< "${asset_name}")"
52+
53+
if [[ -z "${RELEASE_TYPE}" ]]
54+
then
55+
RELEASE_TYPE="ga"
56+
fi
57+
58+
if [[ -z "${VERSION}" ]]
59+
then
60+
echo "Unable to parse ${asset_name}"
61+
return 1
62+
fi
63+
64+
local json
65+
json="$(metadata_json \
66+
"${VENDOR}" \
67+
"${filename}" \
68+
"$(normalize_release_type "${RELEASE_TYPE}")" \
69+
"${VERSION}" \
70+
"${JAVA_VERSION}" \
71+
'hotspot' \
72+
"$(normalize_os "${OS}")" \
73+
"$(normalize_arch "${ARCH}")" \
74+
"${EXT}" \
75+
'jdk' \
76+
"${FEATURES}" \
77+
"${url}" \
78+
"$(hash_file 'md5' "${archive}" "${CHECKSUM_DIR}")" \
79+
"$(hash_file 'sha1' "${archive}" "${CHECKSUM_DIR}")" \
80+
"$(hash_file 'sha256' "${archive}" "${CHECKSUM_DIR}")" \
81+
"$(hash_file 'sha512' "${archive}" "${CHECKSUM_DIR}")" \
82+
"$(file_size "${archive}")" \
83+
"${filename}"
84+
)"
85+
86+
echo "${json}" > "${metadata_file}"
87+
rm -f "${archive}"
88+
fi
89+
}
90+
91+
RELEASE_FILE="${TEMP_DIR}/releases-${VENDOR}-21.json"
92+
download_github_releases 'Tencent' 'TencentKona-21' "${RELEASE_FILE}"
93+
94+
versions=$(jq -r '.[].tag_name' "${RELEASE_FILE}" | sort -V)
95+
for version in ${versions}
96+
do
97+
assets=$(jq -r ".[] | select(.tag_name == \"${version}\") | .assets[] | select(.content_type | startswith(\"application\")) | select(.name | contains(\"_source\") | not) | select(.name | endswith(\"md5\") | not) | .name" "${RELEASE_FILE}")
98+
for asset in ${assets}
99+
do
100+
download "${version}" "${asset}" || echo "Cannot download ${asset}"
101+
done
102+
done
103+
104+
jq -s -S . "${METADATA_DIR}"/Tencent*.json > "${METADATA_DIR}/all.json"

0 commit comments

Comments
 (0)