-
0.2 / Full and semi-functioning indev build.
Pre-ReleaseCI / build-and-test (push) Successful in 38sreleased this
2026-08-04 14:46:31 -04:00 | 8 commits to main since this releasekappa 0.2 (indev) — release notes
What changed from 0.1
0.1 could parse
.kapfiles, validate configs, and generate service files for
five init systems — but it couldn't actually build anything. The build backend
was a compile-time stub that returned"build backend not implemented". 0.2
makes kappa a real package manager.Build backend. Packages now build end-to-end. The build pipeline executes
prepare, build, check, and install phases through/bin/sh, with full variable
interpolation (${prefix},${jobs},${destdir},${enabledinit},
${cfg.*},${feature.*}), config file generation toDESTDIR, and
environment variable handling. The scheduler distributes work across-w
workers with depth-based priority grouping. Verified by building GNU Make
4.4.1 from source.Env operators. Three ways to set build environment variables:
=— hard set (overwrite)+=— append with space separator?=— soft set (only if variable is not already defined)
System-level env propagates to all packages. Subsequent entries can build on
earlier ones —CFLAGS = "-O2"; CFLAGS += "-pipe"→"-O2 -pipe".Indexed repos. Flat
remotes = [...]has been joined by structured
repos { }blocks with named repositories, channels (stable,testing),
mirror URLs, and priority. The newindex "name" { }file format lists every
package and version in a repo.kappa index <dir>scans a directory of.kap
files and generates the index. Clients fetch the index once, cache it, and
re-fetch only when the remote changes via HTTP conditional requests. Mirrors
are tried in order as fallbacks. Backward compatible —remotes = [...]still
works.Package operations.
kappa add <pkg> [version]writes to the system
config'spackages {}block.kappa remove <pkg>removes it. No config file
editing required. Both are idempotent. The--rootflag works everywhere.Conflict detection. Package conflicts were caught internally by the
resolver but silently ignored byresolveandrebuild. Both now abort with a
clear error before any builds start.Testing and CI. 138 integration tests across three suites cover CLI error
handling, all DSL keywords, config parsing, users/groups, assertions, imports,
doctor diagnostics, repos/remotes, index generation, add/remove, install DB,
conflicts, deptree ordering, build execution, env operators, init systems,
bootloaders, variable interpolation,--rootoverride, and more. CI runs on an
Arch Linux container —clang-18,cmake 3.28, three suites, zero warnings.Documentation. STYLEGUIDE.md covers every codebase convention. Updated
README with thekappa addworkflow. CONTRIBUTING.md refreshed with current
test counts and issue list.What might come in 0.3
-
Transitive dependency resolution. Currently the config must list every
package explicitly. Auto-including transitive deps would let you declare only
top-level packages. -
kappa search. Query the cached index without touching the network.
Basic name match, semver filtering, channel pinning. -
--features/--configflags forkappa add. Enable features or set
config values ataddtime instead of editing the config afterward. -
Delta rebuilds. Rebuild only packages whose dependencies actually
changed, not just the ones with version bumps. -
Binary package support. Pre-built caches for common configurations so
rebuilds don't always start from source. -
Signed indexes and recipes.
pubkeyfield in repo config. Verify index
signatures before trusting content. Enable community mirrors without trusting
the mirror operator. -
Shell completions. Bash, zsh, fish tab-completion for subcommands and
package names. -
kappa upgrade. Compare installed versions against the index, rebuild
everything with newer versions available. -
Overlay activation. Atomic filesystem snapshots like Nix profiles — switch
between generations without a reboot. -
Remote build farm. Distribute build work across machines with
distcc-style job forwarding, controlled by repo config.
Downloads