diff options
author | Richard Purdie <richard@openedhand.com> | 2006-08-30 21:26:07 +0000 |
---|---|---|
committer | Richard Purdie <richard@openedhand.com> | 2006-08-30 21:26:07 +0000 |
commit | 27e6638adc8ef10a975d6e853ef7f427ca3e5fbb (patch) | |
tree | 1af57dc014149e26d9659c4b1a26369e6e8c04f1 | |
parent | 874a642961a20ef757bb5ed920247b1415e84fed (diff) | |
download | openembedded-core-27e6638adc8ef10a975d6e853ef7f427ca3e5fbb.tar.gz openembedded-core-27e6638adc8ef10a975d6e853ef7f427ca3e5fbb.tar.bz2 openembedded-core-27e6638adc8ef10a975d6e853ef7f427ca3e5fbb.tar.xz openembedded-core-27e6638adc8ef10a975d6e853ef7f427ca3e5fbb.zip |
bitbake build.py: Add interactive flag for tasks to allow i/o redirection to be disabled. Also fix NFS stamp error
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@681 311d38ba-8fff-0310-9ca6-ca027cbcb966
-rw-r--r-- | bitbake/lib/bb/build.py | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py index b59473bc2..8e169e002 100644 --- a/bitbake/lib/bb/build.py +++ b/bitbake/lib/bb/build.py @@ -148,6 +148,7 @@ def exec_func_shell(func, d): deps = data.getVarFlag(func, 'deps', d) check = data.getVarFlag(func, 'check', d) + interact = data.getVarFlag(func, 'interactive', d) if check in globals(): if globals()[check](func, deps): return @@ -186,15 +187,16 @@ def exec_func_shell(func, d): se = so - # dup the existing fds so we dont lose them - osi = [os.dup(sys.stdin.fileno()), sys.stdin.fileno()] - oso = [os.dup(sys.stdout.fileno()), sys.stdout.fileno()] - ose = [os.dup(sys.stderr.fileno()), sys.stderr.fileno()] + if not interact: + # dup the existing fds so we dont lose them + osi = [os.dup(sys.stdin.fileno()), sys.stdin.fileno()] + oso = [os.dup(sys.stdout.fileno()), sys.stdout.fileno()] + ose = [os.dup(sys.stderr.fileno()), sys.stderr.fileno()] - # replace those fds with our own - os.dup2(si.fileno(), osi[1]) - os.dup2(so.fileno(), oso[1]) - os.dup2(se.fileno(), ose[1]) + # replace those fds with our own + os.dup2(si.fileno(), osi[1]) + os.dup2(so.fileno(), oso[1]) + os.dup2(se.fileno(), ose[1]) # execute function prevdir = os.getcwd() @@ -205,20 +207,21 @@ def exec_func_shell(func, d): ret = os.system('%ssh -e %s' % (maybe_fakeroot, runfile)) os.chdir(prevdir) - # restore the backups - os.dup2(osi[0], osi[1]) - os.dup2(oso[0], oso[1]) - os.dup2(ose[0], ose[1]) + if not interact: + # restore the backups + os.dup2(osi[0], osi[1]) + os.dup2(oso[0], oso[1]) + os.dup2(ose[0], ose[1]) - # close our logs - si.close() - so.close() - se.close() + # close our logs + si.close() + so.close() + se.close() - # close the backup fds - os.close(osi[0]) - os.close(oso[0]) - os.close(ose[0]) + # close the backup fds + os.close(osi[0]) + os.close(oso[0]) + os.close(ose[0]) if ret==0: if bb.debug_level > 0: @@ -350,7 +353,12 @@ def mkstamp(task, d): return stamp = "%s.%s" % (data.expand(stamp, d), task) mkdirhier(os.path.dirname(stamp)) - open(stamp, "w+") + # Remove the file and recreate to force timestamp + # change on broken NFS filesystems + if os.access(stamp, os.F_OK): + os.remove(stamp) + f = open(stamp, "w") + f.close() def add_task(task, deps, d): |