Skip to content

Commit a90679f

Browse files
committed
ci: Add dist-aarch64-freebsd
Add scripts to build the aarch64-unknown-freebsd target in CI. Implements MCP: rust-lang/compiler-team#961
1 parent bbe8536 commit a90679f

2 files changed

Lines changed: 66 additions & 3 deletions

File tree

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
FROM ubuntu:22.04
2+
3+
RUN apt-get update && apt-get install -y --no-install-recommends \
4+
clang \
5+
make \
6+
ninja-build \
7+
file \
8+
curl \
9+
ca-certificates \
10+
python3 \
11+
git \
12+
cmake \
13+
sudo \
14+
bzip2 \
15+
xz-utils \
16+
texinfo \
17+
wget \
18+
libssl-dev \
19+
pkg-config \
20+
&& rm -rf /var/lib/apt/lists/*
21+
22+
COPY scripts/freebsd-toolchain.sh /tmp/
23+
RUN /tmp/freebsd-toolchain.sh aarch64
24+
25+
COPY scripts/sccache.sh /scripts/
26+
RUN sh /scripts/sccache.sh
27+
28+
COPY scripts/cmake.sh /scripts/
29+
RUN /scripts/cmake.sh
30+
31+
ENV \
32+
AR_aarch64_unknown_freebsd=aarch64-unknown-freebsd13-ar \
33+
CC_aarch64_unknown_freebsd=aarch64-unknown-freebsd13-clang \
34+
CXX_aarch64_unknown_freebsd=aarch64-unknown-freebsd13-clang++
35+
36+
ENV HOSTS=aarch64-unknown-freebsd
37+
38+
ENV RUST_CONFIGURE_ARGS \
39+
--enable-full-tools \
40+
--enable-extended \
41+
--enable-profiler \
42+
--enable-sanitizers \
43+
--disable-docs
44+
45+
ENV SCRIPT python3 ../x.py dist --host $HOSTS --target $HOSTS
46+

src/ci/docker/scripts/freebsd-toolchain.sh

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,16 @@ set -eux
55

66
arch=$1
77
binutils_version=2.40
8-
freebsd_version=12.3
9-
triple=$arch-unknown-freebsd12
8+
case $arch in
9+
(aarch64)
10+
freebsd_version=13.5
11+
triple=$arch-unknown-freebsd13
12+
;;
13+
(*)
14+
freebsd_version=12.3
15+
triple=$arch-unknown-freebsd12
16+
;;
17+
esac
1018
sysroot=/usr/local/$triple
1119

1220
hide_output() {
@@ -45,6 +53,7 @@ mkdir -p "$sysroot"
4553
case $arch in
4654
(x86_64) freebsd_arch=amd64 ;;
4755
(i686) freebsd_arch=i386 ;;
56+
(aarch64) freebsd_arch=arm64 ;;
4857
esac
4958

5059
files_to_extract=(
@@ -61,7 +70,15 @@ done
6170

6271
# Originally downloaded from:
6372
# URL=https://download.freebsd.org/ftp/releases/${freebsd_arch}/${freebsd_version}-RELEASE/base.txz
64-
URL=https://ci-mirrors.rust-lang.org/rustc/2022-05-06-freebsd-${freebsd_version}-${freebsd_arch}-base.txz
73+
# FIXME: Switch to fully using the mirror once arm64 is available there
74+
case $arch in
75+
(aarch64)
76+
URL=https://download.freebsd.org/ftp/releases/${freebsd_arch}/${freebsd_version}-RELEASE/base.txz
77+
;;
78+
(*)
79+
URL=https://ci-mirrors.rust-lang.org/rustc/2022-05-06-freebsd-${freebsd_version}-${freebsd_arch}-base.txz
80+
;;
81+
esac
6582
curl "$URL" | tar xJf - -C "$sysroot" --wildcards "${files_to_extract[@]}"
6683

6784
# Clang can do cross-builds out of the box, if we give it the right

0 commit comments

Comments
 (0)