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