From 27225672f7bdf5f0a9580c2553f31a5e3e501b7b Mon Sep 17 00:00:00 2001 From: mxmlnkn Date: Sun, 10 Dec 2023 10:01:49 +0100 Subject: [PATCH] [wip][CI] Automatically publish to AUR --- .github/workflows/publish-rapidgzip.yml | 58 ++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-rapidgzip.yml b/.github/workflows/publish-rapidgzip.yml index 22f40c79..54524eb9 100644 --- a/.github/workflows/publish-rapidgzip.yml +++ b/.github/workflows/publish-rapidgzip.yml @@ -2,11 +2,12 @@ name: Publish Rapidgzip to PyPI on: push: - tags: - - 'rapidgzip-v*.*.*' + branches: + - 'oldmaster' jobs: Deploy-Wheels: + if: false runs-on: ${{ matrix.os }} strategy: @@ -194,3 +195,56 @@ jobs: python3 -m build -o . --sdist .. mv rapidgzip-*.tar* src.tar conda build --token "$ANACONDA_TOKEN" . + + Deploy-AUR: + runs-on: ubuntu-latest + container: + image: archlinux + steps: + - name: Set Up Non-Root User # Because makepkg is an ass and forbids root from using it + run: | + groupadd sudo + useradd -m -G sudo user + echo '%sudo ALL=(ALL:ALL) NOPASSWD: ALL' >> /etc/sudoers + + - name: Install System Dependencies + run: | + pacman -Syu --noconfirm + pacman -Sy --noconfirm base-devel git python python-pip python-setuptools rhash openssh + + - name: Clone Repository + env: + RAPIDGZIP_AUR_SSH: ${{ secrets.RAPIDGZIP_AUR_SSH }} + run: | + chmod a+rwx . + chown user . + su user -c 'mkdir -p "$HOME/.ssh/"' + su user -c 'echo "$RAPIDGZIP_AUR_SSH" > "$HOME/.ssh/id_ed25519"' + su user -c 'git clone ssh://mxmln@aur.archlinux.org/python-rapidgzip.git .' + # For testing whether the update script works + su user -c 'git checkout HEAD~' + + - name: Update PKGBUILD + run: | + # Annoyingly, --no-deps is not sufficient and building the wheels would still be triggered even + # just for downloading the source tarball! But, --no-build-isolation seems to avoid that: + # https://discuss.python.org/t/pip-download-just-the-source-packages-no-building-no-metadata-etc/4651/7 + pip download --no-binary :all: --no-deps --no-build-isolation rapidgzip + pkgver=$( echo rapidgzip-*.tar.gz | sed -E 's|rapidgzip-([0-9.]*).*[.]tar.gz|\1|' ) + blake2b=$( python3 -c 'import hashlib, sys; h=hashlib.blake2b(digest_size=256 // 8); h.update(open(sys.argv[1], "rb").read()); print(h.digest().hex())' rapidgzip-*.tar.gz ) + # Update PKGBUILD + sed -i "s|pkgver=.*|pkgver=$pkgver|" PKGBUILD + sed -i "s|sha256sums=.*|sha256sums=(\"$( rhash -p"%x{sha-256}" rapidgzip-*.tar.gz )\")|" PKGBUILD + sed -i -E "s|(.*pythonhosted.org/packages)/[0-9a-f]{2}/[0-9a-f]{2}/[0-9a-f]*/(.*)|\1/${blake2b:0:2}/${blake2b:2:2}/${blake2b:4}/\2|" PKGBUILD + su user -c 'makepkg --printsrcinfo > .SRCINFO' + su user -c 'git add -f PKGBUILD .SRCINFO' + su user -c 'git config --local user.email "mxmlnknp@gmail.com"' + su user -c 'git config --local user.name "Maximilian Knespel"' + su user -c "git commit -m 'Update to $pkgver'" + su user -c 'git status' + su user -c 'git show' + + - name: Test PKGBUILD + run: | + su user -c 'makepkg -s --noconfirm' + su user -c 'makepkg --noconfirm --install python-rapidgzip-*.tar.zst'