Automatically select a good shell instead of relying on /bin/sh.

This includes a fairly detailed test of various known shell bugs from the
autoconf docs.

The idea here is that if redo works on your system, you should be able to
rely on a *good* shell to run your .do files; you shouldn't have to work
around zillions of bugs like autoconf does.
This commit is contained in:
Avery Pennarun 2010-12-21 04:19:50 -08:00
commit fb388b3dde
14 changed files with 341 additions and 10 deletions

View file

@ -197,7 +197,8 @@ class BuildJob:
after_t = _try_stat(t)
st1 = os.fstat(f.fileno())
st2 = _try_stat(self.tmpname2)
if after_t != before_t and not stat.S_ISDIR(after_t.st_mode):
if (after_t and after_t != before_t and
not stat.S_ISDIR(after_t.st_mode)):
err('%s modified %s directly!\n' % (self.argv[2], t))
err('...you should update $3 (a temp file) or stdout, not $1.\n')
rv = 206