34 lines
1.2 KiB
Docker
34 lines
1.2 KiB
Docker
# Use Ubuntu 24.04 as the base image
|
|
FROM ubuntu:24.04
|
|
ARG USER=devcontainer
|
|
|
|
# Update package lists and install essential tools
|
|
RUN apt update && \
|
|
apt install -y software-properties-common && \
|
|
add-apt-repository ppa:ubuntu-toolchain-r/test && \
|
|
apt update && \
|
|
apt install -y gcc-14 g++-14 libstdc++-14-dev && \
|
|
apt install -y cmake ninja-build python3 python3-pip git tmux vim curl wget sudo
|
|
|
|
# Install LLVM 20
|
|
RUN wget https://apt.llvm.org/llvm.sh && \
|
|
chmod +x llvm.sh && \
|
|
./llvm.sh 20 all
|
|
|
|
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 100 && \
|
|
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 100 && \
|
|
update-alternatives --set gcc /usr/bin/gcc-14 && \
|
|
update-alternatives --set g++ /usr/bin/g++-14
|
|
|
|
# Create a non-root user, set shell to bash, and add to sudo group
|
|
RUN useradd -m ${USER} -s /bin/bash && \
|
|
echo "${USER} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${USER}
|
|
|
|
RUN ln -s /usr/bin/lld-20 /usr/bin/lld && \
|
|
ln -s /usr/bin/clang-20 /usr/bin/clang && \
|
|
ln -s /usr/bin/clang++-20 /usr/bin/clang++ && \
|
|
ln -s /usr/bin/clangd-20 /usr/bin/clangd
|
|
|
|
# Set the default command
|
|
CMD ["/bin/bash"]
|