From a145953a644bf1535ebd4f343e502cf026461249 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 1 Jun 2026 15:41:48 +0000 Subject: [PATCH 1/7] ci: enable Windows (windows_amd64) build Enable the MSVC windows_amd64 target in the main distribution pipeline by removing it from exclude_archs, so CI builds and tests the extension on Windows. The MinGW/Rtools variants stay excluded. Guard the GCC/Clang-only warning flags (-Wall -Wextra -Wpedantic) behind a non-MSVC check in CMakeLists.txt, since MSVC's cl rejects -Wextra/-Wpedantic. Signed-off-by: Claude --- .github/workflows/MainDistributionPipeline.yml | 2 +- CMakeLists.txt | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index 158ad6a..8e7a97d 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -19,5 +19,5 @@ jobs: ci_tools_version: v1.5.3 duckdb_version: v1.5.3 extension_name: vortex - exclude_archs: "wasm_mvp;wasm_eh;wasm_threads;windows_amd64_rtools;windows_amd64_mingw;windows_amd64;linux_amd64_musl" + exclude_archs: "wasm_mvp;wasm_eh;wasm_threads;windows_amd64_rtools;windows_amd64_mingw;linux_amd64_musl" extra_toolchains: "rust" diff --git a/CMakeLists.txt b/CMakeLists.txt index b2206b0..9ae2b5b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,7 +88,13 @@ set(LOADABLE_EXTENSION_NAME ${TARGET_NAME}_loadable_extension) build_static_extension(${TARGET_NAME} src/vortex_extension.cpp) build_loadable_extension(${TARGET_NAME} "" src/vortex_extension.cpp) -set(VORTEX_WARNING_FLAGS -Wall -Wextra -Wpedantic) +# MSVC's `cl` does not understand the GCC/Clang warning flags below, so only +# apply them for GNU/Clang-style compilers (Linux/macOS and MinGW). +if(MSVC) + set(VORTEX_WARNING_FLAGS "") +else() + set(VORTEX_WARNING_FLAGS -Wall -Wextra -Wpedantic) +endif() target_compile_options(${EXTENSION_NAME} PRIVATE ${VORTEX_WARNING_FLAGS}) target_link_libraries(${EXTENSION_NAME} From d5d47cfa400df9925e4bf7c596e1ecb6e8b8f337 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 1 Jun 2026 15:46:54 +0000 Subject: [PATCH 2/7] ci: build all Windows variants (amd64, arm64, mingw, rtools) Enable windows_arm64 via opt_in_archs and drop the MinGW/Rtools exclusions so CI builds and tests the extension on all four Windows targets. Signed-off-by: Claude --- .github/workflows/MainDistributionPipeline.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index 8e7a97d..c69ce6f 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -19,5 +19,6 @@ jobs: ci_tools_version: v1.5.3 duckdb_version: v1.5.3 extension_name: vortex - exclude_archs: "wasm_mvp;wasm_eh;wasm_threads;windows_amd64_rtools;windows_amd64_mingw;linux_amd64_musl" + exclude_archs: "wasm_mvp;wasm_eh;wasm_threads;linux_amd64_musl" + opt_in_archs: "windows_arm64" extra_toolchains: "rust" From a0444c1fab3fc2f21854aae93a63ff407717b005 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 1 Jun 2026 15:54:12 +0000 Subject: [PATCH 3/7] ci: use MSVC /W4 instead of dropping warnings on Windows Keep warning coverage on the MSVC Windows builds by applying /W4 (the equivalent of -Wall -Wextra) rather than emptying the warning flags. Signed-off-by: Claude --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ae2b5b..930d0fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,10 +88,10 @@ set(LOADABLE_EXTENSION_NAME ${TARGET_NAME}_loadable_extension) build_static_extension(${TARGET_NAME} src/vortex_extension.cpp) build_loadable_extension(${TARGET_NAME} "" src/vortex_extension.cpp) -# MSVC's `cl` does not understand the GCC/Clang warning flags below, so only -# apply them for GNU/Clang-style compilers (Linux/macOS and MinGW). +# MSVC's `cl` does not understand the GCC/Clang warning flags, so use the +# equivalent high warning level there instead of dropping warnings entirely. if(MSVC) - set(VORTEX_WARNING_FLAGS "") + set(VORTEX_WARNING_FLAGS /W4) else() set(VORTEX_WARNING_FLAGS -Wall -Wextra -Wpedantic) endif() From 81ccb880f6fe0faa6700c6554f606ff23dda9f5b Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 1 Jun 2026 16:21:02 +0000 Subject: [PATCH 4/7] ci: limit Windows builds to MSVC amd64 and arm64 Re-exclude the MinGW/Rtools variants; build only the MSVC windows_amd64 and windows_arm64 targets that DuckDB distributes. Signed-off-by: Claude --- .github/workflows/MainDistributionPipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index c69ce6f..854de77 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -19,6 +19,6 @@ jobs: ci_tools_version: v1.5.3 duckdb_version: v1.5.3 extension_name: vortex - exclude_archs: "wasm_mvp;wasm_eh;wasm_threads;linux_amd64_musl" + exclude_archs: "wasm_mvp;wasm_eh;wasm_threads;windows_amd64_mingw;windows_amd64_rtools;linux_amd64_musl" opt_in_archs: "windows_arm64" extra_toolchains: "rust" From 65788e8e422b6e2e090e9d5c63b3a3504a3db858 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 1 Jun 2026 16:27:38 +0000 Subject: [PATCH 5/7] ci: remove leftover extension-template self-test workflow ExtensionTemplate.yml only runs on duckdb/extension-template, so its Linux/MacOS/Windows jobs are always skipped here, producing misleading 'Windows skipped' checks. Its header notes it should be removed after bootstrap; remove it so only the real distribution-pipeline builds show. Signed-off-by: Claude --- .github/workflows/ExtensionTemplate.yml | 162 ------------------------ 1 file changed, 162 deletions(-) delete mode 100644 .github/workflows/ExtensionTemplate.yml diff --git a/.github/workflows/ExtensionTemplate.yml b/.github/workflows/ExtensionTemplate.yml deleted file mode 100644 index a5aeb88..0000000 --- a/.github/workflows/ExtensionTemplate.yml +++ /dev/null @@ -1,162 +0,0 @@ -# -# NOTE: this workflow is for testing the extension template itself, -# this workflow will be removed when scripts/bootstrap-template.py is run -# -name: Extension Template -on: [push, pull_request,repository_dispatch] -concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-${{ github.head_ref || '' }}-${{ github.base_ref || '' }}-${{ github.ref != 'refs/heads/main' || github.sha }} - cancel-in-progress: true - -jobs: - linux: - name: Linux - if: ${{ vars.RUN_RENAME_TEST == 'true' || github.repository == 'duckdb/extension-template' }} - runs-on: ubuntu-latest - strategy: - matrix: - # Add commits/tags to build against other DuckDB versions - duckdb_version: [ '' ] - env: - VCPKG_TOOLCHAIN_PATH: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake - VCPKG_TARGET_TRIPLET: 'x64-linux' - GEN: ninja - ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true - defaults: - run: - shell: bash - - steps: - - name: Install Ninja - shell: bash - run: sudo apt-get update -y -qq && sudo apt-get install -y -qq ninja-build - - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - submodules: 'recursive' - - - name: Checkout DuckDB to version - if: ${{ matrix.duckdb_version != ''}} - run: | - cd duckdb - git checkout ${{ matrix.duckdb_version }} - - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11.6 - with: - vcpkgGitCommitId: 5e5d0e1cd7785623065e77eff011afdeec1a3574 - - - name: Rename extension - run: | - python3 scripts/bootstrap-template.py ext_1_a_123b_b11 - - - name: Build - run: | - make - - - name: Test - run: | - make test - - macos: - name: MacOS - if: ${{ vars.RUN_RENAME_TEST == 'true' || github.repository == 'duckdb/extension-template' }} - runs-on: macos-latest - strategy: - matrix: - # Add commits/tags to build against other DuckDB versions - duckdb_version: [ ''] - env: - VCPKG_TOOLCHAIN_PATH: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake - VCPKG_TARGET_TRIPLET: 'x64-osx' - OSX_BUILD_ARCH: 'x86_64' - GEN: ninja - defaults: - run: - shell: bash - - steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - submodules: 'recursive' - - - name: Install Ninja - run: brew install ninja - - - uses: actions/setup-python@v6 - with: - python-version: '3.14' - - - name: Checkout DuckDB to version - if: ${{ matrix.duckdb_version != ''}} - run: | - cd duckdb - git checkout ${{ matrix.duckdb_version }} - - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11.6 - with: - vcpkgGitCommitId: 5e5d0e1cd7785623065e77eff011afdeec1a3574 - - - name: Rename extension - run: | - python scripts/bootstrap-template.py ext_1_a_123b_b11 - - - name: Build - run: | - make - - - name: Test - run: | - make test - - windows: - name: Windows - if: ${{ vars.RUN_RENAME_TEST == 'true' || github.repository == 'duckdb/extension-template' }} - runs-on: windows-latest - strategy: - matrix: - # Add commits/tags to build against other DuckDB versions - duckdb_version: [ '' ] - env: - VCPKG_TOOLCHAIN_PATH: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake - VCPKG_TARGET_TRIPLET: 'x64-windows-static-md' - defaults: - run: - shell: bash - - steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 0 - submodules: 'recursive' - - - uses: actions/setup-python@v6 - with: - python-version: '3.14' - - - name: Checkout DuckDB to version - # Add commits/tags to build against other DuckDB versions - if: ${{ matrix.duckdb_version != ''}} - run: | - cd duckdb - git checkout ${{ matrix.duckdb_version }} - - - name: Setup vcpkg - uses: lukka/run-vcpkg@v11.6 - with: - vcpkgGitCommitId: 5e5d0e1cd7785623065e77eff011afdeec1a3574 - - - name: Rename extension - run: | - python scripts/bootstrap-template.py ext_1_a_123b_b11 - - - name: Build - run: | - make - - - name: Test extension - run: | - build/release/test/Release/unittest.exe From d014feefd9fe3180f221c9bf8aef1968e408986e Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Mon, 1 Jun 2026 18:08:12 +0100 Subject: [PATCH 6/7] ci: drop fragile windows_arm64 build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit windows_arm64 fails linking aws-lc-sys: the ARM64 assembly object (e.g. chacha-armv8.o) is never produced yet lib.exe still references it, giving LNK1181. AWS_LC_SYS_NO_ASM can't be used since it's forbidden in release builds. Because the matrix is fail-fast, this also cancels the in-progress windows_amd64 job — the platform this PR actually targets. Drop the arm64 opt-in so windows_amd64 can run to completion. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: Joe Isaacs --- .github/workflows/MainDistributionPipeline.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index 854de77..9e16592 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -20,5 +20,4 @@ jobs: duckdb_version: v1.5.3 extension_name: vortex exclude_archs: "wasm_mvp;wasm_eh;wasm_threads;windows_amd64_mingw;windows_amd64_rtools;linux_amd64_musl" - opt_in_archs: "windows_arm64" extra_toolchains: "rust" From 78d85454d1907b6a43fd3bacdc9775b540a7a77b Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Mon, 1 Jun 2026 19:14:45 +0100 Subject: [PATCH 7/7] ci: park Windows build (defer pending upstream vortex Windows port) Enabling windows_amd64 surfaced that the vortex-duckdb crate's build.rs (in the vortex submodule) was never written for Windows: it uses std::os::unix::fs::symlink, has no Windows branch in its TARGET match or libduckdb download URL, and passes GCC/Clang-only flags (-Wall -Wextra -Wpedantic, -Wl,-rpath) that MSVC rejects. windows_arm64 additionally hits an aws-lc-sys ARM64 assembly link failure (LNK1181). These are upstream porting tasks in vortex-data/vortex that can't be verified on the Linux/macOS CI sandbox. Re-exclude both Windows archs so the v1.5.3 bump and CMake changes ship green on Linux/macOS; Windows support is tracked separately. The MSVC-guarded warning flags in CMakeLists are left in place as harmless forward-prep. Co-Authored-By: Claude Opus 4.8 (1M context) Signed-off-by: Joe Isaacs --- .github/workflows/MainDistributionPipeline.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/MainDistributionPipeline.yml b/.github/workflows/MainDistributionPipeline.yml index 9e16592..662c2ce 100644 --- a/.github/workflows/MainDistributionPipeline.yml +++ b/.github/workflows/MainDistributionPipeline.yml @@ -19,5 +19,5 @@ jobs: ci_tools_version: v1.5.3 duckdb_version: v1.5.3 extension_name: vortex - exclude_archs: "wasm_mvp;wasm_eh;wasm_threads;windows_amd64_mingw;windows_amd64_rtools;linux_amd64_musl" + exclude_archs: "wasm_mvp;wasm_eh;wasm_threads;windows_amd64;windows_amd64_mingw;windows_amd64_rtools;windows_arm64;linux_amd64_musl" extra_toolchains: "rust"