From 6b3af823f5cb91857e877b824c729c87c1f193e0 Mon Sep 17 00:00:00 2001 From: "Viral B. Shah" Date: Mon, 22 Jun 2026 23:28:52 +0000 Subject: [PATCH 1/2] ci: trim Windows msys2 install to speed up setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The msys2 package cache is already enabled by default and hits, but the slow part of the Windows jobs is pacman *extracting* the installed packages, which the cache does not avoid: on the windows-11-arm runner the install step alone took ~3.5 min installing base-devel and the full toolchain meta-package. Install only what openlibm builds with — make plus a C compiler. The -gcc packages pull in binutils and the runtime, so mingw64/mingw32/ucrt64 drop base-devel and the toolchain meta entirely. The clang environments keep their toolchain meta (no standalone binutils package provides ar), but still drop base-devel. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index de4fcd13..cb20aa59 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,12 +34,20 @@ jobs: strategy: fail-fast: false matrix: + # Install only what the build needs instead of `base-devel` plus the + # full `*-toolchain` meta-package. The msys2 package cache is already on + # by default and hits, but pacman still *extracts* every package on each + # run, and base-devel + the toolchain meta dominate setup time (it was + # ~3.5 min of pacman install on the arm runner). openlibm only needs make + # and a C compiler: the -gcc package pulls in binutils/runtime, while the + # clang environments have no standalone binutils package so they keep the + # toolchain meta (for ar/lld). include: - - { os: windows-latest, sys: mingw64, env: x86_64 } - - { os: windows-latest, sys: mingw32, env: i686 } - - { os: windows-latest, sys: ucrt64, env: ucrt-x86_64 } # Experimental! - - { os: windows-latest, sys: clang64, env: clang-x86_64 } # Experimental! - - { os: windows-11-arm, sys: clangarm64, env: clang-aarch64 } # Experimental! + - { os: windows-latest, sys: mingw64, install: "make mingw-w64-x86_64-gcc" } + - { os: windows-latest, sys: mingw32, install: "make mingw-w64-i686-gcc" } + - { os: windows-latest, sys: ucrt64, install: "make mingw-w64-ucrt-x86_64-gcc" } # Experimental! + - { os: windows-latest, sys: clang64, install: "make mingw-w64-clang-x86_64-toolchain" } # Experimental! + - { os: windows-11-arm, sys: clangarm64, install: "make mingw-w64-clang-aarch64-toolchain" } # Experimental! defaults: run: shell: msys2 {0} @@ -49,7 +57,7 @@ jobs: uses: msys2/setup-msys2@v2 with: msystem: ${{matrix.sys}} - install: base-devel mingw-w64-${{matrix.env}}-toolchain + install: ${{matrix.install}} - run: make -j$(nproc) - run: make test strict-warnings: From 5f16973a508e55187dfff9ce02ad6b48ae9cfc94 Mon Sep 17 00:00:00 2001 From: "Viral B. Shah" Date: Mon, 22 Jun 2026 23:36:06 +0000 Subject: [PATCH 2/2] ci: trim clang Windows install to the clang package too mingw-w64-clang-*-clang requires lld and llvm-tools (which provides ar), so it is a complete toolchain by itself. Drop the clang -toolchain meta (lldb/openmp/flang/... are unused) to cut the slow windows-11-arm setup. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cb20aa59..d75431e2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,17 +37,18 @@ jobs: # Install only what the build needs instead of `base-devel` plus the # full `*-toolchain` meta-package. The msys2 package cache is already on # by default and hits, but pacman still *extracts* every package on each - # run, and base-devel + the toolchain meta dominate setup time (it was + # run, and base-devel + the toolchain meta dominated setup time (it was # ~3.5 min of pacman install on the arm runner). openlibm only needs make - # and a C compiler: the -gcc package pulls in binutils/runtime, while the - # clang environments have no standalone binutils package so they keep the - # toolchain meta (for ar/lld). + # and a C compiler. The -gcc package pulls in binutils and the runtime; + # the -clang package requires lld and llvm-tools (which provides ar), so + # it is a complete toolchain on its own without the meta-package's unused + # extras (lldb, openmp, flang, ...). include: - { os: windows-latest, sys: mingw64, install: "make mingw-w64-x86_64-gcc" } - { os: windows-latest, sys: mingw32, install: "make mingw-w64-i686-gcc" } - - { os: windows-latest, sys: ucrt64, install: "make mingw-w64-ucrt-x86_64-gcc" } # Experimental! - - { os: windows-latest, sys: clang64, install: "make mingw-w64-clang-x86_64-toolchain" } # Experimental! - - { os: windows-11-arm, sys: clangarm64, install: "make mingw-w64-clang-aarch64-toolchain" } # Experimental! + - { os: windows-latest, sys: ucrt64, install: "make mingw-w64-ucrt-x86_64-gcc" } # Experimental! + - { os: windows-latest, sys: clang64, install: "make mingw-w64-clang-x86_64-clang" } # Experimental! + - { os: windows-11-arm, sys: clangarm64, install: "make mingw-w64-clang-aarch64-clang" } # Experimental! defaults: run: shell: msys2 {0}