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) amd64/ - Arch-specific targets GENERIC/ - Generic target, relies on worlds/amd64/GENERIC i386/ - Arch-specific targets GENERIC/ - Generic target, relies on worlds/i386/GENERIC worlds/ - Contains worlds (config and root tree of a given base system build) amd64/ - Arch-specific worlds GENERIC/ - Generic world (Empty src.conf, GENERIC kernel config file) i386/ - Arch-specific 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 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 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 root/ - Final target image ready for packaging into 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.