# AUR Metadata

Related articles

- Arch User Repository
- PKGBUILD
- makepkg
- pacman

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. `PKGBUILD`s 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:

- pkgname
- pkgver: Complete package version, formatted as [epoch:]pkgver-pkgrel
- pkgdesc
- url
- license
- 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

Note that `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 `PKGBUILD`.

     source=(.AURINFO ...)
     md5sums=(SKIP ...)

## What does not work

- Multiple architectures (`x86_64` dependencies 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.

Tip: `mkaurball` is a wrapper for `makepkg --source`. When creating source packages for inclusion in the AUR, use `mkaurball` instead of running `makepkg --source` directly.

Install the package pkgbuild-introspection from the official repositories.

## See also

- https://mailman.archlinux.org/pipermail/aur-general/2014-January/026720.html

Category:

- Package development