summaryrefslogtreecommitdiffstats
path: root/HACKING
blob: e7282951453d62ce96e7803a4407003db7738139 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
IMPLEMENTATION NOTES

Preparation
The first stage is preparation performed by the prepkg script.
Software releases (i.e. tarballs) must be fetched and general information
about the package is determined from these downloaded files. Scripts
called "preps" are each queried in turn to see if the specified package
is one they recognize. Each package source has its own prep script, though
currently only one exists for the CPAN. The prep creates a PKGDATA file,
a simple key/value text file, and initializes the PKGBUILD functions by using
putpkgtree(1). prepkg's duty is then finished.

Modification
While creating perl packages I found that automated techniques
could not always generate exactly what I wanted. Human intervention would
sometimes be inevitable. In case modification is necessary, a mod script
can be created. Mods are written in tcl and usually stored in
$HOME/pkg/mods/. If a mod script with the same name as the package
is present, the modifications are performed on the PKGDATA and PKGBUILD.
These duties are handled by modpkg(1).

Finalization
Now the package data and functions are merged together into a PKGBUILD.
injectdigs(1) is used to generate the MD5 and SHA digests for the
package files in the source array, as well as any patches or files added.
vervar(1) is used to replace version strings in PKGBUILD fields with
$pkgver. After the PKGDATA(5) stream is fed through these
filters, the pbfields(1) script converts the fields into a PKGBUILD header.
All of the sections of the PKGBUILD are then merged together and written
to a file with the help of the getpkgtree(1) script.