Package Building Procedures
Prev |  | Next

# 5 Anatomy of a Build

A full build without any `-no` options performs the following operations in the specified order:

1. An update of the current `ports` tree from the ZFS snapshot [*]

2. An update of the running branch's `src` tree from the ZFS snapshot [*]

3. Checks which ports do not have a `SUBDIR` entry in their respective category's `Makefile` [*]

4. Creates the `duds` file, which is a list of ports not to build [*] [+]

5. Generates a fresh `INDEX` file [*] [+]

6. Sets up the nodes that will be used in the build [*] [+]

7. Builds a list of restricted ports [*] [+]

8. Builds packages (phase 1) [++]

9. Performs another node setup [+]

10. Builds packages (phase 2) [++]

[*] Status of these steps can be found in ``${arch}`/`${branch}`/build.log` as well as on stderr of the tty running the `dopackages` command.

[+] If any of these steps fail, the build will stop cold in its tracks.

[++] Status of these steps can be found in ``${arch}`/`${branch}`/make.[0|1]`, where `make.0` is the log file used by phase 1 of the package build and `make.1` is the log file used by phase 2. Individual ports will write their build logs to ``${arch}`/`${branch}`/logs` and their error logs to ``${arch}`/`${branch}`/errors`.

Formerly the docs tree was also checked out, however, it has been found to be unnecessary.

Prev | Home | Next
Starting the Build |  | Interrupting a Build

This, and other documents, can be downloaded from ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.