Files
voculinux/docs/AUR.md
T
SergeyandGitHub e61133e246 feat(ci): gate AUR PKGBUILD builds on every PR (#772)
* feat(ci): gate AUR PKGBUILD builds on every PR

Nothing ever ran makepkg on the PKGBUILD before a tag pushed it to AUR
users, and the channel broke twice that way (#736, #757) — a PKGBUILD
change did not even start a CI job, because no paths filter matched
packaging/aur/**.

The gate (packaging/aur/build-test.sh, run in archlinux:latest — the
AUR is a rolling channel, so the image stays deliberately unpinned):

- swaps the tag-archive source= for a git archive of the checkout under
  the same filename and prefix, so build()/package() run unchanged and
  the gate answers "does this commit build on Arch"
- installs depends/makedepends from the repos; python-pywhispercpp
  (virtual, provided by the AUR backends, #579) and python-pynput (AUR)
  are satisfied by a stub so makepkg still verifies the full depends
  set, and pip-installed from the hash-pinned requirements/runtime.txt
  for the import smoke
- runs namcap on the PKGBUILD and the built package, failing on errors
  only (its warnings are noise around lazy imports and virtual depends)
- installs the package and imports the whole UI/recognition stack, plus
  the vocalinux --version entry point

Part of #701 (phase 6).

* fix(ci): stop partial-upgrading in the AUR gate and correct the #736 attribution
2026-09-04 23:25:09 -07:00

2.7 KiB

AUR

Users

yay -S vocalinux          # latest release tag
yay -S vocalinux-git      # community package, tracks main

vocalinux and vocalinux-git conflict. Install only one.

Maintainers (one-time)

Release tags auto-push packaging/aur/vocalinux/PKGBUILD when these secrets exist:

Secret Value
AUR_SSH_PRIVATE_KEY Private key whose public half is on your AUR account
AUR_USERNAME AUR username (git author)
AUR_EMAIL AUR account email
# 1. AUR account + SSH pubkey: https://aur.archlinux.org/register
ssh-keygen -t ed25519 -C "vocalinux-aur" -f ./aur_ed25519 -N ""
# upload aur_ed25519.pub on AUR; put aur_ed25519 in AUR_SSH_PRIVATE_KEY

# 2. Create empty package once
git clone ssh://aur@aur.archlinux.org/vocalinux.git

# 3. Next v* tag runs Publish to AUR (skipped if secret missing)

Sources: packaging/aur/vocalinux/PKGBUILD. Community git package: https://aur.archlinux.org/packages/vocalinux-git

CI gate

Every PR that changes the Python source or packaging/aur/** builds the PKGBUILD on archlinux:latest — the Build AUR package (gate) job in unified-pipeline.yml. Run it locally with just aur-gate (needs docker).

The gate swaps the tag-archive source= for a git archive of the checkout, so it answers whether this commit builds on Arch — #757 reached users after the tag, when nothing could fail a build anymore (#736 reached Arch users too, but through install.sh; this package built fine). python-pywhispercpp (virtual, provided by the AUR backends) and python-pynput (AUR) cannot come from the repos, so the gate satisfies them with a stub for dependency resolution and pip-installs the pinned versions from requirements/runtime.txt for the import smoke. What AUR actually ships (python-pywhispercpp-cpu is still 1.4.x — see Troubleshooting) is a monitoring question, not the gate's.

Troubleshooting

ERROR Missing dependencies: setuptools<82

The AUR package builds with python -m build --wheel --no-isolation, so it uses Arch extra python-setuptools (currently 84). Vocalinux 0.16.1 drops the <82 cap in pyproject.toml. Rebuild 0.16.1 or later.

'_pywhispercpp.whisper_full_params' object has no attribute 'context_params'

AUR python-pywhispercpp-cpu / -cuda / -rocm are still 1.4.x. Those wheels accept context_params in Python and then crash in the native object. 0.16.1 skips that argument on pywhispercpp older than 1.5 and still loads the model (default GPU, no device picker). PyPI and install.sh already use 1.5.0.

There is no AUR python-pywhispercpp-vulkan package. GPU Vulkan 1.5 is the install.sh / AppImage path, not the AUR python backends.