The largest part of a
specfile
is the shell
script that builds the package.
LPMtool does not build an application directly.
The
specfile
provides a shell script that does that.
The process of building an application, from source code, varies with each application, but it usually consists of the following, general steps:
The tarballs containing the source code are unpacked into a work area, and any required patches are applied.
The application's source code is compiled.
An installation image is created.
Try to follow this general outline
when creating a new
specfile
for an application.
A
“%begin” line should mark the beginning of
the shell script that corresponds to each part of the build process.
Each shell script should have a short name, which is given after the
“%begin”.
A
“%begin” without a name gets a name called
“setup”, this is usually the very first shell script
in a specfile
.
By convention, the other shell scripts should be called
“build” and “install” (as offered in the sample
specfile
from the beginning of
Chapter 7, Building packages), but the names are purely arbitrary.
lpbuild
automatically creates several work directories, when processing
the specfile
.
The first work directory is allocated for the unpacked source code,
and a second work directory is allocated for the installation image.
The actual location of the work directory is not very important.
LPMtool takes care of creating this directory, and removing it after the
application package files are built.
By default,
lpbuild
runs each “%begin” script from
specfile
,
one after another.
Each “%begin” starts out with the current directory being reset to the top of the source code work directory. If the shell script changes the current directory to someplace else, it will be reset at the beginning of the next “%begin” script.
If %setup
macros are used (see
Section 13.4, “Predefined macros”)
the first %setup
macro resets the initial directory to the
main source subdirectory.
All subsequent “%begin” scripts will start from the main
source subdirectory.
By default,
lpbuild
creates the work directories before executing the first
“%begin” script.
After the last
“%begin” script completes successfully, the package files
are created, and the work directories are automatically deleted.
lpbuild
has an option that runs a single
“%begin”
script only, without deleting the temporary work directories.
This provides for incremental development and
debugging of a new
specfile
.