If the created target is a directory, it's okay for the .do to create it.
Normally, creating the target $1 yourself is bad; create $3 instead. But if $1 is a directory, we'll allow it. That way 'redo subdir' can call subdir.do, and subdir.do can both create the directory *and* run a bunch of sub-.do files on it.
This commit is contained in:
parent
83dd52c209
commit
282bb0488e
4 changed files with 6 additions and 4 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import sys, os, random, errno
|
||||
import sys, os, random, errno, stat
|
||||
import vars, jwack, state
|
||||
from helpers import log, log_, debug2, err, unlink, close_on_exec
|
||||
|
||||
|
|
@ -122,7 +122,7 @@ class BuildJob:
|
|||
before_tmp = os.fstat(f.fileno())
|
||||
after_tmp = _try_stat(tmpname)
|
||||
after_where = os.lseek(f.fileno(), 0, os.SEEK_CUR)
|
||||
if after_t != before_t:
|
||||
if after_t != before_t and not stat.S_ISDIR(after_t.st_mode):
|
||||
err('%r modified %r directly!\n' % (self.argv[2], t))
|
||||
err('...you should update $3 (a temp file) instead of $1.\n')
|
||||
rv = 206
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
redo example/clean curse/clean deps/clean "space dir/clean"
|
||||
rm -f c c.c c.c.c c.c.c.b c.c.c.b.b d mode1
|
||||
rm -f hello [by]ellow *.o *~ .*~ CC LD passfail
|
||||
|
||||
rm -rf makedir
|
||||
2
t/makedir.do
Normal file
2
t/makedir.do
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
[ -e "$1" ] && rmdir $1
|
||||
mkdir $1
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
redo-ifchange all
|
||||
./hello >&2
|
||||
redo deltest deltest2 test.args test2.args passfailtest \
|
||||
curse/test deps/test "space dir/test" modetest
|
||||
curse/test deps/test "space dir/test" modetest makedir
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue