fix parsing transmission 3.00 fingerprint #5882
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Linux | |
| on: | |
| push: | |
| branches: [ RC_2_1, master ] | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.ref }}-${{ github.workflow }}-${{ github.event_name }} | |
| cancel-in-progress: true | |
| jobs: | |
| pre-commit: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 2 | |
| filter: tree:0 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.x" | |
| - name: install clang-format-18 | |
| timeout-minutes: 5 | |
| run: sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y clang-format-18 | |
| - uses: j178/prek-action@v2 | |
| - name: clang-format check (changed lines vs PR base) | |
| if: github.event_name == 'pull_request' | |
| run: git-clang-format-18 --binary clang-format-18 --diff HEAD^1 | |
| build: | |
| name: build | |
| runs-on: ${{ matrix.std.os }} | |
| strategy: | |
| matrix: | |
| std: | |
| - { version: 17, os: ubuntu-22.04 } | |
| - { version: 20, os: ubuntu-22.04 } | |
| - { version: 23, os: ubuntu-24.04 } | |
| - { version: 26, os: ubuntu-24.04 } | |
| config: | |
| - webtorrent=off asio-debugging=on picker-debugging=on | |
| - webtorrent=off extensions=off logging=off streaming=off super-seeding=off share-mode=off predictive-pieces=off dht=off alert-msg=off encryption=off mutable-torrents=off deprecated-functions=off | |
| - webtorrent=off crypto=gcrypt | |
| - webtorrent=off mmap-disk-io=off | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| fetch-depth: 1 | |
| filter: tree:0 | |
| - name: update package lists | |
| continue-on-error: true | |
| timeout-minutes: 5 | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update | |
| - uses: Chocobo1/setup-ccache-action@v1 | |
| with: | |
| update_packager_index: false | |
| override_cache_key: ccache-linux-build-${{ github.base_ref || github.ref_name }}-${{ matrix.std.version }}-${{ matrix.config }} | |
| ccache_options: | | |
| max_size=5G | |
| - name: install boost | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-python-dev libboost-tools-dev libboost-dev libboost-system-dev python3 | |
| - name: configure toolchain | |
| run: | | |
| if [ "${{ matrix.std.version }}" = "23" ] || [ "${{ matrix.std.version }}" = "26" ]; then | |
| # gcc-14 (needed for -std=c++26) is preinstalled on the noble runner | |
| echo "using gcc : : g++-14 ;" >>~/user-config.jam | |
| else | |
| echo "using gcc ;" >>~/user-config.jam | |
| fi | |
| - name: install gcrypt | |
| if: ${{ contains(matrix.config, 'crypto=gcrypt') }} | |
| run: sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libgcrypt20-dev | |
| - name: build library | |
| run: | | |
| b2 ${{ matrix.config }} cxxstd=${{ matrix.std.version }} warnings-as-errors=on | |
| - name: build examples | |
| run: | | |
| cd examples | |
| b2 ${{ matrix.config }} cxxstd=${{ matrix.std.version }} warnings-as-errors=on | |
| - name: build tools | |
| run: | | |
| cd tools | |
| b2 ${{ matrix.config }} cxxstd=${{ matrix.std.version }} warnings-as-errors=on | |
| - name: build python bindings | |
| run: | | |
| cd bindings/python | |
| echo "using python ;" >>~/user-config.jam | |
| BOOST_ROOT="" b2 ${{ matrix.config }} cxxstd=${{ matrix.std.version }} warnings-as-errors=on | |
| cmake: | |
| name: cmake | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 1 | |
| filter: tree:0 | |
| - name: update package lists | |
| continue-on-error: true | |
| timeout-minutes: 5 | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update | |
| - uses: Chocobo1/setup-ccache-action@v1 | |
| with: | |
| update_packager_index: false | |
| override_cache_key: ccache-linux-cmake-${{ github.base_ref }} | |
| ccache_options: | | |
| max_size=5G | |
| - name: install boost | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev libboost-json-dev ninja-build | |
| pip install websockets | |
| - name: cmake configure | |
| env: | |
| # required by deps/libdatachannel's own deps (usrsctp, plog), which | |
| # declare cmake_minimum_required versions older than modern cmake allows | |
| CMAKE_POLICY_VERSION_MINIMUM: 3.5 | |
| run: | | |
| cmake -B build-cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -Dbuild_tests=ON -Dbuild_examples=ON -Dbuild_tools=ON -Dwebtorrent=on -Dasserts=on -DCMAKE_CXX_STANDARD=17 | |
| - name: cmake build | |
| run: cmake --build build-cmake | |
| - name: ctest | |
| run: | | |
| cd build-cmake | |
| ctest --output-on-failure | |
| - name: cmake install (installed headers are self-sufficient) | |
| run: | | |
| cmake --install build-cmake --prefix "$PWD/install-test" | |
| ./tools/check_installed_headers.py "$PWD/install-test" | |
| fuzzers: | |
| name: Fuzzers | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 1 | |
| filter: tree:0 | |
| - name: update package lists | |
| continue-on-error: true | |
| timeout-minutes: 5 | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update | |
| - uses: Chocobo1/setup-ccache-action@v1 | |
| with: | |
| update_packager_index: false | |
| override_cache_key: ccache-linux-fuzzers-${{ github.base_ref }} | |
| ccache_options: | | |
| max_size=500M | |
| - name: install clang-15 | |
| continue-on-error: true | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y clang-15 | |
| - name: install boost | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev libboost-json-dev | |
| echo "using clang : 15 : clang++-15 ;" >>~/user-config.jam | |
| - name: build fuzzers | |
| run: | | |
| cd fuzzers | |
| b2 clang deprecated-functions=on,off warnings-as-errors=on | |
| check_headers: | |
| name: check headers | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 1 | |
| filter: tree:0 | |
| - name: update package lists | |
| continue-on-error: true | |
| timeout-minutes: 5 | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update | |
| - uses: Chocobo1/setup-ccache-action@v1 | |
| with: | |
| update_packager_index: false | |
| override_cache_key: ccache-linux-check-headers-${{ github.base_ref }} | |
| ccache_options: | | |
| max_size=500M | |
| - name: install boost | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev libboost-json-dev | |
| echo "using gcc ;" >>~/user-config.jam | |
| - name: compile header files individually | |
| run: | | |
| b2 check-headers warnings-as-errors=on | |
| test: | |
| name: Tests | |
| runs-on: ubuntu-24.04 | |
| strategy: | |
| matrix: | |
| include: | |
| - config: webtorrent=on address-sanitizer=norecover undefined-sanitizer=norecover crypto=openssl invariant-checks=on | |
| - config: toolset=clang logging=off address-sanitizer=norecover undefined-sanitizer=norecover invariant-checks=on | |
| # thread-sanitizer is left off webtorrent: libdatachannel's third-party | |
| # deps (usrsctp, libjuice) are multi-threaded and not vetted against TSan, | |
| # which would make this job noisy/flaky for reasons outside our control | |
| - config: webtorrent=off thread-sanitizer=norecover crypto=openssl release debug-symbols=on cxxflags=-Wno-tsan | |
| - config: crypto=gnutls invariant-checks=full | |
| - config: deprecated-functions=off invariant-checks=full | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 1 | |
| filter: tree:0 | |
| - name: update package lists | |
| continue-on-error: true | |
| timeout-minutes: 5 | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update | |
| - uses: Chocobo1/setup-ccache-action@v1 | |
| with: | |
| update_packager_index: false | |
| override_cache_key: ccache-linux-tests-${{ matrix.config }}-${{ github.base_ref }} | |
| ccache_options: | | |
| max_size=5G | |
| - name: install gnutls | |
| if: ${{ contains(matrix.config, 'crypto=gnutls') }} | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libgnutls28-dev | |
| - name: install boost.json | |
| if: ${{ !contains(matrix.config, 'webtorrent=off') }} | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-json-dev | |
| - name: install clang-16 | |
| continue-on-error: true | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y clang-16 | |
| - name: install GCC-14 | |
| continue-on-error: true | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y gcc-14 | |
| - name: install boost | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev | |
| pip install websockets | |
| echo "using gcc : 14 : g++-14 ;" >>~/user-config.jam | |
| echo "using clang : 16 : clang++-16 ;" >>~/user-config.jam | |
| - name: build and run tests | |
| env: | |
| LSAN_OPTIONS: suppressions=${{ github.workspace }}/.asan.suppressions | |
| run: | | |
| cd test | |
| b2 ${{ matrix.config }} -l500 warnings-as-errors=on debug-iterators=on asserts=on deterministic-tests | |
| b2 ${{ matrix.config }} -l500 testing.execute=off warnings-as-errors=on debug-iterators=on asserts=on test_lsd test_hasher test_hasher512 test_natpmp enum_if | |
| b2 ${{ matrix.config }} -l500 warnings-as-errors=on debug-iterators=on asserts=on simulate-slow=hash test_slow_hash | |
| b2 ${{ matrix.config }} -l500 warnings-as-errors=on debug-iterators=on asserts=on simulate-slow=write test_disk_io | |
| - name: run tests (flaky) | |
| env: | |
| LSAN_OPTIONS: suppressions=${{ github.workspace }}/.asan.suppressions | |
| uses: nick-fields/retry@v4 | |
| with: | |
| timeout_minutes: 90 | |
| retry_wait_seconds: 4 | |
| max_attempts: 3 | |
| command: (cd test; b2 ${{ matrix.config }} -l1800 warnings-as-errors=on debug-iterators=on asserts=on) | |
| test-32bit: | |
| name: Tests (32-bit) | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 1 | |
| filter: tree:0 | |
| - name: update package lists | |
| continue-on-error: true | |
| timeout-minutes: 5 | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update | |
| - uses: Chocobo1/setup-ccache-action@v1 | |
| with: | |
| update_packager_index: false | |
| override_cache_key: ccache-linux-tests-32bit-${{ github.base_ref }} | |
| ccache_options: | | |
| max_size=5G | |
| - name: install 32-bit toolchain | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y g++-multilib | |
| - name: install boost from source | |
| run: | | |
| wget -nv -O boost.tar.gz https://archives.boost.io/release/1.86.0/source/boost_1_86_0.tar.gz | |
| tar xzf boost.tar.gz | |
| mv boost_1_86_0 boost | |
| cd boost | |
| ./bootstrap.sh | |
| ./b2 headers | |
| - name: configure user-config.jam | |
| run: echo "using gcc ;" >>~/user-config.jam | |
| - name: build and run tests (32-bit) | |
| env: | |
| BOOST_ROOT: ${{ github.workspace }}/boost | |
| BOOST_BUILD_PATH: ${{ github.workspace }}/boost/tools/build | |
| run: | | |
| cd test | |
| ${BOOST_ROOT}/b2 address-model=32 architecture=x86 -l500 \ | |
| crypto=built-in warnings-as-errors=on debug-iterators=on asserts=on \ | |
| webtorrent=off deterministic-tests | |
| sim: | |
| name: Simulations | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| fetch-depth: 1 | |
| filter: tree:0 | |
| - name: update package lists | |
| continue-on-error: true | |
| timeout-minutes: 5 | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update | |
| - uses: Chocobo1/setup-ccache-action@v1 | |
| with: | |
| update_packager_index: false | |
| override_cache_key: ccache-linux-simulations-${{ github.base_ref }} | |
| ccache_options: | | |
| max_size=5G | |
| - name: install boost | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev | |
| echo "using gcc ;" >>~/user-config.jam | |
| - name: build and run simulations | |
| run: | | |
| cd simulation | |
| b2 debug-iterators=on invariant-checks=full asserts=on picker-debugging=on | |
| - name: build simulations no deprecated | |
| run: | | |
| cd simulation | |
| b2 testing.execute=off deprecated-functions=off | |
| disk-stress: | |
| name: disk I/O stress (smoke) | |
| runs-on: ubuntu-24.04 | |
| strategy: | |
| matrix: | |
| config: | |
| - webtorrent=off release asserts=on debug-iterators=on | |
| - webtorrent=off release asserts=on debug-iterators=on address-sanitizer=norecover undefined-sanitizer=norecover crypto=openssl | |
| - webtorrent=off release asserts=on debug-iterators=on thread-sanitizer=norecover crypto=openssl debug-symbols=on cxxflags=-Wno-tsan | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: true | |
| fetch-depth: 1 | |
| filter: tree:0 | |
| - name: update package lists | |
| continue-on-error: true | |
| timeout-minutes: 5 | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=10 -o Acquire::https::Timeout=10 update | |
| - uses: Chocobo1/setup-ccache-action@v1 | |
| with: | |
| update_packager_index: false | |
| override_cache_key: ccache-linux-disk-stress-${{ matrix.config }}-${{ github.base_ref }} | |
| ccache_options: | | |
| max_size=5G | |
| - name: install boost | |
| run: | | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libboost-tools-dev libboost-dev libboost-system-dev | |
| echo "using gcc ;" >>~/user-config.jam | |
| - name: build disk_io_stress_test | |
| run: | | |
| cd tools | |
| b2 ${{ matrix.config }} warnings-as-errors=on stage | |
| - name: run smoke suite | |
| env: | |
| LSAN_OPTIONS: suppressions=${{ github.workspace }}/.asan.suppressions | |
| run: | | |
| cd tools | |
| ./disk_io_stress_test smoke |