| Commit message (Collapse) | Author | Files | Lines |
|
mkdeps.sh asked the same questions over and over: "pages" is built
on four of the other selectors, the tagged list mkwb reads asks for
all seven again, and "collections" alone was computed nine times, a
find and a grep and a sort apiece. It spawned 372 processes to
print 2450 lines.
Every answer is now computed once, up front, into a file named
after it, and read back from there. The three hand-rolled caches
go with it: they were the same idea, done three times, and the
loop that fills them says the dependency order out loud. Two
smaller things fell out on the way: collections ran dirname once
per collection where sed does it in one, and articles ran one find
per collection where find takes them all at once.
The order the loop fills them in is not decoration. A pipeline's
stages run side by side, and only_masters and with_translations
are two stages of one selector that both read what po4a writes ---
so an answer computed where it is first needed can be read while
it is still half-written, which is a race that shows up as an
empty list and a deps.mk missing half the site. Filled in order,
up front, nothing is ever read while it is being written.
372 processes to 109, 0.47s to 0.24s, byte-identical deps.mk over
a dozen runs. The floor now is exec(2): the tools this reaches
for cost 1.1 to 2.5ms each to start, and a hundred of them is the
whole of the remaining runtime.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxLpaNQThKfMG3ecCJptP9
|
|
|
|
ab781e1 moved the manual pages over and left this behind: the
i18n target was changed to maritacag(1), but the rule that actually
writes the site's translations -- src/i18n.sentinel, emitted by
mkdeps.sh -- still shelled out to po4a. So the build kept needing
po4a even though nothing else in the fleet did, and the package in
pkgs still carried it as an input.
--no-update rather than the bare invocation po4a had. Everywhere
else in the fleet a build writes translations and never catalogues;
"make i18n" is what brings those up to the masters. The old rule
did both, which is why the i18n target beside it was a duplicate of
it.
Byte for byte the same: over a clean checkout, po4a, maritacag and
maritacag --no-update each write the identical src/ tree, and none
of the three rewrites a catalogue.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BMowJCogxLWcMdVYYhbLpH
|
|
Every other file of its kind here is a sentinel, and .sentinel is what
the suffix rules and the .gitignore already spell. One outlier called
.stamp meant two names for the one idea.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KxLpaNQThKfMG3ecCJptP9
|
|
|
|
Since I can't get deterministic outputs out of mktorrent(1), change torrents
from $(captured-assets) to $(dynamic-contents).
|
|
|
|
|
|
|
|
|
|
|
|
parcial
|
|
|
|
|
|
|
|
|
|
Its contents aren't correct yet, they're still whatever indexbody spits.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"sortdata.txt" files
|
|
bigger
|
|
|
|
|
|
|