Skip to content
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

Add AdoptOpenJDK Images (Includes both HotSpot and Eclipse OpenJ9) #5710

Merged
merged 8 commits into from
May 24, 2019

Conversation

dinogun
Copy link
Contributor

@dinogun dinogun commented Apr 10, 2019

  • associated with or contacted upstream?
    - Yes, this is from the AdoptOpenJDK community, and I'm the maintainer for the current AdoptOpenJDK docker images.
  • does it fit into one of the common categories? ("service", "language stack", "base distribution")
    - Language Runtime
  • is it reasonably popular, or does it solve a particular use case well?
    - The current AdoptOpenJDK docker images have over 1.8M pulls across releases and the tarballs from the same site have over 20M downloads.
  • does a documentation PR exist? (should be reviewed and merged at roughly the same time so that we don't have an empty image page on the Hub for very long)
    - Docs PR
  • dockerization review for best practices and cache gotchas/improvements (ala the official review guidelines)?
    - The dockerfiles and scripts have been derived from the ibmjava official images.
  • 2+ dockerization review?
  • existing official images have been considered as a base? (ie, if foobar needs Node.js, has FROM node:... instead of grabbing node via other means been considered?)
  • if FROM scratch, tarballs only exist in a single commit within the associated history?
  • passes current tests? any simple new tests that might be appropriate to add? (https://github.com/docker-library/official-images/tree/master/test)

@dinogun
Copy link
Contributor Author

dinogun commented Apr 10, 2019

This PR is a combined version of earlier PRs #5433 and #5434. Hopefully this should address @tianon's concerns on multiple AdoptOpenJDK images.

@dinogun dinogun changed the title Add OpenJDK + HotSpot and OpenJDK + Eclipse OpenJ9 images from AdoptOpenJDK Add AdoptOpenJDK Images (Includes both HotSpot and Eclipse OpenJ9) Apr 10, 2019
@dinogun
Copy link
Contributor Author

dinogun commented Apr 15, 2019

Just thought I'd summarize the discussions from the previous PRs as well as try and differentiate this image from the ones currently available on DockerHub.

AdoptOpenJDK has now become the collaboration point for all of the vendors involved in OpenJDK (Amazon, Azul, GoDaddy, IBM, jClarity, Microsoft, Pivotal, Red Hat et al are all sponsors / major backers and more are rolling in). With Red Hat leading Java 8 and Java 11 LTS code streams that Adopt will be the defacto OpenJDK provider for those releases and any other LTS release after the first 6 months (Oracle hands over leadership at that point).

The OpenJDK binaries (Both HotSpot and OpenJ9) are being built by using the AdoptOpenJDK infrastructure. The main USP for AdoptOpenJDK has been the completely Open Source and community way to build, test, distribute and support the OpenJDK binaries being built by it. There have been a number of users who have been building OpenJDK themselves for whatever reasons and now have taken to AdoptOpenJDK to get consistent binaries across a wide variety of platforms that has gone through a lot of testing. Another important aspect is support and AdoptOpenJDK has a defined roadmap to support OpenJDK builds, more details can be found here.

Currently OpenJDK with Eclipse OpenJ9 is being exclusively distributed through the AdoptOpenJDK framework. Eclipse OpenJ9 is an alternative JVM that implements the Java Virtual Machine Specification and is a replacement for the HotSpot VM. OpenJ9 has some impressive stats for performance such as 42% faster startup, 66% smaller memory footprint at comparable throughput to HotSpot. Please see this link for more details.

Please note that as it stands right now, ibmjava supports only Version 8 with no plans for future releases. (This may change however). This also means that a lot of other projects that currently use ibmjava, are hoping to have their official images based on OpenJ9. Eg, websphere-liberty, open-liberty. There are a number of other projects which we hope would pickup OpenJ9 as well such as tomcat, maven, gradle, jenkins etc, which can only happen if this is available as an official image.

Please let us know if there any further questions, would be happy to answer them or as @karianna suggested, we can discuss them over a call as well. Thank You !

@NottyCode
Copy link
Contributor

I would very much like to produce open-liberty images based on a fully open stack. Without this PR I would have to use openjdk to get that which has a much longer startup time and larger memory footprint than ibmjava. When we created the open-liberty images we decided startup time and memory footprint were more important than an open source Java. Since then OpenJ9 came along giving us the performance benefits of ibmjava, while being fully open source. These builds are available through AdoptOpenJDK. I would very much like to see this PR adopted so I have a fully open stack for open-liberty, while also getting the best performance characteristics for docker based deployments.

@tellison
Copy link

@dinogun gives a very good write-up for the justification, and I'll like to emphasize a point he made in case it gets lost in there:

With Red Hat leading Java 8 and Java 11 LTS code streams that Adopt will be the
defacto OpenJDK provider for those releases and any other LTS release after the
first 6 months (Oracle hands over leadership at that point).

The OpenJDK 8 and OpenJDK 11 open source streams now come from the community. The canonical builds of OpenJDK 8 and 11 are being published by the OpenJDK project at AdoptOpenJDK, as described on the jdk-updates mailing list.

That is to say that anyone who wishes to use the official project released build of OpenJDK will be getting it from AdoptOpenJDK. It would be strongly desirable if that is made available to them as a tagged image alongside the other AdoptOpenJDK images to provide an equivalent across the widest platform coverage of any OpenJDK builder.

@tianon
Copy link
Member

tianon commented Apr 17, 2019

Appreciate the naming change -- IMO this makes much more sense given that these are both "AdoptOpenJDK builds" and that the underlying VM is the only bit that really differentiates them.

Looking at this a bit deeper, here's a few initial thoughts (both on organization and Dockerization):

  1. the tag names are all over the place (very inconsistent use of - vs _, inconsistent conversion of things like 12+9 to either 12_9 vs the misleading 12.9 etc):

    $ bashbrew list https://github.com/docker-library/official-images/raw/223056f2f172027332dd07f9ee63bc0d92e50381/library/adoptopenjdk
    adoptopenjdk:latest
    adoptopenjdk:hotspot
    adoptopenjdk:hotspot-8
    adoptopenjdk:hotspot-8-jdk
    adoptopenjdk:hotspot-jdk
    adoptopenjdk:jdk8u202-b08
    adoptopenjdk:hotspot-8-jre
    adoptopenjdk:hotspot-jre
    adoptopenjdk:jre8u202-b08
    adoptopenjdk:hotspot-8-jdk-alpine
    adoptopenjdk:hotspot-jdk-alpine
    adoptopenjdk:jdk8u202-b08-alpine
    adoptopenjdk:hotspot-8-jre-alpine
    adoptopenjdk:hotspot-jre-alpine
    adoptopenjdk:jre8u202-b08-alpine
    adoptopenjdk:hotspot-8-slim
    adoptopenjdk:hotspot-slim
    adoptopenjdk:hotspot-8-jdk-slim
    adoptopenjdk:jdk8u202-b08-slim
    adoptopenjdk:hotspot-8-alpine-slim
    adoptopenjdk:hotspot-alpine-slim
    adoptopenjdk:hotspot-8-jdk-alpine-slim
    adoptopenjdk:jdk8u202-b08-alpine-slim
    adoptopenjdk:hotspot-11
    adoptopenjdk:hotspot-11-jdk
    adoptopenjdk:jdk-11.0.2.9
    adoptopenjdk:hotspot-11-jre
    adoptopenjdk:jre-11.0.2.9
    adoptopenjdk:hotspot-11-jdk-alpine
    adoptopenjdk:jdk-11.0.2.9-alpine
    adoptopenjdk:hotspot-11-jre-alpine
    adoptopenjdk:jre-11.0.2.9-alpine
    adoptopenjdk:hotspot-11-slim
    adoptopenjdk:hotspot-11-jdk-slim
    adoptopenjdk:jdk-11.0.2.9-slim
    adoptopenjdk:hotspot-11-alpine-slim
    adoptopenjdk:hotspot-11-jdk-alpine-slim
    adoptopenjdk:jdk-11.0.2.9-alpine-slim
    adoptopenjdk:hotspot-12
    adoptopenjdk:hotspot-12-jdk
    adoptopenjdk:jdk-12.33
    adoptopenjdk:hotspot-12-jre
    adoptopenjdk:jre-12.33
    adoptopenjdk:hotspot-12-jdk-alpine
    adoptopenjdk:jdk-12.33-alpine
    adoptopenjdk:hotspot-12-jre-alpine
    adoptopenjdk:jre-12.33-alpine
    adoptopenjdk:hotspot-12-slim
    adoptopenjdk:hotspot-12-jdk-slim
    adoptopenjdk:jdk-12.33-slim
    adoptopenjdk:hotspot-12-alpine-slim
    adoptopenjdk:hotspot-12-jdk-alpine-slim
    adoptopenjdk:jdk-12.33-alpine-slim
    adoptopenjdk:openj9
    adoptopenjdk:openj9-8
    adoptopenjdk:openj9-8-jdk
    adoptopenjdk:openj9-jdk
    adoptopenjdk:jdk8u202-b08_openj9-0.12.1
    adoptopenjdk:openj9-8-jre
    adoptopenjdk:openj9-jre
    adoptopenjdk:jre8u202-b08_openj9-0.12.1
    adoptopenjdk:openj9-8-jdk-alpine
    adoptopenjdk:openj9-jdk-alpine
    adoptopenjdk:jdk8u202-b08_openj9-0.12.1-alpine
    adoptopenjdk:openj9-8-jre-alpine
    adoptopenjdk:openj9-jre-alpine
    adoptopenjdk:jre8u202-b08_openj9-0.12.1-alpine
    adoptopenjdk:openj9-8-slim
    adoptopenjdk:openj9-slim
    adoptopenjdk:openj9-8-jdk-slim
    adoptopenjdk:jdk8u202-b08_openj9-0.12.1-slim
    adoptopenjdk:openj9-8-alpine-slim
    adoptopenjdk:openj9-alpine-slim
    adoptopenjdk:openj9-8-jdk-alpine-slim
    adoptopenjdk:jdk8u202-b08_openj9-0.12.1-alpine-slim
    adoptopenjdk:openj9-11
    adoptopenjdk:openj9-11-jdk
    adoptopenjdk:jdk-11.0.2.9_openj9-0.12.1
    adoptopenjdk:openj9-11-jre
    adoptopenjdk:jre-11.0.2.9_openj9-0.12.1
    adoptopenjdk:openj9-11-jdk-alpine
    adoptopenjdk:jdk-11.0.2.9_openj9-0.12.1-alpine
    adoptopenjdk:openj9-11-jre-alpine
    adoptopenjdk:jre-11.0.2.9_openj9-0.12.1-alpine
    adoptopenjdk:openj9-11-slim
    adoptopenjdk:openj9-11-jdk-slim
    adoptopenjdk:jdk-11.0.2.9_openj9-0.12.1-slim
    adoptopenjdk:openj9-11-alpine-slim
    adoptopenjdk:openj9-11-jdk-alpine-slim
    adoptopenjdk:jdk-11.0.2.9_openj9-0.12.1-alpine-slim
    adoptopenjdk:openj9-12
    adoptopenjdk:openj9-12-jdk
    adoptopenjdk:jdk-12.33_openj9-0.13.0
    adoptopenjdk:openj9-12-jre
    adoptopenjdk:jre-12.33_openj9-0.13.0
    adoptopenjdk:openj9-12-jdk-alpine
    adoptopenjdk:jdk-12.33_openj9-0.13.0-alpine
    adoptopenjdk:openj9-12-jre-alpine
    adoptopenjdk:jre-12.33_openj9-0.13.0-alpine
    adoptopenjdk:openj9-12-slim
    adoptopenjdk:openj9-12-jdk-slim
    adoptopenjdk:jdk-12.33_openj9-0.13.0-slim
    adoptopenjdk:openj9-12-alpine-slim
    adoptopenjdk:openj9-12-jdk-alpine-slim
    adoptopenjdk:jdk-12.33_openj9-0.13.0-alpine-slim

    vs, for example, openjdk or php (which are comprised of different "sections" which either get abbreviated or collapsed for users to choose more or less granularity at each level of the tag name):

    $ bashbrew list openjdk php
    openjdk:13-ea-16-jdk-oraclelinux7
    openjdk:13-ea-16-oraclelinux7
    openjdk:13-ea-jdk-oraclelinux7
    openjdk:13-ea-oraclelinux7
    openjdk:13-jdk-oraclelinux7
    openjdk:13-oraclelinux7
    openjdk:13-ea-16-jdk-oracle
    openjdk:13-ea-16-oracle
    openjdk:13-ea-jdk-oracle
    openjdk:13-ea-oracle
    openjdk:13-jdk-oracle
    openjdk:13-oracle
    openjdk:13-ea-16-jdk
    openjdk:13-ea-16
    openjdk:13-ea-jdk
    openjdk:13-ea
    openjdk:13-jdk
    openjdk:13
    openjdk:13-ea-14-jdk-alpine3.9
    openjdk:13-ea-14-alpine3.9
    openjdk:13-ea-jdk-alpine3.9
    openjdk:13-ea-alpine3.9
    openjdk:13-jdk-alpine3.9
    openjdk:13-alpine3.9
    openjdk:13-ea-14-jdk-alpine
    openjdk:13-ea-14-alpine
    openjdk:13-ea-jdk-alpine
    openjdk:13-ea-alpine
    openjdk:13-jdk-alpine
    openjdk:13-alpine
    openjdk:13-ea-16-jdk-windowsservercore-ltsc2016
    openjdk:13-ea-16-windowsservercore-ltsc2016
    openjdk:13-ea-jdk-windowsservercore-ltsc2016
    openjdk:13-ea-windowsservercore-ltsc2016
    openjdk:13-jdk-windowsservercore-ltsc2016
    openjdk:13-windowsservercore-ltsc2016
    openjdk:13-ea-16-jdk-windowsservercore
    openjdk:13-ea-16-windowsservercore
    openjdk:13-ea-jdk-windowsservercore
    openjdk:13-ea-windowsservercore
    openjdk:13-jdk-windowsservercore
    openjdk:13-windowsservercore
    openjdk:13-ea-16-jdk
    openjdk:13-ea-16
    openjdk:13-ea-jdk
    openjdk:13-ea
    openjdk:13-jdk
    openjdk:13
    openjdk:13-ea-16-jdk-windowsservercore-1803
    openjdk:13-ea-16-windowsservercore-1803
    openjdk:13-ea-jdk-windowsservercore-1803
    openjdk:13-ea-windowsservercore-1803
    openjdk:13-jdk-windowsservercore-1803
    openjdk:13-windowsservercore-1803
    openjdk:13-ea-16-jdk-windowsservercore
    openjdk:13-ea-16-windowsservercore
    openjdk:13-ea-jdk-windowsservercore
    openjdk:13-ea-windowsservercore
    openjdk:13-jdk-windowsservercore
    openjdk:13-windowsservercore
    openjdk:13-ea-16-jdk
    openjdk:13-ea-16
    openjdk:13-ea-jdk
    openjdk:13-ea
    openjdk:13-jdk
    openjdk:13
    openjdk:13-ea-16-jdk-windowsservercore-1809
    openjdk:13-ea-16-windowsservercore-1809
    openjdk:13-ea-jdk-windowsservercore-1809
    openjdk:13-ea-windowsservercore-1809
    openjdk:13-jdk-windowsservercore-1809
    openjdk:13-windowsservercore-1809
    openjdk:13-ea-16-jdk-windowsservercore
    openjdk:13-ea-16-windowsservercore
    openjdk:13-ea-jdk-windowsservercore
    openjdk:13-ea-windowsservercore
    openjdk:13-jdk-windowsservercore
    openjdk:13-windowsservercore
    openjdk:13-ea-16-jdk
    openjdk:13-ea-16
    openjdk:13-ea-jdk
    openjdk:13-ea
    openjdk:13-jdk
    openjdk:13
    openjdk:12-jdk-oraclelinux7
    openjdk:12-oraclelinux7
    openjdk:jdk-oraclelinux7
    openjdk:oraclelinux7
    openjdk:12-jdk-oracle
    openjdk:12-oracle
    openjdk:jdk-oracle
    openjdk:oracle
    openjdk:12-jdk
    openjdk:12
    openjdk:jdk
    openjdk:latest
    openjdk:12-jdk-windowsservercore-ltsc2016
    openjdk:12-windowsservercore-ltsc2016
    openjdk:jdk-windowsservercore-ltsc2016
    openjdk:windowsservercore-ltsc2016
    openjdk:12-jdk-windowsservercore
    openjdk:12-windowsservercore
    openjdk:jdk-windowsservercore
    openjdk:windowsservercore
    openjdk:12-jdk
    openjdk:12
    openjdk:jdk
    openjdk:latest
    openjdk:12-jdk-windowsservercore-1803
    openjdk:12-windowsservercore-1803
    openjdk:jdk-windowsservercore-1803
    openjdk:windowsservercore-1803
    openjdk:12-jdk-windowsservercore
    openjdk:12-windowsservercore
    openjdk:jdk-windowsservercore
    openjdk:windowsservercore
    openjdk:12-jdk
    openjdk:12
    openjdk:jdk
    openjdk:latest
    openjdk:12-jdk-windowsservercore-1809
    openjdk:12-windowsservercore-1809
    openjdk:jdk-windowsservercore-1809
    openjdk:windowsservercore-1809
    openjdk:12-jdk-windowsservercore
    openjdk:12-windowsservercore
    openjdk:jdk-windowsservercore
    openjdk:windowsservercore
    openjdk:12-jdk
    openjdk:12
    openjdk:jdk
    openjdk:latest
    openjdk:11.0.2-jdk-oraclelinux7
    openjdk:11.0.2-oraclelinux7
    openjdk:11.0-jdk-oraclelinux7
    openjdk:11.0-oraclelinux7
    openjdk:11-jdk-oraclelinux7
    openjdk:11-oraclelinux7
    openjdk:11.0.2-jdk-oracle
    openjdk:11.0.2-oracle
    openjdk:11.0-jdk-oracle
    openjdk:11.0-oracle
    openjdk:11-jdk-oracle
    openjdk:11-oracle
    openjdk:11.0.3-jdk-stretch
    openjdk:11.0.3-stretch
    openjdk:11.0-jdk-stretch
    openjdk:11.0-stretch
    openjdk:11-jdk-stretch
    openjdk:11-stretch
    openjdk:11.0.3-jdk
    openjdk:11.0.3
    openjdk:11.0-jdk
    openjdk:11.0
    openjdk:11-jdk
    openjdk:11
    openjdk:11.0.3-jdk-slim-stretch
    openjdk:11.0.3-slim-stretch
    openjdk:11.0-jdk-slim-stretch
    openjdk:11.0-slim-stretch
    openjdk:11-jdk-slim-stretch
    openjdk:11-slim-stretch
    openjdk:11.0.3-jdk-slim
    openjdk:11.0.3-slim
    openjdk:11.0-jdk-slim
    openjdk:11.0-slim
    openjdk:11-jdk-slim
    openjdk:11-slim
    openjdk:11.0.2-jdk-windowsservercore-ltsc2016
    openjdk:11.0.2-windowsservercore-ltsc2016
    openjdk:11.0-jdk-windowsservercore-ltsc2016
    openjdk:11.0-windowsservercore-ltsc2016
    openjdk:11-jdk-windowsservercore-ltsc2016
    openjdk:11-windowsservercore-ltsc2016
    openjdk:11.0.2-jdk-windowsservercore
    openjdk:11.0.2-windowsservercore
    openjdk:11.0-jdk-windowsservercore
    openjdk:11.0-windowsservercore
    openjdk:11-jdk-windowsservercore
    openjdk:11-windowsservercore
    openjdk:11.0.2-jdk-windowsservercore-1803
    openjdk:11.0.2-windowsservercore-1803
    openjdk:11.0-jdk-windowsservercore-1803
    openjdk:11.0-windowsservercore-1803
    openjdk:11-jdk-windowsservercore-1803
    openjdk:11-windowsservercore-1803
    openjdk:11.0.2-jdk-windowsservercore
    openjdk:11.0.2-windowsservercore
    openjdk:11.0-jdk-windowsservercore
    openjdk:11.0-windowsservercore
    openjdk:11-jdk-windowsservercore
    openjdk:11-windowsservercore
    openjdk:11.0.2-jdk-windowsservercore-1809
    openjdk:11.0.2-windowsservercore-1809
    openjdk:11.0-jdk-windowsservercore-1809
    openjdk:11.0-windowsservercore-1809
    openjdk:11-jdk-windowsservercore-1809
    openjdk:11-windowsservercore-1809
    openjdk:11.0.2-jdk-windowsservercore
    openjdk:11.0.2-windowsservercore
    openjdk:11.0-jdk-windowsservercore
    openjdk:11.0-windowsservercore
    openjdk:11-jdk-windowsservercore
    openjdk:11-windowsservercore
    openjdk:11.0.3-jre-stretch
    openjdk:11.0-jre-stretch
    openjdk:11-jre-stretch
    openjdk:11.0.3-jre
    openjdk:11.0-jre
    openjdk:11-jre
    openjdk:11.0.3-jre-slim-stretch
    openjdk:11.0-jre-slim-stretch
    openjdk:11-jre-slim-stretch
    openjdk:11.0.3-jre-slim
    openjdk:11.0-jre-slim
    openjdk:11-jre-slim
    openjdk:8u212-jdk-stretch
    openjdk:8u212-stretch
    openjdk:8-jdk-stretch
    openjdk:8-stretch
    openjdk:8u212-jdk
    openjdk:8u212
    openjdk:8-jdk
    openjdk:8
    openjdk:8u212-jdk-slim-stretch
    openjdk:8u212-slim-stretch
    openjdk:8-jdk-slim-stretch
    openjdk:8-slim-stretch
    openjdk:8u212-jdk-slim
    openjdk:8u212-slim
    openjdk:8-jdk-slim
    openjdk:8-slim
    openjdk:8u201-jdk-alpine3.9
    openjdk:8u201-alpine3.9
    openjdk:8-jdk-alpine3.9
    openjdk:8-alpine3.9
    openjdk:8u201-jdk-alpine
    openjdk:8u201-alpine
    openjdk:8-jdk-alpine
    openjdk:8-alpine
    openjdk:8u201-jdk-windowsservercore-ltsc2016
    openjdk:8u201-windowsservercore-ltsc2016
    openjdk:8-jdk-windowsservercore-ltsc2016
    openjdk:8-windowsservercore-ltsc2016
    openjdk:8u201-jdk-windowsservercore
    openjdk:8u201-windowsservercore
    openjdk:8-jdk-windowsservercore
    openjdk:8-windowsservercore
    openjdk:8u201-jdk-windowsservercore-1803
    openjdk:8u201-windowsservercore-1803
    openjdk:8-jdk-windowsservercore-1803
    openjdk:8-windowsservercore-1803
    openjdk:8u201-jdk-windowsservercore
    openjdk:8u201-windowsservercore
    openjdk:8-jdk-windowsservercore
    openjdk:8-windowsservercore
    openjdk:8u201-jdk-windowsservercore-1809
    openjdk:8u201-windowsservercore-1809
    openjdk:8-jdk-windowsservercore-1809
    openjdk:8-windowsservercore-1809
    openjdk:8u201-jdk-windowsservercore
    openjdk:8u201-windowsservercore
    openjdk:8-jdk-windowsservercore
    openjdk:8-windowsservercore
    openjdk:8u212-jre-stretch
    openjdk:8-jre-stretch
    openjdk:8u212-jre
    openjdk:8-jre
    openjdk:8u212-jre-slim-stretch
    openjdk:8-jre-slim-stretch
    openjdk:8u212-jre-slim
    openjdk:8-jre-slim
    openjdk:8u201-jre-alpine3.9
    openjdk:8-jre-alpine3.9
    openjdk:8u201-jre-alpine
    openjdk:8-jre-alpine
    openjdk:7u211-jdk-jessie
    openjdk:7u211-jessie
    openjdk:7-jdk-jessie
    openjdk:7-jessie
    openjdk:7u211-jdk
    openjdk:7u211
    openjdk:7-jdk
    openjdk:7
    openjdk:7u211-jdk-slim-jessie
    openjdk:7u211-slim-jessie
    openjdk:7-jdk-slim-jessie
    openjdk:7-slim-jessie
    openjdk:7u211-jdk-slim
    openjdk:7u211-slim
    openjdk:7-jdk-slim
    openjdk:7-slim
    openjdk:7u211-jdk-alpine3.9
    openjdk:7u211-alpine3.9
    openjdk:7-jdk-alpine3.9
    openjdk:7-alpine3.9
    openjdk:7u211-jdk-alpine
    openjdk:7u211-alpine
    openjdk:7-jdk-alpine
    openjdk:7-alpine
    openjdk:7u211-jre-jessie
    openjdk:7-jre-jessie
    openjdk:7u211-jre
    openjdk:7-jre
    openjdk:7u211-jre-slim-jessie
    openjdk:7-jre-slim-jessie
    openjdk:7u211-jre-slim
    openjdk:7-jre-slim
    openjdk:7u211-jre-alpine3.9
    openjdk:7-jre-alpine3.9
    openjdk:7u211-jre-alpine
    openjdk:7-jre-alpine
    php:7.3.4-cli-stretch
    php:7.3-cli-stretch
    php:7-cli-stretch
    php:cli-stretch
    php:7.3.4-stretch
    php:7.3-stretch
    php:7-stretch
    php:stretch
    php:7.3.4-cli
    php:7.3-cli
    php:7-cli
    php:cli
    php:7.3.4
    php:7.3
    php:7
    php:latest
    php:7.3.4-apache-stretch
    php:7.3-apache-stretch
    php:7-apache-stretch
    php:apache-stretch
    php:7.3.4-apache
    php:7.3-apache
    php:7-apache
    php:apache
    php:7.3.4-fpm-stretch
    php:7.3-fpm-stretch
    php:7-fpm-stretch
    php:fpm-stretch
    php:7.3.4-fpm
    php:7.3-fpm
    php:7-fpm
    php:fpm
    php:7.3.4-zts-stretch
    php:7.3-zts-stretch
    php:7-zts-stretch
    php:zts-stretch
    php:7.3.4-zts
    php:7.3-zts
    php:7-zts
    php:zts
    php:7.3.4-cli-alpine3.9
    php:7.3-cli-alpine3.9
    php:7-cli-alpine3.9
    php:cli-alpine3.9
    php:7.3.4-alpine3.9
    php:7.3-alpine3.9
    php:7-alpine3.9
    php:alpine3.9
    php:7.3.4-cli-alpine
    php:7.3-cli-alpine
    php:7-cli-alpine
    php:cli-alpine
    php:7.3.4-alpine
    php:7.3-alpine
    php:7-alpine
    php:alpine
    php:7.3.4-fpm-alpine3.9
    php:7.3-fpm-alpine3.9
    php:7-fpm-alpine3.9
    php:fpm-alpine3.9
    php:7.3.4-fpm-alpine
    php:7.3-fpm-alpine
    php:7-fpm-alpine
    php:fpm-alpine
    php:7.3.4-zts-alpine3.9
    php:7.3-zts-alpine3.9
    php:7-zts-alpine3.9
    php:zts-alpine3.9
    php:7.3.4-zts-alpine
    php:7.3-zts-alpine
    php:7-zts-alpine
    php:zts-alpine
    php:7.3.4-cli-alpine3.8
    php:7.3-cli-alpine3.8
    php:7-cli-alpine3.8
    php:cli-alpine3.8
    php:7.3.4-alpine3.8
    php:7.3-alpine3.8
    php:7-alpine3.8
    php:alpine3.8
    php:7.3.4-fpm-alpine3.8
    php:7.3-fpm-alpine3.8
    php:7-fpm-alpine3.8
    php:fpm-alpine3.8
    php:7.3.4-zts-alpine3.8
    php:7.3-zts-alpine3.8
    php:7-zts-alpine3.8
    php:zts-alpine3.8
    php:7.2.17-cli-stretch
    php:7.2-cli-stretch
    php:7.2.17-stretch
    php:7.2-stretch
    php:7.2.17-cli
    php:7.2-cli
    php:7.2.17
    php:7.2
    php:7.2.17-apache-stretch
    php:7.2-apache-stretch
    php:7.2.17-apache
    php:7.2-apache
    php:7.2.17-fpm-stretch
    php:7.2-fpm-stretch
    php:7.2.17-fpm
    php:7.2-fpm
    php:7.2.17-zts-stretch
    php:7.2-zts-stretch
    php:7.2.17-zts
    php:7.2-zts
    php:7.2.17-cli-alpine3.9
    php:7.2-cli-alpine3.9
    php:7.2.17-alpine3.9
    php:7.2-alpine3.9
    php:7.2.17-cli-alpine
    php:7.2-cli-alpine
    php:7.2.17-alpine
    php:7.2-alpine
    php:7.2.17-fpm-alpine3.9
    php:7.2-fpm-alpine3.9
    php:7.2.17-fpm-alpine
    php:7.2-fpm-alpine
    php:7.2.17-zts-alpine3.9
    php:7.2-zts-alpine3.9
    php:7.2.17-zts-alpine
    php:7.2-zts-alpine
    php:7.2.17-cli-alpine3.8
    php:7.2-cli-alpine3.8
    php:7.2.17-alpine3.8
    php:7.2-alpine3.8
    php:7.2.17-fpm-alpine3.8
    php:7.2-fpm-alpine3.8
    php:7.2.17-zts-alpine3.8
    php:7.2-zts-alpine3.8
    php:7.1.28-cli-stretch
    php:7.1-cli-stretch
    php:7.1.28-stretch
    php:7.1-stretch
    php:7.1.28-cli
    php:7.1-cli
    php:7.1.28
    php:7.1
    php:7.1.28-apache-stretch
    php:7.1-apache-stretch
    php:7.1.28-apache
    php:7.1-apache
    php:7.1.28-fpm-stretch
    php:7.1-fpm-stretch
    php:7.1.28-fpm
    php:7.1-fpm
    php:7.1.28-zts-stretch
    php:7.1-zts-stretch
    php:7.1.28-zts
    php:7.1-zts
    php:7.1.28-cli-jessie
    php:7.1-cli-jessie
    php:7.1.28-jessie
    php:7.1-jessie
    php:7.1.28-apache-jessie
    php:7.1-apache-jessie
    php:7.1.28-fpm-jessie
    php:7.1-fpm-jessie
    php:7.1.28-zts-jessie
    php:7.1-zts-jessie
    php:7.1.28-cli-alpine3.9
    php:7.1-cli-alpine3.9
    php:7.1.28-alpine3.9
    php:7.1-alpine3.9
    php:7.1.28-cli-alpine
    php:7.1-cli-alpine
    php:7.1.28-alpine
    php:7.1-alpine
    php:7.1.28-fpm-alpine3.9
    php:7.1-fpm-alpine3.9
    php:7.1.28-fpm-alpine
    php:7.1-fpm-alpine
    php:7.1.28-zts-alpine3.9
    php:7.1-zts-alpine3.9
    php:7.1.28-zts-alpine
    php:7.1-zts-alpine
    php:7.1.28-cli-alpine3.8
    php:7.1-cli-alpine3.8
    php:7.1.28-alpine3.8
    php:7.1-alpine3.8
    php:7.1.28-fpm-alpine3.8
    php:7.1-fpm-alpine3.8
    php:7.1.28-zts-alpine3.8
    php:7.1-zts-alpine3.8

    Here's an example of a potential syntax that matches what I'm proposing (you don't necessarily need to go with this, but it should hopefully give a better idea what I mean; also worth noting that as seen above in php and openjdk, these are in the reverse order of what they should be for our tools to DTRT and avoid tagging something like 11.0.3 as 11.0.2):

    adoptopenjdk:11
    adoptopenjdk:11-jre
    adoptopenjdk:11.0.2-jre
    adoptopenjdk:11.0.2_9-jre
    adoptopenjdk:11-jre-hotspot
    adoptopenjdk:11.0.2-jre-hotspot
    adoptopenjdk:11.0.2_9-jre-hotspot
    adoptopenjdk:11-jre-openj9
    adoptopenjdk:11-jre-openj9-0.12.1
    adoptopenjdk:11.0.2-jre-openj9-0.12.1
    adoptopenjdk:11.0.2_9-jre-openj9-0.12.1
    adoptopenjdk:11.0.2_9-jre-openj9-0.12.1-windows
    adoptopenjdk:11.0.2_9-jre-openj9-0.12.1-windows-1709

    (Things like consistently converting + to _ which matches upstream's filenames at https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/jdk-11.0.2%2B9 and differentiates something like 11+7/11_7 from 11.0.2+9/11.0.2_9.)

  2. I'm very concerned about the "slim" variants and the things that they're removing -- it all seems well and good to remove by my own untrained eyes, but this does seem like the kind of stuff that should come from a more "canonical" source (such as an official "slim" release artifact from AdoptOpenJDK directly) rather than simply being a script embedded in the Docker images (especially since the slimming effect they have seems to be something that would be useful for other use cases outside Docker too). Perhaps the script itself for "slimming" a given JRE could simply become part of the official distribution of OpenJDK/AdoptOpenJDK?

  3. Adding Alpine variants that include glibc seems a bit premature, especially given that the OpenJDK project as a whole does not officially support Alpine/musl today (see Project Portola / Add initial all-Oracle variants (oraclelinux + jdk.java.net tarballs) openjdk#235 (comment)), and the only things I can find about AdoptOpenJDK's support for Alpine are pointers to the glibc-based Docker image (which makes sense given that AdoptOpenJDK is supposed to be a faithful representation of OpenJDK upstream).

  4. Any particular reason for the preference of an Ubuntu base over something else? Is there any official recommendation for a "production" base from the AdoptOpenJDK project as a whole? (For example, if the goal is to have something small, ubuntu:18.04 is ~88.9MB while debian:stretch-slim is ~55.3MB and reasonably equivalent.)

(Going to withhold further low-level Dockerization comments for now since this discussion might lead to drastic changes and I don't want the important bits of this to get lost in the weeds of minor Dockerfile changes until we iron out the high-level bits. ❤️)

@dinogun
Copy link
Contributor Author

dinogun commented Apr 18, 2019

@tianon Thank you for taking the time to do the detailed review, appreciate it ! ❤️

  1. tags - Will try and fix some of the issues that you have mentioned. But just wanted to mention why they are the way they are right now

    • Since we are now having a singlre repo for both hotspot and openj9, I wanted the VM tag to be the prefix in the tag to be able to differentiate better.
    • For some of the builds, AdoptOpenJDK already has the VM name in the versioning, eg jre8u202-b08_openj9-0.12.1. This means we are using the jre8u202-b08 builds from openjdk and openj9 version openj9-0.12.1. Which is why I kept them as-is.
    • Agreed on converting 11.0.2+9 to 11.0.2_9.
    • But I do agree that the overall effect makes the tags not follow any specific rule. Will update it to something more sane shortly.
  2. Slim - The plan at AdoptOpenJDK is to make the slim script as part of the build itself (and generate slim builds). This should happen in a subsequent PR and docker process will be updated appropriately.

  3. Agree that the Alpine variants are pre-mature as in, it needs glibc and they are not multi-arch right now. But we have a number of users for these builds and we would like to keep it if there is no strong objection.

  4. Ubuntu is one of the OSes that AdoptOpenJDK tests on all the supported arches, but not debian. (We test on Debian as well but only on x86_64).

$version-$package-$vm
$version-$package-$vm-alpine
$version-$package-$vm-slim
$version-$package-$vm-alpine-slim
@dinogun
Copy link
Contributor Author

dinogun commented Apr 18, 2019

@tianon Wrt the tags, does this look good to you ?

$version-$package-$vm
$version-$package-$vm-alpine
$version-$package-$vm-slim
$version-$package-$vm-alpine-slim

Where $package is one of jdk or jre and $vm is one of hotspot or openj9.

Tag list
8-hotspot, 8-jdk-hotspot, 8u202-b08-jdk-hotspot
8-jre-hotspot, 8u202-b08-jre-hotspot
8-jdk-hotspot-alpine, 8u202-b08-jdk-hotspot-alpine
8-jre-hotspot-alpine, 8u202-b08-jre-hotspot-alpine
8-jdk-hotspot-slim, 8u202-b08-jdk-hotspot-slim
8-jdk-hotspot-alpine-slim, 8u202-b08-jdk-hotspot-alpine-slim
11-hotspot, 11-jdk-hotspot, 11.0.2_9-jdk-hotspot
11-jre-hotspot, 11.0.2_9-jre-hotspot
11-jdk-hotspot-alpine, 11.0.2_9-jdk-hotspot-alpine
11-jre-hotspot-alpine, 11.0.2_9-jre-hotspot-alpine
11-jdk-hotspot-slim, 11.0.2_9-jdk-hotspot-slim
11-jdk-hotspot-alpine-slim, 11.0.2_9-jdk-hotspot-alpine-slim
latest, hotspot, 12-hotspot, 12-jdk-hotspot, 12_33-jdk-hotspot
12-jre-hotspot, 12_33-jre-hotspot
12-jdk-hotspot-alpine, 12_33-jdk-hotspot-alpine
12-jre-hotspot-alpine, 12_33-jre-hotspot-alpine
12-jdk-hotspot-slim, 12_33-jdk-hotspot-slim
12-jdk-hotspot-alpine-slim, 12_33-jdk-hotspot-alpine-slim
8-openj9, 8-jdk-openj9, 8u202-b08-jdk-openj9-0.12.1
8-jre-openj9, 8u202-b08-jre-openj9-0.12.1
8-jdk-openj9-alpine, 8u202-b08-jdk-openj9-0.12.1-alpine
8-jre-openj9-alpine, 8u202-b08-jre-openj9-0.12.1-alpine
8-jdk-openj9-slim, 8u202-b08-jdk-openj9-0.12.1-slim
8-jdk-openj9-alpine-slim, 8u202-b08-jdk-openj9-0.12.1-alpine-slim
11-openj9, 11-jdk-openj9, 11.0.2_9-jdk-openj9-0.12.1
11-jre-openj9, 11.0.2_9-jre-openj9-0.12.1
11-jdk-openj9-alpine, 11.0.2_9-jdk-openj9-0.12.1-alpine
11-jre-openj9-alpine, 11.0.2_9-jre-openj9-0.12.1-alpine
11-jdk-openj9-slim, 11.0.2_9-jdk-openj9-0.12.1-slim
11-jdk-openj9-alpine-slim, 11.0.2_9-jdk-openj9-0.12.1-alpine-slim
openj9, 12-openj9, 12-jdk-openj9, 12_33-jdk-openj9-0.13.0
12-jre-openj9, 12_33-jre-openj9-0.13.0
12-jdk-openj9-alpine, 12_33-jdk-openj9-0.13.0-alpine
12-jre-openj9-alpine, 12_33-jre-openj9-0.13.0-alpine
12-jdk-openj9-slim, 12_33-jdk-openj9-0.13.0-slim
12-jdk-openj9-alpine-slim, 12_33-jdk-openj9-0.13.0-alpine-slim

@tianon
Copy link
Member

tianon commented Apr 24, 2019

  1. re: tags; that looks fine, but I do want to be clear that I don't have strong feelings on the order -- if you feel that $vm should be first, that's perfectly fine (I just want it to be consistently applied as you've demonstrated 👍)

  2. The plan at AdoptOpenJDK is to make the slim script as part of the build itself (and generate slim builds).

    Honestly, if that's the case I'd prefer to add slim variants until that happens -- it's quite a bit of additional complexity that I think makes a ton more sense to have in AdoptOpenJDK itself (and thus have more eyes reviewing, maintaining, and ultimately supporting).

  3. But we have a number of users for these builds and we would like to keep it if there is no strong objection.

    I would really prefer to skip them until they're officially supported by the project -- I think existing users would/could still be served by the existing images under https://hub.docker.com/u/adoptopenjdk, right? (where these builds could still be pushed/maintained actively until official support arrives?)

    To clarify, I'm hesitant to move forward publishing artifacts that really aren't officially supported by the AdoptOpenJDK project with the "official" label the images here provide.

  4. Ubuntu is one of the OSes that AdoptOpenJDK tests on all the supported arches, but not debian.

    Definitely fair -- is there any upstream documentation, build matrix, discussion, etc we could link to here for posterity looking to determine why this base was chosen?

Also updated to newer versions 8u212-b03, 11.0.3_7, 12.0.1_12.
Updated OpenJ9 to v0.14.0 for Java 8 and Java 11 and v0.14.1 for Java 12.
@dinogun
Copy link
Contributor Author

dinogun commented Apr 26, 2019

  1. Have removed the Alpine and Slim variants for now. We will pursue them once they are more mature.
  2. The detailed supported platform and OS list can be found here.
  3. Updated to newer Java build levels, 8u212-b03, 11.0.3_7, 12.0.1_12. Updated OpenJ9 to v0.14.0 for Java 8 and Java 11 and v0.14.1 for Java 12.

@tianon Thank you for the detailed reviews so far. Please let me know if you need any further changes. Thank you!

@dinogun
Copy link
Contributor Author

dinogun commented May 2, 2019

Hi @tianon, do let me know if there are any changes needed to the Dockerfiles, you did mention there were a few changes needed in one of your earlier comments, thanks

@arthurdm
Copy link
Contributor

arthurdm commented May 6, 2019

hi @tianon - anything else needed from the AdoptOpenJDK team on this PR?

@mstoodle
Copy link

hi @tianon could you please outline the next steps needed here? Or maybe the remaining part of the process documented somewhere so we can see what needs to happen next?

@dinogun
Copy link
Contributor Author

dinogun commented May 23, 2019

Added now.

what about arm32v7 which the Dockerfiles themselves appear to already support too? (https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_arm_linux_hotspot_11.0.3_7.tar.gz, for example)

Added where available.

  • tags should typically be listed in order from most-specific to least-specific (to avoid edge cases in bashbrew)
    in other words, this:
    Tags: latest, hotspot, 12-hotspot, 12-jdk-hotspot, 12.0.1_12-jdk-hotspot
    should be:
    Tags: 12.0.1_12-jdk-hotspot, 12-jdk-hotspot, 12-hotspot, hotspot, latest

Updated.

Removed the LABEL.

  • RUN rm -rf /var/lib/apt/lists/* shouldn't be necessary before doing apt-get update -- the base images should already have that directory empty; additionally, anything apt-get clean is doing should be done automatically by the base image during apt-get install, so is similarly unnecessary
  • using apt-get upgrade is going to be a no-go -- if a base image needs updates, the way we do that in the official images is by updating the base image and rebuilding everything else (like Update Ubuntu #5913 which was merged today, for example)
  • invocations of curl should include -f/--fail so that they have an appropriate exit code on failure (and when -s/--silent is in use, we typically recommend also including -S/--show-error so that errors are still displayed appropriately which makes debugging easier)
  • it seems odd to invoke sha256sum by itself on the file after downloading but before invoking it again to verify -- is that simply to help verify when there's a checksum mismatch? aren't those checksums officially published somewhere that the Dockerfile generation scripts are embedding directly via ESUM in the case statements here?
  • we've seen some odd edge cases with sha256sum using the double-space variant of input, so I'd recommend switching that to use the * prefixed mode (ala, echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \)
  • jdir=$(dirname $(dirname $(find /opt/java/openjdk -name javac))) feels very, very bizarre -- can you explain a little about what that's doing and why it's so complex? maybe something like --strip-components=2 on tar could negate the need for whatever's happening there?

All above fixed now by @ashu-mehra

  • just curious, is /opt/java/openjdk significant? is that the recommended JAVA_HOME for AdoptOpenJDK and/or Ubuntu? (seems like kind of an odd choice in an Ubuntu environment, but I may be missing some context sweat_smile)

This was a legacy leftover, but will change it when we start using .deb files to install. Will do that in a subsequent PR, hopefully should not prevent this from getting merged. (Since JAVA_HOME is set, ideally it shouldn't matter what the path is)

  • there seems to be some slightly inconsistent placement of ENV JAVA_VERSION which will make cross-image and image bump cache less efficient -- I'd recommend moving as much general/common logic as possible above that version number declaration (which should probably come right before RUN set -eux; ...)

Fixed now.

Added this for 11+.

@dinogun
Copy link
Contributor Author

dinogun commented May 23, 2019

@tianon Have addressed all your concerns, please let me know if you need any further changes, Thanks !

@tianon
Copy link
Member

tianon commented May 23, 2019

LGTM! 👍 🎈

Will hopefully have a build test shortly (and will be bugging @yosifkit for that second review).

@tianon
Copy link
Member

tianon commented May 23, 2019

Oh! If you'd like to take advantage of our existing Java tests, you should add an entry like

[amazoncorretto]='openjdk'
([adoptopenjdk]='openjdk').

@dinogun
Copy link
Contributor Author

dinogun commented May 24, 2019

Updated now to include existing tests. Thanks for pointing that out !

@tianon
Copy link
Member

tianon commented May 24, 2019

So, the results of that are amusing, although not totally unexpected:

Build test of #5710; 981762c; amd64 (adoptopenjdk):

$ bashbrew build adoptopenjdk:8u212-b03-jdk-hotspot
Using bashbrew/cache:c3d5a5aa32f0d337c8344987c357677cb2cef5d80b2eadfddf6b88d320dd9c94 (adoptopenjdk:8u212-b03-jdk-hotspot)
Tagging adoptopenjdk:8u212-b03-jdk-hotspot
Tagging adoptopenjdk:8-jdk-hotspot
Tagging adoptopenjdk:8-hotspot

$ test/run.sh adoptopenjdk:8u212-b03-jdk-hotspot
testing adoptopenjdk:8u212-b03-jdk-hotspot
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.NullPointerException
	at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
	at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
	at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
	at sun.font.SunFontManager$2.run(SunFontManager.java:431)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.font.SunFontManager.<init>(SunFontManager.java:376)
	at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.lang.Class.newInstance(Class.java:442)
	at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.awt.Font.getFont2D(Font.java:491)
	at java.awt.Font.getFamily(Font.java:1220)
	at java.awt.Font.getFamily_NoClientCode(Font.java:1194)
	at java.awt.Font.getFamily(Font.java:1186)
	at container.main(container.java:21)
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.NullPointerException
	at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
	at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
	at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
	at sun.font.SunFontManager$2.run(SunFontManager.java:431)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.font.SunFontManager.<init>(SunFontManager.java:376)
	at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.lang.Class.newInstance(Class.java:442)
	at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.awt.Font.getFont2D(Font.java:491)
	at java.awt.Font.getFamily(Font.java:1220)
	at java.awt.Font.getFamily_NoClientCode(Font.java:1194)
	at java.awt.Font.getFamily(Font.java:1186)
	at container.main(container.java:35)
failed
	'java-ca-certificates' [7/7]...passed


$ bashbrew build adoptopenjdk:8u212-b03-jre-hotspot
Using bashbrew/cache:14ff3ee21816d9add04f5994a05545ba0154d51d046c7aa34bb648b155408c55 (adoptopenjdk:8u212-b03-jre-hotspot)
Tagging adoptopenjdk:8u212-b03-jre-hotspot
Tagging adoptopenjdk:8-jre-hotspot

$ test/run.sh adoptopenjdk:8u212-b03-jre-hotspot
testing adoptopenjdk:8u212-b03-jre-hotspot
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.NullPointerException
	at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
	at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
	at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
	at sun.font.SunFontManager$2.run(SunFontManager.java:431)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.font.SunFontManager.<init>(SunFontManager.java:376)
	at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.lang.Class.newInstance(Class.java:442)
	at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.awt.Font.getFont2D(Font.java:491)
	at java.awt.Font.getFamily(Font.java:1220)
	at java.awt.Font.getFamily_NoClientCode(Font.java:1194)
	at java.awt.Font.getFamily(Font.java:1186)
	at container.main(container.java:21)
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.NullPointerException
	at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
	at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
	at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
	at sun.font.SunFontManager$2.run(SunFontManager.java:431)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.font.SunFontManager.<init>(SunFontManager.java:376)
	at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at java.lang.Class.newInstance(Class.java:442)
	at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.awt.Font.getFont2D(Font.java:491)
	at java.awt.Font.getFamily(Font.java:1220)
	at java.awt.Font.getFamily_NoClientCode(Font.java:1194)
	at java.awt.Font.getFamily(Font.java:1186)
	at container.main(container.java:35)
failed
	'java-ca-certificates' [7/7]...passed


$ bashbrew build adoptopenjdk:11.0.3_7-jdk-hotspot
Using bashbrew/cache:3ced7789ebc3228bbd052be15d9d38164b24651e116b4ae8d647a2e4dad9d74f (adoptopenjdk:11.0.3_7-jdk-hotspot)
Tagging adoptopenjdk:11.0.3_7-jdk-hotspot
Tagging adoptopenjdk:11-jdk-hotspot
Tagging adoptopenjdk:11-hotspot

$ test/run.sh adoptopenjdk:11.0.3_7-jdk-hotspot
testing adoptopenjdk:11.0.3_7-jdk-hotspot
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.desktop/java.awt.Font.getFont2D(Font.java:497)
	at java.desktop/java.awt.Font.getFamily(Font.java:1410)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Font.java:1384)
	at java.desktop/java.awt.Font.getFamily(Font.java:1376)
	at container.main(container.java:21)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
	... 7 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
	at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
	at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
	at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
	... 12 more
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.desktop/java.awt.Font.getFont2D(Font.java:497)
	at java.desktop/java.awt.Font.getFamily(Font.java:1410)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Font.java:1384)
	at java.desktop/java.awt.Font.getFamily(Font.java:1376)
	at container.main(container.java:35)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
	... 7 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
	at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
	at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
	at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
	... 12 more
failed
	'java-ca-certificates' [7/7]...passed


$ bashbrew build adoptopenjdk:11.0.3_7-jre-hotspot
Using bashbrew/cache:ae77005c97d2997d83cfbe01f1767e7db7a66a6d1caf397a59a16feccdb89ed9 (adoptopenjdk:11.0.3_7-jre-hotspot)
Tagging adoptopenjdk:11.0.3_7-jre-hotspot
Tagging adoptopenjdk:11-jre-hotspot

$ test/run.sh adoptopenjdk:11.0.3_7-jre-hotspot
testing adoptopenjdk:11.0.3_7-jre-hotspot
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/sun.font.FontManagerFactory.getInstance(Unknown Source)
	at java.desktop/java.awt.Font.getFont2D(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at container.main(container.java:21)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
	... 8 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.init(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(Unknown Source)
	at java.desktop/sun.font.SunFontManager$2.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/sun.font.SunFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.FcFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.<init>(Unknown Source)
	... 12 more
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/sun.font.FontManagerFactory.getInstance(Unknown Source)
	at java.desktop/java.awt.Font.getFont2D(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at container.main(container.java:35)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
	... 8 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.init(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(Unknown Source)
	at java.desktop/sun.font.SunFontManager$2.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/sun.font.SunFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.FcFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.<init>(Unknown Source)
	... 12 more
failed
	'java-ca-certificates' [7/7]...passed


$ bashbrew build adoptopenjdk:12.0.1_12-jdk-hotspot
Using bashbrew/cache:03575e75ceb9176cea2773c483022060c5a4e10bae0228dac5f1934c613671e2 (adoptopenjdk:12.0.1_12-jdk-hotspot)
Tagging adoptopenjdk:12.0.1_12-jdk-hotspot
Tagging adoptopenjdk:12-jdk-hotspot
Tagging adoptopenjdk:12-hotspot
Tagging adoptopenjdk:hotspot
Tagging adoptopenjdk:latest

$ test/run.sh adoptopenjdk:12.0.1_12-jdk-hotspot
testing adoptopenjdk:12.0.1_12-jdk-hotspot
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:310)
	at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.desktop/java.awt.Font.getFont2D(Font.java:497)
	at java.desktop/java.awt.Font.getFamily(Font.java:1410)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Font.java:1384)
	at java.desktop/java.awt.Font.getFamily(Font.java:1376)
	at container.main(container.java:21)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
	... 7 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
	at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
	at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:310)
	at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
	at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
	... 13 more
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:310)
	at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.desktop/java.awt.Font.getFont2D(Font.java:497)
	at java.desktop/java.awt.Font.getFamily(Font.java:1410)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Font.java:1384)
	at java.desktop/java.awt.Font.getFamily(Font.java:1376)
	at container.main(container.java:35)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
	... 7 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
	at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
	at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:310)
	at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
	at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
	... 13 more
failed
	'java-ca-certificates' [7/7]...passed


$ bashbrew build adoptopenjdk:12.0.1_12-jre-hotspot
Using bashbrew/cache:6c72ebb73243956711c6101bb018aee681e011b8adeead197a9b42ade87dd434 (adoptopenjdk:12.0.1_12-jre-hotspot)
Tagging adoptopenjdk:12.0.1_12-jre-hotspot
Tagging adoptopenjdk:12-jre-hotspot

$ test/run.sh adoptopenjdk:12.0.1_12-jre-hotspot
testing adoptopenjdk:12.0.1_12-jre-hotspot
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.FontManagerFactory.getInstance(Unknown Source)
	at java.desktop/java.awt.Font.getFont2D(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at container.main(container.java:21)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
	... 8 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.init(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(Unknown Source)
	at java.desktop/sun.font.SunFontManager$2.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.SunFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.FcFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.<init>(Unknown Source)
	... 13 more
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.FontManagerFactory.getInstance(Unknown Source)
	at java.desktop/java.awt.Font.getFont2D(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at container.main(container.java:35)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
	... 8 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.init(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(Unknown Source)
	at java.desktop/sun.font.SunFontManager$2.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.SunFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.FcFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.<init>(Unknown Source)
	... 13 more
failed
	'java-ca-certificates' [7/7]...passed


$ bashbrew build adoptopenjdk:8u212-b03-jdk-openj9-0.14.0
Using bashbrew/cache:09f04a66c4ecf29437114676f85d5f51201fb1d91ab491ddcd75c77bc2e9d8ae (adoptopenjdk:8u212-b03-jdk-openj9-0.14.0)
Tagging adoptopenjdk:8u212-b03-jdk-openj9-0.14.0
Tagging adoptopenjdk:8-jdk-openj9
Tagging adoptopenjdk:8-openj9

$ test/run.sh adoptopenjdk:8u212-b03-jdk-openj9-0.14.0
testing adoptopenjdk:8u212-b03-jdk-openj9-0.14.0
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.NullPointerException
	at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
	at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
	at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
	at sun.font.SunFontManager$2.run(SunFontManager.java:431)
	at java.security.AccessController.doPrivileged(AccessController.java:647)
	at sun.font.SunFontManager.<init>(SunFontManager.java:376)
	at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
	at java.lang.J9VMInternals.newInstanceImpl(Native Method)
	at java.lang.Class.newInstance(Class.java:1848)
	at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
	at java.security.AccessController.doPrivileged(AccessController.java:647)
	at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.awt.Font.getFont2D(Font.java:491)
	at java.awt.Font.getFamily(Font.java:1220)
	at java.awt.Font.getFamily_NoClientCode(Font.java:1194)
	at java.awt.Font.getFamily(Font.java:1186)
	at container.main(container.java:21)
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.NullPointerException
	at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
	at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
	at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
	at sun.font.SunFontManager$2.run(SunFontManager.java:431)
	at java.security.AccessController.doPrivileged(AccessController.java:647)
	at sun.font.SunFontManager.<init>(SunFontManager.java:376)
	at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
	at java.lang.J9VMInternals.newInstanceImpl(Native Method)
	at java.lang.Class.newInstance(Class.java:1848)
	at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
	at java.security.AccessController.doPrivileged(AccessController.java:647)
	at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.awt.Font.getFont2D(Font.java:491)
	at java.awt.Font.getFamily(Font.java:1220)
	at java.awt.Font.getFamily_NoClientCode(Font.java:1194)
	at java.awt.Font.getFamily(Font.java:1186)
	at container.main(container.java:35)
failed
	'java-ca-certificates' [7/7]...passed


$ bashbrew build adoptopenjdk:8u212-b03-jre-openj9-0.14.0
Using bashbrew/cache:41da3ddb5584ba110fc8c8dfdaa1d72166284b007d30f1b282d5de674fc46fc1 (adoptopenjdk:8u212-b03-jre-openj9-0.14.0)
Tagging adoptopenjdk:8u212-b03-jre-openj9-0.14.0
Tagging adoptopenjdk:8-jre-openj9

$ test/run.sh adoptopenjdk:8u212-b03-jre-openj9-0.14.0
testing adoptopenjdk:8u212-b03-jre-openj9-0.14.0
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.NullPointerException
	at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
	at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
	at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
	at sun.font.SunFontManager$2.run(SunFontManager.java:431)
	at java.security.AccessController.doPrivileged(AccessController.java:647)
	at sun.font.SunFontManager.<init>(SunFontManager.java:376)
	at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
	at java.lang.J9VMInternals.newInstanceImpl(Native Method)
	at java.lang.Class.newInstance(Class.java:1848)
	at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
	at java.security.AccessController.doPrivileged(AccessController.java:647)
	at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.awt.Font.getFont2D(Font.java:491)
	at java.awt.Font.getFamily(Font.java:1220)
	at java.awt.Font.getFamily_NoClientCode(Font.java:1194)
	at java.awt.Font.getFamily(Font.java:1186)
	at container.main(container.java:21)
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.NullPointerException
	at sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1264)
	at sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:219)
	at sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:774)
	at sun.font.SunFontManager$2.run(SunFontManager.java:431)
	at java.security.AccessController.doPrivileged(AccessController.java:647)
	at sun.font.SunFontManager.<init>(SunFontManager.java:376)
	at sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at sun.awt.X11FontManager.<init>(X11FontManager.java:57)
	at java.lang.J9VMInternals.newInstanceImpl(Native Method)
	at java.lang.Class.newInstance(Class.java:1848)
	at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
	at java.security.AccessController.doPrivileged(AccessController.java:647)
	at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.awt.Font.getFont2D(Font.java:491)
	at java.awt.Font.getFamily(Font.java:1220)
	at java.awt.Font.getFamily_NoClientCode(Font.java:1194)
	at java.awt.Font.getFamily(Font.java:1186)
	at container.main(container.java:35)
failed
	'java-ca-certificates' [7/7]...passed


$ bashbrew build adoptopenjdk:11.0.3_7-jdk-openj9-0.14.0
Using bashbrew/cache:4c0af7782dda18c6d8cf7a15fba6ca1a411af1dcf129457ca1b126dd25fc65cd (adoptopenjdk:11.0.3_7-jdk-openj9-0.14.0)
Tagging adoptopenjdk:11.0.3_7-jdk-openj9-0.14.0
Tagging adoptopenjdk:11-jdk-openj9
Tagging adoptopenjdk:11-openj9

$ test/run.sh adoptopenjdk:11.0.3_7-jdk-openj9-0.14.0
testing adoptopenjdk:11.0.3_7-jdk-openj9-0.14.0
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:647)
	at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.desktop/java.awt.Font.getFont2D(Font.java:497)
	at java.desktop/java.awt.Font.getFamily(Font.java:1410)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Font.java:1384)
	at java.desktop/java.awt.Font.getFamily(Font.java:1376)
	at container.main(container.java:21)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
	... 7 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
	at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
	at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:647)
	at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
	at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
	... 12 more
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:647)
	at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.desktop/java.awt.Font.getFont2D(Font.java:497)
	at java.desktop/java.awt.Font.getFamily(Font.java:1410)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Font.java:1384)
	at java.desktop/java.awt.Font.getFamily(Font.java:1376)
	at container.main(container.java:35)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
	... 7 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
	at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
	at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:647)
	at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
	at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
	... 12 more
failed
	'java-ca-certificates' [7/7]...passed


$ bashbrew build adoptopenjdk:11.0.3_7-jre-openj9-0.14.0
Using bashbrew/cache:08b89104fa9700730f24c5f1309b72a6e1928e19b009b47d4b092a24db220a6c (adoptopenjdk:11.0.3_7-jre-openj9-0.14.0)
Tagging adoptopenjdk:11.0.3_7-jre-openj9-0.14.0
Tagging adoptopenjdk:11-jre-openj9

$ test/run.sh adoptopenjdk:11.0.3_7-jre-openj9-0.14.0
testing adoptopenjdk:11.0.3_7-jre-openj9-0.14.0
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.FontManagerFactory.getInstance(Unknown Source)
	at java.desktop/java.awt.Font.getFont2D(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at container.main(container.java:21)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
	... 8 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.init(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(Unknown Source)
	at java.desktop/sun.font.SunFontManager$2.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.SunFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.FcFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.<init>(Unknown Source)
	... 12 more
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.FontManagerFactory.getInstance(Unknown Source)
	at java.desktop/java.awt.Font.getFont2D(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at container.main(container.java:35)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
	... 8 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.init(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(Unknown Source)
	at java.desktop/sun.font.SunFontManager$2.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.SunFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.FcFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.<init>(Unknown Source)
	... 12 more
failed
	'java-ca-certificates' [7/7]...passed


$ bashbrew build adoptopenjdk:12.0.1_12-jdk-openj9-0.14.1
Using bashbrew/cache:f37c43d70e0cfb831b467e6f46a92245dcb55c3d942fcffdecb82700f6617063 (adoptopenjdk:12.0.1_12-jdk-openj9-0.14.1)
Tagging adoptopenjdk:12.0.1_12-jdk-openj9-0.14.1
Tagging adoptopenjdk:12-jdk-openj9
Tagging adoptopenjdk:12-openj9
Tagging adoptopenjdk:openj9

$ test/run.sh adoptopenjdk:12.0.1_12-jdk-openj9-0.14.1
testing adoptopenjdk:12.0.1_12-jdk-openj9-0.14.1
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:647)
	at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.desktop/java.awt.Font.getFont2D(Font.java:497)
	at java.desktop/java.awt.Font.getFamily(Font.java:1410)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Font.java:1384)
	at java.desktop/java.awt.Font.getFamily(Font.java:1376)
	at container.main(container.java:21)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
	... 7 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
	at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
	at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:647)
	at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
	at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
	... 13 more
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:647)
	at java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
	at java.desktop/java.awt.Font.getFont2D(Font.java:497)
	at java.desktop/java.awt.Font.getFamily(Font.java:1410)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Font.java:1384)
	at java.desktop/java.awt.Font.getFamily(Font.java:1376)
	at container.main(container.java:35)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
	at java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
	... 7 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
	at java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
	at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:647)
	at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
	at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
	at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
	... 13 more
failed
	'java-ca-certificates' [7/7]...passed


$ bashbrew build adoptopenjdk:12.0.1_12-jre-openj9-0.14.1
Using bashbrew/cache:3a4a7dd4223829121285bf38c2ff5b89b50e460c154efcf6d9fc657542363f97 (adoptopenjdk:12.0.1_12-jre-openj9-0.14.1)
Tagging adoptopenjdk:12.0.1_12-jre-openj9-0.14.1
Tagging adoptopenjdk:12-jre-openj9

$ test/run.sh adoptopenjdk:12.0.1_12-jre-openj9-0.14.1
testing adoptopenjdk:12.0.1_12-jre-openj9-0.14.1
	'utc' [1/7]...passed
	'cve-2014--shellshock' [2/7]...passed
	'no-hard-coded-passwords' [3/7]...passed
	'override-cmd' [4/7]...passed
	'java-hello-world' [5/7]...passed
	'java-uimanager-font' [6/7]...Could not get the default font's family
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.FontManagerFactory.getInstance(Unknown Source)
	at java.desktop/java.awt.Font.getFont2D(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at container.main(container.java:21)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
	... 8 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.init(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(Unknown Source)
	at java.desktop/sun.font.SunFontManager$2.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.SunFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.FcFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.<init>(Unknown Source)
	... 13 more
Error making a Metal look/feel, setting it to the UIManager, or getting its font...
java.lang.InternalError: java.lang.reflect.InvocationTargetException
	at java.desktop/sun.font.FontManagerFactory$1.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.FontManagerFactory.getInstance(Unknown Source)
	at java.desktop/java.awt.Font.getFont2D(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at java.desktop/java.awt.Font.getFamily_NoClientCode(Unknown Source)
	at java.desktop/java.awt.Font.getFamily(Unknown Source)
	at container.main(container.java:35)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Unknown Source)
	at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
	... 8 more
Caused by: java.lang.NullPointerException
	at java.desktop/sun.awt.FontConfiguration.getVersion(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.readFontConfigFile(Unknown Source)
	at java.desktop/sun.awt.FontConfiguration.init(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.createFontConfiguration(Unknown Source)
	at java.desktop/sun.font.SunFontManager$2.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.desktop/sun.font.SunFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.FcFontManager.<init>(Unknown Source)
	at java.desktop/sun.awt.X11FontManager.<init>(Unknown Source)
	... 13 more
failed
	'java-ca-certificates' [7/7]...passed

The following images failed at least one test:

  • adoptopenjdk:
    • adoptopenjdk:8u212-b03-jdk-hotspot
    • adoptopenjdk:8u212-b03-jre-hotspot
    • adoptopenjdk:11.0.3_7-jdk-hotspot
    • adoptopenjdk:11.0.3_7-jre-hotspot
    • adoptopenjdk:12.0.1_12-jdk-hotspot
    • adoptopenjdk:12.0.1_12-jre-hotspot
    • adoptopenjdk:8u212-b03-jdk-openj9-0.14.0
    • adoptopenjdk:8u212-b03-jre-openj9-0.14.0
    • adoptopenjdk:11.0.3_7-jdk-openj9-0.14.0
    • adoptopenjdk:11.0.3_7-jre-openj9-0.14.0
    • adoptopenjdk:12.0.1_12-jdk-openj9-0.14.1
    • adoptopenjdk:12.0.1_12-jre-openj9-0.14.1

@tianon
Copy link
Member

tianon commented May 24, 2019

So, I'd propose one of:

  1. update the images to make java-uimanager-font pass (likely just adding fontconfig)

  2. update the tests to skip java-uimanager-font on adoptopenjdk

I'm happy to help do the legwork on either solution you prefer. 😄

@dinogun
Copy link
Contributor Author

dinogun commented May 24, 2019

Hmmm, I'd prefer to skip the java-uimanager-font tests for adoptopenjdk as we haven't had any users ask for this package (fontconfig) as yet. (May change in the future)

Do you think it makes sense to make the following change or some other way to skip the tests ?

Add

imageTests+=(
    [adoptopenjdk]='
        java-hello-world
        java-ca-certificates
    '

Remove

testAlias+=(
[adoptopenjdk]='openjdk'

@tianon
Copy link
Member

tianon commented May 24, 2019

Totally fair, I think something like this is what I'd recommend (using globalExcludeTests):

diff --git a/test/config.sh b/test/config.sh
index 195fd508..7863c929 100644
--- a/test/config.sh
+++ b/test/config.sh
@@ -263,6 +263,8 @@ globalExcludeTests+=(
        # alpine/slim openjdk images are headless and so can't do font stuff
        [openjdk:alpine_java-uimanager-font]=1
        [openjdk:slim_java-uimanager-font]=1
+       # and adoptopenjdk has opted not to
+       [adoptopenjdk_java-uimanager-font]=1
 
        # no "native" dependencies
        [ruby:alpine_ruby-bundler]=1

@yosifkit
Copy link
Member

LGTM!! We can add the test skip later, let's get these published!

For reference:

Diff:
diff --git a/_bashbrew-arches b/_bashbrew-arches
index e69de29..5cd47ad 100644
--- a/_bashbrew-arches
+++ b/_bashbrew-arches
@@ -0,0 +1,42 @@
+adoptopenjdk:8-hotspot @ amd64
+adoptopenjdk:8-hotspot @ ppc64le
+adoptopenjdk:8-hotspot @ s390x
+adoptopenjdk:8-jre-hotspot @ amd64
+adoptopenjdk:8-jre-hotspot @ ppc64le
+adoptopenjdk:8-jre-hotspot @ s390x
+adoptopenjdk:8-jre-openj9 @ amd64
+adoptopenjdk:8-jre-openj9 @ ppc64le
+adoptopenjdk:8-jre-openj9 @ s390x
+adoptopenjdk:8-openj9 @ amd64
+adoptopenjdk:8-openj9 @ ppc64le
+adoptopenjdk:8-openj9 @ s390x
+adoptopenjdk:11-hotspot @ amd64
+adoptopenjdk:11-hotspot @ arm32v7
+adoptopenjdk:11-hotspot @ arm64v8
+adoptopenjdk:11-hotspot @ ppc64le
+adoptopenjdk:11-hotspot @ s390x
+adoptopenjdk:11-jre-hotspot @ amd64
+adoptopenjdk:11-jre-hotspot @ arm64v8
+adoptopenjdk:11-jre-hotspot @ ppc64le
+adoptopenjdk:11-jre-hotspot @ s390x
+adoptopenjdk:11-jre-openj9 @ amd64
+adoptopenjdk:11-jre-openj9 @ ppc64le
+adoptopenjdk:11-jre-openj9 @ s390x
+adoptopenjdk:11-openj9 @ amd64
+adoptopenjdk:11-openj9 @ ppc64le
+adoptopenjdk:11-openj9 @ s390x
+adoptopenjdk:12-jre-hotspot @ amd64
+adoptopenjdk:12-jre-hotspot @ arm64v8
+adoptopenjdk:12-jre-hotspot @ ppc64le
+adoptopenjdk:12-jre-hotspot @ s390x
+adoptopenjdk:12-jre-openj9 @ amd64
+adoptopenjdk:12-jre-openj9 @ ppc64le
+adoptopenjdk:12-jre-openj9 @ s390x
+adoptopenjdk:latest @ amd64
+adoptopenjdk:latest @ arm32v7
+adoptopenjdk:latest @ arm64v8
+adoptopenjdk:latest @ ppc64le
+adoptopenjdk:latest @ s390x
+adoptopenjdk:openj9 @ amd64
+adoptopenjdk:openj9 @ ppc64le
+adoptopenjdk:openj9 @ s390x
diff --git a/_bashbrew-list b/_bashbrew-list
index e69de29..6da53d9 100644
--- a/_bashbrew-list
+++ b/_bashbrew-list
@@ -0,0 +1,33 @@
+adoptopenjdk:8u212-b03-jdk-hotspot
+adoptopenjdk:8u212-b03-jdk-openj9-0.14.0
+adoptopenjdk:8u212-b03-jre-hotspot
+adoptopenjdk:8u212-b03-jre-openj9-0.14.0
+adoptopenjdk:8-hotspot
+adoptopenjdk:8-jdk-hotspot
+adoptopenjdk:8-jdk-openj9
+adoptopenjdk:8-jre-hotspot
+adoptopenjdk:8-jre-openj9
+adoptopenjdk:8-openj9
+adoptopenjdk:11-hotspot
+adoptopenjdk:11-jdk-hotspot
+adoptopenjdk:11-jdk-openj9
+adoptopenjdk:11-jre-hotspot
+adoptopenjdk:11-jre-openj9
+adoptopenjdk:11-openj9
+adoptopenjdk:11.0.3_7-jdk-hotspot
+adoptopenjdk:11.0.3_7-jdk-openj9-0.14.0
+adoptopenjdk:11.0.3_7-jre-hotspot
+adoptopenjdk:11.0.3_7-jre-openj9-0.14.0
+adoptopenjdk:12-hotspot
+adoptopenjdk:12-jdk-hotspot
+adoptopenjdk:12-jdk-openj9
+adoptopenjdk:12-jre-hotspot
+adoptopenjdk:12-jre-openj9
+adoptopenjdk:12-openj9
+adoptopenjdk:12.0.1_12-jdk-hotspot
+adoptopenjdk:12.0.1_12-jdk-openj9-0.14.1
+adoptopenjdk:12.0.1_12-jre-hotspot
+adoptopenjdk:12.0.1_12-jre-openj9-0.14.1
+adoptopenjdk:hotspot
+adoptopenjdk:latest
+adoptopenjdk:openj9
diff --git a/adoptopenjdk_11-hotspot/Dockerfile.hotspot.releases.full b/adoptopenjdk_11-hotspot/Dockerfile.hotspot.releases.full
new file mode 100644
index 0000000..b0f9191
--- /dev/null
+++ b/adoptopenjdk_11-hotspot/Dockerfile.hotspot.releases.full
@@ -0,0 +1,68 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk-11.0.3+7
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='25bce2f738cfc7c027da08e533bf3ede65e2767eae8eb9fcb46e92ee6aea7607'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.3_7.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='c80e775d96c4b6edf399414503d28788060829c345abc575fc731f9e4d68b3bc'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_s390x_linux_hotspot_11.0.3_7.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='23cded2b43261016f0f246c85c8948d4a9b7f2d44988f75dad69723a7a526094'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.3_7.tar.gz'; \
+         ;; \
+       armhf) \
+         ESUM='3fbe418368e6d5888d0f15c4751139eb60d9785b864158a001386537fa46f67e'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_arm_linux_hotspot_11.0.3_7.tar.gz'; \
+         ;; \
+       aarch64|arm64) \
+         ESUM='894a846600ddb0df474350037a2fb43e3343dc3606809a20c65e750580d8f2b9'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.3_7.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
+CMD ["jshell"]
diff --git a/adoptopenjdk_11-jre-hotspot/Dockerfile.hotspot.releases.full b/adoptopenjdk_11-jre-hotspot/Dockerfile.hotspot.releases.full
new file mode 100644
index 0000000..cc78887
--- /dev/null
+++ b/adoptopenjdk_11-jre-hotspot/Dockerfile.hotspot.releases.full
@@ -0,0 +1,63 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk-11.0.3+7
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='2a6b3eb7af316935a2e9ada5ec5ecf4fa0b139cde72b513d2a862e816d19c36c'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jre_ppc64le_linux_hotspot_11.0.3_7.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='630d85b6fd1abfd403e231fb42ac07fd97329f9d01d76b6f5c701bb4730db8b6'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jre_s390x_linux_hotspot_11.0.3_7.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='d2df8bc799b09c8375f79bf646747afac3d933bb1f65de71d6c78e7466ff8fe4'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jre_x64_linux_hotspot_11.0.3_7.tar.gz'; \
+         ;; \
+       aarch64|arm64) \
+         ESUM='de31fab70640c6d5099de5fc8fa8b4d6b484a7352fa48a9fafbdc088ca708564'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jre_aarch64_linux_hotspot_11.0.3_7.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
diff --git a/adoptopenjdk_11-jre-openj9/Dockerfile.openj9.releases.full b/adoptopenjdk_11-jre-openj9/Dockerfile.openj9.releases.full
new file mode 100644
index 0000000..760e137
--- /dev/null
+++ b/adoptopenjdk_11-jre-openj9/Dockerfile.openj9.releases.full
@@ -0,0 +1,60 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk-11.0.3+7_openj9-0.14.0
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='ef147338f12fdff7fd070a3a7d4241ac7c85a5bacf0e0642dc2efc9dab9dd94b'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7_openj9-0.14.0/OpenJDK11U-jre_ppc64le_linux_openj9_11.0.3_7_openj9-0.14.0.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='101886e88c091d5671db8760016c3c46c7dc16671960eb1c4c86a9f8bbe8e5be'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7_openj9-0.14.0/OpenJDK11U-jre_s390x_linux_openj9_11.0.3_7_openj9-0.14.0.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='14c660294832c7b2deb2845d96dce83df677e204b4f0f1fee0052764c4a56720'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7_openj9-0.14.0/OpenJDK11U-jre_x64_linux_openj9_11.0.3_7_openj9-0.14.0.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_11-openj9/Dockerfile.openj9.releases.full b/adoptopenjdk_11-openj9/Dockerfile.openj9.releases.full
new file mode 100644
index 0000000..f1d7704
--- /dev/null
+++ b/adoptopenjdk_11-openj9/Dockerfile.openj9.releases.full
@@ -0,0 +1,61 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk-11.0.3+7_openj9-0.14.0
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='ad641f456258c6a77d07edfdc0ee6cddcaa53b9eb71df517f1074f7602f53832'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7_openj9-0.14.0/OpenJDK11U-jdk_ppc64le_linux_openj9_11.0.3_7_openj9-0.14.0.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='ff7bb0e44418af84dd96a72c1e55b0f1f69a4a1838f929b36c7d005b3dfe29a9'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7_openj9-0.14.0/OpenJDK11U-jdk_s390x_linux_openj9_11.0.3_7_openj9-0.14.0.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='7012edd56fc958070bc4747073de14ea08eb43081eb6ea19bdbf4763186e2d17'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7_openj9-0.14.0/OpenJDK11U-jdk_x64_linux_openj9_11.0.3_7_openj9-0.14.0.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+CMD ["jshell"]
diff --git a/adoptopenjdk_12-jre-hotspot/Dockerfile.hotspot.releases.full b/adoptopenjdk_12-jre-hotspot/Dockerfile.hotspot.releases.full
new file mode 100644
index 0000000..1815cc8
--- /dev/null
+++ b/adoptopenjdk_12-jre-hotspot/Dockerfile.hotspot.releases.full
@@ -0,0 +1,63 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk-12.0.1+12
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='0007442c929de09104749fa4c945dfde476cbeab27122b5705d1a2c56d0efac4'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jre_ppc64le_linux_hotspot_12.0.1_12.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='161464b6d2fd68afdf41c54aa326049ff2ad777d6a13c0694cee2cf9b0aafa52'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jre_s390x_linux_hotspot_12.0.1_12.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='85b3c4065b1540f1d0dbe533955a199e54a0cbe7bd6e1111e59d54e68b2f5b43'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jre_x64_linux_hotspot_12.0.1_12.tar.gz'; \
+         ;; \
+       aarch64|arm64) \
+         ESUM='c6fa30f2351a8c981be018c16941dac16c21bfdf86474dc586baaf166b3bc00c'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jre_aarch64_linux_hotspot_12.0.1_12.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
diff --git a/adoptopenjdk_12-jre-openj9/Dockerfile.openj9.releases.full b/adoptopenjdk_12-jre-openj9/Dockerfile.openj9.releases.full
new file mode 100644
index 0000000..10e850c
--- /dev/null
+++ b/adoptopenjdk_12-jre-openj9/Dockerfile.openj9.releases.full
@@ -0,0 +1,60 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk-12.0.1+12_openj9-0.14.1
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='4330c60a43e957554aa418a081d3fcd11302ec8c017eefccb3120abd73d0ef59'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12_openj9-0.14.1/OpenJDK12U-jre_ppc64le_linux_openj9_12.0.1_12_openj9-0.14.1.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='0308979e526cae604eaf9bbb856e112911af2ca8f0180a78293dd9375a3cc289'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12_openj9-0.14.1/OpenJDK12U-jre_s390x_linux_openj9_12.0.1_12_openj9-0.14.1.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='24d6c5a6379cfb2bd93459aa51f3bc5507d992e147a4aae7e9d0159eb1d6849c'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12_openj9-0.14.1/OpenJDK12U-jre_x64_linux_openj9_12.0.1_12_openj9-0.14.1.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_8-hotspot/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-hotspot/Dockerfile.hotspot.releases.full
new file mode 100644
index 0000000..7de07ea
--- /dev/null
+++ b/adoptopenjdk_8-hotspot/Dockerfile.hotspot.releases.full
@@ -0,0 +1,59 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk8u212-b03
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='c9f354430dc83cabfc58a229dddac507e36b475c872c157f91ab3ae50fa21bc5'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03/OpenJDK8U-jdk_ppc64le_linux_hotspot_8u212b03.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='abb653ec70050a38d8f1e18c23bef64edc825240a7e4620e3b6003005c6b4a51'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03/OpenJDK8U-jdk_s390x_linux_hotspot_8u212b03.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='dd28d6d2cde2b931caf94ac2422a2ad082ea62f0beee3bf7057317c53093de93'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03/OpenJDK8U-jdk_x64_linux_hotspot_8u212b03.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
diff --git a/adoptopenjdk_8-jre-hotspot/Dockerfile.hotspot.releases.full b/adoptopenjdk_8-jre-hotspot/Dockerfile.hotspot.releases.full
new file mode 100644
index 0000000..8b4bdfe
--- /dev/null
+++ b/adoptopenjdk_8-jre-hotspot/Dockerfile.hotspot.releases.full
@@ -0,0 +1,59 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk8u212-b03
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='2de019954c0898c1798ed30ed55314534423b853bfb373806b6a6224dc98fa6d'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03/OpenJDK8U-jre_ppc64le_linux_hotspot_8u212b03.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='269a6a3735d12438866754a28d89180d39819aea70e0023b90ca31e15a69e1b0'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03/OpenJDK8U-jre_s390x_linux_hotspot_8u212b03.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='74daf0b77a7fd679cbb3a6228e0efa8c4a90b7664aa057f211e34bbfb38640fb'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03/OpenJDK8U-jre_x64_linux_hotspot_8u212b03.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
diff --git a/adoptopenjdk_8-jre-openj9/Dockerfile.openj9.releases.full b/adoptopenjdk_8-jre-openj9/Dockerfile.openj9.releases.full
new file mode 100644
index 0000000..cb4958b
--- /dev/null
+++ b/adoptopenjdk_8-jre-openj9/Dockerfile.openj9.releases.full
@@ -0,0 +1,60 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk8u212-b03_openj9-0.14.0
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='0a06e6484227b5b1d72a0a89017d89f4386125fdaa47a37fe5331204172e95ae'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03_openj9-0.14.0/OpenJDK8U-jre_ppc64le_linux_openj9_8u212b03_openj9-0.14.0.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='38b4b40b224fbd3e5fa01deffb64fb1610442dd2bc9f2f9c727de6bfacd2f79d'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03_openj9-0.14.0/OpenJDK8U-jre_s390x_linux_openj9_8u212b03_openj9-0.14.0.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='61abbd6b4ab093adb5a0ed6ec89a54123396d8512a44168f7e01d3e7b1fdd07b'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03_openj9-0.14.0/OpenJDK8U-jre_x64_linux_openj9_8u212b03_openj9-0.14.0.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_8-openj9/Dockerfile.openj9.releases.full b/adoptopenjdk_8-openj9/Dockerfile.openj9.releases.full
new file mode 100644
index 0000000..6b9a7a3
--- /dev/null
+++ b/adoptopenjdk_8-openj9/Dockerfile.openj9.releases.full
@@ -0,0 +1,60 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk8u212-b03_openj9-0.14.0
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='6e6a2c1a848ae051e5dcf16a02371204ac42a78fd5e31099bfdd10011ca86e96'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03_openj9-0.14.0/OpenJDK8U-jdk_ppc64le_linux_openj9_8u212b03_openj9-0.14.0.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='13821a8f09f2c0df1bd5fb80c4b9be2b31b35f1190e4baf8d9b2c22997216f71'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03_openj9-0.14.0/OpenJDK8U-jdk_s390x_linux_openj9_8u212b03_openj9-0.14.0.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='4aa8fdb3916816788c516423236bef68a05a694cbd44fa14c4f8f5b76891aa4c'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03_openj9-0.14.0/OpenJDK8U-jdk_x64_linux_openj9_8u212b03_openj9-0.14.0.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
diff --git a/adoptopenjdk_latest/Dockerfile.hotspot.releases.full b/adoptopenjdk_latest/Dockerfile.hotspot.releases.full
new file mode 100644
index 0000000..0d56310
--- /dev/null
+++ b/adoptopenjdk_latest/Dockerfile.hotspot.releases.full
@@ -0,0 +1,68 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk-12.0.1+12
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='0ecced06422628b1ca20b0501a6b544cc9da29a2026f9e18d7b206d7a84b7958'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jdk_ppc64le_linux_hotspot_12.0.1_12.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='ef7efa131cd3978e3a2bad567bc8d39ed7f6dcf2c8bae17dafca359262cdde19'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jdk_s390x_linux_hotspot_12.0.1_12.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='dd3fdf3771a05a010029c1cf1aef516928eab55d6f5eb019008875e9ccbc8337'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jdk_x64_linux_hotspot_12.0.1_12.tar.gz'; \
+         ;; \
+       armhf) \
+         ESUM='acfa12c3c59b5180c08faa033c777bbc67f51e8b6cb976659f0d4b54138d6549'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jdk_arm_linux_hotspot_12.0.1_12.tar.gz'; \
+         ;; \
+       aarch64|arm64) \
+         ESUM='b1d58d593ac4c1b2d5dab0e8302ed4e07d5281c6c0cf1413b1604269bedec9c5'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12/OpenJDK12U-jdk_aarch64_linux_hotspot_12.0.1_12.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
+CMD ["jshell"]
diff --git a/adoptopenjdk_openj9/Dockerfile.openj9.releases.full b/adoptopenjdk_openj9/Dockerfile.openj9.releases.full
new file mode 100644
index 0000000..b78596d
--- /dev/null
+++ b/adoptopenjdk_openj9/Dockerfile.openj9.releases.full
@@ -0,0 +1,61 @@
+# ------------------------------------------------------------------------------
+#               NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh"
+#
+#                       PLEASE DO NOT EDIT IT DIRECTLY.
+# ------------------------------------------------------------------------------
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+FROM ubuntu:18.04
+
+ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
+
+RUN apt-get update \
+    && apt-get install -y --no-install-recommends curl ca-certificates locales \
+    && locale-gen en_US.UTF-8 \
+    && rm -rf /var/lib/apt/lists/*
+
+ENV JAVA_VERSION jdk-12.0.1+12_openj9-0.14.1
+
+RUN set -eux; \
+    ARCH="$(dpkg --print-architecture)"; \
+    case "${ARCH}" in \
+       ppc64el|ppc64le) \
+         ESUM='c4ead3ade9318a7fe08d1de6e5b79010aa60a5df3f431e6528d78d5c066f87fd'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12_openj9-0.14.1/OpenJDK12U-jdk_ppc64le_linux_openj9_12.0.1_12_openj9-0.14.1.tar.gz'; \
+         ;; \
+       s390x) \
+         ESUM='54089efbf915e391cf1b5f413c464fbd623254d3d5c0b52189c5769952c742ef'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12_openj9-0.14.1/OpenJDK12U-jdk_s390x_linux_openj9_12.0.1_12_openj9-0.14.1.tar.gz'; \
+         ;; \
+       amd64|x86_64) \
+         ESUM='78091b44f3e2350888f0c73c9eb8f98dbc6fcb55b04692b067070c02bfeb4ec1'; \
+         BINARY_URL='https://github.com/AdoptOpenJDK/openjdk12-binaries/releases/download/jdk-12.0.1%2B12_openj9-0.14.1/OpenJDK12U-jdk_x64_linux_openj9_12.0.1_12_openj9-0.14.1.tar.gz'; \
+         ;; \
+       *) \
+         echo "Unsupported arch: ${ARCH}"; \
+         exit 1; \
+         ;; \
+    esac; \
+    curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; \
+    echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
+    mkdir -p /opt/java/openjdk; \
+    cd /opt/java/openjdk; \
+    tar -xf /tmp/openjdk.tar.gz --strip-components=1; \
+    rm -rf /tmp/openjdk.tar.gz;
+
+ENV JAVA_HOME=/opt/java/openjdk \
+    PATH="/opt/java/openjdk/bin:$PATH"
+ENV JAVA_TOOL_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle"
+CMD ["jshell"]

@yosifkit yosifkit merged commit 5b22442 into docker-library:master May 24, 2019
@dinogun
Copy link
Contributor Author

dinogun commented May 25, 2019

@tianon and @yosifkit Thank you for all the patient and detailed reviews and working through multiple PRs to get this merged ! ❤️ 💯

Thanks to all those who helped make the case for adoptopenjdk ! (@karianna @arthurdm @tellison @NottyCode @mstoodle @ashu-mehra). Appreciate your help !!

@arthurdm
Copy link
Contributor

awesome work @dinogun!!

thanks @tianon / @yosifkit!

@tianon tianon mentioned this pull request Jun 6, 2019
@tianon tianon mentioned this pull request Aug 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

9 participants