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'.
This commit is contained in:
Avery Pennarun 2018-12-03 21:39:15 -05:00
commit f6fe00db5c
140 changed files with 256 additions and 99 deletions

View file

@ -1,67 +0,0 @@
# License
My version of redo was written without ever seeing redo code by Bernstein or
Grosskurth, so I own the entire copyright. It's distributed under the terms
of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0),
which you can find in the file called
[LICENSE](https://github.com/apenwarr/redo/tree/master/LICENSE). (Previous
versions of redo were distributed under the GNU LGPL, but this [changed in
2018](https://groups.google.com/forum/#!topic/redo-list/wLMZMxtn4wo).)
minimal/do is in the public domain so that it's as easy as possible
to include inside your own projects, to help end users who don't
have a copy of redo.
# How can I help?
Nowadays, redo is good enough for real production use, and some people
are using it for real work. That said, it has
not reached version 1.0 and there are surely still bugs.
If you run into a problem, it's really helpful if you report it to the
mailing list below (with or without subscribing first). We really want to
know if redo is acting weird for you. Even if the problem turns out to be
operator error, we can use that information to try to improve this
documentation.
Small feature additions are also welcome, but you might want to ask on the
mailing list before you start working on it. The code is still evolving and
might not be the same by the time you submit your pull request.
The best things you can do for redo are:
- Convert your projects to using it. Without users, no project is
successful.
- Build new infrastructure around redo, especially things to make it easier
for people to get started. For example, an automake-like tool that filled
in default redo build rules for common program types would probably be
very popular.
- Convince your favourite OS distro to build and include (up to date!) redo
packages.
- Help proofreading this documentation, and send patches or pull requests
with improvements.
- Join the mailing list (below) to discuss design changes or bugs.
- Tell your friends!
# Mailing list
You should join the `redo-list@googlegroups.com` mailing list.
You can find the mailing list archives here:
<http://groups.google.com/group/redo-list>
It might not look like it, but you can subscribe without having a
Google Account. Just send a message to
`redo-list+subscribe@googlegroups.com` (note the plus sign).
It's okay to send a message directly to the mailing list
without subscribing first. If you reply to someone who writes to the
list, please leave them in the cc: list, since if they
haven't subscribed, they won't get your reply otherwise.