]> CyberLeo.Net >> Repos - CDN/Mosi.git/blob - docs/spec
targets/amd64/SS4200, targets/i386/NEPETA: normalize make.conf settings
[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;
61           <portname>/  -  copied to /var/db/ports/ before build and scavenged therefrom afterwards
62             options    - 
63         port.lst       - List of leaf ports to build and install; dependencies will be installed automatically
64         conf/          - Confpack configuration: md_size files and previous save cpios
65         overlay/       - A tree of files to be placed into the target filesystem prior to package installation
66         patch/         - Patches applied to the target filesystem after all packages are installed
67         whiteout.lst   - Any filenames that exist in here will be deleted; files with 'rm -f', directories with 'rm -rf'
68       ports@           - Symlink to ports tree to use for build; assume /usr/ports if missing
69       world@           - Symlink to the proper world against which this target is to be built
70       log/             - Logfiles generated by build system go here
71       chroot/          - Chroot directory for isolating builds; seeded by world/root, so make sure the target world is built first
72       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
73       pkg/             - Assembled binary packages to be installed in final image
74       tree/            - Directory for assembling final image
75
76 Packages are built for a world, but specific to a target because they may have target-specific port_options or make.conf tweaks applied.
77
78 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)