The MariaDB component, out of the shared tree and into a unit #1

Merged
marcos-mendez merged 1 commit from feat/the-mariadb-component into main 2026-09-27 16:58:57 -03:00
marcos-mendez commented 2026-09-27 14:09:52 -03:00 (Migrated from github.com)

The first component to move under decision 0010, now that bt-layer records the units a layer carries and fab gives a unit its removelist and conf-vars slots.

What came across, and from where:

shared tree here
plans/turnkey/mysql plan
overlays/mysql overlay/, byte identical, modes included
conf/mysql conf, executable, three lines changed
mk/turnkey/mysql.mk nothing, and the changelog says why
removelists/mysql nothing, it is 0 bytes

The conf script is the only file that differs, in three lines: TKL_BASHLIB, BIN and INITD became overridable defaults so the script can be run against scratch directories and measured. A build sets none of them, and the script ships nowhere, because fab copies it into the chroot, runs it and removes it with the temporary directory. Nothing the image gets is touched, which is the rule the extraction has to keep: the proof of this repository is a rebuilt mariadb layer compared against a build from the shared tree, and a file edited to be testable would appear in that comparison as a difference the extraction caused.

MYSQL_PASS is deliberately not carried: fab now lets a unit name the build time variables its conf script reads, and this one reads none.

Test plan:

  • bats tests/, 20 tests
  • COVERAGE_THRESHOLD=100 tests/coverage.sh, 100 percent (17/17), gate raised from the bootstrap 0
  • three builds on the build host: the mariadb layer from the shared tree, the same layer with this component as a unit, and the shared tree again, compared the way decision 0010 compares them
The first component to move under decision 0010, now that `bt-layer` records the units a layer carries and `fab` gives a unit its removelist and `conf-vars` slots. What came across, and from where: | shared tree | here | | --- | --- | | `plans/turnkey/mysql` | `plan` | | `overlays/mysql` | `overlay/`, byte identical, modes included | | `conf/mysql` | `conf`, executable, three lines changed | | `mk/turnkey/mysql.mk` | nothing, and the changelog says why | | `removelists/mysql` | nothing, it is 0 bytes | The conf script is the only file that differs, in three lines: `TKL_BASHLIB`, `BIN` and `INITD` became overridable defaults so the script can be run against scratch directories and measured. A build sets none of them, and the script ships nowhere, because fab copies it into the chroot, runs it and removes it with the temporary directory. Nothing the image gets is touched, which is the rule the extraction has to keep: the proof of this repository is a rebuilt `mariadb` layer compared against a build from the shared tree, and a file edited to be testable would appear in that comparison as a difference the extraction caused. `MYSQL_PASS` is deliberately not carried: fab now lets a unit name the build time variables its conf script reads, and this one reads none. Test plan: - [x] `bats tests/`, 20 tests - [x] `COVERAGE_THRESHOLD=100 tests/coverage.sh`, 100 percent (17/17), gate raised from the bootstrap 0 - [ ] three builds on the build host: the `mariadb` layer from the shared tree, the same layer with this component as a unit, and the shared tree again, compared the way decision 0010 compares them
marcos-mendez commented 2026-09-27 16:57:55 -03:00 (Migrated from github.com)

Measured: four builds of bt-layer mariadb --parent core on the build host, with the recipe change in keel-mariadb#11. Package list identical (438), symlinks identical (3,380), 179 of 35,315 files differing against a 179-file control-to-control noise floor, and nothing outside it. The three files and the one package line the first comparison showed extra are the recipe's changelog entry, which the fourth build measured on its own.

Measured: four builds of `bt-layer mariadb --parent core` on the build host, with the recipe change in keel-mariadb#11. Package list identical (438), symlinks identical (3,380), 179 of 35,315 files differing against a 179-file control-to-control noise floor, and nothing outside it. The three files and the one package line the first comparison showed extra are the recipe's changelog entry, which the fourth build measured on its own.
Sign in to join this conversation.
No description provided.