Skip to content

Make buildable

Make buildable #9830

Workflow file for this run

name: Build macOS
on:
push:
pull_request:
branches:
- master
jobs:
build-macos:
runs-on: macos-15
steps:
# XProtect can cause random failures if it decides that the DMG we create
# during the packaging phase is malware.
# See https://github.com/actions/runner-images/issues/7522 and https://github.com/servo/servo/pull/30779
- name: Kill XProtectBehaviorService
run: |
echo Killing XProtect.; sudo pkill -9 XProtect >/dev/null || true;
- name: Install latest Python3 via brew
run: brew install python3 || brew link --overwrite python@3.12
- name: Install latest Qt5 via brew
run: brew install qt@5
- name: Install Dependencies
run: brew install ninja protobuf@29 hdf5@1.10 pkg-config capnp ccache
- name: Checkout
uses: actions/checkout@v6
with:
submodules: 'false'
fetch-depth: 0
filter: 'tree:0' # Download all commits but blobs and trees on demand
- name: Update / download Submodules (selected ones)
run: |
git submodule update --init \
thirdparty/asio/asio \
thirdparty/benchmark/benchmark \
thirdparty/ecaludp/ecaludp \
thirdparty/fineftp/fineftp-server \
thirdparty/ftxui/ftxui \
thirdparty/gtest/googletest \
thirdparty/qwt/qwt \
thirdparty/recycle/recycle \
thirdparty/spdlog/spdlog \
thirdparty/protozero/protozero \
thirdparty/tclap/tclap \
thirdparty/tcp_pubsub/tcp_pubsub \
thirdparty/termcolor/termcolor \
thirdparty/tinyxml2/tinyxml2 \
thirdparty/yaml-cpp/yaml-cpp
# - name: Display Python version
# run: python -c "import sys; print(sys.version)"
#
# - name: Install Python requirements
# run: |
# sudo pip3 install -r "$GITHUB_WORKSPACE/doc/requirements.txt" --break-system-packages
- name: Prepare ccache and restore cache
id: ccache_cache-restore
uses: ./.github/actions/ccache-prepare
with:
key-root: macos-13
cache-dir: ${{ github.workspace }}/.ccache
- name: CMake
id: cmake-configure
run: |
HDF5_PREFIX="$(brew --prefix hdf5@1.10)"
QT5_PREFIX="$(brew --prefix qt@5)"
PB_PREFIX="$(brew --prefix protobuf@29)"
cmake -S . -B _build -G "Ninja" \
-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=cmake/submodule_dependencies.cmake \
-DECAL_USE_HDF5=ON \
-DECAL_USE_QT=ON \
-DECAL_USE_CURL=ON \
-DECAL_USE_CAPNPROTO=ON \
-DECAL_USE_FTXUI=ON \
-DECAL_BUILD_DOCS=OFF \
-DECAL_BUILD_APPS=ON \
-DECAL_BUILD_SAMPLES=ON \
-DECAL_BUILD_TIMEPLUGINS=ON \
-DECAL_BUILD_PY_BINDING=OFF \
-DECAL_BUILD_CSHARP_BINDING=OFF \
-DECAL_BUILD_TESTS=ON \
-DECAL_INSTALL_SAMPLE_SOURCES=ON \
-DECAL_USE_NPCAP=OFF \
-DECAL_THIRDPARTY_BUILD_CMAKE_FUNCTIONS=ON \
-DECAL_THIRDPARTY_BUILD_PROTOBUF=OFF \
-DECAL_THIRDPARTY_BUILD_SPDLOG=ON \
-DECAL_THIRDPARTY_BUILD_TINYXML2=ON \
-DECAL_THIRDPARTY_BUILD_FINEFTP=ON \
-DECAL_THIRDPARTY_BUILD_CURL=OFF \
-DECAL_THIRDPARTY_BUILD_GTEST=ON \
-DECAL_THIRDPARTY_BUILD_HDF5=OFF \
-DECAL_THIRDPARTY_BUILD_RECYCLE=ON \
-DECAL_THIRDPARTY_BUILD_TCP_PUBSUB=ON \
-DECAL_THIRDPARTY_BUILD_QWT=ON \
-DECAL_THIRDPARTY_BUILD_YAML-CPP=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_PREFIX_PATH="$HDF5_PREFIX;$QT5_PREFIX;$PB_PREFIX" \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON \
-DPython_FIND_STRATEGY=LOCATION \
-DPython_FIND_REGISTRY=NEVER
shell: bash
- name: Build Release
run: |
echo "${{ steps.cmake-configure.outcome }}"
cmake --build _build --config Release
- name: Save ccache cache to GitHub
uses: ./.github/actions/ccache-save
with:
key: ${{steps.ccache_cache-restore.outputs.cache-primary-key}}
cache-dir: ${{ github.workspace }}/.ccache
if: ${{ always() && steps.cmake-configure.outcome == 'success' }}
# - name: Build Documentation C
# run: cmake --build . --target documentation_c
# working-directory: ${{ runner.workspace }}/_build
# - name: Build Documentation C++
# run: cmake --build . --target documentation_cpp
# working-directory: ${{ runner.workspace }}/_build
# currently event test fails under macos ..
# - name: Run Tests
# run: ctest -V
# working-directory: ${{ runner.workspace }}/_build
# Currently (2024-11-28) packing very often fails under macos
# - name: Pack
# uses: nick-fields/retry@v2
# with:
# max_attempts: 3
# retry_on: error
# timeout_minutes: 3
# command: cd ${{ runner.workspace }}/_build && cpack -G DragNDrop
# - name: Upload DMG
# uses: actions/upload-artifact@v4
# with:
# name: macos-dmg
# path: ${{ runner.workspace }}/_build/_deploy/*.dmg