aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers/specs/2026-10-20-sb-builder-bundled-deps-design.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/superpowers/specs/2026-10-20-sb-builder-bundled-deps-design.md')
-rw-r--r--docs/superpowers/specs/2026-10-20-sb-builder-bundled-deps-design.md115
1 files changed, 0 insertions, 115 deletions
diff --git a/docs/superpowers/specs/2026-10-20-sb-builder-bundled-deps-design.md b/docs/superpowers/specs/2026-10-20-sb-builder-bundled-deps-design.md
deleted file mode 100644
index de6ad1d..0000000
--- a/docs/superpowers/specs/2026-10-20-sb-builder-bundled-deps-design.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# sb-builder: bundled deps (phase 4b, part 2)
-
-Date: 2026-10-20
-Status: approved
-Builds on: `2026-10-20-sb-builder-phase4-design.md`, `2026-10-20-sb-builder-phantom-deps-design.md`
-
-## Goal
-
-`hint-update` handles packages with several downloads, so mkhint's bundled-dep
-code (url mode) is no longer needed and part 3 can remove mkhint from the VM.
-
-## Facts
-
-- 64 packages are tracked in `nvchecker.toml`; 4 have more than one download
- (686 in the whole tree):
- - neovim, 13 extra: upstream lists them in `cmake.deps/deps.txt`
- (`NAME_URL <url>` lines), at a path fixed per tag.
- - openvino, 9 extra: git submodules pinned by commit. Lives in the personal
- overlay, its `.info` is edited there; not hint-managed.
- - feroxbuster, 1 extra: a self-hosted vendor tarball carrying the main
- version (`feroxbuster-<ver>-vendor.tar.gz`).
- - exploitdb, 1 extra: `exploitdb-bin-sploits`, its own version, unchanged
- since 2022.
-- `apply_version` swaps the version through the whole hint text but
- downloads only the first URL of each `DOWNLOAD*` for its md5; other URLs
- keep their old md5. A feroxbuster bump today writes the new vendor URL
- with the old md5.
-- mkhint's url mode (`/usr/local/bin/mkhint`, `reconcile_bundle_deps_url` and
- helpers, about 200 lines of bash) fetches the manifest at the new version,
- takes the `_URL` lines, matches each extra hint URL to one, compares
- versions and swaps the changed ones, downloading them for the md5.
-
-## Scope
-
-In: md5 for every changed URL (all packages), manifest reconcile (packages
-in `[manifests]`).
-
-Out: git submodule mode (openvino, not hint-managed), separately versioned
-extras with no manifest (exploitdb), a GUI for the manifest map, adding deps
-the manifest has and the hint lacks (logged only), part 3 (removing mkhint,
-nvchecker and their config from the VM).
-
-## Helper (`sbb-remote` 0.8.0)
-
-### Config
-
-`[manifests]` table, package -> manifest URL template, `{VERSION}` replaced
-by the new version. The default holds neovim's, so the VM needs no new line.
-Replaces `manifest_packages`, and with it the refusal of manifest packages by
-`hint-update` and `hint-new`. `remote/config.example.toml` shows the default:
-
- [manifests]
- neovim = "https://raw.githubusercontent.com/neovim/neovim/v{VERSION}/cmake.deps/deps.txt"
-
-`manifest_packages` becomes an unknown key: the deploy drops its line from
-the VM's `/etc/sb-builder/config.toml`, or the helper refuses to start.
-
-### `apply_version`, every package
-
-After the version swap, for each `DOWNLOAD*`/`MD5SUM*` pair, download every
-URL that differs from the one at the same position before the swap, plus the
-first URL as today, and set its md5. Unchanged continuation URLs keep their
-md5. `SKIP_URLS` (`UNSUPPORTED`, `UNTESTED`) and `--no-dl` behave as today.
-
-### `apply_version`, packages in `[manifests]`
-
-Runs after the version swap and before the downloads, only when a new
-version is given and `--no-dl` is not:
-
-1. Fetch the manifest at the new version.
-2. Extract every `https?://` URL from it (regex, any file format).
-3. For each extra URL (position 1 and later) of `DOWNLOAD`, find its match:
- first by GitHub `owner/repo`, lowercased, skipping the shared blob repo
- `neovim/deps`; then by stem, the basename without archive extension and
- without a trailing `-<version>` (`[vV]?` digit, or 7+ hex).
-4. Version of a URL: basename without archive extension; on GitHub, strip a
- leading `<repo>-` or `<repo>_` (case-insensitive) and the rest is the
- version; elsewhere, the trailing `-<version>` or `-<sha>`. Then drop a
- leading `v` and turn `-` into `_`. The first URL's manifest counterpart is
- never reconciled.
-5. A match whose version differs replaces the hint URL; the download step
- above then gives it its md5.
-
-Log lines: `<pkg>: <dep> <old> -> <new>` per changed dep, `<pkg>: <dep> no
-manifest match, left as is`, `<pkg>: manifest has N deps not in the hint`.
-
-### Errors
-
-A manifest fetch failure, or a download failure, fails that package: its
-hint and `.bak` stay untouched, `<pkg>: failed: <why>` is logged, the job
-moves on, as for the main download today. An empty manifest (no URLs) is a
-failure too: a moved file must not pass as "all current".
-
-## GUI
-
-None. The hint diff dialog already shows the changed `DOWNLOAD`/`MD5SUM`
-lines.
-
-## Testing
-
-`test_remote.py`, no network (the existing `Served` localhost http server):
-
-- URL version and match against neovim's real URL shapes: github archive
- `v<ver>/<name>-<ver>`, LuaJIT by commit, luv release asset, lpeg off
- GitHub, mixed-case owner (JuliaStrings).
-- manifest reconcile: one dep changed, one unchanged, one unmatched; the
- changed one gets the new URL and md5, the rest keep theirs.
-- a continuation URL carrying the main version gets a new md5 without a
- manifest (feroxbuster).
-- manifest fetch failure leaves the hint untouched.
-
-## Version
-
-0.8.0 in `remote/sbb-remote` and `sb_builder/__init__.py`; deploy with
-`./install.sh --remote` after asking.