Directory reorg: move code into redo/, generate binaries in bin/.
It's time to start preparing for a version of redo that doesn't work
unless we build it first (because it will rely on C modules, and
eventually be rewritten in C altogether).
To get rolling, remove the old-style symlinks to the main programs, and
rename those programs from redo-*.py to redo/cmd_*.py. We'll also move
all library functions into the redo/ dir, which is a more python-style
naming convention.
Previously, install.do was generating wrappers for installing in
/usr/bin, which extend sys.path and then import+run the right file.
This made "installed" redo work quite differently from running redo
inside its source tree. Instead, let's always generate the wrappers in
bin/, and not make anything executable except those wrappers.
Since we're generating wrappers anyway, let's actually auto-detect the
right version of python for the running system; distros can't seem to
agree on what to call their python2 binaries (sigh). We'll fill in the
right #! shebang lines. Since we're doing that, we can stop using
/usr/bin/env, which will a) make things slightly faster, and b) let us
use "python -S", which tells python not to load a bunch of extra crap
we're not using, thus improving startup times.
Annoyingly, we now have to build redo using minimal/do, then run the
tests using bin/redo. To make this less annoying, we add a toplevel
./do script that knows the right steps, and a Makefile (whee!) for
people who are used to typing 'make' and 'make test' and 'make clean'.
2018-12-03 21:39:15 -05:00
|
|
|
redo-ifchange flush-cache
|
|
|
|
|
|
2012-02-08 23:59:46 -05:00
|
|
|
# tests that "set -e" works (.do scripts always run with -e set by default)
|
|
|
|
|
rm -f 000-set-minus-e/log
|
|
|
|
|
redo 000-set-minus-e/all
|
|
|
|
|
if [ "$(cat 000-set-minus-e/log)" != "ok" ]; then
|
|
|
|
|
echo "FATAL! .do file not run with 'set -e' in effect!" >&2
|
|
|
|
|
exit 5
|
|
|
|
|
fi
|
|
|
|
|
|
2018-10-12 04:39:09 -04:00
|
|
|
# builds 1xx*/all to test for basic/dangerous functionality.
|
|
|
|
|
# We don't want to run more advanced tests if the basics don't work.
|
2012-02-08 00:33:00 -05:00
|
|
|
/bin/ls 1[0-9][0-9]*/all.do |
|
|
|
|
|
sed 's/\.do$//' |
|
|
|
|
|
xargs redo
|
|
|
|
|
110-compile/hello >&2
|
|
|
|
|
|
2018-10-12 04:39:09 -04:00
|
|
|
# builds most of the rest in parallel
|
2012-02-08 00:33:00 -05:00
|
|
|
/bin/ls [2-9][0-9][0-9]*/all.do |
|
|
|
|
|
sed 's/\.do$//' |
|
2018-10-12 04:17:19 -04:00
|
|
|
xargs redo
|
2018-10-12 04:39:09 -04:00
|
|
|
|
|
|
|
|
# builds the tests that require non-parallel execution.
|
|
|
|
|
# If tests are written carefully, this should only be things that
|
|
|
|
|
# are checking for unnecessary extra rebuilds of some targets, which
|
|
|
|
|
# might happen after flush-cache.
|
|
|
|
|
# FIXME: a better solution might be to make flush-cache less destructive!
|
|
|
|
|
/bin/ls [s][0-9][0-9]*/all.do |
|
|
|
|
|
sed 's/\.do$//' | {
|
|
|
|
|
while read d; do
|
|
|
|
|
redo "$d"
|
|
|
|
|
done
|
|
|
|
|
}
|