live-bootstrap/DEVEL.md

86 lines
2.7 KiB
Markdown
Raw Permalink Normal View History

2021-02-08 06:23:31 +00:00
<!--
SPDX-FileCopyrightText: 2021 fosslinux <fosslinux@aussies.space>
SPDX-License-Identifier: CC-BY-SA-4.0
-->
2021-01-20 01:43:40 +00:00
# Development Guidelines
## Testing
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.
## Structure
```
2023-11-24 03:59:30 +00:00
seed
├── seed.kaem
├── script-generator.c
├── ...
└── stage0-posix
steps
├── manifest
├── any-global-files
├── jump
│   └── linux.sh
├── improve
│   └── x.sh
2021-01-20 01:43:40 +00:00
├── somepackage-version
2023-11-24 03:59:30 +00:00
│   ├── pass1.kaem
│   ├── pass2.sh
2021-01-20 01:43:40 +00:00
│   ├── files
│   ├── simple-patches
2021-01-20 01:43:40 +00:00
│   ├── mk
2022-05-21 19:29:55 +01:00
│   └── patches
2021-01-20 01:43:40 +00:00
```
2023-11-24 03:59:30 +00:00
The `seed` directory contains everything required for `script-generator` to be
run.
2021-02-03 06:02:11 +00:00
2023-11-24 03:59:30 +00:00
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 `pass1.sh`, the second would be
`pass2.sh`, 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 `pass1.sh`.
2021-01-20 01:43:40 +00:00
2022-05-21 19:29:55 +01:00
In this folder, there are other folders/files. `*.checksums` are
required for early packages that are build with kaem, others are optional.
2022-05-21 19:29:55 +01:00
Permissible folders/files:
2021-01-20 01:43:40 +00:00
- `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
2022-05-20 16:10:20 +01:00
- `*.checksums`: files containing the checksums for the resulting binaries and
libraries that are compiled and installed.
2023-11-24 03:59:30 +00:00
- Otherwise, the package's checksum is in SHA256SUMS.pkgs.
- compilation script(s)
2021-02-03 06:02:11 +00:00
## Conventions
- **Patches:**
- all patches are `-p0`
- all patches begin with a patch header
2023-11-24 03:59:30 +00:00
- **parts.rst:**
- all packages are explained in `parts.rst`
2021-02-03 06:02:11 +00:00
- **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.
2021-02-06 23:22:21 +00:00
- **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.