This is an automated email from the ASF dual-hosted git repository.

lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-adbc.git


The following commit(s) were added to refs/heads/main by this push:
     new 18dafb27a ci: add Windows on ARM + vcpkg pipeline (#4686)
18dafb27a is described below

commit 18dafb27a1c2b47eba221e109a52de557f066903
Author: David Li <[email protected]>
AuthorDate: Tue Aug 25 10:00:46 2026 +0900

    ci: add Windows on ARM + vcpkg pipeline (#4686)
    
    Closes #4680.
    
    Co-authored-by: Bryce Mecum <[email protected]>
    Assisted-by: GPT-5.6 Sol <[email protected]>
---
 .github/workflows/native-vcpkg.yml                 | 129 +++++++++++++++++++++
 .github/workflows/native-windows.yml               |  51 --------
 c/cmake_modules/GoUtils.cmake                      |   2 +-
 .../triplets/arm64-windows-static-release.cmake    |  21 ++++
 ci/vcpkg/triplets/x64-windows-static-release.cmake |  21 ++++
 5 files changed, 172 insertions(+), 52 deletions(-)

diff --git a/.github/workflows/native-vcpkg.yml 
b/.github/workflows/native-vcpkg.yml
new file mode 100644
index 000000000..129e9c8c4
--- /dev/null
+++ b/.github/workflows/native-vcpkg.yml
@@ -0,0 +1,129 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: Native Libraries (vcpkg)
+
+on:
+  pull_request:
+    branches:
+      - main
+    paths:
+      - "c/**"
+      - "ci/**"
+      - "glib/**"
+      - "go/**"
+      - "python/**"
+      - "ruby/**"
+      - ".github/workflows/native-vcpkg.yml"
+  push:
+    branches-ignore:
+      - 'dependabot/**'
+    paths:
+      - "c/**"
+      - "ci/**"
+      - "glib/**"
+      - "go/**"
+      - "python/**"
+      - "ruby/**"
+      - ".github/workflows/native-vcpkg.yml"
+  workflow_call:
+
+concurrency:
+  group: ${{ github.repository }}-${{ github.ref }}-${{ github.workflow 
}}-vcpkg
+  cancel-in-progress: true
+
+permissions:
+  contents: read
+
+defaults:
+  run:
+    shell: pwsh
+
+jobs:
+  drivers-vcpkg:
+    name: "C/C++ (${{ matrix.os }}/${{ matrix.config }})"
+    runs-on: ${{ matrix.os }}
+    strategy:
+      matrix:
+        include:
+          - { os: windows-latest, arch: x64, config: debug, msystem: UCRT64, 
msysbin: mingw64, env: x86_64, triplet: x64-windows }
+          - { os: windows-latest, arch: x64, config: release, msystem: UCRT64, 
msysbin: mingw64, env: x86_64, triplet: x64-windows-static-release }
+          - { os: windows-11-arm, arch: arm64, config: release, msystem: 
CLANGARM64, msysbin: clangarm64, env: clang-aarch64, triplet: 
arm64-windows-static-release }
+    env:
+      VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg-cache
+      VCPKG_DEFAULT_TRIPLET: ${{ matrix.triplet }}
+      VCPKG_ROOT: ${{ github.workspace }}/vcpkg
+    steps:
+      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
+        with:
+          fetch-depth: 0
+          persist-credentials: false
+      - uses: msys2/setup-msys2@66cd2cce69caa17b53920067426061ca1de3a884  # 
v2.32.0
+        id: msys2
+        with:
+          msystem: ${{ matrix.msystem }}
+          update: true
+          # Needed for gendef tool in GoUtils.cmake
+          install: |
+            mingw-w64-${{ matrix.env }}-tools
+      - name: Add msys2 toolchain to PATH
+        env:
+          MSYS_LOCATION: ${{ steps.msys2.outputs.msys2-location }}
+        run: |
+          "$($env:MSYS_LOCATION)\${{ matrix.msysbin }}\bin" |
+            Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
+      - name: Setup MSYS2 tools
+        if: matrix.arch == 'arm64'
+        shell: msys2 {0}
+        run: |
+          # Needed for CGO
+          pacman --noconfirm -S mingw-w64-${{ matrix.env }}-gcc-compat
+      - name: Ensure vcpkg binary cache directory
+        run: |
+          New-Item -ItemType Directory -Force `
+            $env:VCPKG_DEFAULT_BINARY_CACHE | Out-Null
+      - name: Cache vcpkg packages
+        uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
+        with:
+          path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
+          key: vcpkg-${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('.env', 
'ci/vcpkg/**', 'c/**/vcpkg.json', '.github/workflows/native-vcpkg.yml') }}
+      - name: Install vcpkg
+        shell: bash
+        run: ci/scripts/install_vcpkg.sh "$VCPKG_ROOT"
+      - name: Install vcpkg dependencies
+        working-directory: c
+        run: |
+          & "$($env:VCPKG_ROOT)\vcpkg.exe" install libpq sqlite3 `
+            --overlay-triplets "$pwd\..\ci\vcpkg\triplets"
+      - name: Build and Install (No ASan)
+        env:
+          CMAKE_BUILD_TYPE: ${{ matrix.config }}
+        run: |
+          cmake .\c\ --preset windows-${{ matrix.config }} `
+            -DCMAKE_VERBOSE_MAKEFILE=ON `
+            -DVCPKG_OVERLAY_TRIPLETS="$pwd\ci\vcpkg\triplets" `
+            "-DVCPKG_TARGET_TRIPLET=$($env:VCPKG_DEFAULT_TRIPLET)"
+          if (-not $?) { throw "failed to configure CMake" }
+
+          cmake --build .\build\${{ matrix.config }} --target install --config 
${{ matrix.config }} --parallel
+      - name: Test
+        env:
+          BUILD_ALL: "0"
+          BUILD_DRIVER_MANAGER: "1"
+          BUILD_DRIVER_MANAGER_USER_CONFIG_TEST: "1"
+          BUILD_DRIVER_SQLITE: "1"
+        run: .\ci\scripts\cpp_test.ps1 $pwd\build\${{ matrix.config }} 
$pwd\local\${{ matrix.config }}
diff --git a/.github/workflows/native-windows.yml 
b/.github/workflows/native-windows.yml
index 10e889a94..9a53aaf7e 100644
--- a/.github/workflows/native-windows.yml
+++ b/.github/workflows/native-windows.yml
@@ -357,54 +357,3 @@ jobs:
           BUILD_ALL: "0"
           BUILD_DRIVER_SQLITE: "1"
         run: .\ci\scripts\python_test.ps1 $pwd $pwd\build
-
-  # ------------------------------------------------------------
-  # MSVC/vcpkg build (no Conda)
-  # ------------------------------------------------------------
-  drivers-vcpkg:
-    name: "C/C++ (vcpkg/${{ matrix.os }}/${{ matrix.config }})"
-    runs-on: ${{ matrix.os }}
-    strategy:
-      matrix:
-        os: ["windows-latest"]
-        arch: ["x64"]
-        config: ["debug", "release"]
-    steps:
-      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # 
v7.0.1
-        with:
-          fetch-depth: 0
-          persist-credentials: false
-      - name: Setup MSYS2 tools
-        run: |
-          # msys64 is pre-installed on windows but not added to path
-          $env:PATH = 
"C:\msys64\mingw64\bin;C:\msys64\usr\bin\;C:\msys64\ucrt64\bin;$env:PATH"
-          echo "PATH=$env:PATH" >> $env:GITHUB_ENV
-
-          # Needed for gendef tool in GoUtils.cmake
-          pacman --noconfirm -S mingw-w64-x86_64-tools
-      - name: Install vcpkg
-        shell: bash
-        env:
-          VCPKG_ROOT: ${{ github.workspace }}/vcpkg
-        run: ci/scripts/install_vcpkg.sh "$VCPKG_ROOT"
-      - name: Install vcpkg dependencies
-        working-directory: c
-        env:
-          VCPKG_ROOT: ${{ github.workspace }}/vcpkg
-        run: |
-          ${{ github.workspace }}/vcpkg/vcpkg.exe install libpq sqlite3 
--triplet ${{ matrix.arch }}-windows
-      - name: Build and Install (No ASan)
-        env:
-          CMAKE_BUILD_TYPE: ${{ matrix.config }}
-          VCPKG_ROOT: ${{ github.workspace }}/vcpkg
-        run: |
-          cmake .\c\ --preset windows-${{ matrix.config }} 
-DCMAKE_VERBOSE_MAKEFILE=ON
-
-          cmake --build .\build\${{ matrix.config }} --target install --config 
${{ matrix.config }} --parallel
-      - name: Test
-        env:
-          BUILD_ALL: "0"
-          BUILD_DRIVER_MANAGER: "1"
-          BUILD_DRIVER_MANAGER_USER_CONFIG_TEST: "1"
-          BUILD_DRIVER_SQLITE: "1"
-        run: .\ci\scripts\cpp_test.ps1 $pwd\build\${{ matrix.config }} 
$pwd\local\${{ matrix.config }}
diff --git a/c/cmake_modules/GoUtils.cmake b/c/cmake_modules/GoUtils.cmake
index 567dd75ff..601ba5f85 100644
--- a/c/cmake_modules/GoUtils.cmake
+++ b/c/cmake_modules/GoUtils.cmake
@@ -193,7 +193,7 @@ function(add_go_lib GO_MOD_DIR GO_LIBNAME)
       set(EXTLDFLAGS ",--version-script=${REPOSITORY_ROOT}/c/symbols.map")
     endif()
 
-    if(NOT APPLE)
+    if(NOT APPLE AND NOT WIN32)
       set(EXTLDFLAGS 
"${EXTLDFLAGS},-soname,${LIB_NAME_SHARED}.${ADBC_SO_VERSION}")
     endif()
 
diff --git a/ci/vcpkg/triplets/arm64-windows-static-release.cmake 
b/ci/vcpkg/triplets/arm64-windows-static-release.cmake
new file mode 100644
index 000000000..aee670214
--- /dev/null
+++ b/ci/vcpkg/triplets/arm64-windows-static-release.cmake
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+set(VCPKG_TARGET_ARCHITECTURE arm64)
+set(VCPKG_CRT_LINKAGE dynamic)
+set(VCPKG_LIBRARY_LINKAGE static)
+set(VCPKG_BUILD_TYPE release)
diff --git a/ci/vcpkg/triplets/x64-windows-static-release.cmake 
b/ci/vcpkg/triplets/x64-windows-static-release.cmake
new file mode 100644
index 000000000..72e7f676a
--- /dev/null
+++ b/ci/vcpkg/triplets/x64-windows-static-release.cmake
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+set(VCPKG_TARGET_ARCHITECTURE x64)
+set(VCPKG_CRT_LINKAGE dynamic)
+set(VCPKG_LIBRARY_LINKAGE static)
+set(VCPKG_BUILD_TYPE release)

Reply via email to