[M2] add curated linkdb + semver matcher

This commit is contained in:
2026-05-08 11:42:08 +00:00
parent 361b936648
commit d5715428ea
12 changed files with 26378 additions and 0 deletions

View File

@@ -43,3 +43,17 @@ All notable changes to cargoxx will be documented in this file.
Codegen of `flake.nix` / `CMakeLists.txt` is intentionally deferred to M3.
CLI11 v2.6.2 vendored at `third_party/CLI11.hpp`; entry point is now
`cargoxx::cli::run(argc, argv)`. `tests/cmd_new.cpp` covers 9 cases.
- `util::satisfies(version, range)` — minimal semver range matcher
supporting `*`, `==/>=/<=/>/<` operators, and comma-separated AND
clauses. Versions are zero-padded to three components.
`tests/semver_satisfies.cpp` covers 7 cases.
- `cargoxx.linkdb`: `Recipe`, `Database::open()`, `Database::resolve(...)`
for curated lookups. The curated database ships at `data/linkdb.json`
with all 25 packages from `SPEC.md` §11. Component-substitution helpers
expand `{{components}}` (space-joined) in `find_package` and fan out
`{{component}}` per-target. Path is injected via the
`CARGOXX_LINKDB_DEFAULT_PATH` compile definition. nlohmann/json 3.12.0
vendored at `third_party/json.hpp`. SQLite overlay and `add_manual`
are deferred to the M2 follow-up commit.
`tests/linkdb_lookup.cpp` covers 13 cases including a smoke test that
resolves all 25 curated packages.