Skip to content

[lang] C#: Wrapped process.h #2748

[lang] C#: Wrapped process.h

[lang] C#: Wrapped process.h #2748

Workflow file for this run

name: Build Ubuntu
on:
push:
pull_request:
jobs:
build-ubuntu:
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, ubuntu-22.04, ubuntu-24.04-arm, ubuntu-22.04-arm]
runs-on: ${{ matrix.os }}
env:
# enable starting Qt GUI Applications
QT_QPA_PLATFORM: offscreen
PROJECT_NAME: ecal
steps:
- name: Install Dependencies
run: |
common_packages=(
ccache ninja-build
doxygen graphviz
libcurl4-openssl-dev
libprotobuf-dev libprotoc-dev protobuf-compiler
libhdf5-dev
libyaml-cpp-dev
libspdlog-dev
libtclap-dev
libtinyxml2-dev
libcapnp-dev capnproto
libgtest-dev libgmock-dev
python3 python3-venv python3-dev
)
specific_packages=()
if [[ ${{ matrix.os }} == ubuntu-24.04* ]]; then
specific_packages=(
qt6-base-dev qt6-svg-dev
)
elif [[ ${{ matrix.os }} == ubuntu-22.04* ]]; then
specific_packages=(
qtbase5-dev libqt5opengl5-dev libqt5svg5-dev
)
fi
# Disable man-db update
echo 'set man-db/auto-update false' | sudo debconf-communicate >/dev/null
sudo dpkg-reconfigure man-db
sudo apt-get update
sudo apt-get install --no-install-recommends "${common_packages[@]}" "${specific_packages[@]}"
- name: Checkout
uses: actions/checkout@v4
with:
submodules: 'false'
fetch-depth: 0
filter: 'tree:0' # Download all commits but blobs and trees on demand
- name: Set variables
run: |
# Use git describe to get the tag / commit description
VERSION="$(git describe --tags --dirty)"
# Remove the leading 'v' from the tag
VERSION="${VERSION#v}"
CODENAME="$(lsb_release --codename --short)"
echo "PROJECT_VERSION=$VERSION" >> "$GITHUB_ENV"
echo "ubuntu_codename=$CODENAME" >> "$GITHUB_ENV"
echo "DEB_VERSION=$VERSION-$CODENAME" >> "$GITHUB_ENV"
- name: Initialize required submodules
run: |
git submodule update --init \
thirdparty/asio/asio \
thirdparty/ecaludp/ecaludp \
thirdparty/fineftp/fineftp-server \
thirdparty/ftxui/ftxui \
thirdparty/qwt/qwt \
thirdparty/recycle/recycle \
thirdparty/tcp_pubsub/tcp_pubsub \
thirdparty/termcolor/termcolor
- name: Create venv for building docs
shell: bash
run: |
mkdir ".venv_build"
python3 -m venv ".venv_build"
source ".venv_build/bin/activate"
pip install --upgrade pip
pip install wheel setuptools
pip install -r "$GITHUB_WORKSPACE/doc/requirements.txt"
- name: Prepare ccache and restore cache
id: ccache_cache-restore
uses: ./.github/actions/ccache-prepare
with:
key-root: ${{ matrix.os }}
cache-dir: ${{ github.workspace }}/.ccache
- name: CMake
id: cmake-configure
run: |
source ".venv_build/bin/activate"
cmake -S . -B _build -G "Ninja" \
-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=cmake/submodule_dependencies.cmake \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DECAL_USE_HDF5=ON \
-DECAL_USE_QT=ON \
-DECAL_USE_CURL=ON \
-DECAL_USE_CAPNPROTO=ON \
-DECAL_USE_FTXUI=ON \
-DECAL_USE_NPCAP=OFF \
-DECAL_BUILD_DOCS=ON \
-DECAL_BUILD_APPS=ON \
-DECAL_BUILD_SAMPLES=ON \
-DECAL_BUILD_TIMEPLUGINS=ON \
-DECAL_BUILD_PY_BINDING=ON \
-DECAL_BUILD_CSHARP_BINDING=OFF \
-DECAL_BUILD_TESTS=ON \
-DECAL_INSTALL_SAMPLE_SOURCES=ON \
-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=OFF \
-DECAL_THIRDPARTY_BUILD_HDF5=OFF \
-DECAL_THIRDPARTY_BUILD_RECYCLE=ON \
-DECAL_THIRDPARTY_BUILD_TINYXML2=OFF \
-DECAL_THIRDPARTY_BUILD_TCLAP=OFF \
-DECAL_THIRDPARTY_BUILD_TCP_PUBSUB=ON \
-DECAL_THIRDPARTY_BUILD_QWT=ON \
-DECAL_THIRDPARTY_BUILD_SPDLOG=OFF \
-DECAL_THIRDPARTY_BUILD_YAML-CPP=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_SYSCONFDIR=/etc \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LOCALSTATEDIR=/var \
-DCMAKE_INSTALL_LIBDIR=lib/$(arch)-linux-gnu \
-DPython_FIND_VIRTUALENV=ONLY
shell: bash
- name: Build Release
run: |
cmake --build _build --parallel -- -k 0
- 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
# Always save cache if configure succeeded (even if the build failed)
if: ${{ always() && steps.cmake-configure.outcome == 'success' }}
- name: Run Tests
run: ctest -V --test-dir _build
- name: CPack
run: cpack -G DEB -R '${{ env.DEB_VERSION }}' --config _build/CPackConfig.cmake
- name: Upload Debian
uses: actions/upload-artifact@v4
with:
name: '${{env.PROJECT_NAME}}_${{ env.DEB_VERSION }}-${{runner.arch}}'
path: _deploy/*.deb