diff options
Diffstat (limited to 'docs/superpowers/specs')
| -rw-r--r-- | docs/superpowers/specs/2026-10-15-updates-design.md | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/docs/superpowers/specs/2026-10-15-updates-design.md b/docs/superpowers/specs/2026-10-15-updates-design.md index e6a3458..54ebfbf 100644 --- a/docs/superpowers/specs/2026-10-15-updates-design.md +++ b/docs/superpowers/specs/2026-10-15-updates-design.md @@ -42,10 +42,12 @@ matches, so a row shows the next step and nothing after it. 1. **Slackware**, three groups, all from the mirror: - *Upgrade*: an installed package whose name is on the mirror with a different version or build. - - *New*: the ChangeLog's newest line for the package says `Added.`, it is - on the mirror, and it is not installed. These are slackpkg's - `install-new` semantics. - - *Removed*: the ChangeLog's newest line for the package says `Removed.`, + - *New*: of the ChangeLog's `Added.` and `Removed.` lines for the package, + the newest says `Added.`; it is on the mirror and not installed. These + are slackpkg's `install-new` semantics. Other lines (`Upgraded.`, + `Rebuilt.`) are ignored, or a package added and later upgraded would + never count as new. + - *Removed*: of the same lines, the newest says `Removed.`, it is installed, and it is not on the mirror. The row carries the date of that ChangeLog entry. @@ -54,11 +56,13 @@ matches, so a row shows the next step and nothing after it. skipped in all three, as slackpkg skips them; so are blacklisted names. 2. **Upgrade here**: B newer than I. The package is built and sitting in the repo. -3. **Awaiting build**: R is the user's (not `SBo`), R equals U, and B is older - than U. The SlackBuild is bumped and only needs building. +3. **Awaiting build**: R is at or past U, B is older than U, and the package + is installed. The SlackBuild, the user's or SBo's, is current and only + needs building. 4. **Upstream newer**: U newer than both R and B. The SlackBuild or its hint - needs bumping, then a build. `SBo` rows land here until the build appears - in B. + needs bumping, then a build. An `SBo` recipe that lags upstream lands + here: the bump is a hint file on the build VM. Shown when the package is + installed, or when the recipe is the user's (repo work either way). 5. **App updates**: I comes from AppImage or flatpak and is older than U. "Newer" and "older" are version order, never equality: an installed 2.1.278 @@ -83,10 +87,11 @@ Rows are `{name, repo, from, to}`; Slackware rows are `{name, from, to}`, **Version order** is a small `vercmp`: split on non-alphanumerics, compare numeric chunks as numbers and alphabetic chunks as strings, numbers before -letters. It replaces nvtable's normalised equality, including its rule that -an installed version extending upstream at a component boundary (a kernel -suffix, a git hash) counts as equal; that rule is kept as a prefix check -before ordering. +letters; when one runs out, the longer is newer unless its next chunk is +alphabetic (a pre-release). It replaces nvtable's normalised equality. Its +rule that an installed version extending upstream at a component boundary (a +kernel suffix, a git hash) counts as equal needs no special case: the longer +version orders as newer, which is never behind. **NFS reads** (`PACKAGES.TXT` of the repo and of the mirror, the mirror's `ChangeLog.txt`) go through `subprocess.run(["cat", path], timeout=5)`. The |
