Skip to content

Commit 5959999

Browse files
committed
Distribution CI for RISC-V GNU/Linux
1 parent 72b2bd5 commit 5959999

File tree

4 files changed

+977
-0
lines changed

4 files changed

+977
-0
lines changed

src/ci/docker/dist-various-1/Dockerfile

+29
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,24 @@ FROM ubuntu:16.04
22

33
RUN apt-get update && apt-get install -y --no-install-recommends \
44
g++ \
5+
automake \
6+
bison \
7+
bzip2 \
8+
flex \
9+
help2man \
10+
libtool-bin \
11+
texinfo \
12+
unzip \
13+
wget \
14+
xz-utils \
15+
libncurses-dev \
16+
gawk \
517
make \
618
file \
719
curl \
820
ca-certificates \
921
python2.7 \
22+
python3 \
1023
git \
1124
cmake \
1225
sudo \
@@ -35,6 +48,18 @@ RUN add-apt-repository ppa:team-gcc-arm-embedded/ppa && \
3548
apt-get update && \
3649
apt-get install -y --no-install-recommends gcc-arm-embedded
3750

51+
COPY scripts/rustbuild-setup.sh dist-various-1/build-riscv-toolchain.sh dist-various-1/riscv64-unknown-linux-gnu.config dist-various-1/crosstool-ng.sh /build
52+
RUN ./crosstool-ng.sh
53+
54+
# Crosstool-ng will refuse to build as root
55+
RUN ./rustbuild-setup.sh
56+
USER rustbuild
57+
58+
RUN ./build-riscv-toolchain.sh
59+
60+
USER root
61+
ENV PATH=/x-tools/riscv64-unknown-linux-gnu/bin:$PATH
62+
3863
COPY dist-various-1/build-rumprun.sh /build
3964
RUN ./build-rumprun.sh
4065

@@ -129,6 +154,7 @@ ENV TARGETS=$TARGETS,riscv32imc-unknown-none-elf
129154
ENV TARGETS=$TARGETS,riscv32imac-unknown-none-elf
130155
ENV TARGETS=$TARGETS,riscv64imac-unknown-none-elf
131156
ENV TARGETS=$TARGETS,riscv64gc-unknown-none-elf
157+
ENV TARGETS=$TARGETS,riscv64gc-unknown-linux-gnu
132158
ENV TARGETS=$TARGETS,armebv7r-none-eabi
133159
ENV TARGETS=$TARGETS,armebv7r-none-eabihf
134160
ENV TARGETS=$TARGETS,armv7r-none-eabi
@@ -147,6 +173,9 @@ ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
147173
CC_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-gcc \
148174
AR_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-ar \
149175
CXX_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++ \
176+
CC_riscv64gc_unknown_linux_gnu=riscv64-unknown-linux-gnu-gcc \
177+
AR_riscv64gc_unknown_linux_gnu=riscv64-unknown-linux-gnu-ar \
178+
CXX_riscv64gc_unknown_linux_gnu=riscv64-unknown-linux-gnu-g++ \
150179
CC_riscv32i_unknown_none_elf=false \
151180
CC_riscv32imc_unknown_none_elf=false \
152181
CC_riscv32imac_unknown_none_elf=false \
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/usr/bin/env bash
2+
3+
set -ex
4+
5+
hide_output() {
6+
set +x
7+
on_err="
8+
echo ERROR: An error was encountered with the build.
9+
cat /tmp/build.log
10+
exit 1
11+
"
12+
trap "$on_err" ERR
13+
bash -c "while true; do sleep 30; echo \$(date) - building ...; done" &
14+
PING_LOOP_PID=$!
15+
$@ &> /tmp/build.log
16+
rm /tmp/build.log
17+
trap - ERR
18+
kill $PING_LOOP_PID
19+
set -x
20+
}
21+
22+
mkdir -p /tmp/build-riscv
23+
cp riscv64-unknown-linux-gnu.config /tmp/build-riscv/.config
24+
cd /tmp/build-riscv
25+
hide_output ct-ng build
26+
cd ..
27+
rm -rf build-riscv
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/bash
2+
set -ex
3+
4+
# Mirrored from https://github.com/crosstool-ng/crosstool-ng/archive/crosstool-ng-1.24.0.tar.gz
5+
url="https://ci-mirrors.rust-lang.org/rustc/crosstool-ng-1.24.0.tar.gz"
6+
curl -Lf $url | tar xzf -
7+
cd crosstool-ng-crosstool-ng-1.24.0
8+
./bootstrap
9+
./configure --prefix=/usr/local
10+
make -j$(nproc)
11+
make install
12+
cd ..
13+
rm -rf crosstool-ng-crosstool-ng-1.24.0

0 commit comments

Comments
 (0)