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:
parent
e207b723b4
commit
fb388b3dde
14 changed files with 341 additions and 10 deletions
13
vars_init.py
13
vars_init.py
|
|
@ -5,10 +5,17 @@ def init(targets):
|
|||
# toplevel call to redo
|
||||
exenames = [os.path.abspath(sys.argv[0]),
|
||||
os.path.realpath(sys.argv[0])]
|
||||
if exenames[0] == exenames[1]:
|
||||
exenames = [exenames[0]]
|
||||
dirnames = [os.path.dirname(p) for p in exenames]
|
||||
os.environ['PATH'] = ':'.join(dirnames) + ':' + os.environ['PATH']
|
||||
trynames = ([os.path.abspath(p+'/../lib/redo') for p in dirnames] +
|
||||
[p+'/redo-sh' for p in dirnames] +
|
||||
dirnames)
|
||||
seen = {}
|
||||
dirs = []
|
||||
for k in trynames:
|
||||
if not seen.get(k) and os.path.exists('%s/.' % k):
|
||||
seen[k] = 1
|
||||
dirs.append(k)
|
||||
os.environ['PATH'] = ':'.join(dirs) + ':' + os.environ['PATH']
|
||||
os.environ['REDO'] = os.path.abspath(sys.argv[0])
|
||||
|
||||
if not os.environ.get('REDO_BASE'):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue