docs/ - Project documentation spec - Specification script/ - Build scripts lib/ - Script libraries (shlib compatible) burn - Burn a firmware to a card (uses misc/clpbar for status) gencard - Assemble everything into a card image geniso - Assemble root filesystem into an iso9660 image (requires sysutils/cdrtools) gentree - Assemble filesystem from world, pkgs, and overlay; carve out confpacks genufs - Create a UFS filesystem and populate it with files (superseded by makefs) genuzip - Compress iso9660 image into geom_uzip image loadconf - I'm not sure... makepkg - Libraries to build packages against a specific world makeworld - Script to build a world from a seed and src push - Push source tree to build server (requires net/rsync) src/ - Going away targets/ - Contains system targets (world, ports, runtime config) config/ - Generic configuration for all targets amd64/ - Arch-specific targets config/ - Generic configuration for all amd64 targets GENERIC/ - Generic target, relies on worlds/amd64/GENERIC i386/ - Arch-specific targets config/ - Generic configuration for all i386 targets GENERIC/ - Generic target, relies on worlds/i386/GENERIC worlds/ - Contains worlds (config and root tree of a given base system build) config/ - Generic configuration for all worlds amd64/ - Arch-specific worlds config/ - Generic configuration for all amd64 worlds GENERIC/ - Generic world (Empty src.conf, GENERIC kernel config file) i386/ - Arch-specific worlds config/ - Generic configuration for all i386 worlds GENERIC/ - Generic world (Empty src.conf, GENERIC kernel config file) seed/ - Contains seed builds for building a world base/ - Location of base tarballs amd64/ - Arch-specific seed i386/ - Arch-specific seed distfiles/ - Distfile tarballs for port builds Makefile - Makefile to build it all Files in config directories are overlaid completely, and are not merged nor successively applied. For instance, a file with the same name in targets/amd64/config will cause the file in targets/config to be ignored; likewise for a file in targets/amd64/GENERIC/config. seed/ is used to seed the initial chroot for building a world. 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. Layout for worlds: (All but config/ are created as needed, and obliterated on clean) worlds/ / / config/ - Kernel config file for this world; copied to /usr/src/sys//conf/ before build src.conf - Base system build configuration file; copied to /etc/src.conf before build src@ - Symlink to source tree to use for build; assume /usr/src if missing chroot/ - Chroot directory for isolating builds; seeded by seed/base//base.?? before build log/ - Logfiles generated by build system go here obj/ - Object file directory; null-mounted onto /usr/obj before build root/ - Final world image ready for use 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. Layout for targets: (All but config/ and world@ are created as needed, and obliterated on clean) targets/ / / config/ - Target configuration goes here make.conf - Port build configuration file; copied to /etc/make.conf before build 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 options - port.lst - List of leaf ports to build and install; dependencies will be installed automatically conf/ - Confpack configuration: md_size files and previous save cpios overlay/ - A tree of files to be placed into the target filesystem prior to package installation patch/ - Patches applied to the target filesystem after all packages are installed whiteout.lst - Any filenames that exist in here will be deleted; files with 'rm -f', directories with 'rm -rf' ports@ - Symlink to ports tree to use for build; assume /usr/ports if missing world@ - Symlink to the proper world against which this target is to be built log/ - Logfiles generated by build system go here chroot/ - Chroot directory for isolating builds; seeded by world/root, so make sure the target world is built first 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 pkg/ - Assembled binary packages to be installed in final image tree/ - Directory for assembling final image Packages are built for a world, but specific to a target because they may have target-specific port_options or make.conf tweaks applied. Whiteout list files are simple lists, one pathspec per line, of target objects to delete after overlays, packages, and patches are applied. Each line should be relative to the root of the target filesystem image. The entry will be ignored if it resolves to a pathspec that does not exist within the target image. The entry will be ignored with a warning if it resolves to a path that falls outside of the target image's build directory (${sroot}), or if it points to a file contained within a non-directory object (such as /etc/fstab/none when /etc/fstab is not a directory)