diff --git a/.github/workflows/check_cpp.yml b/.github/workflows/check_cpp.yml new file mode 100644 index 00000000..7117f0e1 --- /dev/null +++ b/.github/workflows/check_cpp.yml @@ -0,0 +1,45 @@ +name: Check C++ Code + +on: + push: + branches: [ main ] + paths: + - 'cpp/**' + pull_request: + branches: [ main ] + paths: + - 'cpp/**' + workflow_dispatch: {} + +env: + # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) + BUILD_TYPE: Debug + +jobs: + build: + name: Check C++ Code + timeout-minutes: 30 + + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v4 + + - name: Add Arrow remote package repository + run: >- + wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb && + sudo apt install ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb + + - name: Install Dependencies + run: >- + sudo apt update && + sudo apt install libarrow-dev libarrow-flight-dev libarrow-flight-sql-dev sqlite3 libboost-all-dev + + - name: Configure Project using CMake + working-directory: ${{github.workspace}}/cpp + run: cmake -B ${{github.workspace}}/cpp/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + + - name: Compile Project + working-directory: ${{github.workspace}}/cpp/build + run: make -j + timeout-minutes: 15 diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 004036d4..95d7fd67 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -11,18 +11,10 @@ project(brad) find_package(Arrow REQUIRED) find_package(ArrowFlight REQUIRED) find_package(ArrowFlightSql REQUIRED) - -find_package(gflags REQUIRED) - find_package(SQLite3 REQUIRED) +find_package(Boost REQUIRED) -include(FetchContent) -FetchContent_Declare( - pybind11 - GIT_REPOSITORY https://github.com/pybind/pybind11.git - GIT_TAG v2.11.1 -) -FetchContent_MakeAvailable(pybind11) +add_subdirectory(third_party) add_library(brad_server_lib OBJECT server/brad_server_simple.cc @@ -60,7 +52,8 @@ target_link_libraries(flight_sql_example_server PRIVATE ArrowFlightSql::arrow_flight_sql_shared PRIVATE sqlite_server_lib gflags - ${SQLite3_LIBRARIES}) + ${SQLite3_LIBRARIES} + ${Boost_LIBRARIES}) add_executable(flight_sql_brad_server flight_sql_brad_server.cc) target_link_libraries(flight_sql_brad_server diff --git a/cpp/server/brad_server_simple.cc b/cpp/server/brad_server_simple.cc index d9b4d944..a2d69902 100644 --- a/cpp/server/brad_server_simple.cc +++ b/cpp/server/brad_server_simple.cc @@ -1,7 +1,5 @@ #include "brad_server_simple.h" -#define BOOST_NO_CXX98_FUNCTION_BASE // ARROW-17805 -#include #include #include #include diff --git a/cpp/third_party/CMakeLists.txt b/cpp/third_party/CMakeLists.txt new file mode 100644 index 00000000..002e0b50 --- /dev/null +++ b/cpp/third_party/CMakeLists.txt @@ -0,0 +1,15 @@ +include(FetchContent) + +FetchContent_Declare( + pybind11 + GIT_REPOSITORY https://github.com/pybind/pybind11.git + GIT_TAG v2.11.1 +) + +FetchContent_Declare( + gflags + GIT_REPOSITORY https://github.com/gflags/gflags + GIT_TAG v2.2.2 +) + +FetchContent_MakeAvailable(pybind11 gflags)