- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| modules | ||
| .gitignore | ||
| chroot.py | ||
| nvchecker_api.py | ||
| packages.conf | ||
| README.md | ||
| requirements.txt | ||
| update.py | ||
pkgbuild
Helper for maintaining a handful of Arch Linux PKGBUILD repositories.
It clones or updates every repo listed in packages.conf, asks
nvchecker whether a newer upstream
version exists, and after you confirm prepares each update locally: bumping
pkgver, or running the package's own script from modules/ if it has one.
Commits and tags are created locally only.
Usage
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python update.py # -y skips the confirmation prompt
update.py needs Python 3.9+ and git. The chroot-using modules additionally
need an Arch Linux host with devtools (they drive the same
/var/lib/archbuild chroot that pkgctl build uses).
Layout
| Path | Purpose |
|---|---|
packages.conf |
<name> <origin git url>, one package per line |
update.py |
entry point: sync, check, prompt, prepare |
nvchecker_api.py |
thin wrapper over nvchecker's library API |
chroot.py |
devtools chroot lifecycle shared by the modules |
modules/<pkgname>.py |
optional per-package update script |
repos/ |
checkouts, created on demand (gitignored) |
A package with a module owns its whole update: the module runs in the
checkout, refreshes everything the version bump invalidates (checksums and the
like) and commits — and tags, or doesn't — itself. Packages without a module
get a plain pkgver bump with pkgrel reset to 1 and a regenerated .SRCINFO,
then are committed and tagged by update.py.
Regenerating .SRCINFO runs makepkg --printsrcinfo, so update.py needs
makepkg on PATH (as does any module).