Dockerfile.tofino 2.83 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
 && 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/ \
80
81
82
83
84
85
86
 && sudo chmod 755 /usr/bin/simbricks-run \
 && sudo ln -s /simbricks/sims/external/qemu/build/qemu-system-x86_64 \
    /usr/bin/qemu-system-x86_64 \
 && sudo ln -s /simbricks/sims/external/qemu/build/qemu-system-x86_64 \
    /usr/bin/kvm \
 && sudo ln -s /simbricks/sims/external/qemu/build/qemu-img \
    /usr/bin/qemu-img
Jialin Li's avatar
Jialin Li committed
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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
101
RUN ./tools/p4_build.sh /simbricks/sims/net/tofino/p4/nopaxos.p4