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 ce2b393a0 ci: enable Rust tests on Windows-on-ARM (#4688)
ce2b393a0 is described below
commit ce2b393a034e723ff4e3b85f934673bf709a9910
Author: David Li <[email protected]>
AuthorDate: Wed Aug 26 07:21:29 2026 +0900
ci: enable Rust tests on Windows-on-ARM (#4688)
Depends on #4686.
Closes #4682.
---
.github/workflows/rust.yml | 88 +++++++++++++++++++++++++++++++++++-----------
1 file changed, 68 insertions(+), 20 deletions(-)
diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml
index 024bfd833..e9b016abd 100644
--- a/.github/workflows/rust.yml
+++ b/.github/workflows/rust.yml
@@ -56,6 +56,7 @@ jobs:
- macos-latest
- ubuntu-latest
- windows-latest
+ - windows-11-arm
minimal-versions:
- false
include:
@@ -68,6 +69,7 @@ jobs:
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-Adead_code" # TODO(alexandreyc): remove this line when
implementation is complete
+ VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg-cache
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 #
v7.0.1
with:
@@ -94,42 +96,86 @@ jobs:
check-latest: true
cache: true
cache-dependency-path: go/adbc/go.sum
- - name: Install Protoc
- if: runner.os == 'Linux'
- run: |
- curl -L
"https://github.com/protocolbuffers/protobuf/releases/download/v28.3/protoc-28.3-linux-$(uname
-m).zip" -o protoc.zip
- unzip protoc.zip -d $HOME/.local
- echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- - name: Install Protoc
- if: runner.os == 'macOS'
- run: |
- curl -L
"https://github.com/protocolbuffers/protobuf/releases/download/v28.3/protoc-28.3-osx-universal_binary.zip"
-o protoc.zip
- unzip "protoc.zip" -d $HOME/.local
- echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- - name: Install Protoc
- if: runner.os == 'Windows'
- run: |
- curl -L
"https://github.com/protocolbuffers/protobuf/releases/download/v28.3/protoc-28.3-win64.zip"
-o protoc.zip
- unzip "protoc.zip" -d $HOME/.local
- echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- name: Install sqlite3
if: runner.os == 'Linux'
run: sudo apt-get install libsqlite3-dev
+
+ # Windows on x64
- name: Setup conda
uses:
conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 #
v4.0.1
- if: runner.os == 'Windows'
+ if: runner.os == 'Windows' && runner.arch == 'X64'
with:
miniforge-version: latest
- name: Install Dependencies
- if: runner.os == 'Windows'
+ if: runner.os == 'Windows' && runner.arch == 'X64'
run: |
conda install -c conda-forge --file ci/conda_env_cpp.txt
+
+ # Windows on ARM
+ - uses: msys2/setup-msys2@66cd2cce69caa17b53920067426061ca1de3a884 #
v2.32.0
+ if: runner.os == 'Windows' && runner.arch != 'X64'
+ id: msys2
+ with:
+ msystem: CLANGARM64
+ update: true
+ install: |
+ mingw-w64-clang-aarch64-gcc-compat
+ mingw-w64-clang-aarch64-tools
+ - name: Add msys2 toolchain to PATH
+ if: runner.os == 'Windows' && runner.arch != 'X64'
+ shell: pwsh
+ env:
+ MSYS_LOCATION: ${{ steps.msys2.outputs.msys2-location }}
+ run: |
+ "$($env:MSYS_LOCATION)\clangarm64\bin" |
+ Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
+ New-Item -ItemType Directory -Force `
+ $env:VCPKG_DEFAULT_BINARY_CACHE | Out-Null
+
- name: Build C++/Go drivers
+ if: runner.os != 'Windows' || runner.arch == 'X64'
+ run: |
+ mkdir -p build
+ mkdir -p local
+ pushd build
+ cmake \
+ -DADBC_BUILD_TESTS=OFF \
+ -DADBC_DRIVER_FLIGHTSQL=ON \
+ -DADBC_DRIVER_MANAGER=ON \
+ -DADBC_DRIVER_SQLITE=ON \
+ -DADBC_USE_ASAN=OFF \
+ -DADBC_USE_UBSAN=OFF \
+ -DADBC_SQLITE_COMPILE_DEFINES=-DADBC_SQLITE_WITH_NO_LOAD_EXTENSION
\
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=../local \
+ ../c
+ cmake --build . --target install
+ popd
+
+ # reuse the cache from native-vcpkg.yml if it exists but don't write to
+ # it since we don't build all the packages
+ - name: Cache vcpkg packages
+ if: runner.os == 'Windows' && runner.arch != 'X64'
+ uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 #
v6.1.0
+ with:
+ path: ${{ env.VCPKG_DEFAULT_BINARY_CACHE }}
+ key: vcpkg-${{ runner.os }}-arm64-${{ hashFiles('.env',
'ci/vcpkg/**', 'c/**/vcpkg.json', '.github/workflows/native-vcpkg.yml') }}
+ - name: Build C++/Go drivers (Windows on ARM)
+ if: runner.os == 'Windows' && runner.arch != 'X64'
+ env:
+ VCPKG_DEFAULT_BINARY_CACHE: ${{ github.workspace }}/vcpkg-cache
+ VCPKG_DEFAULT_TRIPLET: arm64-windows-static-release
+ VCPKG_ROOT: ${{ github.workspace }}/vcpkg
run: |
+ ./ci/scripts/install_vcpkg.sh "$VCPKG_ROOT"
+ "$VCPKG_ROOT/vcpkg" install sqlite3 --overlay-triplets
./ci/vcpkg/triplets
mkdir -p build
mkdir -p local
pushd build
cmake \
+
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
+ -DVCPKG_TARGET_TRIPLET=$VCPKG_DEFAULT_TRIPLET \
+ -DVCPKG_OVERLAY_TRIPLETS=$(pwd)/../ci/vcpkg/triplets \
-DADBC_BUILD_TESTS=OFF \
-DADBC_DRIVER_FLIGHTSQL=ON \
-DADBC_DRIVER_MANAGER=ON \
@@ -142,6 +188,7 @@ jobs:
../c
cmake --build . --target install
popd
+
- name: Set dynamic linker path
if: runner.os == 'Linux'
run: |
@@ -212,6 +259,7 @@ jobs:
curl -L
"https://github.com/foresterre/cargo-msrv/releases/download/${cargo_msrv_version}/cargo-msrv-x86_64-unknown-linux-gnu-${cargo_msrv_version}.tgz"
-o "${cargo_msrv_archive}"
echo "${cargo_msrv_hash} ${cargo_msrv_archive}" | sha256sum -c -
+ mkdir -p $HOME/.local/bin
tar xz -f "${cargo_msrv_archive}" --wildcards --strip-components=1
-C "$HOME/.local/bin" "*/cargo-msrv"
rm "${cargo_msrv_archive}"