2.7 KiB

Development Guidelines


Before making a PR, please test your change locally. It is OK to develop outside of the live environment, but please be sure to test inside the live environment and that a full build completes.


├── seed.kaem
├── script-generator.c
├── ...
└── stage0-posix

├── manifest
├── any-global-files
├── jump
│   └──
├── improve
│   └──
├── somepackage-version
│   ├── pass1.kaem
│   ├──
│   ├── files
│   ├── simple-patches
│   ├── mk
│   └── patches

The seed directory contains everything required for script-generator to be run.

In the steps directory, the bootstrap process is defined in manifest. Each package to be built is named package-version. Each subsequent build of a package is the nth pass. Scripts are named accordingly; eg, the first build would be called, the second would be, etc. Scripts run in kaem era should be denoted as such in their filename; pass1.kaem, for example. Pass numbers do not reset after kaem, ie, you cannot have both pass1.kaem and

In this folder, there are other folders/files. *.checksums are required for early packages that are build with kaem, others are optional.

Permissible folders/files:

  • files: auxiliary files required for the build distributed by live-bootstrap.
  • mk: makefiles.
  • patches: patches for the source.
  • simple-patches: patches for the source that use the before/after convention of simple-patch.c
  • *.checksums: files containing the checksums for the resulting binaries and libraries that are compiled and installed.
    • Otherwise, the package's checksum is in SHA256SUMS.pkgs.
  • compilation script(s)


  • Patches:
    • all patches are -p0
    • all patches begin with a patch header
  • parts.rst:
    • all packages are explained in parts.rst
  • General:
    • Where possible, all blocks of text should be limited to a length of 80 characters.
    • There is no character limit for code, the reasons for this are two-fold:
      • Often harms readability.
      • Often impossible/hard in early bootstrap stages.
  • Licensing:
    • Generally, the project is licensed under the GNU GPL v3.0 (or any later version).
    • Documentation is licensed under CC-BY-SA-4.0.
    • Patches are licensed under the license of the project which they are patching.
    • All files (excluding files within submodules) must comply with REUSE v3.0.