Skip to content

Commit fa154f6

Browse files
authored
Merge pull request #1724 from cuviper/rust-docker
Use rust's docker images for mips*, powerpc*, and s390x
2 parents 291900e + 8c837de commit fa154f6

File tree

10 files changed

+76
-78
lines changed

10 files changed

+76
-78
lines changed

ci/build-run-docker.sh

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ DOCKER="$1"
88
TARGET="$2"
99
SKIP_TESTS="$3"
1010

11+
bash ci/fetch-rust-docker.sh "$TARGET"
1112
if [ -f "ci/docker/$DOCKER/Dockerfile" ]; then
1213
docker build -t "$DOCKER" "ci/docker/$DOCKER/"
1314
fi
+1-9
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
FROM ubuntu:18.04
2-
3-
RUN apt-get update && apt-get install -y \
4-
gcc-mips-linux-gnu \
5-
curl \
6-
ca-certificates \
7-
perl \
8-
make \
9-
gcc
1+
FROM rust-mips-unknown-linux-gnu
102

113
ENV CC_mips_unknown_linux_gnu=mips-linux-gnu-gcc
124
ENV CARGO_TARGET_MIPS_UNKNOWN_LINUX_GNU_LINKER=mips-linux-gnu-gcc
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
FROM ubuntu:18.04
2-
3-
RUN apt-get update && apt-get install -y \
4-
gcc-mips64-linux-gnuabi64 \
5-
curl \
6-
ca-certificates \
7-
perl \
8-
make \
9-
gcc
1+
FROM rust-mips64-unknown-linux-gnuabi64
102

113
ENV CC_mips64_unknown_linux_gnuabi64=mips64-linux-gnuabi64-gcc
124
ENV CARGO_TARGET_MIPS64_UNKNOWN_LINUX_GNUABI64_LINKER=mips64-linux-gnuabi64-gcc
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
FROM ubuntu:18.04
2-
3-
RUN apt-get update && apt-get install -y \
4-
gcc-mips64el-linux-gnuabi64 \
5-
curl \
6-
ca-certificates \
7-
perl \
8-
make \
9-
gcc
1+
FROM rust-mips64el-unknown-linux-gnuabi64
102

113
ENV CC_mips64el_unknown_linux_gnuabi64=mips64el-linux-gnuabi64-gcc
124
ENV CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_GNUABI64_LINKER=mips64el-linux-gnuabi64-gcc
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
FROM ubuntu:18.04
2-
3-
RUN apt-get update && apt-get install -y \
4-
gcc-mipsel-linux-gnu \
5-
curl \
6-
ca-certificates \
7-
perl \
8-
make \
9-
gcc
1+
FROM rust-mipsel-unknown-linux-gnu
102

113
ENV CC_mipsel_unknown_linux_gnu=mipsel-linux-gnu-gcc
124
ENV CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_GNU_LINKER=mipsel-linux-gnu-gcc
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
FROM ubuntu:18.04
1+
FROM rust-powerpc-unknown-linux-gnu
22

3-
RUN apt-get update && apt-get install -y \
4-
gcc-powerpc-linux-gnu \
5-
curl \
6-
ca-certificates \
7-
perl \
8-
make \
9-
gcc
10-
11-
ENV CC_powerpc_unknown_linux_gnu=powerpc-linux-gnu-gcc
12-
ENV CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_LINKER=powerpc-linux-gnu-gcc
3+
ENV CC_powerpc_unknown_linux_gnu=powerpc-unknown-linux-gnu-gcc
4+
ENV CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_LINKER=powerpc-unknown-linux-gnu-gcc
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
FROM ubuntu:18.04
1+
FROM rust-powerpc64-unknown-linux-gnu
22

3-
RUN apt-get update && apt-get install -y \
4-
gcc-powerpc64-linux-gnu \
5-
curl \
6-
ca-certificates \
7-
perl \
8-
make \
9-
gcc
10-
11-
ENV CC_powerpc64_unknown_linux_gnu=powerpc64-linux-gnu-gcc
12-
ENV CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_LINKER=powerpc64-linux-gnu-gcc
3+
ENV CC_powerpc64_unknown_linux_gnu=powerpc64-unknown-linux-gnu-gcc
4+
ENV CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_LINKER=powerpc64-unknown-linux-gnu-gcc
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
FROM ubuntu:18.04
2-
3-
RUN apt-get update && apt-get install -y \
4-
gcc-powerpc64le-linux-gnu \
5-
curl \
6-
ca-certificates \
7-
perl \
8-
make \
9-
gcc
1+
FROM rust-powerpc64le-unknown-linux-gnu
102

113
ENV CC_powerpc64le_unknown_linux_gnu=powerpc64le-linux-gnu-gcc
124
ENV CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_LINKER=powerpc64le-linux-gnu-gcc
+3-11
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,4 @@
1-
FROM ubuntu:18.04
1+
FROM rust-s390x-unknown-linux-gnu
22

3-
RUN apt-get update && apt-get install -y \
4-
gcc-s390x-linux-gnu \
5-
curl \
6-
ca-certificates \
7-
perl \
8-
make \
9-
gcc
10-
11-
ENV CC_s390x_unknown_linux_gnu=s390x-linux-gnu-gcc
12-
ENV CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_LINKER=s390x-linux-gnu-gcc
3+
ENV CC_s390x_unknown_linux_gnu=s390x-ibm-linux-gnu-gcc
4+
ENV CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_LINKER=s390x-ibm-linux-gnu-gcc

ci/fetch-rust-docker.sh

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/bin/bash
2+
3+
set -ex
4+
5+
TARGET="$1"
6+
7+
RUST_REPO="https://github.com/rust-lang/rust"
8+
S3_BASE_URL="https://s3-us-west-1.amazonaws.com/rust-lang-ci2/rustc-builds"
9+
10+
# See http://unix.stackexchange.com/questions/82598
11+
# Duplicated from rust-lang/rust/src/ci/shared.sh
12+
function retry {
13+
echo "Attempting with retry:" "$@"
14+
local n=1
15+
local max=5
16+
while true; do
17+
"$@" && break || {
18+
if [[ $n -lt $max ]]; then
19+
sleep $n # don't retry immediately
20+
((n++))
21+
echo "Command failed. Attempt $n/$max:"
22+
else
23+
echo "The command has failed after $n attempts."
24+
return 1
25+
fi
26+
}
27+
done
28+
}
29+
30+
# Use images from rustc master
31+
case "$TARGET" in
32+
mips-unknown-linux-gnu) image=dist-mips-linux ;;
33+
mips64-unknown-linux-gnuabi64) image=dist-mips64-linux ;;
34+
mips64el-unknown-linux-gnuabi64) image=dist-mips64el-linux ;;
35+
mipsel-unknown-linux-gnu) image=dist-mipsel-linux ;;
36+
powerpc-unknown-linux-gnu) image=dist-powerpc-linux ;;
37+
powerpc64-unknown-linux-gnu) image=dist-powerpc64-linux ;;
38+
powerpc64le-unknown-linux-gnu) image=dist-powerpc64le-linux ;;
39+
s390x-unknown-linux-gnu) image=dist-s390x-linux ;;
40+
*) exit ;;
41+
esac
42+
43+
master=$(git ls-remote "$RUST_REPO" refs/heads/master | cut -f1)
44+
image_url="$S3_BASE_URL/$master/image-$image.txt"
45+
info="/tmp/image-$image.txt"
46+
47+
rm -f "$info"
48+
curl -o "$info" "$image_url"
49+
digest=$(grep -m1 ^sha "$info")
50+
51+
if ! docker tag "$digest" "rust-$TARGET"; then
52+
url=$(grep -m1 ^https "$info")
53+
cache=/tmp/rustci_docker_cache
54+
echo "Attempting to download $url"
55+
rm -f "$cache"
56+
set +e
57+
retry curl -y 30 -Y 10 --connect-timeout 30 -f -L -C - -o "$cache" "$url"
58+
docker load -i "$cache"
59+
set -e
60+
docker tag "$digest" "rust-$TARGET"
61+
fi

0 commit comments

Comments
 (0)