doc/PKGBUILD: misc changes

Signed-off-by: Florian Pritz <bluewind@xinu.at>
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Florian Pritz 2011-06-09 23:17:06 +02:00 committed by Dan McGee
parent fbb44a6e0d
commit d355376865
1 changed files with 40 additions and 41 deletions

View File

@ -16,12 +16,12 @@ PKGBUILD
Description Description
----------- -----------
This manual page is meant to describe general rules about PKGBUILDs. Once a This manual page describes general rules about PKGBUILDs. Once a
PKGBUILD is written, the actual package is built using makepkg and installed PKGBUILD is written, the actual package is built using makepkg and installed
with pacman. with pacman.
NOTE: An example PKGBUILD, useful for reference, is located in '{pkgdatadir}'. NOTE: An example PKGBUILD, useful for reference, is located in '{pkgdatadir}'
Also located there are other example files such as a ChangeLog and an install along with other example files such as a ChangeLog and an install
script. You can copy the provided PKGBUILD.proto file to a new package build script. You can copy the provided PKGBUILD.proto file to a new package build
directory and make customizations to suit your needs. directory and make customizations to suit your needs.
@ -30,18 +30,18 @@ Options and Directives
---------------------- ----------------------
The following is a list of standard options and directives available for use The following is a list of standard options and directives available for use
in a PKGBUILD. These are all understood and interpreted by makepkg, and most in a PKGBUILD. These are all understood and interpreted by makepkg, and most
will be directly transferred to the built package. of them will be directly transferred to the built package.
If you need to create any custom variables for use in your build process, it is If you need to create any custom variables for use in your build process, it is
recommended to name your custom variables with an '_' (underscore) prefix. recommended to prefix their name with an '_' (underscore).
This will prevent any possible name clashes with internal makepkg variables. This will prevent any possible name clashes with internal makepkg variables.
For example, to store the base kernel version in a variable, use something For example, to store the base kernel version in a variable, use something
similar to `$_basekernver`. similar to `$_basekernver`.
*pkgname (array)*:: *pkgname (array)*::
The name of the package. This has be a unix-friendly name as it will be The name of the package or an array of names for split packages.
used in the package filename. Members of the array are not allowed to start Because it will be used in the package filename, this has to be unix-friendly.
with hyphens. Members of the array are not allowed to start with hyphens.
*pkgver*:: *pkgver*::
The version of the software as released from the author (e.g. '2.7.1'). The version of the software as released from the author (e.g. '2.7.1').
@ -50,13 +50,13 @@ similar to `$_basekernver`.
*pkgrel*:: *pkgrel*::
This is the release number specific to the Arch Linux release. This This is the release number specific to the Arch Linux release. This
allows package maintainers to make updates to the package's configure allows package maintainers to make updates to the package's configure
flags, for example. A pkgrel of '1' is typically used for each upstream flags, for example. This is typically (re)set to '1' for each new upstream
software release and is incremented for intermediate PKGBUILD updates. The software release and incremented for intermediate PKGBUILD updates. The
variable is not allowed to contain hyphens. variable is not allowed to contain hyphens.
*pkgdesc*:: *pkgdesc*::
This should be a brief description of the package and its functionality. This should be a brief description of the package and its functionality.
Try to keep the description to one line of text. Try to keep the description to one line of text and not use the package's name.
*epoch*:: *epoch*::
Used to force the package to be seen as newer than any previous versions Used to force the package to be seen as newer than any previous versions
@ -69,18 +69,18 @@ similar to `$_basekernver`.
*url*:: *url*::
This field contains a URL that is associated with the software being This field contains a URL that is associated with the software being
packaged. This is typically the project's website. packaged. Typically the project's website.
*license (array)*:: *license (array)*::
This field specifies the license(s) that apply to the package. This field specifies the license(s) that apply to the package.
Commonly-used licenses are found in '/usr/share/licenses/common'. If you Commonly used licenses can be found in '/usr/share/licenses/common'. If you
see the package's license there, simply reference it in the license see the package's license there, simply reference it in the license
field (e.g. `license=('GPL')`). If the package provides a license not field (e.g. `license=('GPL')`). If the package provides a license not
found in '/usr/share/licenses/common', then you should include the license available in '/usr/share/licenses/common', then you should include it
in the package itself and set `license=('custom')` or in the package itself and set `license=('custom')` or
`license=('custom:LicenseName')`. The license should be placed in `license=('custom:LicenseName')`. The license should be placed in
'$pkgdir/usr/share/licenses/$pkgname' when building the package. If '$pkgdir/usr/share/licenses/$pkgname/' when building the package. If
multiple licenses are applicable for a package, list all of them: multiple licenses are applicable, list all of them:
`license=('GPL' 'FDL')`. `license=('GPL' 'FDL')`.
*install*:: *install*::
@ -97,22 +97,21 @@ similar to `$_basekernver`.
*source (array)*:: *source (array)*::
An array of source files required to build the package. Source files An array of source files required to build the package. Source files
must either reside in the same directory as the PKGBUILD file, or be a must either reside in the same directory as the PKGBUILD, or be a
fully-qualified URL that makepkg will use to download the file. In order fully-qualified URL that makepkg can use to download the file.
to make the PKGBUILD as useful as possible, use the $pkgname and $pkgver To make the PKGBUILD as useful as possible, use the $pkgname and $pkgver
variables if possible when specifying the download location. Any files variables if possible when specifying the download location. Compressed files
that are compressed will automatically be extracted, unless found in will be extracted automatically unless found in
the noextract array listed below. the noextract array described below.
+ +
It is also possible to specify an optional filename, which is helpful It is also possible to overwrite the filename, which is helpful
with weird URLs and for handling multiple source files with the same with weird URLs and for handling multiple source files with the same
name. The syntax is: `source=('filename::url')`. name. The syntax is: `source=('filename::url')`.
*noextract (array)*:: *noextract (array)*::
An array of filenames corresponding to those from the source array. Files An array of filenames corresponding to those from the source array. Files
listed here will not be extracted with the rest of the source files. This listed here will not be extracted with the rest of the source files. This
is useful for packages which use compressed data which is downloaded but is useful for packages that use compressed data directly.
not necessary to uncompress.
*md5sums (array)*:: *md5sums (array)*::
This array contains an MD5 hash for every source file specified in the This array contains an MD5 hash for every source file specified in the
@ -135,16 +134,16 @@ name. The syntax is: `source=('filename::url')`.
*arch (array)*:: *arch (array)*::
Defines on which architectures the given package is available (e.g. Defines on which architectures the given package is available (e.g.
`arch=('i686' 'x86_64')`). Packages that contain no architecture specific `arch=('i686' 'x86_64')`). Packages that contain no architecture specific
files may use arch=('any'). files should use arch=('any').
*backup (array)*:: *backup (array)*::
A space-delimited array of filenames, without preceding slashes, that An array of filenames, without preceding slashes, that
should be backed up if the package is removed or upgraded. This is should be backed up if the package is removed or upgraded. This is
commonly used for packages placing configuration files in /etc. See commonly used for packages placing configuration files in /etc. See
Handling Config Files in linkman:pacman[8] for more information. Handling Config Files in linkman:pacman[8] for more information.
*depends (array)*:: *depends (array)*::
An array of packages that this package depends on to run. Packages in An array of packages this package depends on to run. Entries in
this list should be surrounded with single quotes and contain at least this list should be surrounded with single quotes and contain at least
the package name. Entries can also include a version requirement of the the package name. Entries can also include a version requirement of the
form 'name<>version', where <> is one of five comparisons: >= (greater form 'name<>version', where <> is one of five comparisons: >= (greater
@ -152,12 +151,12 @@ name. The syntax is: `source=('filename::url')`.
than), or < (less than). than), or < (less than).
*makedepends (array)*:: *makedepends (array)*::
An array of packages that this package depends on to build, but are not An array of packages this package depends on to build but are not
needed at runtime. Packages in this list follow the same format as needed at runtime. Packages in this list follow the same format as
depends. depends.
*checkdepends (array)*:: *checkdepends (array)*::
An array of packages that this package depends on to run its test suite, An array of packages this package depends on to run its test suite
but are not needed at runtime. Packages in this list follow the same but are not needed at runtime. Packages in this list follow the same
format as depends. These dependencies are only considered when the format as depends. These dependencies are only considered when the
check() function is present and is to be run by makepkg. check() function is present and is to be run by makepkg.
@ -177,7 +176,7 @@ name. The syntax is: `source=('filename::url')`.
same format as depends. Versioned conflicts are also supported. same format as depends. Versioned conflicts are also supported.
*provides (array)*:: *provides (array)*::
An array of ``virtual provisions'' that this package provides. This allows An array of ``virtual provisions'' this package provides. This allows
a package to provide dependencies other than its own package name. For a package to provide dependencies other than its own package name. For
example, the dcron package can provide 'cron', which allows packages to example, the dcron package can provide 'cron', which allows packages to
depend on 'cron' rather than 'dcron OR fcron'. depend on 'cron' rather than 'dcron OR fcron'.
@ -188,7 +187,7 @@ name. The syntax is: `source=('filename::url')`.
provided. provided.
*replaces (array)*:: *replaces (array)*::
An array of packages that this package should replace, and can be used An array of packages this package should replace. This can be used
to handle renamed/combined packages. For example, if the 'j2re' package to handle renamed/combined packages. For example, if the 'j2re' package
is renamed to 'jre', this directive allows future upgrades to continue is renamed to 'jre', this directive allows future upgrades to continue
as expected even though the package has moved. Sysupgrade is currently as expected even though the package has moved. Sysupgrade is currently
@ -248,7 +247,7 @@ name. The syntax is: `source=('filename::url')`.
build() Function build() Function
---------------- ----------------
In addition to the above directives, the optional build() bash function usually In addition to the above directives, the optional build() function usually
comprises the remainder of the PKGBUILD. This is directly sourced and executed comprises the remainder of the PKGBUILD. This is directly sourced and executed
by makepkg, so anything that bash or the system has available is available for by makepkg, so anything that bash or the system has available is available for
use here. The function is run in `bash -e` mode, meaning any command that exits use here. The function is run in `bash -e` mode, meaning any command that exits
@ -256,22 +255,22 @@ with a non-zero status will cause the function to exit. Be sure any exotic
commands used are covered by `makedepends`. commands used are covered by `makedepends`.
All of the above variables such as `pkgname` and `pkgver` are available for use All of the above variables such as `pkgname` and `pkgver` are available for use
in the build function. In addition, makepkg defines three variables for your in the build function. In addition, makepkg defines the following three
use during the build and install process. These three variables are as follows: variables for use during the build and install process:
*startdir*:: *startdir*::
This contains the absolute path to the directory where the PKGBUILD was This contains the absolute path to the directory where the PKGBUILD is
located, which is usually the output of `$(pwd)` when makepkg is started. located, which is usually the output of `$(pwd)` when makepkg is started.
*srcdir*:: *srcdir*::
This points to the directory where makepkg extracts or copies all source This points to the directory where makepkg extracts to or copies to all source
files. files.
*pkgdir*:: *pkgdir*::
This points to the directory where makepkg bundles the installed package This points to the directory where makepkg bundles the installed package
(this directory will become the root directory of your built package). (this directory will become the root directory of your built package).
If you create any variables of your own in the build function, it is If you create any variables on your own in the build function, it is
recommended to use the bash `local` keyword to scope the variable to inside recommended to use the bash `local` keyword to scope the variable to inside
the build function. the build function.
@ -301,8 +300,8 @@ Each split package uses a corresponding packaging function with name
`package_foo()`, where `foo` is the name of the split package. `package_foo()`, where `foo` is the name of the split package.
All options and directives for the split packages default to the global values All options and directives for the split packages default to the global values
given within the PKGBUILD. However, some of these can be overridden within each given in the PKGBUILD. Nevertheless, the following ones can be overridden within
split package's packaging function. The following variables can be overridden: each split package's packaging function:
`pkgver`, `pkgrel`, `pkgdesc`, `arch`, `license`, `groups`, `depends`, `pkgver`, `pkgrel`, `pkgdesc`, `arch`, `license`, `groups`, `depends`,
`optdepends`, `provides`, `conflicts`, `replaces`, `backup`, `options`, `optdepends`, `provides`, `conflicts`, `replaces`, `backup`, `options`,
`install` and `changelog`. `install` and `changelog`.
@ -363,7 +362,7 @@ makepkg supports building development versions of packages without having to
manually update the pkgver in the PKGBUILD. This was formerly done using the manually update the pkgver in the PKGBUILD. This was formerly done using the
separate utility 'versionpkg'. In order to utilize this functionality, your separate utility 'versionpkg'. In order to utilize this functionality, your
PKGBUILD must use correct variable names depending on the SCM being fetched PKGBUILD must use correct variable names depending on the SCM being fetched
from. from (e.g., "makepkg-git", "mplayer-svn").
*CVS*:: *CVS*::
The generated pkgver will be the date the package is built. The generated pkgver will be the date the package is built.