From c2cf154e3e813acb1b298c82f64a61c38e3d16f6 Mon Sep 17 00:00:00 2001 From: coavins Date: Wed, 25 Feb 2026 20:24:22 -0500 Subject: [PATCH] Update .vscode and .devcontainer files (#6246) This commit makes some changes to the dockerfile to make it work again. We install cmake from source in order to meet the minimum required version specified in the CMakeLists.txt file. We build the same version that is installed on the CI runner image. We also build tinyxml2 from source because we need some cmake files that are apparently not included in the apt package. --- .devcontainer/Dockerfile | 58 +++++++++++++++++++++++++++++++++++++--- .vscode/tasks.json | 47 +++++++++++++++++++++++++------- 2 files changed, 92 insertions(+), 13 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index d59e6ec4c..4e2f2fe90 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,13 +1,65 @@ FROM mcr.microsoft.com/devcontainers/cpp:ubuntu-22.04 -RUN apt-get update && apt-get install -y libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev ninja-build +RUN apt-get update && apt-get upgrade -y \ + && rm -rf /var/lib/apt/lists/* + +# download and install cmake from source +# this ensures we use the same version as in the github runner image +RUN apt-get purge -y cmake || true +ARG CMAKE_VERSION=3.31.11 +# download +WORKDIR /tmp +RUN curl -fsSL \ + https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}.tar.gz \ + -o cmake.tar.gz \ + && tar -xzf cmake.tar.gz \ + && rm cmake.tar.gz + # build and install +WORKDIR /tmp/cmake-${CMAKE_VERSION} +RUN ./bootstrap \ + --prefix=/usr/local \ + --parallel=$(nproc) \ + && make -j$(nproc) \ + && make install +# clean up +WORKDIR / +RUN rm -rf /tmp/cmake-${CMAKE_VERSION} + +# download and install tinyxml2 from source +# this ensures we have the cmake files needed for find_package +RUN apt-get purge -y libtinyxml2-dev || true +ARG TINYXML2_VERSION=11.0.0 +# download +WORKDIR /tmp +RUN curl -fsSL \ + https://github.com/leethomason/tinyxml2/archive/refs/tags/${TINYXML2_VERSION}.tar.gz \ + -o tinyxml2.tar.gz \ + && tar -xzf tinyxml2.tar.gz \ + && rm tinyxml2.tar.gz + # build and install +WORKDIR /tmp/tinyxml2-${TINYXML2_VERSION} +RUN cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \ + && cmake --build build --parallel $(nproc) \ + && cmake --install build +# clean up +WORKDIR / +RUN rm -rf /tmp/tinyxml2-${TINYXML2_VERSION} + +# install apt dependencies +RUN apt-get update && apt-get install -y \ + libusb-dev libusb-1.0-0-dev libsdl2-dev libsdl2-net-dev libpng-dev \ + libglew-dev nlohmann-json3-dev libspdlog-dev ninja-build libogg-dev \ + libopus-dev opus-tools libopusfile-dev libvorbis-dev libespeak-ng-dev \ + lsb-release git clang clang-format-14 zipcmp zipmerge ziptool \ + libopengl-dev libbz2-dev libzip-dev \ + && rm -rf /var/lib/apt/lists/* # Install latest SDL2 RUN wget https://www.libsdl.org/release/SDL2-2.26.1.tar.gz && \ tar -xzf SDL2-2.26.1.tar.gz && \ cd SDL2-2.26.1 && \ ./configure && \ - make && \ + make -j$(nproc) && \ make install && \ cd .. && \ rm -rf SDL2-2.26.1 && \ @@ -19,7 +71,7 @@ RUN wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz & tar -xzf SDL2_net-2.2.0.tar.gz && \ cd SDL2_net-2.2.0 && \ ./configure && \ - make && \ + make -j$(nproc) && \ make install && \ cd .. && \ rm -rf SDL2_net-2.2.0 && \ diff --git a/.vscode/tasks.json b/.vscode/tasks.json index be763065e..b3ec8a819 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -9,14 +9,24 @@ "-S", ".", "-B", - "build/x64", + "build-cmake", "-G", - "Visual Studio 17 2022", - "-T", - "v143", - "-A", - "x64" + "Ninja" ], + "windows": { + "args": [ + "-S", + ".", + "-B", + "build/x64", + "-G", + "Visual Studio 17 2022", + "-T", + "v143", + "-A", + "x64" + ] + }, "group": "build", "problemMatcher": [] }, @@ -26,10 +36,19 @@ "command": "cmake", "args": [ "--build", - "./build/x64", + "build-cmake", "--target", - "GenerateSohOtr" + "GenerateSohOtr", + "--parallel" ], + "windows": { + "args": [ + "--build", + "./build/x64", + "--target", + "GenerateSohOtr" + ] + }, "group": "build", "problemMatcher": [] }, @@ -39,8 +58,16 @@ "command": "cmake", "args": [ "--build", - "./build/x64" + "build-cmake", + "--parallel", + "8" ], + "windows": { + "args": [ + "--build", + "./build/x64" + ] + }, "group": { "kind": "build", "isDefault": true @@ -58,4 +85,4 @@ ] } ] -} \ No newline at end of file +}