forked from a13xp0p0v/kernel-build-containers
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
53 lines (49 loc) · 3.1 KB
/
Dockerfile
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
ARG UBUNTU_VERSION
FROM ubuntu:${UBUNTU_VERSION} as base
ARG GCC_VERSION
ARG CLANG_VERSION
RUN set -x && echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
sed -i '/deb-src/s/^# //' /etc/apt/sources.list && apt update && \
apt-get update && \
apt-get install -y -q apt-utils dialog && \
apt-get install -y -q sudo aptitude flex bison libncurses5-dev make git exuberant-ctags sparse bc libssl-dev libelf-dev build-essential bc rsync libncurses-dev dwarves bsdmainutils libpopt-dev libtrace3-dev libbabeltrace-dev libpfm4-dev libzstd-dev python3-setuptools libcapstone-dev libperl-dev systemtap-sdt-dev python3-dev && \
apt-get build-dep linux -y -q && \
if [ "$GCC_VERSION" == "11" || "$GCC_VERSION" == "12" || "$GCC_VERSION" == "13" ]; then \
apt-get install -y -q python-is-python3; \
fi; \
if [ "$GCC_VERSION" ]; then \
apt-get install -y -q python gcc-${GCC_VERSION} g++-${GCC_VERSION} gcc-${GCC_VERSION}-plugin-dev gcc g++ \
gcc-${GCC_VERSION}-aarch64-linux-gnu g++-${GCC_VERSION}-aarch64-linux-gnu gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \
gcc-${GCC_VERSION}-arm-linux-gnueabi g++-${GCC_VERSION}-arm-linux-gnueabi gcc-arm-linux-gnueabi g++-arm-linux-gnueabi && \
if [ "$GCC_VERSION" != "4.9" ]; then \
apt-get install -y -q gcc-${GCC_VERSION}-plugin-dev-aarch64-linux-gnu gcc-${GCC_VERSION}-plugin-dev-arm-linux-gnueabi; \
fi \
fi; \
if [ "$CLANG_VERSION" ]; then \
apt-get install -y -q clang-${CLANG_VERSION} lld-${CLANG_VERSION} clang-tools-${CLANG_VERSION} clang lld; \
fi
ARG UNAME
ARG UID
ARG GID
RUN set -x && \
userdel -r `getent passwd ${UID} | cut -d : -f 1` > /dev/null 2>&1; \
groupdel -f `getent group ${GID} | cut -d : -f 1` > /dev/null 2>&1; \
groupadd -g ${GID} -o ${UNAME} && \
useradd -u $UID -g $GID -G sudo -ms /bin/bash ${UNAME} && \
echo "${UNAME} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
echo "Set disable_coredump false" >> /etc/sudo.conf && \
if [ "$GCC_VERSION" ]; then \
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${GCC_VERSION} 100 && \
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${GCC_VERSION} 100 && \
sudo update-alternatives --install /usr/bin/aarch64-linux-gnu-gcc aarch64-linux-gnu-gcc /usr/bin/aarch64-linux-gnu-gcc-${GCC_VERSION} 100 && \
sudo update-alternatives --install /usr/bin/aarch64-linux-gnu-g++ aarch64-linux-gnu-g++ /usr/bin/aarch64-linux-gnu-g++-${GCC_VERSION} 100 && \
sudo update-alternatives --install /usr/bin/arm-linux-gnueabi-gcc arm-linux-gnueabi-gcc /usr/bin/arm-linux-gnueabi-gcc-${GCC_VERSION} 100 && \
sudo update-alternatives --install /usr/bin/arm-linux-gnueabi-g++ arm-linux-gnueabi-g++ /usr/bin/arm-linux-gnueabi-g++-${GCC_VERSION} 100; \
fi; \
if [ "$CLANG_VERSION" ]; then \
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${CLANG_VERSION} 100 && \
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-${CLANG_VERSION} 100; \
fi
USER ${UNAME}
WORKDIR /home/${UNAME}/src
CMD ["bash"]