Skip to content

Commit b1233ee

Browse files
authored
Merge pull request #88 from StefanScherer/add-windows
Proposal: Add Windows version of OpenJDK
2 parents e3386b5 + a080def commit b1233ee

File tree

4 files changed

+136
-5
lines changed

4 files changed

+136
-5
lines changed

8-jdk/windows/nanoserver/Dockerfile

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
FROM microsoft/nanoserver
2+
3+
# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
4+
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
5+
6+
ENV JAVA_HOME C:\\ojdkbuild
7+
RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \
8+
Write-Host ('Updating PATH: {0}' -f $newPath); \
9+
# Nano Server does not have "[Environment]::SetEnvironmentVariable()"
10+
setx /M PATH $newPath;
11+
12+
# https://github.com/ojdkbuild/ojdkbuild/releases
13+
ENV JAVA_VERSION 8u111
14+
ENV JAVA_OJDKBUILD_VERSION 1.8.0.111-3
15+
ENV JAVA_OJDKBUILD_ZIP java-1.8.0-openjdk-1.8.0.111-3.b15.ojdkbuild.windows.x86_64.zip
16+
ENV JAVA_OJDKBUILD_SHA256 e080371bf57536668416157660e05d95fe04db15da36234d32bda8e301bb0454
17+
18+
RUN $url = ('https://github.com/ojdkbuild/ojdkbuild/releases/download/{0}/{1}' -f $env:JAVA_OJDKBUILD_VERSION, $env:JAVA_OJDKBUILD_ZIP); \
19+
Write-Host ('Downloading {0} ...' -f $url); \
20+
Invoke-WebRequest -Uri $url -OutFile 'ojdkbuild.zip'; \
21+
Write-Host ('Verifying sha256 ({0}) ...' -f $env:JAVA_OJDKBUILD_SHA256); \
22+
if ((Get-FileHash ojdkbuild.zip -Algorithm sha256).Hash -ne $env:JAVA_OJDKBUILD_SHA256) { \
23+
Write-Host 'FAILED!'; \
24+
exit 1; \
25+
}; \
26+
\
27+
Write-Host 'Expanding ...'; \
28+
Expand-Archive ojdkbuild.zip -DestinationPath C:\; \
29+
\
30+
Write-Host 'Renaming ...'; \
31+
Move-Item \
32+
-Path ('C:\{0}' -f ($env:JAVA_OJDKBUILD_ZIP -Replace '.zip$', '')) \
33+
-Destination $env:JAVA_HOME \
34+
; \
35+
\
36+
Write-Host 'Verifying install ...'; \
37+
Write-Host ' java -version'; java -version; \
38+
Write-Host ' javac -version'; javac -version; \
39+
\
40+
Write-Host 'Removing ...'; \
41+
Remove-Item ojdkbuild.zip -Force; \
42+
\
43+
Write-Host 'Complete.';
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
FROM microsoft/windowsservercore
2+
3+
# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
4+
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
5+
6+
ENV JAVA_HOME C:\\ojdkbuild
7+
RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \
8+
Write-Host ('Updating PATH: {0}' -f $newPath); \
9+
# Nano Server does not have "[Environment]::SetEnvironmentVariable()"
10+
setx /M PATH $newPath;
11+
12+
# https://github.com/ojdkbuild/ojdkbuild/releases
13+
ENV JAVA_VERSION 8u111
14+
ENV JAVA_OJDKBUILD_VERSION 1.8.0.111-3
15+
ENV JAVA_OJDKBUILD_ZIP java-1.8.0-openjdk-1.8.0.111-3.b15.ojdkbuild.windows.x86_64.zip
16+
ENV JAVA_OJDKBUILD_SHA256 e080371bf57536668416157660e05d95fe04db15da36234d32bda8e301bb0454
17+
18+
RUN $url = ('https://github.com/ojdkbuild/ojdkbuild/releases/download/{0}/{1}' -f $env:JAVA_OJDKBUILD_VERSION, $env:JAVA_OJDKBUILD_ZIP); \
19+
Write-Host ('Downloading {0} ...' -f $url); \
20+
Invoke-WebRequest -Uri $url -OutFile 'ojdkbuild.zip'; \
21+
Write-Host ('Verifying sha256 ({0}) ...' -f $env:JAVA_OJDKBUILD_SHA256); \
22+
if ((Get-FileHash ojdkbuild.zip -Algorithm sha256).Hash -ne $env:JAVA_OJDKBUILD_SHA256) { \
23+
Write-Host 'FAILED!'; \
24+
exit 1; \
25+
}; \
26+
\
27+
Write-Host 'Expanding ...'; \
28+
Expand-Archive ojdkbuild.zip -DestinationPath C:\; \
29+
\
30+
Write-Host 'Renaming ...'; \
31+
Move-Item \
32+
-Path ('C:\{0}' -f ($env:JAVA_OJDKBUILD_ZIP -Replace '.zip$', '')) \
33+
-Destination $env:JAVA_HOME \
34+
; \
35+
\
36+
Write-Host 'Verifying install ...'; \
37+
Write-Host ' java -version'; java -version; \
38+
Write-Host ' javac -version'; javac -version; \
39+
\
40+
Write-Host 'Removing ...'; \
41+
Remove-Item ojdkbuild.zip -Force; \
42+
\
43+
Write-Host 'Complete.';

generate-stackbrew-library.sh

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,18 +109,25 @@ for version in "${versions[@]}"; do
109109
Directory: $version
110110
EOE
111111

112-
for variant in alpine; do
113-
[ -f "$version/$variant/Dockerfile" ] || continue
112+
for v in \
113+
alpine \
114+
windows/windowsservercore windows/nanoserver \
115+
; do
116+
dir="$version/$v"
117+
variant="$(basename "$v")"
114118

115-
commit="$(dirCommit "$version/$variant")"
119+
[ -f "$dir/Dockerfile" ] || continue
116120

117-
fullVersion="$(git show "$commit":"$version/$variant/Dockerfile" | awk '$1 == "ENV" && $2 == "JAVA_VERSION" { gsub(/~/, "-", $3); print $3; exit }')"
121+
commit="$(dirCommit "$dir")"
122+
123+
fullVersion="$(git show "$commit":"$dir/Dockerfile" | awk '$1 == "ENV" && $2 == "JAVA_VERSION" { gsub(/~/, "-", $3); print $3; exit }')"
118124

119125
echo
120126
cat <<-EOE
121127
Tags: $(join ', ' $(aliases "$javaVersion" "$javaType" "$fullVersion" "$variant"))
122128
GitCommit: $commit
123-
Directory: $version/$variant
129+
Directory: $dir
124130
EOE
131+
[ "$variant" = "$v" ] || echo "Constraints: $variant"
125132
done
126133
done

update.sh

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,44 @@ EOD
315315
travisEnv='\n - VERSION='"$version"' VARIANT='"$variant$travisEnv"
316316
fi
317317

318+
if [ -d "$version/windows" ]; then
319+
ojdkbuildVersion="$(
320+
git ls-remote --tags 'https://github.com/ojdkbuild/ojdkbuild' \
321+
| cut -d/ -f3 \
322+
| grep -E '^1[.]'"$javaVersion"'[.]' \
323+
| sort -V \
324+
| tail -1
325+
)"
326+
if [ -z "$ojdkbuildVersion" ]; then
327+
echo >&2 "error: '$version/windows' exists, but Java $javaVersion doesn't appear to have a corresponding ojdkbuild release"
328+
exit 1
329+
fi
330+
ojdkbuildZip="$(
331+
curl -fsSL "https://github.com/ojdkbuild/ojdkbuild/releases/tag/$ojdkbuildVersion" \
332+
| grep --only-matching -E 'java-'"$(echo "$ojdkbuildVersion" | cut -d. -f1-3)"'-openjdk-'"$ojdkbuildVersion"'[.][b0-9]+[.]ojdkbuild[.]windows[.]x86_64[.]zip' \
333+
| sort -u
334+
)"
335+
if [ -z "$ojdkbuildZip" ]; then
336+
echo >&2 "error: $ojdkbuildVersion doesn't appear to have the release file we need (yet?)"
337+
exit 1
338+
fi
339+
ojdkbuildSha256="$(curl -fsSL "https://github.com/ojdkbuild/ojdkbuild/releases/download/${ojdkbuildVersion}/${ojdkbuildZip}.sha256" | cut -d' ' -f1)"
340+
if [ -z "$ojdkbuildSha256" ]; then
341+
echo >&2 "error: $ojdkbuildVersion seems to have $ojdkbuildZip, but no sha256 for it"
342+
exit 1
343+
fi
344+
ojdkJavaVersion="$(echo "$ojdkbuildVersion" | cut -d. -f2,4 | cut -d- -f1 | tr . u)" # convert "1.8.0.111-3" into "8u111"
345+
(
346+
set -x
347+
sed -ri \
348+
-e 's/^(ENV JAVA_VERSION) .*/\1 '"$ojdkJavaVersion"'/' \
349+
-e 's/^(ENV JAVA_OJDKBUILD_VERSION) .*/\1 '"$ojdkbuildVersion"'/' \
350+
-e 's/^(ENV JAVA_OJDKBUILD_ZIP) .*/\1 '"$ojdkbuildZip"'/' \
351+
-e 's/^(ENV JAVA_OJDKBUILD_SHA256) .*/\1 '"$ojdkbuildSha256"'/' \
352+
"$version"/windows/*/Dockerfile
353+
)
354+
fi
355+
318356
travisEnv='\n - VERSION='"$version$travisEnv"
319357
done
320358

0 commit comments

Comments
 (0)