Dockerfile.tofino 2.55 KB
Newer Older
Jialin Li's avatar
Jialin Li committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
FROM ubuntu:focal
RUN apt-get update \
 && DEBIAN_FRONTEND=noninteractive \
    TZ=Europe/Berlin \
    apt-get install -y \
	apt-utils \
	autoconf \
	bc \
	bison \
	build-essential \
	doxygen \
	g++ \
	flex \
	git \
	kmod \
	libboost-coroutine-dev \
	libboost-fiber-dev \
	libboost-iostreams-dev \
	libelf-dev \
	libglib2.0-dev \
	libgoogle-perftools-dev \
	libpcap-dev \
	libpixman-1-dev \
	libprotobuf-dev \
	ninja-build \
	protobuf-compiler \
	python-is-python3 \
	python3-dev \
	python3-sphinx \
	python3-sphinx-rtd-theme \
	rsync \
	scons \
	unzip \
	wget \
	nano \
	vim \
Jialin Li's avatar
Jialin Li committed
37
    psmisc \
Jialin Li's avatar
Jialin Li committed
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
 && rm -rf /var/lib/apt/lists/*
COPY docker/verilator.patch /tmp/
RUN cd /tmp \
 && git clone -b v4.010 https://github.com/verilator/verilator \
 && cd verilator \
 && patch -p1 < /tmp/verilator.patch \
 && autoupdate \
 && autoconf \
 && ./configure \
 && make -j`nproc` \
 && make install \
 && rm -rf /tmp/verilator

# Add non-root user for vs code devcontainer.
ARG USERNAME=simbricks
ARG USER_UID=1000
ARG USER_GID=$USER_UID
RUN groupadd --gid $USER_GID $USERNAME \
 && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME --shell /bin/bash \
# Add sudo support for this user and remove the need to type in password.
 && apt-get update \
 && apt-get install -y sudo \
 && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
 && chmod 0440 /etc/sudoers.d/$USERNAME

COPY . /simbricks
WORKDIR /simbricks
RUN make -j `nproc` ENABLE_VERILATOR=y
RUN git submodule update --init sims/external/qemu \
 && make -j `nproc` sims/external/qemu/ready \
 && bash docker/cleanup_external.sh
RUN git submodule update --init sims/external/gem5 \
 && make -j `nproc` sims/external/gem5/ready \
 && bash docker/cleanup_gem5.sh
RUN git submodule update --init sims/external/femu \
 && make -j `nproc` sims/external/femu/ready
RUN git submodule update --init sims/external/ns-3 \
 && make -j `nproc` sims/external/ns-3/ready
RUN make -j `nproc` build-images-min COMPRESSED_IMAGES=true \
 && bash docker/cleanup_images.sh
ENV PYTHONPATH=/simbricks/experiments
RUN sudo cp docker/simbricks-run /usr/bin/ \
 && sudo chmod 755 /usr/bin/simbricks-run

RUN mkdir /tofino
COPY docker/bf-sde.tgz /tofino
WORKDIR /tofino
RUN tar xf bf-sde.tgz \
 && rm bf-sde.tgz \
 && mv bf-sde-* bf-sde
WORKDIR /tofino/bf-sde/p4studio
RUN sudo -E ./install-p4studio-dependencies.sh
RUN ./p4studio profile apply ./profiles/p4-16-programs-tofino.yaml
ENV SDE=/tofino/bf-sde
ENV SDE_INSTALL=/tofino/bf-sde/install
WORKDIR /tofino/bf-sde
RUN mkdir tools
COPY docker/p4_build.sh tools/
Jialin Li's avatar
Jialin Li committed
96
RUN ./tools/p4_build.sh /simbricks/sims/net/tofino/p4/nopaxos.p4