@@ -330,9 +330,75 @@ jobs:
330330 cd cpp/examples/minimal_build
331331 ../minimal_build.build/arrow-example
332332
333- odbc :
333+ odbc-macos :
334334 needs : check-labels
335- name : ODBC
335+ name : ODBC ${{ matrix.architecture }} macOS ${{ matrix.macos-version }}
336+ runs-on : macos-${{ matrix.macos-version }}
337+ if : >-
338+ needs.check-labels.outputs.force == 'true' ||
339+ contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra') ||
340+ contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra: C++')
341+ timeout-minutes : 75
342+ strategy :
343+ fail-fast : false
344+ matrix :
345+ include :
346+ - architecture : AMD64
347+ macos-version : " 15-intel"
348+ - architecture : ARM64
349+ macos-version : " 14"
350+ env :
351+ ARROW_BUILD_TESTS : ON
352+ ARROW_FLIGHT_SQL_ODBC : ON
353+ ARROW_HOME : /tmp/local
354+ steps :
355+ - name : Checkout Arrow
356+ 357+ with :
358+ fetch-depth : 0
359+ submodules : recursive
360+ - name : Install Dependencies
361+ run : |
362+ brew bundle --file=cpp/Brewfile
363+ export LIBIODBC_DIR="$(brew --cellar libiodbc)/$(brew list --versions libiodbc | awk '{print $2}')"
364+ echo ODBC_INCLUDE_DIR="$LIBIODBC_DIR/include" >> $GITHUB_ENV
365+ echo ODBC_LIB_DIR="$LIBIODBC_DIR/lib" >> $GITHUB_ENV
366+ - name : Setup ccache
367+ run : |
368+ ci/scripts/ccache_setup.sh
369+ - name : ccache info
370+ id : ccache-info
371+ run : |
372+ echo "cache-dir=$(ccache --get-config cache_dir)" >> $GITHUB_OUTPUT
373+ - name : Cache ccache
374+ uses : actions/cache@v4
375+ with :
376+ path : ${{ steps.ccache-info.outputs.cache-dir }}
377+ key : cpp-ccache-macos-${{ matrix.macos-version }}-${{ hashFiles('cpp/**') }}
378+ restore-keys : cpp-ccache-macos-${{ matrix.macos-version }}-
379+ - name : Build
380+ run : |
381+ # Homebrew uses /usr/local as prefix. So packages
382+ # installed by Homebrew also use /usr/local/include. We
383+ # want to include headers for packages installed by
384+ # Homebrew as system headers to ignore warnings in them.
385+ # But "-isystem /usr/local/include" isn't used by CMake
386+ # because /usr/local/include is marked as the default
387+ # include path. So we disable -Werror to avoid build error
388+ # by warnings from packages installed by Homebrew.
389+ export BUILD_WARNING_LEVEL=PRODUCTION
390+ ci/scripts/cpp_build.sh $(pwd) $(pwd)/build
391+ - name : Test
392+ shell : bash
393+ run : |
394+ sudo sysctl -w kern.coredump=1
395+ sudo sysctl -w kern.corefile=/tmp/core.%N.%P
396+ ulimit -c unlimited # must enable within the same shell
397+ ci/scripts/cpp_test.sh $(pwd) $(pwd)/build
398+
399+ odbc-msvc :
400+ needs : check-labels
401+ name : ODBC Windows
336402 runs-on : windows-2022
337403 if : >-
338404 needs.check-labels.outputs.force == 'true' ||
@@ -443,6 +509,7 @@ jobs:
443509 - jni-linux
444510 - jni-macos
445511 - msvc-arm64
446- - odbc
512+ - odbc-macos
513+ - odbc-msvc
447514 uses : ./.github/workflows/report_ci.yml
448515 secrets : inherit
0 commit comments