In order to display information in the AUR web interface, the AUR's back-end code attempts to parse PKGBUILD files and salvage package name, version, and other information from it.
PKGBUILDs are Bash scripts, and correctly parsing Bash scripts without executing them is a huge challenge, which is why makepkg is a Bash script itself: it includes the PKGBUILD of the package being built via the
source directive. AUR metadata files were created to get rid of some hacks, used by AUR package maintainers to work around incorrect parsing in the web interface. See also FS#25210, FS#15043, and FS#16394.
How it works
By adding a metadata file called ".AURINFO" to source tarballs to overwrite specific PKGBUILD fields. The format of this file is described in the AUR 2.1.0 release announcement.
.AURINFO files are parsed line-by-line. The syntax for each line is
key = value, where
key is any of the following field names:
- pkgbase: This is required by AUR 3, otherwise the infamous “only lowercase letters are allowed” error is reported. (Pacman uses the first pkgname if pkgbase is omitted.)
- pkgver: Complete package version, formatted as [epoch:]pkgver-pkgrel
- depend (to be renamed depends in a future AUR release)
Fields with other names are ignored. Multiple
depend lines can be specified to add multiple dependencies. This format closely matches the
.PKGINFO format that is used for binary packages in pacman/libalpm. It can be extended by field name prefixes or sections to support split packages later.
Working with makepkg --source
makepkg --source will not automatically include an .AURINFO file that you've created in the src tarball. You can fix this by adding
.AURINFO to the
source array in your
source=(.AURINFO ...) md5sums=(SKIP ...)
What does not work
- Multiple architectures (
x86_64dependencies tend to be more numerous, so just put them)
pkgbuild-introspection and mkaurball
pkgbuild-introspection is a set of tools for generating
.AURINFO files. One of the provided tools is
mkaurball, which is a script that runs
makepkg --source, generates an
.AURINFO file, and inserts it into the resulting source package.
mkaurballis a wrapper for
makepkg --source. When creating source packages for inclusion in the AUR, use
mkaurballinstead of running
- https://projects.archlinux.org/aur.git/tree/web/html/pkgsubmit.php, the code that reads the “.AURINFO” file.