Files
nvrl a9d6e0280d ci(aur): publish the AUR packages from CI
A release tag now updates and pushes all three AUR packages once the
GitHub release exists, then commits the refreshed recipes back to main.
A push to main that changes the -git recipe publishes that package
alone; plain upstream commits need no AUR push because its pkgver()
follows git at build time.

Needs the AUR_SSH_PRIVATE_KEY repository secret.
2026-09-23 11:02:30 +02:00

2.9 KiB

AUR packages

Source of truth for the three AUR packages of this project. Each subdirectory is the full content of one AUR git repository (pkgbase = directory name):

Directory What it does AUR repository
proton-drive-for-linux Builds the latest tagged release from source ssh://aur@aur.archlinux.org/proton-drive-for-linux.git
proton-drive-for-linux-git Builds main from git ssh://aur@aur.archlinux.org/proton-drive-for-linux-git.git
proton-drive-for-linux-bin Installs the binaries from the GitHub release ssh://aur@aur.archlinux.org/proton-drive-for-linux-bin.git

The three packages conflict with each other and with the in-tree packaging/PKGBUILD package (proton-drive-linux), and every one of them provides proton-drive-for-linux, proton-drive-linux, and pdfs.

Each directory tracks only PKGBUILD, .SRCINFO, .gitignore, and LICENSE (the 0BSD license of the packaging sources, per RFC40); the .gitignore ignores everything else so downloaded sources, src/, pkg/, and built packages never reach the AUR.

Releasing a new version

.github/workflows/aur.yml does this automatically:

  • On a release tag, release.yml calls it after the GitHub release is published. It runs ./update.sh <version>, pushes all three packages with ./push.sh, and commits the updated recipes back to main as chore(aur): update packages to <version>.
  • On a push to main that changes proton-drive-for-linux-git/, it regenerates that package's .SRCINFO and pushes only the -git package.
  • By hand, run the workflow from the Actions tab. Give a version to publish a release, or leave it empty to publish only the -git package.

It needs the AUR_SSH_PRIVATE_KEY repository secret: a private key whose public half is registered with the AUR account.

To do the same by hand:

  1. Tag and publish the upstream release, so the source tarball and the proton-drive-linux-<version>-x86_64.tar.gz release asset exist.
  2. Run ./update.sh <version> — it rewrites pkgver, resets pkgrel=1, refreshes the checksums of the release-based packages, and regenerates every .SRCINFO.
  3. Build and inspect the packages in a clean chroot: cd proton-drive-for-linux && pkgctl build --clean (needs devtools).
  4. Commit here, then publish with ./push.sh (or ./push.sh proton-drive-for-linux-bin for a single package).

proton-drive-for-linux-git carries a pkgver() function, so its pkgver is computed at build time; do not push a commit that only bumps it. This is why new commits on main do not trigger an AUR push.

Requirements for pushing

An SSH key registered with the AUR account and an entry in ~/.ssh/config:

Host aur.archlinux.org
  IdentityFile ~/.ssh/aur
  User aur

push.sh creates a scratch clone of the AUR repository, copies the tracked files over it, commits, and pushes to master.