pax_global_header00006660000000000000000000000064150136644110014513gustar00rootroot0000000000000052 comment=428703f232dee5bde0ada047d6b04a67f5c3a77e wiRedPanda-4.2.6/000077500000000000000000000000001501366441100135425ustar00rootroot00000000000000wiRedPanda-4.2.6/.gitattributes000066400000000000000000000005721501366441100164410ustar00rootroot00000000000000# 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.6/.github/000077500000000000000000000000001501366441100151025ustar00rootroot00000000000000wiRedPanda-4.2.6/.github/workflows/000077500000000000000000000000001501366441100171375ustar00rootroot00000000000000wiRedPanda-4.2.6/.github/workflows/build.yml000066400000000000000000000043051501366441100207630ustar00rootroot00000000000000# 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 - wasm pull_request: branches: - master types: [opened, synchronize, reopened] jobs: build: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] qt: [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.3, 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 Qt uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt }} cache: true aqtversion: ==3.2.* modules: ${{ startsWith(matrix.qt, '6') && 'qtmultimedia qtimageformats' || '' }} - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }}-${{ matrix.qt }} # ================================= - 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: | ./build/test/WPanda-test -platform offscreen # ================================= - name: Setup Windows 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.6/.github/workflows/build_cmake.yml000066400000000000000000000052011501366441100221170ustar00rootroot00000000000000# 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 - wasm pull_request: branches: - master types: [opened, synchronize, reopened] jobs: build_cmake: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] qt: [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.3, 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 CUPS dependency for Qt 6.7.* if: runner.os == 'Linux' && startsWith(matrix.qt, '6.7') run: sudo apt-get update && sudo apt-get install -y libcups2-dev - name: Install Ninja on Ubuntu if: runner.os == 'Linux' run: sudo apt-get update && sudo apt-get install -y ninja-build - name: Install Qt uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt }} cache: true aqtversion: ==3.2.* modules: ${{ startsWith(matrix.qt, '6') && 'qtmultimedia qtimageformats' || '' }} - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }}-${{ matrix.qt }} # ================================= - name: Build Ubuntu if: runner.os == 'Linux' run: | cmake -S . -B build -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=$QT_INSTALL_PATH cmake --build build - name: Test Ubuntu if: runner.os == 'Linux' run: | ./build/test -platform offscreen # ================================= - name: Setup Windows MSVC Toolchain if: runner.os == 'Windows' uses: pbeast/gha-setup-vsdevenv@master - name: Build Windows if: runner.os == 'Windows' run: | cmake -S . -B build -G Ninja ` -DCMAKE_PREFIX_PATH=$QT_INSTALL_PATH cmake --build build - name: Test Windows if: runner.os == 'Windows' run: | ./build/test.exe # ================================= - name: Build macOS if: runner.os == 'macOS' run: | cmake -S . -B build -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=$QT_INSTALL_PATH cmake --build build - name: Test macOS if: runner.os == 'macOS' run: | ./build/test wiRedPanda-4.2.6/.github/workflows/codeql.yml000066400000000000000000000020771501366441100211370ustar00rootroot00000000000000# 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: | ./build/test/WPanda-test -platform offscreen - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 wiRedPanda-4.2.6/.github/workflows/coverage.yml000066400000000000000000000020431501366441100214540ustar00rootroot00000000000000# 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: | ./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.6/.github/workflows/deploy.yml000066400000000000000000000251741501366441100211670ustar00rootroot00000000000000# 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-latest, windows-latest, macos-latest] qt: [5.15.2, 6.9.0] # ================================= runs-on: ${{ matrix.os }} container: ${{ matrix.os == 'ubuntu-latest' && 'ubuntu:20.04' || '' }} steps: - name: Install Ubuntu dependencies if: runner.os == 'Linux' run: | export DEBIAN_FRONTEND=noninteractive apt-get update apt-get install -y \ build-essential \ cmake \ git \ jq \ libasound2 \ libcups2 \ libcurl4-openssl-dev \ libfontconfig1-dev \ libfreetype6-dev \ libfuse2 \ libgstreamer-gl1.0-0 \ libx11-dev \ libx11-xcb-dev \ libxcb-cursor0 \ libxcb-glx0-dev \ libxcb-icccm4-dev \ libxcb-image0-dev \ libxcb-keysyms1-dev \ libxcb-randr0-dev \ libxcb-render-util0-dev \ libxcb-shape0-dev \ libxcb-shm0-dev \ libxcb-sync0-dev \ libxcb-xfixes0-dev \ libxcb1-dev \ libxext-dev \ libxfixes-dev \ libxi-dev \ libxkbcommon-dev \ libxkbcommon-x11-dev \ libxrandr2 \ libxrender-dev \ ninja-build \ sudo \ wget - name: Install Ubuntu Python if: runner.os == 'Linux' run: | apt-get install -y software-properties-common add-apt-repository ppa:deadsnakes/ppa apt-get update apt-get install -y curl python3.10 ln -sf /usr/bin/python3.10 /usr/bin/python3 curl -sS https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel - 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 Qt uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt }} arch: ${{ matrix.os == 'windows-latest' && matrix.qt == '5.15.2' && 'win32_msvc2019' || '' }} cache: true aqtversion: ==3.2.* modules: ${{ startsWith(matrix.qt, '6') && 'qtmultimedia qtimageformats debug_info' || 'debug_info' }} setup-python: ${{ matrix.os == 'ubuntu-latest' && 'false' || 'true' }} - name: ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: ${{ matrix.os }}-${{ matrix.qt }} # ================================= - name: Compile Ubuntu Sentry SDK if: runner.os == 'Linux' 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 -G Ninja cmake --build build cmake --install build --prefix ../../thirdparty/sentry - name: Build Ubuntu if: runner.os == 'Linux' run: | 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: | ./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 ./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract VERSION=$VERSION ./squashfs-root/usr/bin/linuxdeployqt ./appimage/wiredpanda -appimage rm ./linuxdeployqt-continuous-x86_64.AppImage mv wiRedPanda-$VERSION-x86_64.AppImage wiRedPanda-$VERSION-Ubuntu-Qt${{ matrix.qt }}.AppImage - name: Upload Ubuntu Debug Symbols to Sentry if: runner.os == 'Linux' env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} run: | git config --global --add safe.directory '*' 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 debug-files upload --include-sources -p wiredpanda $QT_ROOT_DIR 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 Windows MSVC Toolchain if: runner.os == 'Windows' uses: pbeast/gha-setup-vsdevenv@master with: arch: ${{ startsWith(matrix.qt, '5') && 'x86' || 'x64' }} - name: Compile Windows 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 -DCMAKE_BUILD_TYPE=RelWithDebInfo -G Ninja cmake --build build cmake --install build --prefix ../../thirdparty/sentry - 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-Qt${{ matrix.qt }}-Portable.zip - name: Upload Windows Debug Symbols to Sentry if: runner.os == 'Windows' env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} run: | ./sentry-cli.exe login --auth-token $env:SENTRY_AUTH_TOKEN ./sentry-cli.exe releases new wiredpanda@$env:VERSION -p wiredpanda ./sentry-cli.exe debug-files upload --include-sources -p wiredpanda build/app/ ./sentry-cli.exe debug-files upload --include-sources -p wiredpanda D:/a/wiRedPanda/Qt/ ./sentry-cli.exe releases set-commits --auto wiredpanda@$env:VERSION --log-level=debug - name: Publish Windows if: runner.os == 'Windows' uses: softprops/action-gh-release@v2 with: fail_on_unmatched_files: true files: 'build/app/*.zip' # ================================= - name: Compile macOS 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" -G Ninja cmake --build build 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: Generate macOS dSYM Symbols if: runner.os == 'macOS' run: | cd build/app dsymutil wiredpanda.app/Contents/MacOS/wiredpanda -o wiredpanda.app.dSYM - 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-Qt${{ matrix.qt }}.dmg - name: Upload macOS 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 debug-files upload --include-sources -p wiredpanda $QT_ROOT_DIR sentry-cli releases set-commits --auto "wiredpanda@$VERSION" --log-level=debug - name: Publish macOS if: runner.os == 'macOS' uses: softprops/action-gh-release@v2 with: fail_on_unmatched_files: true files: 'build/app/*.dmg' wiRedPanda-4.2.6/.github/workflows/translate.yml000066400000000000000000000022611501366441100216600ustar00rootroot00000000000000name: Update Qt Translations on: pull_request: branches: - master types: [opened, synchronize, reopened] jobs: update-translations: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Qt uses: jurplel/install-qt-action@v4 with: version: 6.9.0 cache: true aqtversion: ==3.2.* modules: qtmultimedia - name: Run lupdate run: | lupdate WPanda.pro lrelease WPanda.pro - name: Commit and push if translation files changed if: github.event.pull_request.head.repo.full_name == github.repository run: | git config user.name "GitHub Actions" git config user.email "actions@github.com" if ! git diff --quiet; then git add app/resources/translations/* git commit -m "Update translation files via lupdate/lrelease" git fetch origin ${{ github.head_ref }} git rebase origin/${{ github.head_ref }} git push origin HEAD:${{ github.head_ref }} else echo "No translation updates needed" fi wiRedPanda-4.2.6/.github/workflows/wasm.yml000066400000000000000000000045071501366441100206370ustar00rootroot00000000000000# 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 - name: Setup Qt for WASM uses: jurplel/install-qt-action@v4 with: version: 6.9.0 host: all_os target: wasm arch: wasm_multithread modules: qtmultimedia qtimageformats extra: --autodesktop cache: true - name: Setup emscripten run: | git clone https://github.com/emscripten-core/emsdk cd emsdk ./emsdk install 3.1.70 ./emsdk activate 3.1.70 - name: Setup ccache uses: hendrikmuhs/ccache-action@v1.2 with: key: wasm-ubuntu-6.9.0 - 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 '/