Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
6761b65
The openDAQ ci workflow build Windows job refactoring
Nov 25, 2025
1d92dc4
Move dependencies installation and setup steps into build-sdk action
Nov 27, 2025
0a8a3fc
Add missing Python 3.14 version
Nov 27, 2025
fd3d9a9
Remove cmake_generator_platform for Win32
Dec 2, 2025
14f3c9c
Remove step renaming Clang directory
Dec 4, 2025
4d29add
Setup python 3.14 explicitly
Dec 4, 2025
f799bed
The openDAQ ci workflow build Linux job refactoring
Dec 1, 2025
46b799a
Remove Python package installation from apt (should be done by setup-…
Dec 5, 2025
98de5fa
Downgrade Python to 3.12
Dec 5, 2025
e5dd683
Disable python-setup and numpy installation via pip
Dec 5, 2025
ae31f2c
Remove packaging steps from build-linux job
Dec 8, 2025
b17d084
Add ubuntu22.04 and clang-16 matrix configs
Dec 8, 2025
cc89a55
Remove clang-tidy and disable bindings temporary
Dec 8, 2025
ba94d45
Dump ICMP ping UID allowed
Dec 9, 2025
760c5cc
Run tests with sudo
Dec 9, 2025
a982881
Add ccache
Dec 9, 2025
114e430
Grant CAP_NET_RAW Linux capability instead of using sudo for running …
Dec 9, 2025
bb58326
Enable Python and C# bindings
Dec 9, 2025
ba5d495
Add ccache setup action
Dec 10, 2025
f2e8b9d
Cleanup debug steps
Dec 10, 2025
5ea75ff
Enable Windows build and test
Dec 10, 2025
d21aaa2
Call ccache-setup from actions/ccache-setup branch
Dec 10, 2025
f1d5501
Disable 64 bits Ubuntu matrix keys
Dec 11, 2025
0d6f41b
Add trace for executable files info to check bitness
Dec 11, 2025
2f008c2
Add 32 bit asm flag
Dec 11, 2025
4c78d2e
Add flag for Boost.Context i686 asm file selection
Dec 11, 2025
2c4848e
Add system name Linux to CMake defines
Dec 11, 2025
735a0b0
Enable -fPIC for 32-bit Linux shared libraries
Dec 11, 2025
4ff994a
Install mono runtime even for 32 bits builds
Dec 11, 2025
2c7c651
Disable bcrypt asm for 32-bit Linux (x86.S not included in build)
Dec 11, 2025
d937bbd
Disable 32 bits build
Dec 11, 2025
b5f7c02
Disable ccache for gcc-14 to verify low disk space issue is fixed
Dec 12, 2025
c80f6a1
Remove packaging related steps from build_windows job
Dec 15, 2025
6924721
Setup 32-bit Python for Win32 builds
Dec 15, 2025
13e7612
Apply patch for GCC to use MinGW sockets API
Dec 15, 2025
55b971d
Apply patch for missing POSIX headers
Dec 15, 2025
59f3fbb
Add patches
Dec 16, 2025
f41016e
Disable WS streaming modules
Dec 16, 2025
251b70b
Patch cstdint
Dec 16, 2025
122cce5
Disable stack protection
Dec 16, 2025
0756d1d
Try find echo libssp.a
Dec 16, 2025
7a9c408
Switch to MinGW for Windows GCC
Dec 16, 2025
9bd725b
Try add lissp from other place
Dec 16, 2025
8707728
Add -Wa,-mbig-obj for MinGW GCC to fix 'file too big' COFF limit error
Dec 17, 2025
f5d9776
Disable -Wno-error=conversion-null as error
Dec 17, 2025
cec4832
Enable verbose CTest output
Dec 17, 2025
5e2a79c
Add build_macos job
Dec 16, 2025
1e92058
Add mono package to install as dependency
Dec 16, 2025
c7be3ab
Run tests via sudo
Dec 17, 2025
c05ee38
Update build-sdk action to align with main
Dec 29, 2025
ff57d73
Sync build-sdk from main, add diagnostic patch for SkipSamples UB
Dec 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 200 additions & 0 deletions .github/actions/build-sdk/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
name: Build openDAQ SDK
description: Configure, build and test openDAQ SDK

inputs:
additional-dependencies:
description: 'Additional packages to install (apt on Linux, choco on Windows)'
required: false
default: ''
cmake-generator:
description: 'CMake generator (e.g., "Ninja", "Visual Studio 17 2022")'
required: false
default: ''
cmake-config-preset:
description: 'CMake configure preset name'
required: false
default: ''
cmake-config-args:
description: 'Additional CMake configure arguments (e.g., -D flags)'
required: false
default: ''
cmake-build-type:
description: 'Build configuration (Release, Debug). Required for multi-config generators (Visual Studio)'
required: false
default: ''
enable-32bit:
description: 'Build for 32-bit architecture'
required: false
default: 'false'
enable-tests:
description: 'Run tests after build'
required: false
default: 'false'
ctest-preset:
description: 'CTest preset name'
required: false
default: ''

outputs:
gtest-xml-path:
description: 'Path to GTest XML reports directory'
value: ${{ steps.test.outputs.gtest-xml-path }}

runs:
using: composite
steps:
- name: Check inputs
shell: bash
env:
CMAKE_GENERATOR: ${{ inputs.cmake-generator }}
run: |
if [ -z "$CMAKE_GENERATOR" ]; then
echo "::error::✗ The cmake-generator input is not set."
exit 1
fi

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.14'
architecture: ${{ inputs.enable-32bit == 'true' && 'x86' || 'x64' }}

- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2

- name: Install Windows dependencies
if: runner.os == 'Windows' && inputs.additional-dependencies != ''
shell: pwsh
run: choco install ${{ inputs.additional-dependencies }} -y --no-progress

- name: Install Linux dependencies
if: runner.os == 'Linux'
shell: bash
run: |
sudo apt-get update && sudo apt-get install -y --no-install-recommends \
${{ inputs.additional-dependencies || '' }} \
lld mono-runtime libmono-system-json-microsoft4.0-cil libmono-system-data4.0-cil \
libx11-dev libxi-dev libxcursor-dev libxrandr-dev libgl-dev libudev-dev libfreetype6-dev

- name: Install macOS dependencies
if: runner.os == 'macOS'
shell: bash
run: |
HOMEBREW_NO_AUTO_UPDATE=1 brew install mono ${{ inputs.additional-dependencies }}

- name: Install ninja-build
if: inputs.cmake-generator == 'Ninja'
uses: seanmiddleditch/gha-setup-ninja@v5

- name: Setup MSYS2 MINGW64
if: runner.os == 'Windows'
id: msys2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: false
install: mingw-w64-x86_64-crt-git mingw-w64-x86_64-gcc

- name: Add MSYS2 MINGW64 to PATH
if: runner.os == 'Windows'
shell: bash
run: |
echo "${{ steps.msys2.outputs.msys2-location }}/mingw64/bin" >> $GITHUB_PATH
echo "Added MSYS2 MINGW64 to PATH: ${{ steps.msys2.outputs.msys2-location }}/mingw64/bin"

# https://github.com/actions/runner-images/issues/10001
- name: Setup MSVC toolchain
if: runner.os == 'Windows'
uses: ilammy/msvc-dev-cmd@v1

- name: Install Python dependencies
shell: bash
run: |
echo "Installing numpy for Python versions: $(python --version)"
python -m pip install numpy
echo "Done installing Python dependencies"

- name: Configure
id: cmake-config
shell: bash
env:
CMAKE_BUILD_TYPE: ${{ inputs.cmake-build-type }}
CMAKE_GENERATOR: ${{ inputs.cmake-generator }}
CI_GIT_BRANCH: ${{ github.head_ref }}
run: |
CMAKE_BUILD_PATH="build"
mkdir -p "$CMAKE_BUILD_PATH"
CMAKE_BUILD_PATH=$(cd "$CMAKE_BUILD_PATH" && pwd)
echo "build-path=$CMAKE_BUILD_PATH" >> "$GITHUB_OUTPUT"

CMAKE_ARGS=""
if [ -n "${{ inputs.cmake-config-preset }}" ]; then
CMAKE_ARGS="--preset ${{ inputs.cmake-config-preset }}"
fi

# Visual Studio specific options
if [[ "$CMAKE_GENERATOR" == "Visual Studio"* ]]; then
CMAKE_ARGS="$CMAKE_ARGS -DOPENDAQ_MSVC_SINGLE_PROCESS_BUILD=ON"
fi

if [ -n "$CMAKE_BUILD_TYPE" ]; then
CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE"
fi

CMAKE_ARGS="$CMAKE_ARGS -DCI_GIT_BRANCH=$CI_GIT_BRANCH"

echo "::group::CMake Configure"
cmake -B "$CMAKE_BUILD_PATH" -G "$CMAKE_GENERATOR" $CMAKE_ARGS ${{ inputs.cmake-config-args }}
echo "::endgroup::"

- name: Build
shell: bash
env:
SHORT_SHA: ci # .NET bindings version suffix (e.g., 1.0.0-beta-ci)
CMAKE_BUILD_TYPE: ${{ inputs.cmake-build-type }}
CMAKE_BUILD_PATH: ${{ steps.cmake-config.outputs.build-path }}
run: |
CMAKE_BUILD_ARGS=""
if [ -n "$CMAKE_BUILD_TYPE" ]; then
CMAKE_BUILD_ARGS="--config $CMAKE_BUILD_TYPE"
fi

echo "::group::CMake Build"
cmake --build "$CMAKE_BUILD_PATH" $CMAKE_BUILD_ARGS
echo "::endgroup::"

- name: Test
id: test
if: inputs.enable-tests == 'true'
shell: bash
env:
CMAKE_BUILD_TYPE: ${{ inputs.cmake-build-type }}
CMAKE_BUILD_PATH: ${{ steps.cmake-config.outputs.build-path }}
run: |
GTEST_XML_PATH="$CMAKE_BUILD_PATH/test_results"
mkdir -p "$GTEST_XML_PATH"

if command -v cygpath &> /dev/null; then
GTEST_XML_PATH=$(cygpath -w "$GTEST_XML_PATH")
fi

export GTEST_OUTPUT="xml:$GTEST_XML_PATH/"
echo "gtest-xml-path=$GTEST_XML_PATH" >> "$GITHUB_OUTPUT"

CTEST_ARGS=""
if [ -n "${{ inputs.ctest-preset }}" ]; then
CTEST_ARGS="--preset ${{ inputs.ctest-preset }}"
fi

if [ -n "$CMAKE_BUILD_TYPE" ]; then
CTEST_ARGS="$CTEST_ARGS --build-config $CMAKE_BUILD_TYPE"
fi

SUDO_CMD=""
if command -v sudo &> /dev/null; then
SUDO_CMD="sudo -E"
fi

echo "::group::CTest"
$SUDO_CMD ctest --test-dir "$CMAKE_BUILD_PATH" --output-on-failure $CTEST_ARGS
echo "::endgroup::"
54 changes: 54 additions & 0 deletions .github/patches/diagnose-skip-samples-ub.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
diff --git a/core/opendaq/reader/tests/test_stream_reader.cpp b/core/opendaq/reader/tests/test_stream_reader.cpp
index 50c68c0b..b912eea7 100644
--- a/core/opendaq/reader/tests/test_stream_reader.cpp
+++ b/core/opendaq/reader/tests/test_stream_reader.cpp
@@ -1748,16 +1748,20 @@ TYPED_TEST(StreamReaderTest, SkipSamplesOnePacket)
{
for (size_t i = 0; i < 10; ++i)
{
- ASSERT_EQ(firstBatchSamples[i], TypeParam(typename TypeParam::Type(i * 11.1)));
- ASSERT_EQ(secondBatchSamples[i], TypeParam(typename TypeParam::Type((40 + i) * 11.1)));
+ TypeParam expectedFirst = TypeParam(typename TypeParam::Type(i * 11.1));
+ TypeParam expectedSecond = TypeParam(typename TypeParam::Type((40 + i) * 11.1));
+ ASSERT_EQ(firstBatchSamples[i], expectedFirst);
+ ASSERT_EQ(secondBatchSamples[i], expectedSecond);
}
}
else
{
for (size_t i = 0; i < 10; ++i)
{
- ASSERT_EQ(firstBatchSamples[i], (TypeParam)(i * 11.1));
- ASSERT_EQ(secondBatchSamples[i], (TypeParam) ((40 + i) * 11.1));
+ TypeParam expectedFirst = (TypeParam)(i * 11.1);
+ TypeParam expectedSecond = (TypeParam)((40 + i) * 11.1);
+ ASSERT_EQ(firstBatchSamples[i], expectedFirst);
+ ASSERT_EQ(secondBatchSamples[i], expectedSecond);
}
}
}
@@ -1819,16 +1823,20 @@ TYPED_TEST(StreamReaderTest, SkipSamplesBetweenPackets)
{
for (size_t i = 0; i < 10; ++i)
{
- ASSERT_EQ(firstBatchSamples[i], TypeParam(typename TypeParam::Type(i * 11.1)));
- ASSERT_EQ(secondBatchSamples[i], TypeParam(typename TypeParam::Type((40 + i) * 11.1)));
+ TypeParam expectedFirst = TypeParam(typename TypeParam::Type(i * 11.1));
+ TypeParam expectedSecond = TypeParam(typename TypeParam::Type((40 + i) * 11.1));
+ ASSERT_EQ(firstBatchSamples[i], expectedFirst);
+ ASSERT_EQ(secondBatchSamples[i], expectedSecond);
}
}
else
{
for (size_t i = 0; i < 10; ++i)
{
- ASSERT_EQ(firstBatchSamples[i], (TypeParam) (i * 11.1));
- ASSERT_EQ(secondBatchSamples[i], (TypeParam) ((40 + i) * 11.1));
+ TypeParam expectedFirst = (TypeParam)(i * 11.1);
+ TypeParam expectedSecond = (TypeParam)((40 + i) * 11.1);
+ ASSERT_EQ(firstBatchSamples[i], expectedFirst);
+ ASSERT_EQ(secondBatchSamples[i], expectedSecond);
}
}
}
Loading
Loading