From 081740ce634f1d9353d81d41c338d9a958ce6fd9 Mon Sep 17 00:00:00 2001 From: Eric Timmons <etimmons@mit.edu> Date: Thu, 26 Nov 2020 13:33:05 -0500 Subject: [PATCH] Make current images slim and add fat defaults --- 1.7.1/buster/jdk-11/Dockerfile | 73 +++++++++++++++++++ 1.7.1/buster/jdk-11/slim/Dockerfile | 41 +++++++++++ 1.7.1/buster/jdk-11/slim/abcl-wrapper | 3 + 1.7.1/buster/jdk-11/slim/docker-entrypoint.sh | 8 ++ 1.7.1/buster/jdk-15/Dockerfile | 73 +++++++++++++++++++ 1.7.1/buster/jdk-15/slim/Dockerfile | 41 +++++++++++ 1.7.1/buster/jdk-15/slim/abcl-wrapper | 3 + 1.7.1/buster/jdk-15/slim/docker-entrypoint.sh | 8 ++ 1.7.1/buster/jdk-8/Dockerfile | 73 +++++++++++++++++++ 1.7.1/buster/jdk-8/slim/Dockerfile | 41 +++++++++++ 1.7.1/buster/jdk-8/slim/abcl-wrapper | 3 + 1.7.1/buster/jdk-8/slim/docker-entrypoint.sh | 8 ++ 1.8.0/buster/jdk-11/Dockerfile | 73 +++++++++++++++++++ 1.8.0/buster/jdk-11/slim/Dockerfile | 41 +++++++++++ 1.8.0/buster/jdk-11/slim/abcl-wrapper | 3 + 1.8.0/buster/jdk-11/slim/docker-entrypoint.sh | 8 ++ 1.8.0/buster/jdk-15/Dockerfile | 73 +++++++++++++++++++ 1.8.0/buster/jdk-15/slim/Dockerfile | 41 +++++++++++ 1.8.0/buster/jdk-15/slim/abcl-wrapper | 3 + 1.8.0/buster/jdk-15/slim/docker-entrypoint.sh | 8 ++ 1.8.0/buster/jdk-8/Dockerfile | 73 +++++++++++++++++++ 1.8.0/buster/jdk-8/slim/Dockerfile | 41 +++++++++++ 1.8.0/buster/jdk-8/slim/abcl-wrapper | 3 + 1.8.0/buster/jdk-8/slim/docker-entrypoint.sh | 8 ++ Dockerfile-apt-nightly.template | 73 +++++++++++++++++++ Dockerfile-apt-slim-nightly.template | 40 ++++++++++ Dockerfile-apt-slim.template | 36 +++++++++ Dockerfile-apt.template | 73 +++++++++++++++++++ generate-stackbrew-library.sh | 27 ++++--- nightly/buster/jdk-11/Dockerfile | 73 +++++++++++++++++++ nightly/buster/jdk-11/slim/Dockerfile | 45 ++++++++++++ nightly/buster/jdk-11/slim/abcl-wrapper | 3 + .../buster/jdk-11/slim/docker-entrypoint.sh | 8 ++ nightly/buster/jdk-15/Dockerfile | 73 +++++++++++++++++++ nightly/buster/jdk-15/slim/Dockerfile | 45 ++++++++++++ nightly/buster/jdk-15/slim/abcl-wrapper | 3 + .../buster/jdk-15/slim/docker-entrypoint.sh | 8 ++ nightly/buster/jdk-8/Dockerfile | 73 +++++++++++++++++++ nightly/buster/jdk-8/slim/Dockerfile | 45 ++++++++++++ nightly/buster/jdk-8/slim/abcl-wrapper | 3 + .../buster/jdk-8/slim/docker-entrypoint.sh | 8 ++ update.sh | 19 +++-- 42 files changed, 1391 insertions(+), 14 deletions(-) create mode 100644 1.7.1/buster/jdk-11/slim/Dockerfile create mode 100755 1.7.1/buster/jdk-11/slim/abcl-wrapper create mode 100755 1.7.1/buster/jdk-11/slim/docker-entrypoint.sh create mode 100644 1.7.1/buster/jdk-15/slim/Dockerfile create mode 100755 1.7.1/buster/jdk-15/slim/abcl-wrapper create mode 100755 1.7.1/buster/jdk-15/slim/docker-entrypoint.sh create mode 100644 1.7.1/buster/jdk-8/slim/Dockerfile create mode 100755 1.7.1/buster/jdk-8/slim/abcl-wrapper create mode 100755 1.7.1/buster/jdk-8/slim/docker-entrypoint.sh create mode 100644 1.8.0/buster/jdk-11/slim/Dockerfile create mode 100755 1.8.0/buster/jdk-11/slim/abcl-wrapper create mode 100755 1.8.0/buster/jdk-11/slim/docker-entrypoint.sh create mode 100644 1.8.0/buster/jdk-15/slim/Dockerfile create mode 100755 1.8.0/buster/jdk-15/slim/abcl-wrapper create mode 100755 1.8.0/buster/jdk-15/slim/docker-entrypoint.sh create mode 100644 1.8.0/buster/jdk-8/slim/Dockerfile create mode 100755 1.8.0/buster/jdk-8/slim/abcl-wrapper create mode 100755 1.8.0/buster/jdk-8/slim/docker-entrypoint.sh create mode 100644 Dockerfile-apt-slim-nightly.template create mode 100644 Dockerfile-apt-slim.template create mode 100644 nightly/buster/jdk-11/slim/Dockerfile create mode 100755 nightly/buster/jdk-11/slim/abcl-wrapper create mode 100755 nightly/buster/jdk-11/slim/docker-entrypoint.sh create mode 100644 nightly/buster/jdk-15/slim/Dockerfile create mode 100755 nightly/buster/jdk-15/slim/abcl-wrapper create mode 100755 nightly/buster/jdk-15/slim/docker-entrypoint.sh create mode 100644 nightly/buster/jdk-8/slim/Dockerfile create mode 100755 nightly/buster/jdk-8/slim/abcl-wrapper create mode 100755 nightly/buster/jdk-8/slim/docker-entrypoint.sh diff --git a/1.7.1/buster/jdk-11/Dockerfile b/1.7.1/buster/jdk-11/Dockerfile index 4a8722b..a25f201 100644 --- a/1.7.1/buster/jdk-11/Dockerfile +++ b/1.7.1/buster/jdk-11/Dockerfile @@ -5,6 +5,79 @@ # FROM openjdk:11-jdk-buster +# Install the packages that buildpack-deps adds on top of +# buildpack-deps:scm. This is a bit odd for a JVM based image, but the CFFI +# project is commonly used and requires a compiler, headers, etc. Additionally, +# this gives a more uniform experience between the different cl-docker-images +# project's images. +RUN set -ex; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + default-libmysqlclient-dev \ + dpkg-dev \ + file \ + g++ \ + gcc \ + imagemagick \ + libbz2-dev \ + libc6-dev \ + libcurl4-openssl-dev \ + libdb-dev \ + libevent-dev \ + libffi-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libjpeg-dev \ + libkrb5-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libmaxminddb-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libpng-dev \ + libpq-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + libyaml-dev \ + make \ + patch \ + unzip \ + xz-utils \ + zlib1g-dev \ + \ + ; \ + rm -rf /var/lib/apt/lists/* + +# Install Maven as it is commonly used with ABCL, including with anything that +# uses CFFI. We install it ourselves instead of basing the image off of maven +# because the maven image only follows openjdk's default OS choice and does not +# provide buster based images for jdk12+. + +ARG MAVEN_VERSION=3.6.3 +ARG MAVEN_SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 + +WORKDIR /usr/share/maven + +RUN curl -fsSL https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz > /tmp/apache-maven.tar.gz \ + && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ + && tar -xzf /tmp/apache-maven.tar.gz --strip-components=1 \ + && rm -f /tmp/apache-maven.tar.gz \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +ENV MAVEN_HOME /usr/share/maven + +# Now install ABCL + ENV ABCL_VERSION 1.7.1 WORKDIR /usr/local/share/ diff --git a/1.7.1/buster/jdk-11/slim/Dockerfile b/1.7.1/buster/jdk-11/slim/Dockerfile new file mode 100644 index 0000000..9f14e47 --- /dev/null +++ b/1.7.1/buster/jdk-11/slim/Dockerfile @@ -0,0 +1,41 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# +FROM openjdk:11-jdk-slim-buster + +ENV ABCL_VERSION 1.7.1 + +WORKDIR /usr/local/share/ + +ENV ABCL_SIGNING_KEY 5491D207FF9ECDE0BEA277772A9641104DB1773D + +RUN set -x \ + # Install fetch deps + && apt-get update \ + && apt-get install --no-install-recommends -y curl gnupg dirmngr \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz" > "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz.asc" > "abcl-bin-${ABCL_VERSION}.tar.gz.asc" \ + && GNUPGHOME="$(mktemp -d)" \ + && export GNUPGHOME \ + && gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "${ABCL_SIGNING_KEY}" \ + && gpg --batch --verify "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && gunzip "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && tar xf "abcl-bin-${ABCL_VERSION}.tar" \ + && mv "abcl-bin-${ABCL_VERSION}" abcl \ + && rm -rf "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar" "$GNUPGHOME" \ + # Remove fetch deps + && apt-get remove -y curl gnupg dirmngr \ + && rm -rf /var/lib/apt/lists/* \ + # Smoke test ABCL. + && java -jar /usr/local/share/abcl/abcl.jar --batch --eval '(print (multiple-value-list (lisp-implementation-version)))' + +WORKDIR / + +COPY abcl-wrapper /usr/local/bin/abcl +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] + +CMD ["abcl"] diff --git a/1.7.1/buster/jdk-11/slim/abcl-wrapper b/1.7.1/buster/jdk-11/slim/abcl-wrapper new file mode 100755 index 0000000..cb3658b --- /dev/null +++ b/1.7.1/buster/jdk-11/slim/abcl-wrapper @@ -0,0 +1,3 @@ +#!/bin/sh + +exec java -jar /usr/local/share/abcl/abcl.jar "$@" diff --git a/1.7.1/buster/jdk-11/slim/docker-entrypoint.sh b/1.7.1/buster/jdk-11/slim/docker-entrypoint.sh new file mode 100755 index 0000000..7f6b5a3 --- /dev/null +++ b/1.7.1/buster/jdk-11/slim/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# If the first arg starts with a hyphen, prepend abcl to arguments. +if [ "${1#-}" != "$1" ]; then + set -- abcl "$@" +fi + +exec "$@" diff --git a/1.7.1/buster/jdk-15/Dockerfile b/1.7.1/buster/jdk-15/Dockerfile index e20e193..1dc8ec7 100644 --- a/1.7.1/buster/jdk-15/Dockerfile +++ b/1.7.1/buster/jdk-15/Dockerfile @@ -5,6 +5,79 @@ # FROM openjdk:15-jdk-buster +# Install the packages that buildpack-deps adds on top of +# buildpack-deps:scm. This is a bit odd for a JVM based image, but the CFFI +# project is commonly used and requires a compiler, headers, etc. Additionally, +# this gives a more uniform experience between the different cl-docker-images +# project's images. +RUN set -ex; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + default-libmysqlclient-dev \ + dpkg-dev \ + file \ + g++ \ + gcc \ + imagemagick \ + libbz2-dev \ + libc6-dev \ + libcurl4-openssl-dev \ + libdb-dev \ + libevent-dev \ + libffi-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libjpeg-dev \ + libkrb5-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libmaxminddb-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libpng-dev \ + libpq-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + libyaml-dev \ + make \ + patch \ + unzip \ + xz-utils \ + zlib1g-dev \ + \ + ; \ + rm -rf /var/lib/apt/lists/* + +# Install Maven as it is commonly used with ABCL, including with anything that +# uses CFFI. We install it ourselves instead of basing the image off of maven +# because the maven image only follows openjdk's default OS choice and does not +# provide buster based images for jdk12+. + +ARG MAVEN_VERSION=3.6.3 +ARG MAVEN_SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 + +WORKDIR /usr/share/maven + +RUN curl -fsSL https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz > /tmp/apache-maven.tar.gz \ + && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ + && tar -xzf /tmp/apache-maven.tar.gz --strip-components=1 \ + && rm -f /tmp/apache-maven.tar.gz \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +ENV MAVEN_HOME /usr/share/maven + +# Now install ABCL + ENV ABCL_VERSION 1.7.1 WORKDIR /usr/local/share/ diff --git a/1.7.1/buster/jdk-15/slim/Dockerfile b/1.7.1/buster/jdk-15/slim/Dockerfile new file mode 100644 index 0000000..8607e45 --- /dev/null +++ b/1.7.1/buster/jdk-15/slim/Dockerfile @@ -0,0 +1,41 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# +FROM openjdk:15-jdk-slim-buster + +ENV ABCL_VERSION 1.7.1 + +WORKDIR /usr/local/share/ + +ENV ABCL_SIGNING_KEY 5491D207FF9ECDE0BEA277772A9641104DB1773D + +RUN set -x \ + # Install fetch deps + && apt-get update \ + && apt-get install --no-install-recommends -y curl gnupg dirmngr \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz" > "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz.asc" > "abcl-bin-${ABCL_VERSION}.tar.gz.asc" \ + && GNUPGHOME="$(mktemp -d)" \ + && export GNUPGHOME \ + && gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "${ABCL_SIGNING_KEY}" \ + && gpg --batch --verify "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && gunzip "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && tar xf "abcl-bin-${ABCL_VERSION}.tar" \ + && mv "abcl-bin-${ABCL_VERSION}" abcl \ + && rm -rf "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar" "$GNUPGHOME" \ + # Remove fetch deps + && apt-get remove -y curl gnupg dirmngr \ + && rm -rf /var/lib/apt/lists/* \ + # Smoke test ABCL. + && java -jar /usr/local/share/abcl/abcl.jar --batch --eval '(print (multiple-value-list (lisp-implementation-version)))' + +WORKDIR / + +COPY abcl-wrapper /usr/local/bin/abcl +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] + +CMD ["abcl"] diff --git a/1.7.1/buster/jdk-15/slim/abcl-wrapper b/1.7.1/buster/jdk-15/slim/abcl-wrapper new file mode 100755 index 0000000..cb3658b --- /dev/null +++ b/1.7.1/buster/jdk-15/slim/abcl-wrapper @@ -0,0 +1,3 @@ +#!/bin/sh + +exec java -jar /usr/local/share/abcl/abcl.jar "$@" diff --git a/1.7.1/buster/jdk-15/slim/docker-entrypoint.sh b/1.7.1/buster/jdk-15/slim/docker-entrypoint.sh new file mode 100755 index 0000000..7f6b5a3 --- /dev/null +++ b/1.7.1/buster/jdk-15/slim/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# If the first arg starts with a hyphen, prepend abcl to arguments. +if [ "${1#-}" != "$1" ]; then + set -- abcl "$@" +fi + +exec "$@" diff --git a/1.7.1/buster/jdk-8/Dockerfile b/1.7.1/buster/jdk-8/Dockerfile index 2d027fc..c4cc7e9 100644 --- a/1.7.1/buster/jdk-8/Dockerfile +++ b/1.7.1/buster/jdk-8/Dockerfile @@ -5,6 +5,79 @@ # FROM openjdk:8-jdk-buster +# Install the packages that buildpack-deps adds on top of +# buildpack-deps:scm. This is a bit odd for a JVM based image, but the CFFI +# project is commonly used and requires a compiler, headers, etc. Additionally, +# this gives a more uniform experience between the different cl-docker-images +# project's images. +RUN set -ex; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + default-libmysqlclient-dev \ + dpkg-dev \ + file \ + g++ \ + gcc \ + imagemagick \ + libbz2-dev \ + libc6-dev \ + libcurl4-openssl-dev \ + libdb-dev \ + libevent-dev \ + libffi-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libjpeg-dev \ + libkrb5-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libmaxminddb-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libpng-dev \ + libpq-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + libyaml-dev \ + make \ + patch \ + unzip \ + xz-utils \ + zlib1g-dev \ + \ + ; \ + rm -rf /var/lib/apt/lists/* + +# Install Maven as it is commonly used with ABCL, including with anything that +# uses CFFI. We install it ourselves instead of basing the image off of maven +# because the maven image only follows openjdk's default OS choice and does not +# provide buster based images for jdk12+. + +ARG MAVEN_VERSION=3.6.3 +ARG MAVEN_SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 + +WORKDIR /usr/share/maven + +RUN curl -fsSL https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz > /tmp/apache-maven.tar.gz \ + && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ + && tar -xzf /tmp/apache-maven.tar.gz --strip-components=1 \ + && rm -f /tmp/apache-maven.tar.gz \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +ENV MAVEN_HOME /usr/share/maven + +# Now install ABCL + ENV ABCL_VERSION 1.7.1 WORKDIR /usr/local/share/ diff --git a/1.7.1/buster/jdk-8/slim/Dockerfile b/1.7.1/buster/jdk-8/slim/Dockerfile new file mode 100644 index 0000000..3decd82 --- /dev/null +++ b/1.7.1/buster/jdk-8/slim/Dockerfile @@ -0,0 +1,41 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# +FROM openjdk:8-jdk-slim-buster + +ENV ABCL_VERSION 1.7.1 + +WORKDIR /usr/local/share/ + +ENV ABCL_SIGNING_KEY 5491D207FF9ECDE0BEA277772A9641104DB1773D + +RUN set -x \ + # Install fetch deps + && apt-get update \ + && apt-get install --no-install-recommends -y curl gnupg dirmngr \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz" > "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz.asc" > "abcl-bin-${ABCL_VERSION}.tar.gz.asc" \ + && GNUPGHOME="$(mktemp -d)" \ + && export GNUPGHOME \ + && gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "${ABCL_SIGNING_KEY}" \ + && gpg --batch --verify "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && gunzip "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && tar xf "abcl-bin-${ABCL_VERSION}.tar" \ + && mv "abcl-bin-${ABCL_VERSION}" abcl \ + && rm -rf "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar" "$GNUPGHOME" \ + # Remove fetch deps + && apt-get remove -y curl gnupg dirmngr \ + && rm -rf /var/lib/apt/lists/* \ + # Smoke test ABCL. + && java -jar /usr/local/share/abcl/abcl.jar --batch --eval '(print (multiple-value-list (lisp-implementation-version)))' + +WORKDIR / + +COPY abcl-wrapper /usr/local/bin/abcl +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] + +CMD ["abcl"] diff --git a/1.7.1/buster/jdk-8/slim/abcl-wrapper b/1.7.1/buster/jdk-8/slim/abcl-wrapper new file mode 100755 index 0000000..cb3658b --- /dev/null +++ b/1.7.1/buster/jdk-8/slim/abcl-wrapper @@ -0,0 +1,3 @@ +#!/bin/sh + +exec java -jar /usr/local/share/abcl/abcl.jar "$@" diff --git a/1.7.1/buster/jdk-8/slim/docker-entrypoint.sh b/1.7.1/buster/jdk-8/slim/docker-entrypoint.sh new file mode 100755 index 0000000..7f6b5a3 --- /dev/null +++ b/1.7.1/buster/jdk-8/slim/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# If the first arg starts with a hyphen, prepend abcl to arguments. +if [ "${1#-}" != "$1" ]; then + set -- abcl "$@" +fi + +exec "$@" diff --git a/1.8.0/buster/jdk-11/Dockerfile b/1.8.0/buster/jdk-11/Dockerfile index 966170d..afe6e68 100644 --- a/1.8.0/buster/jdk-11/Dockerfile +++ b/1.8.0/buster/jdk-11/Dockerfile @@ -5,6 +5,79 @@ # FROM openjdk:11-jdk-buster +# Install the packages that buildpack-deps adds on top of +# buildpack-deps:scm. This is a bit odd for a JVM based image, but the CFFI +# project is commonly used and requires a compiler, headers, etc. Additionally, +# this gives a more uniform experience between the different cl-docker-images +# project's images. +RUN set -ex; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + default-libmysqlclient-dev \ + dpkg-dev \ + file \ + g++ \ + gcc \ + imagemagick \ + libbz2-dev \ + libc6-dev \ + libcurl4-openssl-dev \ + libdb-dev \ + libevent-dev \ + libffi-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libjpeg-dev \ + libkrb5-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libmaxminddb-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libpng-dev \ + libpq-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + libyaml-dev \ + make \ + patch \ + unzip \ + xz-utils \ + zlib1g-dev \ + \ + ; \ + rm -rf /var/lib/apt/lists/* + +# Install Maven as it is commonly used with ABCL, including with anything that +# uses CFFI. We install it ourselves instead of basing the image off of maven +# because the maven image only follows openjdk's default OS choice and does not +# provide buster based images for jdk12+. + +ARG MAVEN_VERSION=3.6.3 +ARG MAVEN_SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 + +WORKDIR /usr/share/maven + +RUN curl -fsSL https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz > /tmp/apache-maven.tar.gz \ + && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ + && tar -xzf /tmp/apache-maven.tar.gz --strip-components=1 \ + && rm -f /tmp/apache-maven.tar.gz \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +ENV MAVEN_HOME /usr/share/maven + +# Now install ABCL + ENV ABCL_VERSION 1.8.0 WORKDIR /usr/local/share/ diff --git a/1.8.0/buster/jdk-11/slim/Dockerfile b/1.8.0/buster/jdk-11/slim/Dockerfile new file mode 100644 index 0000000..3a58008 --- /dev/null +++ b/1.8.0/buster/jdk-11/slim/Dockerfile @@ -0,0 +1,41 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# +FROM openjdk:11-jdk-slim-buster + +ENV ABCL_VERSION 1.8.0 + +WORKDIR /usr/local/share/ + +ENV ABCL_SIGNING_KEY 5491D207FF9ECDE0BEA277772A9641104DB1773D + +RUN set -x \ + # Install fetch deps + && apt-get update \ + && apt-get install --no-install-recommends -y curl gnupg dirmngr \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz" > "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz.asc" > "abcl-bin-${ABCL_VERSION}.tar.gz.asc" \ + && GNUPGHOME="$(mktemp -d)" \ + && export GNUPGHOME \ + && gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "${ABCL_SIGNING_KEY}" \ + && gpg --batch --verify "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && gunzip "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && tar xf "abcl-bin-${ABCL_VERSION}.tar" \ + && mv "abcl-bin-${ABCL_VERSION}" abcl \ + && rm -rf "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar" "$GNUPGHOME" \ + # Remove fetch deps + && apt-get remove -y curl gnupg dirmngr \ + && rm -rf /var/lib/apt/lists/* \ + # Smoke test ABCL. + && java -jar /usr/local/share/abcl/abcl.jar --batch --eval '(print (multiple-value-list (lisp-implementation-version)))' + +WORKDIR / + +COPY abcl-wrapper /usr/local/bin/abcl +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] + +CMD ["abcl"] diff --git a/1.8.0/buster/jdk-11/slim/abcl-wrapper b/1.8.0/buster/jdk-11/slim/abcl-wrapper new file mode 100755 index 0000000..cb3658b --- /dev/null +++ b/1.8.0/buster/jdk-11/slim/abcl-wrapper @@ -0,0 +1,3 @@ +#!/bin/sh + +exec java -jar /usr/local/share/abcl/abcl.jar "$@" diff --git a/1.8.0/buster/jdk-11/slim/docker-entrypoint.sh b/1.8.0/buster/jdk-11/slim/docker-entrypoint.sh new file mode 100755 index 0000000..7f6b5a3 --- /dev/null +++ b/1.8.0/buster/jdk-11/slim/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# If the first arg starts with a hyphen, prepend abcl to arguments. +if [ "${1#-}" != "$1" ]; then + set -- abcl "$@" +fi + +exec "$@" diff --git a/1.8.0/buster/jdk-15/Dockerfile b/1.8.0/buster/jdk-15/Dockerfile index 027c50f..1e692d0 100644 --- a/1.8.0/buster/jdk-15/Dockerfile +++ b/1.8.0/buster/jdk-15/Dockerfile @@ -5,6 +5,79 @@ # FROM openjdk:15-jdk-buster +# Install the packages that buildpack-deps adds on top of +# buildpack-deps:scm. This is a bit odd for a JVM based image, but the CFFI +# project is commonly used and requires a compiler, headers, etc. Additionally, +# this gives a more uniform experience between the different cl-docker-images +# project's images. +RUN set -ex; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + default-libmysqlclient-dev \ + dpkg-dev \ + file \ + g++ \ + gcc \ + imagemagick \ + libbz2-dev \ + libc6-dev \ + libcurl4-openssl-dev \ + libdb-dev \ + libevent-dev \ + libffi-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libjpeg-dev \ + libkrb5-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libmaxminddb-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libpng-dev \ + libpq-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + libyaml-dev \ + make \ + patch \ + unzip \ + xz-utils \ + zlib1g-dev \ + \ + ; \ + rm -rf /var/lib/apt/lists/* + +# Install Maven as it is commonly used with ABCL, including with anything that +# uses CFFI. We install it ourselves instead of basing the image off of maven +# because the maven image only follows openjdk's default OS choice and does not +# provide buster based images for jdk12+. + +ARG MAVEN_VERSION=3.6.3 +ARG MAVEN_SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 + +WORKDIR /usr/share/maven + +RUN curl -fsSL https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz > /tmp/apache-maven.tar.gz \ + && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ + && tar -xzf /tmp/apache-maven.tar.gz --strip-components=1 \ + && rm -f /tmp/apache-maven.tar.gz \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +ENV MAVEN_HOME /usr/share/maven + +# Now install ABCL + ENV ABCL_VERSION 1.8.0 WORKDIR /usr/local/share/ diff --git a/1.8.0/buster/jdk-15/slim/Dockerfile b/1.8.0/buster/jdk-15/slim/Dockerfile new file mode 100644 index 0000000..b6dd037 --- /dev/null +++ b/1.8.0/buster/jdk-15/slim/Dockerfile @@ -0,0 +1,41 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# +FROM openjdk:15-jdk-slim-buster + +ENV ABCL_VERSION 1.8.0 + +WORKDIR /usr/local/share/ + +ENV ABCL_SIGNING_KEY 5491D207FF9ECDE0BEA277772A9641104DB1773D + +RUN set -x \ + # Install fetch deps + && apt-get update \ + && apt-get install --no-install-recommends -y curl gnupg dirmngr \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz" > "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz.asc" > "abcl-bin-${ABCL_VERSION}.tar.gz.asc" \ + && GNUPGHOME="$(mktemp -d)" \ + && export GNUPGHOME \ + && gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "${ABCL_SIGNING_KEY}" \ + && gpg --batch --verify "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && gunzip "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && tar xf "abcl-bin-${ABCL_VERSION}.tar" \ + && mv "abcl-bin-${ABCL_VERSION}" abcl \ + && rm -rf "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar" "$GNUPGHOME" \ + # Remove fetch deps + && apt-get remove -y curl gnupg dirmngr \ + && rm -rf /var/lib/apt/lists/* \ + # Smoke test ABCL. + && java -jar /usr/local/share/abcl/abcl.jar --batch --eval '(print (multiple-value-list (lisp-implementation-version)))' + +WORKDIR / + +COPY abcl-wrapper /usr/local/bin/abcl +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] + +CMD ["abcl"] diff --git a/1.8.0/buster/jdk-15/slim/abcl-wrapper b/1.8.0/buster/jdk-15/slim/abcl-wrapper new file mode 100755 index 0000000..cb3658b --- /dev/null +++ b/1.8.0/buster/jdk-15/slim/abcl-wrapper @@ -0,0 +1,3 @@ +#!/bin/sh + +exec java -jar /usr/local/share/abcl/abcl.jar "$@" diff --git a/1.8.0/buster/jdk-15/slim/docker-entrypoint.sh b/1.8.0/buster/jdk-15/slim/docker-entrypoint.sh new file mode 100755 index 0000000..7f6b5a3 --- /dev/null +++ b/1.8.0/buster/jdk-15/slim/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# If the first arg starts with a hyphen, prepend abcl to arguments. +if [ "${1#-}" != "$1" ]; then + set -- abcl "$@" +fi + +exec "$@" diff --git a/1.8.0/buster/jdk-8/Dockerfile b/1.8.0/buster/jdk-8/Dockerfile index 6f8c51b..5c50147 100644 --- a/1.8.0/buster/jdk-8/Dockerfile +++ b/1.8.0/buster/jdk-8/Dockerfile @@ -5,6 +5,79 @@ # FROM openjdk:8-jdk-buster +# Install the packages that buildpack-deps adds on top of +# buildpack-deps:scm. This is a bit odd for a JVM based image, but the CFFI +# project is commonly used and requires a compiler, headers, etc. Additionally, +# this gives a more uniform experience between the different cl-docker-images +# project's images. +RUN set -ex; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + default-libmysqlclient-dev \ + dpkg-dev \ + file \ + g++ \ + gcc \ + imagemagick \ + libbz2-dev \ + libc6-dev \ + libcurl4-openssl-dev \ + libdb-dev \ + libevent-dev \ + libffi-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libjpeg-dev \ + libkrb5-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libmaxminddb-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libpng-dev \ + libpq-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + libyaml-dev \ + make \ + patch \ + unzip \ + xz-utils \ + zlib1g-dev \ + \ + ; \ + rm -rf /var/lib/apt/lists/* + +# Install Maven as it is commonly used with ABCL, including with anything that +# uses CFFI. We install it ourselves instead of basing the image off of maven +# because the maven image only follows openjdk's default OS choice and does not +# provide buster based images for jdk12+. + +ARG MAVEN_VERSION=3.6.3 +ARG MAVEN_SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 + +WORKDIR /usr/share/maven + +RUN curl -fsSL https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz > /tmp/apache-maven.tar.gz \ + && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ + && tar -xzf /tmp/apache-maven.tar.gz --strip-components=1 \ + && rm -f /tmp/apache-maven.tar.gz \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +ENV MAVEN_HOME /usr/share/maven + +# Now install ABCL + ENV ABCL_VERSION 1.8.0 WORKDIR /usr/local/share/ diff --git a/1.8.0/buster/jdk-8/slim/Dockerfile b/1.8.0/buster/jdk-8/slim/Dockerfile new file mode 100644 index 0000000..e6352e2 --- /dev/null +++ b/1.8.0/buster/jdk-8/slim/Dockerfile @@ -0,0 +1,41 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# +FROM openjdk:8-jdk-slim-buster + +ENV ABCL_VERSION 1.8.0 + +WORKDIR /usr/local/share/ + +ENV ABCL_SIGNING_KEY 5491D207FF9ECDE0BEA277772A9641104DB1773D + +RUN set -x \ + # Install fetch deps + && apt-get update \ + && apt-get install --no-install-recommends -y curl gnupg dirmngr \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz" > "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz.asc" > "abcl-bin-${ABCL_VERSION}.tar.gz.asc" \ + && GNUPGHOME="$(mktemp -d)" \ + && export GNUPGHOME \ + && gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "${ABCL_SIGNING_KEY}" \ + && gpg --batch --verify "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && gunzip "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && tar xf "abcl-bin-${ABCL_VERSION}.tar" \ + && mv "abcl-bin-${ABCL_VERSION}" abcl \ + && rm -rf "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar" "$GNUPGHOME" \ + # Remove fetch deps + && apt-get remove -y curl gnupg dirmngr \ + && rm -rf /var/lib/apt/lists/* \ + # Smoke test ABCL. + && java -jar /usr/local/share/abcl/abcl.jar --batch --eval '(print (multiple-value-list (lisp-implementation-version)))' + +WORKDIR / + +COPY abcl-wrapper /usr/local/bin/abcl +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] + +CMD ["abcl"] diff --git a/1.8.0/buster/jdk-8/slim/abcl-wrapper b/1.8.0/buster/jdk-8/slim/abcl-wrapper new file mode 100755 index 0000000..cb3658b --- /dev/null +++ b/1.8.0/buster/jdk-8/slim/abcl-wrapper @@ -0,0 +1,3 @@ +#!/bin/sh + +exec java -jar /usr/local/share/abcl/abcl.jar "$@" diff --git a/1.8.0/buster/jdk-8/slim/docker-entrypoint.sh b/1.8.0/buster/jdk-8/slim/docker-entrypoint.sh new file mode 100755 index 0000000..7f6b5a3 --- /dev/null +++ b/1.8.0/buster/jdk-8/slim/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# If the first arg starts with a hyphen, prepend abcl to arguments. +if [ "${1#-}" != "$1" ]; then + set -- abcl "$@" +fi + +exec "$@" diff --git a/Dockerfile-apt-nightly.template b/Dockerfile-apt-nightly.template index dcd47bb..11d3732 100644 --- a/Dockerfile-apt-nightly.template +++ b/Dockerfile-apt-nightly.template @@ -1,5 +1,78 @@ FROM PLACEHOLDER +# Install the packages that buildpack-deps adds on top of +# buildpack-deps:scm. This is a bit odd for a JVM based image, but the CFFI +# project is commonly used and requires a compiler, headers, etc. Additionally, +# this gives a more uniform experience between the different cl-docker-images +# project's images. +RUN set -ex; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + default-libmysqlclient-dev \ + dpkg-dev \ + file \ + g++ \ + gcc \ + imagemagick \ + libbz2-dev \ + libc6-dev \ + libcurl4-openssl-dev \ + libdb-dev \ + libevent-dev \ + libffi-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libjpeg-dev \ + libkrb5-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libmaxminddb-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libpng-dev \ + libpq-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + libyaml-dev \ + make \ + patch \ + unzip \ + xz-utils \ + zlib1g-dev \ + \ + ; \ + rm -rf /var/lib/apt/lists/* + +# Install Maven as it is commonly used with ABCL, including with anything that +# uses CFFI. We install it ourselves instead of basing the image off of maven +# because the maven image only follows openjdk's default OS choice and does not +# provide buster based images for jdk12+. + +ARG MAVEN_VERSION=3.6.3 +ARG MAVEN_SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 + +WORKDIR /usr/share/maven + +RUN curl -fsSL https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz > /tmp/apache-maven.tar.gz \ + && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ + && tar -xzf /tmp/apache-maven.tar.gz --strip-components=1 \ + && rm -f /tmp/apache-maven.tar.gz \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +ENV MAVEN_HOME /usr/share/maven + +# Now install ABCL + ENV ABCL_COMMIT PLACEHOLDER WORKDIR /usr/local/src/ diff --git a/Dockerfile-apt-slim-nightly.template b/Dockerfile-apt-slim-nightly.template new file mode 100644 index 0000000..a940c42 --- /dev/null +++ b/Dockerfile-apt-slim-nightly.template @@ -0,0 +1,40 @@ +FROM PLACEHOLDER + +ENV ABCL_COMMIT PLACEHOLDER + +WORKDIR /usr/local/src/ + +RUN set -x \ + # Install fetch deps + && apt-get update \ + && apt-get install --no-install-recommends -y curl gnupg dirmngr \ + # Install ant + && ANT_VERSION="1.10.9" \ + && curl -fsSL "https://mirrors.gigenet.com/apache/ant/binaries/apache-ant-$ANT_VERSION-bin.tar.gz" > "ant-$ANT_VERSION.tar.gz" \ + && tar xf "ant-$ANT_VERSION.tar.gz" \ + && PATH="/usr/local/src/apache-ant-$ANT_VERSION/bin:$PATH" \ + && ANT_HOME="/usr/local/src/apache-ant-$ANT_VERSION" \ + && export ANT_HOME \ + # Install ABCL + && curl -fsSL "https://github.com/armedbear/abcl/archive/$ABCL_COMMIT.tar.gz" > "abcl-$ABCL_COMMIT.tar.gz" \ + && tar xf "abcl-$ABCL_COMMIT.tar.gz" \ + && JAVA_MAJOR_VERSION="${JAVA_VERSION%%.*}" \ + && JAVA_MAJOR_VERSION="${JAVA_MAJOR_VERSION%%u*}" \ + && export JAVA_MAJOR_VERSION \ + && mkdir /usr/local/share/abcl/ \ + && (cd "abcl-$ABCL_COMMIT" && bash ./ci/create-abcl-properties.bash "openjdk$JAVA_MAJOR_VERSION" && ant && cp dist/* /usr/local/share/abcl ) \ + && rm -rf abcl* ant* apache-ant* \ + # Remove fetch deps + && apt-get remove -y curl gnupg dirmngr \ + && rm -rf /var/lib/apt/lists/* \ + # Smoke test ABCL. + && java -jar /usr/local/share/abcl/abcl.jar --batch --eval '(print (multiple-value-list (lisp-implementation-version)))' + +WORKDIR / + +COPY abcl-wrapper /usr/local/bin/abcl +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] + +CMD ["abcl"] diff --git a/Dockerfile-apt-slim.template b/Dockerfile-apt-slim.template new file mode 100644 index 0000000..dc57511 --- /dev/null +++ b/Dockerfile-apt-slim.template @@ -0,0 +1,36 @@ +FROM PLACEHOLDER + +ENV ABCL_VERSION PLACEHOLDER + +WORKDIR /usr/local/share/ + +ENV ABCL_SIGNING_KEY 5491D207FF9ECDE0BEA277772A9641104DB1773D + +RUN set -x \ + # Install fetch deps + && apt-get update \ + && apt-get install --no-install-recommends -y curl gnupg dirmngr \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz" > "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && curl -fsSL "https://abcl.org/releases/${ABCL_VERSION}/abcl-bin-${ABCL_VERSION}.tar.gz.asc" > "abcl-bin-${ABCL_VERSION}.tar.gz.asc" \ + && GNUPGHOME="$(mktemp -d)" \ + && export GNUPGHOME \ + && gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "${ABCL_SIGNING_KEY}" \ + && gpg --batch --verify "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && gunzip "abcl-bin-${ABCL_VERSION}.tar.gz" \ + && tar xf "abcl-bin-${ABCL_VERSION}.tar" \ + && mv "abcl-bin-${ABCL_VERSION}" abcl \ + && rm -rf "abcl-bin-${ABCL_VERSION}.tar.gz.asc" "abcl-bin-${ABCL_VERSION}.tar" "$GNUPGHOME" \ + # Remove fetch deps + && apt-get remove -y curl gnupg dirmngr \ + && rm -rf /var/lib/apt/lists/* \ + # Smoke test ABCL. + && java -jar /usr/local/share/abcl/abcl.jar --batch --eval '(print (multiple-value-list (lisp-implementation-version)))' + +WORKDIR / + +COPY abcl-wrapper /usr/local/bin/abcl +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] + +CMD ["abcl"] diff --git a/Dockerfile-apt.template b/Dockerfile-apt.template index 1aedb74..a5530ea 100644 --- a/Dockerfile-apt.template +++ b/Dockerfile-apt.template @@ -1,5 +1,78 @@ FROM PLACEHOLDER +# Install the packages that buildpack-deps adds on top of +# buildpack-deps:scm. This is a bit odd for a JVM based image, but the CFFI +# project is commonly used and requires a compiler, headers, etc. Additionally, +# this gives a more uniform experience between the different cl-docker-images +# project's images. +RUN set -ex; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + default-libmysqlclient-dev \ + dpkg-dev \ + file \ + g++ \ + gcc \ + imagemagick \ + libbz2-dev \ + libc6-dev \ + libcurl4-openssl-dev \ + libdb-dev \ + libevent-dev \ + libffi-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libjpeg-dev \ + libkrb5-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libmaxminddb-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libpng-dev \ + libpq-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + libyaml-dev \ + make \ + patch \ + unzip \ + xz-utils \ + zlib1g-dev \ + \ + ; \ + rm -rf /var/lib/apt/lists/* + +# Install Maven as it is commonly used with ABCL, including with anything that +# uses CFFI. We install it ourselves instead of basing the image off of maven +# because the maven image only follows openjdk's default OS choice and does not +# provide buster based images for jdk12+. + +ARG MAVEN_VERSION=3.6.3 +ARG MAVEN_SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 + +WORKDIR /usr/share/maven + +RUN curl -fsSL https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz > /tmp/apache-maven.tar.gz \ + && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ + && tar -xzf /tmp/apache-maven.tar.gz --strip-components=1 \ + && rm -f /tmp/apache-maven.tar.gz \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +ENV MAVEN_HOME /usr/share/maven + +# Now install ABCL + ENV ABCL_VERSION PLACEHOLDER WORKDIR /usr/local/share/ diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index d97d4a0..f676a33 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -82,13 +82,22 @@ join() { for version in "${versions[@]}"; do for v in \ - buster/{jdk-15,jdk-11,jdk-8} \ + buster/{jdk-15,jdk-11,jdk-8}/{,slim} \ windowsservercore-{1809,ltsc2016}/{jdk-15,jdk-11,jdk-8} \ ; do os="${v%%/*}" - javaVariant="$(basename "$v")" + javaVariant="${v%/*}" + javaVariant="$(basename "$javaVariant")" javaVersion="${javaVariant#jdk-}" javaType="${javaVariant%-*}" + + variant="${v##*/}" + if [ -n "$variant" ]; then + variantTag="-$variant" + else + variantTag="" + fi + dir="$version/$v" if [ "$version" = "nightly" ] && [[ "$os" == "windowsservercore"* ]]; then @@ -104,7 +113,7 @@ for version in "${versions[@]}"; do ${aliases[$version]:-} ) - variantAliases=( "${versionAliases[@]/%/-$javaType$javaVersion-$os}" ) + variantAliases=( "${versionAliases[@]/%/-$javaType$javaVersion$variantTag-$os}" ) variantAliases=( "${variantAliases[@]//latest-/}" ) case "$os" in @@ -116,22 +125,22 @@ for version in "${versions[@]}"; do esac if [ "$javaVersion" = "$defaultJavaVersion" ]; then - variantAliases+=( "${versionAliases[@]/%/-$javaType-$os}" ) - variantAliases+=( "${versionAliases[@]/%/-$os}" ) + variantAliases+=( "${versionAliases[@]/%/-$javaType$variantTag-$os}" ) + variantAliases+=( "${versionAliases[@]/%/$variantTag-$os}" ) variantAliases=( "${variantAliases[@]//latest-/}" ) fi sharedTags=() if [ "$os" = "$defaultDebianSuite" ] || [[ "$os" == 'windowsservercore'* ]]; then - sharedTags+=( "${versionAliases[@]/%/-$javaType$javaVersion}" ) + sharedTags+=( "${versionAliases[@]/%/-$javaType$javaVersion$variantTag}" ) if [ "$javaVersion" = "$defaultJavaVersion" ]; then - sharedTags+=( "${versionAliases[@]/%/-$javaType}" ) - sharedTags+=( "${versionAliases[@]}" ) + sharedTags+=( "${versionAliases[@]/%/-$javaType$variantTag}" ) + sharedTags+=( "${versionAliases[@]/%/$variantTag}" ) fi if [[ "$os" == "windowsservercore"* ]]; then - sharedTags+=( "${sharedTags[@]/%/-windowsservercore}") + sharedTags+=( "${sharedTags[@]/%/-windowsservercore$variantTag}") fi fi diff --git a/nightly/buster/jdk-11/Dockerfile b/nightly/buster/jdk-11/Dockerfile index d71430f..5e1cd9a 100644 --- a/nightly/buster/jdk-11/Dockerfile +++ b/nightly/buster/jdk-11/Dockerfile @@ -5,6 +5,79 @@ # FROM openjdk:11-jdk-buster +# Install the packages that buildpack-deps adds on top of +# buildpack-deps:scm. This is a bit odd for a JVM based image, but the CFFI +# project is commonly used and requires a compiler, headers, etc. Additionally, +# this gives a more uniform experience between the different cl-docker-images +# project's images. +RUN set -ex; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + default-libmysqlclient-dev \ + dpkg-dev \ + file \ + g++ \ + gcc \ + imagemagick \ + libbz2-dev \ + libc6-dev \ + libcurl4-openssl-dev \ + libdb-dev \ + libevent-dev \ + libffi-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libjpeg-dev \ + libkrb5-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libmaxminddb-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libpng-dev \ + libpq-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + libyaml-dev \ + make \ + patch \ + unzip \ + xz-utils \ + zlib1g-dev \ + \ + ; \ + rm -rf /var/lib/apt/lists/* + +# Install Maven as it is commonly used with ABCL, including with anything that +# uses CFFI. We install it ourselves instead of basing the image off of maven +# because the maven image only follows openjdk's default OS choice and does not +# provide buster based images for jdk12+. + +ARG MAVEN_VERSION=3.6.3 +ARG MAVEN_SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 + +WORKDIR /usr/share/maven + +RUN curl -fsSL https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz > /tmp/apache-maven.tar.gz \ + && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ + && tar -xzf /tmp/apache-maven.tar.gz --strip-components=1 \ + && rm -f /tmp/apache-maven.tar.gz \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +ENV MAVEN_HOME /usr/share/maven + +# Now install ABCL + ENV ABCL_COMMIT 9c0a9693ea933309e503266255edcde5cc76257c WORKDIR /usr/local/src/ diff --git a/nightly/buster/jdk-11/slim/Dockerfile b/nightly/buster/jdk-11/slim/Dockerfile new file mode 100644 index 0000000..37ed0d4 --- /dev/null +++ b/nightly/buster/jdk-11/slim/Dockerfile @@ -0,0 +1,45 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# +FROM openjdk:11-jdk-slim-buster + +ENV ABCL_COMMIT 9c0a9693ea933309e503266255edcde5cc76257c + +WORKDIR /usr/local/src/ + +RUN set -x \ + # Install fetch deps + && apt-get update \ + && apt-get install --no-install-recommends -y curl gnupg dirmngr \ + # Install ant + && ANT_VERSION="1.10.9" \ + && curl -fsSL "https://mirrors.gigenet.com/apache/ant/binaries/apache-ant-$ANT_VERSION-bin.tar.gz" > "ant-$ANT_VERSION.tar.gz" \ + && tar xf "ant-$ANT_VERSION.tar.gz" \ + && PATH="/usr/local/src/apache-ant-$ANT_VERSION/bin:$PATH" \ + && ANT_HOME="/usr/local/src/apache-ant-$ANT_VERSION" \ + && export ANT_HOME \ + # Install ABCL + && curl -fsSL "https://github.com/armedbear/abcl/archive/$ABCL_COMMIT.tar.gz" > "abcl-$ABCL_COMMIT.tar.gz" \ + && tar xf "abcl-$ABCL_COMMIT.tar.gz" \ + && JAVA_MAJOR_VERSION="${JAVA_VERSION%%.*}" \ + && JAVA_MAJOR_VERSION="${JAVA_MAJOR_VERSION%%u*}" \ + && export JAVA_MAJOR_VERSION \ + && mkdir /usr/local/share/abcl/ \ + && (cd "abcl-$ABCL_COMMIT" && bash ./ci/create-abcl-properties.bash "openjdk$JAVA_MAJOR_VERSION" && ant && cp dist/* /usr/local/share/abcl ) \ + && rm -rf abcl* ant* apache-ant* \ + # Remove fetch deps + && apt-get remove -y curl gnupg dirmngr \ + && rm -rf /var/lib/apt/lists/* \ + # Smoke test ABCL. + && java -jar /usr/local/share/abcl/abcl.jar --batch --eval '(print (multiple-value-list (lisp-implementation-version)))' + +WORKDIR / + +COPY abcl-wrapper /usr/local/bin/abcl +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] + +CMD ["abcl"] diff --git a/nightly/buster/jdk-11/slim/abcl-wrapper b/nightly/buster/jdk-11/slim/abcl-wrapper new file mode 100755 index 0000000..cb3658b --- /dev/null +++ b/nightly/buster/jdk-11/slim/abcl-wrapper @@ -0,0 +1,3 @@ +#!/bin/sh + +exec java -jar /usr/local/share/abcl/abcl.jar "$@" diff --git a/nightly/buster/jdk-11/slim/docker-entrypoint.sh b/nightly/buster/jdk-11/slim/docker-entrypoint.sh new file mode 100755 index 0000000..7f6b5a3 --- /dev/null +++ b/nightly/buster/jdk-11/slim/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# If the first arg starts with a hyphen, prepend abcl to arguments. +if [ "${1#-}" != "$1" ]; then + set -- abcl "$@" +fi + +exec "$@" diff --git a/nightly/buster/jdk-15/Dockerfile b/nightly/buster/jdk-15/Dockerfile index bdd2392..48f5497 100644 --- a/nightly/buster/jdk-15/Dockerfile +++ b/nightly/buster/jdk-15/Dockerfile @@ -5,6 +5,79 @@ # FROM openjdk:15-jdk-buster +# Install the packages that buildpack-deps adds on top of +# buildpack-deps:scm. This is a bit odd for a JVM based image, but the CFFI +# project is commonly used and requires a compiler, headers, etc. Additionally, +# this gives a more uniform experience between the different cl-docker-images +# project's images. +RUN set -ex; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + default-libmysqlclient-dev \ + dpkg-dev \ + file \ + g++ \ + gcc \ + imagemagick \ + libbz2-dev \ + libc6-dev \ + libcurl4-openssl-dev \ + libdb-dev \ + libevent-dev \ + libffi-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libjpeg-dev \ + libkrb5-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libmaxminddb-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libpng-dev \ + libpq-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + libyaml-dev \ + make \ + patch \ + unzip \ + xz-utils \ + zlib1g-dev \ + \ + ; \ + rm -rf /var/lib/apt/lists/* + +# Install Maven as it is commonly used with ABCL, including with anything that +# uses CFFI. We install it ourselves instead of basing the image off of maven +# because the maven image only follows openjdk's default OS choice and does not +# provide buster based images for jdk12+. + +ARG MAVEN_VERSION=3.6.3 +ARG MAVEN_SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 + +WORKDIR /usr/share/maven + +RUN curl -fsSL https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz > /tmp/apache-maven.tar.gz \ + && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ + && tar -xzf /tmp/apache-maven.tar.gz --strip-components=1 \ + && rm -f /tmp/apache-maven.tar.gz \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +ENV MAVEN_HOME /usr/share/maven + +# Now install ABCL + ENV ABCL_COMMIT 9c0a9693ea933309e503266255edcde5cc76257c WORKDIR /usr/local/src/ diff --git a/nightly/buster/jdk-15/slim/Dockerfile b/nightly/buster/jdk-15/slim/Dockerfile new file mode 100644 index 0000000..267f9c4 --- /dev/null +++ b/nightly/buster/jdk-15/slim/Dockerfile @@ -0,0 +1,45 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# +FROM openjdk:15-jdk-slim-buster + +ENV ABCL_COMMIT 9c0a9693ea933309e503266255edcde5cc76257c + +WORKDIR /usr/local/src/ + +RUN set -x \ + # Install fetch deps + && apt-get update \ + && apt-get install --no-install-recommends -y curl gnupg dirmngr \ + # Install ant + && ANT_VERSION="1.10.9" \ + && curl -fsSL "https://mirrors.gigenet.com/apache/ant/binaries/apache-ant-$ANT_VERSION-bin.tar.gz" > "ant-$ANT_VERSION.tar.gz" \ + && tar xf "ant-$ANT_VERSION.tar.gz" \ + && PATH="/usr/local/src/apache-ant-$ANT_VERSION/bin:$PATH" \ + && ANT_HOME="/usr/local/src/apache-ant-$ANT_VERSION" \ + && export ANT_HOME \ + # Install ABCL + && curl -fsSL "https://github.com/armedbear/abcl/archive/$ABCL_COMMIT.tar.gz" > "abcl-$ABCL_COMMIT.tar.gz" \ + && tar xf "abcl-$ABCL_COMMIT.tar.gz" \ + && JAVA_MAJOR_VERSION="${JAVA_VERSION%%.*}" \ + && JAVA_MAJOR_VERSION="${JAVA_MAJOR_VERSION%%u*}" \ + && export JAVA_MAJOR_VERSION \ + && mkdir /usr/local/share/abcl/ \ + && (cd "abcl-$ABCL_COMMIT" && bash ./ci/create-abcl-properties.bash "openjdk$JAVA_MAJOR_VERSION" && ant && cp dist/* /usr/local/share/abcl ) \ + && rm -rf abcl* ant* apache-ant* \ + # Remove fetch deps + && apt-get remove -y curl gnupg dirmngr \ + && rm -rf /var/lib/apt/lists/* \ + # Smoke test ABCL. + && java -jar /usr/local/share/abcl/abcl.jar --batch --eval '(print (multiple-value-list (lisp-implementation-version)))' + +WORKDIR / + +COPY abcl-wrapper /usr/local/bin/abcl +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] + +CMD ["abcl"] diff --git a/nightly/buster/jdk-15/slim/abcl-wrapper b/nightly/buster/jdk-15/slim/abcl-wrapper new file mode 100755 index 0000000..cb3658b --- /dev/null +++ b/nightly/buster/jdk-15/slim/abcl-wrapper @@ -0,0 +1,3 @@ +#!/bin/sh + +exec java -jar /usr/local/share/abcl/abcl.jar "$@" diff --git a/nightly/buster/jdk-15/slim/docker-entrypoint.sh b/nightly/buster/jdk-15/slim/docker-entrypoint.sh new file mode 100755 index 0000000..7f6b5a3 --- /dev/null +++ b/nightly/buster/jdk-15/slim/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# If the first arg starts with a hyphen, prepend abcl to arguments. +if [ "${1#-}" != "$1" ]; then + set -- abcl "$@" +fi + +exec "$@" diff --git a/nightly/buster/jdk-8/Dockerfile b/nightly/buster/jdk-8/Dockerfile index d55cfb4..b04f8fa 100644 --- a/nightly/buster/jdk-8/Dockerfile +++ b/nightly/buster/jdk-8/Dockerfile @@ -5,6 +5,79 @@ # FROM openjdk:8-jdk-buster +# Install the packages that buildpack-deps adds on top of +# buildpack-deps:scm. This is a bit odd for a JVM based image, but the CFFI +# project is commonly used and requires a compiler, headers, etc. Additionally, +# this gives a more uniform experience between the different cl-docker-images +# project's images. +RUN set -ex; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + autoconf \ + automake \ + bzip2 \ + default-libmysqlclient-dev \ + dpkg-dev \ + file \ + g++ \ + gcc \ + imagemagick \ + libbz2-dev \ + libc6-dev \ + libcurl4-openssl-dev \ + libdb-dev \ + libevent-dev \ + libffi-dev \ + libgdbm-dev \ + libglib2.0-dev \ + libgmp-dev \ + libjpeg-dev \ + libkrb5-dev \ + liblzma-dev \ + libmagickcore-dev \ + libmagickwand-dev \ + libmaxminddb-dev \ + libncurses5-dev \ + libncursesw5-dev \ + libpng-dev \ + libpq-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libtool \ + libwebp-dev \ + libxml2-dev \ + libxslt-dev \ + libyaml-dev \ + make \ + patch \ + unzip \ + xz-utils \ + zlib1g-dev \ + \ + ; \ + rm -rf /var/lib/apt/lists/* + +# Install Maven as it is commonly used with ABCL, including with anything that +# uses CFFI. We install it ourselves instead of basing the image off of maven +# because the maven image only follows openjdk's default OS choice and does not +# provide buster based images for jdk12+. + +ARG MAVEN_VERSION=3.6.3 +ARG MAVEN_SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0 + +WORKDIR /usr/share/maven + +RUN curl -fsSL https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz > /tmp/apache-maven.tar.gz \ + && echo "${MAVEN_SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \ + && tar -xzf /tmp/apache-maven.tar.gz --strip-components=1 \ + && rm -f /tmp/apache-maven.tar.gz \ + && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn + +ENV MAVEN_HOME /usr/share/maven + +# Now install ABCL + ENV ABCL_COMMIT 9c0a9693ea933309e503266255edcde5cc76257c WORKDIR /usr/local/src/ diff --git a/nightly/buster/jdk-8/slim/Dockerfile b/nightly/buster/jdk-8/slim/Dockerfile new file mode 100644 index 0000000..a0a28c1 --- /dev/null +++ b/nightly/buster/jdk-8/slim/Dockerfile @@ -0,0 +1,45 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "update.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# +FROM openjdk:8-jdk-slim-buster + +ENV ABCL_COMMIT 9c0a9693ea933309e503266255edcde5cc76257c + +WORKDIR /usr/local/src/ + +RUN set -x \ + # Install fetch deps + && apt-get update \ + && apt-get install --no-install-recommends -y curl gnupg dirmngr \ + # Install ant + && ANT_VERSION="1.10.9" \ + && curl -fsSL "https://mirrors.gigenet.com/apache/ant/binaries/apache-ant-$ANT_VERSION-bin.tar.gz" > "ant-$ANT_VERSION.tar.gz" \ + && tar xf "ant-$ANT_VERSION.tar.gz" \ + && PATH="/usr/local/src/apache-ant-$ANT_VERSION/bin:$PATH" \ + && ANT_HOME="/usr/local/src/apache-ant-$ANT_VERSION" \ + && export ANT_HOME \ + # Install ABCL + && curl -fsSL "https://github.com/armedbear/abcl/archive/$ABCL_COMMIT.tar.gz" > "abcl-$ABCL_COMMIT.tar.gz" \ + && tar xf "abcl-$ABCL_COMMIT.tar.gz" \ + && JAVA_MAJOR_VERSION="${JAVA_VERSION%%.*}" \ + && JAVA_MAJOR_VERSION="${JAVA_MAJOR_VERSION%%u*}" \ + && export JAVA_MAJOR_VERSION \ + && mkdir /usr/local/share/abcl/ \ + && (cd "abcl-$ABCL_COMMIT" && bash ./ci/create-abcl-properties.bash "openjdk$JAVA_MAJOR_VERSION" && ant && cp dist/* /usr/local/share/abcl ) \ + && rm -rf abcl* ant* apache-ant* \ + # Remove fetch deps + && apt-get remove -y curl gnupg dirmngr \ + && rm -rf /var/lib/apt/lists/* \ + # Smoke test ABCL. + && java -jar /usr/local/share/abcl/abcl.jar --batch --eval '(print (multiple-value-list (lisp-implementation-version)))' + +WORKDIR / + +COPY abcl-wrapper /usr/local/bin/abcl +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["docker-entrypoint.sh"] + +CMD ["abcl"] diff --git a/nightly/buster/jdk-8/slim/abcl-wrapper b/nightly/buster/jdk-8/slim/abcl-wrapper new file mode 100755 index 0000000..cb3658b --- /dev/null +++ b/nightly/buster/jdk-8/slim/abcl-wrapper @@ -0,0 +1,3 @@ +#!/bin/sh + +exec java -jar /usr/local/share/abcl/abcl.jar "$@" diff --git a/nightly/buster/jdk-8/slim/docker-entrypoint.sh b/nightly/buster/jdk-8/slim/docker-entrypoint.sh new file mode 100755 index 0000000..7f6b5a3 --- /dev/null +++ b/nightly/buster/jdk-8/slim/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +# If the first arg starts with a hyphen, prepend abcl to arguments. +if [ "${1#-}" != "$1" ]; then + set -- abcl "$@" +fi + +exec "$@" diff --git a/update.sh b/update.sh index cd11d44..ebc9d74 100755 --- a/update.sh +++ b/update.sh @@ -28,13 +28,22 @@ for version in "${versions[@]}"; do fi for v in \ - buster/{jdk-15,jdk-11,jdk-8} \ - windowsservercore-{1809,ltsc2016}/{jdk-15,jdk-11,jdk-8} \ + buster/{jdk-15,jdk-11,jdk-8}/{,slim} \ + windowsservercore-{1809,ltsc2016}/{jdk-15,jdk-11,jdk-8}/ \ ; do os="${v%%/*}" - javaVariant="$(basename "$v")" + javaVariant="${v%/*}" + javaVariant="$(basename "$javaVariant")" javaVersion="${javaVariant#jdk-}" javaType="${javaVariant%-*}" + + variant="${v##*/}" + if [ -n "$variant" ]; then + variantTag="-$variant" + else + variantTag="" + fi + dir="$version/$v" if [ "$version" = "nightly" ] && [[ "$os" == "windowsservercore"* ]]; then @@ -45,7 +54,7 @@ for version in "${versions[@]}"; do case "$os" in buster) - template="apt" + template="apt$variantTag" cp abcl-wrapper "$dir/abcl-wrapper" cp docker-entrypoint.sh "$dir/docker-entrypoint.sh" ;; @@ -59,7 +68,7 @@ for version in "${versions[@]}"; do template="$template-nightly" fi - tag="$javaVersion-$javaType-$os" + tag="$javaVersion-$javaType$variantTag-$os" template="Dockerfile-${template}.template" { generated_warning; cat "$template"; } > "$dir/Dockerfile" -- GitLab