summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/build.py50
1 files changed, 29 insertions, 21 deletions
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index b59473bc23..8e169e002a 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):