From bcb1313f1f1faa8b28ebd1b4b12d3244ee52f8e5 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Wed, 25 Jun 2025 13:27:38 +0200 Subject: [PATCH 01/25] 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 bda1794..5368c8d 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 @@ -110,7 +115,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 bec125f..eab12b0 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} test.cpp) From a663f0918bd8ffd2cd60b89900f4d695b7a1f10e Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Wed, 25 Jun 2025 13:36:38 +0200 Subject: [PATCH 02/25] 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 55994b07beff6b2bd9bb1a59ac70ca5d90278907 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Wed, 25 Jun 2025 16:40:28 +0200 Subject: [PATCH 03/25] 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 5368c8d..c6901da 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) @@ -131,8 +131,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 02f67d99fd072368d653d79762742bbb8bb38c64 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Wed, 25 Jun 2025 18:07:08 +0200 Subject: [PATCH 04/25] 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 edbebe689df1ea5624c46e03b69375f251ce3560 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Thu, 26 Jun 2025 13:56:14 +0200 Subject: [PATCH 05/25] 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 850037208d19c299d946f13d1252b61eb448797e Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Thu, 26 Jun 2025 16:22:07 +0200 Subject: [PATCH 06/25] Add cxx settings/properties --- CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c6901da..5158e96 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 361c3dbc99f56fbf924956f6e0377c99f07ffb8a Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Thu, 26 Jun 2025 16:35:38 +0200 Subject: [PATCH 07/25] 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 fe5fe005088923ec61212d7eb01b93fed0804ac3 Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Thu, 26 Jun 2025 16:55:18 +0200 Subject: [PATCH 08/25] 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 5158e96..f0b6492 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) @@ -147,7 +147,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 3d6cf30c3903f159b241dfb1ffde9fdc597ed6bb Mon Sep 17 00:00:00 2001 From: Hind Montassif Date: Thu, 26 Jun 2025 17:39:21 +0200 Subject: [PATCH 09/25] 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 3b101eaf0ce64761be04df2ae022b960cfcb355b Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Thu, 24 Jul 2025 17:54:12 +0200 Subject: [PATCH 10/25] 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 f0b6492..5745672 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,16 +56,14 @@ set(SPARROW_IPC_SRC ${SPARROW_IPC_SOURCE_DIR}/serialize.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" @@ -81,14 +79,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 @@ -101,7 +102,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" ) @@ -115,8 +116,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 6487c7217d4fd545f292ff594f5a5de6bb8f9189 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 08:50:06 +0200 Subject: [PATCH 11/25] 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 682e1e44377345971ead7617590fcf7102a2f158 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 09:02:57 +0200 Subject: [PATCH 12/25] 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 55b424bad49094446c1a118de70b0e97c4030b6a Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 09:04:21 +0200 Subject: [PATCH 13/25] 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 32aeb127062a908c51168f24a772cc423eaa629f Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 10:19:58 +0200 Subject: [PATCH 14/25] 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 c4b5cf2f042a678c18e0db1c2e699804bab9639d Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 10:50:50 +0200 Subject: [PATCH 15/25] 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 5745672..f2e6aff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,12 +56,6 @@ set(SPARROW_IPC_SRC ${SPARROW_IPC_SOURCE_DIR}/serialize.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 @@ -117,33 +111,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 1bf99a764eca1d8efb2e31a8ec46584053fdf5f5 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 11:20:57 +0200 Subject: [PATCH 16/25] 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 afa83d30e0ab949d4e248f373e9f6b4ffd8dfb04 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:10:17 +0200 Subject: [PATCH 17/25] 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 eab12b0..a1598ef 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -14,3 +14,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 8810947deedb7a962f64a7c26923bb4bc13f0310 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:11:57 +0200 Subject: [PATCH 18/25] 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 a1598ef..e5c8bdc 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -34,3 +34,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 643223b93f7b610ad7ff801a8ad31856a26d72a2 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:12:24 +0200 Subject: [PATCH 19/25] 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 e5f4394b6d428c555c4249417a842e255495846c Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:12:55 +0200 Subject: [PATCH 20/25] 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 cc17ae237def1f63dcd74156222f3d2f565e2265 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:17:20 +0200 Subject: [PATCH 21/25] 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 fc198c210210c29151d59bb5e58da153a72d3dcc Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:29:30 +0200 Subject: [PATCH 22/25] 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 c29ea64a815bb8bd95df870ad462253c6292020f Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:33:58 +0200 Subject: [PATCH 23/25] 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 70bf08c973c85e17344f53ff25b2961479276ed2 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 14:43:17 +0200 Subject: [PATCH 24/25] 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 1a0719ff0cc3c208a88838e28319b433738beb76 Mon Sep 17 00:00:00 2001 From: Alexis Placet Date: Fri, 25 Jul 2025 15:00:46 +0200 Subject: [PATCH 25/25] 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