summaryrefslogtreecommitdiffstats
path: root/man/ebuild.5
diff options
context:
space:
mode:
authorJason Stubbs <jstubbs@gentoo.org>2005-08-28 08:37:44 +0000
committerJason Stubbs <jstubbs@gentoo.org>2005-08-28 08:37:44 +0000
commitd9fc4acc572c6647a4f27b838d35d27d805d190e (patch)
tree262a8de35d8c7567312757da5f1f66efdc8cece5 /man/ebuild.5
downloadportage-d9fc4acc572c6647a4f27b838d35d27d805d190e.tar.gz
portage-d9fc4acc572c6647a4f27b838d35d27d805d190e.tar.bz2
portage-d9fc4acc572c6647a4f27b838d35d27d805d190e.zip
Migration (without history) of the current stable line to subversion.
svn path=/main/branches/2.0/; revision=1941
Diffstat (limited to 'man/ebuild.5')
-rw-r--r--man/ebuild.5837
1 files changed, 837 insertions, 0 deletions
diff --git a/man/ebuild.5 b/man/ebuild.5
new file mode 100644
index 000000000..349a2b81d
--- /dev/null
+++ b/man/ebuild.5
@@ -0,0 +1,837 @@
+.TH "EBUILD" "5" "Feb 2003" "Portage 2.0.51" "portage"
+.SH "NAME"
+ebuild \- the internal format, variables, and functions in an ebuild script
+.SH "DESCRIPTION"
+The
+.BR ebuild (1)
+program accepts a single ebuild script as an argument. This script
+contains variables and commands that specify how to download, unpack,
+patch, compile, install and merge a particular software package from
+its original sources. In addition to all of this, the ebuild script
+can also contain pre/post install/remove commands, as required.
+.SH "EXAMPLES"
+Here's a simple example ebuild:
+
+.DS
+.nf
+# Copyright 1999\-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+inherit some_eclass another_eclass
+
+DESCRIPTION="Super\-useful stream editor (sed)"
+HOMEPAGE="http://www.gnu.org/software/sed/sed.html"
+SRC_URI="ftp://alpha.gnu.org/pub/gnu/sed/${P}.tar.gz"
+
+LICENSE="GPL\-2"
+SLOT="0"
+KEYWORDS="~x86"
+IUSE=""
+
+DEPEND="virtual/libc"
+RDEPEND="virtual/libc"
+
+src_compile() {
+ econf || die "could not configure"
+ emake || die "emake failed"
+}
+
+src_install() {
+ into /usr
+ doinfo doc/sed.info
+ doman doc/sed.1
+ into /
+ dobin sed/sed || die "dobin sed failed"
+ dodir /usr/bin
+ dosym /bin/sed /usr/bin/sed
+ dodoc NEWS README* THANKS TODO AUTHORS BUGS ANNOUNCE
+}
+.fi
+.SH "VARIABLES"
+.TP
+.B MISC USAGE NOTES
+- PORTAGE* and PORTDIR* variables may be found in \fBmake.conf\fR(5).
+.br
+- When assigning values to variables in ebuilds, you \fBcannot have a space\fR
+between the variable name and the equal sign.
+.TP
+.B P
+This variable contains the package name without the ebuild revision.
+This variable must NEVER be modified.
+.br
+\fBxfree-4.2.1-r2.ebuild\fR --> \fB$P\fR=='\fIxfree-4.2.1\fR'
+.TP
+.B PN
+Contains the name of the script without the version number.
+.br
+\fBxfree-4.2.1-r2.ebuild\fR --> \fB$PN\fR=='\fIxfree\fR'
+.TP
+.B PV
+Contains the version number without the revision.
+.br
+\fBxfree-4.2.1-r2.ebuild\fR --> \fB$PV\fR=='\fI4.2.1\fR'
+.TP
+.B PR
+Contains the revision number or 'r0' if no revision number exists.
+.br
+\fBxfree-4.2.1-r2.ebuild\fR --> \fB$PR\fR=='\fIr2\fR'
+.TP
+.B PVR
+Contains the version number with the revision.
+.br
+\fBxfree-4.2.1-r2.ebuild\fR --> \fB$PVR\fR=='\fI4.2.1-r2\fR'
+.TP
+.B PF
+Contains the full package name \fI[PN]\-[PVR]\fR
+.br
+\fBxfree-4.2.1-r2.ebuild\fR --> \fB$PF\fR=='\fIxfree-4.2.1-r2\fR'
+.TP
+.B A
+Contains all source files required for the package. This variable must
+not be defined. It is autogenerated from the \fISRC_URI\fR variables.
+.TP
+\fBWORKDIR\fR = \fI"${PORTAGE_TMPDIR}/portage/${PF}/work"\fR
+Contains the path to the package build root. Do not modify this variable.
+.TP
+\fBFILESDIR\fR = \fI"${PORTDIR}/${CATEGORY}/${PN}/files"\fR
+Contains the path to the 'files' sub folder in the package specific
+location in the portage tree. Do not modify this variable.
+.TP
+\fBS\fR = \fI"${WORKDIR}/${P}"\fR
+Contains the path to the temporary \fIbuild directory\fR. This variable
+is used by the functions \fIsrc_compile\fR and \fIsrc_install\fR. Both
+are executed with \fIS\fR as the current directory. This variable may
+be modified to match the extraction directory of a tarball for the package.
+.TP
+\fBT\fR = \fI"${PORTAGE_TMPDIR}/portage/${PF}/temp"\fR
+Contains the path to a \fItemporary directory\fR. You may use this for
+whatever you like.
+.TP
+\fBD\fR = \fI"${PORTAGE_TMPDIR}/portage/${PF}/image"\fR
+Contains the path to the temporary \fIinstall directory\fR. Every write
+operation that does not involve the helper tools and functions (found below)
+should be prefixed with ${D}. Do not modify this variable. This will not be
+available inside of the pkg_* functions, see \fIIMAGE\fR below.
+.TP
+\fBIMAGE\fR = \fI"${PORTAGE_TMPDIR}/portage/${PF}/image"\fR
+Contains the path to the temporary \fIimage directory\fR. When inside of the
+\fIpkg_*\fR functions, you should access the \fIIMAGE\fR directory instead of
+the \fID\fR directory. Do not modify this variable.
+.TP
+\fBDESCRIPTION\fR = \fI"A happy little package"\fR
+Should contain a short description of the package.
+.TP
+\fBSRC_URI\fR = \fI"http://happy.com/little/${P}.tar.gz"\fR
+Contains a list of URI's for the required source files. It can contain
+multiple URI's for a single source file. The fastest location is chosen
+if the file was not found at \fIGENTOO_MIRROR\fB\fR.
+.TP
+\fBHOMEPAGE\fR = \fI"http://happy.com/"\fR
+Should contain a list of URL's for the sources main sites and other further
+package dependent information.
+.TP
+\fBKEYWORDS\fR = \fI[-~][x86,ppc,sparc,mips,alpha,arm,hppa]\fR
+Should contain appropriate list of arches that the ebuild is know to
+work/not work. By default if you do not know if an ebuild runs under
+a particular arch simply omit that KEYWORD. If the ebuild will not
+work on that arch include it as \-ppc for example. If the ebuild is
+being submitted for inclusion, it must have ~arch set for architectures
+where it has been PROVEN TO WORK. (Packages KEYWORDed this way may be
+unmasked for testing by setting ACCEPT_KEYWORDS="~arch" on the command
+line, or in \fBmake.conf\fR(5)) For an authoritative list please review
+/usr/portage/profiles/arch.list.
+.TP
+\fBSLOT\fR
+This sets the SLOT for packages that may need to co\-exist. By default
+you should set \fBSLOT\fR="0" unless you know what you are doing and need
+to do otherwise. This value should \fINEVER\fR be left undefined.
+.TP
+\fBLICENSE\fR
+This should be a space delimited list of licenses that the package falls
+under. This \fB_must_\fR be set to a matching license in
+/usr/portage/licenses/. If the license does not exist in portage yet you
+must add it first.
+.TP
+\fBIUSE\fR
+This should be a list of any and all USE flags that are leveraged within
+your build script. The only USE flags that should not be listed here are
+arch related flags (see \fBKEYWORDS\fR).
+.TP
+\fBDEPEND\fR
+This should contain a list of all packages that are required for the
+program to compile.
+.RS
+.TP
+.B DEPEND Atoms
+A depend atom is simply a dependency that is used by portage when calculating
+relationships between packages. Please note that if the atom has not already
+been emerged, then the latest version available is matched.
+.RS
+.TP
+.B Atom Bases
+The base atom is just a full category/packagename. Hence, these are base atoms:
+
+.nf
+.I sys-apps/sed
+.I sys-libs/zlib
+.I net-misc/dhcp
+.fi
+.TP
+.B Atom Versions
+It is nice to be more specific and say that only certain versions of atoms are
+acceptable. Note that versions must be combined with a prefix (see below). Hence
+you may add a version number as a postfix to the base:
+
+.nf
+sys-apps/sed\fI-4.0.5\fR
+sys-libs/zlib\fI-1.1.4-r1\fR
+net-misc/dhcp\fI-3.0_p2\fR
+.fi
+
+Versions are normally made up of two or three numbers separated by periods, such
+as 1.2 or 4.5.2. This string may be followed by a character such as 1.2a or 4.5.2z.
+Note that this letter is \fBnot\fR meant to indicate alpha, beta, etc... status.
+For that, use the optional suffix; either _alpha, _beta, _pre (pre-release), _rc
+(release candidate), or _p (patch). This means for the 3rd pre-release of a package,
+you would use something like 1.2_pre3.
+.TP
+.B Atom Prefix Operators [> >= = <= <]
+Sometimes you want to be able to depend on general versions rather than specifying
+exact versions all the time. Hence we provide standard boolean operators:
+
+.nf
+\fI>\fRmedia-libs/libgd-1.6
+\fI>=\fRmedia-libs/libgd-1.6
+\fI=\fRmedia-libs/libgd-1.6
+\fI<=\fRmedia-libs/libgd-1.6
+\fI<\fRmedia-libs/libgd-1.6
+.fi
+.TP
+.B Extended Atom Prefixes [!~] and Postfixes [*]
+Now to get even fancier, we provide the ability to define blocking packages and
+version range matching. Also note that these extended prefixes/postfixes may
+be combined in any way with the atom classes defined above. Here are some common
+examples you may find in the portage tree:
+
+.nf
+\fI!\fRapp-text/dos2unix
+=dev-libs/glib-2\fI*\fR
+\fI!\fR=net-fs/samba-2\fI*\fR
+\fI~\fRnet-libs/libnet-1.0.2a
+.fi
+
+\fI!\fR means block packages from being installed at the same time.
+.br
+\fI*\fR means match any version of the package so long as the specified base
+is matched. So with a version of '2*', we can match '2.1', '2.2', '2.2.1',
+etc... and not match version '1.0', '3.0', '4.1', etc...
+.br
+\fI~\fR means match any revision of the base version specified. So in the
+above example, we would match versions '1.0.2a', '1.0.2a-r1', '1.0.2a-r2',
+etc...
+.RE
+.TP
+.B Dynamic DEPENDs
+Sometimes programs may depend on different things depending on the USE
+variable. Portage offers a few options to handle this. Note that when
+using the following syntaxes, each case is considered as 1 Atom in the
+scope it appears. That means that each Atom both conditionally include
+multiple Atoms and be nested to an infinite depth.
+.RS
+.TP
+.B usevar? ( DEPEND Atom )
+To include the jpeg library when the user has jpeg in \fBUSE\fR, simply use the
+following syntax:
+.br
+.B jpeg? ( media-libs/jpeg)
+.TP
+.B !usevar? ( Atom )
+If you want to include a package only if the user does not have a certain option
+in their \fBUSE\fR variable, then use the following syntax:
+.br
+.B !nophysfs? ( dev-games/physfs )
+.br
+This is often useful for those times when you want to want to add optional support
+for a feature and have it enabled by default.
+.TP
+.B usevar? ( Atom if true ) !usevar? ( Atom if false )
+For functionality like the tertiary operator found in C you must use
+two statements, one normal and one inverted. If a package uses
+GTK2 or GTK1, but not both, then you can handle that like this:
+.br
+.B gtk2? ( =x11-libs/gtk+-2* ) !gtk2? ( =x11-libs/gtk+-1* )
+.br
+That way the default is the superior GTK2 library.
+.TP
+.B || ( Atom Atom ... )
+When a package can work with a few different packages but a virtual is not
+appropriate, this syntax can easily be used.
+.nf
+.B || (
+.B app-games/unreal-tournament
+.B app-games/unreal-tournament-goty
+.B )
+.fi
+Here we see that unreal-tournament has a normal version and it has a goty version.
+Since they provide the same base set of files, another package can use either.
+Adding a virtual is inappropriate due to the small scope of it.
+.br
+Another good example is when a package can be built with multiple video
+interfaces, but it can only ever have just one.
+.nf
+.B || (
+.B sdl? ( media-libs/libsdl )
+.B svga? ( media-libs/svgalib )
+.B opengl? ( virtual/opengl )
+.B ggi? ( media-libs/libggi )
+.B virtual/x11
+.B )
+.fi
+Here only one of the packages will be chosen, and the order of preference is
+determined by the order in which they appear. So sdl has the best chance of being
+chosen, followed by svga, then opengl, then ggi, with a default of X if the user
+does not specify any of the previous choices.
+.RE
+
+.RE
+.TP
+\fBRDEPEND\fR
+This should contain a list of all packages that are required for this
+program to run (aka runtime depend). If this is not set, then it
+defaults to the value of \fBDEPEND\fR.
+.br
+You may use the same syntax to vary dependencies as seen above in \fBDEPEND\fR.
+.TP
+\fBPDEPEND\fR
+This should contain a list of all packages that will have to be installed after
+the program has been merged.
+.br
+You may use the same syntax to vary dependencies as seen above in \fBDEPEND\fR.
+.TP
+\fBRESTRICT\fR = \fI[fetch,mirror,nostrip,userpriv]\fR
+This should be a space delimited list of portage features to restrict.
+.PD 0
+.RS
+.TP
+.I fetch
+like \fInomirror\fR but the files will not be fetched via \fBSRC_URI\fR either.
+.TP
+.I mirror
+files in \fBSRC_URI\fR will not be downloaded from the \fBGENTOO_MIRRORS\fR.
+.TP
+.I primaryuri
+fetch from URL's in \fBSRC_URI\fR before \fBGENTOO_MIRRORS\fR.
+.TP
+.I nostrip
+final binaries/libraries will not be stripped of debug symbols.
+.TP
+.I userpriv
+Disables userpriv for specific packages.
+.RE
+.PD 1
+.TP
+\fBPROVIDE\fR = \fI"virtual/TARGET"\fR
+This variable should only be used when a package provides a virtual target.
+For example, blackdown-jdk and sun-jdk provide \fIvirtual/jdk\fR. This
+allows for packages to depend on \fIvirtual/jdk\fR rather than on blackdown
+or sun specifically.
+.SH "PORTAGE DECLARATIONS"
+.TP
+.B inherit
+Inherit is portage's maintainance of extra classes of functions that
+are external to ebuilds and provided as inheritable capabilities and
+data. They define functions and set data types as drop-in replacements,
+expanded, and simplified routines for extremely common tasks to streamline
+the build process. Inherit may only be called once in an ebuild and it may
+\fBnever be wrapped within any conditionals\fR of any kind. Specification of
+the eclasses contains only their name and not the \fI.eclass\fR extention.
+.SH "FUNCTIONS"
+.TP
+.B pkg_nofetch
+If you turn on \fIfetch\fR in \fBRESTRICT\fR, then this function will be
+run when the files in \fBSRC_URI\fR cannot be found. Useful for
+displaying information to the user on *how* to obtain said files. All
+you have to do is output a message and let the function return. Do not
+end the function with a call to \fBdie\fR.
+.TP
+.B pkg_setup
+This function can be used if the package needs specific setup actions or
+checks to be preformed before anything else.
+.br
+Initial working directory of ${PORTAGE_TMPDIR}.
+.TP
+.B src_unpack
+This function is used to unpack all the sources in \fIA\fR to \fIWORKDIR\fR.
+If not defined in the \fIebuild script\fR it calls \fIunpack ${A}\fR. Any
+patches and other pre configure/compile modifications should be done here.
+.br
+Initial working directory of $WORKDIR.
+.TP
+.B src_compile
+All necessary steps for configuration and compilation should be done in here.
+.br
+Initial working directory of $S.
+.TP
+.B src_test
+Run all package specific test cases. The default is to run 'make check'
+followed 'make test'.
+.br
+Initial working directory of $S.
+.TP
+.B src_install
+Should contain everything required to install the package in the temporary
+\fIinstall directory\fR.
+.br
+Initial working directory of $S.
+.TP
+.B pkg_preinst pkg_postinst
+All modifications required on the live\-filesystem before and after the
+package is merged should be placed here. Also commentary for the user
+should be listed here as it will be displayed last.
+.br
+Initial working directory of $PWD.
+.TP
+.B pkg_prerm pkg_postrm
+Like the pkg_*inst functions but for unmerge.
+.br
+Initial working directory of $PWD.
+.TP
+.B pkg_config
+This function should contain optional basic configuration steps.
+.br
+Initial working directory of $PWD.
+.SH "HELPER FUNCTIONS: GENERAL"
+.TP
+\fBdie\fR \fI[reason]\fR
+Causes the current emerge process to be aborted. The final display will
+include \fIreason\fR.
+.TP
+\fBuse\fR \fI<USE item>\fR
+If \fIUSE item\fR is in the \fBUSE\fR variable, \fIUSE item\fR will be
+echoed and the function will return 0. If \fIUSE item\fR is not in the
+\fBUSE\fR variable, the function will return 1. \fBuseq\fR is a non-echoing
+version of \fBuse\fR.
+.RS
+.TP
+.I Example:
+.nf
+if useq gnome ; then
+ guiconf="--enable-gui=gnome --with-x"
+elif useq gtk ; then
+ guiconf="--enable-gui=gtk --with-x"
+elif useq X ; then
+ guiconf="--enable-gui=athena --with-x"
+else
+ # No gui version will be built
+ guiconf=""
+fi
+.fi
+.RE
+.TP
+\fBuse_with\fR \fI<USE item>\fR \fI[configure option]\fR
+Useful for creating custom options to pass to a configure script. If
+\fIUSE item\fR is in the \fBUSE\fR variable, then the string
+\fI--with-[configure option]\fR will be echoed. If \fIUSE item\fR is
+not in the \fBUSE\fR variable, then the string
+\fI--without-[configure option]\fR will be echoed. If
+\fIconfigure option\fR is not specified, then \fIUSE item\fR will be
+used in its place.
+.RS
+.TP
+.I Example:
+.nf
+USE="jpeg"
+myconf="$(use_with jpeg libjpeg)"
+(myconf now has the value "--with-libjpeg")
+
+USE=""
+myconf="$(use_with jpeg libjpeg)"
+(myconf now has the value "--without-libjpeg")
+
+USE="opengl"
+myconf="$(use_with opengl")
+(myconf now has the value "--with-opengl")
+.fi
+.RE
+.TP
+\fBuse_enable\fR \fI<USE item>\fR \fI[configure option]\fR
+Useful for creating custom options to pass to a configure script. If
+\fIUSE item\fR is in the \fBUSE\fR variable, then the string
+\fI--enable-[configure option]\fR will be echoed. If \fIUSE item\fR is
+not in the \fBUSE\fR variable, then the string
+\fI--disable-[configure option]\fR will be echoed. If \fIconfigure option\fR
+is not specified, then \fIUSE item\fR will be used in its place.
+.br
+See \fBuse_with\fR for an example.
+.TP
+\fBhas\fR \fI<item>\fR \fI<item list>\fR
+If \fIitem\fR is in \fIitem list\fR, then \fIitem\fR is echoed and \fBhas\fR
+returns 0. Otherwise, nothing is echoed and 1 is returned. As indicated with
+use, there is a non-echoing version \fBhasq\fR. Please use \fBhasq\fR in all
+places where output is to be disregarded. Never use the output for calculation.
+.br
+The \fIitem list\fR is delimited by the \fIIFS\fR variable. This variable
+has a default value of ' ', or a space. It is a \fBbash\fR(1) setting.
+.TP
+\fBhas_version\fR \fI<category/package-version>\fR
+Check to see if \fIcategory/package-version\fR is installed on the system.
+The parameter accepts all values that are acceptable in the \fBDEPEND\fR
+variable. The function returns 0 if \fIcategory/package-version\fR is
+installed, 1 otherwise.
+.TP
+\fBbest_version\fR \fI<package name>\fR
+This function will look up \fIpackage name\fR in the database of currently
+installed programs and echo the "best version" of the package that is
+currently installed. The function returns 0 if there is a package that
+matches \fIpackage name\fR. Otherwise, the function will return 1.
+.RS
+.TP
+.I Example:
+VERINS="$(best_version net-ftp/glftpd)"
+.br
+(VERINS now has the value "net-ftp/glftpd-1.27" if glftpd-1.27 is installed)
+.RE
+.SH "HELPER FUNCTIONS: OUTPUT"
+.TP
+\fBeinfo\fR \fI"informative message"\fR
+If you need to display an message that you wish the user to read and take
+notice of, then use \fBeinfo\fR. It works just like \fBecho\fR(1), but
+adds a little more to the output so as to catch the user's eye.
+.TP
+\fBewarn\fR \fI"warning message"\fR
+Same as \fBeinfo\fR, but should be used when showing a warning to the user.
+.TP
+\fBeerror\fR \fI"error message"\fR
+Same as \fBeinfo\fR, but should be used when showing an error to the user.
+.SH "HELPER FUNCTIONS: UNPACK"
+.TP
+\fBunpack\fR \fI<source>\fR \fI[list of more sources]\fR
+This function uncompresses and/or untars a list of sources into the current
+directory. The function will append \fIsource\fR to the \fBDISTDIR\fR variable.
+.SH "HELPER FUNCTIONS: COMPILE"
+.TP
+\fBeconf\fR \fI[configure options]\fR
+This is used as a replacement for configure. Performs:
+.nf
+configure \\
+ --prefix=/usr \\
+ --host=${CHOST} \\
+ --mandir=/usr/share/man \\
+ --infodir=/usr/share/info \\
+ --datadir=/usr/share \\
+ --sysconfdir=/etc \\
+ --localstatedir=/var/lib \\
+ \fI${EXTRA_ECONF}\fR \\
+ \fIconfigure options\fR
+.fi
+Note that the \fIEXTRA_ECONF\fR is for users only, not for ebuild
+writers. If you wish to pass more options to configure, just pass the
+extra arguements to \fBeconf\fR.
+.TP
+\fBemake\fR \fI[make options]\fR
+This is used as a replacement for make. Performs 'make ${MAKEOPTS}
+\fImake options\fR' (as set in /etc/make.globals), default is MAKEOPTS="\-j2".
+
+\fB***warning***\fR
+.br
+if you are going to use \fBemake\fR, make sure your build is happy with
+parallel makes (make \-j2). It should be tested thoroughly as parallel
+makes are notorious for failing _sometimes_ but not always.
+.SH "HELPER FUNCTIONS: INSTALL"
+.TP
+\fBeinstall\fR \fI[make options]\fR
+This is used as a replacement for make install. Performs:
+.nf
+make \\
+ prefix=${D}/usr \\
+ datadir=${D}/usr/share \\
+ infodir=${D}/usr/share/info \\
+ localstatedir=${D}/var/lib \\
+ mandir=${D}/usr/share/man \\
+ sysconfdir=${D}/etc \\
+ \fI${EXTRA_EINSTALL}\fR \\
+ \fImake options\fR \\
+ install
+.fi
+Please do \fBnot\fR use this in place of 'make install DESTDIR=${D}'.
+That is the preferred way of installing make-based packages. Also, do
+not utilize the \fIEXTRA_EINSTALL\fR variable since it is for users.
+
+.PD 0
+.TP
+.B prepall
+.TP
+.B prepalldocs
+.TP
+.B prepallinfo
+.TP
+.B prepallman
+.TP
+.B prepallstrip
+.PD 1
+Useful for when a package installs into \fB${D}\fR via scripts
+(i.e. makefiles). If you want to be sure that libraries are executable,
+aclocal files are installed into the right place, doc/info/man files are
+all compressed, and that executables are all stripped of debugging symbols,
+then use these suite of functions.
+.RS
+.PD 0
+.TP
+.B prepall:
+Runs \fBprepallman\fR, \fBprepallinfo\fR, \fBprepallstrip\fR, sets
+libraries +x, and then checks aclocal directories. Please note this
+does \fI*not*\fR run \fBprepalldocs\fR.
+.TP
+.B prepalldocs:
+Compresses all doc files in ${D}/usr/share/doc.
+.TP
+.B prepallinfo:
+Compresses all info files in ${D}/usr/share/info.
+.TP
+.B prepallman:
+Compresses all man files in ${D}/usr/share/man.
+.TP
+.B prepallstrip:
+Strips all executable files of debugging symboles. This includes libraries.
+.RE
+
+.TP
+\fBprepinfo\fR \fI[dir]\fR
+.TP
+\fBpreplib\fR \fI[dir]\fR
+.TP
+\fBpreplib.so\fR \fI[dir]\fR
+.TP
+\fBprepman\fR \fI[dir]\fR
+.TP
+\fBprepstrip\fR \fI[dir]\fR
+.PD 1
+Similiar to the \fBprepall\fR functions, these are subtle in their differences.
+.RS
+.PD 0
+.TP
+.B prepinfo:
+If a \fIdir\fR is not specified, then \fBprepinfo\fR will assume the dir
+\fIusr\fR. \fBprepinfo\fR will then compress all the files in
+${D}/\fIdir\fR/info.
+.TP
+.B preplib:
+If a \fIdir\fR is not specified, then \fBpreplib\fR will assume the dir
+\fIusr\fR. \fBpreplib\fR will then run 'ldconfig -n -N' on ${D}/\fIdir\fR/lib.
+.TP
+.B preplib.so:
+All the files with '.so' in their name and are found in ${D}/\fIdir\fR will
+be stripped of their debug symbols. You may specify multiple directories.
+.TP
+.B prepman:
+If a \fIdir\fR is not specified, then \fBprepman\fR will assume the dir
+\fIusr\fR. \fBprepman\fR will then compress all the files in
+${D}/\fIdir\fR/man/*/.
+.TP
+.B prepstrip:
+All the files found in ${D}/\fIdir\fR will be stripped. You may specify
+multiple directories.
+.RE
+.PD 1
+.TP
+\fBdopython\fR \fI<commands>\fR
+Performs \fIcommands\fR with python and returns the result.
+.TP
+\fBdosed\fR \fI"s:orig:change:g" <filename>\fR
+Performs sed (including cp/mv \fIfilename\fR) on \fIfilename\fR.
+.br
+.BR 'dosed\ "s:/usr/local:/usr:g"\ /usr/bin/some-script'
+runs sed on ${D}/usr/bin/some-script
+.TP
+\fBdodir\fR \fI<path>\fR
+Creates a directory inside of ${D}.
+.br
+.BR 'dodir\ /usr/lib/apache'
+creates ${D}/usr/lib/apache. Note that the do* functions will run
+\fBdodir\fR for you.
+.TP
+\fBdiropts\fR \fI[options for install(1)]\fR
+Can be used to define options for the install function used in
+\fBdodir\fR. The default is \fI-m0755\fR.
+.TP
+\fBinto\fR \fI<path>\fR
+Sets the root (\fIDESTTREE\fR) for other functions like \fBdobin\fR,
+\fBdosbin\fR, \fBdoman\fR, \fBdoinfo\fR, \fBdolib\fR.
+.br
+The default root is /usr.
+.TP
+\fBkeepdir\fR \fI<path>\fR
+Tells portage to leave a directory behind even if it is empty. Functions
+the same as \fBdodir\fR.
+.TP
+\fBdobin\fR \fI<binary> [list of more binaries]\fR
+Installs a \fIbinary\fR or a list of binaries into \fIDESTTREE\fR/bin.
+Creates all necessary dirs.
+.TP
+\fBdosbin\fR \fI<binary> [list of more binaries]\fR
+Installs a \fIbinary\fR or a list of binaries into \fIDESTTREE\fR/sbin.
+Creates all necessary dirs.
+.TP
+\fBdoinitd\fR \fI<init.d script> [list of more init.d scripts]\fR
+Install Gentoo \fIinit.d scripts\fR. They will be installed into the
+correct location for Gentoo init.d scripts (/etc/init.d/). Creates all
+necessary dirs.
+.TP
+\fBdoconfd\fR \fI<conf.d file> [list of more conf.d file]\fR
+Install Gentoo \fIconf.d files\fR. They will be installed into the
+correct location for Gentoo conf.d files (/etc/conf.d/). Creates all
+necessary dirs.
+.TP
+\fBdoenvd\fR \fI<env.d entry> [list of more env.d entries]\fR
+Install Gentoo \fIenv.d entries\fR. They will be installed into the
+correct location for Gentoo env.d entries (/etc/env.d/). Creates all
+necessary dirs.
+
+.PD 0
+.TP
+\fBdolib\fR \fI<library>\fR \fI[list of more libraries]\fR
+.TP
+\fBdolib.a\fR \fI<library>\fR \fI[list of more libraries]\fR
+.TP
+\fBdolib.so\fR \fI<library>\fR \fI[list of more libraries]\fR
+.PD 1
+Installs a library or a list of libraries into \fIDESTTREE\fR/lib.
+Creates all necessary dirs.
+.TP
+\fBlibopts\fR \fI[options for install(1)]\fR
+Can be used to define options for the install function used in
+the \fBdolib\fR functions. The default is \fI-m0644\fR.
+.TP
+\fBdoman\fR \fI[\-i18n=<locale>]\fR \fI<man-page> [list of more man\-pages]\fR
+Installs manual\-pages into /usr/share/man/man[0\-9n] depending on the
+manual file ending. The files are gzipped if they are not already. You can
+specify locale-specific manpages with the \fI\-i18n\fR option. Then the
+man-page will be installed into /usr/share/man/\fI<locale>\fR/man[0\-9n].
+Creates all necessary dirs.
+
+.PD 0
+.TP
+\fBdohard\fR \fI<filename> <linkname>\fR
+.TP
+\fBdosym\fR \fI<filename> <linkname>\fR
+.PD 1
+Performs the ln command as either a hard link or symlink.
+.TP
+\fBdohtml\fR \fI [\-a filetypes] [\-r] [\-x list\-of\-dirs\-to\-ignore] [list\-of\-files\-and\-dirs]\fR
+Installs the files in the list of files (space\-separated list) into
+/usr/share/doc/${PF}/html provided the file ends in .html, .png, .js, .jpg,
+or .css. Setting \fI\-a\fR limits what types of files will be included,
+\fI\-A\fR appends to the default list, setting \fI\-x\fR sets which dirs to
+exclude (CVS excluded by default), \fI\-r\fR sets recursive.
+.TP
+\fBdoinfo\fR \fI<info-file> [list of more info\-files]\fR
+Installs info\-pages into \fIDESTDIR\fR/info. Files are automatically
+gzipped. Creates all necessary dirs.
+.TP
+\fBdojar\fR \fI<jar file> [list of more jar files]\fR
+Installs jar files into /usr/share/${PN}/lib and adds them to
+/usr/share/${PN}/classpath.env.
+.TP
+\fBdomo\fR \fI<locale-file> [list of more locale\-files] \fR
+Installs locale\-files into \fIDESTDIR\fR/usr/share/locale/[LANG]
+depending on local\-file's ending. Creates all necessary dirs.
+
+.PD 0
+.TP
+\fBfowners\fR \fI<permissions> <file> [files]\fR
+.TP
+\fBfperms\fR \fI<permissions> <file> [files]\fR
+.PD 1
+Performs chown (\fBfowners\fR) or chmod (\fBfperms\fR), applying
+\fIpermissions\fR to \fIfiles\fR.
+.TP
+\fBinsinto\fR \fI[path]\fR
+Sets the root (\fIINSDESTTREE\fR) for the \fBdoins\fR function.
+.br
+The default root is /.
+.TP
+\fBinsopts\fR \fI[options for install(1)]\fR
+Can be used to define options for the install function used in
+\fBdoins\fR. The default is \fI\-m0644\fR.
+.TP
+\fBdoins\fR \fI<file> [list of more files]\fR
+Installs files into \fIINSDESTTREE\fR. This function uses \fBinstall\fR(1).
+Creates all necessary dirs.
+.TP
+\fBexeinto\fR \fI[path]\fR
+Sets the root (\fIEXEDESTTREE\fR) for the \fBdoexe\fR function.
+.br
+The default root is /.
+.TP
+\fBexeopts\fR \fI[options for install(1)]\fR
+Can be used to define options for the install function used in \fBdoexe\fR.
+The default is \fI\-m0755\fR.
+.TP
+\fBdoexe\fR \fI<executable> [list of more executables]\fR
+Installs a executable or a list of executable into \fIEXEDESTTREE\fR.
+This function uses \fBinstall\fR(1). Creates all necessary dirs.
+.TP
+\fBdocinto\fR \fI[path]\fR
+Sets the relative subdir (\fIDOCDESTTREE\fR) used by \fBdodoc\fR.
+.TP
+\fBdodoc\fR \fI<document> [list of more documents]\fR
+Installs a document or a list of document into /usr/share/doc/${PF}/\fIDOCDESTTREE\fR.
+Files are automatically gzipped. Creates all necessary dirs.
+
+.PD 0
+.TP
+\fBnewbin\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewsbin\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewinitd\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewconfd\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewenvd\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewlib\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewlib.so\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewlib.a\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewman\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewinfo\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewins\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewexe\fR \fI<old file> <new filename>\fR
+.TP
+\fBnewdoc\fR \fI<old file> <new filename>\fR
+.PD 1
+All these functions act like the do* functions, but they only work with one
+file and the file is installed as \fI[new filename]\fR.
+.SH "REPORTING BUGS"
+Please report bugs via http://bugs.gentoo.org/
+.SH "SEE ALSO"
+.BR ebuild (1),
+.BR make.conf (5)
+.TP
+The \fI/usr/sbin/ebuild.sh\fR script.
+.TP
+The helper apps in \fI/usr/lib/portage/bin\fR.
+.SH "FILES"
+.TP
+\fB/etc/make.conf\fR
+Contains variables for the build\-process and overwrites those in make.defaults.
+.TP
+\fB/etc/make.globals\fR
+Contains the default variables for the build\-process, you should edit
+\fI/etc/make.conf\fR instead.
+.SH "AUTHORS"
+.nf
+Achim Gottinger <achim@gentoo.org>
+Mark Guertin <gerk@gentoo.org>
+Nicholas Jones <carpaski@gentoo.org>
+Mike Frysinger <vapier@gentoo.org>
+.fi
+.SH "CVS HEADER"
+$Header: /var/cvsroot/gentoo-src/portage/man/ebuild.5,v 1.73.2.8 2005/05/22 09:56:55 vapier Exp $