name: Build Check - AppImage, Arch, Fedora on: workflow_dispatch: pull_request: paths: - 'build-aux/**' env: PKGDEST: "/tmp/portprotonqt" PACKAGE: "portprotonqt" jobs: changes: runs-on: ubuntu-latest outputs: appimage: ${{ steps.check.outputs.appimage }} fedora: ${{ steps.check.outputs.fedora }} arch: ${{ steps.check.outputs.arch }} steps: - uses: https://gitea.com/actions/checkout@v4 with: fetch-depth: 0 - name: Ensure git is installed run: | sudo apt update sudo apt install -y git - name: Check changed files id: check run: | # Get changed files git diff --name-only ${{ github.event.pull_request.base.sha }}...${{ github.event.pull_request.head.sha }} > changed_files.txt echo "Changed files:" cat changed_files.txt # Check AppImage files if grep -q "build-aux/AppImageBuilder.yml" changed_files.txt; then echo "appimage=true" >> $GITHUB_OUTPUT else echo "appimage=false" >> $GITHUB_OUTPUT fi # Check Fedora spec files (only fedora-git.spec) if grep -q "build-aux/fedora-git.spec" changed_files.txt; then echo "fedora=true" >> $GITHUB_OUTPUT else echo "fedora=false" >> $GITHUB_OUTPUT fi # Check Arch PKGBUILD-git if grep -q "build-aux/PKGBUILD-git" changed_files.txt; then echo "arch=true" >> $GITHUB_OUTPUT else echo "arch=false" >> $GITHUB_OUTPUT fi build-appimage: name: Build AppImage runs-on: ubuntu-22.04 needs: changes if: needs.changes.outputs.appimage == 'true' || github.event_name == 'workflow_dispatch' steps: - uses: https://gitea.com/actions/checkout@v4 - name: Install required dependencies run: | sudo apt update sudo apt install -y binutils coreutils desktop-file-utils gtk-update-icon-cache fakeroot fuse libgdk-pixbuf2.0-dev patchelf python3-pip python3-dev python3-setuptools squashfs-tools strace util-linux zsync git - name: Install tools run: | pip3 install git+https://github.com/AppImageCrafters/appimage-builder.git pip3 install uv - name: Build AppImage run: | cd build-aux sed -i '/app_info:/,/- exec:/ s/^(\s*version:\s*).*/\1"0"/' AppImageBuilder.yml appimage-builder - name: Upload AppImage uses: https://gitea.com/actions/gitea-upload-artifact@v4 with: name: PortProtonQt-AppImage path: build-aux/PortProtonQt*.AppImage build-fedora: name: Build Fedora RPM runs-on: ubuntu-latest needs: changes if: needs.changes.outputs.fedora == 'true' || github.event_name == 'workflow_dispatch' strategy: matrix: fedora_version: [41, 42, rawhide] container: image: fedora:${{ matrix.fedora_version }} options: --privileged steps: - name: Install build dependencies run: | dnf install -y git rpmdevtools python3-devel python3-wheel python3-pip \ python3-build pyproject-rpm-macros python3-setuptools \ redhat-rpm-config nodejs npm - name: Setup rpmbuild environment run: | useradd rpmbuild -u 5002 -g users || true mkdir -p /home/rpmbuild/{BUILD,RPMS,SPECS,SRPMS,SOURCES} chown -R rpmbuild:users /home/rpmbuild echo '%_topdir /home/rpmbuild' > /home/rpmbuild/.rpmmacros - name: Checkout repo uses: https://gitea.com/actions/checkout@v4 - name: Copy fedora-git.spec run: | cp build-aux/fedora-git.spec /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec chown -R rpmbuild:users /home/rpmbuild - name: Build RPM run: | su rpmbuild -c "rpmbuild -ba /home/rpmbuild/SPECS/${{ env.PACKAGE }}.spec" - name: Upload RPM package uses: https://gitea.com/actions/gitea-upload-artifact@v4 with: name: PortProtonQt-RPM-Fedora-${{ matrix.fedora_version }} path: /home/rpmbuild/RPMS/**/*.rpm build-arch: name: Build Arch Package runs-on: ubuntu-22.04 needs: changes if: needs.changes.outputs.arch == 'true' || github.event_name == 'workflow_dispatch' container: image: archlinux:base-devel volumes: - /usr:/usr-host - /opt:/opt-host options: --privileged steps: - name: Prepare container run: | pacman -Sy --noconfirm --disable-download-timeout --needed git wget gnupg nodejs npm sed -i 's/#MAKEFLAGS="-j2"/MAKEFLAGS="-j$(nproc) -l$(nproc)"/g' /etc/makepkg.conf sed -i 's/OPTIONS=(.*)/OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge lto)/g' /etc/makepkg.conf yes | pacman -Scc pacman-key --init pacman -S --noconfirm archlinux-keyring mkdir -p /__w/portproton-repo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com pacman-key --lsign-key 3056513887B78AEB pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst' cat << EOM >> /etc/pacman.conf [chaotic-aur] Include = /etc/pacman.d/chaotic-mirrorlist EOM pacman -Syy useradd -m user -G wheel && echo "user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers echo "PACKAGER=\"Boris Yumankulov \"" >> /etc/makepkg.conf chown user -R /tmp chown user -R .. - name: Build run: | cd /__w/portproton-repo git clone https://git.linux-gaming.ru/Boria138/PortProtonQt.git cd /__w/portproton-repo/PortProtonQt/build-aux chown user -R .. su user -c "yes '' | makepkg --noconfirm -s -p PKGBUILD-git" - name: Checkout uses: https://gitea.com/actions/checkout@v4 - name: Upload Arch package uses: https://gitea.com/actions/gitea-upload-artifact@v4 with: name: PortProtonQt-Arch path: ${{ env.PKGDEST }}/*