mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-23 08:18:51 -05:00
c94bfbaba3
* Added these three possible options (or !options, more likely), to the PKGBUILD possibilities: - ccache - distcc - makeflags * Removed the --noccache and -j flags from makepkg as their functionality is better used by adding the above options to a PKGBUILD- keep the functionality where it is needed. Testing would be appreciated, I didn't do much of that yet.
289 lines
10 KiB
Groff
289 lines
10 KiB
Groff
." the string declarations are a start to try and make distro independent
|
|
.ds DS Arch Linux
|
|
.ds PB PKGBUILD
|
|
.ds VR 3.0.0
|
|
.TH \*(PB 5 "Feb 07, 2007" "\*(PB version \*(VR" "\*(DS Files"
|
|
.SH NAME
|
|
\*(PB \- \*(DS package build description file
|
|
|
|
.SH DESCRIPTION
|
|
This manual page is meant to describe general rules about \fB\*(PB\fPs. Once
|
|
a \fB\*(PB\fP is written, the actual package is built using \fBmakepkg\fP and
|
|
installed with \fBpacman\fP.
|
|
|
|
\fBNOTE:\fP If you have a local copy of the Arch Build System (ABS) tree
|
|
on your computer, you can copy the \*(PB.proto file to your new package
|
|
build directory and edit it from there. To acquire/sync the ABS tree, use
|
|
the \fBabs\fP script included with \fBpacman\fP.
|
|
|
|
.SH OPTIONS AND DIRECTIVES
|
|
.TP
|
|
.B pkgname
|
|
The name of the package. This has be a unix-friendly name as it will be
|
|
used in the package filename.
|
|
|
|
.TP
|
|
.B pkgver
|
|
The version of the software as released from the author (e.g. 2.7.1).
|
|
|
|
.TP
|
|
.B pkgrel
|
|
This is the release number specific to the \*(DSs release. This allows package
|
|
maintainers to make updates to the package's configure flags, for example.
|
|
|
|
.TP
|
|
.B pkgdesc
|
|
This should be a brief description of the package and its functionality. Try to
|
|
keep the description to one line of text.
|
|
|
|
.TP
|
|
.B url
|
|
This field contains a URL that is associated with the software being packaged.
|
|
This is typically the project's website.
|
|
|
|
.TP
|
|
.B license (array)
|
|
This field specifies the license(s) that apply to the package. Commonly-used
|
|
licenses are found in \fI/usr/share/licenses/common\fP. If you see the
|
|
package's license there, simply reference it in the license field (e.g.
|
|
\fBlicense=("GPL")\fP). If the package provides a license not found in
|
|
\fI/usr/share/licenses/common\fP, then you should include the license in the
|
|
package itself and set \fBlicense=("custom")\fP or
|
|
\fBlicense=("custom:LicenseName")\fP. The license should be placed in
|
|
\fI$startdir/pkg/usr/share/licenses/$pkgname\fP when building the package. If
|
|
multiple licenses are applicable for a package, list all of them:
|
|
\fBlicenses=('GPL' 'FDL')\fP.
|
|
|
|
.TP
|
|
.B install
|
|
Specifies a special install script that is to be included in the package. This
|
|
file should reside in the same directory as the \fB\*(PB\fP, and will be copied
|
|
into the package by \fBmakepkg\fP. It does not need to be included in the
|
|
\fIsource\fP array (e.g. \fBinstall=pkgname.install\fP).
|
|
|
|
.TP
|
|
.B source \fI(array)\fP
|
|
An array of source files required to build the package. Source files must
|
|
either reside in the same directory as the \fB\*(PB file\fP, or be a
|
|
fully-qualified URL that makepkg will use to download the file. In order to
|
|
make the PKGBUILD as useful as possible, use the \fB$pkgname\fP and
|
|
\fB$pkgver\fP variables if possible when specifying the download location.
|
|
|
|
.TP
|
|
.B noextract \fI(array)\fP
|
|
An array of filenames corresponding to those from the \fBsource\fP array. Files
|
|
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 not
|
|
necessary to uncompress.
|
|
|
|
.TP
|
|
.B md5sums \fI(array)\fP
|
|
This array contains an MD5 hash for every source file specified in the
|
|
\fBsource\fP array (in the same order). \fBmakepkg\fP will use this to verify
|
|
source file integrity during subsequent builds. To easily generate md5sums, run
|
|
"makepkg -g >> \*(PB". If desired, move the \fBmd5sums\fP line to an
|
|
appropriate location. NOTE: \fBmakepkg\fP supports multiple integrity
|
|
algorithms and their corresponding arrays (i.e. sha1sums for the SHA1
|
|
algorithm); however, official packages use only md5sums for the time being.
|
|
|
|
.TP
|
|
.B sha1sums, etc.
|
|
Alternative integrity checks that \fBmakepkg\fP supports, as noted in
|
|
\fBmd5sums\fP above.
|
|
|
|
.TP
|
|
.B groups \fI(array)\fP
|
|
An array of symbolic names that represent groups of packages, allowing
|
|
you to install multiple packages by requesting a single target. For example,
|
|
one could install all KDE packages by installing the 'kde' group.
|
|
|
|
.TP
|
|
.B arch \fI(array)\fP
|
|
Defines on which architectures the given package is available (e.g.
|
|
\fBarch=('i686' 'x86_64')\fP).
|
|
|
|
.TP
|
|
.B backup \fI(array)\fP
|
|
A space-delimited array of filenames, \fIwithout\fP preceding slashes, that
|
|
should be backed up if the package is removed or upgraded. This is commonly
|
|
used for packages placing configuration files in /etc. See \fBHANDLING CONFIG
|
|
FILES\fP in the \fBpacman\fP manpage for more information.
|
|
|
|
.TP
|
|
.B depends \fI(array)\fP
|
|
An array of packages that this package depends on to run. Packages in this list
|
|
should be surrounded with single quotes and contain at least the package name.
|
|
Entries can also include a version requirement of the form
|
|
\fB'name<>version'\fP, where <> is one of three comparisons: \fI>=\fP (greater
|
|
than or equal to), \fI<=\fP (less than or equal to), or \fI=\fP (equal to).
|
|
|
|
.TP
|
|
.B makedepends \fI(array)\fP
|
|
An array of packages that this package depends on to build, but are not needed
|
|
at runtime. Packages in this list follow the same format as \fBdepends\fP.
|
|
|
|
.TP
|
|
.B conflicts \fI(array)\fP
|
|
An array of packages that will conflict with this package (i.e. they cannot
|
|
both be installed at the same time). This directive follows the same format as
|
|
\fIdepends\fP, except you cannot specify versions.
|
|
|
|
.TP
|
|
.B provides \fI(array)\fP
|
|
An array of "virtual provisions" that this package provides. This allows a
|
|
package to provide dependencies other than its own package name. For example,
|
|
the dcron package can provide 'cron', which allows packages to depend on 'cron'
|
|
rather than 'dcron OR fcron'.
|
|
|
|
.TP
|
|
.B replaces \fI(array)\fP
|
|
An array of packages that this package should replace, and can be used to
|
|
handle renamed/combined packages. For example, if the 'j2re' package is renamed
|
|
to 'jre', this directive allows future upgrades to continue as expected even
|
|
though the package has moved.
|
|
|
|
.TP
|
|
.B options \fI(array)\fP
|
|
This array allows you to override some of \fBmakepkg\fP's default behavior when
|
|
building packages. To set an option, just include the option name in the
|
|
\fBoptions\fP array. To reverse the default behavior, place an "!" at the front
|
|
of the option. Only specify the options you specifically want to override, the
|
|
rest will be taken from \fBmakepkg.conf\fP. NOTE: 'force' is a special option
|
|
only used in \fB\*(PB\fPs, do not use it unless you know what you are doing.
|
|
.RS
|
|
.TP
|
|
.B strip
|
|
Strip symbols from binaries and libraries. If you frequently use a debugger on
|
|
programs or libraries, it may be helpful to disable this option.
|
|
.TP
|
|
.B docs
|
|
Save doc and info directories. If you wish to delete doc and info directories,
|
|
specify "!docs" in the array.
|
|
.TP
|
|
.B libtool
|
|
Leave libtool (.la) files in packages. Specify "!libtool" to remove them.
|
|
.TP
|
|
.B emptydirs
|
|
Leave empty directories in packages.
|
|
.TP
|
|
.B ccache
|
|
Allow the use of \fBccache\fP during build. More useful in its negative form
|
|
"!ccache" with select packages that have problems building with \fBccache\fP.
|
|
.TP
|
|
.B distcc
|
|
Allow the use of \fBdistcc\fP during build. More useful in its negative form
|
|
"!distcc" with select packages that have problems building with \fBdistcc\fP.
|
|
.TP
|
|
.B makeflags
|
|
Allow the use of user-specific makeflags during build as specified in
|
|
\fBmakepkg.conf\fP. More useful in its negative form "!makeflags" with select
|
|
packages that have problems building with custom makeflags such as "-j2" (or
|
|
higher).
|
|
.TP
|
|
.B force
|
|
Force the package to be upgraded by a \fBpacman\fP system upgrade operation,
|
|
even if the version number would normally not trigger such an upgrade. This is
|
|
useful when the version numbering scheme of a package changes (or is
|
|
alphanumeric).
|
|
.RE
|
|
|
|
.SH INSTALL/UPGRADE/REMOVE SCRIPTING
|
|
\fBPacman\fP has the ability to store and execute a package-specific script
|
|
when it installs, removes, or upgrades a package. This allows a package to
|
|
configure itself after installation and do the opposite right before it is
|
|
removed.
|
|
|
|
The exact time the script is run varies with each operation:
|
|
|
|
.TP
|
|
.B pre_install
|
|
script is run right before files are extracted.
|
|
|
|
.TP
|
|
.B post_install
|
|
script is run right after files are extracted.
|
|
|
|
.TP
|
|
.B pre_upgrade
|
|
script is run right before files are extracted.
|
|
|
|
.TP
|
|
.B post_upgrade
|
|
script is run after files are extracted.
|
|
|
|
.TP
|
|
.B pre_remove
|
|
script is run right before files are removed.
|
|
|
|
.TP
|
|
.B post_remove
|
|
script is run right after files are removed.
|
|
|
|
.P
|
|
To use this feature, create a file such as 'pkgname.install' and put it in
|
|
the same directory as the \fB\*(PB\fP script. Then use the \fBinstall\fP
|
|
directive:
|
|
|
|
.RS
|
|
.nf
|
|
install=pkgname.install
|
|
.fi
|
|
.RE
|
|
|
|
The install script does not need to be specified in the \fBsource\fP array.
|
|
A template install file is available in the ABS tree (/var/abs/install.proto).
|
|
|
|
.SH EXAMPLE
|
|
The following is an example \fB\*(PB\fP for the 'modutils' package. For more
|
|
examples, look through the ABS tree.
|
|
|
|
.nf
|
|
# Maintainer: John Doe <johndoe@archlinux.org>
|
|
# Contributor: Bill Smith <billsmith@archlinux.org>
|
|
pkgname=modutils
|
|
pkgver=2.4.25
|
|
pkgrel=1
|
|
pkgdesc="Utilities for inserting modules in the linux kernel"
|
|
url="http://www.kernel.org"
|
|
makedepends=('bash' 'mawk')
|
|
depends=('glibc' 'zlib')
|
|
backup=(etc/modules.conf)
|
|
source=(ftp://ftp.kernel.org/pub/linux/utils/kernel/$pkgname/v2.4/$pkgname-$pkgver.tar.bz2
|
|
modules.conf)
|
|
arch=('i686')
|
|
license=('GPL' 'custom') # dual licensed
|
|
md5sums=('2c0cca3ef6330a187c6ef4fe41ecaa4d'
|
|
'35175bee593a7cc7d6205584a94d8625')
|
|
options=(!libtool)
|
|
|
|
build() {
|
|
cd $startdir/src/$pkgname-$pkgver
|
|
./configure --prefix=/usr --enable-insmod-static
|
|
make || return 1
|
|
make prefix=$startdir/pkg/usr install
|
|
mv $startdir/pkg/usr/sbin $startdir/pkg
|
|
mkdir -p $startdir/pkg/etc
|
|
cp ../modules.conf $startdir/pkg/etc
|
|
}
|
|
.fi
|
|
|
|
.SH SEE ALSO
|
|
.BR makepkg (8),
|
|
.BR pacman (8),
|
|
.BR makepkg.conf (5)
|
|
|
|
See the Arch Linux website at <http://www.archlinux.org> for more current
|
|
information on the distribution and the \fBpacman\fP family of tools, and
|
|
<http://wiki.archlinux.org/index.php/Arch_Packaging_Standards> for
|
|
recommendations on packaging standards.
|
|
|
|
.SH AUTHORS
|
|
.nf
|
|
Judd Vinet <jvinet@zeroflux.org>
|
|
Aurelien Foret <aurelien@archlinux.org>
|
|
Aaron Griffin <aaron@archlinux.org>
|
|
Dan McGee <dan@archlinux.org>
|
|
.fi
|
|
|
|
See the 'AUTHORS' file for additional contributors.
|