We can now rely on weblate to regularly update the individual language
files from the template, so "make translate" only needs to update the
template file circuitpython.pot.
This is advantageous because updating the other files in locale/ was
a frequent source of merge conflicts; resolving the conflict incorrectly
was something that could easily occur (and did).
On a Debian 10 system, the number of arguments to xargs was such that
it would not fit in a single invocation (xargs --show-limits prints
"bytes: Size of command buffer we are actually using: 131072").
In this situation, the output from the second invocation of xgettext
would replace the output of the first one, so messages that appeared only
in files early in the list would be lost. Strings in "extmod" were most
frequently the victim, including "incorrect padding" from modubinascii.c.
Unfortunately, when the github environment was similar enough to the
environment where "make translate" was invoked, the problem was not
found by "check-translate", because the same (incorrect, truncated)
potfile would be generated on both systems. Apparently Ubuntu and Debian
were different enough that the problem could become visible.
xgettext has a mode where it reads files from stdin ('-f-'), but this does
not have a zero-delimited variant documented. Still, we will assume
that files with adversarial names are not committed to circuitpython
or created by the build process, and print newline-delimited filenames
from `find` to be processed by `xgettext -f-`.
- moving Makefile to parent folder. This resolves some of the weird path/build issues
- remove trace references to cpydiff and original file (no longer used anywhere)
- converting SOURCEDIR to a changeable variable, passed through all sphinx-build calls
- adding path to conf.py, in case it moves again
- making `-v` default with VERBOSE
- making `-E` default with FORCE
- creating BASEOPTS to store all the dirs, paths, and settings, passing them to sphinx-build in one long chain, instead of individually
- updating README to use the make command as default. Also added text explaining some of the customization you can add into a make command