buildpkg(1) buildpkg(1)
NAME
buildpkg - package build system
SYNOPSIS
buildpkg [options] deffile
DESCRIPTION
buildpkg processes build steps from deffile and creates
binary (.tar.gz), slackware (.tgz), debian (.deb), redhat
(.rpm), solaris (.pkg) or freebsd (.tgz) packages.
OPTIONS
--autorun
enable autorun mode
--download
download only source file and exit
--force-step
force jump to given step
--ignorepath 'xxx'
path to be ignored by find (before/after) install
--ignorerc
ignore $HOME/.buildpkgrc. This can be useful if you
want to disable you local configuration and only
use $CONFDIR/buildpkg.conf.
--skip-chown
skips chown part in slackware/raw packaging.
--version
display version number
INSTALLATION STEPS
0] extract source code
DOWNLOAD
if source file is not available in the current
directory, buildpkg tries to fetch it (first via
DOWNLOAD part, and if this is not available,
automatically using SOURCE_URL).
PRE_EXTRACT
if available, execute before extract
EXTRACT
if available, overwrites default extract process
POST_EXTRACT
if available, execute after extract
--* stop *--
1] apply patch if available (.patch[.gz,.bz2])
PRE_PATCH
if available, execute before patch
PATCH
if available, overwrites default (autodetect) patch
process
POST_PATCH
if available, execute after patch
--* stop *--
2] configure
PRE_CONFIGURE
if available, execute before configure
CONFIGURE
put configuration steps here (e.g. './configure')
POST_CONFIGURE
if available, execute after configure
--* stop *--
3] build
PRE_BUILD
if available, execute before build
BUILD
put build steps here (e.g. 'make')
POST_BUILD
if available, execute after build
--* stop *--
4] install (normal or in jail)
PRE_INSTALL
if available, execute before install
INSTALL
put installation steps here (e.g. 'make install')
POST_INSTALL
if available, execute after install
--* stop *--
5] collect files
PRE_COLLECT
if available, execute before collect
--* collect files *--
POST_COLLECT
if available, execute after collect
6] find dependencies
Only slackware, binary and solaris use this step, the
others just skip it (their package system already has
one).
--* stop *--
7] distro / OS specific stuff
slackware
generate ./install/doinst.sh if nessesary
debian
create ./debian/ dirstruct and .postinstall script
if nessesary
redhat
create .spec file and insert %post part if nessesary
solaris
create prototype file, insert postinstall part if
nessesary
--* stop *--
8] package
PRE_PACKAGE
if available, execute before package
PACKAGE
if available, overwrites default (distro spec)
packaging
POST_PACKAGE
if available, execute after package
--* stop *--
9] cleanup
PACKAGE TYPES
- unknown
no find_deps and no packaging
- slackware (alias: tgz)
full support
- binary
full support (default)
- deb (alias: debian)
full support
- rpm (aliases: suse, mandrake, redhat)
full support
- solaris (alias: pkg)
full support
- freebsd
full support
RECOGNISED ARCHIVE EXTENSIONS
- '.gz' : gzip
- '.tar.gz' : tar + gzip
- '.tgz' : tar + gzip
- '.Z' : compress
- '.tar.Z' : tar + compress
- '.bz2' : bzip2
- '.tar.bz2' : tar + bzip2
- '.tar' : tar
INSTALL MODES
- jail create a jail using the files specified in the
global buildpkg.jail and the local $PACK-
AGE_NAME.jail file and perform the 'INSTALL' step;
this mode is the most safe but some programmes may
have difficulties with it because they require
stuff not included in the jail. You can include
these files in the local $PACKAGE_NAME.jail file or
use the 'normal' mode bellow.
- normal (default)
simply perform the 'INSTALL' step; if you plan to
use this mode, the use of AUTO_COL-
LECT_INSTALLED="y" is highly reccomended.
FILE TYPES AND THEIR DESCRIPTION
- '.cookie'
temporary file which stores a cookie. Cookies indi-
cate that the previous function returned an error,
so buildpkg is able to track them.
- '.def'
definition file (created by mkskel)
- '.deps'
package dependencies (created by buildpkg)
- '.filelist'
used by filelist feature
- '.files'
collected list of files created and/or modified by
installation.
- '.setup' (only slackware)
/var/log/setup/setup.$PACKAGE_NAME
- '.status'
temporary file to store number of next step.
- '.install' (slackware, debian, redhat, solaris and
freebsd)
Append to the end of $DESTDIR/install/doinst.sh in
Slackware, to $PACKAGE_NAME.postinst in Debian and
to '%post' part of .spec in RedHat. Use package
prototype's 'postinstall' feature in Solaris and
'pkg_add -I' (postinstall) in FreeBSD.
- '.iteration'
temporary file to store iteration number (only in
iteration mode).
- '.patch[.gz,.bz2]'
patch file, to be applied prior configuration
(interpreted by buildpkg)
- '.slack-desc' (only slackware)
slackware package description file
- '.jail'
extra files needed in jail for installation (inter-
preted by buildpkg)
LOG FILES
- '.configure.log'
output of CONFIGURE step[s].
- '.build.log'
output of BUILD step[s].
- '.install.log'
output of INSTALL step[s].
- '.jail-files.log'
output of copy_into_jail.
- '.package.log'
output of package step.
DISTRO SPECIFIC DEFAULT VALUES
DEFAULT_PREFIX="/usr"
this prefix is the most used one for packaged
applications.
DEFAULT_SYSCONFDIR="/etc"
this directory is used to store configuration
files.
DEFAULT_INFODIR="${PREFIX}/info"
this is the old default location of info files.
Newer distros, which follow the FHS uses ${PRE-
FIX}/share/info.
DEFAULT_MANDIR="${PREFIX}/man"
this is the old default location of man files.
Newer distros, which follow the FHS uses ${PRE-
FIX}/share/man.
VARIABLES, THEIR MEANINGS AND THEIR DEFAULT VALUES
ARCHIVE_SRCDIR="/usr/source.files"
where to store source files; if no directory is
specified, source files will not be stored (you
need write rights).
ARCHIVE_SRCFILE="y"
archives source file to $ARCHIVE_SRCDIR.
AUTO_COLLECT_INSTALLED="y"
create a file list using 'find' before and after
the installation step and use 'diff' to find newly
installed files; move these files to $DESTDIR
directory.
AUTORUN=false
autorun mode; if set to 'true' buildpkg will not
stop at '--* stop *--' tags.
BUILDPKG_STYLE="classic"
changes buildpkg style... (do not change until you
know what you are doing...)
CHOWN_TO_ROOT="y"
does a 'chown -R root:root .' after do_extract in
the $SOURCE_DIRECTORY.
COMPRESS_INFO_PAGES="y"
compress info pages
COMPRESS_MAN_PAGES="y"
compress man pages
CONVERT_TO_LOWERCASE="n"
convert names to lowercase (excluding source file
and directory).
CONVERT_SYMLINKS="n"
convert relative symlinks (../bin/something) to
absolute ones.
CREATE_BUILDSH="n"
create build.sh shell script.
CREATE_CHANGELOG="y"
controlls the creation of ChangeLog files by
mkskel.
DESCRIPTION="..."
package description (available for slackware, deb,
rpm and freebsd packages). $SUMMARY is set to con-
tents of first line if not explicitly given.
DISTFILES="..."
URL to DISTFILES repository (ie. gentoo's one).
DISTRO_NAME="unknown"
will provide some nice features in future (place-
holder).
DOWNLOAD_IF_NOT_AVAILABLE="y"
download file - if not available in current direc-
tory - from the [1] $ARCHIVE_SRCDIR or from [2]
$SOURCE_URL.
EDIT_BEFORE_REMOVE="y"
if this option is set to "n", buildpkg will remove
installed files without any notice. This may not be
a good idea, so it is generally a good idea to
leave this option set to "y".
EDITOR="/usr/bin/vi"
which editor to use for editing .removeit files
(file list, which specifies files to be removed
after installation). By default buildpkg sets it to
"/usr/bin/vi" if not specified before in users
environment.
ENABLE_FIND_PROGRESS="n"
This option enables in combination with the find-
progress patch located at the ./patches directory a
nice rotochar during the FS scanning before and
after installation.
FAKEROOT="/usr/bin/fakeroot"
You need the fakeroot utility for debian package
creation. This variable specifies where it is
located.
FASTMODE="n"
Setting this variable to "y" enables 'fast mode'.
In this mode there is never (even with AUTORUN set
to 'true') a stop after the
FILELIST_FEATURE="y"
Setting this variable to "n" disables 'filelist
feature'. If it is activated (default) buildpkg
looks for files with '.filelist' extension in the
current directory. If available, they are used
instead of the 'auto separate' function. The use of
this feature provides distributors an alternative
way to create packages.
IGNOREPATH="..."
ignore this path in 'find' before and after install
step; this variable has an empty default value,
because it is better to set it from the global
$CONFDIR/buildpkg.conf. It is nessesary to ignore
some directories during 'find'. These are e.g.
'/dev', '/proc', '/tmp', '/root', '/usr/src' and
the spool directories of running daemons as for
example mailer daemon.
INSTALL_MODE="normal"
sets default install mode
INTERACTIVE="n"
force interactive installations; in this mode the
output (stdout/stderr) *will not* be redirected to
a log file.
ITERATION=""
use multiple CONFIGURE, BUILD and INSTALL steps.
JAIL_ROOT=""
use same $JAIL_DIR for every installation and do
not empty it.
NO_MAN_PAGES="n"
do not compress man pages after installation.
NO_INFO_PAGES="n"
do not compress info pages after installation.
NULL_MAJOR="..."
/dev/null major number (autodetected)
NULL_MINOR="..."
/dev/null minor number (autodetected)
OPTCFLAGS=""
optional (additional) CFLAGS.
OPTIMIZE="n"
compile using arch specific optimization.
OVERWRITE_SETTINGS="y"
if set to "n", PACKAGE_* definitions are only writ-
ten by mkskel if SEPARATE_* options used.
PACKAGE_ARCH="i386"
sets 'architecture type' string which will be
appended to the various package names in 'binary
only mode'.
PACKAGE_TYPE="binary"
sets default package type
PATCH_STRIPSLASHES="-p1"
default patch level to use in 'PATCH'
PKG_CREATOR="..."
You should enter your name and you email address in
the following form: 'Your name '. This value is used in the debian
installation/package definitions. If you do not
define such a variable (i.e. use the default ""),
then buildpkg will ask you to enter the informa-
tions if needed.
PKG_NAME="..."
You can overwrite the auto-detected package name.
PKG_SECTION="unknown"
You can overwrite the __PKG_SECTION__ part in the
debian/control file. The default value is
"unknown".
PKG_PRIORITY="extra"
You can overwrite the __PKG_PRIORITY__ part in the
debian/control file. The default value is "extra".
PKG_VERSION="..."
You can overwrite the auto-detected package ver-
sion.
RAWMODE="n"
the same as use '--raw' option with mkskel; uses
source filename to guess package name.
REMOVE_AFTER_COPIED_TO_DESTDIR="y"
remove files from computer after copying them to
$DESTDIR; this ability should be used with extra
care to avoid accidental erasion of files. It is
used in combination with AUTO_COL-
LECT_INSTALLED="y".
REMOVE_BROKEN_SYMLINKS="n"
remove broken symlinks in correct_mislinked_files
step.
REMOVE_EMPTY_DIRS="n"
remove empty directories from $DESTDIR. The safest
is to leave this option untouched. As an example, a
program creates a spool directory for itself with
the appropriate rights, but places no files into
it. If this option is set to "y", buildpkg would
remove it, and the programme would miss it later.
See it as a hidden feature, but do not use it
unless you know exactly what you're doing.
SEPARATE_DEVEL="n"
create a separate file for development (.a, .la,
.h) stuff; if set to "y", buildpkg examines the
$DESTDIR directory after 'INSTALL' and moves the
'*.a'|, '*.la' and '*.h' files into $DESTDIR-devel.
These files will be packaged into a separate pack-
age called '$PACKAGE_DEVELNAME'. It is not ness-
esary to change this default value, because
buildpkg sets it automatically to "y" if a '$PACK-
AGE_DEVELNAME' value is specified in the '.def'
file.
SEPARATE_DOCUMENTATION="n"
create a separate file for documentation stuff; if
set to "y", buildpkg examines the $DESTDIR direc-
tory after 'INSTALL' and moves the '*/doc/*' direc-
tories into $DESTDIR-doc. These files will be pack-
aged into a separate package called '$PACKAGE_DOC-
NAME'. It is not nessesary to change this default
value, because buildpkg sets it automatically to
"y" if a '$PACKAGE_DOCNAME' value is specified in
the '.def' file.
SKELMODE="n"
if set to "y", mkskel will only work in skeletion
mode, that means it will not require any real file.
SKIP_CHOWN_TO_ROOT="n"
if set to "y", buildpkg will skip the chowning of
directories to root; but I think it is a good idea
to leave this option "n", because this whole step
is fully optional.
SKIP_EXTRACT="n"
skip 'EXTRACT' step.
SOAPBOX_PATH=""
add given path to $SOAPBOXPATH.
STRIP_BIN="y"
strip binaries in $DESTDIR.
STRIP_FLAGS="--strip-debug"
options to use with strip
STRIP_LIB="y"
strip shared libraries in $DESTDIR.
STRIP_STATIC_LIBRARIES="y"
strip static libraries in $DESTDIR.
SUMMARY="..."
package summary (one liner) (available for slack-
ware, deb, rpm, solaris(pkg) and freebsd packages).
TEMPDIR="/tmp/pkg"
where to put temporary files (you need write and
execute rights).
USE_PATH_FINDOPT="(auto)"
Use an alternate filtering mechanism (combination
of egreps) in generate_(before|after)_filelist pro-
cess. This variable is set automaticaly if set to
"(auto)" or if SunOS detected.
USE_POLICY="y"
Use 'DIRECTORY_POLICY' and 'FILE_POLICY' if
$CONFDIR/buildpkg.policy exists. Using a policy
based directory management automatically disables
chown to root feature.
USE_SOAPBOX="n"
Use Soapbox [http://dag.wieers.com/home-made/soap-
box/] to deny writes outside of $DESTDIR in 'nor-
mal' mode.
WIPE_DEPCOMP="n"
Automatically wipe depcomp file with /dev/null if
found.
You can overwrite default values by inserting them into
$CONFDIR/buildpkg.conf or $HOME/.buildpkgrc !
USEFUL COMMANDS (from .def files)
do_copy "filename1" "filename2" ... "destination/"
This command creates the destination directory if
not available and copies multiple files into it.
do_bz2copy "filename1" "filename2" ... "destination/"
This command creates the destination directory if
not available and copies multiple files into it and
compresses them using 'bzip2 -9'.
do_gzcopy "filename1" "filename2" ... "destination/"
This command creates the destination directory if
not available and copies multiple files into it and
compresses them using 'gzip -9'.
do_download "url"
Fetch file, check md5sum and store into
$ARCHIVE_SRCDIR
do_extract "filename"
This commands extracts given file(s) after select-
ing valid decompression commands via parse_fname.
Multiple files can be given by separating them
using the space character or by using wildchars.
do_md5sumcheck "filename" "md5sum(s)file"
This command checks given file agains md5sum stored
in md5sum(s)file and exists if it is corrupt with
an error message.
DEBIAN SKELETON
$CONFDIR/debian/default.changelog
This is a skeleton for changelog file used in
./debian/ directory. You can use the predefined
variables shown bellow...
$CONFDIR/debian/default.control
This is a skeleton for control file used in
./debian/ directory. You can use the predefined
variables shown bellow.
$CONFDIR/debian/default.rules
This is a ''dummy'' rules file to be used in
./debian/ directory. It only includes the binary
part and is mainly the same as used by the alien
utility.
__CURRENT_DATE__
This field will be filled with the output of
`date +%a,\ %d\ %b\ %Y\ %X\ %z`.
__DEPENDENCIES__
This field will be filled by debian's dh_shlibdeps.
__PKG_CREATOR__
This field will be filled with the value of
$PKG_CREATOR.
__PKG_PRIORITY__
This field will be filled with the value of
$PKG_PRIORITY. If not specified, the default is
"extra".
__PKG_SECTION__
This field will be filled with the value of
$PKG_SECTION. If not specified, the default is
"unknown".
__PROGRAM_NAME__
This field will be filled with the program name.
__PROGRAM_VERSION__
This field will be filled with the program's ver-
sion number.
__PROGRAM_RELEASE__
This field will be filled with the program's
release number.
PREDEFINED VARIABLES
SRCDIR="$SOURCE_DIRECTORY"
points to the source directory.
TOPDIR="`pwd`"
points to the directory where all the source files
and patches are placed (this is the directory where
you entered the buildpkg command).
CWD="$TOPDIR"
this is an alias for $TOPDIR; it is defined for
backward compatibility with slackware's protopkg.
SPECIAL FEATURES
- filelist feature
This feature can be used to create custom packages.
These files (ie. dummy-0.0.1-1.filelist) provide
the filenames for buildpkg to package into separate
packages. You can also use wildchars in the file-
names as these are expanded using the 'ls' command.
- iteration feature
Several packages requires to use multiple compile,
build and install steps ie. for compiling both,
shared and static libraries, etc. To use this fea-
ture you only need to define the ITERATION="_0 _1
..." variable at the beginning of the .def file and
the use CONFIGURE_0, BUILD_0, INSTALL_0 ... instead
of the normal names. If one step is missing (ie. no
INSTALL_0), buildpkg will detect this and skip this
step.
CONFIGURATION
My '$CONFDIR/buildpkg.conf' file:
#
# buildpkg system wide configuration
#
IGNOREPATH="/proc:/dev:/root:/export/home:/home:...
.../tmp:/var/spool/postfix:/usr/local/src:...
.../usr/src:/usr/share/src:/mnt:/cdrom:/xfn"
DOWNLOAD_IF_NOT_AVAILABLE="y"
STRIP_LIB="y"
STRIP_BIN="y"
STRIP_STATIC_LIBRARIES="y"
INSTALL_MODE="normal"
PACKAGE_TYPE="slackware"
AUTO_COLLECT_INSTALLED="y"
REMOVE_AFTER_COPIED_TO_DESTDIR="y"
REMOVE_EMPTY_DIRS="n"
ENABLE_FIND_PROGRESS="y"
EXAMPLES
For examples, please visit the
http://savannah.nongnu.org/projects/buildpkg website.
SEE ALSO
buildpkg-0.0.2r28f(1).
COPYRIGHT
Copyright (c) 2001-2004 by DiCE/PsychoMix
http://savannah.nongnu.org/projects/buildpkg
This program is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any
later version.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCI-
DENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSI-
NESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSI-
BILITY OF SUCH DAMAGE.
2003-12-24 buildpkg-0.0.2r28f buildpkg(1)