Related articles * [Arch packaging standards](/index.php/Arch_packaging_standards "Arch packaging standards") * [Arch Build System](/index.php/Arch_Build_System "Arch Build System") * [Creating packages](/index.php/Creating_packages "Creating packages") * [PKGBUILD](/index.php/PKGBUILD "PKGBUILD") * [Category:Package development](/index.php/Category:Package_development "Category:Package development") * [Arch User Repository](/index.php/Arch_User_Repository "Arch User Repository") * [makepkg](/index.php/Makepkg "Makepkg") * [pacman](/index.php/Pacman "Pacman") * [pacman/Tips and tricks](/index.php/Pacman/Tips_and_tricks "Pacman/Tips and tricks") `.SRCINFO` files contain package metadata in a simple, unambiguous format, so that tools such as the [AUR](/index.php/AUR "AUR")'s Web back-end or [AUR helpers](/index.php/AUR_helpers "AUR helpers") may retrieve a package's metadata without parsing the [PKGBUILD](/index.php/PKGBUILD "PKGBUILD") directly. See [FS#25210](https://bugs.archlinux.org/task/25210), [FS#15043](https://bugs.archlinux.org/task/15043), and [FS#16394](https://bugs.archlinux.org/task/16394) for examples of the sorts of issues that may arise from attempting to parse shell scripts. **Warning:** Changes to `PKGBUILD` metadata, such as [pkgver()](/index.php/PKGBUILD#pkgver "PKGBUILD") updates, do not automatically propagate to `.SRCINFO`. Pushing an edited `PKGBUILD` to the AUR without also updating its `.SRCINFO` will cause the AUR to serve stale metadata. ## Generation `.SRCINFO` files may be generated using makepkg. ``` $ makepkg --printsrcinfo > .SRCINFO ``` ## Syntax `.SRCINFO` files are lists of `key = value` pairs, separated into sections. Keys take their names and meanings from [PKGBUILD variables](https://www.archlinux.org/pacman/PKGBUILD.5.html#_options_and_directives). Neither keys nor values are quoted. Data that, in a `PKGBUILD`, would be represented by an array is instead specified multiple times. For instance, the following are equivalent. ``` # PKGBUILD arch=(i686 x86_64) ``` ``` # .SRCINFO arch = i686 arch = x86_64 ``` The main section of the file is headed by a [pkgbase](/index.php/PKGBUILD#pkgbase "PKGBUILD") declaration, and contains data applicable to the package as a whole. In a standard `PKGBUILD` describing a single package, this will be the only section, followed by a [pkgname](/index.php/PKGBUILD#pkgname "PKGBUILD") declaration containing the same value as the preceding pkgbase. ``` pkgbase = foo pkgdesc = An example package. ... md5sums = SKIP pkgname = foo ``` In a split `PKGBUILD`, each section is headed by a `pkgname`, followed by any data specific to that package. ## Specification The following fields may appear only once in each `.SRCINFO` file, in the `pkgbase` section: * `pkgver`, `pkgrel`, `epoch` The following fields may appear up to once in any section. * `pkgdesc`, `url`, `install`, `changelog` The following fields may be repeated within a section to specify multiple values: * `arch` * `groups` * `license` * `noextract` * `options` * `backup` * `validpgpkeys` The following fields may, additionally, specify multiple [architectures](/index.php/PKGBUILD#arch "PKGBUILD") as shown below: ``` source*_x86_64* = [https://foo.bar/file.tar.gz](https://foo.bar/file.tar.gz) source*_i686* = [https://foo.bar/file_i686_patch.tar.gz](https://foo.bar/file_i686_patch.tar.gz) ``` * `source` * `depends`, `checkdepends`, `makedepends`, `optdepends` * `provides`, `conflicts`, `replaces` * `md5sums`, `sha1sums`, `sha224sums`, `sha256sums`, `sha384sums`, `sha512sums` Fields with other names are ignored. Blank lines and comment lines beginning with a hash sign (`#`) are also ignored. Lines may be indented.