previously, stderr was garbled, which made it really annoying to deal
with build errors.
it turns out that the library wrapper around calling a process is not
just counterproductive, but also completely unnecessary.
the build now takes longer because it's not incremental any more.
but the problem with `sphinx-build` in a shell environment is that it
doesn't keep track of an entire class of files, that would have to be
considered manually. this is too much manual overhead that doesn't scale
at all. with the new setup the live preview will do exactly what the
final deployment does.
[1]: https://github.com/executablebooks/sphinx-autobuild#relevant-sphinx-bugs
Co-authored-by: Alex Groleau source@proof.construction
this is the most cursed setup you will see any time soon.
we're dumping the Nix manual unchanged into the build tree *after*
building. the reason is that we'd want to link to it from our table of
contents, but because Sphinx does not allow adding arbitrary files to
the build output in arbitrary locations (only `_static` works). but we
want to place the manual behind a particular URL, and the alternative of
maintaining URL rewrites (e.g. in nginx) is not accessible here because the
infrastructure is managed somewhere else.
now that the files won't appear in their desired locations at Sphinx
build time, we can't use relative links to reference them, therefore we
have to resort to pointing to the web URL the manual will appear at.
this is terrible and I'm sorry. please fix this if you have a better
idea. once we use URLs though, we have to avoid linkchecking, since
those files may not be there before deploying them.
figuring all of this out took way longer than anyone would wish.
Co-authored-by: Alejandro Sanchez Medina <alejandrosanchzmedina@gmail.com>
use niv for dependency management.
this follows our own tutorials on writing packages and development
shells, and we generally find it is easier to read and work with.
Co-authored-by: Alejandro Sanchez Medina <alejandrosanchzmedina@gmail.com>