7676 name : release-source
7777 path : |
7878 apache-arrow-java-*
79- jni-ubuntu :
79+ jni-linux :
8080 name : JNI ${{ matrix.platform.runs_on }} ${{ matrix.platform.arch }}
8181 runs-on : ${{ matrix.platform.runs_on }}
8282 needs :
@@ -100,7 +100,7 @@ jobs:
100100 uses : actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
101101 with :
102102 name : release-source
103- - name : Extract Download the latest Apache Arrow C++
103+ - name : Extract source archive
104104 run : |
105105 tar -xf apache-arrow-java-*.tar.gz --strip-components=1
106106 - name : Download the latest Apache Arrow C++
@@ -127,7 +127,7 @@ jobs:
127127 path : .docker
128128 key : jni-linux-${{ matrix.platform.arch }}-${{ hashFiles('arrow/cpp/**') }}
129129 restore-keys : jni-linux-${{ matrix.platform.arch }}-
130- - name : Build C++ libraries
130+ - name : Build
131131 run : |
132132 docker compose run vcpkg-jni
133133 - name : Push Docker image
@@ -159,7 +159,7 @@ jobs:
159159 uses : actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
160160 with :
161161 name : release-source
162- - name : Extract Download the latest Apache Arrow C++
162+ - name : Extract source archive
163163 run : |
164164 tar -xf apache-arrow-java-*.tar.gz --strip-components=1
165165 - name : Download the latest Apache Arrow C++
@@ -176,7 +176,7 @@ jobs:
176176 repository : apache/parquet-testing
177177 path : arrow/cpp/submodules/parquet-testing
178178 - name : Set up Python
179- uses : actions/setup-python@v5
179+ uses : actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
180180 with :
181181 cache : ' pip'
182182 python-version : 3.12
@@ -246,7 +246,7 @@ jobs:
246246 path : ccache
247247 key : jni-macos-${{ matrix.platform.arch }}-${{ hashFiles('arrow/cpp/**') }}
248248 restore-keys : jni-macos-${{ matrix.platform.arch }}-
249- - name : Build C++ libraries
249+ - name : Build
250250 run : |
251251 set -e
252252 # make brew Java available to CMake
@@ -259,12 +259,83 @@ jobs:
259259 with :
260260 name : jni-macos-${{ matrix.platform.arch }}
261261 path : jni-macos-${{ matrix.platform.arch }}.tar.gz
262+ jni-windows :
263+ name : JNI ${{ matrix.platform.runs_on }} ${{ matrix.platform.arch }}
264+ runs-on : ${{ matrix.platform.runs_on }}
265+ needs :
266+ - source
267+ strategy :
268+ fail-fast : false
269+ matrix :
270+ platform :
271+ - runs_on : windows-2019
272+ arch : " x86_64"
273+ steps :
274+ - name : Download source archive
275+ uses : actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
276+ with :
277+ name : release-source
278+ - name : Extract source archive
279+ shell : bash
280+ run : |
281+ tar -xf apache-arrow-java-*.tar.gz --strip-components=1
282+ - name : Download the latest Apache Arrow C++
283+ shell : bash
284+ run : |
285+ ci/scripts/download_cpp.sh
286+ - name : Set up Java
287+ uses : actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0
288+ with :
289+ java-version : ' 11'
290+ distribution : ' temurin'
291+ - name : Download Timezone Database
292+ shell : bash
293+ run : |
294+ arrow/ci/scripts/download_tz_database.sh
295+ - name : Install ccache
296+ shell : bash
297+ run : |
298+ env | sort
299+ version=4.10.2
300+ base_name="ccache-${version}-windows-x86_64"
301+ url="https://github.com/ccache/ccache/releases/download/v${version}/${base_name}.zip"
302+ curl --fail --location --remote-name "${url}"
303+ unzip "${base_name}.zip"
304+ chmod +x "${base_name}/ccache.exe"
305+ mv "${base_name}/ccache.exe" /usr/bin/
306+ rm -rf "${base_name}"{,.zip}
307+ - name : Prepare ccache
308+ shell : bash
309+ run : |
310+ echo "CCACHE_DIR=${PWD}/ccache" >> ${GITHUB_ENV}
311+ - name : Cache ccache
312+ uses : actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0
313+ with :
314+ path : ccache
315+ key : jni-windows-${{ matrix.platform.arch }}-${{ hashFiles('arrow/cpp/**') }}
316+ restore-keys : jni-windows-${{ matrix.platform.arch }}-
317+ - name : Build
318+ shell : cmd
319+ run : |
320+ call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
321+ REM For ORC
322+ set TZDIR=/c/msys64/usr/share/zoneinfo
323+ bash -c "ci/scripts/jni_windows_build.sh . arrow build jni"
324+ - name : Compress into single artifact to keep directory structure
325+ shell : bash
326+ run : tar -cvzf jni-windows-${{ matrix.platform.arch }}.tar.gz jni/
327+ - name : Upload artifacts
328+ uses : actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
329+ with :
330+ name : jni-windows-${{ matrix.platform.arch }}
331+ path : jni-windows-${{ matrix.platform.arch }}.tar.gz
262332 binaries :
263333 name : Binaries
264334 runs-on : ubuntu-latest
265335 needs :
266- - jni-ubuntu
336+ - jni-linux
267337 - jni-macos
338+ - jni-windows
268339 steps :
269340 - name : Download artifacts
270341 uses : actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
@@ -278,7 +349,7 @@ jobs:
278349 # tar -xvzf jni-linux-aarch_64.tar.gz
279350 tar -xvzf jni-macos-x86_64.tar.gz
280351 tar -xvzf jni-macos-aarch_64.tar.gz
281- # tar -xvzf jni-windows.tar.gz
352+ tar -xvzf jni-windows-x86_64 .tar.gz
282353 - name : Test that shared libraries exist
283354 run : |
284355 set -x
@@ -303,9 +374,9 @@ jobs:
303374 test -f jni/arrow_orc_jni/aarch_64/libarrow_orc_jni.dylib
304375 test -f jni/gandiva_jni/aarch_64/libgandiva_jni.dylib
305376
306- # test -f jni/arrow_cdata_jni/x86_64/arrow_cdata_jni.dll
307- # test -f jni/arrow_dataset_jni/x86_64/arrow_dataset_jni.dll
308- # test -f jni/arrow_orc_jni/x86_64/arrow_orc_jni.dll
377+ test -f jni/arrow_cdata_jni/x86_64/arrow_cdata_jni.dll
378+ test -f jni/arrow_dataset_jni/x86_64/arrow_dataset_jni.dll
379+ test -f jni/arrow_orc_jni/x86_64/arrow_orc_jni.dll
309380 - name : Checkout apache/arrow-testing
310381 uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
311382 with :
0 commit comments