Skip to content

Proposal: Add Windows version of OpenJDK #88

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 10, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions 8-jdk/windows/nanoserver/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
FROM microsoft/nanoserver

# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

ENV JAVA_HOME C:\\ojdkbuild
RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \
Write-Host ('Updating PATH: {0}' -f $newPath); \
# Nano Server does not have "[Environment]::SetEnvironmentVariable()"
setx /M PATH $newPath;

# https://github.com/ojdkbuild/ojdkbuild/releases
ENV JAVA_VERSION 8u111
ENV JAVA_OJDKBUILD_VERSION 1.8.0.111-3
ENV JAVA_OJDKBUILD_ZIP java-1.8.0-openjdk-1.8.0.111-3.b15.ojdkbuild.windows.x86_64.zip
ENV JAVA_OJDKBUILD_SHA256 e080371bf57536668416157660e05d95fe04db15da36234d32bda8e301bb0454

RUN $url = ('https://github.com/ojdkbuild/ojdkbuild/releases/download/{0}/{1}' -f $env:JAVA_OJDKBUILD_VERSION, $env:JAVA_OJDKBUILD_ZIP); \
Write-Host ('Downloading {0} ...' -f $url); \
Invoke-WebRequest -Uri $url -OutFile 'ojdkbuild.zip'; \
Write-Host ('Verifying sha256 ({0}) ...' -f $env:JAVA_OJDKBUILD_SHA256); \
if ((Get-FileHash ojdkbuild.zip -Algorithm sha256).Hash -ne $env:JAVA_OJDKBUILD_SHA256) { \
Write-Host 'FAILED!'; \
exit 1; \
}; \
\
Write-Host 'Expanding ...'; \
Expand-Archive ojdkbuild.zip -DestinationPath C:\; \
\
Write-Host 'Renaming ...'; \
Move-Item \
-Path ('C:\{0}' -f ($env:JAVA_OJDKBUILD_ZIP -Replace '.zip$', '')) \
-Destination $env:JAVA_HOME \
; \
\
Write-Host 'Verifying install ...'; \
Write-Host ' java -version'; java -version; \
Write-Host ' javac -version'; javac -version; \
\
Write-Host 'Removing ...'; \
Remove-Item ojdkbuild.zip -Force; \
\
Write-Host 'Complete.';
43 changes: 43 additions & 0 deletions 8-jdk/windows/windowsservercore/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
FROM microsoft/windowsservercore

# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

ENV JAVA_HOME C:\\ojdkbuild
RUN $newPath = ('{0}\bin;{1}' -f $env:JAVA_HOME, $env:PATH); \
Write-Host ('Updating PATH: {0}' -f $newPath); \
# Nano Server does not have "[Environment]::SetEnvironmentVariable()"
setx /M PATH $newPath;

# https://github.com/ojdkbuild/ojdkbuild/releases
ENV JAVA_VERSION 8u111
ENV JAVA_OJDKBUILD_VERSION 1.8.0.111-3
ENV JAVA_OJDKBUILD_ZIP java-1.8.0-openjdk-1.8.0.111-3.b15.ojdkbuild.windows.x86_64.zip
ENV JAVA_OJDKBUILD_SHA256 e080371bf57536668416157660e05d95fe04db15da36234d32bda8e301bb0454

RUN $url = ('https://github.com/ojdkbuild/ojdkbuild/releases/download/{0}/{1}' -f $env:JAVA_OJDKBUILD_VERSION, $env:JAVA_OJDKBUILD_ZIP); \
Write-Host ('Downloading {0} ...' -f $url); \
Invoke-WebRequest -Uri $url -OutFile 'ojdkbuild.zip'; \
Write-Host ('Verifying sha256 ({0}) ...' -f $env:JAVA_OJDKBUILD_SHA256); \
if ((Get-FileHash ojdkbuild.zip -Algorithm sha256).Hash -ne $env:JAVA_OJDKBUILD_SHA256) { \
Write-Host 'FAILED!'; \
exit 1; \
}; \
\
Write-Host 'Expanding ...'; \
Expand-Archive ojdkbuild.zip -DestinationPath C:\; \
\
Write-Host 'Renaming ...'; \
Move-Item \
-Path ('C:\{0}' -f ($env:JAVA_OJDKBUILD_ZIP -Replace '.zip$', '')) \
-Destination $env:JAVA_HOME \
; \
\
Write-Host 'Verifying install ...'; \
Write-Host ' java -version'; java -version; \
Write-Host ' javac -version'; javac -version; \
\
Write-Host 'Removing ...'; \
Remove-Item ojdkbuild.zip -Force; \
\
Write-Host 'Complete.';
17 changes: 12 additions & 5 deletions generate-stackbrew-library.sh
Original file line number Diff line number Diff line change
Expand Up @@ -109,18 +109,25 @@ for version in "${versions[@]}"; do
Directory: $version
EOE

for variant in alpine; do
[ -f "$version/$variant/Dockerfile" ] || continue
for v in \
alpine \
windows/windowsservercore windows/nanoserver \
; do
dir="$version/$v"
variant="$(basename "$v")"

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

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

fullVersion="$(git show "$commit":"$dir/Dockerfile" | awk '$1 == "ENV" && $2 == "JAVA_VERSION" { gsub(/~/, "-", $3); print $3; exit }')"

echo
cat <<-EOE
Tags: $(join ', ' $(aliases "$javaVersion" "$javaType" "$fullVersion" "$variant"))
GitCommit: $commit
Directory: $version/$variant
Directory: $dir
EOE
[ "$variant" = "$v" ] || echo "Constraints: $variant"
done
done
38 changes: 38 additions & 0 deletions update.sh
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,44 @@ EOD
travisEnv='\n - VERSION='"$version"' VARIANT='"$variant$travisEnv"
fi

if [ -d "$version/windows" ]; then
ojdkbuildVersion="$(
git ls-remote --tags 'https://github.com/ojdkbuild/ojdkbuild' \
| cut -d/ -f3 \
| grep -E '^1[.]'"$javaVersion"'[.]' \
| sort -V \
| tail -1
)"
if [ -z "$ojdkbuildVersion" ]; then
echo >&2 "error: '$version/windows' exists, but Java $javaVersion doesn't appear to have a corresponding ojdkbuild release"
exit 1
fi
ojdkbuildZip="$(
curl -fsSL "https://github.com/ojdkbuild/ojdkbuild/releases/tag/$ojdkbuildVersion" \
| grep --only-matching -E 'java-'"$(echo "$ojdkbuildVersion" | cut -d. -f1-3)"'-openjdk-'"$ojdkbuildVersion"'[.][b0-9]+[.]ojdkbuild[.]windows[.]x86_64[.]zip' \
| sort -u
)"
if [ -z "$ojdkbuildZip" ]; then
echo >&2 "error: $ojdkbuildVersion doesn't appear to have the release file we need (yet?)"
exit 1
fi
ojdkbuildSha256="$(curl -fsSL "https://github.com/ojdkbuild/ojdkbuild/releases/download/${ojdkbuildVersion}/${ojdkbuildZip}.sha256" | cut -d' ' -f1)"
if [ -z "$ojdkbuildSha256" ]; then
echo >&2 "error: $ojdkbuildVersion seems to have $ojdkbuildZip, but no sha256 for it"
exit 1
fi
ojdkJavaVersion="$(echo "$ojdkbuildVersion" | cut -d. -f2,4 | cut -d- -f1 | tr . u)" # convert "1.8.0.111-3" into "8u111"
(
set -x
sed -ri \
-e 's/^(ENV JAVA_VERSION) .*/\1 '"$ojdkJavaVersion"'/' \
-e 's/^(ENV JAVA_OJDKBUILD_VERSION) .*/\1 '"$ojdkbuildVersion"'/' \
-e 's/^(ENV JAVA_OJDKBUILD_ZIP) .*/\1 '"$ojdkbuildZip"'/' \
-e 's/^(ENV JAVA_OJDKBUILD_SHA256) .*/\1 '"$ojdkbuildSha256"'/' \
"$version"/windows/*/Dockerfile
)
fi

travisEnv='\n - VERSION='"$version$travisEnv"
done

Expand Down