From cb16596cfa93eff3d58751c84da94c49617a5d43 Mon Sep 17 00:00:00 2001 From: creeper5820 Date: Fri, 13 Feb 2026 09:48:44 +0800 Subject: [PATCH 1/2] Update docker image, switch toolchain to llvm-22 with cmake-4.2 --- Dockerfile | 28 ++++++++++++++++++++-------- docker-compose.yml | 13 +++---------- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7fe52df3c..8a7403e97 100644 --- a/Dockerfile +++ b/Dockerfile @@ -82,19 +82,24 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ openssh-client \ lsb-release software-properties-common gnupg sudo \ python3-colorama python3-dpkt && \ - wget -O ./llvm-snapshot.gpg.key https://apt.llvm.org/llvm-snapshot.gpg.key && \ - apt-key add ./llvm-snapshot.gpg.key && \ - rm ./llvm-snapshot.gpg.key && \ - echo "deb https://apt.llvm.org/noble/ llvm-toolchain-noble main" > /etc/apt/sources.list.d/llvm-apt.list && \ - apt-get update && \ - version=`apt-cache search clangd- | grep clangd- | awk -F' ' '{print $1}' | sort -V | tail -1 | cut -d- -f2` && \ - apt-get install -y --no-install-recommends clangd-$version && \ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 50 && \ update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 50 && \ - update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-$version 50 && \ apt-get autoremove -y && apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* +# Install latest stable llvm-toolchain +RUN mkdir -p /etc/apt/keyrings && \ + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | gpg -o /etc/apt/keyrings/llvm-snapshot.gpg --dearmor && \ + echo "deb [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] https://mirrors.tuna.tsinghua.edu.cn/llvm-apt/noble/ llvm-toolchain-noble-22 main" \ + | tee /etc/apt/sources.list.d/llvm.list && \ + apt-get update && \ + apt-get install -y clang-22 clangd-22 clang-format-22 lldb-22 && \ + update-alternatives --install /usr/bin/clang clang /usr/bin/clang-22 100 && \ + update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-22 100 && \ + update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-22 100 && \ + update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-22 100 && \ + update-alternatives --install /usr/bin/lldb lldb /usr/bin/lldb-22 100 + # Generate/load ssh key and setup unison RUN --mount=type=bind,target=/tmp/.ssh,source=.ssh,readonly=false \ cd /home/ubuntu && mkdir -p .ssh && \ @@ -111,6 +116,11 @@ RUN curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linu tar -C /opt -xzf nvim-linux-x86_64.tar.gz && \ rm nvim-linux-x86_64.tar.gz +# Install latest stable cmake for user ubuntu +RUN wget https://github.com/kitware/cmake/releases/download/v4.2.3/cmake-4.2.3-linux-x86_64.sh -O install.sh && \ + mkdir -p /opt/cmake/ && bash install.sh --skip-license --prefix=/opt/cmake/ --exclude-subdir && \ + rm install.sh + # Change user RUN chsh -s /bin/zsh ubuntu && \ echo "ubuntu ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers @@ -124,12 +134,14 @@ RUN sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools sed -i 's/ZSH_THEME=\"[a-z0-9\-]*\"/ZSH_THEME="af-magic"/g' ~/.zshrc && \ echo 'source ~/env_setup.zsh' >> ~/.zshrc && \ echo 'export PATH="${PATH}:/opt/nvim-linux-x86_64/bin"' >> ~/.zshrc && \ + # echo 'export PATH="${PATH}:/opt/cmake/bin"' >> ~/.zshrc && \ echo 'export PATH="${PATH}:${RMCS_PATH}/.script"' >> ~/.zshrc # Copy environment setup scripts COPY --chown=1000:1000 .script/template/env_setup.bash env_setup.bash COPY --chown=1000:1000 .script/template/env_setup.zsh env_setup.zsh + # Runtime container, will automatically launch the main program FROM rmcs-base AS rmcs-runtime diff --git a/docker-compose.yml b/docker-compose.yml index d59afc5bf..43ec6c74d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,17 +1,11 @@ services: rmcs-develop: image: qzhhhi/rmcs-develop:latest - user: "${CONTAINER_USER}" - privileged: true - command: > - bash -c " - sudo chown -R ${CONTAINER_USER}:${CONTAINER_USER} ${CONTAINER_HOME}/.config - exec bash - " + user: "1000:1000" volumes: - /dev:/dev:bind - /tmp/.X11-unix:/tmp/.X11-unix:bind - - /run/user/1000/wayland-0:/run/user/1000/wayland-0 + - /run/user/1000/wayland-0:/run/user/1000/wayland-0:bind - ${HOST_NVIM_DIR}:${CONTAINER_HOME}/.config/nvim/:bind - .:/workspaces/RMCS:bind environment: @@ -19,5 +13,4 @@ services: - WAYLAND_DISPLAY=${WAYLAND_DISPLAY} network_mode: host tty: true - stdin_open: true - + stdin_open: true From d42ce351224ea056be78a98cc55337e2fd4233b9 Mon Sep 17 00:00:00 2001 From: creeper5820 Date: Fri, 13 Feb 2026 09:57:04 +0800 Subject: [PATCH 2/2] Add layer clean to llvm installation step --- Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8a7403e97..3ea8bddf7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -93,12 +93,13 @@ RUN mkdir -p /etc/apt/keyrings && \ echo "deb [signed-by=/etc/apt/keyrings/llvm-snapshot.gpg] https://mirrors.tuna.tsinghua.edu.cn/llvm-apt/noble/ llvm-toolchain-noble-22 main" \ | tee /etc/apt/sources.list.d/llvm.list && \ apt-get update && \ - apt-get install -y clang-22 clangd-22 clang-format-22 lldb-22 && \ + apt-get install -y --no-install-recommends clang-22 clangd-22 clang-format-22 lldb-22 && \ update-alternatives --install /usr/bin/clang clang /usr/bin/clang-22 100 && \ update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-22 100 && \ update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-22 100 && \ update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-22 100 && \ - update-alternatives --install /usr/bin/lldb lldb /usr/bin/lldb-22 100 + update-alternatives --install /usr/bin/lldb lldb /usr/bin/lldb-22 100 && \ + apt-get autoremove -y && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* # Generate/load ssh key and setup unison RUN --mount=type=bind,target=/tmp/.ssh,source=.ssh,readonly=false \