Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
801a0ba
[CI] Added configuration for Linux with various matrix combinations
Mar 30, 2026
921e1d7
Some minor fixes
Mar 30, 2026
61ddecf
Fixed YAML syntax error
Mar 30, 2026
3fa8cb9
Fixed C++ std spec
Mar 30, 2026
b904bf5
Consolidated build options
Mar 30, 2026
f88577f
Fixed exclude list
Mar 30, 2026
50e96d8
Fixed exclude list
Mar 30, 2026
774dc06
Fixed matrix combinations
Mar 31, 2026
93cbc45
Replaced with two linear matrices
Apr 1, 2026
4e1b168
Fixed description
Apr 1, 2026
7e02f8f
Changed names and split to single files
Apr 1, 2026
32c3473
Blocked matrix, added variants to C++03
Apr 8, 2026
4b47ae6
Fixed wrong config on C++03
Apr 8, 2026
73273c6
Fixed names
Apr 8, 2026
a49c405
Small fixes in crypto matrix
Apr 8, 2026
c5697ab
Removed crypto builds. Added MinGW build
Apr 8, 2026
861ab04
Fixed MinGW typo. Added core handling for Linux
Apr 9, 2026
3a42c81
Added more platforms with C++11. Unset -Werror for MinGW
Apr 10, 2026
2583d05
Added fixes per build break on MinGW
Apr 17, 2026
48116de
More Windows fixes
Apr 17, 2026
589635f
Fixed invalid specialization after fixing for Windows
ethouris Apr 21, 2026
ad48fdf
More fixes for Windows and MinGW
Apr 21, 2026
be3243a
Fixed invalid definition for UDP socket in testing apps
Apr 23, 2026
b71c50f
Merge branch 'master' into ci-add-linux-matrix
May 6, 2026
4ce7fc9
Renamed Windows workflow
May 7, 2026
18d7a0e
Fixed multiple machines for Linux/C++11 syntax
May 7, 2026
60ae602
Linux matrix: blocked gdb for other than ubuntu-latest
May 7, 2026
009b0c6
Linux matrix: blocked gdb for other than ubuntu-latest (fixed syntax …
May 7, 2026
3f03334
Separated preinstallation action to track the problem
May 7, 2026
9390a25
Configured noenc on platforms with no SSL available
May 7, 2026
ef1c2a4
Separated preinstallation action to track the problem 2
May 7, 2026
852eea5
Blocked installation except ubuntu-latest
May 7, 2026
9f30b3d
Removed slim as it has no access to cmake
May 7, 2026
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
37 changes: 37 additions & 0 deletions .github/blocked-workflows/ubuntu-c++11-crypto.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Linux

on:
push:
branches: [ "master", "dev" ]
pull_request:
branches: [ "master", "dev" ]
types: [opened, synchronize, reopened]
jobs:
build:
strategy:
matrix:
crypto: [OFF, openssl, openssl-evp, gnutls, mbedtls, botan]

name: Build Crypto=${{ matrix.crypto }} C++11
runs-on: [ubuntu-latest, ubuntu-slim, ubuntu-24.04-arm]
steps:
- uses: actions/checkout@v3
- name: Configure packages and system
run: |
sudo apt install -y tcl cmake libssl-dev libgnutls28-dev libmbedtls-dev libbotan-2-dev gdb
echo "core.%e" | sudo tee /proc/sys/kernel/core_pattern
- name: Configure
run: |
mkdir _build && cd _build
if [[ ${{ matrix.crypto }} != OFF ]]; then CRYPTO_OPTIONS=-DUSE_ENCLIB=${{ matrix.crypto }}; else CRYPTO_OPTIONS=-DENABLE_ENCRYPTION=OFF; fi
cmake ../ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DUSE_CXX_STD=11 -DENABLE_STDCXX_SYNC=ON $CRYPTO_OPTIONS -DENABLE_UNITTESTS=ON -DENABLE_BONDING=ON -DENABLE_HEAVY_LOGGING=ON -DENABLE_TESTING=ON -DENABLE_EXAMPLES=ON -DENABLE_CODE_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
- name: Build
run: cd _build && make -j -k
- name: test
run: |
ulimit -c unlimited
cd _build && ctest --extra-verbose
SUCCESS=$?
if [ -f core.test-srt ]; then gdb -batch ./test-srt -c core -ex bt -ex "info thread" -ex quit; else echo "NO CORE - NO CRY!"; fi;
test $SUCCESS == 0;

67 changes: 67 additions & 0 deletions .github/blocked-workflows/ubuntu-matrix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Linux

on:
push:
branches: [ "master", "dev" ]
pull_request:
branches: [ "master", "dev" ]
types: [opened, synchronize, reopened]
jobs:
build_options:
strategy:
matrix:
cxxstdsync: [OFF, ON]
logging: [OFF, ON]
bonding: [OFF, ON]
cxxstd: ["03", "11"]
exclude:
- cxxstd: "11"
logging: ON
bonding: ON
- cxxstd: "03"
cxxstdsync: ON
bonding: OFF
name: Build C++${{ matrix.cxxstd }} C++sync=${{ matrix.cxxstdsync }} Bonding=${{ matrix.bonding }} Logging=${{ matrix.logging }}
runs-on: [ubuntu-latest, ubuntu-slim, ubuntu-24.04-arm]
steps:
- uses: actions/checkout@v3
- name: Configure packages and system
run: |
sudo apt install -y tcl cmake libssl-dev libmbedtls-dev libbotan-2-dev gdb
echo "core.%e" | sudo tee /proc/sys/kernel/core_pattern
- name: Configure
run: |
mkdir _build && cd _build
# NOTE > Crypto options are default - enabled, openssl
cmake ../ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DUSE_CXX_STD=${{ matrix.cxxstd }} -DENABLE_STDCXX_SYNC=${{ matrix.cxxstdsync }} -DENABLE_UNITTESTS=ON -DENABLE_BONDING=${{ matrix.bonding }} -DENABLE_LOGGING=${{ matrix.logging }} -DENABLE_HEAVY_LOGGING=${{ matrix.logging }} -DENABLE_TESTING=ON -DENABLE_EXAMPLES=ON -DENABLE_CODE_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
- name: Build
run: cd _build && make -j -k
- name: test
run: |
ulimit -c unlimited
cd _build && ctest --extra-verbose
SUCCESS=$?
if [ -f core.test-srt ]; then gdb -batch ./test-srt -c core -ex bt -ex "info thread" -ex quit; else echo "NO CORE - NO CRY!"; fi;
test $SUCCESS == 0;

- name: codecov
run: |
source ./scripts/collect-gcov.sh
bash <(curl -s https://codecov.io/bash)

build_mingw:
name: Build Mingw32
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Dependencies
run: |
sudo apt install -y g++-mingw-w64-x86-64-posix gcc-mingw-w64-x86-64-posix
- name: Configure
run: |
mkdir _build && cd _build
export CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix
# NOTE > Temporarily blocked encryption due to problems with enclib
cmake .. -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DENABLE_ENCRYPTION=OFF -DENABLE_UNITTESTS=OFF -DUSE_OPENSSL_PC=OFF -DCMAKE_SYSTEM_NAME=Windows
- name: Build
run: cd _build && make -j -k
29 changes: 0 additions & 29 deletions .github/workflows/cxx03-ubuntu.yaml

This file was deleted.

27 changes: 0 additions & 27 deletions .github/workflows/cxx11-ubuntu.yaml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: C++11
name: MacOS

on:
push:
Expand All @@ -8,7 +8,7 @@ on:

jobs:
build:
name: macos
name: C++11 noenc
runs-on: macos-latest

steps:
Expand Down
42 changes: 42 additions & 0 deletions .github/workflows/ubuntu-c++03.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Ubuntu C++03

on:
push:
branches: [ "master", "dev" ]
pull_request:
branches: [ "master", "dev" ]
types: [opened, synchronize, reopened]
jobs:
build:
strategy:
matrix:
logging: [OFF, ON]
bonding: [OFF, ON]
exclude:
- bonding: OFF
logging: OFF
name: logging=${{ matrix.logging }} bonding=${{ matrix.bonding }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: configure
run: |
sudo apt install -y tcl cmake libssl-dev gdb
mkdir _build && cd _build
cmake ../ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DENABLE_STDCXX_SYNC=OFF -DUSE_CXX_STD=03 -DENABLE_ENCRYPTION=ON -DENABLE_UNITTESTS=ON -DENABLE_BONDING=${{ matrix.bonding }} -DENABLE_TESTING=ON -DENABLE_EXAMPLES=ON -DENABLE_CODE_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DENABLE_LOGGING=${{ matrix.logging }}
- name: build
# That below is likely SonarQube remains, which was removed earlier.
#run: cd _build && build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build .
run: cd _build && cmake --build .
- name: test
run: |
echo "core.%e" | sudo tee /proc/sys/kernel/core_pattern
ulimit -c unlimited
cd _build && ctest --extra-verbose
SUCCESS=$?
if [ -f core.test-srt ]; then gdb -batch ./test-srt -c core -ex bt -ex "info thread" -ex quit; else echo "NO CORE - NO CRY!"; fi;
test $SUCCESS == 0;
- name: codecov
run: |
source ./scripts/collect-gcov.sh
bash <(curl -s https://codecov.io/bash)
46 changes: 46 additions & 0 deletions .github/workflows/ubuntu-c++11.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Linux C++11

on:
push:
branches: [ "master", "dev" ]
pull_request:
branches: [ "master", "dev" ]
types: [opened, synchronize, reopened]
jobs:
build:
strategy:
matrix:
# machine: [ubuntu-latest, ubuntu-slim, ubuntu-24.04-arm]
# ubuntu-slim excluded because it doesn't have cmake and installation not allowed
machine: [ubuntu-latest, ubuntu-24.04-arm]
name: ON ${{ matrix.machine }}
runs-on: "${{ matrix.machine }}"
steps:
- uses: actions/checkout@v3
- name: prepare
run: |
RUNON=${{ matrix.machine }}
if [[ $RUNON == ubuntu-latest ]]; then
sudo apt install -y gdb
fi
- name: configure
run: |
RUNON=${{ matrix.machine }}
ENCRYPTION=ON
[[ $RUNON == ubuntu-24.04-arm ]] && ENCRYPTION=OFF
mkdir _build && cd _build
cmake ../ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DUSE_CXX_STD=11 -DENABLE_STDCXX_SYNC=ON -DENABLE_ENCRYPTION=$ENCRYPTION -DENABLE_UNITTESTS=ON -DENABLE_BONDING=ON -DENABLE_TESTING=ON -DENABLE_EXAMPLES=ON -DENABLE_CODE_COVERAGE=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
- name: build
run: cd _build && cmake --build .
- name: test
run: |
echo "core.%e" | sudo tee /proc/sys/kernel/core_pattern
ulimit -c unlimited
cd _build && ctest --extra-verbose
SUCCESS=$?
if [ -f core.test-srt ]; then gdb -batch ./test-srt -c core -ex bt -ex "info thread" -ex quit; else echo "NO CORE - NO CRY!"; fi;
test $SUCCESS == 0;
- name: codecov
run: |
source ./scripts/collect-gcov.sh
bash <(curl -s https://codecov.io/bash)
27 changes: 27 additions & 0 deletions .github/workflows/ubuntu-mingw.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Ubuntu MinGW

on:
push:
branches: [ "master", "dev" ]
pull_request:
branches: [ "master", "dev" ]
types: [opened, synchronize, reopened]
jobs:
build:
name: noenc
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Dependencies
run: |
sudo apt install -y g++-mingw-w64-x86-64-posix gcc-mingw-w64-x86-64-posix
- name: Configure
run: |
mkdir _build && cd _build
export CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix
#cmake .. -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DENABLE_ENCRYPTION=OFF -DENABLE_UNITTESTS=OFF -DUSE_OPENSSL_PC=OFF -DCMAKE_SYSTEM_NAME=Windows -DENABLE_BONDING=ON -DENABLE_TESTING=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
# Warn-on-error turned off because there's a warning about epoll about unimplemented system fd subscription system
cmake .. -DENABLE_ENCRYPTION=OFF -DENABLE_UNITTESTS=OFF -DUSE_OPENSSL_PC=OFF -DCMAKE_SYSTEM_NAME=Windows -DENABLE_BONDING=ON -DENABLE_TESTING=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
- name: Build
run: cd _build && make -j -k

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: C++11
name: Windows

on:
push:
Expand All @@ -9,7 +9,7 @@ on:
jobs:
build:

name: windows
name: C++11 noenc
runs-on: windows-latest

steps:
Expand Down
2 changes: 1 addition & 1 deletion apps/apputil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ using namespace srt;
// See:
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms742214(v=vs.85).aspx
// http://www.winsocketdotnetworkprogramming.com/winsock2programming/winsock2advancedInternet3b.html
#if defined(_WIN32) && !defined(HAVE_INET_PTON)
#if defined(_WIN32) && !defined(HAVE_INET_PTON) && !defined(InetPton)
namespace // Prevent conflict in case when still defined
{
int inet_pton(int af, const char * src, void * dst)
Expand Down
10 changes: 7 additions & 3 deletions apps/socketoptions.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,18 @@ struct SocketOption
bool applyt(Object socket, std::string value) const;

template <Domain D, typename Object>
static int setso(Object socket, int protocol, int symbol, const void* data, size_t size);
static int setso(Object , int , int , const void* , size_t )
{
typename Object::something something = Object::something;
return -1;
}

template<Type T>
bool extract(std::string value, OptionValue& val) const;
};

template<>
inline int SocketOption::setso<SocketOption::SRT, int>(int socket, int /*ignored*/, int sym, const void* data, size_t size)
inline int SocketOption::setso<SocketOption::SRT, SRTSOCKET>(SRTSOCKET socket, int /*ignored*/, int sym, const void* data, size_t size)
{
return srt_setsockopt(socket, 0, SRT_SOCKOPT(sym), data, (int) size);
}
Expand All @@ -80,7 +84,7 @@ inline int SocketOption::setso<SocketOption::SRT, SRT_SOCKOPT_CONFIG*>(SRT_SOCKO


template<>
inline int SocketOption::setso<SocketOption::SYSTEM, int>(int socket, int proto, int sym, const void* data, size_t size)
inline int SocketOption::setso<SocketOption::SYSTEM, SYSSOCKET>(SYSSOCKET socket, int proto, int sym, const void* data, size_t size)
{
return ::setsockopt(socket, proto, sym, (const char *)data, (int) size);
}
Expand Down
6 changes: 3 additions & 3 deletions apps/srt-live-transmit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -792,12 +792,12 @@ int main(int argc, char** argv)
}
if (!srcReady && sysrfdslen > 0)
{
int sock = src->GetSysSocket();
if (sock != -1)
SYSSOCKET sock = src->GetSysSocket();
if (sock != SYSSOCKET_INVALID)
{
for (int n = 0; n < sysrfdslen && !(srcReady = (sock == sysrfds[n])); n++);
}
}
}
}
// read a few chunks at a time in attempt to deplete
// read buffers as much as possible on each read event
Expand Down
4 changes: 2 additions & 2 deletions apps/transmitbase.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ class Source: public Location
};

virtual SRTSOCKET GetSRTSocket() const { return SRT_INVALID_SOCK; }
virtual int GetSysSocket() const { return -1; }
virtual SYSSOCKET GetSysSocket() const { return -1; }
virtual bool MayBlock() const { return false; }
virtual bool AcceptNewClient() { return false; }
};
Expand All @@ -87,7 +87,7 @@ class Target: public Location
virtual ~Target() {}

virtual SRTSOCKET GetSRTSocket() const { return SRT_INVALID_SOCK; }
virtual int GetSysSocket() const { return -1; }
virtual SYSSOCKET GetSysSocket() const { return -1; }
virtual bool AcceptNewClient() { return false; }
};

Expand Down
Loading
Loading