Skip to content

Commit 476678e

Browse files
committed
docs: move to Diataxis structure
Signed-off-by: Eike Waldt <waldt@b1-systems.de> On-behalf-of: SAP <eike.waldt@sap.com>
1 parent dbc6c49 commit 476678e

2 files changed

Lines changed: 77 additions & 76 deletions

File tree

README.md

Lines changed: 0 additions & 76 deletions
This file was deleted.

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
docs/how-to/README.md

docs/how-to/README.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Kernel builds for Garden Linux
2+
3+
This repository contains the code for building the [kernel](https://www.kernel.org) in Garden Linux.
4+
The build is based on [the debian kernel build](https://salsa.debian.org/kernel-team/linux).
5+
6+
Garden Linux includes the latest LTS version of the kernel.
7+
8+
## Components of this repository
9+
10+
`./config` contains Garden Linux specific build configuration for the kernel.
11+
12+
`./fixes-debian` contains patches for the debian build if needed.
13+
We apply all patches from debian by default.
14+
In some cases, we need to make changes to those to get a working build.
15+
16+
`./upstream-patches` contains kernel patches that are not included in debian's kernel, but are part of the Garden Linux kernel.
17+
18+
`./prepare_source` contains a shell script that merges debian's kernel build repository with the upstream kernel sources.
19+
20+
`./update-kernel.py` contains a script which helps keeping up with patch releases of the LTS kernel version.
21+
22+
`.github/workflows/pr-if-new-kernel.yml` contains the workflow to create new PRs based on `./update-kernel.py` if new patch versions of the LTS kernel are available.
23+
24+
`.github/workflows/build.yml` contains the workflow to build and release the kernel binaries.
25+
26+
## Backports
27+
28+
| branch | description |
29+
| ------------- | -------------- |
30+
| `main` | latest lts kernel we maintain (6.18) |
31+
| `maint-6.12` | maintenance of source code for kernel 6.12 |
32+
| `maint-6.6` | maintenance of source code for kernel 6.6 |
33+
| `rel-1877` | backport for 1877, merge code from `maint-6.12` |
34+
| `rel-1592` | backport for 1592, merge code from `maint-6.6` |
35+
36+
37+
The main branch of this repository always contains the latest kernel available in Garden Linux, and in the nightly builds.
38+
Typically, this will be the most recent long term support (LTS) line from kernel.org, but from time to time it might also be a 'stable' kernel that will become the next LTS.
39+
40+
We maintain also older supported kernel versions, if they are required by supported Garden Linux versions.
41+
42+
Any kernel version that we need to maintain other than the latest LTS in main, are maintained in `maint-<MAJOR.MINOR>` branches (e.g. `maint-6.6`).
43+
Backport releases need to branch off from the respective `maint-<MAJOR.MINOR>` branch and include the corresponding `.container` file for target backport.
44+
45+
Branches containing the `.container` file must be named according to the `rel-MAJOR` naming scheme (e.g. `rel-1443`).
46+
47+
## How to do a backport from maint-X.Y branch
48+
49+
```
50+
git checkout rel-MAJOR
51+
git merge --squash origin/maint-x.y
52+
# resolve merge conflicts
53+
git commit
54+
git push
55+
# Pipeline builds new rel-MAJOR version
56+
```
57+
58+
> [!Tip]
59+
> You can find out the correct `.container` file by copying it from the corresponding tag of the https://github.com/gardenlinux/repo branch, for example [1877.0](https://github.com/gardenlinux/repo/blob/1877.0/.container)
60+
61+
> [!Note]
62+
> We must create `rel-*` branches to include the respective `.container` file, and not use `maint-*` for backports. This is required because multiple releases can use the same kernel version (e.g. `rel-1443` and `rel-1592` both use `maint-6.6`)
63+
64+
## Automated kernel patch level upgrades
65+
66+
A scheduled workflow scans a list of configured branches [see](https://github.com/gardenlinux/package-linux/blob/main/.github/workflows/pr-if-new-kernel.yml#L12), and bumps the patch level of the version defined in the prepare_source file.
67+
The automation creates a PR if a new patch level is available.
68+
69+
> [!Important]
70+
> Note that build failures in this PR will not be visible in the way you are used to it.
71+
> This is due to limitations on GitHub.
72+
> Always check the PR-related workflow manually before merge as it might well be that an upgrade of the kernel breaks the build.
73+
> [See this issue for more information if you are interested](https://github.com/gardenlinux/package-linux/issues/47).
74+
75+
> [!Note]
76+
> This is done via the [update-kernel.py](https://github.com/gardenlinux/package-linux/blob/main/update-kernel.py) tool

0 commit comments

Comments
 (0)