Skip to content

fix, chore, perf, style, feat, improv, refactor, test, docs: update dispatcher.h/.cpp #3250

fix, chore, perf, style, feat, improv, refactor, test, docs: update dispatcher.h/.cpp

fix, chore, perf, style, feat, improv, refactor, test, docs: update dispatcher.h/.cpp #3250

Workflow file for this run

name: D++ CI
on:
push:
paths:
- '**Dockerfile'
- '**.cxx'
- '**.cpp'
- '**.h'
- '**.hpp'
- '**.cmake'
- '**ci.yml'
- '**CMakeLists.txt'
pull_request:
paths:
- '**Dockerfile'
- '**.cxx'
- '**.cpp'
- '**.h'
- '**.hpp'
- '**.cmake'
- '**ci.yml'
- '**CMakeLists.txt'
jobs:
linux-with-unit-test:
concurrency:
group: linux-build-unit-test
cancel-in-progress: false
name: Linux ${{matrix.cfg.arch}} (${{matrix.cfg.cpp-version}})
runs-on: ${{matrix.cfg.os}}
strategy:
fail-fast: false # Don't fail everything if one fails. We want to test each OS/Compiler individually
matrix:
cfg:
- { arch: 'amd64', os: ubuntu-20.04, cpp-version: g++-8 }
steps:
- name: Harden Runner
uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1
with:
egress-policy: audit
- name: Checkout D++
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- name: Install apt packages
run: sudo sed -i 's/azure\.//' /etc/apt/sources.list && sudo apt update && sudo apt install ${{ matrix.cfg.cpp-version }} libsodium-dev libopus-dev zlib1g-dev rpm
- name: Generate CMake
run: mkdir build && cd build && cmake -DDPP_NO_VCPKG=ON -DAVX_TYPE=AVX0 -DCMAKE_BUILD_TYPE=Release ..
env:
CXX: ${{matrix.cfg.cpp-version}}
- name: Build Project
run: cd build && make -j2
- name: Run unit tests
run: cd build/library && ./unittest
env:
DPP_UNIT_TEST_TOKEN: ${{secrets.DPP_UNIT_TEST_TOKEN}}
TEST_GUILD_ID: ${{secrets.TEST_GUILD_ID}}
TEST_TEXT_CHANNEL_ID: ${{secrets.TEST_TEXT_CHANNEL_ID}}
TEST_VC_ID: ${{secrets.TEST_VC_ID}}
TEST_USER_ID: ${{secrets.TEST_USER_ID}}
TEST_EVENT_ID: ${{secrets.TEST_EVENT_ID}}
linux-no-unit-tests:
name: Linux ${{matrix.cfg.arch}} (${{matrix.cfg.cpp-version}})
runs-on: ${{matrix.cfg.os}}
strategy:
fail-fast: false # Don't fail everything if one fails. We want to test each OS/Compiler individually
matrix:
cfg:
- { arch: 'amd64', os: ubuntu-22.04, cpp-version: g++-12, cmake-flags: '-DDPP_CORO=ON' }
- { arch: 'amd64', os: ubuntu-22.04, cpp-version: g++-11, cmake-flags: '-DDPP_CORO=ON' }
- { arch: 'amd64', os: ubuntu-22.04, cpp-version: g++-10, cmake-flags: '' }
- { arch: 'amd64', os: ubuntu-20.04, cpp-version: g++-9, cmake-flags: '' }
steps:
- name: Harden Runner
uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1
with:
egress-policy: audit
- name: Checkout D++
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- name: Install apt packages
run: sudo sed -i 's/azure\.//' /etc/apt/sources.list && sudo apt update && sudo apt install ${{ matrix.cfg.cpp-version }} libsodium-dev libopus-dev zlib1g-dev rpm
- name: Generate CMake
run: mkdir build && cd build && cmake -DDPP_NO_VCPKG=ON -DAVX_TYPE=AVX0 -DCMAKE_BUILD_TYPE=Release ${{matrix.cfg.cmake-flags}} ..
env:
CXX: ${{matrix.cfg.cpp-version}}
- name: Build Project
run: cd build && make -j2
- name: Package distributable
if: ${{ matrix.cfg.cpp-version == 'g++-10' }}
run: cd build && cpack --verbose
- name: Upload Binary (DEB)
if: ${{ matrix.cfg.cpp-version == 'g++-10' }}
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: "libdpp - Debian Package ${{matrix.cfg.arch}}"
path: '${{github.workspace}}/build/*.deb'
- name: Upload Binary (RPM)
if: ${{ matrix.cfg.cpp-version == 'g++-10' }}
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: "libdpp - RPM Package ${{matrix.cfg.arch}}"
path: '${{github.workspace}}/build/*.rpm'
macos:
name: macOS x64
runs-on: macos-latest
steps:
- name: Harden Runner
uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1
with:
egress-policy: audit
- name: Checkout D++
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- name: Install homebrew packages
run: brew install cmake make libsodium opus openssl
- name: Generate CMake
run: mkdir build && cd build && cmake -DDPP_NO_VCPKG=ON -DCMAKE_BUILD_TYPE=Release -DDPP_CORO=ON -DAVX_TYPE=AVX0 ..
env:
DONT_RUN_VCPKG: true
- name: Build Project
run: cd build && make -j2
env:
DONT_RUN_VCPKG: true
windows: # Windows x64 and x86 build matrix
strategy:
fail-fast: false # Don't cancel other matrix jobs if one fails
matrix:
cfg:
- { name: x64, arch: x64, config: Release, vs: '2019', os: 'windows-2019', vsv: '16' }
- { name: x64, arch: x64, config: Debug, vs: '2019', os: 'windows-2019', vsv: '16' }
- { name: x86, arch: x86, config: Release, vs: '2019', os: 'windows-2019', vsv: '16' }
- { name: x86, arch: x86, config: Debug, vs: '2019', os: 'windows-2019', vsv: '16' }
- { name: x64, arch: x64, config: Release, vs: '2022', os: 'windows-2022', vsv: '17' }
- { name: x64, arch: x64, config: Debug, vs: '2022', os: 'windows-2022', vsv: '17' }
- { name: x86, arch: x86, config: Release, vs: '2022', os: 'windows-2022', vsv: '17' }
- { name: x86, arch: x86, config: Debug, vs: '2022', os: 'windows-2022', vsv: '17' }
name: "Windows ${{matrix.cfg.name}}-${{matrix.cfg.config}}-vs${{matrix.cfg.vs}}"
runs-on: ${{matrix.cfg.os}}
steps:
- name: Harden Runner
uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1
with:
egress-policy: audit
- name: Checkout D++
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
with:
path: main
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # v1.3.1
- name: Install chocolatey packages ${{ matrix.cfg.arch}}
uses: seanmiddleditch/gha-setup-ninja@6263846cf3c17009dfc81604efabae16044fc074 # master
- name: Generate CMake (x64)
if: ${{ matrix.cfg.arch == 'x64' }}
run: mkdir main/build && cd main/build && cmake -G "Visual Studio ${{matrix.cfg.vsv}} ${{matrix.cfg.vs}}" -DDPP_NO_VCPKG=ON -DAVX_TYPE=AVX0 ..
env:
DONT_RUN_VCPKG: true
- name: Generate CMake (x86)
if: ${{ matrix.cfg.arch == 'x86' }}
run: mkdir main/build && cd main/build && cmake -DCMAKE_TOOLCHAIN_FILE="cmake\Win32Toolchain.cmake" -DDPP_NO_VCPKG=ON -DAVX_TYPE=AVX0 -G "Visual Studio ${{matrix.cfg.vsv}} ${{matrix.cfg.vs}}" -A Win32 -T host=x86 ..
env:
DONT_RUN_VCPKG: true
- name: Build Project
run: cmake --build main/build --target dpp --config ${{matrix.cfg.config}} --parallel 2
env:
DONT_RUN_VCPKG: true
- name: Move debug files for packaging
if: ${{ matrix.cfg.config == 'Debug' }}
run: xcopy main\build\library\Debug\* main\build\library\Release\ /s /q
- name: Package distributable
run: cd main/build && cpack --verbose
env:
DONT_RUN_VCPKG: true
- name: Upload Binary
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: "libdpp - Windows ${{matrix.cfg.name}}-${{matrix.cfg.config}}-vs${{matrix.cfg.vs}}"
path: '${{github.workspace}}/main/build/*.zip'
cross-compiles:
strategy:
fail-fast: false
matrix:
cfg:
- {name: "ARM64", os: ubuntu-20.04, cmake-options: -DCMAKE_TOOLCHAIN_FILE=cmake/ARM64ToolChain.cmake}
- {name: "ARMv7 HF", os: ubuntu-20.04, cmake-options: -DCMAKE_TOOLCHAIN_FILE=cmake/ARMv7ToolChain.cmake}
- {name: "Linux x86", os: ubuntu-20.04, cmake-options: -DCMAKE_TOOLCHAIN_FILE=cmake/LINUXx86ToolChain.cmake -DBUILD_VOICE_SUPPORT=OFF}
- {name: "ARMv6", os: ubuntu-20.04, cmake-options: -DCMAKE_TOOLCHAIN_FILE=cmake/ARMv6ToolChain.cmake}
name: ${{matrix.cfg.name}}
runs-on: ${{matrix.cfg.os}}
steps:
- name: Harden Runner
uses: step-security/harden-runner@8ca2b8b2ece13480cda6dacd3511b49857a23c09 # v2.5.1
with:
egress-policy: audit
- name: Checkout D++
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
- name: Install Packages
run: sudo sed -i 's/azure\.//' /etc/apt/sources.list && sudo apt update && sudo apt install cmake rpm
- name: Generate CMakeFiles
run: mkdir build && cd build && sudo cmake ${{matrix.cfg.cmake-options}} -DDPP_NO_VCPKG=ON -DCMAKE_BUILD_TYPE=Release -DAVX_TYPE=AVX0 ..
- name: Compile Source
run: cd build && sudo make -j2
- name: Package Distributable
run: cd build && sudo cpack --verbose || cat /home/runner/work/DPP/DPP/build/_CPack_Packages/Linux/DEB/PreinstallOutput.log
- name: Upload Binaries (DEB)
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: "libdpp - Debian Package ${{matrix.cfg.name}}"
path: "${{github.workspace}}/build/*.deb"
- name: Upload Binaries (RPM)
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: "libdpp - RPM Package ${{matrix.cfg.name}}"
path: "${{github.workspace}}/build/*.rpm"
# testfreebsd:
# runs-on: macos-10.15
# name: FreeBSD (g++-10)
# steps:
# - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
# - name: FreeBSD Build and Package
# id: freebsdtest
# uses: vmactions/[email protected]
# with:
# usesh: true
# prepare: pkg install -y openssl-devel gcc gmake cmake git
# run: |
# pwd
# ls -lah
# mkdir build
# cd build
# cmake -DAVX_TYPE=AVX0 -DDPP_NO_VCPKG=ON -DCMAKE_BUILD_TYPE=Release ..
# make -j2
# make install
# cpack --verbose
#
# - name: Upload Binaries (BZ2)
# uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
# with:
# name: "libdpp - FreeBSD x64"
# path: "${{github.workspace}}/build/*.tar.bz2"