forked from RUB-SysSec/loki
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
118 lines (95 loc) · 3.02 KB
/
Dockerfile
File metadata and controls
118 lines (95 loc) · 3.02 KB
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
37
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
### llvm_builder
FROM ubuntu:18.04 as llvm_builder
ARG TZ=Europe/Berlin
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y \
build-essential \
git \
make \
cmake \
curl \
gcc \
ninja-build \
python3
ARG LLVM_DIR=/llvm_src
ARG LLVM_INSTALL_DIR=/llvm
# create LLVM
# increase git pull timeout
RUN git config --global http.postBuffer 1048576000
WORKDIR $LLVM_DIR
RUN git clone https://github.com/llvm/llvm-project.git
WORKDIR llvm-project
RUN git checkout e6f22596e5de7f4fc6f1de4725d4aa9b6aeef4aa
# will be overriden by docker_build.sh script
ARG PARALLEL_JOBS=2
# build type used to be RelWithDebInfo (but is 40GB instead of 1.5)
WORKDIR $LLVM_INSTALL_DIR
RUN cmake \
-G "Ninja" \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$LLVM_INSTALL_DIR \
-DLLVM_CCACHE_DIR=$LLVM_DIR/llvm-project/llvm/ccache \
-DLLVM_ENABLE_CXX1Y=On \
-DLLVM_ENABLE_IDE=On \
-DLLVM_ENABLE_PROJECTS=clang \
-DLLVM_TARGETS_TO_BUILD="X86" \
-DLLVM_PARALLEL_COMPILE_JOBS=$PARALLEL_JOBS \
-DLLVM_PARALLEL_LINK_JOBS=$PARALLEL_JOBS \
-DLLVM_USE_LINKER=gold \
-DLLVM_BUILD_LLVM_DYLIB=On \
$LLVM_DIR/llvm-project/llvm \
&& ninja -j ${PARALLEL_JOBS}
# end llvm_builder
FROM ubuntu:18.04
COPY --from=llvm_builder /llvm/ /llvm/
COPY --from=llvm_builder /llvm_src /llvm_src
FROM ubuntu:18.04
# import LLVM
COPY --from=llvm_builder /llvm /llvm
COPY --from=llvm_builder /llvm_src /llvm_src
ARG DEBIAN_FRONTEND=noninteractive
ARG TZ=Europe/Berlin
RUN apt update && apt install -y \
build-essential git \
curl wget \
make cmake ninja-build \
locales locales-all \
sudo \
neovim tree \
bear ccache \
gdb strace ltrace \
htop \
parallel psmisc \
zip unzip \
screen tmux \
linux-tools-common linux-tools-generic \
zsh powerline fonts-powerline \
libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \
libboost1.62-all-dev
# MISC NOTES
# * psmisc contains killall
RUN locale-gen en_US.UTF-8
ARG USER_UID=1000
ARG USER_GID=1000
RUN echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
WORKDIR /tmp
RUN update-locale LANG=en_US.UTF-8
ENV LANG=en_US.UTF-8
RUN groupadd -g ${USER_GID} user
# add user (-l flag to prevent faillog / lastlog from becoming huge)
RUN useradd -l --shell /bin/bash -c "" -m -u ${USER_UID} -g user -G sudo user
WORKDIR "/home/user"
USER user
# install rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -q -y --default-toolchain nightly
ENV PATH="/home/user/.cargo/bin:${PATH}"
# install PYENV
RUN curl https://pyenv.run | bash
RUN /home/user/.pyenv/bin/pyenv install 3.6.8
RUN /home/user/.pyenv/bin/pyenv install 3.9.0
RUN /home/user/.pyenv/bin/pyenv global 3.9.0
# zsh agnoster
RUN sh -c "$(wget -O- https://raw.githubusercontent.com/deluan/zsh-in-docker/master/zsh-in-docker.sh)" -- -t agnoster