]> CyberLeo.Net >> Repos - CDN/Mosi.git/blob - docs/spec
docs/spec: clarify layout for worlds and targets subdirs
[CDN/Mosi.git] / docs / spec
1 docs/        - Project documentation
2   spec       - Specification
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)
15 src/         - Going away
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
32
33
34 seed/ is used to seed the initial chroot for building a world.
35
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.
37
38 Layout for worlds: (All but config/ are created as needed, and obliterated on clean)
39 worlds/
40   <arch>/
41     <CONF>/
42       config/
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
50
51
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.
53
54 Layout for targets: (All but config/ and world@ are created as needed, and obliterated on clean)
55 targets/
56   <arch>/
57     <CONF>/
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
61           <portname>/  - 
62             options    - 
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
71
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.