From 31edf29c6cf95939625634c2008fbd8b33d29549 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Wed, 25 Jun 2025 13:27:38 +0200 Subject: [PATCH 01/28] Fetch doctest and sparrow --- CMakeLists.txt | 6 +++- cmake/external_dependencies.cmake | 58 +++++++++++++++++++++++++++++++ tests/CMakeLists.txt | 2 -- 3 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 cmake/external_dependencies.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index e9c3053..e26621a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,11 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_SCAN_FOR_MODULES OFF) include(CMakeDependentOption) +list(PREPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") +message(DEBUG "CMake module path: ${CMAKE_MODULE_PATH}") + +include(external_dependencies) + set(SPARROW_IPC_COMPILE_DEFINITIONS "" CACHE STRING "List of public compile definitions of the sparrow-ipc target") # Linter options @@ -111,7 +116,6 @@ target_include_directories(flatbuffers_interface INTERFACE ${FLATBUFFERS_GENERAT add_dependencies(flatbuffers_interface generate_flatbuffers_headers) find_package(FlatBuffers CONFIG REQUIRED) -find_package(sparrow CONFIG REQUIRED) add_library(sparrow-ipc ${SPARROW_IPC_LIBRARY_TYPE} ${SPARROW_IPC_SRC} ${SPARROW_IPC_HEADERS}) target_compile_definitions(sparrow-ipc PUBLIC ${SPARROW_IPC_COMPILE_DEFINITIONS}) diff --git a/cmake/external_dependencies.cmake b/cmake/external_dependencies.cmake new file mode 100644 index 0000000..2202798 --- /dev/null +++ b/cmake/external_dependencies.cmake @@ -0,0 +1,58 @@ +include(FetchContent) + +OPTION(FETCH_DEPENDENCIES_WITH_CMAKE "Fetch dependencies with CMake: Can be OFF, ON, or MISSING. If the latter, CMake will download only dependencies which are not previously found." OFF) +MESSAGE(STATUS "๐Ÿ”ง FETCH_DEPENDENCIES_WITH_CMAKE: ${FETCH_DEPENDENCIES_WITH_CMAKE}") + +if(FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "OFF") + set(FIND_PACKAGE_OPTIONS REQUIRED) +else() + set(FIND_PACKAGE_OPTIONS QUIET) +endif() + +if(NOT FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "ON") + find_package(sparrow CONFIG ${FIND_PACKAGE_OPTIONS}) +endif() + +if(FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "ON" OR FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "MISSING") + if(NOT sparrow_FOUND) + set(SPARROW_VERSION "0.9.0") + message(STATUS "๐Ÿ“ฆ Fetching sparrow ${SPARROW_VERSION}") + FetchContent_Declare( + sparrow + GIT_SHALLOW TRUE + GIT_REPOSITORY https://github.com/man-group/sparrow.git + GIT_TAG ${SPARROW_VERSION} + GIT_PROGRESS TRUE + SYSTEM + EXCLUDE_FROM_ALL) + FetchContent_MakeAvailable(sparrow) + list(PREPEND CMAKE_MODULE_PATH "${sparrow_SOURCE_DIR}/cmake") + message(STATUS "\tโœ… Fetched sparrow ${SPARROW_VERSION}") + else() + message(STATUS "๐Ÿ“ฆ sparrow found here: ${sparrow_DIR}") + endif() +endif() + +if(BUILD_TESTS) + if(NOT FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "ON") + find_package(doctest CONFIG ${FIND_PACKAGE_OPTIONS}) + endif() + if(FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "ON" OR FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "MISSING") + if(NOT doctest_FOUND) + set(DOCTEST_VERSION "v2.4.12") + message(STATUS "๐Ÿ“ฆ Fetching doctest ${DOCTEST_VERSION}") + FetchContent_Declare( + doctest + GIT_SHALLOW TRUE + GIT_REPOSITORY https://github.com/doctest/doctest.git + GIT_TAG ${DOCTEST_VERSION} + GIT_PROGRESS TRUE + SYSTEM + EXCLUDE_FROM_ALL) + FetchContent_MakeAvailable(doctest) + message(STATUS "\tโœ… Fetched doctest ${DOCTEST_VERSION}") + else() + message(STATUS "๐Ÿ“ฆ doctest found here: ${doctest_DIR}") + endif() + endif() +endif() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e761543..81c2e27 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,7 +1,5 @@ cmake_minimum_required(VERSION 3.28) -find_package(doctest CONFIG REQUIRED) - set(test_target "test_sparrow_ipc_lib") add_executable(${test_target} main.cpp test_primitive_array.cpp test_utils.cpp) From 0b6822f710289fcf9398381692ad3e6567a6e340 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Wed, 25 Jun 2025 13:36:38 +0200 Subject: [PATCH 02/28] Add fetch dependencies option to workflows --- .github/workflows/linux.yml | 2 ++ .github/workflows/osx.yml | 2 ++ .github/workflows/windows.yml | 2 ++ 3 files changed, 6 insertions(+) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 52ae953..64ac387 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -17,6 +17,7 @@ jobs: matrix: build_type: [Release, Debug] build_shared: [ON, OFF] + fetch_dependencies: [ON, OFF] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -33,6 +34,7 @@ jobs: -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ + -DFETCH_DEPENDENCIES_WITH_CMAKE=${{ matrix.fetch_dependencies }} \ -DBUILD_TESTS=ON cmake --build build/ --parallel - name: Run tests diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index cfb760f..cb57fbe 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -17,6 +17,7 @@ jobs: matrix: build_type: [Release, Debug] build_shared: [ON, OFF] + fetch_dependencies: [ON, OFF] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -33,6 +34,7 @@ jobs: -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ + -DFETCH_DEPENDENCIES_WITH_CMAKE=${{ matrix.fetch_dependencies }} \ -DBUILD_TESTS=ON cmake --build build/ --parallel - name: Run tests diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 3f57427..b562632 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -18,6 +18,7 @@ jobs: matrix: build_type: [Release, Debug] build_shared: [ON, OFF] + fetch_dependencies: [ON, OFF] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -35,6 +36,7 @@ jobs: -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% ^ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% ^ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ + -DFETCH_DEPENDENCIES_WITH_CMAKE=${{ matrix.fetch_dependencies }} ^ -DBUILD_TESTS=ON if %errorlevel% neq 0 exit /b %errorlevel% cmake --build build/ --parallel From 3d0bc00b366b345a5155c7fda28d1143c9326ce7 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Wed, 25 Jun 2025 16:40:28 +0200 Subject: [PATCH 03/28] Handle sparrow target and fetch from main branch --- CMakeLists.txt | 14 ++++++++++++-- cmake/external_dependencies.cmake | 12 +++++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e26621a..4e1ad54 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_SCAN_FOR_MODULES OFF) include(CMakeDependentOption) -list(PREPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") +list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") message(DEBUG "CMake module path: ${CMAKE_MODULE_PATH}") include(external_dependencies) @@ -132,8 +132,18 @@ target_compile_options(sparrow-ipc ) target_include_directories(sparrow-ipc PUBLIC ${SPARROW_IPC_INCLUDE_DIR} PRIVATE ${SPARROW_IPC_SOURCE_DIR} ) + target_link_libraries(sparrow-ipc PRIVATE flatbuffers_interface) -target_link_libraries(sparrow-ipc PUBLIC flatbuffers::flatbuffers sparrow::sparrow) +target_link_libraries(sparrow-ipc PUBLIC flatbuffers::flatbuffers) + +# Link sparrow depending on how it was found or fetched +if(TARGET sparrow) + target_link_libraries(sparrow-ipc PUBLIC sparrow) +elseif(TARGET sparrow::sparrow) + target_link_libraries(sparrow-ipc PUBLIC sparrow::sparrow) +else() + message(FATAL_ERROR "Could not find the sparrow target to link with.") +endif() add_dependencies(sparrow-ipc generate_flatbuffers_headers) diff --git a/cmake/external_dependencies.cmake b/cmake/external_dependencies.cmake index 2202798..0358518 100644 --- a/cmake/external_dependencies.cmake +++ b/cmake/external_dependencies.cmake @@ -15,19 +15,21 @@ endif() if(FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "ON" OR FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "MISSING") if(NOT sparrow_FOUND) - set(SPARROW_VERSION "0.9.0") - message(STATUS "๐Ÿ“ฆ Fetching sparrow ${SPARROW_VERSION}") + # Fetching from `main` while waiting for a new tag + # (https://github.com/man-group/sparrow/pull/463 needed) + # TODO Fetch last version when available + set(SPARROW_TAG main) + message(STATUS "๐Ÿ“ฆ Fetching sparrow ${SPARROW_TAG}") FetchContent_Declare( sparrow GIT_SHALLOW TRUE GIT_REPOSITORY https://github.com/man-group/sparrow.git - GIT_TAG ${SPARROW_VERSION} + GIT_TAG ${SPARROW_TAG} GIT_PROGRESS TRUE SYSTEM EXCLUDE_FROM_ALL) FetchContent_MakeAvailable(sparrow) - list(PREPEND CMAKE_MODULE_PATH "${sparrow_SOURCE_DIR}/cmake") - message(STATUS "\tโœ… Fetched sparrow ${SPARROW_VERSION}") + message(STATUS "\tโœ… Fetched sparrow ${SPARROW_TAG}") else() message(STATUS "๐Ÿ“ฆ sparrow found here: ${sparrow_DIR}") endif() From acec12f60325afd0dacceddcd72cd34d8d6c9a38 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Wed, 25 Jun 2025 18:07:08 +0200 Subject: [PATCH 04/28] Use different jobs to fetch dependencies --- .github/workflows/linux.yml | 36 ++++++++++++++++++++++++--- .github/workflows/osx.yml | 36 ++++++++++++++++++++++++--- .github/workflows/windows.yml | 41 ++++++++++++++++++++++++++++--- environment-dev-external-deps.yml | 9 +++++++ environment-dev.yml | 4 +-- 5 files changed, 114 insertions(+), 12 deletions(-) create mode 100644 environment-dev-external-deps.yml diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 64ac387..4240c66 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -11,13 +11,12 @@ defaults: shell: bash -l -eo pipefail {0} jobs: - build_linux: + linux_build_from_conda_forge: runs-on: ubuntu-latest strategy: matrix: build_type: [Release, Debug] build_shared: [ON, OFF] - fetch_dependencies: [ON, OFF] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -27,6 +26,8 @@ jobs: environment-file: ./environment-dev.yml environment-name: build_env cache-environment: true + - name: Install external dependencies + run: micromamba install -n build_env -y -f ./environment-dev-external-deps.yml - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja \ @@ -34,7 +35,36 @@ jobs: -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ - -DFETCH_DEPENDENCIES_WITH_CMAKE=${{ matrix.fetch_dependencies }} \ + -DBUILD_TESTS=ON + cmake --build build/ --parallel + - name: Run tests + run: | + cd build + ctest --output-on-failure + + linux_build_fetch_from_source: + runs-on: ubuntu-latest + strategy: + matrix: + build_type: [Release, Debug] + build_shared: [ON, OFF] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Create build environment + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: ./environment-dev.yml + environment-name: build_env + cache-environment: true + - name: Build sparrow-ipc + run: | + cmake -B build/ -G Ninja \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ + -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ + -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ + -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING \ -DBUILD_TESTS=ON cmake --build build/ --parallel - name: Run tests diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index cb57fbe..6372250 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -11,13 +11,12 @@ defaults: shell: bash -l -eo pipefail {0} jobs: - build_osx: + osx_build_from_conda_forge: runs-on: macos-latest strategy: matrix: build_type: [Release, Debug] build_shared: [ON, OFF] - fetch_dependencies: [ON, OFF] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -27,6 +26,8 @@ jobs: environment-file: ./environment-dev.yml environment-name: build_env cache-environment: true + - name: Install external dependencies + run: micromamba install -n build_env -y -f ./environment-dev-external-deps.yml - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja \ @@ -34,7 +35,36 @@ jobs: -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ - -DFETCH_DEPENDENCIES_WITH_CMAKE=${{ matrix.fetch_dependencies }} \ + -DBUILD_TESTS=ON + cmake --build build/ --parallel + - name: Run tests + run: | + cd build + ctest --output-on-failure + + osx_build_fetch_from_source: + runs-on: macos-latest + strategy: + matrix: + build_type: [Release, Debug] + build_shared: [ON, OFF] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Create build environment + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: ./environment-dev.yml + environment-name: build_env + cache-environment: true + - name: Build sparrow-ipc + run: | + cmake -B build/ -G Ninja \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ + -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ + -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ + -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING \ -DBUILD_TESTS=ON cmake --build build/ --parallel - name: Run tests diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index b562632..b69b807 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -12,13 +12,12 @@ defaults: shell: cmd /C call {0} jobs: - build_windows: + windows_build_from_conda_forge: runs-on: windows-latest strategy: matrix: build_type: [Release, Debug] build_shared: [ON, OFF] - fetch_dependencies: [ON, OFF] steps: - name: Checkout repository uses: actions/checkout@v4 @@ -29,6 +28,8 @@ jobs: environment-name: build_env cache-environment: true init-shell: cmd.exe + - name: Install external dependencies + run: micromamba install -n build_env -y -f ./environment-dev-external-deps.yml - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja ^ @@ -36,7 +37,41 @@ jobs: -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% ^ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% ^ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ - -DFETCH_DEPENDENCIES_WITH_CMAKE=${{ matrix.fetch_dependencies }} ^ + -DBUILD_TESTS=ON + if %errorlevel% neq 0 exit /b %errorlevel% + cmake --build build/ --parallel + if %errorlevel% neq 0 exit /b %errorlevel% + # TODO this is failing (to debug when dependencies can be fetched and built locally with debug mode) + #- name: Run tests + #run: | + #cd build + #ctest --output-on-failure + #if %errorlevel% neq 0 exit /b %errorlevel% + + windows_build_fetch_from_source: + runs-on: windows-latest + strategy: + matrix: + build_type: [Release, Debug] + build_shared: [ON, OFF] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Create build environment + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: ./environment-dev.yml + environment-name: build_env + cache-environment: true + init-shell: cmd.exe + - name: Build sparrow-ipc + run: | + cmake -B build/ -G Ninja ^ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} ^ + -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% ^ + -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% ^ + -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ + -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING ^ -DBUILD_TESTS=ON if %errorlevel% neq 0 exit /b %errorlevel% cmake --build build/ --parallel diff --git a/environment-dev-external-deps.yml b/environment-dev-external-deps.yml new file mode 100644 index 0000000..eac520f --- /dev/null +++ b/environment-dev-external-deps.yml @@ -0,0 +1,9 @@ +name: sparrow-ipc +channels: + - conda-forge +dependencies: + # Libraries dependencies + #- flatbuffers + - sparrow + # Tests + - doctest diff --git a/environment-dev.yml b/environment-dev.yml index 05b16b6..0d3ff38 100644 --- a/environment-dev.yml +++ b/environment-dev.yml @@ -7,8 +7,6 @@ dependencies: - make - ninja - cxx-compiler + # TODO remove to environment-dev-external-deps.yml after handling fetch # Libraries dependencies - flatbuffers - - sparrow - # Tests - - doctest From da5b5f709bd2d1fa04ee90db3dfa092f1d32aeca Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Thu, 26 Jun 2025 13:56:14 +0200 Subject: [PATCH 05/28] Force c++20 when building --- .github/workflows/windows.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index b69b807..e3e9fa3 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -36,6 +36,7 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} ^ -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% ^ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% ^ + -DCMAKE_CXX_STANDARD=20 ^ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ -DBUILD_TESTS=ON if %errorlevel% neq 0 exit /b %errorlevel% @@ -70,6 +71,7 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} ^ -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% ^ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% ^ + -DCMAKE_CXX_STANDARD=20 ^ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING ^ -DBUILD_TESTS=ON From 5d4ba21b834651f971ce70c6b0cade4380ac7167 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Thu, 26 Jun 2025 16:22:07 +0200 Subject: [PATCH 06/28] Add cxx settings/properties --- CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e1ad54..4b36050 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,9 @@ cmake_minimum_required(VERSION 3.28) project(sparrow-ipc CXX) -set(CMAKE_CXX_STANDARD 20) -set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_STANDARD 20 CACHE STRING "C++ Standard") +set(CMAKE_CXX_STANDARD_REQUIRED ON CACHE BOOL "C++ Standard Required") +set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_SCAN_FOR_MODULES OFF) include(CMakeDependentOption) From 772fc44159845b77cb543cccdb0b7e4c480811ca Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Thu, 26 Jun 2025 16:35:38 +0200 Subject: [PATCH 07/28] Add verbose --- .github/workflows/windows.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index e3e9fa3..206cc36 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -53,7 +53,7 @@ jobs: runs-on: windows-latest strategy: matrix: - build_type: [Release, Debug] + build_type: [Debug] # TODO add Release build_shared: [ON, OFF] steps: - name: Checkout repository @@ -74,6 +74,7 @@ jobs: -DCMAKE_CXX_STANDARD=20 ^ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING ^ + -DCMAKE_VERBOSE_MAKEFILE=ON ^^ -DBUILD_TESTS=ON if %errorlevel% neq 0 exit /b %errorlevel% cmake --build build/ --parallel From 7a5b08834cf5b4444395cd60819ba966b83882dc Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Thu, 26 Jun 2025 16:55:18 +0200 Subject: [PATCH 08/28] Change build tests option name (conflict) --- .github/workflows/linux.yml | 4 ++-- .github/workflows/osx.yml | 4 ++-- .github/workflows/windows.yml | 4 ++-- CMakeLists.txt | 6 +++--- cmake/external_dependencies.cmake | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 4240c66..686525a 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -35,7 +35,7 @@ jobs: -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ - -DBUILD_TESTS=ON + -DSPARROW_IPC_BUILD_TESTS=ON cmake --build build/ --parallel - name: Run tests run: | @@ -65,7 +65,7 @@ jobs: -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING \ - -DBUILD_TESTS=ON + -DSPARROW_IPC_BUILD_TESTS=ON cmake --build build/ --parallel - name: Run tests run: | diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 6372250..345eee2 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -35,7 +35,7 @@ jobs: -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ - -DBUILD_TESTS=ON + -DSPARROW_IPC_BUILD_TESTS=ON cmake --build build/ --parallel - name: Run tests run: | @@ -65,7 +65,7 @@ jobs: -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING \ - -DBUILD_TESTS=ON + -DSPARROW_IPC_BUILD_TESTS=ON cmake --build build/ --parallel - name: Run tests run: | diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 206cc36..9cd2cb1 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -38,7 +38,7 @@ jobs: -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% ^ -DCMAKE_CXX_STANDARD=20 ^ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ - -DBUILD_TESTS=ON + -DSPARROW_IPC_BUILD_TESTS=ON if %errorlevel% neq 0 exit /b %errorlevel% cmake --build build/ --parallel if %errorlevel% neq 0 exit /b %errorlevel% @@ -75,7 +75,7 @@ jobs: -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING ^ -DCMAKE_VERBOSE_MAKEFILE=ON ^^ - -DBUILD_TESTS=ON + -DSPARROW_IPC_BUILD_TESTS=ON if %errorlevel% neq 0 exit /b %errorlevel% cmake --build build/ --parallel if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b36050..9d078a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,8 +41,8 @@ else() list(APPEND SPARROW_IPC_COMPILE_DEFINITIONS SPARROW_IPC_STATIC_LIB) endif() -OPTION(BUILD_TESTS "Build sparrow-ipc test suite" OFF) -MESSAGE(STATUS "๐Ÿ”ง Build tests: ${BUILD_TESTS}") +OPTION(SPARROW_IPC_BUILD_TESTS "Build sparrow-ipc test suite" OFF) +MESSAGE(STATUS "๐Ÿ”ง Build tests: ${SPARROW_IPC_BUILD_TESTS}") set(SPARROW_IPC_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) set(SPARROW_IPC_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src) @@ -148,7 +148,7 @@ endif() add_dependencies(sparrow-ipc generate_flatbuffers_headers) -if(BUILD_TESTS) +if(SPARROW_IPC_BUILD_TESTS) message(STATUS "๐Ÿงช Create tests targets") enable_testing() add_subdirectory(tests) diff --git a/cmake/external_dependencies.cmake b/cmake/external_dependencies.cmake index 0358518..a66fb06 100644 --- a/cmake/external_dependencies.cmake +++ b/cmake/external_dependencies.cmake @@ -35,7 +35,7 @@ if(FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "ON" OR FETCH_DEPENDENCIES_WITH_CMAKE endif() endif() -if(BUILD_TESTS) +if(SPARROW_IPC_BUILD_TESTS) if(NOT FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "ON") find_package(doctest CONFIG ${FIND_PACKAGE_OPTIONS}) endif() From 5f1852f3220845484f438e6d2f69b31609e539ae Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Thu, 26 Jun 2025 17:39:21 +0200 Subject: [PATCH 09/28] Fix typo --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 9cd2cb1..b6db54b 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -74,7 +74,7 @@ jobs: -DCMAKE_CXX_STANDARD=20 ^ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING ^ - -DCMAKE_VERBOSE_MAKEFILE=ON ^^ + -DCMAKE_VERBOSE_MAKEFILE=ON ^ -DSPARROW_IPC_BUILD_TESTS=ON if %errorlevel% neq 0 exit /b %errorlevel% cmake --build build/ --parallel From 4a3ba8e4ee81466842bf754735659bc71b0c2dae Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Thu, 24 Jul 2025 17:54:12 +0200 Subject: [PATCH 10/28] wip --- .github/workflows/linux.yml | 2 +- .github/workflows/osx.yml | 2 +- .github/workflows/windows.yml | 2 +- .gitignore | 2 + CMakeLists.txt | 27 +++++------ cmake/external_dependencies.cmake | 81 ++++++++++++++++--------------- environment-dev-external-deps.yml | 9 ---- environment-dev.yml | 3 +- 8 files changed, 62 insertions(+), 66 deletions(-) delete mode 100644 environment-dev-external-deps.yml diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 686525a..ede17c0 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -27,7 +27,7 @@ jobs: environment-name: build_env cache-environment: true - name: Install external dependencies - run: micromamba install -n build_env -y -f ./environment-dev-external-deps.yml + run: micromamba install -n build_env -y -f ./environment-dev.yml - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja \ diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 345eee2..6897f24 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -27,7 +27,7 @@ jobs: environment-name: build_env cache-environment: true - name: Install external dependencies - run: micromamba install -n build_env -y -f ./environment-dev-external-deps.yml + run: micromamba install -n build_env -y -f ./environment-dev.yml - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja \ diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index b6db54b..bd9ef97 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -29,7 +29,7 @@ jobs: cache-environment: true init-shell: cmd.exe - name: Install external dependencies - run: micromamba install -n build_env -y -f ./environment-dev-external-deps.yml + run: micromamba install -n build_env -y -f ./environment-dev.yml - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja ^ diff --git a/.gitignore b/.gitignore index 8e81a66..a6780cd 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,5 @@ # Build directories /build*/ +.cache +.vscode diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d078a9..43164ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,16 +57,14 @@ set(SPARROW_IPC_SRC ${SPARROW_IPC_SOURCE_DIR}/utils.cpp ) -set(SCHEMA_DIR ${CMAKE_BINARY_DIR}/format) -set(FLATBUFFERS_GENERATED_DIR ${CMAKE_BINARY_DIR}/generated) +# find_program(FLATC_EXECUTABLE flatc) -find_program(FLATC_EXECUTABLE flatc) - -if(NOT FLATC_EXECUTABLE) - message(FATAL_ERROR "flatc not found. Please install Flatbuffers.") -endif() +# if(NOT FLATC_EXECUTABLE) +# message(FATAL_ERROR "flatc not found. Please install Flatbuffers.") +# endif() # Fetch schemas from apache arrow +set(SCHEMA_DIR ${CMAKE_BINARY_DIR}/format) set(SCHEMA_URLS "https://raw.githubusercontent.com/apache/arrow/refs/heads/main/format/File.fbs" "https://raw.githubusercontent.com/apache/arrow/refs/heads/main/format/Message.fbs" @@ -82,14 +80,17 @@ file(MAKE_DIRECTORY ${SCHEMA_DIR}) set(FLATBUFFERS_SCHEMAS "") foreach(url IN LISTS SCHEMA_URLS) get_filename_component(filename ${url} NAME) - message(STATUS "Downloading schema: ${url}") - file(DOWNLOAD ${url} ${SCHEMA_DIR}/${filename} - STATUS status - SHOW_PROGRESS) + if(NOT EXISTS ${SCHEMA_DIR}/${filename}) + message(STATUS "Downloading schema: ${url}") + file(DOWNLOAD ${url} ${SCHEMA_DIR}/${filename} + STATUS status) + endif() + list(APPEND FLATBUFFERS_SCHEMAS ${SCHEMA_DIR}/${filename}) endforeach() # Generate Flatbuffers C++ headers from the schemas +set(FLATBUFFERS_GENERATED_DIR ${CMAKE_BINARY_DIR}/generated) file(MAKE_DIRECTORY ${FLATBUFFERS_GENERATED_DIR}) # Generate output files list @@ -102,7 +103,7 @@ endforeach() add_custom_command( OUTPUT ${FLATBUFFERS_GENERATED_HEADERS} - COMMAND ${FLATC_EXECUTABLE} --cpp -o ${FLATBUFFERS_GENERATED_DIR} --cpp-std c++17 --scoped-enums ${FLATBUFFERS_SCHEMAS} + COMMAND flatc --cpp -o ${FLATBUFFERS_GENERATED_DIR} --cpp-std c++17 --scoped-enums ${FLATBUFFERS_SCHEMAS} DEPENDS ${FLATBUFFERS_SCHEMAS} COMMENT "Generating FlatBuffers C++ headers from schemas" ) @@ -116,8 +117,6 @@ add_library(flatbuffers_interface INTERFACE) target_include_directories(flatbuffers_interface INTERFACE ${FLATBUFFERS_GENERATED_DIR}) add_dependencies(flatbuffers_interface generate_flatbuffers_headers) -find_package(FlatBuffers CONFIG REQUIRED) - add_library(sparrow-ipc ${SPARROW_IPC_LIBRARY_TYPE} ${SPARROW_IPC_SRC} ${SPARROW_IPC_HEADERS}) target_compile_definitions(sparrow-ipc PUBLIC ${SPARROW_IPC_COMPILE_DEFINITIONS}) diff --git a/cmake/external_dependencies.cmake b/cmake/external_dependencies.cmake index a66fb06..61e8ba8 100644 --- a/cmake/external_dependencies.cmake +++ b/cmake/external_dependencies.cmake @@ -9,52 +9,57 @@ else() set(FIND_PACKAGE_OPTIONS QUIET) endif() -if(NOT FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "ON") - find_package(sparrow CONFIG ${FIND_PACKAGE_OPTIONS}) -endif() - -if(FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "ON" OR FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "MISSING") - if(NOT sparrow_FOUND) - # Fetching from `main` while waiting for a new tag - # (https://github.com/man-group/sparrow/pull/463 needed) - # TODO Fetch last version when available - set(SPARROW_TAG main) - message(STATUS "๐Ÿ“ฆ Fetching sparrow ${SPARROW_TAG}") - FetchContent_Declare( - sparrow - GIT_SHALLOW TRUE - GIT_REPOSITORY https://github.com/man-group/sparrow.git - GIT_TAG ${SPARROW_TAG} - GIT_PROGRESS TRUE - SYSTEM - EXCLUDE_FROM_ALL) - FetchContent_MakeAvailable(sparrow) - message(STATUS "\tโœ… Fetched sparrow ${SPARROW_TAG}") - else() - message(STATUS "๐Ÿ“ฆ sparrow found here: ${sparrow_DIR}") - endif() -endif() - -if(SPARROW_IPC_BUILD_TESTS) +function(find_package_or_fetch) + set(options) + set(oneValueArgs PACKAGE_NAME VERSION GIT_REPOSITORY TAG) + set(multiValueArgs) + cmake_parse_arguments(PARSE_ARGV 0 arg + "${options}" "${oneValueArgs}" "${multiValueArgs}" + ) if(NOT FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "ON") - find_package(doctest CONFIG ${FIND_PACKAGE_OPTIONS}) + find_package(${arg_PACKAGE_NAME} ${FIND_PACKAGE_OPTIONS}) endif() if(FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "ON" OR FETCH_DEPENDENCIES_WITH_CMAKE STREQUAL "MISSING") - if(NOT doctest_FOUND) - set(DOCTEST_VERSION "v2.4.12") - message(STATUS "๐Ÿ“ฆ Fetching doctest ${DOCTEST_VERSION}") + if(NOT ${arg_PACKAGE_NAME}_FOUND) + message(STATUS "๐Ÿ“ฆ Fetching ${arg_PACKAGE_NAME}") FetchContent_Declare( - doctest + ${arg_PACKAGE_NAME} GIT_SHALLOW TRUE - GIT_REPOSITORY https://github.com/doctest/doctest.git - GIT_TAG ${DOCTEST_VERSION} + GIT_REPOSITORY ${arg_GIT_REPOSITORY} + GIT_TAG ${arg_TAG} GIT_PROGRESS TRUE SYSTEM EXCLUDE_FROM_ALL) - FetchContent_MakeAvailable(doctest) - message(STATUS "\tโœ… Fetched doctest ${DOCTEST_VERSION}") + FetchContent_MakeAvailable(${arg_PACKAGE_NAME}) + message(STATUS "\tโœ… Fetched ${arg_PACKAGE_NAME}") else() - message(STATUS "๐Ÿ“ฆ doctest found here: ${doctest_DIR}") + message(STATUS "๐Ÿ“ฆ ${arg_PACKAGE_NAME} found here: ${arg_PACKAGE_NAME}_DIR") endif() endif() -endif() +endfunction() + +find_package_or_fetch( + PACKAGE_NAME sparrow + VERSION 1.0.0 + GIT_REPOSITORY https://github.com/man-group/sparrow.git + TAG 1.0.0 +) + +set(FLATBUFFERS_BUILD_TESTS OFF) +find_package_or_fetch( + PACKAGE_NAME FlatBuffers + VERSION v25.2.10 + GIT_REPOSITORY https://github.com/google/flatbuffers.git + TAG v25.2.10 +) +add_library(flatbuffers::flatbuffers ALIAS flatbuffers) +unset(FLATBUFFERS_BUILD_TESTS CACHE) + +if(SPARROW_IPC_BUILD_TESTS) + find_package_or_fetch( + PACKAGE_NAME doctest + VERSION v2.4.12 + GIT_REPOSITORY https://github.com/doctest/doctest.git + TAG v2.4.12 + ) +endif() \ No newline at end of file diff --git a/environment-dev-external-deps.yml b/environment-dev-external-deps.yml deleted file mode 100644 index eac520f..0000000 --- a/environment-dev-external-deps.yml +++ /dev/null @@ -1,9 +0,0 @@ -name: sparrow-ipc -channels: - - conda-forge -dependencies: - # Libraries dependencies - #- flatbuffers - - sparrow - # Tests - - doctest diff --git a/environment-dev.yml b/environment-dev.yml index 0d3ff38..1dfb0fd 100644 --- a/environment-dev.yml +++ b/environment-dev.yml @@ -4,9 +4,8 @@ channels: dependencies: # Build dependencies - cmake - - make - ninja - cxx-compiler - # TODO remove to environment-dev-external-deps.yml after handling fetch # Libraries dependencies - flatbuffers + - sparrow From 0bcf696cf6a9093e84530cfcf5e7f779794cd8fa Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 08:50:06 +0200 Subject: [PATCH 11/28] fix --- cmake/external_dependencies.cmake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmake/external_dependencies.cmake b/cmake/external_dependencies.cmake index 61e8ba8..727d44b 100644 --- a/cmake/external_dependencies.cmake +++ b/cmake/external_dependencies.cmake @@ -52,7 +52,10 @@ find_package_or_fetch( GIT_REPOSITORY https://github.com/google/flatbuffers.git TAG v25.2.10 ) -add_library(flatbuffers::flatbuffers ALIAS flatbuffers) + +if(NOT TARGET flatbuffers::flatbuffers) + add_library(flatbuffers::flatbuffers ALIAS flatbuffers) +endif() unset(FLATBUFFERS_BUILD_TESTS CACHE) if(SPARROW_IPC_BUILD_TESTS) From 3209c634fda063425a94afe5c4aa5c1b000fcc3d Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 09:02:57 +0200 Subject: [PATCH 12/28] try fix --- .github/workflows/linux.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index ede17c0..11ee511 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -33,7 +33,6 @@ jobs: cmake -B build/ -G Ninja \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ - -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DSPARROW_IPC_BUILD_TESTS=ON cmake --build build/ --parallel From 96c19c19231f3b8862d841c00dcc169440951f7b Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 09:04:21 +0200 Subject: [PATCH 13/28] fix --- environment-dev.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/environment-dev.yml b/environment-dev.yml index 1dfb0fd..c27e3eb 100644 --- a/environment-dev.yml +++ b/environment-dev.yml @@ -9,3 +9,4 @@ dependencies: # Libraries dependencies - flatbuffers - sparrow + - doctest From 030738921981fbef9c5cf4a86f5df29916f0297a Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 10:19:58 +0200 Subject: [PATCH 14/28] wip --- .github/workflows/linux.yml | 14 ++++++-------- .github/workflows/osx.yml | 14 ++++++-------- .github/workflows/windows.yml | 25 ++++--------------------- 3 files changed, 16 insertions(+), 37 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 11ee511..464450c 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -20,14 +20,17 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + - name: Create build environment uses: mamba-org/setup-micromamba@v2 with: environment-file: ./environment-dev.yml environment-name: build_env cache-environment: true + - name: Install external dependencies run: micromamba install -n build_env -y -f ./environment-dev.yml + - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja \ @@ -36,6 +39,7 @@ jobs: -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DSPARROW_IPC_BUILD_TESTS=ON cmake --build build/ --parallel + - name: Run tests run: | cd build @@ -50,22 +54,16 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Create build environment - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: ./environment-dev.yml - environment-name: build_env - cache-environment: true + - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ - -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING \ -DSPARROW_IPC_BUILD_TESTS=ON cmake --build build/ --parallel + - name: Run tests run: | cd build diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 6897f24..5220fc3 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -20,14 +20,17 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + - name: Create build environment uses: mamba-org/setup-micromamba@v2 with: environment-file: ./environment-dev.yml environment-name: build_env cache-environment: true + - name: Install external dependencies run: micromamba install -n build_env -y -f ./environment-dev.yml + - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja \ @@ -37,6 +40,7 @@ jobs: -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DSPARROW_IPC_BUILD_TESTS=ON cmake --build build/ --parallel + - name: Run tests run: | cd build @@ -51,22 +55,16 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Create build environment - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: ./environment-dev.yml - environment-name: build_env - cache-environment: true + - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ - -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING \ -DSPARROW_IPC_BUILD_TESTS=ON cmake --build build/ --parallel + - name: Run tests run: | cd build diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index bd9ef97..7d55cb1 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -21,6 +21,7 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + - name: Create build environment uses: mamba-org/setup-micromamba@v2 with: @@ -28,8 +29,10 @@ jobs: environment-name: build_env cache-environment: true init-shell: cmd.exe + - name: Install external dependencies run: micromamba install -n build_env -y -f ./environment-dev.yml + - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja ^ @@ -42,12 +45,6 @@ jobs: if %errorlevel% neq 0 exit /b %errorlevel% cmake --build build/ --parallel if %errorlevel% neq 0 exit /b %errorlevel% - # TODO this is failing (to debug when dependencies can be fetched and built locally with debug mode) - #- name: Run tests - #run: | - #cd build - #ctest --output-on-failure - #if %errorlevel% neq 0 exit /b %errorlevel% windows_build_fetch_from_source: runs-on: windows-latest @@ -58,19 +55,11 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Create build environment - uses: mamba-org/setup-micromamba@v2 - with: - environment-file: ./environment-dev.yml - environment-name: build_env - cache-environment: true - init-shell: cmd.exe + - name: Build sparrow-ipc run: | cmake -B build/ -G Ninja ^ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} ^ - -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% ^ - -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% ^ -DCMAKE_CXX_STANDARD=20 ^ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING ^ @@ -79,9 +68,3 @@ jobs: if %errorlevel% neq 0 exit /b %errorlevel% cmake --build build/ --parallel if %errorlevel% neq 0 exit /b %errorlevel% - # TODO this is failing (to debug when dependencies can be fetched and built locally with debug mode) - #- name: Run tests - #run: | - #cd build - #ctest --output-on-failure - #if %errorlevel% neq 0 exit /b %errorlevel% From 7d18012be1e0a0e8f4578fd9d4f823dbd235f8fc Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 10:50:50 +0200 Subject: [PATCH 15/28] wip --- .github/workflows/windows.yml | 5 +--- CMakeLists.txt | 42 ++++++++++++++----------------- cmake/external_dependencies.cmake | 4 +++ 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 7d55cb1..93e6309 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -39,7 +39,6 @@ jobs: -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} ^ -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% ^ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% ^ - -DCMAKE_CXX_STANDARD=20 ^ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ -DSPARROW_IPC_BUILD_TESTS=ON if %errorlevel% neq 0 exit /b %errorlevel% @@ -50,7 +49,7 @@ jobs: runs-on: windows-latest strategy: matrix: - build_type: [Debug] # TODO add Release + build_type: [Release, Debug] build_shared: [ON, OFF] steps: - name: Checkout repository @@ -60,10 +59,8 @@ jobs: run: | cmake -B build/ -G Ninja ^ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} ^ - -DCMAKE_CXX_STANDARD=20 ^ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING ^ - -DCMAKE_VERBOSE_MAKEFILE=ON ^ -DSPARROW_IPC_BUILD_TESTS=ON if %errorlevel% neq 0 exit /b %errorlevel% cmake --build build/ --parallel diff --git a/CMakeLists.txt b/CMakeLists.txt index 43164ba..d27a2db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,12 +57,6 @@ set(SPARROW_IPC_SRC ${SPARROW_IPC_SOURCE_DIR}/utils.cpp ) -# find_program(FLATC_EXECUTABLE flatc) - -# if(NOT FLATC_EXECUTABLE) -# message(FATAL_ERROR "flatc not found. Please install Flatbuffers.") -# endif() - # Fetch schemas from apache arrow set(SCHEMA_DIR ${CMAKE_BINARY_DIR}/format) set(SCHEMA_URLS @@ -118,33 +112,35 @@ target_include_directories(flatbuffers_interface INTERFACE ${FLATBUFFERS_GENERAT add_dependencies(flatbuffers_interface generate_flatbuffers_headers) add_library(sparrow-ipc ${SPARROW_IPC_LIBRARY_TYPE} ${SPARROW_IPC_SRC} ${SPARROW_IPC_HEADERS}) -target_compile_definitions(sparrow-ipc PUBLIC ${SPARROW_IPC_COMPILE_DEFINITIONS}) - -if(UNIX) - target_compile_options(sparrow-ipc PRIVATE "-fvisibility=hidden") -else() - target_compile_definitions(sparrow-ipc PRIVATE SPARROW_IPC_EXPORTS) -endif() target_compile_options(sparrow-ipc PRIVATE ${compile_options} ) -target_include_directories(sparrow-ipc PUBLIC ${SPARROW_IPC_INCLUDE_DIR} PRIVATE ${SPARROW_IPC_SOURCE_DIR} ) +target_compile_definitions(sparrow-ipc + PUBLIC + ${SPARROW_IPC_COMPILE_DEFINITIONS}) -target_link_libraries(sparrow-ipc PRIVATE flatbuffers_interface) -target_link_libraries(sparrow-ipc PUBLIC flatbuffers::flatbuffers) - -# Link sparrow depending on how it was found or fetched -if(TARGET sparrow) - target_link_libraries(sparrow-ipc PUBLIC sparrow) -elseif(TARGET sparrow::sparrow) - target_link_libraries(sparrow-ipc PUBLIC sparrow::sparrow) +if(UNIX) + target_compile_options(sparrow-ipc PRIVATE "-fvisibility=hidden") else() - message(FATAL_ERROR "Could not find the sparrow target to link with.") + target_compile_definitions(sparrow-ipc PRIVATE SPARROW_IPC_EXPORTS) endif() +target_include_directories(sparrow-ipc + PUBLIC + ${SPARROW_IPC_INCLUDE_DIR} + PRIVATE + ${SPARROW_IPC_SOURCE_DIR} ) + +target_link_libraries(sparrow-ipc + PUBLIC + sparrow::sparrow + flatbuffers::flatbuffers + PRIVATE + flatbuffers_interface) + add_dependencies(sparrow-ipc generate_flatbuffers_headers) if(SPARROW_IPC_BUILD_TESTS) diff --git a/cmake/external_dependencies.cmake b/cmake/external_dependencies.cmake index 727d44b..5336ce2 100644 --- a/cmake/external_dependencies.cmake +++ b/cmake/external_dependencies.cmake @@ -45,6 +45,10 @@ find_package_or_fetch( TAG 1.0.0 ) +if(NOT TARGET sparrow::sparrow) + add_library(sparrow::sparrow ALIAS sparrow) +endif() + set(FLATBUFFERS_BUILD_TESTS OFF) find_package_or_fetch( PACKAGE_NAME FlatBuffers From 4cb04f1d7a8581eefa2132cb7de0e84424afb119 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 11:20:57 +0200 Subject: [PATCH 16/28] fix --- .github/workflows/osx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 5220fc3..edf8e08 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -12,7 +12,7 @@ defaults: jobs: osx_build_from_conda_forge: - runs-on: macos-latest + runs-on: macos-15 strategy: matrix: build_type: [Release, Debug] From de9a213e1238728b1c87e1831f2358ea9356e430 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:10:17 +0200 Subject: [PATCH 17/28] wip --- .github/workflows/linux.yml | 57 ++++++++++++++++++++------------- .github/workflows/osx.yml | 59 +++++++++++++++++++++-------------- .github/workflows/windows.yml | 57 +++++++++++++++++++++------------ tests/CMakeLists.txt | 20 ++++++++++++ 4 files changed, 128 insertions(+), 65 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 464450c..2940937 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -31,19 +31,28 @@ jobs: - name: Install external dependencies run: micromamba install -n build_env -y -f ./environment-dev.yml - - name: Build sparrow-ipc + - name: Configure using cmake run: | - cmake -B build/ -G Ninja \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ - -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ - -DSPARROW_IPC_BUILD_TESTS=ON - cmake --build build/ --parallel + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ + -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% \ + -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ + -DSPARROW_IPC_BUILD_TESTS=ON \ + -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING + + - name: Build sparrow-ipc + working-directory: build + run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + + - name: Build tests + working-directory: build + run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib - name: Run tests - run: | - cd build - ctest --output-on-failure + working-directory: build + run: cmake --build . --config ${{matrix.config}} --target run_tests_with_junit_report + linux_build_fetch_from_source: runs-on: ubuntu-latest @@ -55,16 +64,22 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Build sparrow-ipc + - name: Configure using cmake run: | - cmake -B build/ -G Ninja \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ - -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING \ - -DSPARROW_IPC_BUILD_TESTS=ON - cmake --build build/ --parallel - + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ + -DSPARROW_IPC_BUILD_TESTS=ON \ + -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING + + - name: Build sparrow-ipc + working-directory: build + run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + + - name: Build tests + working-directory: build + run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib + - name: Run tests - run: | - cd build - ctest --output-on-failure + working-directory: build + run: cmake --build . --config ${{matrix.config}} --target run_tests_with_junit_report diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index edf8e08..d4cc473 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -28,23 +28,27 @@ jobs: environment-name: build_env cache-environment: true - - name: Install external dependencies - run: micromamba install -n build_env -y -f ./environment-dev.yml + - name: Configure using cmake + run: | + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ + -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% \ + -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ + -DSPARROW_IPC_BUILD_TESTS=ON - name: Build sparrow-ipc - run: | - cmake -B build/ -G Ninja \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX \ - -DCMAKE_PREFIX_PATH=$CONDA_PREFIX \ - -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ - -DSPARROW_IPC_BUILD_TESTS=ON - cmake --build build/ --parallel - + working-directory: build + run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + + - name: Build tests + working-directory: build + run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib + - name: Run tests - run: | - cd build - ctest --output-on-failure + working-directory: build + run: cmake --build . --config ${{matrix.config}} --target run_tests_with_junit_report + osx_build_fetch_from_source: runs-on: macos-latest @@ -56,16 +60,23 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Build sparrow-ipc + - name: Configure using cmake run: | - cmake -B build/ -G Ninja \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ - -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING \ - -DSPARROW_IPC_BUILD_TESTS=ON - cmake --build build/ --parallel + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ + -DSPARROW_IPC_BUILD_TESTS=ON \ + -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING + + - name: Build sparrow-ipc + working-directory: build + run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + + - name: Build tests + working-directory: build + run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib - name: Run tests - run: | - cd build - ctest --output-on-failure + working-directory: build + run: cmake --build . --config ${{matrix.config}} --target run_tests_with_junit_report + diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 93e6309..c2527b0 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -30,20 +30,28 @@ jobs: cache-environment: true init-shell: cmd.exe - - name: Install external dependencies - run: micromamba install -n build_env -y -f ./environment-dev.yml + - name: Configure using cmake + run: | + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ + -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% \ + -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ + -DSPARROW_IPC_BUILD_TESTS=ON - name: Build sparrow-ipc + working-directory: build + run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + + - name: Build tests + working-directory: build + run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib + + - name: Run tests + working-directory: build run: | - cmake -B build/ -G Ninja ^ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} ^ - -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% ^ - -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% ^ - -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ - -DSPARROW_IPC_BUILD_TESTS=ON - if %errorlevel% neq 0 exit /b %errorlevel% - cmake --build build/ --parallel - if %errorlevel% neq 0 exit /b %errorlevel% + cmake --build . --config ${{matrix.config}} --target run_tests + windows_build_fetch_from_source: runs-on: windows-latest @@ -55,13 +63,22 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Build sparrow-ipc + - name: Configure using cmake run: | - cmake -B build/ -G Ninja ^ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} ^ - -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} ^ - -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING ^ - -DSPARROW_IPC_BUILD_TESTS=ON - if %errorlevel% neq 0 exit /b %errorlevel% - cmake --build build/ --parallel - if %errorlevel% neq 0 exit /b %errorlevel% + cmake -G Ninja \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ + -DSPARROW_IPC_BUILD_TESTS=ON \ + -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING + + - name: Build sparrow-ipc + working-directory: build + run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + + - name: Build tests + working-directory: build + run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib + + - name: Run tests + working-directory: build + run: cmake --build . --config ${{matrix.config}} --target run_tests_with_junit_report diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 81c2e27..189c225 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,3 +15,23 @@ target_include_directories(${test_target} ) add_dependencies(${test_target} generate_flatbuffers_headers) add_test(NAME sparrow-ipc-tests COMMAND ${test_target}) + +add_custom_target(run_tests + COMMAND ${test_target} + DEPENDS + ${test_target} + COMMENT "Running tests" + USES_TERMINAL +) + +set_target_properties(run_tests PROPERTIES FOLDER "Tests utilities") + +set(JUNIT_REPORT_FILE_DOCTEST ${CMAKE_CURRENT_BINARY_DIR}/test_sparrow-ipc_lib_report_doctest.xml) + +add_custom_target(run_tests_with_junit_report + COMMAND ${test_target} --reporters=junit --out=${JUNIT_REPORT_FILE_DOCTEST} --no-path-filenames=true # TODO: use better junit as in sparrow + DEPENDS + ${test_target} + COMMENT "Running tests with JUnit reports saved to: ${JUNIT_REPORT_FILE_DOCTEST}" + USES_TERMINAL +) From f5c2c5ee13151993d4335235b2f1c4eea9c27ed8 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:11:57 +0200 Subject: [PATCH 18/28] WIP --- .github/workflows/linux.yml | 2 ++ .github/workflows/osx.yml | 2 ++ .github/workflows/windows.yml | 2 ++ tests/CMakeLists.txt | 2 ++ 4 files changed, 8 insertions(+) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 2940937..642c2eb 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -34,6 +34,7 @@ jobs: - name: Configure using cmake run: | cmake -G Ninja \ + -Bbuild \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% \ @@ -67,6 +68,7 @@ jobs: - name: Configure using cmake run: | cmake -G Ninja \ + -Bbuild \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DSPARROW_IPC_BUILD_TESTS=ON \ diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index d4cc473..1b7f975 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -31,6 +31,7 @@ jobs: - name: Configure using cmake run: | cmake -G Ninja \ + -Bbuild \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% \ @@ -63,6 +64,7 @@ jobs: - name: Configure using cmake run: | cmake -G Ninja \ + -Bbuild \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DSPARROW_IPC_BUILD_TESTS=ON \ diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index c2527b0..f7958d8 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -33,6 +33,7 @@ jobs: - name: Configure using cmake run: | cmake -G Ninja \ + -Bbuild \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% \ @@ -66,6 +67,7 @@ jobs: - name: Configure using cmake run: | cmake -G Ninja \ + -Bbuild \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DSPARROW_IPC_BUILD_TESTS=ON \ diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 189c225..8c0aa0a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -35,3 +35,5 @@ add_custom_target(run_tests_with_junit_report COMMENT "Running tests with JUnit reports saved to: ${JUNIT_REPORT_FILE_DOCTEST}" USES_TERMINAL ) + +set_target_properties(run_tests_with_junit_report PROPERTIES FOLDER "Tests utilities") From 450b2678a5bd0fbf0eddee6a5e63c784583517a2 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:12:24 +0200 Subject: [PATCH 19/28] fix --- .github/workflows/osx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 1b7f975..3cedd5b 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -28,7 +28,7 @@ jobs: environment-name: build_env cache-environment: true - - name: Configure using cmake + - name: Configure using cmake run: | cmake -G Ninja \ -Bbuild \ From d9bcd5595845b68e80365011a44827651445479d Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:12:55 +0200 Subject: [PATCH 20/28] fix --- .github/workflows/osx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 3cedd5b..2ec3f4b 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -61,7 +61,7 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Configure using cmake + - name: Configure using cmake run: | cmake -G Ninja \ -Bbuild \ From 45b57f6d9a650e53e9a715af112bb5ffa461cdfd Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:17:20 +0200 Subject: [PATCH 21/28] fix --- .github/workflows/linux.yml | 13 ++++++------- .github/workflows/osx.yml | 14 ++++++-------- .github/workflows/windows.yml | 13 ++++++------- 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 642c2eb..d020737 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -44,16 +44,15 @@ jobs: - name: Build sparrow-ipc working-directory: build - run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + run: cmake --build . --target sparrow-ipc - name: Build tests working-directory: build - run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib + run: cmake --build . --target test_sparrow_ipc_lib - name: Run tests working-directory: build - run: cmake --build . --config ${{matrix.config}} --target run_tests_with_junit_report - + run: cmake --build . --target run_tests_with_junit_report linux_build_fetch_from_source: runs-on: ubuntu-latest @@ -76,12 +75,12 @@ jobs: - name: Build sparrow-ipc working-directory: build - run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + run: cmake --build . --target sparrow-ipc - name: Build tests working-directory: build - run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib + run: cmake --build . --target test_sparrow_ipc_lib - name: Run tests working-directory: build - run: cmake --build . --config ${{matrix.config}} --target run_tests_with_junit_report + run: cmake --build . --target run_tests_with_junit_report diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 2ec3f4b..e9f0f9d 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -40,16 +40,15 @@ jobs: - name: Build sparrow-ipc working-directory: build - run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + run: cmake --build . --target sparrow-ipc - name: Build tests working-directory: build - run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib + run: cmake --build . --target test_sparrow_ipc_lib - name: Run tests working-directory: build - run: cmake --build . --config ${{matrix.config}} --target run_tests_with_junit_report - + run: cmake --build . --target run_tests_with_junit_report osx_build_fetch_from_source: runs-on: macos-latest @@ -72,13 +71,12 @@ jobs: - name: Build sparrow-ipc working-directory: build - run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + run: cmake --build . --target sparrow-ipc - name: Build tests working-directory: build - run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib + run: cmake --build . --target test_sparrow_ipc_lib - name: Run tests working-directory: build - run: cmake --build . --config ${{matrix.config}} --target run_tests_with_junit_report - + run: cmake --build . --target run_tests_with_junit_report diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index f7958d8..8f852e2 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -42,17 +42,16 @@ jobs: - name: Build sparrow-ipc working-directory: build - run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + run: cmake --build . --target sparrow-ipc - name: Build tests working-directory: build - run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib + run: cmake --build . --target test_sparrow_ipc_lib - name: Run tests working-directory: build run: | - cmake --build . --config ${{matrix.config}} --target run_tests - + cmake --build . --target run_tests windows_build_fetch_from_source: runs-on: windows-latest @@ -75,12 +74,12 @@ jobs: - name: Build sparrow-ipc working-directory: build - run: cmake --build . --config ${{matrix.build_type}} --target sparrow-ipc + run: cmake --build . --target sparrow-ipc - name: Build tests working-directory: build - run: cmake --build . --config ${{matrix.config}} --target test_sparrow_ipc_lib + run: cmake --build . --target test_sparrow_ipc_lib - name: Run tests working-directory: build - run: cmake --build . --config ${{matrix.config}} --target run_tests_with_junit_report + run: cmake --build . --target run_tests_with_junit_report From ae02fdad4edb4e54f60371662e442257f7da2e66 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:29:30 +0200 Subject: [PATCH 22/28] try fix --- .github/workflows/osx.yml | 5 +++++ .github/workflows/windows.yml | 6 ++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index e9f0f9d..8e05a68 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -21,6 +21,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Select XCode version + run: | + sudo xcode-select --switch /Applications/Xcode_16.4.app/Contents/Developer + xcodebuild -version + - name: Create build environment uses: mamba-org/setup-micromamba@v2 with: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 8f852e2..e95e3a6 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -32,8 +32,7 @@ jobs: - name: Configure using cmake run: | - cmake -G Ninja \ - -Bbuild \ + cmake -S ./ -B ./build \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% \ @@ -65,8 +64,7 @@ jobs: - name: Configure using cmake run: | - cmake -G Ninja \ - -Bbuild \ + cmake -S ./ -B ./build \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ -DSPARROW_IPC_BUILD_TESTS=ON \ From e41db0c1b3d4b410ba0e949f5f5843710019ff78 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:33:58 +0200 Subject: [PATCH 23/28] fix --- .github/workflows/osx.yml | 5 +++++ .github/workflows/windows.yml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 8e05a68..445a407 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -65,6 +65,11 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Select XCode version + run: | + sudo xcode-select --switch /Applications/Xcode_16.4.app/Contents/Developer + xcodebuild -version + - name: Configure using cmake run: | cmake -G Ninja \ diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index e95e3a6..7d5e7f1 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -9,7 +9,7 @@ on: defaults: run: # micromamba activation - shell: cmd /C call {0} + shell: bash -e -l {0} jobs: windows_build_from_conda_forge: From 2bbbd7e40977b7bfda0c5a5911e03f99dbe3f60a Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:43:17 +0200 Subject: [PATCH 24/28] fix --- .github/workflows/osx.yml | 2 +- .github/workflows/windows.yml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 445a407..7d0b8fb 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -56,7 +56,7 @@ jobs: run: cmake --build . --target run_tests_with_junit_report osx_build_fetch_from_source: - runs-on: macos-latest + runs-on: macos-15 strategy: matrix: build_type: [Release, Debug] diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 7d5e7f1..73768b2 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -8,7 +8,6 @@ on: defaults: run: - # micromamba activation shell: bash -e -l {0} jobs: @@ -27,8 +26,8 @@ jobs: with: environment-file: ./environment-dev.yml environment-name: build_env + init-shell: bash cache-environment: true - init-shell: cmd.exe - name: Configure using cmake run: | From f9d53a82e13a3857cfe2123324b76072a51ba289 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 15:00:46 +0200 Subject: [PATCH 25/28] wip --- cmake/external_dependencies.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/external_dependencies.cmake b/cmake/external_dependencies.cmake index 5336ce2..742a3c9 100644 --- a/cmake/external_dependencies.cmake +++ b/cmake/external_dependencies.cmake @@ -38,6 +38,7 @@ function(find_package_or_fetch) endif() endfunction() +set(SPARROW_BUILD_SHARED ${SPARROW_IPC_BUILD_SHARED}) find_package_or_fetch( PACKAGE_NAME sparrow VERSION 1.0.0 @@ -50,6 +51,7 @@ if(NOT TARGET sparrow::sparrow) endif() set(FLATBUFFERS_BUILD_TESTS OFF) +set(FLATBUFFERS_BUILD_SHAREDLIB ${SPARROW_IPC_BUILD_SHARED}) find_package_or_fetch( PACKAGE_NAME FlatBuffers VERSION v25.2.10 From 4a7e1d1a032ba56a86b022a9c0f70ce1876fadbf Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Tue, 19 Aug 2025 15:33:37 +0200 Subject: [PATCH 26/28] Fix --- tests/CMakeLists.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8c0aa0a..7dafea2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -3,11 +3,26 @@ cmake_minimum_required(VERSION 3.28) set(test_target "test_sparrow_ipc_lib") add_executable(${test_target} main.cpp test_primitive_array.cpp test_utils.cpp) + target_link_libraries(${test_target} PRIVATE sparrow-ipc doctest::doctest ) + +if(WIN32) + add_custom_command( + TARGET ${test_target} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + "$" + "$" + COMMAND ${CMAKE_COMMAND} -E copy + "$" + "$" + COMMENT "Copying sparrow and sparrow-ipc DLLs to executable directory" + ) +endif() + target_include_directories(${test_target} PRIVATE ${CMAKE_BINARY_DIR}/generated From b514537f2bff7f7f79f0ef126b33e51fed2ae7a2 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Tue, 19 Aug 2025 15:37:24 +0200 Subject: [PATCH 27/28] fix --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7dafea2..eafa5d7 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,7 +14,7 @@ if(WIN32) add_custom_command( TARGET ${test_target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy - "$" + "$" "$" COMMAND ${CMAKE_COMMAND} -E copy "$" From d537b05b52fe3ac688935adaaed05664a99d0086 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Tue, 19 Aug 2025 16:18:46 +0200 Subject: [PATCH 28/28] Fix --- .github/workflows/linux.yml | 6 +----- .github/workflows/osx.yml | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index d020737..9be6d73 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -28,9 +28,6 @@ jobs: environment-name: build_env cache-environment: true - - name: Install external dependencies - run: micromamba install -n build_env -y -f ./environment-dev.yml - - name: Configure using cmake run: | cmake -G Ninja \ @@ -39,8 +36,7 @@ jobs: -DCMAKE_INSTALL_PREFIX=%CONDA_PREFIX% \ -DCMAKE_PREFIX_PATH=%CONDA_PREFIX% \ -DSPARROW_IPC_BUILD_SHARED=${{ matrix.build_shared }} \ - -DSPARROW_IPC_BUILD_TESTS=ON \ - -DFETCH_DEPENDENCIES_WITH_CMAKE=MISSING + -DSPARROW_IPC_BUILD_TESTS=ON - name: Build sparrow-ipc working-directory: build diff --git a/.github/workflows/osx.yml b/.github/workflows/osx.yml index 7d0b8fb..ea4c739 100644 --- a/.github/workflows/osx.yml +++ b/.github/workflows/osx.yml @@ -12,7 +12,7 @@ defaults: jobs: osx_build_from_conda_forge: - runs-on: macos-15 + runs-on: macos-latest strategy: matrix: build_type: [Release, Debug] @@ -56,7 +56,7 @@ jobs: run: cmake --build . --target run_tests_with_junit_report osx_build_fetch_from_source: - runs-on: macos-15 + runs-on: macos-latest strategy: matrix: build_type: [Release, Debug]