diff options
| author | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-17 15:45:27 +0200 |
|---|---|---|
| committer | Lukasz Kasprzak <lukas@labunix.xyz> | 2026-08-17 15:45:27 +0200 |
| commit | c06ebb7344b7f267c325b832632f7cd4e81939e7 (patch) | |
| tree | c246bda5176d2add869e74be3a2e632e075ea97a /tools/bootstrap_sanctoral.ml | |
| parent | cba04b3033f23b5c2515c9e648f2b83344716224 (diff) | |
| download | colitur-c06ebb7344b7f267c325b832632f7cd4e81939e7.tar.gz colitur-c06ebb7344b7f267c325b832632f7cd4e81939e7.zip | |
feat(cli): install the runtime data, and resolve it in three ways
`dune install` produced a colitur that could not run: the binary locates
its data relative to its own path, nothing installed the four .sexp files
anywhere, and an installed colitur exited 2 unable to read sanctoral.sexp.
`dune build @install` produced an empty tree.
data/dune installs the four RUNTIME files into <prefix>/share/colitur/ef.
Deliberately not the two allow-lists: those describe where colitur and a
comparison oracle disagree, are read only by the differential and oracle
tests, and are meaningless to a running colitur -- installing them would
ship an assertion about lectio's and missalemeum's behaviour as though it
were calendar data. No glob, on purpose: a glob would silently start
shipping them again the moment one was renamed.
Resolution now probes rather than computing one path and hoping. An
installed prefix is tried first, the build tree second, and a candidate
counts only if sanctoral.sexp is actually readable inside it -- so a
failed or half-removed install falls through to a working tree instead
of shadowing it and failing later with a per-file error.
COLITUR_DATA_DIR overrides both and NEVER falls through. This was the one
real design question and the first version got it wrong: it treated the
override as just another candidate, and a deliberately bogus value
produced a full, plausible, entirely un-flagged year computed off the
build tree. Someone who names a directory has stated an intent, and
silently calendaring off a different one is the silent substitution this
project refuses everywhere else. It is now exit 2 naming the directory.
Verified end to end, not inferred: installed to a scratch prefix, then
ran the binary from an unrelated cwd with no build tree near it, and
confirmed 2038-03-06 still resolves Perpetua and Felicitas through the
Common route. All four paths exercised -- build tree, valid override,
bogus override, and an empty share/ falling through.
Environment reads stay confined to bin/. The kernel's contract forbids
them and nothing below the CLI learns where the data came from; the
loaders take a path.
Diffstat (limited to 'tools/bootstrap_sanctoral.ml')
0 files changed, 0 insertions, 0 deletions
