Repository navigation
v0.3.0
Everything here was found by APPLYING the library to a real repository for
the first time, not by reading it. This is the release that justifies the
note at the top of this file about 1.0.0.
Added
mkPackageFlakegainsexecutable, which builds a delivered CLI from the
preset's OWN resolvedlispDerivationarguments.mkExecutable'sargs
was documented as "the exact attrset you'd pass to lispDerivation", but the
preset had already computed that attrset and exposed only the result — so a
delivered binary re-spelledpname,lispSystem,meta,versionand
srcin an escape hatch. Two sources of truth for the package's identity,
inside the one function whose purpose is removing exactly that. The first
package to deliver a CLI and carrylispDependencieswould have shipped a
binary silently missing them. The resolved attrset is also on the context
for anything the argument does not cover; re-spellingargswholesale is
rejected by name.mkExecutablegainsinstallSource, plus a written contract for what
$outcontains and what a delivered image may assume about its
surroundings. A Lisp image that resolves its ASDF source root from
*runtime-pathname*found nothing, because this function published
$out/binand nothing else; the binary died on its first re-load of one of
its own systems. Both sides were individually correct and disagreed
silently, so the missing contract was the actual defect. The dependency
closure is installed alongside the system's own tree — sources that are
findable while their dependencies' are not fail at the same place, one
asdf:load-systemlater.
Changed
- Breaking:
mkPackageFlake'srootis required.root ? selfwas the
obvious default and never worked: a flake'sselfis an attrset carrying
anoutPath, andlib.filesetrejects it, so the failure surfaced from
insidemkLispSourcenaming neitherselfnor the argument responsible.
It survived the suite because examples are handedpkgsandcldirectly
and theirselfwas already a path literal — the test suite could not
reach the bug because it never exercises a real flakeself. - Delivered executables carry their version in the store path again.