From dd0bd44f94e5e44f431e64f0f20003a844deee81 Mon Sep 17 00:00:00 2001 From: jolavillette Date: Mon, 15 Jun 2026 09:50:45 +0200 Subject: [PATCH] ci: add Windows (MSYS2 UCRT64) CMake workflow building the full tree CMake counterpart of the legacy qmake ci-ucrt64.yml, but builds the whole tree (service/friendserver/sam3/rnp/plugins all ON) with Ninja and a shared libretroshare, mirroring the user's validated local Windows command. Submodules init without --remote (like the Linux/macOS CMake CIs). Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/windows-cmake.yml | 107 ++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 .github/workflows/windows-cmake.yml diff --git a/.github/workflows/windows-cmake.yml b/.github/workflows/windows-cmake.yml new file mode 100644 index 000000000..f4460176c --- /dev/null +++ b/.github/workflows/windows-cmake.yml @@ -0,0 +1,107 @@ +# Windows (MSYS2 / UCRT64) CMake CI for the RetroShare monorepo. +# +# CMake counterpart of the legacy qmake ci-ucrt64.yml. Unlike that one (GUI-only, +# sam3 disabled, mingw32-make), this builds the WHOLE tree with the same feature +# set as the Linux/macOS CMake CIs, using Ninja and the user's validated local +# Windows command (shared libretroshare). +# +# Submodules are initialised WITHOUT --remote (identical to ubuntu-cmake.yml) so +# libretroshare stays on its pinned, CMake-enabled commit. On WIN32 libretroshare +# pulls restbed via FetchContent, so the restbed submodule is unused there. +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +name: Windows UCRT64 CMake C/C++ CI + +on: + push: + paths-ignore: + - '**/*.md' + pull_request: + paths-ignore: + - '**/*.md' + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + build: + name: Windows UCRT64 / Qt5 / CMake + runs-on: windows-latest + defaults: + run: + shell: msys2 {0} + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Setup MSYS2 (UCRT64) + uses: msys2/setup-msys2@40677d36a502eb2cf0fb808cc9dec31bf6152638 # v2.28.0 + with: + msystem: UCRT64 + update: true + install: >- + base-devel + git + doxygen + perl + ruby + mingw-w64-ucrt-x86_64-toolchain + mingw-w64-ucrt-x86_64-cmake + mingw-w64-ucrt-x86_64-ninja + mingw-w64-ucrt-x86_64-python + mingw-w64-ucrt-x86_64-qt5-base + mingw-w64-ucrt-x86_64-qt5-multimedia + mingw-w64-ucrt-x86_64-qt5-svg + mingw-w64-ucrt-x86_64-qt5-tools + mingw-w64-ucrt-x86_64-openssl + mingw-w64-ucrt-x86_64-libbotan + mingw-w64-ucrt-x86_64-sqlcipher + mingw-w64-ucrt-x86_64-xapian-core + mingw-w64-ucrt-x86_64-miniupnpc + mingw-w64-ucrt-x86_64-json-c + mingw-w64-ucrt-x86_64-rapidjson + mingw-w64-ucrt-x86_64-asio + mingw-w64-ucrt-x86_64-libxml2 + mingw-w64-ucrt-x86_64-libxslt + mingw-w64-ucrt-x86_64-speex + mingw-w64-ucrt-x86_64-speexdsp + mingw-w64-ucrt-x86_64-ffmpeg + mingw-w64-ucrt-x86_64-bzip2 + mingw-w64-ucrt-x86_64-zlib + + # Same pinned-commit init as the Ubuntu/macOS CMake CI (no --remote); librnp + # needs --recursive for its nested src/libsexpp. + - name: Init submodules (pinned commits) + run: | + git submodule update --init \ + libbitdht/ libretroshare/ openpgpsdk/ retroshare-webui/ + git submodule update --init --recursive \ + supportlibs/librnp + git submodule update --init \ + supportlibs/restbed supportlibs/libsam3 \ + supportlibs/udp-discovery-cpp supportlibs/rapidjson + git --no-pager -C libretroshare log --max-count 1 --oneline + + # Mirrors the validated local Windows command (Ninja, shared libretroshare). + - name: CMake configure + run: > + cmake -G Ninja -B Build-cmake -S . + -DCMAKE_POLICY_VERSION_MINIMUM=3.5 + -DCMAKE_BUILD_TYPE=Release + -DRS_LIBRETROSHARE_STATIC=OFF -DRS_LIBRETROSHARE_SHARED=ON + -DRS_RNPLIB=ON -DRS_JSON_API=ON -DRS_WEBUI=ON + -DRS_GUI=ON -DRS_SERVICE=ON -DRS_FRIENDSERVER=ON + -DRS_PLUGINS=ON -DRS_FORUM_DEEP_INDEX=ON + -DRS_USE_I2P_SAM3=ON -DRS_BITDHT=ON -DRS_MINIUPNPC=ON + -DRS_BRODCAST_DISCOVERY=ON -DRS_SQLCIPHER=ON + + - name: CMake build + run: cmake --build Build-cmake -j3