pax_global_header00006660000000000000000000000064147621426440014524gustar00rootroot0000000000000052 comment=c3845cc07555a4bcebb18c79ea1a8399fe775243 wiRedPanda-4.2.1/000077500000000000000000000000001476214264400135465ustar00rootroot00000000000000wiRedPanda-4.2.1/.gitattributes000066400000000000000000000005721476214264400164450ustar00rootroot00000000000000# Auto detect text files and perform LF normalization * text=auto # Custom for Visual Studio *.cs diff=csharp # Standard to msysgit *.doc diff=astextplain *.DOC diff=astextplain *.docx diff=astextplain *.DOCX diff=astextplain *.dot diff=astextplain *.DOT diff=astextplain *.pdf diff=astextplain *.PDF diff=astextplain *.rtf diff=astextplain *.RTF diff=astextplain wiRedPanda-4.2.1/.github/000077500000000000000000000000001476214264400151065ustar00rootroot00000000000000wiRedPanda-4.2.1/.github/workflows/000077500000000000000000000000001476214264400171435ustar00rootroot00000000000000wiRedPanda-4.2.1/.github/workflows/build.yml000066400000000000000000000046511476214264400207730ustar00rootroot00000000000000# Copyright 2015 - 2025, GIBIS-Unifesp and the wiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later name: Build qmake on: push: branches-ignore: - master pull_request: branches: - master types: [opened, synchronize, reopened] jobs: build: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] qt_version: [5.12.12, 5.13.2, 5.14.2, 5.15.2, 6.2.4, 6.3.2, 6.4.3, 6.5.3, 6.6.3, 6.7.3, 6.8.2, 6.9.0] # ================================= runs-on: ${{ matrix.os }} if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Install Qt5 if: startsWith(matrix.qt_version, '5') uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_version }} cache: true aqtversion: ==3.2.* - name: Install Qt6 if: startsWith(matrix.qt_version, '6') uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_version }} modules: qtmultimedia qtimageformats cache: true aqtversion: ==3.2.* - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }}-${{ matrix.qt_version }} # ================================= - name: Build Ubuntu if: runner.os == 'Linux' run: | mkdir build cd build qmake ../WPanda.pro make -j4 - name: Test Ubuntu if: runner.os == 'Linux' run: | cd build/test ./WPanda-test -platform offscreen # ================================= - name: Setup MSVC Toolchain if: runner.os == 'Windows' uses: pbeast/gha-setup-vsdevenv@master - name: Build Windows if: runner.os == 'Windows' run: | choco install jom mkdir build cd build qmake ../WPanda.pro jom - name: Test Windows if: runner.os == 'Windows' run: | cd build jom check # ================================= - name: Build macOS if: runner.os == 'macOS' run: | mkdir build cd build qmake ../WPanda.pro make -j3 - name: Test macOS if: runner.os == 'macOS' run: | cd build make check wiRedPanda-4.2.1/.github/workflows/build_cmake.yml000066400000000000000000000053441476214264400221330ustar00rootroot00000000000000# Copyright 2015 - 2025, GIBIS-Unifesp and the wiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later name: Build CMake on: push: branches-ignore: - master pull_request: branches: - master types: [opened, synchronize, reopened] jobs: build_cmake: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] qt_version: [5.12.12, 5.13.2, 5.14.2, 5.15.2, 6.2.4, 6.3.2, 6.4.3, 6.5.3, 6.6.3, 6.7.3, 6.8.2, 6.9.0] # ================================= runs-on: ${{ matrix.os }} if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name steps: - uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Install Qt5 if: startsWith(matrix.qt_version, '5') uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_version }} cache: true aqtversion: ==3.2.* - name: Install CUPS dependency for Qt 6.7.* if: matrix.os == 'ubuntu-latest' && startsWith(matrix.qt_version, '6.7') run: sudo apt update && sudo apt install -y libcups2-dev - name: Install Qt6 if: startsWith(matrix.qt_version, '6') uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_version }} modules: qtmultimedia qtimageformats cache: true aqtversion: ==3.2.* - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }}-${{ matrix.qt_version }} # ================================= - name: Build Ubuntu if: runner.os == 'Linux' run: | cmake -S . -B build \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=$QT_INSTALL_PATH cmake --build build - name: Test Ubuntu if: runner.os == 'Linux' run: | cd build ./test -platform offscreen # ================================= - name: Setup MSVC Toolchain if: runner.os == 'Windows' uses: pbeast/gha-setup-vsdevenv@master - name: Build Windows if: runner.os == 'Windows' run: | cmake -S . -B build ` -DCMAKE_PREFIX_PATH=$QT_INSTALL_PATH cmake --build build - name: Test Windows if: runner.os == 'Windows' run: | cd build/Debug ./test.exe # ================================= - name: Build macOS if: runner.os == 'macOS' run: | cmake -S . -B build \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=$QT_INSTALL_PATH cmake --build build - name: Test macOS if: runner.os == 'macOS' run: | cd build ./test wiRedPanda-4.2.1/.github/workflows/codeql.yml000066400000000000000000000021121476214264400211310ustar00rootroot00000000000000# Copyright 2015 - 2025, GIBIS-Unifesp and the wiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later name: "CodeQL" on: push: branches: - master jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write strategy: fail-fast: false steps: - name: Checkout repository uses: actions/checkout@v4 - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: cpp - name: Install Qt5 uses: jurplel/install-qt-action@v4 with: version: 5.15.2 cache: true aqtversion: ==3.2.* - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ubuntu-latest-5.15.2 - name: Build run: | mkdir build cd build qmake ../WPanda.pro make -j4 - name: Test run: | cd build/test ./WPanda-test -platform offscreen - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 wiRedPanda-4.2.1/.github/workflows/coverage.yml000066400000000000000000000020561476214264400214640ustar00rootroot00000000000000# Copyright 2015 - 2025, GIBIS-Unifesp and the wiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later name: Coverage on: push: branches: - master jobs: Ubuntu-Qt5_15_2-Code_Coverage: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Install Qt5 uses: jurplel/install-qt-action@v4 with: version: 5.15.2 cache: true aqtversion: ==3.2.* - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ubuntu-latest-5.15.2 - name: Build run: | mkdir build cd build qmake ../WPanda.pro CONFIG+=coverage make -j4 - name: Test run: | cd build/test ./WPanda-test -platform offscreen - name: Upload coverage data run: | cd build/test gcov -abcfu build_files/obj/*.o curl -Os https://uploader.codecov.io/latest/linux/codecov chmod +x ./codecov ./codecovwiRedPanda-4.2.1/.github/workflows/deploy.yml000066400000000000000000000214211476214264400211620ustar00rootroot00000000000000# Copyright 2015 - 2025, GIBIS-Unifesp and the wiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later name: Deploy on: release: types: [published] jobs: build: strategy: fail-fast: false matrix: os: [ubuntu-20.04, windows-latest, macos-latest] # ================================= runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 - name: Extract Version run: echo "VERSION=$(echo $GITHUB_REF | sed 's|refs/tags/||')" >> $GITHUB_ENV shell: bash - name: Install Sentry CLI run: | if [ "$RUNNER_OS" == "Windows" ]; then LATEST_VERSION=$(curl -s https://api.github.com/repos/getsentry/sentry-cli/releases/latest | jq -r .tag_name) curl -LO "https://github.com/getsentry/sentry-cli/releases/download/$LATEST_VERSION/sentry-cli-Windows-x86_64.exe" mv sentry-cli-Windows-x86_64.exe sentry-cli.exe ACTUAL_VERSION=$(./sentry-cli.exe -V 2>&1 | tr -d '\r') if [[ ! "$ACTUAL_VERSION" =~ ^sentry-cli ]]; then echo "Downloaded Sentry CLI binary is invalid!" >&2 exit 1 fi else curl -sL https://sentry.io/get-cli/ | bash fi shell: bash - name: Install Qt5 32bit if: matrix.os == 'windows-latest' uses: jurplel/install-qt-action@v4 with: version: 5.15.2 cache: true arch: win32_msvc2019 aqtversion: ==3.2.* - name: Install Qt5 64bit if: matrix.os != 'windows-latest' uses: jurplel/install-qt-action@v4 with: version: 5.15.2 cache: true aqtversion: ==3.2.* - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }}-5.15.2 # ================================= - name: Compile Sentry SDK if: runner.os == 'Linux' run: | sudo apt install libcurl4-openssl-dev git clone --recursive https://github.com/getsentry/sentry-native.git mkdir -p sentry-native/build cd sentry-native/build cmake .. -B build -D SENTRY_BACKEND=crashpad -D CMAKE_BUILD_TYPE=RelWithDebInfo cmake --build build --parallel cmake --install build --prefix ../../thirdparty/sentry - name: Build Ubuntu if: runner.os == 'Linux' run: | sudo apt install libgstreamer-gl1.0-0 libfuse2 libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxkbcommon-dev libxkbcommon-x11-dev mkdir build cd build qmake ../WPanda.pro make -j4 mkdir -p app/lib test/lib cp ../thirdparty/sentry/bin/crashpad_handler app/ cp ../thirdparty/sentry/lib/libsentry.so app/lib/ cp ../thirdparty/sentry/lib/libsentry.so test/lib/ - name: Test Ubuntu if: runner.os == 'Linux' run: | cd build/test ./WPanda-test -platform offscreen - name: linuxdeployqt if: runner.os == 'Linux' run: | mkdir -p appimage appimage/lib cp app/resources/wpanda.desktop appimage/wpanda.desktop cp app/resources/wpanda.svg appimage/wpanda_icon.svg cp build/app/wiredpanda appimage cp thirdparty/sentry/lib/libsentry.so appimage/lib/ wget https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage chmod +x ./linuxdeployqt-continuous-x86_64.AppImage VERSION=$VERSION ./linuxdeployqt-continuous-x86_64.AppImage appimage/wiredpanda -appimage rm ./linuxdeployqt-continuous-x86_64.AppImage mv wiRedPanda-$VERSION-x86_64.AppImage wiRedPanda-$VERSION-Ubuntu-Qt5.AppImage - name: Upload Debug Symbols to Sentry if: runner.os == 'Linux' env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} run: | sentry-cli login --auth-token "$SENTRY_AUTH_TOKEN" sentry-cli releases new "wiredpanda@$VERSION" -p wiredpanda sentry-cli debug-files upload --include-sources -p wiredpanda build/app/ sentry-cli releases set-commits --auto "wiredpanda@$VERSION" --log-level=debug - name: Publish Ubuntu uses: softprops/action-gh-release@v2 if: runner.os == 'Linux' with: fail_on_unmatched_files: true files: '*.AppImage' # ================================= - name: Setup MSVC Toolchain if: startsWith(matrix.os, 'windows') uses: pbeast/gha-setup-vsdevenv@master with: arch: x86 - name: Compile Sentry SDK if: runner.os == 'Windows' run: | git clone --recursive https://github.com/getsentry/sentry-native.git mkdir -p sentry-native/build cd sentry-native/build cmake .. -B build -G "Visual Studio 17 2022" -A Win32 cmake --build build --config RelWithDebInfo cmake --install build --prefix ../../thirdparty/sentry --config RelWithDebInfo - name: Build Windows if: runner.os == 'Windows' run: | choco install jom mkdir build cd build qmake ../WPanda.pro jom cp ../thirdparty/sentry/bin/crashpad_handler.exe app/release/ cp ../thirdparty/sentry/bin/sentry.dll app/release/ cp ../thirdparty/sentry/bin/crashpad_wer.dll app/release/ cp ../thirdparty/sentry/bin/sentry.dll test/release/ - name: Test Windows if: runner.os == 'Windows' run: | cd build jom check - name: windeployqt if: runner.os == 'Windows' run : | cp -r examples build/app/release cd build/app/release windeployqt --compiler-runtime wiredpanda.exe rm wiredpanda_pch.obj rm wiredpanda_pch.pch cd .. ren release wiredpanda-$env:VERSION Compress-Archive -Path wiredpanda-$env:VERSION -DestinationPath wiRedPanda-$env:VERSION-Windows-Qt5-Portable.zip - name: Upload Debug Symbols to Sentry if: runner.os == 'Windows' env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} run: | ./sentry-cli.exe login --auth-token "$SENTRY_AUTH_TOKEN" ./sentry-cli.exe releases new "wiredpanda@$VERSION" -p wiredpanda ./sentry-cli.exe debug-files upload --include-sources -p wiredpanda build/app/ ./sentry-cli.exe releases set-commits --auto "wiredpanda@$VERSION" --log-level=debug - name: Publish Windows uses: softprops/action-gh-release@v2 if: startsWith(matrix.os, 'windows') with: fail_on_unmatched_files: true files: 'build/app/*.zip' # ================================= - name: Compile Sentry SDK if: runner.os == 'macOS' run: | git clone --recursive https://github.com/getsentry/sentry-native.git mkdir -p sentry-native/build cd sentry-native/build cmake .. -B build -D SENTRY_BACKEND=crashpad -D CMAKE_BUILD_TYPE=RelWithDebInfo -D CMAKE_OSX_ARCHITECTURES="x86_64;arm64" cmake --build build --parallel cmake --install build --prefix ../../thirdparty/sentry - name: Build macOS if: runner.os == 'macOS' run: | mkdir build cd build qmake ../WPanda.pro make -j3 mkdir -p app/wiredpanda.app/Contents/MacOS mkdir -p app/wiredpanda.app/Contents/Frameworks cp ../thirdparty/sentry/bin/crashpad_handler app/wiredpanda.app/Contents/MacOS/ cp ../thirdparty/sentry/lib/libsentry.dylib app/wiredpanda.app/Contents/Frameworks/ mkdir -p test/WPanda-test.app/Contents/MacOS mkdir -p test/WPanda-test.app/Contents/Frameworks cp ../thirdparty/sentry/lib/libsentry.dylib test/WPanda-test.app/Contents/Frameworks/ - name: Test macOS if: runner.os == 'macOS' run: | cd build make check - name: macdeployqt if: runner.os == 'macOS' run: | cd build/app macdeployqt wiredpanda.app -dmg mv wiredpanda.dmg wiRedPanda-$VERSION-macOS-Qt5.dmg - name: Upload Debug Symbols to Sentry if: runner.os == 'macOS' env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} run: | sentry-cli login --auth-token "$SENTRY_AUTH_TOKEN" sentry-cli releases new "wiredpanda@$VERSION" -p wiredpanda sentry-cli debug-files upload --include-sources -p wiredpanda build/app/ sentry-cli releases set-commits --auto "wiredpanda@$VERSION" --log-level=debug - name: Publish macOS uses: softprops/action-gh-release@v2 if: runner.os == 'macOS' with: fail_on_unmatched_files: true files: 'build/app/*.dmg' wiRedPanda-4.2.1/.github/workflows/wasm.yml000066400000000000000000000030711476214264400206360ustar00rootroot00000000000000# Copyright 2015 - 2025, GIBIS-Unifesp and the wiRedPanda contributors # SPDX-License-Identifier: GPL-3.0-or-later name: Build WebAssembly on: push: branches: - wasm jobs: build-wasm: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: recursive fetch-depth: 0 # doesn't work with WASM 6.7.*, must wait for aqtinstall fix - name: Setup Qt for WASM uses: jurplel/install-qt-action@v4 with: version: 6.6.3 arch: wasm_multithread modules: qtmultimedia qtimageformats cache: true - name: Setup emscripten run: | git clone https://github.com/emscripten-core/emsdk cd emsdk ./emsdk install 3.1.37 ./emsdk activate 3.1.37 - name: Setup ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: wasm-ubuntu-6.6.3 - name: Build WASM run: | source ./emsdk/emsdk_env.sh mkdir build cd build qmake ../app/app.pro make -j4 rm -rf ./build_files cp wiredpanda.html index.html wget https://github.com/gzuidhof/coi-serviceworker/raw/master/coi-serviceworker.min.js sed -i '/