1 docs/ - Project documentation
3 script/ - Build scripts
4 lib/ - Script libraries (shlib compatible)
5 burn - Burn a firmware to a card (uses misc/clpbar for status)
6 gencard - Assemble everything into a card image
7 geniso - Assemble root filesystem into an iso9660 image (requires sysutils/cdrtools)
8 gentree - Assemble filesystem from world, pkgs, and overlay; carve out confpacks
9 genufs - Create a UFS filesystem and populate it with files (superseded by makefs)
10 genuzip - Compress iso9660 image into geom_uzip image
11 loadconf - I'm not sure...
12 makepkg - Libraries to build packages against a specific world
13 makeworld - Script to build a world from a seed and src
14 push - Push source tree to build server (requires net/rsync)
16 targets/ - Contains system targets (world, ports, runtime config)
17 amd64/ - Arch-specific targets
18 GENERIC/ - Generic target, relies on worlds/amd64/GENERIC
19 i386/ - Arch-specific targets
20 GENERIC/ - Generic target, relies on worlds/i386/GENERIC
21 worlds/ - Contains worlds (config and root tree of a given base system build)
22 amd64/ - Arch-specific worlds
23 GENERIC/ - Generic world (Empty src.conf, GENERIC kernel config file)
24 i386/ - Arch-specific worlds
25 GENERIC/ - Generic world (Empty src.conf, GENERIC kernel config file)
26 seed/ - Contains seed builds for building a world
27 base/ - Location of base tarballs
28 amd64/ - Arch-specific seed
29 i386/ - Arch-specific seed
30 distfiles/ - Distfile tarballs for port builds
31 Makefile - Makefile to build it all
34 seed/ is used to seed the initial chroot for building a world.
36 A world is a set of config files (src.conf, kernconf) that generates a particular base system build, along with the base system build generated by those config files. These are built off of whatever is in /usr/src at the moment.
38 Layout for worlds: (All but config/ are created as needed, and obliterated on clean)
43 <CONF> - Kernel config file for this world; copied to /usr/src/sys/<arch>/conf/<CONF> before build
44 src.conf - Base system build configuration file; copied to /etc/src.conf before build
45 src@ - Symlink to source tree to use for build; assume /usr/src if missing
46 chroot/ - Chroot directory for isolating builds; seeded by seed/base/<arch>/base.?? before build
47 log/ - Logfiles generated by build system go here
48 obj/ - Object file directory; null-mounted onto /usr/obj before build
49 root/ - Final world image ready for use
52 A target is a set of config files (make.conf, leaf_ports, port_options) and a system overlay that takes a given world and transforms it into a viable system, which is then carved up and packaged into a firmware.
54 Layout for targets: (All but config/ and world@ are created as needed, and obliterated on clean)
58 config/ - Target configuration goes here
59 make.conf - Port build configuration file; copied to /etc/make.conf before build
60 port.options/ - Options framework config files, generated by 'make config' in a port directory; copied to /var/db/ports/ before build and scavenged therefrom afterwards
63 port.lst - List of leaf ports to build and install; dependencies will be installed automatically
64 ports@ - Symlink to ports tree to use for build; assume /usr/ports if missing
65 world@ - Symlink to the proper world against which this target is to be built
66 log/ - Logfiles generated by build system go here
67 chroot/ - Chroot directory for isolating builds; seeded by world/root, so make sure the target world is built first
68 bdeps/ - Port build dependencies; not installed in the final image, but useful for reducing build time of ports, since the chroot is cleared out after every build
69 pkg/ - Assembled binary packages to be installed in final image
70 root/ - Final target image ready for packaging into image
72 Packages are built for a world, but specific to a target because they may have target-specific port_options or make.conf tweaks applied.