diff --git a/.github/workflows/cpp.yml b/.github/workflows/cpp.yml index 7982bec4af6..6486ce6667f 100644 --- a/.github/workflows/cpp.yml +++ b/.github/workflows/cpp.yml @@ -194,8 +194,6 @@ jobs: ARROW_BUILD_TESTS: ON ARROW_DATASET: ON ARROW_FLIGHT: ON - ARROW_FLIGHT_SQL: ON - ARROW_FLIGHT_SQL_ODBC: ON ARROW_GANDIVA: ON ARROW_GCS: ON ARROW_HDFS: ON @@ -232,9 +230,6 @@ jobs: brew uninstall pkg-config || : brew uninstall pkg-config@0.29.2 || : brew bundle --file=cpp/Brewfile - export LIBIODBC_DIR="$(brew --cellar libiodbc)/$(brew list --versions libiodbc | awk '{print $2}')" - echo ODBC_INCLUDE_DIR="$LIBIODBC_DIR/include" >> $GITHUB_ENV - echo ODBC_LIB_DIR="$LIBIODBC_DIR/lib" >> $GITHUB_ENV - name: Install MinIO run: | $(brew --prefix bash)/bin/bash \ @@ -262,20 +257,20 @@ jobs: restore-keys: cpp-ccache-macos-${{ matrix.macos-version }}- - name: Build run: | - # Homebrew uses /usr/local as prefix. So packages - # installed by Homebrew also use /usr/local/include. We - # want to include headers for packages installed by - # Homebrew as system headers to ignore warnings in them. - # But "-isystem /usr/local/include" isn't used by CMake - # because /usr/local/include is marked as the default - # include path. So we disable -Werror to avoid build error - # by warnings from packages installed by Homebrew. - export BUILD_WARNING_LEVEL=PRODUCTION + if [ "${{ matrix.macos-version }}" = "15-intel" ]; then + # This is a workaround. + # + # Homebrew uses /usr/local as prefix. So packages + # installed by Homebrew also use /usr/local/include. We + # want to include headers for packages installed by + # Homebrew as system headers to ignore warnings in them. + # But "-isystem /usr/local/include" isn't used by CMake + # because /usr/local/include is marked as the default + # include path. So we disable -Werror to avoid build error + # by warnings from packages installed by Homebrew. + export BUILD_WARNING_LEVEL=PRODUCTION + fi ci/scripts/cpp_build.sh $(pwd) $(pwd)/build - - name: Register Flight SQL ODBC Driver - run: | - chmod +x cpp/src/arrow/flight/sql/odbc/install/mac/install_odbc.sh - sudo cpp/src/arrow/flight/sql/odbc/install/mac/install_odbc.sh $(pwd)/build/cpp/debug/libarrow_flight_sql_odbc.dylib - name: Test shell: bash run: | diff --git a/.github/workflows/cpp_odbc.yml b/.github/workflows/cpp_odbc.yml index b7d2afc683d..e4cfacb7f88 100644 --- a/.github/workflows/cpp_odbc.yml +++ b/.github/workflows/cpp_odbc.yml @@ -178,3 +178,65 @@ jobs: with: name: flight-sql-odbc-msi-installer path: ${{ github.workspace }}\build\cpp\Apache Arrow Flight SQL ODBC-1.0.0-win64.msi + macos: + name: ${{ matrix.architecture }} macOS ${{ matrix.macos-version }} C++ + runs-on: macos-${{ matrix.macos-version }} + if: ${{ !contains(github.event.pull_request.title, 'WIP') }} + timeout-minutes: 75 + strategy: + fail-fast: false + matrix: + include: + - architecture: AMD64 + macos-version: "15-intel" + - architecture: ARM64 + macos-version: "14" + env: + ARROW_BUILD_TESTS: ON + ARROW_FLIGHT_SQL_ODBC: ON + ARROW_HOME: /tmp/local + steps: + - name: Checkout Arrow + uses: actions/checkout@v6.0.0 + with: + fetch-depth: 0 + submodules: recursive + - name: Install Dependencies + run: | + brew bundle --file=cpp/Brewfile + export LIBIODBC_DIR="$(brew --cellar libiodbc)/$(brew list --versions libiodbc | awk '{print $2}')" + echo ODBC_INCLUDE_DIR="$LIBIODBC_DIR/include" >> $GITHUB_ENV + echo ODBC_LIB_DIR="$LIBIODBC_DIR/lib" >> $GITHUB_ENV + - name: Setup ccache + run: | + ci/scripts/ccache_setup.sh + - name: ccache info + id: ccache-info + run: | + echo "cache-dir=$(ccache --get-config cache_dir)" >> $GITHUB_OUTPUT + - name: Cache ccache + uses: actions/cache@v4 + with: + path: ${{ steps.ccache-info.outputs.cache-dir }} + key: cpp-ccache-macos-${{ matrix.macos-version }}-${{ hashFiles('cpp/**') }} + restore-keys: cpp-ccache-macos-${{ matrix.macos-version }}- + - name: Build + run: | + # Homebrew uses /usr/local as prefix. So packages + # installed by Homebrew also use /usr/local/include. We + # want to include headers for packages installed by + # Homebrew as system headers to ignore warnings in them. + # But "-isystem /usr/local/include" isn't used by CMake + # because /usr/local/include is marked as the default + # include path. So we disable -Werror to avoid build error + # by warnings from packages installed by Homebrew. + export BUILD_WARNING_LEVEL=PRODUCTION + ci/scripts/cpp_build.sh $(pwd) $(pwd)/build + - name: Register Flight SQL ODBC Driver + run: | + chmod +x cpp/src/arrow/flight/sql/odbc/install/mac/install_odbc.sh + sudo cpp/src/arrow/flight/sql/odbc/install/mac/install_odbc.sh $(pwd)/build/cpp/debug/libarrow_flight_sql_odbc.dylib + - name: Test + shell: bash + run: | + ci/scripts/cpp_test.sh $(pwd) $(pwd)/build