Compose the MariaDB component instead of including the shared tree #11
No reviewers
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Keel-Linux/keel-mariadb!11
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/mariadb-as-a-unit"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The recipe stops including
mk/turnkey/mysql.mkand theturnkey/mysqlplan and composeskeel-linux/unit-mariadbasunit.d/mariadb(its pull request 1). Decision 0013 is why: a database is a component, not a parent layer, so LAMP and LAPP can share oneapache-phplayer. Decision 0010 is how, and it asks for a comparison rather than a claim.The comparison, on the build host
Four builds of
bt-layer mariadb --parent core, all atSOURCE_DATE_EPOCH=1700000000, fab 1.1.1+keel2, common 897ad4c, parentcore7acf2c53, 102 to 104 seconds each:unit.d/mariadbchangelogonlyThe noise floor is 179 of 35,315 regular files: 173 under
/var/lib/mysql/**, the data directory the conf script creates, plus/etc/webmin/mysql/config,/var/webmin/module.infos.cache,/var/log/alternatives.log,/var/log/webmin/webmin.log,/var/cache/ldconfig/aux-cacheand/root/.wget-hsts. Every one is install-time state and five of the six named files are already on the M0 allow-list.Against the control, the unit build differed in three files more than the noise floor:
/usr/share/doc/turnkey-mariadb-19.0/changelog, that package'smd5sumsand/var/lib/dpkg/status, and the package list differed in one line,turnkey-mariadb-19.0at revision 1 against 2. That is this changelog entry, which fab turns into the release package, so the fourth build measured it instead of arguing it: the shared tree plus the changelog entry alone produces exactly those three files and that one package line.Against that fourth build the unit build is equivalent, measured:
The manifest records the component, which is the point of the prerequisite merged tonight::
Nothing was published: the staged
mariadblayer and its manifest were restored from the backup taken before the first build, so the mirror and the staging directory still carry the published layer.Test plan:
tests/coverage.shunchanged by this branchappliance / build-and-boot, which fetches the published layer and is therefore about the layer on the mirror rather than this branchIndependent review, read-only. Verdict: Warning — not mergeable as it stands.
The extraction itself is faithful and decision 0010's prerequisites are genuinely
in place; what is not sound is the evidence around it.
Three merge blockers, shared with the sibling pull request:
clone
--branch v1.0.0, and neither unit repository has any tag or release.The documented build step fails with
Remote branch v1.0.0 not found. Sincedecision 0010's assembly step does not exist yet, this clone is the
assembly mechanism. Tag the unit, or pin a commit sha.
CONFLICTINGagainstmain, and the equivalencemeasurement was made against a tree that no longer exists.
mainhas sincegained merges that touch
Makefileandconf.d/main, including aroot.patched/prehook on the same target where fab applies the units. Allfour builds behind the "0 attributable differences" claim predate that. The
merged tree has never been built.
rebase. Verified by running the gate's own
entry_version/version_increasedagainst current
main.Two findings about the method, which outlive these pull requests:
/var/lib/mysql/**and/var/lib/postgresql/**, where only paths are compared and never the natureof the difference. Those directories hold
mysql/global_priv,mysql/user.*and
pg_authid. For a component whose build-time job is deleting accounts,the one directory the measurement cannot see is the one holding the accounts.
There is no real difference today — the review established that by diffing the
conf scripts against
common— but the reported measurement is not whatestablishes it.
scratch directory on the build host and the comparison step is committed
nowhere. Decision 0010 step 3 instructs re-running this comparison for every
future component; that instruction has no executable behind it.
Also recorded, and wider than these pull requests: the three green checks
never build the composed layer.
appliance / build-and-bootboots thepublished layer from the mirror, which on a recipe change is the code before
the change. Both bodies say so honestly with the box unticked. Tracked as
tracker#14.
Duplication has moved rather than gone.
commonstill carriesconf/mysql,conf/pgsql,overlays/mysql,overlays/pgsqland theirmakefiles, and they still have consumers —
keel-wordpressamong them. Nothingdetects divergence between the two copies, and
unit-postgresql/confhasalready diverged. Decide whether the
commoncopy is frozen with its consumersmigrating, or whether a check fails when the two drift.
Superseded by the current build (common's mysql.mk); the move to .deb overlays (decision 0036) is tracked separately.
Pull request closed