Skip to content

Commit 0ffafaf

Browse files
authored
Merge pull request #67 from axelf4/add-alpine-aarch64
Add Alpine support for AArch64
2 parents c5461fa + 5aee832 commit 0ffafaf

File tree

6 files changed

+50
-22
lines changed

6 files changed

+50
-22
lines changed

1.48.0/alpine3.11/Dockerfile

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@ ENV RUSTUP_HOME=/usr/local/rustup \
1010
RUST_VERSION=1.48.0
1111

1212
RUN set -eux; \
13-
url="https://static.rust-lang.org/rustup/archive/1.22.1/x86_64-unknown-linux-musl/rustup-init"; \
13+
apkArch="$(apk --print-arch)"; \
14+
case "$apkArch" in \
15+
x86_64) rustArch='x86_64-unknown-linux-musl'; rustupSha256='8ab4f7759e22c308b49d737b5dc055c0d334f730632fdc6a169eda033983b846' ;; \
16+
aarch64) rustArch='aarch64-unknown-linux-musl'; rustupSha256='b3f15d01db21e4e9f192a81bfcbbb72e9055f6b01b4d0893b24f9f6c9f9d2b92' ;; \
17+
*) echo >&2 "unsupported architecture: $apkArch"; exit 1 ;; \
18+
esac; \
19+
url="https://static.rust-lang.org/rustup/archive/1.23.0/${rustArch}/rustup-init"; \
1420
wget "$url"; \
15-
echo "cee31c6f72b953c6293fd5d40142c7d61aa85db2a5ea81b3519fe1b492148dc9 *rustup-init" | sha256sum -c -; \
21+
echo "${rustupSha256} *rustup-init" | sha256sum -c -; \
1622
chmod +x rustup-init; \
17-
./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION --default-host x86_64-unknown-linux-musl; \
23+
./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION --default-host ${rustArch}; \
1824
rm rustup-init; \
1925
chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \
2026
rustup --version; \

1.48.0/alpine3.12/Dockerfile

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@ ENV RUSTUP_HOME=/usr/local/rustup \
1010
RUST_VERSION=1.48.0
1111

1212
RUN set -eux; \
13-
url="https://static.rust-lang.org/rustup/archive/1.22.1/x86_64-unknown-linux-musl/rustup-init"; \
13+
apkArch="$(apk --print-arch)"; \
14+
case "$apkArch" in \
15+
x86_64) rustArch='x86_64-unknown-linux-musl'; rustupSha256='8ab4f7759e22c308b49d737b5dc055c0d334f730632fdc6a169eda033983b846' ;; \
16+
aarch64) rustArch='aarch64-unknown-linux-musl'; rustupSha256='b3f15d01db21e4e9f192a81bfcbbb72e9055f6b01b4d0893b24f9f6c9f9d2b92' ;; \
17+
*) echo >&2 "unsupported architecture: $apkArch"; exit 1 ;; \
18+
esac; \
19+
url="https://static.rust-lang.org/rustup/archive/1.23.0/${rustArch}/rustup-init"; \
1420
wget "$url"; \
15-
echo "cee31c6f72b953c6293fd5d40142c7d61aa85db2a5ea81b3519fe1b492148dc9 *rustup-init" | sha256sum -c -; \
21+
echo "${rustupSha256} *rustup-init" | sha256sum -c -; \
1622
chmod +x rustup-init; \
17-
./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION --default-host x86_64-unknown-linux-musl; \
23+
./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION --default-host ${rustArch}; \
1824
rm rustup-init; \
1925
chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \
2026
rustup --version; \

1.48.0/buster/Dockerfile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ ENV RUSTUP_HOME=/usr/local/rustup \
88
RUN set -eux; \
99
dpkgArch="$(dpkg --print-architecture)"; \
1010
case "${dpkgArch##*-}" in \
11-
amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='49c96f3f74be82f4752b8bffcf81961dea5e6e94ce1ccba94435f12e871c3bdb' ;; \
12-
armhf) rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='5a2be2919319e8778698fa9998002d1ec720efe7cb4f6ee4affb006b5e73f1be' ;; \
13-
arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='d93ef6f91dab8299f46eef26a56c2d97c66271cea60bf004f2f088a86a697078' ;; \
14-
i386) rustArch='i686-unknown-linux-gnu'; rustupSha256='e3d0ae3cfce5c6941f74fed61ca83e53d4cd2deb431b906cbd0687f246efede4' ;; \
11+
amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='ee7ade44063c96c6a37012cc599cb560dce95205c86d17b247c726d2285b230c' ;; \
12+
armhf) rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='afab10b89436bfb5ff7db4f4d5ad4d82faee98165915801d73e965e873661b1c' ;; \
13+
arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='99f42ab89c790e8825d91c99edee22b0176f68969d42dc27a89a5d9651c3ceba' ;; \
14+
i386) rustArch='i686-unknown-linux-gnu'; rustupSha256='6fefdd5c429545b9c710c5492402215e1256cb002f19840db64303281b5ded3c' ;; \
1515
*) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \
1616
esac; \
17-
url="https://static.rust-lang.org/rustup/archive/1.22.1/${rustArch}/rustup-init"; \
17+
url="https://static.rust-lang.org/rustup/archive/1.23.0/${rustArch}/rustup-init"; \
1818
wget "$url"; \
1919
echo "${rustupSha256} *rustup-init" | sha256sum -c -; \
2020
chmod +x rustup-init; \

1.48.0/buster/slim/Dockerfile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ RUN set -eux; \
1515
; \
1616
dpkgArch="$(dpkg --print-architecture)"; \
1717
case "${dpkgArch##*-}" in \
18-
amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='49c96f3f74be82f4752b8bffcf81961dea5e6e94ce1ccba94435f12e871c3bdb' ;; \
19-
armhf) rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='5a2be2919319e8778698fa9998002d1ec720efe7cb4f6ee4affb006b5e73f1be' ;; \
20-
arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='d93ef6f91dab8299f46eef26a56c2d97c66271cea60bf004f2f088a86a697078' ;; \
21-
i386) rustArch='i686-unknown-linux-gnu'; rustupSha256='e3d0ae3cfce5c6941f74fed61ca83e53d4cd2deb431b906cbd0687f246efede4' ;; \
18+
amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='ee7ade44063c96c6a37012cc599cb560dce95205c86d17b247c726d2285b230c' ;; \
19+
armhf) rustArch='armv7-unknown-linux-gnueabihf'; rustupSha256='afab10b89436bfb5ff7db4f4d5ad4d82faee98165915801d73e965e873661b1c' ;; \
20+
arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='99f42ab89c790e8825d91c99edee22b0176f68969d42dc27a89a5d9651c3ceba' ;; \
21+
i386) rustArch='i686-unknown-linux-gnu'; rustupSha256='6fefdd5c429545b9c710c5492402215e1256cb002f19840db64303281b5ded3c' ;; \
2222
*) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \
2323
esac; \
24-
url="https://static.rust-lang.org/rustup/archive/1.22.1/${rustArch}/rustup-init"; \
24+
url="https://static.rust-lang.org/rustup/archive/1.23.0/${rustArch}/rustup-init"; \
2525
wget "$url"; \
2626
echo "${rustupSha256} *rustup-init" | sha256sum -c -; \
2727
chmod +x rustup-init; \

Dockerfile-alpine.template

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ ENV RUSTUP_HOME=/usr/local/rustup \
1010
RUST_VERSION=%%RUST-VERSION%%
1111

1212
RUN set -eux; \
13-
url="https://static.rust-lang.org/rustup/archive/%%RUSTUP-VERSION%%/x86_64-unknown-linux-musl/rustup-init"; \
13+
%%ARCH-CASE%%; \
14+
url="https://static.rust-lang.org/rustup/archive/%%RUSTUP-VERSION%%/${rustArch}/rustup-init"; \
1415
wget "$url"; \
15-
echo "%%RUSTUP-SHA256%% *rustup-init" | sha256sum -c -; \
16+
echo "${rustupSha256} *rustup-init" | sha256sum -c -; \
1617
chmod +x rustup-init; \
17-
./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION --default-host x86_64-unknown-linux-musl; \
18+
./rustup-init -y --no-modify-path --profile minimal --default-toolchain $RUST_VERSION --default-host ${rustArch}; \
1819
rm rustup-init; \
1920
chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \
2021
rustup --version; \

x.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import sys
88

99
rust_version = "1.48.0"
10-
rustup_version = "1.22.1"
10+
rustup_version = "1.23.0"
1111

1212
DebianArch = namedtuple("DebianArch", ["bashbrew", "dpkg", "rust"])
1313

@@ -24,6 +24,13 @@
2424

2525
default_debian_variant = "buster"
2626

27+
AlpineArch = namedtuple("AlpineArch", ["bashbrew", "apk", "rust"])
28+
29+
alpine_arches = [
30+
AlpineArch("amd64", "x86_64", "x86_64-unknown-linux-musl"),
31+
AlpineArch("arm64v8", "aarch64", "aarch64-unknown-linux-musl"),
32+
]
33+
2734
alpine_versions = [
2835
"3.11",
2936
"3.12",
@@ -75,14 +82,22 @@ def update_debian():
7582
write_file(f"{rust_version}/{variant}/slim/Dockerfile", rendered)
7683

7784
def update_alpine():
85+
arch_case = 'apkArch="$(apk --print-arch)"; \\\n'
86+
arch_case += ' case "$apkArch" in \\\n'
87+
for arch in alpine_arches:
88+
hash = rustup_hash(arch.rust)
89+
arch_case += f" {arch.apk}) rustArch='{arch.rust}'; rustupSha256='{hash}' ;; \\\n"
90+
arch_case += ' *) echo >&2 "unsupported architecture: $apkArch"; exit 1 ;; \\\n'
91+
arch_case += ' esac'
92+
7893
template = read_file("Dockerfile-alpine.template")
7994

8095
for version in alpine_versions:
8196
rendered = template \
8297
.replace("%%RUST-VERSION%%", rust_version) \
8398
.replace("%%RUSTUP-VERSION%%", rustup_version) \
8499
.replace("%%TAG%%", version) \
85-
.replace("%%RUSTUP-SHA256%%", rustup_hash("x86_64-unknown-linux-musl"))
100+
.replace("%%ARCH-CASE%%", arch_case)
86101
write_file(f"{rust_version}/alpine{version}/Dockerfile", rendered)
87102

88103
def update_travis():
@@ -176,7 +191,7 @@ def generate_stackbrew_library():
176191

177192
library += single_library(
178193
tags,
179-
["amd64"],
194+
map(lambda a: a.bashbrew, alpine_arches),
180195
os.path.join(rust_version, f"alpine{version}"))
181196

182197
print(library)

0 commit comments

Comments
 (0)