Skip to content

Conversation

@tianon
Copy link
Member

@tianon tianon commented Sep 11, 2020

Changes:

Changes:

- tianon/docker-bash@ffa5831: Merge pull request tianon/docker-bash#22 from tianon/jq-template
- tianon/docker-bash@7d80c7c: Add initial jq-based templating engine
@github-actions
Copy link

Diff for 67a682d:
diff --git a/_bashbrew-cat b/_bashbrew-cat
index 6e00668..f6bdd8d 100644
--- a/_bashbrew-cat
+++ b/_bashbrew-cat
@@ -3,55 +3,55 @@ GitRepo: https://github.com/tianon/docker-bash.git
 
 Tags: 3.0.22, 3.0
 Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
-GitCommit: 2d420e498d46e7241dd16e3185c8696a1f8eef36
+GitCommit: 7d80c7cc5d829b6be9e04b6b2cba98a228fb67db
 Directory: 3.0
 
 Tags: 3.1.23, 3.1
 Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
-GitCommit: 2d420e498d46e7241dd16e3185c8696a1f8eef36
+GitCommit: 7d80c7cc5d829b6be9e04b6b2cba98a228fb67db
 Directory: 3.1
 
 Tags: 3.2.57, 3.2, 3
 Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
-GitCommit: 2d420e498d46e7241dd16e3185c8696a1f8eef36
+GitCommit: 7d80c7cc5d829b6be9e04b6b2cba98a228fb67db
 Directory: 3.2
 
 Tags: 4.0.44, 4.0
 Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
-GitCommit: 2d420e498d46e7241dd16e3185c8696a1f8eef36
+GitCommit: 7d80c7cc5d829b6be9e04b6b2cba98a228fb67db
 Directory: 4.0
 
 Tags: 4.1.17, 4.1
 Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
-GitCommit: 2d420e498d46e7241dd16e3185c8696a1f8eef36
+GitCommit: 7d80c7cc5d829b6be9e04b6b2cba98a228fb67db
 Directory: 4.1
 
 Tags: 4.2.53, 4.2
 Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
-GitCommit: 2d420e498d46e7241dd16e3185c8696a1f8eef36
+GitCommit: 7d80c7cc5d829b6be9e04b6b2cba98a228fb67db
 Directory: 4.2
 
 Tags: 4.3.48, 4.3
 Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
-GitCommit: 2d420e498d46e7241dd16e3185c8696a1f8eef36
+GitCommit: 7d80c7cc5d829b6be9e04b6b2cba98a228fb67db
 Directory: 4.3
 
 Tags: 4.4.23, 4.4, 4
 Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
-GitCommit: 2d420e498d46e7241dd16e3185c8696a1f8eef36
+GitCommit: 7d80c7cc5d829b6be9e04b6b2cba98a228fb67db
 Directory: 4.4
 
 Tags: 5.0.18, 5.0, 5, latest
 Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
-GitCommit: 8d5bcd5f1a8a84662fa34ba674282a7fc7451965
+GitCommit: 7d80c7cc5d829b6be9e04b6b2cba98a228fb67db
 Directory: 5.0
 
 Tags: 5.1-beta, 5.1-rc, rc
 Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
-GitCommit: 59513ccf13a99b69d25e794339e82dee4eb6f93b
+GitCommit: 7d80c7cc5d829b6be9e04b6b2cba98a228fb67db
 Directory: 5.1-rc
 
 Tags: devel-20200901, devel
 Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390x
-GitCommit: 42bd54fd2155c19cb6e0ae232a831d1785900da7
+GitCommit: 7d80c7cc5d829b6be9e04b6b2cba98a228fb67db
 Directory: devel
diff --git a/bash_3.0/Dockerfile b/bash_3.0/Dockerfile
index d3abade..edb6f0b 100644
--- a/bash_3.0/Dockerfile
+++ b/bash_3.0/Dockerfile
@@ -1,12 +1,16 @@
-FROM alpine:3.12
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
 
-# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
-ENV _BASH_GPG_KEY 7C0135FB088AAF6C66C650B9BB5869F064EA74AB
+FROM alpine:3.12
 
 # https://ftp.gnu.org/gnu/bash/?C=M;O=D
-ENV _BASH_VERSION 3.0
-ENV _BASH_PATCH_LEVEL 16
-# https://ftp.gnu.org/gnu/bash/bash-3.1-patches/?C=M;O=D
+ENV _BASH_VERSION 3.0.22
+ENV _BASH_BASELINE 3.0.16
+ENV _BASH_BASELINE_PATCH 16
+# https://ftp.gnu.org/gnu/bash/bash-3.0-patches/?C=M;O=D
 ENV _BASH_LATEST_PATCH 22
 # prefixed with "_" since "$BASH..." have meaning in Bash parlance
 
@@ -17,36 +21,33 @@ RUN set -eux; \
 		coreutils \
 		dpkg-dev dpkg \
 		gcc \
-		gnupg \
 		libc-dev \
 		make \
 		ncurses-dev \
-		patch \
 		tar \
 	; \
 	\
-	version="$_BASH_VERSION"; \
-	if [ "$_BASH_PATCH_LEVEL" -gt 0 ]; then \
-		version="$version.$_BASH_PATCH_LEVEL"; \
-	fi; \
-	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz"; \
-	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz.sig"; \
+	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz"; \
+	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz.sig"; \
 	\
-	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_PATCH_LEVEL" ]; then \
+	: "${_BASH_BASELINE_PATCH:=0}" "${_BASH_LATEST_PATCH:=0}"; \
+	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_BASELINE_PATCH" ]; then \
 		mkdir -p bash-patches; \
-		first="$(printf '%03d' "$(( _BASH_PATCH_LEVEL + 1 ))")"; \
+		first="$(printf '%03d' "$(( _BASH_BASELINE_PATCH + 1 ))")"; \
 		last="$(printf '%03d' "$_BASH_LATEST_PATCH")"; \
+		majorMinor="${_BASH_VERSION%.*}"; \
 		for patch in $(seq -w "$first" "$last"); do \
-			url="https://ftp.gnu.org/gnu/bash/bash-$_BASH_VERSION-patches/bash${_BASH_VERSION//./}-$patch"; \
+			url="https://ftp.gnu.org/gnu/bash/bash-$majorMinor-patches/bash${majorMinor//./}-$patch"; \
 			wget -O "bash-patches/$patch" "$url"; \
 			wget -O "bash-patches/$patch.sig" "$url.sig"; \
 		done; \
 	fi; \
 	\
+	apk add --no-cache --virtual .gpg-deps gnupg; \
 	export GNUPGHOME="$(mktemp -d)"; \
-	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$_BASH_GPG_KEY"; \
+# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
+	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 7C0135FB088AAF6C66C650B9BB5869F064EA74AB; \
 	gpg --batch --verify bash.tar.gz.sig bash.tar.gz; \
-	gpgconf --kill all; \
 	rm bash.tar.gz.sig; \
 	if [ -d bash-patches ]; then \
 		for sig in bash-patches/*.sig; do \
@@ -55,7 +56,9 @@ RUN set -eux; \
 			rm "$sig"; \
 		done; \
 	fi; \
+	gpgconf --kill all; \
 	rm -rf "$GNUPGHOME"; \
+	apk del --no-network .gpg-deps; \
 	\
 	mkdir -p /usr/src/bash; \
 	tar \
@@ -67,6 +70,7 @@ RUN set -eux; \
 	rm bash.tar.gz; \
 	\
 	if [ -d bash-patches ]; then \
+		apk add --no-cache --virtual .patch-deps patch; \
 		for p in bash-patches/*; do \
 			patch \
 				--directory=/usr/src/bash \
@@ -76,6 +80,7 @@ RUN set -eux; \
 			rm "$p"; \
 		done; \
 		rmdir bash-patches; \
+		apk del --no-network .patch-deps; \
 	fi; \
 	\
 	cd /usr/src/bash; \
@@ -103,8 +108,11 @@ RUN set -eux; \
 	rm -r /usr/src/bash; \
 	\
 # delete a few installed bits for smaller image size
-	rm -r \
+	rm -rf \
+		/usr/local/share/doc/bash/*.html \
+		/usr/local/share/info \
 		/usr/local/share/locale \
+		/usr/local/share/man \
 	; \
 	\
 	runDeps="$( \
@@ -113,13 +121,14 @@ RUN set -eux; \
 			| sort -u \
 			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
 	)"; \
-	apk add --no-cache --virtual .bash-rundeps $runDeps; \
-	apk del .build-deps; \
+	apk add --no-network --virtual .bash-rundeps $runDeps; \
+	apk del --no-network .build-deps; \
 	\
 	[ "$(which bash)" = '/usr/local/bin/bash' ]; \
 	bash --version; \
 # for some reason, 3.0.xx manifests as 3.00.xx (hence the extra "0" added in the following check)
-	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION}0.$_BASH_LATEST_PATCH" ];
+	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION//.0./.00.}" ]; \
+	bash -c 'help' > /dev/null
 
 COPY docker-entrypoint.sh /usr/local/bin/
 ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/bash_3.1/Dockerfile b/bash_3.1/Dockerfile
index 54ad010..d553181 100644
--- a/bash_3.1/Dockerfile
+++ b/bash_3.1/Dockerfile
@@ -1,11 +1,14 @@
-FROM alpine:3.12
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
 
-# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
-ENV _BASH_GPG_KEY 7C0135FB088AAF6C66C650B9BB5869F064EA74AB
+FROM alpine:3.12
 
 # https://ftp.gnu.org/gnu/bash/?C=M;O=D
-ENV _BASH_VERSION 3.1
-ENV _BASH_PATCH_LEVEL 0
+ENV _BASH_VERSION 3.1.23
+ENV _BASH_BASELINE 3.1
 # https://ftp.gnu.org/gnu/bash/bash-3.1-patches/?C=M;O=D
 ENV _BASH_LATEST_PATCH 23
 # prefixed with "_" since "$BASH..." have meaning in Bash parlance
@@ -17,36 +20,33 @@ RUN set -eux; \
 		coreutils \
 		dpkg-dev dpkg \
 		gcc \
-		gnupg \
 		libc-dev \
 		make \
 		ncurses-dev \
-		patch \
 		tar \
 	; \
 	\
-	version="$_BASH_VERSION"; \
-	if [ "$_BASH_PATCH_LEVEL" -gt 0 ]; then \
-		version="$version.$_BASH_PATCH_LEVEL"; \
-	fi; \
-	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz"; \
-	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz.sig"; \
+	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz"; \
+	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz.sig"; \
 	\
-	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_PATCH_LEVEL" ]; then \
+	: "${_BASH_BASELINE_PATCH:=0}" "${_BASH_LATEST_PATCH:=0}"; \
+	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_BASELINE_PATCH" ]; then \
 		mkdir -p bash-patches; \
-		first="$(printf '%03d' "$(( _BASH_PATCH_LEVEL + 1 ))")"; \
+		first="$(printf '%03d' "$(( _BASH_BASELINE_PATCH + 1 ))")"; \
 		last="$(printf '%03d' "$_BASH_LATEST_PATCH")"; \
+		majorMinor="${_BASH_VERSION%.*}"; \
 		for patch in $(seq -w "$first" "$last"); do \
-			url="https://ftp.gnu.org/gnu/bash/bash-$_BASH_VERSION-patches/bash${_BASH_VERSION//./}-$patch"; \
+			url="https://ftp.gnu.org/gnu/bash/bash-$majorMinor-patches/bash${majorMinor//./}-$patch"; \
 			wget -O "bash-patches/$patch" "$url"; \
 			wget -O "bash-patches/$patch.sig" "$url.sig"; \
 		done; \
 	fi; \
 	\
+	apk add --no-cache --virtual .gpg-deps gnupg; \
 	export GNUPGHOME="$(mktemp -d)"; \
-	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$_BASH_GPG_KEY"; \
+# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
+	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 7C0135FB088AAF6C66C650B9BB5869F064EA74AB; \
 	gpg --batch --verify bash.tar.gz.sig bash.tar.gz; \
-	gpgconf --kill all; \
 	rm bash.tar.gz.sig; \
 	if [ -d bash-patches ]; then \
 		for sig in bash-patches/*.sig; do \
@@ -55,7 +55,9 @@ RUN set -eux; \
 			rm "$sig"; \
 		done; \
 	fi; \
+	gpgconf --kill all; \
 	rm -rf "$GNUPGHOME"; \
+	apk del --no-network .gpg-deps; \
 	\
 	mkdir -p /usr/src/bash; \
 	tar \
@@ -67,6 +69,7 @@ RUN set -eux; \
 	rm bash.tar.gz; \
 	\
 	if [ -d bash-patches ]; then \
+		apk add --no-cache --virtual .patch-deps patch; \
 		for p in bash-patches/*; do \
 			patch \
 				--directory=/usr/src/bash \
@@ -76,6 +79,7 @@ RUN set -eux; \
 			rm "$p"; \
 		done; \
 		rmdir bash-patches; \
+		apk del --no-network .patch-deps; \
 	fi; \
 	\
 	cd /usr/src/bash; \
@@ -103,8 +107,11 @@ RUN set -eux; \
 	rm -r /usr/src/bash; \
 	\
 # delete a few installed bits for smaller image size
-	rm -r \
+	rm -rf \
+		/usr/local/share/doc/bash/*.html \
+		/usr/local/share/info \
 		/usr/local/share/locale \
+		/usr/local/share/man \
 	; \
 	\
 	runDeps="$( \
@@ -113,12 +120,13 @@ RUN set -eux; \
 			| sort -u \
 			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
 	)"; \
-	apk add --no-cache --virtual .bash-rundeps $runDeps; \
-	apk del .build-deps; \
+	apk add --no-network --virtual .bash-rundeps $runDeps; \
+	apk del --no-network .build-deps; \
 	\
 	[ "$(which bash)" = '/usr/local/bin/bash' ]; \
 	bash --version; \
-	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION%%-*}.$_BASH_LATEST_PATCH" ];
+	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "$_BASH_VERSION" ]; \
+	bash -c 'help' > /dev/null
 
 COPY docker-entrypoint.sh /usr/local/bin/
 ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/bash_3/Dockerfile b/bash_3/Dockerfile
index bf257bd..6c35c34 100644
--- a/bash_3/Dockerfile
+++ b/bash_3/Dockerfile
@@ -1,11 +1,15 @@
-FROM alpine:3.12
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
 
-# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
-ENV _BASH_GPG_KEY 7C0135FB088AAF6C66C650B9BB5869F064EA74AB
+FROM alpine:3.12
 
 # https://ftp.gnu.org/gnu/bash/?C=M;O=D
-ENV _BASH_VERSION 3.2
-ENV _BASH_PATCH_LEVEL 57
+ENV _BASH_VERSION 3.2.57
+ENV _BASH_BASELINE 3.2.57
+ENV _BASH_BASELINE_PATCH 57
 # https://ftp.gnu.org/gnu/bash/bash-3.2-patches/?C=M;O=D
 ENV _BASH_LATEST_PATCH 57
 # prefixed with "_" since "$BASH..." have meaning in Bash parlance
@@ -17,36 +21,33 @@ RUN set -eux; \
 		coreutils \
 		dpkg-dev dpkg \
 		gcc \
-		gnupg \
 		libc-dev \
 		make \
 		ncurses-dev \
-		patch \
 		tar \
 	; \
 	\
-	version="$_BASH_VERSION"; \
-	if [ "$_BASH_PATCH_LEVEL" -gt 0 ]; then \
-		version="$version.$_BASH_PATCH_LEVEL"; \
-	fi; \
-	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz"; \
-	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz.sig"; \
+	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz"; \
+	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz.sig"; \
 	\
-	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_PATCH_LEVEL" ]; then \
+	: "${_BASH_BASELINE_PATCH:=0}" "${_BASH_LATEST_PATCH:=0}"; \
+	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_BASELINE_PATCH" ]; then \
 		mkdir -p bash-patches; \
-		first="$(printf '%03d' "$(( _BASH_PATCH_LEVEL + 1 ))")"; \
+		first="$(printf '%03d' "$(( _BASH_BASELINE_PATCH + 1 ))")"; \
 		last="$(printf '%03d' "$_BASH_LATEST_PATCH")"; \
+		majorMinor="${_BASH_VERSION%.*}"; \
 		for patch in $(seq -w "$first" "$last"); do \
-			url="https://ftp.gnu.org/gnu/bash/bash-$_BASH_VERSION-patches/bash${_BASH_VERSION//./}-$patch"; \
+			url="https://ftp.gnu.org/gnu/bash/bash-$majorMinor-patches/bash${majorMinor//./}-$patch"; \
 			wget -O "bash-patches/$patch" "$url"; \
 			wget -O "bash-patches/$patch.sig" "$url.sig"; \
 		done; \
 	fi; \
 	\
+	apk add --no-cache --virtual .gpg-deps gnupg; \
 	export GNUPGHOME="$(mktemp -d)"; \
-	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$_BASH_GPG_KEY"; \
+# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
+	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 7C0135FB088AAF6C66C650B9BB5869F064EA74AB; \
 	gpg --batch --verify bash.tar.gz.sig bash.tar.gz; \
-	gpgconf --kill all; \
 	rm bash.tar.gz.sig; \
 	if [ -d bash-patches ]; then \
 		for sig in bash-patches/*.sig; do \
@@ -55,7 +56,9 @@ RUN set -eux; \
 			rm "$sig"; \
 		done; \
 	fi; \
+	gpgconf --kill all; \
 	rm -rf "$GNUPGHOME"; \
+	apk del --no-network .gpg-deps; \
 	\
 	mkdir -p /usr/src/bash; \
 	tar \
@@ -67,6 +70,7 @@ RUN set -eux; \
 	rm bash.tar.gz; \
 	\
 	if [ -d bash-patches ]; then \
+		apk add --no-cache --virtual .patch-deps patch; \
 		for p in bash-patches/*; do \
 			patch \
 				--directory=/usr/src/bash \
@@ -76,6 +80,7 @@ RUN set -eux; \
 			rm "$p"; \
 		done; \
 		rmdir bash-patches; \
+		apk del --no-network .patch-deps; \
 	fi; \
 	\
 	cd /usr/src/bash; \
@@ -103,8 +108,11 @@ RUN set -eux; \
 	rm -r /usr/src/bash; \
 	\
 # delete a few installed bits for smaller image size
-	rm -r \
+	rm -rf \
+		/usr/local/share/doc/bash/*.html \
+		/usr/local/share/info \
 		/usr/local/share/locale \
+		/usr/local/share/man \
 	; \
 	\
 	runDeps="$( \
@@ -113,12 +121,13 @@ RUN set -eux; \
 			| sort -u \
 			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
 	)"; \
-	apk add --no-cache --virtual .bash-rundeps $runDeps; \
-	apk del .build-deps; \
+	apk add --no-network --virtual .bash-rundeps $runDeps; \
+	apk del --no-network .build-deps; \
 	\
 	[ "$(which bash)" = '/usr/local/bin/bash' ]; \
 	bash --version; \
-	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION%%-*}.$_BASH_LATEST_PATCH" ];
+	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "$_BASH_VERSION" ]; \
+	bash -c 'help' > /dev/null
 
 COPY docker-entrypoint.sh /usr/local/bin/
 ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/bash_4.0/Dockerfile b/bash_4.0/Dockerfile
index bdbc703..8c96fd9 100644
--- a/bash_4.0/Dockerfile
+++ b/bash_4.0/Dockerfile
@@ -1,11 +1,14 @@
-FROM alpine:3.12
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
 
-# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
-ENV _BASH_GPG_KEY 7C0135FB088AAF6C66C650B9BB5869F064EA74AB
+FROM alpine:3.12
 
 # https://ftp.gnu.org/gnu/bash/?C=M;O=D
-ENV _BASH_VERSION 4.0
-ENV _BASH_PATCH_LEVEL 0
+ENV _BASH_VERSION 4.0.44
+ENV _BASH_BASELINE 4.0
 # https://ftp.gnu.org/gnu/bash/bash-4.0-patches/?C=M;O=D
 ENV _BASH_LATEST_PATCH 44
 # prefixed with "_" since "$BASH..." have meaning in Bash parlance
@@ -13,41 +16,37 @@ ENV _BASH_LATEST_PATCH 44
 RUN set -eux; \
 	\
 	apk add --no-cache --virtual .build-deps \
-		autoconf \
 		bison \
 		coreutils \
 		dpkg-dev dpkg \
 		gcc \
-		gnupg \
 		libc-dev \
 		make \
 		ncurses-dev \
-		patch \
 		tar \
 	; \
 	\
-	version="$_BASH_VERSION"; \
-	if [ "$_BASH_PATCH_LEVEL" -gt 0 ]; then \
-		version="$version.$_BASH_PATCH_LEVEL"; \
-	fi; \
-	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz"; \
-	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz.sig"; \
+	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz"; \
+	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz.sig"; \
 	\
-	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_PATCH_LEVEL" ]; then \
+	: "${_BASH_BASELINE_PATCH:=0}" "${_BASH_LATEST_PATCH:=0}"; \
+	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_BASELINE_PATCH" ]; then \
 		mkdir -p bash-patches; \
-		first="$(printf '%03d' "$(( _BASH_PATCH_LEVEL + 1 ))")"; \
+		first="$(printf '%03d' "$(( _BASH_BASELINE_PATCH + 1 ))")"; \
 		last="$(printf '%03d' "$_BASH_LATEST_PATCH")"; \
+		majorMinor="${_BASH_VERSION%.*}"; \
 		for patch in $(seq -w "$first" "$last"); do \
-			url="https://ftp.gnu.org/gnu/bash/bash-$_BASH_VERSION-patches/bash${_BASH_VERSION//./}-$patch"; \
+			url="https://ftp.gnu.org/gnu/bash/bash-$majorMinor-patches/bash${majorMinor//./}-$patch"; \
 			wget -O "bash-patches/$patch" "$url"; \
 			wget -O "bash-patches/$patch.sig" "$url.sig"; \
 		done; \
 	fi; \
 	\
+	apk add --no-cache --virtual .gpg-deps gnupg; \
 	export GNUPGHOME="$(mktemp -d)"; \
-	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$_BASH_GPG_KEY"; \
+# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
+	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 7C0135FB088AAF6C66C650B9BB5869F064EA74AB; \
 	gpg --batch --verify bash.tar.gz.sig bash.tar.gz; \
-	gpgconf --kill all; \
 	rm bash.tar.gz.sig; \
 	if [ -d bash-patches ]; then \
 		for sig in bash-patches/*.sig; do \
@@ -56,7 +55,9 @@ RUN set -eux; \
 			rm "$sig"; \
 		done; \
 	fi; \
+	gpgconf --kill all; \
 	rm -rf "$GNUPGHOME"; \
+	apk del --no-network .gpg-deps; \
 	\
 	mkdir -p /usr/src/bash; \
 	tar \
@@ -68,6 +69,7 @@ RUN set -eux; \
 	rm bash.tar.gz; \
 	\
 	if [ -d bash-patches ]; then \
+		apk add --no-cache --virtual .patch-deps patch; \
 		for p in bash-patches/*; do \
 			patch \
 				--directory=/usr/src/bash \
@@ -77,6 +79,7 @@ RUN set -eux; \
 			rm "$p"; \
 		done; \
 		rmdir bash-patches; \
+		apk del --no-network .patch-deps; \
 	fi; \
 	\
 	cd /usr/src/bash; \
@@ -96,6 +99,9 @@ RUN set -eux; \
 		cat >&2 config.log; \
 		false; \
 	}; \
+# in https://ftp.gnu.org/gnu/bash/bash-4.0-patches/bash40-037, "configure.in" is patched, resulting in https://git.savannah.gnu.org/cgit/bash.git/tree/Makefile.in?h=bash-4.0#n705 trying to rebuild "configure" via "autoconf"
+# however, bash40-037 is only relevant on Darwin / OS X, so we can safely use "touch configure" to fool "make" into thinking "configure" is up-to-date instead
+	touch configure; \
 # parallel jobs workaround borrowed from Alpine :)
 	make y.tab.c; make builtins/libbuiltins.a; \
 	make -j "$(nproc)"; \
@@ -104,7 +110,8 @@ RUN set -eux; \
 	rm -r /usr/src/bash; \
 	\
 # delete a few installed bits for smaller image size
-	rm -r \
+	rm -rf \
+		/usr/local/share/doc/bash/*.html \
 		/usr/local/share/info \
 		/usr/local/share/locale \
 		/usr/local/share/man \
@@ -116,12 +123,13 @@ RUN set -eux; \
 			| sort -u \
 			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
 	)"; \
-	apk add --no-cache --virtual .bash-rundeps $runDeps; \
-	apk del .build-deps; \
+	apk add --no-network --virtual .bash-rundeps $runDeps; \
+	apk del --no-network .build-deps; \
 	\
 	[ "$(which bash)" = '/usr/local/bin/bash' ]; \
 	bash --version; \
-	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION%%-*}.$_BASH_LATEST_PATCH" ];
+	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "$_BASH_VERSION" ]; \
+	bash -c 'help' > /dev/null
 
 COPY docker-entrypoint.sh /usr/local/bin/
 ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/bash_4.1/Dockerfile b/bash_4.1/Dockerfile
index f8d5c34..652d389 100644
--- a/bash_4.1/Dockerfile
+++ b/bash_4.1/Dockerfile
@@ -1,11 +1,14 @@
-FROM alpine:3.12
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
 
-# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
-ENV _BASH_GPG_KEY 7C0135FB088AAF6C66C650B9BB5869F064EA74AB
+FROM alpine:3.12
 
 # https://ftp.gnu.org/gnu/bash/?C=M;O=D
-ENV _BASH_VERSION 4.1
-ENV _BASH_PATCH_LEVEL 0
+ENV _BASH_VERSION 4.1.17
+ENV _BASH_BASELINE 4.1
 # https://ftp.gnu.org/gnu/bash/bash-4.1-patches/?C=M;O=D
 ENV _BASH_LATEST_PATCH 17
 # prefixed with "_" since "$BASH..." have meaning in Bash parlance
@@ -17,36 +20,33 @@ RUN set -eux; \
 		coreutils \
 		dpkg-dev dpkg \
 		gcc \
-		gnupg \
 		libc-dev \
 		make \
 		ncurses-dev \
-		patch \
 		tar \
 	; \
 	\
-	version="$_BASH_VERSION"; \
-	if [ "$_BASH_PATCH_LEVEL" -gt 0 ]; then \
-		version="$version.$_BASH_PATCH_LEVEL"; \
-	fi; \
-	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz"; \
-	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz.sig"; \
+	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz"; \
+	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz.sig"; \
 	\
-	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_PATCH_LEVEL" ]; then \
+	: "${_BASH_BASELINE_PATCH:=0}" "${_BASH_LATEST_PATCH:=0}"; \
+	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_BASELINE_PATCH" ]; then \
 		mkdir -p bash-patches; \
-		first="$(printf '%03d' "$(( _BASH_PATCH_LEVEL + 1 ))")"; \
+		first="$(printf '%03d' "$(( _BASH_BASELINE_PATCH + 1 ))")"; \
 		last="$(printf '%03d' "$_BASH_LATEST_PATCH")"; \
+		majorMinor="${_BASH_VERSION%.*}"; \
 		for patch in $(seq -w "$first" "$last"); do \
-			url="https://ftp.gnu.org/gnu/bash/bash-$_BASH_VERSION-patches/bash${_BASH_VERSION//./}-$patch"; \
+			url="https://ftp.gnu.org/gnu/bash/bash-$majorMinor-patches/bash${majorMinor//./}-$patch"; \
 			wget -O "bash-patches/$patch" "$url"; \
 			wget -O "bash-patches/$patch.sig" "$url.sig"; \
 		done; \
 	fi; \
 	\
+	apk add --no-cache --virtual .gpg-deps gnupg; \
 	export GNUPGHOME="$(mktemp -d)"; \
-	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$_BASH_GPG_KEY"; \
+# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
+	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 7C0135FB088AAF6C66C650B9BB5869F064EA74AB; \
 	gpg --batch --verify bash.tar.gz.sig bash.tar.gz; \
-	gpgconf --kill all; \
 	rm bash.tar.gz.sig; \
 	if [ -d bash-patches ]; then \
 		for sig in bash-patches/*.sig; do \
@@ -55,7 +55,9 @@ RUN set -eux; \
 			rm "$sig"; \
 		done; \
 	fi; \
+	gpgconf --kill all; \
 	rm -rf "$GNUPGHOME"; \
+	apk del --no-network .gpg-deps; \
 	\
 	mkdir -p /usr/src/bash; \
 	tar \
@@ -67,6 +69,7 @@ RUN set -eux; \
 	rm bash.tar.gz; \
 	\
 	if [ -d bash-patches ]; then \
+		apk add --no-cache --virtual .patch-deps patch; \
 		for p in bash-patches/*; do \
 			patch \
 				--directory=/usr/src/bash \
@@ -76,6 +79,7 @@ RUN set -eux; \
 			rm "$p"; \
 		done; \
 		rmdir bash-patches; \
+		apk del --no-network .patch-deps; \
 	fi; \
 	\
 	cd /usr/src/bash; \
@@ -101,7 +105,8 @@ RUN set -eux; \
 	rm -r /usr/src/bash; \
 	\
 # delete a few installed bits for smaller image size
-	rm -r \
+	rm -rf \
+		/usr/local/share/doc/bash/*.html \
 		/usr/local/share/info \
 		/usr/local/share/locale \
 		/usr/local/share/man \
@@ -113,12 +118,13 @@ RUN set -eux; \
 			| sort -u \
 			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
 	)"; \
-	apk add --no-cache --virtual .bash-rundeps $runDeps; \
-	apk del .build-deps; \
+	apk add --no-network --virtual .bash-rundeps $runDeps; \
+	apk del --no-network .build-deps; \
 	\
 	[ "$(which bash)" = '/usr/local/bin/bash' ]; \
 	bash --version; \
-	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION%%-*}.$_BASH_LATEST_PATCH" ];
+	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "$_BASH_VERSION" ]; \
+	bash -c 'help' > /dev/null
 
 COPY docker-entrypoint.sh /usr/local/bin/
 ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/bash_4.2/Dockerfile b/bash_4.2/Dockerfile
index 56bfde9..c2075c2 100644
--- a/bash_4.2/Dockerfile
+++ b/bash_4.2/Dockerfile
@@ -1,11 +1,15 @@
-FROM alpine:3.12
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
 
-# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
-ENV _BASH_GPG_KEY 7C0135FB088AAF6C66C650B9BB5869F064EA74AB
+FROM alpine:3.12
 
 # https://ftp.gnu.org/gnu/bash/?C=M;O=D
-ENV _BASH_VERSION 4.2
-ENV _BASH_PATCH_LEVEL 53
+ENV _BASH_VERSION 4.2.53
+ENV _BASH_BASELINE 4.2.53
+ENV _BASH_BASELINE_PATCH 53
 # https://ftp.gnu.org/gnu/bash/bash-4.2-patches/?C=M;O=D
 ENV _BASH_LATEST_PATCH 53
 # prefixed with "_" since "$BASH..." have meaning in Bash parlance
@@ -17,36 +21,33 @@ RUN set -eux; \
 		coreutils \
 		dpkg-dev dpkg \
 		gcc \
-		gnupg \
 		libc-dev \
 		make \
 		ncurses-dev \
-		patch \
 		tar \
 	; \
 	\
-	version="$_BASH_VERSION"; \
-	if [ "$_BASH_PATCH_LEVEL" -gt 0 ]; then \
-		version="$version.$_BASH_PATCH_LEVEL"; \
-	fi; \
-	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz"; \
-	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz.sig"; \
+	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz"; \
+	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz.sig"; \
 	\
-	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_PATCH_LEVEL" ]; then \
+	: "${_BASH_BASELINE_PATCH:=0}" "${_BASH_LATEST_PATCH:=0}"; \
+	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_BASELINE_PATCH" ]; then \
 		mkdir -p bash-patches; \
-		first="$(printf '%03d' "$(( _BASH_PATCH_LEVEL + 1 ))")"; \
+		first="$(printf '%03d' "$(( _BASH_BASELINE_PATCH + 1 ))")"; \
 		last="$(printf '%03d' "$_BASH_LATEST_PATCH")"; \
+		majorMinor="${_BASH_VERSION%.*}"; \
 		for patch in $(seq -w "$first" "$last"); do \
-			url="https://ftp.gnu.org/gnu/bash/bash-$_BASH_VERSION-patches/bash${_BASH_VERSION//./}-$patch"; \
+			url="https://ftp.gnu.org/gnu/bash/bash-$majorMinor-patches/bash${majorMinor//./}-$patch"; \
 			wget -O "bash-patches/$patch" "$url"; \
 			wget -O "bash-patches/$patch.sig" "$url.sig"; \
 		done; \
 	fi; \
 	\
+	apk add --no-cache --virtual .gpg-deps gnupg; \
 	export GNUPGHOME="$(mktemp -d)"; \
-	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$_BASH_GPG_KEY"; \
+# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
+	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 7C0135FB088AAF6C66C650B9BB5869F064EA74AB; \
 	gpg --batch --verify bash.tar.gz.sig bash.tar.gz; \
-	gpgconf --kill all; \
 	rm bash.tar.gz.sig; \
 	if [ -d bash-patches ]; then \
 		for sig in bash-patches/*.sig; do \
@@ -55,7 +56,9 @@ RUN set -eux; \
 			rm "$sig"; \
 		done; \
 	fi; \
+	gpgconf --kill all; \
 	rm -rf "$GNUPGHOME"; \
+	apk del --no-network .gpg-deps; \
 	\
 	mkdir -p /usr/src/bash; \
 	tar \
@@ -67,6 +70,7 @@ RUN set -eux; \
 	rm bash.tar.gz; \
 	\
 	if [ -d bash-patches ]; then \
+		apk add --no-cache --virtual .patch-deps patch; \
 		for p in bash-patches/*; do \
 			patch \
 				--directory=/usr/src/bash \
@@ -76,6 +80,7 @@ RUN set -eux; \
 			rm "$p"; \
 		done; \
 		rmdir bash-patches; \
+		apk del --no-network .patch-deps; \
 	fi; \
 	\
 	cd /usr/src/bash; \
@@ -101,7 +106,8 @@ RUN set -eux; \
 	rm -r /usr/src/bash; \
 	\
 # delete a few installed bits for smaller image size
-	rm -r \
+	rm -rf \
+		/usr/local/share/doc/bash/*.html \
 		/usr/local/share/info \
 		/usr/local/share/locale \
 		/usr/local/share/man \
@@ -113,12 +119,13 @@ RUN set -eux; \
 			| sort -u \
 			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
 	)"; \
-	apk add --no-cache --virtual .bash-rundeps $runDeps; \
-	apk del .build-deps; \
+	apk add --no-network --virtual .bash-rundeps $runDeps; \
+	apk del --no-network .build-deps; \
 	\
 	[ "$(which bash)" = '/usr/local/bin/bash' ]; \
 	bash --version; \
-	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION%%-*}.$_BASH_LATEST_PATCH" ];
+	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "$_BASH_VERSION" ]; \
+	bash -c 'help' > /dev/null
 
 COPY docker-entrypoint.sh /usr/local/bin/
 ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/bash_4.3/Dockerfile b/bash_4.3/Dockerfile
index d63dfba..a686722 100644
--- a/bash_4.3/Dockerfile
+++ b/bash_4.3/Dockerfile
@@ -1,11 +1,15 @@
-FROM alpine:3.12
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
 
-# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
-ENV _BASH_GPG_KEY 7C0135FB088AAF6C66C650B9BB5869F064EA74AB
+FROM alpine:3.12
 
 # https://ftp.gnu.org/gnu/bash/?C=M;O=D
-ENV _BASH_VERSION 4.3
-ENV _BASH_PATCH_LEVEL 30
+ENV _BASH_VERSION 4.3.48
+ENV _BASH_BASELINE 4.3.30
+ENV _BASH_BASELINE_PATCH 30
 # https://ftp.gnu.org/gnu/bash/bash-4.3-patches/?C=M;O=D
 ENV _BASH_LATEST_PATCH 48
 # prefixed with "_" since "$BASH..." have meaning in Bash parlance
@@ -17,37 +21,33 @@ RUN set -eux; \
 		coreutils \
 		dpkg-dev dpkg \
 		gcc \
-		gettext-dev \
-		gnupg \
 		libc-dev \
 		make \
 		ncurses-dev \
-		patch \
 		tar \
 	; \
 	\
-	version="$_BASH_VERSION"; \
-	if [ "$_BASH_PATCH_LEVEL" -gt 0 ]; then \
-		version="$version.$_BASH_PATCH_LEVEL"; \
-	fi; \
-	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz"; \
-	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz.sig"; \
+	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz"; \
+	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz.sig"; \
 	\
-	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_PATCH_LEVEL" ]; then \
+	: "${_BASH_BASELINE_PATCH:=0}" "${_BASH_LATEST_PATCH:=0}"; \
+	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_BASELINE_PATCH" ]; then \
 		mkdir -p bash-patches; \
-		first="$(printf '%03d' "$(( _BASH_PATCH_LEVEL + 1 ))")"; \
+		first="$(printf '%03d' "$(( _BASH_BASELINE_PATCH + 1 ))")"; \
 		last="$(printf '%03d' "$_BASH_LATEST_PATCH")"; \
+		majorMinor="${_BASH_VERSION%.*}"; \
 		for patch in $(seq -w "$first" "$last"); do \
-			url="https://ftp.gnu.org/gnu/bash/bash-$_BASH_VERSION-patches/bash${_BASH_VERSION//./}-$patch"; \
+			url="https://ftp.gnu.org/gnu/bash/bash-$majorMinor-patches/bash${majorMinor//./}-$patch"; \
 			wget -O "bash-patches/$patch" "$url"; \
 			wget -O "bash-patches/$patch.sig" "$url.sig"; \
 		done; \
 	fi; \
 	\
+	apk add --no-cache --virtual .gpg-deps gnupg; \
 	export GNUPGHOME="$(mktemp -d)"; \
-	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$_BASH_GPG_KEY"; \
+# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
+	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 7C0135FB088AAF6C66C650B9BB5869F064EA74AB; \
 	gpg --batch --verify bash.tar.gz.sig bash.tar.gz; \
-	gpgconf --kill all; \
 	rm bash.tar.gz.sig; \
 	if [ -d bash-patches ]; then \
 		for sig in bash-patches/*.sig; do \
@@ -56,7 +56,9 @@ RUN set -eux; \
 			rm "$sig"; \
 		done; \
 	fi; \
+	gpgconf --kill all; \
 	rm -rf "$GNUPGHOME"; \
+	apk del --no-network .gpg-deps; \
 	\
 	mkdir -p /usr/src/bash; \
 	tar \
@@ -68,6 +70,7 @@ RUN set -eux; \
 	rm bash.tar.gz; \
 	\
 	if [ -d bash-patches ]; then \
+		apk add --no-cache --virtual .patch-deps patch; \
 		for p in bash-patches/*; do \
 			patch \
 				--directory=/usr/src/bash \
@@ -77,6 +80,7 @@ RUN set -eux; \
 			rm "$p"; \
 		done; \
 		rmdir bash-patches; \
+		apk del --no-network .patch-deps; \
 	fi; \
 	\
 	cd /usr/src/bash; \
@@ -102,7 +106,7 @@ RUN set -eux; \
 	rm -r /usr/src/bash; \
 	\
 # delete a few installed bits for smaller image size
-	rm -r \
+	rm -rf \
 		/usr/local/share/doc/bash/*.html \
 		/usr/local/share/info \
 		/usr/local/share/locale \
@@ -115,12 +119,13 @@ RUN set -eux; \
 			| sort -u \
 			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
 	)"; \
-	apk add --no-cache --virtual .bash-rundeps $runDeps; \
-	apk del .build-deps; \
+	apk add --no-network --virtual .bash-rundeps $runDeps; \
+	apk del --no-network .build-deps; \
 	\
 	[ "$(which bash)" = '/usr/local/bin/bash' ]; \
 	bash --version; \
-	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION%%-*}.$_BASH_LATEST_PATCH" ];
+	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "$_BASH_VERSION" ]; \
+	bash -c 'help' > /dev/null
 
 COPY docker-entrypoint.sh /usr/local/bin/
 ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/bash_4/Dockerfile b/bash_4/Dockerfile
index 263ee18..2bcc486 100644
--- a/bash_4/Dockerfile
+++ b/bash_4/Dockerfile
@@ -1,11 +1,15 @@
-FROM alpine:3.12
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
 
-# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
-ENV _BASH_GPG_KEY 7C0135FB088AAF6C66C650B9BB5869F064EA74AB
+FROM alpine:3.12
 
 # https://ftp.gnu.org/gnu/bash/?C=M;O=D
-ENV _BASH_VERSION 4.4
-ENV _BASH_PATCH_LEVEL 18
+ENV _BASH_VERSION 4.4.23
+ENV _BASH_BASELINE 4.4.18
+ENV _BASH_BASELINE_PATCH 18
 # https://ftp.gnu.org/gnu/bash/bash-4.4-patches/?C=M;O=D
 ENV _BASH_LATEST_PATCH 23
 # prefixed with "_" since "$BASH..." have meaning in Bash parlance
@@ -17,37 +21,33 @@ RUN set -eux; \
 		coreutils \
 		dpkg-dev dpkg \
 		gcc \
-		gettext-dev \
-		gnupg \
 		libc-dev \
 		make \
 		ncurses-dev \
-		patch \
 		tar \
 	; \
 	\
-	version="$_BASH_VERSION"; \
-	if [ "$_BASH_PATCH_LEVEL" -gt 0 ]; then \
-		version="$version.$_BASH_PATCH_LEVEL"; \
-	fi; \
-	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz"; \
-	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz.sig"; \
+	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz"; \
+	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz.sig"; \
 	\
-	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_PATCH_LEVEL" ]; then \
+	: "${_BASH_BASELINE_PATCH:=0}" "${_BASH_LATEST_PATCH:=0}"; \
+	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_BASELINE_PATCH" ]; then \
 		mkdir -p bash-patches; \
-		first="$(printf '%03d' "$(( _BASH_PATCH_LEVEL + 1 ))")"; \
+		first="$(printf '%03d' "$(( _BASH_BASELINE_PATCH + 1 ))")"; \
 		last="$(printf '%03d' "$_BASH_LATEST_PATCH")"; \
+		majorMinor="${_BASH_VERSION%.*}"; \
 		for patch in $(seq -w "$first" "$last"); do \
-			url="https://ftp.gnu.org/gnu/bash/bash-$_BASH_VERSION-patches/bash${_BASH_VERSION//./}-$patch"; \
+			url="https://ftp.gnu.org/gnu/bash/bash-$majorMinor-patches/bash${majorMinor//./}-$patch"; \
 			wget -O "bash-patches/$patch" "$url"; \
 			wget -O "bash-patches/$patch.sig" "$url.sig"; \
 		done; \
 	fi; \
 	\
+	apk add --no-cache --virtual .gpg-deps gnupg; \
 	export GNUPGHOME="$(mktemp -d)"; \
-	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$_BASH_GPG_KEY"; \
+# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
+	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 7C0135FB088AAF6C66C650B9BB5869F064EA74AB; \
 	gpg --batch --verify bash.tar.gz.sig bash.tar.gz; \
-	gpgconf --kill all; \
 	rm bash.tar.gz.sig; \
 	if [ -d bash-patches ]; then \
 		for sig in bash-patches/*.sig; do \
@@ -56,7 +56,9 @@ RUN set -eux; \
 			rm "$sig"; \
 		done; \
 	fi; \
+	gpgconf --kill all; \
 	rm -rf "$GNUPGHOME"; \
+	apk del --no-network .gpg-deps; \
 	\
 	mkdir -p /usr/src/bash; \
 	tar \
@@ -68,6 +70,7 @@ RUN set -eux; \
 	rm bash.tar.gz; \
 	\
 	if [ -d bash-patches ]; then \
+		apk add --no-cache --virtual .patch-deps patch; \
 		for p in bash-patches/*; do \
 			patch \
 				--directory=/usr/src/bash \
@@ -77,6 +80,7 @@ RUN set -eux; \
 			rm "$p"; \
 		done; \
 		rmdir bash-patches; \
+		apk del --no-network .patch-deps; \
 	fi; \
 	\
 	cd /usr/src/bash; \
@@ -102,7 +106,7 @@ RUN set -eux; \
 	rm -r /usr/src/bash; \
 	\
 # delete a few installed bits for smaller image size
-	rm -r \
+	rm -rf \
 		/usr/local/share/doc/bash/*.html \
 		/usr/local/share/info \
 		/usr/local/share/locale \
@@ -115,12 +119,13 @@ RUN set -eux; \
 			| sort -u \
 			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
 	)"; \
-	apk add --no-cache --virtual .bash-rundeps $runDeps; \
-	apk del .build-deps; \
+	apk add --no-network --virtual .bash-rundeps $runDeps; \
+	apk del --no-network .build-deps; \
 	\
 	[ "$(which bash)" = '/usr/local/bin/bash' ]; \
 	bash --version; \
-	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION%%-*}.$_BASH_LATEST_PATCH" ];
+	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "$_BASH_VERSION" ]; \
+	bash -c 'help' > /dev/null
 
 COPY docker-entrypoint.sh /usr/local/bin/
 ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/bash_devel/Dockerfile b/bash_devel/Dockerfile
index 150bb65..0f2c30d 100644
--- a/bash_devel/Dockerfile
+++ b/bash_devel/Dockerfile
@@ -1,8 +1,14 @@
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
+
 FROM alpine:3.12
 
 # https://git.savannah.gnu.org/cgit/bash.git/commit/?h=devel
 ENV _BASH_COMMIT f43f678557d150aeca89836812ccfac506718280
-ENV _BASH_COMMIT_DESC commit bash-20200901 snapshot
+ENV _BASH_VERSION devel-20200901
 # prefixed with "_" since "$BASH..." have meaning in Bash parlance
 
 RUN set -eux; \
@@ -30,6 +36,7 @@ RUN set -eux; \
 	rm bash.tar.gz; \
 	\
 	if [ -d bash-patches ]; then \
+		apk add --no-cache --virtual .patch-deps patch; \
 		for p in bash-patches/*; do \
 			patch \
 				--directory=/usr/src/bash \
@@ -39,6 +46,7 @@ RUN set -eux; \
 			rm "$p"; \
 		done; \
 		rmdir bash-patches; \
+		apk del --no-network .patch-deps; \
 	fi; \
 	\
 	cd /usr/src/bash; \
@@ -60,10 +68,10 @@ RUN set -eux; \
 	rm -r /usr/src/bash; \
 	\
 # delete a few installed bits for smaller image size
-	rm -r \
+	rm -rf \
 		/usr/local/share/doc/bash/*.html \
 		/usr/local/share/info \
-#		/usr/local/share/locale \
+		/usr/local/share/locale \
 		/usr/local/share/man \
 	; \
 	\
@@ -73,11 +81,12 @@ RUN set -eux; \
 			| sort -u \
 			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
 	)"; \
-	apk add --no-cache --virtual .bash-rundeps $runDeps; \
-	apk del .build-deps; \
+	apk add --no-network --virtual .bash-rundeps $runDeps; \
+	apk del --no-network .build-deps; \
 	\
 	[ "$(which bash)" = '/usr/local/bin/bash' ]; \
-	bash --version
+	bash --version; \
+	bash -c 'help' > /dev/null
 
 COPY docker-entrypoint.sh /usr/local/bin/
 ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/bash_latest/Dockerfile b/bash_latest/Dockerfile
index da34405..f607bcc 100644
--- a/bash_latest/Dockerfile
+++ b/bash_latest/Dockerfile
@@ -1,11 +1,14 @@
-FROM alpine:3.12
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
 
-# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
-ENV _BASH_GPG_KEY 7C0135FB088AAF6C66C650B9BB5869F064EA74AB
+FROM alpine:3.12
 
 # https://ftp.gnu.org/gnu/bash/?C=M;O=D
-ENV _BASH_VERSION 5.0
-ENV _BASH_PATCH_LEVEL 0
+ENV _BASH_VERSION 5.0.18
+ENV _BASH_BASELINE 5.0
 # https://ftp.gnu.org/gnu/bash/bash-5.0-patches/?C=M;O=D
 ENV _BASH_LATEST_PATCH 18
 # prefixed with "_" since "$BASH..." have meaning in Bash parlance
@@ -17,36 +20,33 @@ RUN set -eux; \
 		coreutils \
 		dpkg-dev dpkg \
 		gcc \
-		gnupg \
 		libc-dev \
 		make \
 		ncurses-dev \
-		patch \
 		tar \
 	; \
 	\
-	version="$_BASH_VERSION"; \
-	if [ "$_BASH_PATCH_LEVEL" -gt 0 ]; then \
-		version="$version.$_BASH_PATCH_LEVEL"; \
-	fi; \
-	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz"; \
-	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz.sig"; \
+	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz"; \
+	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz.sig"; \
 	\
-	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_PATCH_LEVEL" ]; then \
+	: "${_BASH_BASELINE_PATCH:=0}" "${_BASH_LATEST_PATCH:=0}"; \
+	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_BASELINE_PATCH" ]; then \
 		mkdir -p bash-patches; \
-		first="$(printf '%03d' "$(( _BASH_PATCH_LEVEL + 1 ))")"; \
+		first="$(printf '%03d' "$(( _BASH_BASELINE_PATCH + 1 ))")"; \
 		last="$(printf '%03d' "$_BASH_LATEST_PATCH")"; \
+		majorMinor="${_BASH_VERSION%.*}"; \
 		for patch in $(seq -w "$first" "$last"); do \
-			url="https://ftp.gnu.org/gnu/bash/bash-$_BASH_VERSION-patches/bash${_BASH_VERSION//./}-$patch"; \
+			url="https://ftp.gnu.org/gnu/bash/bash-$majorMinor-patches/bash${majorMinor//./}-$patch"; \
 			wget -O "bash-patches/$patch" "$url"; \
 			wget -O "bash-patches/$patch.sig" "$url.sig"; \
 		done; \
 	fi; \
 	\
+	apk add --no-cache --virtual .gpg-deps gnupg; \
 	export GNUPGHOME="$(mktemp -d)"; \
-	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$_BASH_GPG_KEY"; \
+# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
+	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 7C0135FB088AAF6C66C650B9BB5869F064EA74AB; \
 	gpg --batch --verify bash.tar.gz.sig bash.tar.gz; \
-	gpgconf --kill all; \
 	rm bash.tar.gz.sig; \
 	if [ -d bash-patches ]; then \
 		for sig in bash-patches/*.sig; do \
@@ -55,7 +55,9 @@ RUN set -eux; \
 			rm "$sig"; \
 		done; \
 	fi; \
+	gpgconf --kill all; \
 	rm -rf "$GNUPGHOME"; \
+	apk del --no-network .gpg-deps; \
 	\
 	mkdir -p /usr/src/bash; \
 	tar \
@@ -67,6 +69,7 @@ RUN set -eux; \
 	rm bash.tar.gz; \
 	\
 	if [ -d bash-patches ]; then \
+		apk add --no-cache --virtual .patch-deps patch; \
 		for p in bash-patches/*; do \
 			patch \
 				--directory=/usr/src/bash \
@@ -76,6 +79,7 @@ RUN set -eux; \
 			rm "$p"; \
 		done; \
 		rmdir bash-patches; \
+		apk del --no-network .patch-deps; \
 	fi; \
 	\
 	cd /usr/src/bash; \
@@ -97,7 +101,7 @@ RUN set -eux; \
 	rm -r /usr/src/bash; \
 	\
 # delete a few installed bits for smaller image size
-	rm -r \
+	rm -rf \
 		/usr/local/share/doc/bash/*.html \
 		/usr/local/share/info \
 		/usr/local/share/locale \
@@ -110,12 +114,13 @@ RUN set -eux; \
 			| sort -u \
 			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
 	)"; \
-	apk add --no-cache --virtual .bash-rundeps $runDeps; \
-	apk del .build-deps; \
+	apk add --no-network --virtual .bash-rundeps $runDeps; \
+	apk del --no-network .build-deps; \
 	\
 	[ "$(which bash)" = '/usr/local/bin/bash' ]; \
 	bash --version; \
-	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION%%-*}.$_BASH_LATEST_PATCH" ];
+	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "$_BASH_VERSION" ]; \
+	bash -c 'help' > /dev/null
 
 COPY docker-entrypoint.sh /usr/local/bin/
 ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/bash_rc/Dockerfile b/bash_rc/Dockerfile
index 17e9d7c..c1325fc 100644
--- a/bash_rc/Dockerfile
+++ b/bash_rc/Dockerfile
@@ -1,13 +1,14 @@
-FROM alpine:3.12
+#
+# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
+#
+# PLEASE DO NOT EDIT IT DIRECTLY.
+#
 
-# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
-ENV _BASH_GPG_KEY 7C0135FB088AAF6C66C650B9BB5869F064EA74AB
+FROM alpine:3.12
 
 # https://ftp.gnu.org/gnu/bash/?C=M;O=D
 ENV _BASH_VERSION 5.1-beta
-ENV _BASH_PATCH_LEVEL 0
-# https://ftp.gnu.org/gnu/bash/bash-5.0-patches/?C=M;O=D
-ENV _BASH_LATEST_PATCH 0
+ENV _BASH_BASELINE 5.1-beta
 # prefixed with "_" since "$BASH..." have meaning in Bash parlance
 
 RUN set -eux; \
@@ -17,36 +18,33 @@ RUN set -eux; \
 		coreutils \
 		dpkg-dev dpkg \
 		gcc \
-		gnupg \
 		libc-dev \
 		make \
 		ncurses-dev \
-		patch \
 		tar \
 	; \
 	\
-	version="$_BASH_VERSION"; \
-	if [ "$_BASH_PATCH_LEVEL" -gt 0 ]; then \
-		version="$version.$_BASH_PATCH_LEVEL"; \
-	fi; \
-	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz"; \
-	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$version.tar.gz.sig"; \
+	wget -O bash.tar.gz "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz"; \
+	wget -O bash.tar.gz.sig "https://ftp.gnu.org/gnu/bash/bash-$_BASH_BASELINE.tar.gz.sig"; \
 	\
-	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_PATCH_LEVEL" ]; then \
+	: "${_BASH_BASELINE_PATCH:=0}" "${_BASH_LATEST_PATCH:=0}"; \
+	if [ "$_BASH_LATEST_PATCH" -gt "$_BASH_BASELINE_PATCH" ]; then \
 		mkdir -p bash-patches; \
-		first="$(printf '%03d' "$(( _BASH_PATCH_LEVEL + 1 ))")"; \
+		first="$(printf '%03d' "$(( _BASH_BASELINE_PATCH + 1 ))")"; \
 		last="$(printf '%03d' "$_BASH_LATEST_PATCH")"; \
+		majorMinor="${_BASH_VERSION%.*}"; \
 		for patch in $(seq -w "$first" "$last"); do \
-			url="https://ftp.gnu.org/gnu/bash/bash-$_BASH_VERSION-patches/bash${_BASH_VERSION//./}-$patch"; \
+			url="https://ftp.gnu.org/gnu/bash/bash-$majorMinor-patches/bash${majorMinor//./}-$patch"; \
 			wget -O "bash-patches/$patch" "$url"; \
 			wget -O "bash-patches/$patch.sig" "$url.sig"; \
 		done; \
 	fi; \
 	\
+	apk add --no-cache --virtual .gpg-deps gnupg; \
 	export GNUPGHOME="$(mktemp -d)"; \
-	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$_BASH_GPG_KEY"; \
+# gpg: key 64EA74AB: public key "Chet Ramey <[email protected]>" imported
+	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 7C0135FB088AAF6C66C650B9BB5869F064EA74AB; \
 	gpg --batch --verify bash.tar.gz.sig bash.tar.gz; \
-	gpgconf --kill all; \
 	rm bash.tar.gz.sig; \
 	if [ -d bash-patches ]; then \
 		for sig in bash-patches/*.sig; do \
@@ -55,7 +53,9 @@ RUN set -eux; \
 			rm "$sig"; \
 		done; \
 	fi; \
+	gpgconf --kill all; \
 	rm -rf "$GNUPGHOME"; \
+	apk del --no-network .gpg-deps; \
 	\
 	mkdir -p /usr/src/bash; \
 	tar \
@@ -67,6 +67,7 @@ RUN set -eux; \
 	rm bash.tar.gz; \
 	\
 	if [ -d bash-patches ]; then \
+		apk add --no-cache --virtual .patch-deps patch; \
 		for p in bash-patches/*; do \
 			patch \
 				--directory=/usr/src/bash \
@@ -76,6 +77,7 @@ RUN set -eux; \
 			rm "$p"; \
 		done; \
 		rmdir bash-patches; \
+		apk del --no-network .patch-deps; \
 	fi; \
 	\
 	cd /usr/src/bash; \
@@ -97,10 +99,10 @@ RUN set -eux; \
 	rm -r /usr/src/bash; \
 	\
 # delete a few installed bits for smaller image size
-	rm -r \
+	rm -rf \
 		/usr/local/share/doc/bash/*.html \
 		/usr/local/share/info \
-#		/usr/local/share/locale \
+		/usr/local/share/locale \
 		/usr/local/share/man \
 	; \
 	\
@@ -110,12 +112,13 @@ RUN set -eux; \
 			| sort -u \
 			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
 	)"; \
-	apk add --no-cache --virtual .bash-rundeps $runDeps; \
-	apk del .build-deps; \
+	apk add --no-network --virtual .bash-rundeps $runDeps; \
+	apk del --no-network .build-deps; \
 	\
 	[ "$(which bash)" = '/usr/local/bin/bash' ]; \
 	bash --version; \
-	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION%%-*}.$_BASH_LATEST_PATCH" ];
+	[ "$(bash -c 'echo "${BASH_VERSION%%[^0-9.]*}"')" = "${_BASH_VERSION%%-*}.0" ]; \
+	bash -c 'help' > /dev/null
 
 COPY docker-entrypoint.sh /usr/local/bin/
 ENTRYPOINT ["docker-entrypoint.sh"]

@yosifkit yosifkit merged commit b54e1d8 into docker-library:master Sep 11, 2020
@yosifkit yosifkit deleted the bash branch September 11, 2020 21:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants