Skip to content

Commit 7ea672c

Browse files
committed
implement jinja templating to handle linux installer updates
1 parent 45d34f1 commit 7ea672c

File tree

14 files changed

+445
-61
lines changed

14 files changed

+445
-61
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,9 @@ Thumbs.db
3030

3131
node_modules/
3232
wix/Workdir/
33+
34+
35+
lib/
36+
bin/
37+
.venv/
38+
adoptium_cache.sqlite

linux/config/temurin.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#
2+
# Licensed under the Apache License, Version 2.0 (the "License");
3+
# you may not use this file except in compliance with the License.
4+
# You may obtain a copy of the License at
5+
#
6+
# https://www.apache.org/licenses/LICENSE-2.0
7+
#
8+
# Unless required by applicable law or agreed to in writing, software
9+
# distributed under the License is distributed on an "AS IS" BASIS,
10+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
# See the License for the specific language governing permissions and
12+
# limitations under the License.
13+
#
14+
15+
supported_distributions:
16+
Distros: [alpine]
17+
Versions: [8, 11, 17, 21, 22]

linux/generate-linux-specs.py

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Licensed under the Apache License, Version 2.0 (the "License");
2+
# you may not use this file except in compliance with the License.
3+
# You may obtain a copy of the License at
4+
#
5+
# https://www.apache.org/licenses/LICENSE-2.0
6+
#
7+
# Unless required by applicable law or agreed to in writing, software
8+
# distributed under the License is distributed on an "AS IS" BASIS,
9+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10+
# See the License for the specific language governing permissions and
11+
# limitations under the License.
12+
#
13+
14+
import os
15+
16+
import requests
17+
import requests_cache
18+
import yaml
19+
from jinja2 import Environment, FileSystemLoader
20+
21+
requests_cache.install_cache("adoptium_cache", expire_after=3600)
22+
23+
# Setup the Jinja2 environment
24+
env = Environment(loader=FileSystemLoader("linux/templates"))
25+
26+
headers = {
27+
"User-Agent": "Adoptium Linux Specfile Updater",
28+
}
29+
30+
31+
def archHelper(arch):
32+
if arch == "x64":
33+
return "x86_64"
34+
else:
35+
return arch
36+
37+
# Load the YAML configuration
38+
with open("linux/config/temurin.yml", "r") as file:
39+
config = yaml.safe_load(file)
40+
41+
for image_type in ["jdk", "jre"]:
42+
# Iterate through supported_distributions
43+
for distro in config["supported_distributions"]["Distros"]:
44+
for version in config["supported_distributions"]["Versions"]:
45+
46+
# Fetch latest release for version from Adoptium API
47+
url = f"https://api.adoptium.net/v3/assets/feature_releases/{version}/ga?page=0&image_type={image_type}&os=alpine-linux&page_size=1&vendor=eclipse"
48+
response = requests.get(url, headers=headers)
49+
response.raise_for_status()
50+
data = response.json()
51+
52+
release = response.json()[0]
53+
54+
# Extract the version number from the release name
55+
openjdk_version = release["release_name"]
56+
57+
# If version doesn't equal 8, get the more accurate version number
58+
if version != 8:
59+
openjdk_version = (
60+
"jdk-" + release["version_data"]["openjdk_version"]
61+
)
62+
# if openjdk_version contains -LTS remove it
63+
if "-LTS" in openjdk_version:
64+
openjdk_version = openjdk_version.replace("-LTS", "")
65+
66+
# Convert version from jdk-11.0.24+8 to 11.0.24_p8
67+
openjdk_version = openjdk_version.replace("jdk-", "")
68+
openjdk_version = openjdk_version.replace("jdk", "")
69+
openjdk_version = openjdk_version.replace("+", "_p")
70+
openjdk_version = openjdk_version.replace("u", ".")
71+
openjdk_version = openjdk_version.replace("-b", ".")
72+
73+
# Generate the data for each architecture
74+
arch_data = {}
75+
76+
for binary in release["binaries"]:
77+
arch_data[archHelper(binary["architecture"])] = {
78+
"download_url": binary["package"]["link"],
79+
"checksum": binary["package"]["checksum"],
80+
}
81+
82+
# Set path to the specfiles
83+
path = f"linux/{image_type}/{distro}/src/main/packaging/temurin/{version}"
84+
85+
# Check that the path exists
86+
os.makedirs(path, exist_ok=True)
87+
88+
# Load the template
89+
template = env.get_template(f"{distro}.spec.j2")
90+
91+
# Render the template
92+
rendered = template.render(
93+
arch_data=arch_data,
94+
openjdk_version=openjdk_version,
95+
version=version,
96+
image_type=image_type
97+
)
98+
99+
# Set filename based on switch distro e.g APKBUILD for alpine, spec for others
100+
filename = "APKBUILD" if distro == "alpine" else "temurin.spec"
101+
102+
# Write the rendered template to the file
103+
with open(f"{path}/{filename}", "w") as file:
104+
file.write(rendered)
105+
print(f"Generated {path}/{filename}")

linux/jdk/alpine/src/main/packaging/temurin/11/APKBUILD

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ pkgver=11.0.24_p8
55
_pkgver=${pkgver/_p/_}
66
_pkgverplus=${pkgver/_p/+}
77
_pkgvername=${_pkgverplus/+/%2B}
8-
pkgrel=1
8+
pkgrel=0
99
pkgdesc="Eclipse Temurin 11"
1010
provider_priority=11
1111
url="https://adoptium.net"
12-
arch="noarch"
12+
arch="x86_64"
1313
license="GPL-2.0-with-classpath-exception"
1414
makedepends="
1515
alsa-lib-dev
@@ -25,8 +25,9 @@ makedepends="
2525
"
2626
depends=""
2727
subpackages="$pkgname-src:_src:noarch
28-
$pkgname-jdk:_jdk:x86_64"
29-
source="https://github.com/adoptium/temurin11-binaries/releases/download/jdk-$_pkgvername/OpenJDK11U-jdk_x64_alpine-linux_hotspot_$_pkgver.tar.gz
28+
$pkgname-jdk:_jdk"
29+
source="
30+
https://github.com/adoptium/temurin11-binaries/releases/download/jdk-$_pkgvername/OpenJDK11U-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
3031
3132
HelloWorld.java
3233
TestECDSA.java
@@ -94,8 +95,14 @@ _jdk() {
9495
"$_toroot/lib/security/cacerts"
9596
}
9697

98+
case "$CARCH" in
99+
x86_64)
100+
_arch_sum="ae988c72eeb2d78bb729a3387601ce0ea84305734ebdbe95d276f39952a8e019"
101+
;;
102+
esac
103+
97104
sha256sums="
98-
ae988c72eeb2d78bb729a3387601ce0ea84305734ebdbe95d276f39952a8e019 OpenJDK11U-jdk_x64_alpine-linux_hotspot_$_pkgver.tar.gz
105+
$_arch_sum OpenJDK11U-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
99106
e9185736dde99a4dc570a645a20407bdb41c1f48dfc34d9c3eb246cf0435a378 HelloWorld.java
100107
22d2ff9757549ebc64e09afd3423f84b5690dcf972cd6535211c07c66d38fab0 TestCryptoLevel.java
101108
9fb00c7b0220de8f3ee2aa398459a37d119f43fd63321530a00b3bb9217dd933 TestECDSA.java

linux/jdk/alpine/src/main/packaging/temurin/17/APKBUILD

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ pkgver=17.0.12_p7
55
_pkgver=${pkgver/_p/_}
66
_pkgverplus=${pkgver/_p/+}
77
_pkgvername=${_pkgverplus/+/%2B}
8-
pkgrel=1
8+
pkgrel=0
99
pkgdesc="Eclipse Temurin 17"
1010
provider_priority=17
1111
url="https://adoptium.net"
12-
arch="noarch"
12+
arch="x86_64"
1313
license="GPL-2.0-with-classpath-exception"
1414
makedepends="
1515
alsa-lib-dev
@@ -25,8 +25,9 @@ makedepends="
2525
"
2626
depends=""
2727
subpackages="$pkgname-src:_src:noarch
28-
$pkgname-jdk:_jdk:x86_64"
29-
source="https://github.com/adoptium/temurin17-binaries/releases/download/jdk-$_pkgvername/OpenJDK17U-jdk_x64_alpine-linux_hotspot_$_pkgver.tar.gz
28+
$pkgname-jdk:_jdk"
29+
source="
30+
https://github.com/adoptium/temurin17-binaries/releases/download/jdk-$_pkgvername/OpenJDK17U-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
3031
3132
HelloWorld.java
3233
TestECDSA.java
@@ -94,8 +95,14 @@ _jdk() {
9495
"$_toroot/lib/security/cacerts"
9596
}
9697

98+
case "$CARCH" in
99+
x86_64)
100+
_arch_sum="6d274a292a717a6f8d00a3ed0695497405c5c634c27fec1692dd13784f6ff6fa"
101+
;;
102+
esac
103+
97104
sha256sums="
98-
6d274a292a717a6f8d00a3ed0695497405c5c634c27fec1692dd13784f6ff6fa OpenJDK17U-jdk_x64_alpine-linux_hotspot_$_pkgver.tar.gz
105+
$_arch_sum OpenJDK17U-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
99106
e9185736dde99a4dc570a645a20407bdb41c1f48dfc34d9c3eb246cf0435a378 HelloWorld.java
100107
22d2ff9757549ebc64e09afd3423f84b5690dcf972cd6535211c07c66d38fab0 TestCryptoLevel.java
101108
9fb00c7b0220de8f3ee2aa398459a37d119f43fd63321530a00b3bb9217dd933 TestECDSA.java

linux/jdk/alpine/src/main/packaging/temurin/21/APKBUILD

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ pkgver=21.0.4_p7
55
_pkgver=${pkgver/_p/_}
66
_pkgverplus=${pkgver/_p/+}
77
_pkgvername=${_pkgverplus/+/%2B}
8-
pkgrel=1
8+
pkgrel=0
99
pkgdesc="Eclipse Temurin 21"
1010
provider_priority=21
1111
url="https://adoptium.net"
@@ -27,7 +27,7 @@ depends=""
2727
subpackages="$pkgname-src:_src:noarch
2828
$pkgname-jdk:_jdk"
2929
source="
30-
https://github.com/adoptium/temurin21-binaries/releases/download/jdk-$_pkgvername/OpenJDK21u-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
30+
https://github.com/adoptium/temurin21-binaries/releases/download/jdk-$_pkgvername/OpenJDK21U-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
3131
3232
HelloWorld.java
3333
TestECDSA.java
@@ -96,16 +96,16 @@ _jdk() {
9696
}
9797

9898
case "$CARCH" in
99-
x86_64)
100-
_arch_sum="8fa232fc9de5a861c1a6b0cbdc861d0b0a2bdbdd27da53d991802a460a7f0973"
101-
;;
10299
aarch64)
103100
_arch_sum="849c6d5a62a1f3dc2a3d2d7be07ffda089d35b862f6160b2a288c0408c2d8be8"
104101
;;
102+
x86_64)
103+
_arch_sum="8fa232fc9de5a861c1a6b0cbdc861d0b0a2bdbdd27da53d991802a460a7f0973"
104+
;;
105105
esac
106106

107107
sha256sums="
108-
$_arch_sum OpenJDK21u-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
108+
$_arch_sum OpenJDK21U-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
109109
e9185736dde99a4dc570a645a20407bdb41c1f48dfc34d9c3eb246cf0435a378 HelloWorld.java
110110
22d2ff9757549ebc64e09afd3423f84b5690dcf972cd6535211c07c66d38fab0 TestCryptoLevel.java
111111
9fb00c7b0220de8f3ee2aa398459a37d119f43fd63321530a00b3bb9217dd933 TestECDSA.java

linux/jdk/alpine/src/main/packaging/temurin/22/APKBUILD

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ pkgver=22.0.2_p9
55
_pkgver=${pkgver/_p/_}
66
_pkgverplus=${pkgver/_p/+}
77
_pkgvername=${_pkgverplus/+/%2B}
8-
pkgrel=1
8+
pkgrel=0
99
pkgdesc="Eclipse Temurin 22"
1010
provider_priority=22
1111
url="https://adoptium.net"
@@ -27,7 +27,7 @@ depends=""
2727
subpackages="$pkgname-src:_src:noarch
2828
$pkgname-jdk:_jdk"
2929
source="
30-
https://github.com/adoptium/temurin22-binaries/releases/download/jdk-$_pkgvername/OpenJDK22u-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
30+
https://github.com/adoptium/temurin22-binaries/releases/download/jdk-$_pkgvername/OpenJDK22U-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
3131
3232
HelloWorld.java
3333
TestECDSA.java
@@ -96,16 +96,16 @@ _jdk() {
9696
}
9797

9898
case "$CARCH" in
99-
x86_64)
100-
_arch_sum="49f73414824b1a7c268a611225fa4d7ce5e25600201e0f1cd59f94d1040b5264"
101-
;;
10299
aarch64)
103100
_arch_sum="8ac93a2d5a55aabbc0f7156c2f9032026e87c185689d628ef8a4184b6e9ab006"
104101
;;
102+
x86_64)
103+
_arch_sum="49f73414824b1a7c268a611225fa4d7ce5e25600201e0f1cd59f94d1040b5264"
104+
;;
105105
esac
106106

107107
sha256sums="
108-
$_arch_sum OpenJDK22u-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
108+
$_arch_sum OpenJDK22U-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
109109
e9185736dde99a4dc570a645a20407bdb41c1f48dfc34d9c3eb246cf0435a378 HelloWorld.java
110110
22d2ff9757549ebc64e09afd3423f84b5690dcf972cd6535211c07c66d38fab0 TestCryptoLevel.java
111111
9fb00c7b0220de8f3ee2aa398459a37d119f43fd63321530a00b3bb9217dd933 TestECDSA.java

linux/jdk/alpine/src/main/packaging/temurin/8/APKBUILD

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,21 @@ makedepends="
1616
libpng-dev
1717
libxcomposite-dev
1818
libxinerama-dev
19-
libxrender-dev
2019
libxslt
20+
libxrender-dev
2121
libxt-dev
2222
libxtst-dev
2323
"
2424
depends="
25-
java-common
26-
java-cacerts
27-
ttf-dejavu
25+
java-common
26+
java-cacerts
27+
ttf-dejavu
2828
"
29-
source="https://github.com/adoptium/temurin8-binaries/releases/download/jdk$_pkgvername/OpenJDK8U-jdk_x64_alpine-linux_hotspot_$_pkgver.tar.gz
29+
source="
30+
https://github.com/adoptium/temurin8-binaries/releases/download/jdk-$_pkgvername/OpenJDK8U-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
3031
3132
HelloWorld.java
33+
3234
"
3335

3436
_java_home="/usr/lib/jvm/java-8-temurin"
@@ -49,6 +51,7 @@ check() {
4951
$_java_bin/javac -d . "$srcdir"/HelloWorld.java
5052
$_java_bin/java HelloWorld
5153

54+
5255
# 2) check that java -version and javac -version work
5356
$_java_bin/java -version
5457
$_java_bin/javac -version
@@ -59,14 +62,22 @@ package() {
5962
mkdir -p "$pkgdir/$_java_home"
6063
cp -r "$srcdir"/jdk"$_pkgvername"/* "$pkgdir/$_java_home"
6164
rm "$pkgdir"/$_java_home/src.zip
62-
65+
6366
# symlink to shared java cacerts store
6467
rm -f "$pkgdir"/$_java_home/jre/lib/security/cacerts
6568
ln -sf /etc/ssl/certs/java/cacerts \
6669
"$pkgdir"/$_java_home/jre/lib/security/cacerts
6770
}
6871

72+
73+
74+
case "$CARCH" in
75+
x86_64)
76+
_arch_sum="525a7731331cad502b9293ccb4ac2b13e85516736e98a57cb27c2767005188e1"
77+
;;
78+
esac
79+
6980
sha256sums="
70-
525a7731331cad502b9293ccb4ac2b13e85516736e98a57cb27c2767005188e1 OpenJDK8U-jdk_x64_alpine-linux_hotspot_$_pkgver.tar.gz
81+
$_arch_sum OpenJDK8U-jdk_${CARCH/x86_64/x64}_alpine-linux_hotspot_$_pkgver.tar.gz
7182
e9185736dde99a4dc570a645a20407bdb41c1f48dfc34d9c3eb246cf0435a378 HelloWorld.java
7283
"

0 commit comments

Comments
 (0)