My all-singing, all-dancing new build system. Tentatively called
`bob', at Gareth's suggestion, although I'm prepared to rename it in
a hurry if that turns out to be a bad idea.


git-svn-id: svn://svn.tartarus.org/sgt@7203 cda61777-01e9-0310-a592-d414129be87e
Fix embarrassing duplication of identifiers.


git-svn-id: svn://svn.tartarus.org/sgt@7209 cda61777-01e9-0310-a592-d414129be87e
Timestamp the end of the build as well as the start. `If in doubt,
timestamp it' is my motto.


git-svn-id: svn://svn.tartarus.org/sgt@7210 cda61777-01e9-0310-a592-d414129be87e
If the user specifies a date-based checkout, set a `date' variable
which is accessible to the build script. This way I can build a
PuTTY snapshot just by writing something like `bob putty
-d2007-02-06', without having to specifically set a SNAPSHOT
variable.


git-svn-id: svn://svn.tartarus.org/sgt@7222 cda61777-01e9-0310-a592-d414129be87e
New build script command: `module', which specifies the name under
which the build script expects to find its own module checked out.
(bob's previous heuristic strategy turns out not to be reliable, so
we'll let the build script decide.)


git-svn-id: svn://svn.tartarus.org/sgt@7223 cda61777-01e9-0310-a592-d414129be87e
Introduce a string function `numeric', which returns `yes' iff its
argument is composed entirely of digits. Most useful, I suspect, for
applying to $(revision).

In the process, centralise a piece of repeatedly-used functionality
into misc.checkstr().


git-svn-id: svn://svn.tartarus.org/sgt@7230 cda61777-01e9-0310-a592-d414129be87e
Add more logging for build script debugging, and fix two separate
bugs in $(!numeric). PuTTY's detection of nnnnM revisions might
actually work now.


git-svn-id: svn://svn.tartarus.org/sgt@7235 cda61777-01e9-0310-a592-d414129be87e
Made a start on bob's documentation. The manual is only half written
so far.


git-svn-id: svn://svn.tartarus.org/sgt@7239 cda61777-01e9-0310-a592-d414129be87e
Finish up the manual, write a brief man page, and add a LICENCE
file.

As part of this checkin I've also made a few changes to the script
syntax on the grounds that the original version was just too
embarrassing to own up to in the manual:
 - string functions no longer double-lex their argument
 - `deliver' now takes two words instead of a word and a non-word
   string, meaning that all filenames that appear in the script file
   (other than those inside shell commands) are now consistently
   syntactically words
 - `module' is now mandatory (since my argument in the manual about
   why you should always use it convinced even me).


git-svn-id: svn://svn.tartarus.org/sgt@7247 cda61777-01e9-0310-a592-d414129be87e
Actually terminate with an error code, in case of error!


git-svn-id: svn://svn.tartarus.org/sgt@7303 cda61777-01e9-0310-a592-d414129be87e
Infrastructure support to allow reserved variables to have their
values dynamically computed on fetch rather than set statically in
advance.


git-svn-id: svn://svn.tartarus.org/sgt@7380 cda61777-01e9-0310-a592-d414129be87e
Time to finally check in the change I've been quietly testing for a
few weeks: $(revision) has changed semantics, and now gives the last
revision number in which there was an actual change in any of the
checked-out stuff. (Well, in any of the subset of the checked-out
stuff that was checked out with the same revision or date.) If you
want the old behaviour, use $(crevision).


git-svn-id: svn://svn.tartarus.org/sgt@7401 cda61777-01e9-0310-a592-d414129be87e
Contrary to the documentation, I had one dependency on Python 2.3.
Removed it.


git-svn-id: svn://svn.tartarus.org/sgt@7439 cda61777-01e9-0310-a592-d414129be87e
For greater portability into weird delegation environments, we now
send an explicit quit command to our delegate server rather than
relying on it detecting EOF correctly.


git-svn-id: svn://svn.tartarus.org/sgt@8014 cda61777-01e9-0310-a592-d414129be87e
Add an option to remove a previous build.out.


git-svn-id: svn://svn.tartarus.org/sgt@8262 cda61777-01e9-0310-a592-d414129be87e
And document the new -F option.


git-svn-id: svn://svn.tartarus.org/sgt@8263 cda61777-01e9-0310-a592-d414129be87e
Stop using physical tabs in Python. (I was goaded into doing this by
my editor, which has defaulted to showing them as explicit ^I for a
while now, but it seems like a generally prudent idea in any case.)


git-svn-id: svn://svn.tartarus.org/sgt@8471 cda61777-01e9-0310-a592-d414129be87e
I'm now occasionally using git-svn as an alternative svn client, so
let's have support for that in bob.


git-svn-id: svn://svn.tartarus.org/sgt@8774 cda61777-01e9-0310-a592-d414129be87e
Replace a ; with a && for vital extra error checking! Without this,
an easy typo in a bob script can cause an attempted build to
accidentally modify the parent working directory before failing.


git-svn-id: svn://svn.tartarus.org/sgt@8775 cda61777-01e9-0310-a592-d414129be87e
My faked-up git 'export' wasn't accounting for the x bit on files,
because I didn't know Python shutil.copyfile ignored it.


git-svn-id: svn://svn.tartarus.org/sgt@8787 cda61777-01e9-0310-a592-d414129be87e