Skip to content

Commit 401b56c

Browse files
committed
Build slim images
I'm only including stretch - I think we'll hopefully be removing the jessie images entirely in 1.26 but there's no reason to create them for these new images in the first place. Closes #19
1 parent cb1edfc commit 401b56c

File tree

7 files changed

+131
-38
lines changed

7 files changed

+131
-38
lines changed

.travis.yml

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ language: bash
22
services: docker
33

44
env:
5+
- VERSION=1.25.0 VARIANT=stretch/slim
56
- VERSION=1.25.0 VARIANT=stretch
67
- VERSION=1.25.0 VARIANT=jessie
78

@@ -10,11 +11,11 @@ install:
1011

1112
before_script:
1213
- env | sort
13-
- cd "$VERSION"
14-
- image="rust:$VERSION${VARIANT:+-$VARIANT}"
14+
- cd "$VERSION/$VARIANT"
15+
- slash='/'; image="rust:${VERSION}-${VARIANT//$slash/-}"
1516

1617
script:
17-
- travis_retry docker build -t "$image" "${VARIANT:-.}"
18+
- travis_retry docker build -t "$image" .
1819
- ~/official-images/test/run.sh "$image"
1920

2021
after_script:

1.25.0/jessie/Dockerfile

+7-7
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ RUN set -eux; \
88
\
99
# this "case" statement is generated via "update.sh"
1010
dpkgArch="$(dpkg --print-architecture)"; \
11-
case "${dpkgArch##*-}" in \
12-
amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='c9837990bce0faab4f6f52604311a19bb8d2cde989bea6a7b605c8e526db6f02' ;; \
13-
armhf) rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='297661e121048db3906f8c964999f765b4f6848632c0c2cfb6a1e93d99440732' ;; \
14-
arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='a68ac2d400409f485cb22756f0b3217b95449884e1ea6fd9b70522b3c0a929b2' ;; \
15-
i386) rustArch='i686-unknown-linux-gnu'; rustupSha256='27e6109c7b537b92a6c2d45ac941d959606ca26ec501d86085d651892a55d849' ;; \
16-
*) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \
17-
esac; \
11+
case "${dpkgArch##*-}" in \
12+
amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='c9837990bce0faab4f6f52604311a19bb8d2cde989bea6a7b605c8e526db6f02' ;; \
13+
armhf) rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='297661e121048db3906f8c964999f765b4f6848632c0c2cfb6a1e93d99440732' ;; \
14+
arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='a68ac2d400409f485cb22756f0b3217b95449884e1ea6fd9b70522b3c0a929b2' ;; \
15+
i386) rustArch='i686-unknown-linux-gnu'; rustupSha256='27e6109c7b537b92a6c2d45ac941d959606ca26ec501d86085d651892a55d849' ;; \
16+
*) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \
17+
esac; \
1818
\
1919
url="https://static.rust-lang.org/rustup/archive/1.11.0/${rustArch}/rustup-init"; \
2020
wget "$url"; \

1.25.0/stretch/Dockerfile

+7-7
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ RUN set -eux; \
88
\
99
# this "case" statement is generated via "update.sh"
1010
dpkgArch="$(dpkg --print-architecture)"; \
11-
case "${dpkgArch##*-}" in \
12-
amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='c9837990bce0faab4f6f52604311a19bb8d2cde989bea6a7b605c8e526db6f02' ;; \
13-
armhf) rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='297661e121048db3906f8c964999f765b4f6848632c0c2cfb6a1e93d99440732' ;; \
14-
arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='a68ac2d400409f485cb22756f0b3217b95449884e1ea6fd9b70522b3c0a929b2' ;; \
15-
i386) rustArch='i686-unknown-linux-gnu'; rustupSha256='27e6109c7b537b92a6c2d45ac941d959606ca26ec501d86085d651892a55d849' ;; \
16-
*) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \
17-
esac; \
11+
case "${dpkgArch##*-}" in \
12+
amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='c9837990bce0faab4f6f52604311a19bb8d2cde989bea6a7b605c8e526db6f02' ;; \
13+
armhf) rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='297661e121048db3906f8c964999f765b4f6848632c0c2cfb6a1e93d99440732' ;; \
14+
arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='a68ac2d400409f485cb22756f0b3217b95449884e1ea6fd9b70522b3c0a929b2' ;; \
15+
i386) rustArch='i686-unknown-linux-gnu'; rustupSha256='27e6109c7b537b92a6c2d45ac941d959606ca26ec501d86085d651892a55d849' ;; \
16+
*) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \
17+
esac; \
1818
\
1919
url="https://static.rust-lang.org/rustup/archive/1.11.0/${rustArch}/rustup-init"; \
2020
wget "$url"; \

1.25.0/stretch/slim/Dockerfile

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
FROM debian:stretch-slim
2+
3+
ENV RUSTUP_HOME=/usr/local/rustup \
4+
CARGO_HOME=/usr/local/cargo \
5+
PATH=/usr/local/cargo/bin:$PATH
6+
7+
RUN set -eux; \
8+
apt-get update; \
9+
apt-get install -y --no-install-recommends \
10+
ca-certificates \
11+
gcc \
12+
libc6-dev \
13+
wget \
14+
; \
15+
\
16+
# this "case" statement is generated via "update.sh"
17+
dpkgArch="$(dpkg --print-architecture)"; \
18+
case "${dpkgArch##*-}" in \
19+
amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='c9837990bce0faab4f6f52604311a19bb8d2cde989bea6a7b605c8e526db6f02' ;; \
20+
armhf) rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='297661e121048db3906f8c964999f765b4f6848632c0c2cfb6a1e93d99440732' ;; \
21+
arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='a68ac2d400409f485cb22756f0b3217b95449884e1ea6fd9b70522b3c0a929b2' ;; \
22+
i386) rustArch='i686-unknown-linux-gnu'; rustupSha256='27e6109c7b537b92a6c2d45ac941d959606ca26ec501d86085d651892a55d849' ;; \
23+
*) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \
24+
esac; \
25+
\
26+
url="https://static.rust-lang.org/rustup/archive/1.11.0/${rustArch}/rustup-init"; \
27+
wget "$url"; \
28+
echo "${rustupSha256} *rustup-init" | sha256sum -c -; \
29+
chmod +x rustup-init; \
30+
./rustup-init -y --no-modify-path --default-toolchain 1.25.0; \
31+
rm rustup-init; \
32+
chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \
33+
rustup --version; \
34+
cargo --version; \
35+
rustc --version; \
36+
\
37+
apt-get remove -y --auto-remove \
38+
wget \
39+
; \
40+
rm -rf /var/lib/apt/lists/*;

Dockerfile-slim.template

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
FROM debian:%%DEBIAN-SUITE%%-slim
2+
3+
ENV RUSTUP_HOME=/usr/local/rustup \
4+
CARGO_HOME=/usr/local/cargo \
5+
PATH=/usr/local/cargo/bin:$PATH
6+
7+
RUN set -eux; \
8+
apt-get update; \
9+
apt-get install -y --no-install-recommends \
10+
ca-certificates \
11+
gcc \
12+
libc6-dev \
13+
wget \
14+
; \
15+
\
16+
# this "case" statement is generated via "update.sh"
17+
%%ARCH-CASE%%; \
18+
\
19+
url="https://static.rust-lang.org/rustup/archive/%%RUSTUP-VERSION%%/${rustArch}/rustup-init"; \
20+
wget "$url"; \
21+
echo "${rustupSha256} *rustup-init" | sha256sum -c -; \
22+
chmod +x rustup-init; \
23+
./rustup-init -y --no-modify-path --default-toolchain %%RUST-VERSION%%; \
24+
rm rustup-init; \
25+
chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \
26+
rustup --version; \
27+
cargo --version; \
28+
rustc --version; \
29+
\
30+
apt-get remove -y --auto-remove \
31+
wget \
32+
; \
33+
rm -rf /var/lib/apt/lists/*;

generate-stackbrew-library.sh

+26-17
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ declare -A aliases=(
66
)
77

88
defaultDebianSuite='stretch'
9-
declare -A debianSuite=(
9+
declare -A debianSuites=(
1010
)
1111

1212
self="$(basename "$BASH_SOURCE")"
@@ -57,44 +57,53 @@ join() {
5757
}
5858

5959
for version in "${versions[@]}"; do
60-
versionAliases=(
61-
$version
62-
)
63-
versionAliases+=(
64-
${aliases[$version]:-}
65-
)
60+
debianSuite="${debianSuites[$version]:-$defaultDebianSuite}"
6661

6762
for v in \
68-
stretch jessie \
63+
{stretch,jessie}{,/slim} \
6964
; do
7065
dir="$version/$v"
66+
variant="$(basename "$v")"
7167

72-
[ -f "$dir/Dockerfile" ] || continue
68+
if [ "$variant" = 'slim' ]; then
69+
# convert "slim" into "slim-jessie"
70+
# https://github.com/docker-library/ruby/pull/142#issuecomment-320012893
71+
variant="$variant-$(basename "$(dirname "$v")")"
72+
fi
7373

74-
variant="$(basename "$v")"
75-
versionSuite="${debianSuite[$version]:-$defaultDebianSuite}"
74+
[ -f "$dir/Dockerfile" ] || continue
7675

7776
commit="$(dirCommit "$dir")"
7877

79-
baseAliases=( "${versionAliases[@]}" )
80-
variantAliases=( "${baseAliases[@]/%/-$variant}" )
78+
versionAliases=(
79+
$version
80+
${aliases[$version]:-}
81+
)
82+
83+
variantAliases=( "${versionAliases[@]/%/-$variant}" )
84+
case "$variant" in
85+
*-"$debianSuite") # "slim-stretch", etc need slim
86+
variantAliases+=( "${versionAliases[@]/%/-${variant%-$debianSuite}}" )
87+
;;
88+
esac
8189
variantAliases=( "${variantAliases[@]//latest-/}" )
8290

83-
if [ "$variant" = "$versionSuite" ]; then
84-
variantAliases+=( "${baseAliases[@]}" )
85-
fi
91+
versionSuite="${debianSuites[$version]:-$defaultDebianSuite}"
8692

8793
case "$v" in
8894
*) variantArches="$(variantArches "$version" "$v")" ;;
8995
esac
9096

97+
if [ "$variant" = "$debianSuite" ]; then
98+
variantAliases+=( "${versionAliases[@]}" )
99+
fi
100+
91101
echo
92102
cat <<-EOE
93103
Tags: $(join ', ' "${variantAliases[@]}")
94104
Architectures: $(join ', ' $variantArches)
95105
GitCommit: $commit
96106
Directory: $dir
97107
EOE
98-
[ "$variant" = "$v" ] || echo "Constraints: $variant"
99108
done
100109
done

update.sh

+14-4
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ travisEnv=
2020
for version in "${versions[@]}"; do
2121
rustupVersion=$(rustupVersion "$version")
2222
linuxArchCase='dpkgArch="$(dpkg --print-architecture)"; '$'\\\n'
23-
linuxArchCase+=$'\t''case "${dpkgArch##*-}" in '$'\\\n'
23+
linuxArchCase+=$' ''case "${dpkgArch##*-}" in '$'\\\n'
2424
for dpkgArch in $(dpkgArches "$version"); do
2525
rustArch="$(dpkgToRustArch "$version" "$dpkgArch")"
2626
sha256="$(curl -fsSL "https://static.rust-lang.org/rustup/archive/${rustupVersion}/${rustArch}/rustup-init.sha256" | awk '{ print $1 }')"
27-
linuxArchCase+=$'\t\t'"$dpkgArch) rustArch='$rustArch'; rustupSha256='$sha256' ;; "$'\\\n'
27+
linuxArchCase+=$' '"$dpkgArch) rustArch='$rustArch'; rustupSha256='$sha256' ;; "$'\\\n'
2828
done
29-
linuxArchCase+=$'\t\t''*) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; '$'\\\n'
30-
linuxArchCase+=$'\t''esac'
29+
linuxArchCase+=$' ''*) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; '$'\\\n'
30+
linuxArchCase+=$' ''esac'
3131

3232
for variant in jessie stretch; do
3333
if [ -d "$version/$variant" ]; then
@@ -39,6 +39,16 @@ for version in "${versions[@]}"; do
3939
Dockerfile-debian.template > "$version/$variant/Dockerfile"
4040
travisEnv='\n - VERSION='"$version VARIANT=$variant$travisEnv"
4141
fi
42+
43+
if [ -d "$version/$variant/slim" ]; then
44+
sed -r \
45+
-e 's!%%RUST-VERSION%%!'"$version"'!g' \
46+
-e 's!%%RUSTUP-VERSION%%!'"$rustupVersion"'!g' \
47+
-e 's!%%DEBIAN-SUITE%%!'"$variant"'!g' \
48+
-e 's!%%ARCH-CASE%%!'"$(sed_escape_rhs "$linuxArchCase")"'!g' \
49+
Dockerfile-slim.template > "$version/$variant/slim/Dockerfile"
50+
travisEnv='\n - VERSION='"$version VARIANT=$variant/slim$travisEnv"
51+
fi
4252
done
4353
done
4454

0 commit comments

Comments
 (0)