Skip to content

Commit 82869c4

Browse files
committed
Add Dockerfile
1 parent 9a04aa5 commit 82869c4

File tree

1 file changed

+65
-2
lines changed

1 file changed

+65
-2
lines changed

containers/labs344/Dockerfile

Lines changed: 65 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,68 @@ ARG LABS344_IMAGE_VERSION=${LABS344_VERSION}
88
ARG LABS344_BUILDER_IMAGE=${LABS344_IMAGE_NAME_FULL}:${LABS344_IMAGE_VERSION}-builder
99
ARG LABS344_DEVEL_IMAGE=${LABS344_IMAGE_NAME_FULL}:${LABS344_IMAGE_VERSION}-devel
1010

11+
ARG LABS344_RISCV_GNU_TOOLCHAIN_VERSION=23863c2ca74e6c050f0c97e7af61f5f1776aadd1
12+
13+
FROM docker.io/library/debian:${LABS344_DEBIAN_VERSION} AS labs344-toolchain
14+
ARG TARGETARCH TARGETOS TARGETPLATFORM TARGETVARIANT
15+
16+
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=${TARGETPLATFORM}/var/cache/apt \
17+
export DEBIAN_FRONTEND=noninteractive && \
18+
apt-get update -qq && \
19+
apt-get install -qy --no-install-recommends \
20+
autoconf \
21+
automake \
22+
autotools-dev \
23+
curl \
24+
python3 \
25+
python3-pip \
26+
python3-tomli \
27+
libmpc-dev \
28+
libmpfr-dev \
29+
libgmp-dev \
30+
gawk \
31+
build-essential \
32+
bison \
33+
flex \
34+
texinfo \
35+
gperf \
36+
libtool \
37+
patchutils \
38+
bc \
39+
zlib1g-dev \
40+
libexpat-dev \
41+
ninja-build \
42+
git \
43+
cmake \
44+
libglib2.0-dev \
45+
libslirp-dev \
46+
&& \
47+
apt-get autoremove -y && rm -rf /var/lib/apt/lists/*
48+
49+
ARG LABS344_RISCV_GNU_TOOLCHAIN_VERSION
50+
ENV LABS344_RISCV_GNU_TOOLCHAIN_VERSION=${LABS344_RISCV_GNU_TOOLCHAIN_VERSION}
51+
ENV LABS344_RISCV_DIR=/opt/riscv
52+
53+
RUN git clone https://github.com/riscv/riscv-gnu-toolchain /tmp/riscv-gnu-toolchain && \
54+
cd /tmp/riscv-gnu-toolchain && \
55+
./configure --prefix=${LABS344_RISCV_DIR} --enable-multilib --with-multilib-generator="rv32e-ilp32e--;rv32i-ilp32--;rv32im-ilp32--;rv32iac-ilp32--;rv32imac-ilp32--;rv32imafc-ilp32f--;rv32imafdc-ilp32d--;rv64i-lp64--;rv64ic-lp64--;rv64iac-lp64--;rv64imac-lp64--;rv64imafdc-lp64d--;rv64im-lp64--;" && \
56+
make -j$(nproc) && \
57+
make install && \
58+
rm -rf /tmp/riscv-gnu-toolchain
59+
60+
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=${TARGETPLATFORM}/var/cache/apt \
61+
apt-get update && export DEBIAN_FRONTEND=noninteractive \
62+
&& apt-get install -qqy --no-install-recommends \
63+
curl \
64+
wget \
65+
git \
66+
gnupg2 \
67+
ca-certificates \
68+
build-essential \
69+
make \
70+
cmake \
71+
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
72+
1173
FROM docker.io/library/debian:${LABS344_DEBIAN_VERSION} AS labs344-builder
1274
ARG TARGETARCH TARGETOS TARGETPLATFORM TARGETVARIANT
1375

@@ -32,6 +94,9 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked,id=${TARGETPLATFORM}
3294
binutils-riscv64-unknown-elf \
3395
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
3496

97+
FROM ${LABS344_BUILDER_IMAGE} AS labs344-devel
98+
ARG TARGETARCH TARGETOS TARGETPLATFORM TARGETVARIANT
99+
35100
RUN git clone https://github.com/openhwgroup/cvw && \
36101
cd cvw && \
37102
git checkout main && \
@@ -51,8 +116,6 @@ RUN git clone https://github.com/openhwgroup/cvw && \
51116
bash -c ". $WALLY/bin/installation/verilator-install.sh" && \
52117
cd .. && rm -rf cvw
53118

54-
FROM ${LABS344_BUILDER_IMAGE} AS labs344-devel
55-
ARG TARGETARCH TARGETOS TARGETPLATFORM TARGETVARIANT
56119

57120
# FROM docker.io/verilator/verilator:v5.028 AS labs344
58121
# ARG TARGETARCH TARGETOS TARGETPLATFORM TARGETVARIANT

0 commit comments

Comments
 (0)