mirror of
https://github.com/savoirfairelinux/opendht.git
synced 2026-11-08 04:21:51 +00:00
178 lines
6.9 KiB
YAML
178 lines
6.9 KiB
YAML
name: C/C++ CI
|
|
|
|
env:
|
|
LLHTTP_VERSION: "v9.2.1"
|
|
RESTINIO_VERSION: "0.7.8.1"
|
|
EXPECTED_LITE_URL: "https://raw.githubusercontent.com/martinmoene/expected-lite/master/include/nonstd/expected.hpp"
|
|
UBUNTU_FULL_DEPS: "libncurses5-dev libreadline-dev nettle-dev libasio-dev libgnutls28-dev libuv1-dev python3-pip python3-dev python3-setuptools libcppunit-dev libjsoncpp-dev libfmt-dev libmsgpack-dev libargon2-dev"
|
|
UBUNTU_MESON_DEPS: "ninja-build libncurses5-dev libreadline-dev nettle-dev libasio-dev libgnutls28-dev libuv1-dev python3-dev python3-setuptools python3-pip libcppunit-dev libjsoncpp-dev libfmt-dev libmsgpack-dev libargon2-dev"
|
|
UBUNTU_MINIMAL_DEPS: "libncurses5-dev libreadline-dev nettle-dev libfmt-dev libgnutls28-dev libcppunit-dev libmsgpack-dev libargon2-dev"
|
|
DEBIAN12_DEPS: "git libtool pkg-config wget cmake libncurses5-dev libreadline-dev nettle-dev libasio-dev libgnutls28-dev libuv1-dev python3-pip python3-dev python3-setuptools libcppunit-dev libjsoncpp-dev libfmt-dev libmsgpack-dev libargon2-dev"
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
build-ubuntu-meson:
|
|
name: Ubuntu/GCC Meson build
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
echo "Installing Ubuntu meson dependencies:"
|
|
sudo apt update
|
|
sudo apt install -y $UBUNTU_MESON_DEPS
|
|
|
|
- name: Install Python dependencies
|
|
run: sudo pip3 install meson Cython
|
|
|
|
- name: Configure with Meson
|
|
run: meson setup build .
|
|
|
|
- name: Build with Ninja
|
|
run: cd build && ninja
|
|
|
|
build-ubuntu-minimal:
|
|
name: Ubuntu/GCC minimal build
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
cxx_standard: [17, 20, 23]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install Minimal Dependencies
|
|
run: |
|
|
echo "Installing Ubuntu minimal dependencies:"
|
|
sudo apt-get update
|
|
sudo apt-get install -y $UBUNTU_MINIMAL_DEPS
|
|
|
|
- name: Configure project with CMake
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local \
|
|
-DCMAKE_BUILD_TYPE=Debug \
|
|
-DCMAKE_CXX_STANDARD=${{ matrix.cxx_standard }} \
|
|
-DCMAKE_CXX_STANDARD_REQUIRED=ON \
|
|
-DOPENDHT_C=Off -DBUILD_TESTING=On \
|
|
-DOPENDHT_PEER_DISCOVERY=Off -DOPENDHT_PYTHON=Off \
|
|
-DOPENDHT_TOOLS=On -DOPENDHT_PROXY_SERVER=Off -DOPENDHT_PROXY_CLIENT=Off
|
|
|
|
- name: Build
|
|
run: cd build && make
|
|
|
|
- name: Run Unit tests
|
|
run: ctest --output-on-failure --test-dir build
|
|
|
|
build-debian12:
|
|
name: Debian 12/GCC build
|
|
runs-on: ubuntu-latest
|
|
|
|
container:
|
|
image: debian:12
|
|
volumes:
|
|
- .:/workspace
|
|
options: --workdir /workspace
|
|
env:
|
|
DEBIAN_FRONTEND: noninteractive
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y $DEBIAN12_DEPS
|
|
|
|
- name: Build llhttp dependency
|
|
run: |
|
|
mkdir llhttp
|
|
wget "https://github.com/nodejs/llhttp/archive/refs/tags/release/${LLHTTP_VERSION}.tar.gz" -O llhttp.tar.gz
|
|
tar -xzf llhttp.tar.gz -C llhttp --strip-components=1
|
|
cd llhttp && cmake -DCMAKE_INSTALL_PREFIX=/usr . && make -j2 && make install
|
|
cd ../ && rm -rf llhttp*
|
|
|
|
- name: Install expected-lite header
|
|
run: |
|
|
mkdir -p /usr/local/include/nonstd
|
|
wget "${EXPECTED_LITE_URL}" -O /usr/local/include/nonstd/expected.hpp
|
|
|
|
- name: Build restinio dependency
|
|
run: |
|
|
mkdir restinio && cd restinio
|
|
wget "https://github.com/Stiffstream/restinio/releases/download/v${RESTINIO_VERSION}/restinio-${RESTINIO_VERSION}.tar.bz2"
|
|
tar -xjf restinio-${RESTINIO_VERSION}.tar.bz2
|
|
cd restinio-${RESTINIO_VERSION}/dev
|
|
cmake -DCMAKE_INSTALL_PREFIX=/usr/local \
|
|
-DRESTINIO_TEST=Off -DRESTINIO_SAMPLE=Off -DRESTINIO_BENCHMARK=Off \
|
|
-DRESTINIO_WITH_SOBJECTIZER=Off \
|
|
-DRESTINIO_DEP_STANDALONE_ASIO=system -DRESTINIO_DEP_LLHTTP=system \
|
|
-DRESTINIO_DEP_FMT=system -DRESTINIO_DEP_EXPECTED_LITE=system .
|
|
make install
|
|
cd ../../ && rm -rf restinio*
|
|
|
|
- name: Configure project with CMake
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake .. -DCMAKE_BUILD_TYPE=Debug \
|
|
-DOPENDHT_C=On -DBUILD_TESTING=On \
|
|
-DOPENDHT_PEER_DISCOVERY=On -DOPENDHT_PYTHON=Off \
|
|
-DOPENDHT_TOOLS=On -DOPENDHT_PROXY_SERVER=On \
|
|
-DOPENDHT_PROXY_CLIENT=On
|
|
|
|
- name: Build
|
|
run: cd build && make
|
|
|
|
build-macos:
|
|
name: macOS/Clang build
|
|
runs-on: macos-15
|
|
strategy:
|
|
matrix:
|
|
cxx_standard: [17, 20, 23]
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install Homebrew Dependencies
|
|
run: brew install msgpack-cxx asio gnutls nettle readline fmt jsoncpp argon2 openssl cppunit
|
|
|
|
- name: Install expected-lite header
|
|
run: |
|
|
sudo mkdir -p /usr/local/include/nonstd
|
|
sudo wget "${EXPECTED_LITE_URL}" -O /usr/local/include/nonstd/expected.hpp
|
|
|
|
- name: Build restinio dependency
|
|
run: |
|
|
mkdir restinio && cd restinio
|
|
wget "https://github.com/Stiffstream/restinio/releases/download/v${RESTINIO_VERSION}/restinio-${RESTINIO_VERSION}.tar.bz2"
|
|
tar -xjf restinio-${RESTINIO_VERSION}.tar.bz2
|
|
cd restinio-${RESTINIO_VERSION}/dev
|
|
cmake -DCMAKE_INSTALL_PREFIX=/usr/local \
|
|
-DRESTINIO_TEST=Off -DRESTINIO_SAMPLE=Off -DRESTINIO_BENCHMARK=Off \
|
|
-DRESTINIO_WITH_SOBJECTIZER=Off \
|
|
-DRESTINIO_DEP_STANDALONE_ASIO=system -DRESTINIO_DEP_LLHTTP=system \
|
|
-DRESTINIO_DEP_FMT=system -DRESTINIO_DEP_EXPECTED_LITE=system .
|
|
make -j2 && sudo make install
|
|
cd ../../ && rm -rf restinio*
|
|
|
|
- name: Configure project with CMake
|
|
run: |
|
|
mkdir build && cd build
|
|
# Set Homebrew OpenSSL paths
|
|
export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"
|
|
export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
|
|
export CPPFLAGS="-I/usr/local/opt/openssl@3/include"
|
|
export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig"
|
|
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local \
|
|
-DOPENDHT_DOWNLOAD_DEPS=ON \
|
|
-DCMAKE_BUILD_TYPE=Debug \
|
|
-DCMAKE_CXX_STANDARD=${{ matrix.cxx_standard }} \
|
|
-DCMAKE_CXX_STANDARD_REQUIRED=ON \
|
|
-DOPENDHT_C=On -DBUILD_TESTING=On \
|
|
-DOPENDHT_PEER_DISCOVERY=On -DOPENDHT_PYTHON=Off \
|
|
-DOPENDHT_TOOLS=On -DOPENDHT_PROXY_SERVER=On \
|
|
-DOPENDHT_PROXY_CLIENT=On -DOPENDHT_PUSH_NOTIFICATIONS=On
|
|
|
|
- name: Build
|
|
run: cd build && make
|