8181 outputs :
8282 ci-extra : ${{ steps.check.outputs.ci-extra }}
8383 steps :
84+ - name : Checkout Arrow
85+ if : github.event_name == 'pull_request'
86+ uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
8487 - name : Check
8588 id : check
8689 env :
@@ -99,7 +102,15 @@ jobs:
99102 if [ "${n_ci_extra_labels}" -eq 1 ]; then
100103 ci_extra=true
101104 else
102- ci_extra=false
105+ git fetch origin ${GITHUB_BASE_REF}
106+ if git diff --stat origin/${GITHUB_BASE_REF}.. | \
107+ grep \
108+ --fixed-strings ".github/workflows/cpp_extra.yml" \
109+ --quiet; then
110+ ci_extra=true
111+ else
112+ ci_extra=false
113+ fi
103114 fi
104115 ;;
105116 esac
@@ -174,3 +185,88 @@ jobs:
174185 ARCHERY_DOCKER_PASSWORD : ${{ secrets.DOCKERHUB_TOKEN }}
175186 continue-on-error : true
176187 run : archery docker push ${{ matrix.image }}
188+
189+ jni-macos :
190+ needs : check-labels
191+ name : JNI macOS
192+ runs-on : macos-14
193+ if : needs.check-labels.outputs.ci-extra == 'true'
194+ timeout-minutes : 45
195+ env :
196+ MACOSX_DEPLOYMENT_TARGET : " 14.0"
197+ steps :
198+ - name : Checkout Arrow
199+ uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
200+ with :
201+ fetch-depth : 0
202+ submodules : recursive
203+ - name : Install dependencies
204+ run : |
205+ brew bundle --file=cpp/Brewfile
206+ # We want to link aws-sdk-cpp statically but Homebrew's
207+ # aws-sdk-cpp provides only shared library. If we have
208+ # Homebrew's aws-sdk-cpp, our build mix Homebrew's
209+ # aws-sdk-cpp and bundled aws-sdk-cpp. We uninstall Homebrew's
210+ # aws-sdk-cpp to ensure using only bundled aws-sdk-cpp.
211+ brew uninstall aws-sdk-cpp
212+ # We want to use bundled RE2 for static linking. If
213+ # Homebrew's RE2 is installed, its header file may be used.
214+ # We uninstall Homebrew's RE2 to ensure using bundled RE2.
215+ brew uninstall grpc || : # gRPC depends on RE2
216+ brew uninstall grpc@1.54 || : # gRPC 1.54 may be installed too
217+ brew uninstall re2
218+ # We want to use bundled Protobuf for static linking. If
219+ # Homebrew's Protobuf is installed, its library file may be
220+ # used on test We uninstall Homebrew's Protobuf to ensure using
221+ # bundled Protobuf.
222+ brew uninstall protobuf
223+ - name : Prepare ccache
224+ run : |
225+ echo "CCACHE_DIR=${PWD}/ccache" >> ${GITHUB_ENV}
226+ - name : Cache ccache
227+ uses : actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
228+ with :
229+ path : ccache
230+ key : jni-macos-${{ hashFiles('cpp/**') }}
231+ restore-keys : jni-macos-
232+ - name : CMake
233+ run : |
234+ cmake \
235+ -S cpp \
236+ -B cpp.build \
237+ --preset=ninja-release-jni-macos \
238+ -DARROW_BUILD_TESTS=ON \
239+ -DCMAKE_INSTALL_PREFIX=$PWD/cpp.install
240+ - name : Build
241+ run : |
242+ cmake --build cpp.build
243+ - name : Install
244+ run : |
245+ cmake --install cpp.build
246+ - name : Test
247+ env :
248+ ARROW_TEST_DATA : ${{ github.workspace }}/testing/data
249+ PARQUET_TEST_DATA : ${{ github.workspace }}/cpp/submodules/parquet-testing/data
250+ run : |
251+ # MinIO is required
252+ exclude_tests="arrow-s3fs-test"
253+ # unstable
254+ exclude_tests="${exclude_tests}|arrow-acero-asof-join-node-test"
255+ exclude_tests="${exclude_tests}|arrow-acero-hash-join-node-test"
256+ ctest \
257+ --exclude-regex "${exclude_tests}" \
258+ --label-regex unittest \
259+ --output-on-failure \
260+ --parallel "$(sysctl -n hw.ncpu)" \
261+ --test-dir "cpp.build" \
262+ --timeout 300
263+ - name : Build example
264+ run : |
265+ cmake \
266+ -S cpp/examples/minimal_build/ \
267+ -B cpp/examples/minimal_build.build \
268+ -GNinja \
269+ -DCMAKE_INSTALL_PREFIX=$PWD/cpp.install
270+ cmake --build cpp/examples/minimal_build.build
271+ cd cpp/examples/minimal_build
272+ ../minimal_build.build/arrow-example
0 commit comments