Skip to content

v0.46.0

Latest

Choose a tag to compare

@jrray jrray released this 03 Nov 07:10
· 5 commits to main since this release

What's Changed

Headlines

  • Repository indexes — spk can now generate and read solver indexes for repositories, which speed up solves on large repos. Generate and update them with the new spk repo index command, and turn them on per repository in the config (use_index, off by default) or for a single command with --index-use config-file|disabled|enabled. Built up over the "Indexes" series by @dcookspi in #1336, #1337, #1338, #1339, #1340, #1344, #1354, #1355, #1363, #1364, #1368, #1374, with follow-ups in #1381, #1383, #1385, #1388, #1389, #1392, #1397, #1398, #1403
  • Resolvo solver maturity — many correctness fixes bringing the resolvo solver in line with the step solver: prereleases (#1230), embedded packages in spk build (#1247), options vs. var requirements (#1258), global vars in solutions (#1275), build-env option propagation (#1365), build-component constraints (#1369), solver options in solutions (#1399), and search space stats (#1267). By @jrray and @dcookspi
  • Repo walkers, spk stats, and spk ls/spk du improvements — a new repository walker underlies spk ls and spk du, and powers the new spk stats command for summarizing versions and builds of a package by @dcookspi in #1225, #1226, #1228, #1229, #1236, #1240, #1387
  • Required vars and var inheritance controls — required vars can be satisfied by command-line options (#1357, #1359), and downstream packages can opt out of a strongly-inherited var with suppress (#1349) by @jrray
  • Documentation restructure of spkenv.dev by @rydrman in #1272, plus new pages on spfs startup files (#1269), required vars (#1311), and running spfs in containers (#1384)

Key Highlights

  • Add --wrap-origin <path> to spk and spfs commands to layer an extra repo in front of origin by @dcookspi in #1205
  • spfs: opt-in direct mount syscalls for overlayfs ([filesystem] use_mount_syscalls = true) by @davvid in #1181
  • spfs: add --from/--to for spfs push and spfs pull by @jrray in #1351
  • Add support for the fallback repository scheme by @jrray in #1263
  • Namespaced options are now also exposed as $SPK_PKG_<pkg>_OPT_<opt>, a valid environment variable name; the old $SPK_OPT_<pkg>.<opt> form is still set for compatibility by @jrray in #1287
  • spk info -f/--format works inside an environment by @dcookspi in #1241
  • Tests can access their specs from a build spec by @dcookspi in #1286
  • Standalone v1/platform recipes can be built directly with spk build by @jrray in #1370
  • Solver settings from the config file (e.g. solver_to_run, solve_timeout) are now honored by commands like spk bake, with CLI > env > config > default precedence by @jrray in #1410
  • Pin overlayfs index/metacopy mount options instead of inheriting kernel defaults, fixing "Stale file handle" remount failures on some kernels by @jrray in #1382

Upgrade Notes

  • RPMs now require kmod — spfs uses /sbin/modinfo to detect overlayfs features; without it, spfs falls back to conservative mount options and warns on every run. Container users should also bind-mount /lib/modules read-only; see the new containers doc (#1384)
  • Repository indexes are off by default (use_index = false) (#1383)
  • The unused solver.use_indexes and solver.indexes config keys were removed; existing config files that contain them still load (#1409)
  • Removed the legacy-spk-version-tags (#1274) and migration-to-components (#1343) cargo features
  • Builds now use Rust 1.93.0, pinned with rust-toolchain.toml (#1245, #1250, #1322)
  • Library users: significant spk-schema API changes — spk-schema-ident merged into spk-schema-foundation (#1244), Spec split into RecipeSpec/PackageSpec (#1295), BuildSpec split into BuildSpec/RecipeBuildSpec (#1298), and Request split into PinnableRequest/PinnedRequest (#1297)

Bug Fixes

  • Fix ~1.2.3 matching 1.3.0-pre.1 by @jrray in #1234
  • Allow embedded packages' prerelease parents by @jrray in #1417
  • Restore Ctrl+C interruption after solving by @jrray in #1414
  • Fix step solver backtracking on request conflicts by @jrray in #1367
  • Scope namespaced var requirements to their package by @jrray in #1361
  • Fix build-component requirement handling for resolved and embedded packages by @jrray in #1373
  • Embedded packages now pin build options; packages with unpinned var opts are fixed up on load by @jrray in #1302, #1301
  • Fix solver building from a source package with recursive dependencies by @dcookspi in #1173
  • Fix 'package not found' from spk info in build scripts by @jrray in #1394
  • Fix intermittent IllegalGeneration error in spk publish by @jrray in #1391
  • spfs push defaults to origin for the remote repo again by @dcookspi in #1260
  • Fix spfs check crashing if an annotation blob is missing, and annotation blob syncing by @jrray and @dcookspi in #1264, #1265
  • Better handling of missing payloads in spfs-fuse by @jrray in #1266
  • Fix tag stream ordering when entries have different org values by @jrray in #1326
  • spk build no longer fails when the disk usage calculation for completed builds errors by @dcookspi in #1280
  • Fix underflow in spk du size display by @dcookspi in #1256
  • Rerun no longer modifies editability by @rydrman in #1243
  • Built packages may contain a default build script; embedded stub build tags round-trip; recipes with embedded recipes with build ids can be read; vars with a missing/empty value are ignored on parse by @jrray in #1313, #1314, #1316, #1317, #1318
  • Fix compile errors and warnings on Windows by @jrray in #1281
  • Fix compiling with the sentry feature by @dcookspi in #1222

Other Changes

Full Changelog: v0.44.0...v0.46.0