From 0207fad046f76fc37c0fc7c8b6a157225024a3ed Mon Sep 17 00:00:00 2001 From: Judd Vinet Date: Fri, 14 Mar 2003 17:35:57 +0000 Subject: Imported from pacman-2.3.1.tar.gz --- doc/makepkg.8.html | 365 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 365 insertions(+) create mode 100644 doc/makepkg.8.html (limited to 'doc/makepkg.8.html') diff --git a/doc/makepkg.8.html b/doc/makepkg.8.html new file mode 100644 index 00000000..66110f90 --- /dev/null +++ b/doc/makepkg.8.html @@ -0,0 +1,365 @@ +Content-type: text/html + +Manpage of makepkg + +

makepkg

+Section: (8)
Updated: March 3, 2003
Index +Return to Main Contents
+ +  +

NAME

+ +makepkg - package build utility +  +

SYNOPSIS

+ +makepkg +  +

DESCRIPTION

+ +makepkg will build packages for you. All it needs is +a build-capable linux platform, wget, and some build scripts. The advantage +to a script-based build is that you only really do the work once. Once you +have the build script for a package, you just need to run makepkg and it +will do the rest: download source files, check dependencies, +configure the buildtime settings, build the package, install the package +into a temporary root, make customizations, generate meta-info, and package +the whole thing up for pacman to use. +

+makeworld can be used to rebuild an entire package group, or the +entire build tree. +  +

BUILD PROCESS (or How To Build Your Own Packages)

+ +Start in an isolated directory (ie, it's not used for anything other +than building this package). The build script should be called PKGBUILD +and it should bear resemblance to the example below. +

+NOTE: If you have a local copy of the Arch Build System (ABS) tree +on your computer, you can copy the PKGBUILD.proto file to your new package +build directory and edit it from there. To acquire/sync the ABS tree, use +the abs script included with pacman/makepkg. +

+

+
+  +

PKGBUILD Example:

+ +
+
+
+
+pkgname=modutils
+pkgver=2.4.13
+pkgrel=1
+pkgdesc="Utilities for inserting and removing modules from the linux kernel"
+backup=(etc/modules.conf)
+depends=('glibc>=2.2.5' 'bash' 'zlib')
+source=(ftp://ftp.server.com/$pkgname-$pkgver.tar.gz modules.conf)
+
+build() {
+  cd $startdir/src/$pkgname-$pkgver
+  ./configure --prefix=/usr
+  make || return 1
+  make prefix=$startdir/pkg/usr install
+  # copy our custom modules.conf into the package root
+  mkdir -p $startdir/pkg/etc
+  cp ../modules.conf $startdir/pkg/etc
+}
+
+ +
+ +

+As you can see, the setup is fairly simple. The first three lines define +the package name and version info. They also define the final package name +which will be of the form $pkgname-$pkgver-$pkgrel.pkg.tar.gz. The fourth +line provides a brief description of the package. These four lines should +be present in every PKGBUILD script. +

+The line with backup= specifies files that should be treated specially +when removing or upgrading packages. See HANDLING CONFIG FILES in +the pacman manpage for more information on this. +

+The sixth line lists the dependencies for this package. In order to build/run +the package, all dependencies must be satisifed first. makepkg will check this +before attempting to build the package. +

+Once your PKGBUILD is created, you can run makepkg from the build directory. +makepkg will then check dependencies and look for the source files required to +build. If some are missing it will attempt to download them, provided there is +a fully-qualified URL in the source array. +

+The sources are then extracted into a directory called ./src and +the build function is called. This is where all package configuration, +building, and installing should be done. Any customization will likely take +place here. +

+After a package is built, the build function must install the package +files into a special package root, which can be referenced by $startdir/pkg +in the build function. The typical way to do this is one of the following: +

+
+
+make DESTDIR=$startdir/pkg install
+
+or
+
+make prefix=$startdir/pkg/usr install
+
+
+ +
+ +Notice that the "/usr" portion should be present with "prefix", but not "DESTDIR". +

+Once the package is successfully installed into the package root, makepkg +will remove some directories (as per Arch Linux package guidelines; if you use +this elsewhere, feel free to change it) like /usr/doc and /usr/info. It will +then strip debugging info from libraries and binaries and generate a meta-info +file. Finally, it will compress everything into a .pkg.tar.gz file and leave it +in the directory you ran makepkg from. +

+At this point you should have a package file in the current directory, named +something like name-version-release.pkg.tar.gz. Done! +

+  +

Install/Upgrade/Remove Scripting

+ +Pacman 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: +

+
post_install + +
+script is run right after files are installed. +

+

post_upgrade + +
+script is run after all files have been upgraded. +

+

pre_remove + +
+script is run right before files are removed. +

+ +To use this feature, just create a file (eg, pkgname.install) and put it in +the same directory as the PKGBUILD script. Then use the install directive: +

+
+install=pkgname.install
+
+ +
+ +

+The install script does not need to be specified in the source array. +

+

+  +

Install scripts must follow this format:

+ +
+
+
+
+# arg 1:  the new package version
+post_install() {
+  #
+  #  do post-install stuff here
+  #
+  /bin/true
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+post_upgrade() {
+  #
+  #  do post-upgrade stuff here
+  #
+  /bin/true
+}
+
+# arg 1:  the old package version
+pre_remove() {
+  #
+  #  do pre-remove stuff here
+  #
+  /bin/true
+}
+
+op=$1
+shift
+
+$op $*
+
+ +
+ +

+This template is also available in your ABS tree (/usr/abs/install.proto). +

+  +

PKGBUILD Directives

+ +
+
pkgname + +
+The name of the package. This has be a unix-friendly name as it will be +used in the package filename. +

+

pkgver + +
+This is the version of the software as released from the author (eg, 2.7.1). +

+

pkgrel + +
+This is the release number specific to Arch Linux packages. +

+

pkgdesc + +
+This should be a brief description of the package and its functionality. +

+

backup + +
+A space-delimited array of filenames (without a preceding slash). The +backup line will be propagated to the package meta-info file for +pacman. This will designate all files listed there to be backed up if this +package is ever removed from a system. See HANDLING CONFIG FILES in +the pacman manpage for more information. +

+

install + +
+Specified a special install script that is to be included in the package. +This file should reside in the same directory as the PKGBUILD, and will be +copied into the package by makepkg. It does not need to be included in the +source array. (eg, install=modutils.install) +

+

depends + +
+An array of packages that this package depends on to build and run. Packages +in this list should be surrounded with single quotes and contain at least the +package name. They can also include a version requirement of the form +name<>version, where <> is one of these three comparisons: >= +(greater than equal to), <= (less than or equal to), or = (equal to). +See the PKGBUILD example above for an example of the depends directive. +

+

conflicts + +
+An array of packages that will conflict with this package (ie, they cannot both +be installed at the same time). This directive follows the same format as +depends except you cannot specify versions here, only package names. +

+

source + +
+The source line is an array of source files required to build the +package. Source files must reside in the same directory as the PKGBUILD +file, unless they have a fully-qualified URL. Then if the source file +does not already exist in /var/cache/pacman/src, the file is downloaded +by wget. +

+

+  +

MAKEPKG OPTIONS

+ +
+
-c, --clean + +
+Clean up leftover work files/directories after a successful build. +
-i, --install + +
+Install/Upgrade the package after a successful build. +
-s, --syncdeps + +
+Install missing dependencies using pacman. When makepkg finds missing +dependencies, it will run pacman to try and resolve them. If successful, +pacman will download the missing packages from a package repository and +install them for you. +
-b, --builddeps + +
+Build missing dependencies from source. When makepkg finds missing +dependencies, it will look for the dependencies' PKGBUILD files under +$ABSROOT (set in your /etc/makepkg.conf). If it finds them it will +run another copy of makepkg to build and install the missing dependencies. +The child makepkg calls will be made with the -b and -i options. +
-d, --nodeps + +
+Do not perform any dependency checks. This will let you override/ignore any +dependencies required. There's a good chance this option will break the build +process if all of the dependencies aren't installed. +
-f, --force + +
+makepkg will not build a package if a pkgname-pkgver-pkgrel.pkg.tar.gz +file already exists in the build directory. You can override this behaviour with +the --force switch. +

+

+  +

CONFIGURATION

+ +Configuration options are stored in /etc/makepkg.conf. This file is parsed +as a bash script, so you can export any special compiler flags you wish +to use. This is helpful for building for different architectures, or with +different optimizations. +

+NOTE: This does not guarantee that all package Makefiles will use +your exported variables. Some of them are flaky... +  +

SEE ALSO

+ +pacman is the package manager that uses packages built by makepkg. +

+See the Arch Linux Documentation for package-building guidelines if you wish +to contribute packages to the Arch Linux project. +  +

AUTHOR

+ +
+Judd Vinet <jvinet@zeroflux.org>
+
+ +

+ +


+ 

Index

+
+
NAME
+
SYNOPSIS
+
DESCRIPTION
+
BUILD PROCESS (or How To Build Your Own Packages)
+
PKGBUILD Example:
+
Install/Upgrade/Remove Scripting
+
Install scripts must follow this format:
+
PKGBUILD Directives
+
MAKEPKG OPTIONS
+
CONFIGURATION
+
SEE ALSO
+
AUTHOR
+
+
+This document was created by +man2html, +using the manual pages.
+Time: 17:22:11 GMT, March 04, 2003 + + -- cgit v1.2.3-24-g4f1b