.SRCINFO - ArchWiki

Jump to content

Related articles

- Arch packaging standards
- Arch Build System
- Creating packages
- PKGBUILD
- Category:Package development
- Arch User Repository
- makepkg
- pacman
- pacman/Tips and tricks

`.SRCINFO` files contain package metadata in a simple, unambiguous format, so that tools such as the AUR's Web back-end or AUR helpers may retrieve a package's metadata without parsing the PKGBUILD directly. See FS#25210, FS#15043, and FS#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() 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; see PKGBUILD(5) § 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 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 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.

This article or section needs expansion.

Reason: The above will suffice for some, below is a verbose list of parameters; split these up to improve readability. Also, find ways to reduce redundancy between this and PKGBUILD. (Discuss in Talk:.SRCINFO)

## 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` (can only be in pkgbase)

The following fields may, additionally, specify multiple architectures as shown below:

    source_x86_64 = https://foo.bar/file.tar.gz
    source_i686 = 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.

Category:

- Package development

Hidden category:

- Pages or sections flagged with Template:Expansion