diff --git a/.github/workflows/build-repo.yml b/.github/workflows/build-repo.yml index 4cb1f30..dc1b095 100644 --- a/.github/workflows/build-repo.yml +++ b/.github/workflows/build-repo.yml @@ -17,22 +17,22 @@ jobs: build-pacman-repo: runs-on: ubuntu-latest container: - image: archlinux:base-devel + image: archlinux/archlinux:base-devel env: DISPLAY: ":1" steps: - name: Container Setup run: | + pacman -Syy --disable-download-timeout --needed --noconfirm \ + archlinux-keyring pacman -Syu --disable-download-timeout --needed --noconfirm \ - archlinux-keyring \ + base-devel \ + cmake \ git \ - reflector \ + jq \ wget \ xorg-server-xvfb - - - name: Update mirrors - run: | - reflector --latest 10 --protocol http,https --sort rate --save /etc/pacman.d/mirrorlist + pacman -Scc --noconfirm - name: Download Pacman Repo Builder env: @@ -44,6 +44,9 @@ jobs: -O /usr/bin/build-pacman-repo chmod +x /usr/bin/build-pacman-repo + # patch makepkg to allow running as root + build-pacman-repo patch-makepkg --replace + - name: Checkout uses: actions/checkout@v4 @@ -52,9 +55,90 @@ jobs: mkdir -p repo Xvfb ${DISPLAY} -screen 0 1024x768x24 & + - name: Download and Patch beta PKGBUILDs + working-directory: pkgbuilds + run: | + while IFS=' ' read -r repo og_pkg_name updated_pkg_name release_asset; do + # Skip lines that start with # + [[ $repo =~ ^#.*$ ]] && continue + + echo "repo: ${repo}" + echo "og_pkg_name: ${og_pkg_name}" + echo "updated_pkg_name: ${updated_pkg_name}" + echo "release_asset: ${release_asset}" + + latest_release=$( + curl -s "https://api.github.com/repos/${repo}/releases" | \ + jq -r --arg release_asset "${release_asset}" ' + map(select(.prerelease)) | + map(.assets[] | select(.name == $release_asset) | .browser_download_url) | + first + ' + ) + echo "latest_release: ${latest_release}" + if [[ -z "${latest_release}" ]]; then + echo "::warning:: No pre-release found for ${repo} with asset ${release_asset}" + continue + fi + + mkdir -p ${updated_pkg_name} + pushd ${updated_pkg_name} + + wget "${latest_release}" -O "${updated_pkg_name}.pkg.tar.gz" + + # extract the package + tar -xvf "${updated_pkg_name}.pkg.tar.gz" + rm "${updated_pkg_name}.pkg.tar.gz" + + # sed PKGBUILD + sed -i "s/pkgname='${og_pkg_name}'/pkgname='${updated_pkg_name}'/" PKGBUILD + sed -i "s/provides=(.*)/provides=('${og_pkg_name}')/" PKGBUILD + sed -i "s/conflicts=(.*)/conflicts=('${og_pkg_name}')/" PKGBUILD + + # Check if provides is missing and append if necessary + if ! grep -q "^provides=" PKGBUILD; then + echo "provides=('${og_pkg_name}')" >> PKGBUILD + fi + + # Check if conflicts is missing and append if necessary + if ! grep -q "^conflicts=" PKGBUILD; then + echo "conflicts=('${og_pkg_name}')" >> PKGBUILD + fi + + echo "new PKGBUILD:" + cat PKGBUILD + + # re-generate .SRCINFO + makepkg --printsrcinfo > .SRCINFO + + # list files + echo "files in ${updated_pkg_name}:" + ls -a + + popd + done < ../beta-repos.conf + - name: Build Pacman Repo run: | - build-pacman-repo patch-makepkg --replace + # generate build-pacman-repo.yaml + build-pacman-repo print-config \ + --repository repo/lizardbyte.db.tar.gz \ + --container pkgbuilds \ + --require-pkgbuild \ + --require-srcinfo \ + --with-record-failed-builds repo/failed-build-records.yaml \ + --with-install-missing-dependencies true \ + --with-clean-before-build false \ + --with-clean-after-build false \ + --with-force-rebuild true \ + --with-pacman pacman \ + --with-arch-filter x86_64 \ + --with-check inherit \ + --with-packager "${{ secrets.GH_BOT_NAME }} <${{ secrets.GH_BOT_EMAIL }}>" \ + --with-allow-failure false \ + --with-dereference-database-symlinks true \ + > build-pacman-repo.yaml + build-pacman-repo build - name: Create/Update GitHub Release diff --git a/beta-repos.conf b/beta-repos.conf new file mode 100644 index 0000000..9b0afd0 --- /dev/null +++ b/beta-repos.conf @@ -0,0 +1,2 @@ +# repo_owner/repo_name og_pkg_name updated_pkg_name release_asset_file_name +lizardbyte/sunshine sunshine sunshine-git sunshine.pkg.tar.gz diff --git a/build-pacman-repo.yaml b/build-pacman-repo.yaml deleted file mode 100644 index fc88689..0000000 --- a/build-pacman-repo.yaml +++ /dev/null @@ -1,19 +0,0 @@ ---- -global-settings: - repository: repo/lizardbyte.db.tar.gz - container: pkgbuilds - read-build-metadata: either - record-failed-builds: failed-builds.yaml - install-missing-dependencies: true - clean-before-build: false - clean-after-build: false - force-rebuild: true - pacman: pacman - arch-filter: [x86_64] - check: inherit - packager: LizardByte-bot <108553330+LizardByte-bot@users.noreply.github.com> - allow-failure: false - dereference-database-symlinks: true -members: - - directory: sunshine - read-build-metadata: pkgbuild