diff options
| -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 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): | |||
| 148 | 148 | ||
| 149 | deps = data.getVarFlag(func, 'deps', d) | 149 | deps = data.getVarFlag(func, 'deps', d) |
| 150 | check = data.getVarFlag(func, 'check', d) | 150 | check = data.getVarFlag(func, 'check', d) |
| 151 | interact = data.getVarFlag(func, 'interactive', d) | ||
| 151 | if check in globals(): | 152 | if check in globals(): |
| 152 | if globals()[check](func, deps): | 153 | if globals()[check](func, deps): |
| 153 | return | 154 | return |
| @@ -186,15 +187,16 @@ def exec_func_shell(func, d): | |||
| 186 | 187 | ||
| 187 | se = so | 188 | se = so |
| 188 | 189 | ||
| 189 | # dup the existing fds so we dont lose them | 190 | if not interact: |
| 190 | osi = [os.dup(sys.stdin.fileno()), sys.stdin.fileno()] | 191 | # dup the existing fds so we dont lose them |
| 191 | oso = [os.dup(sys.stdout.fileno()), sys.stdout.fileno()] | 192 | osi = [os.dup(sys.stdin.fileno()), sys.stdin.fileno()] |
| 192 | ose = [os.dup(sys.stderr.fileno()), sys.stderr.fileno()] | 193 | oso = [os.dup(sys.stdout.fileno()), sys.stdout.fileno()] |
| 194 | ose = [os.dup(sys.stderr.fileno()), sys.stderr.fileno()] | ||
| 193 | 195 | ||
| 194 | # replace those fds with our own | 196 | # replace those fds with our own |
| 195 | os.dup2(si.fileno(), osi[1]) | 197 | os.dup2(si.fileno(), osi[1]) |
| 196 | os.dup2(so.fileno(), oso[1]) | 198 | os.dup2(so.fileno(), oso[1]) |
| 197 | os.dup2(se.fileno(), ose[1]) | 199 | os.dup2(se.fileno(), ose[1]) |
| 198 | 200 | ||
| 199 | # execute function | 201 | # execute function |
| 200 | prevdir = os.getcwd() | 202 | prevdir = os.getcwd() |
| @@ -205,20 +207,21 @@ def exec_func_shell(func, d): | |||
| 205 | ret = os.system('%ssh -e %s' % (maybe_fakeroot, runfile)) | 207 | ret = os.system('%ssh -e %s' % (maybe_fakeroot, runfile)) |
| 206 | os.chdir(prevdir) | 208 | os.chdir(prevdir) |
| 207 | 209 | ||
| 208 | # restore the backups | 210 | if not interact: |
| 209 | os.dup2(osi[0], osi[1]) | 211 | # restore the backups |
| 210 | os.dup2(oso[0], oso[1]) | 212 | os.dup2(osi[0], osi[1]) |
| 211 | os.dup2(ose[0], ose[1]) | 213 | os.dup2(oso[0], oso[1]) |
| 214 | os.dup2(ose[0], ose[1]) | ||
| 212 | 215 | ||
| 213 | # close our logs | 216 | # close our logs |
| 214 | si.close() | 217 | si.close() |
| 215 | so.close() | 218 | so.close() |
| 216 | se.close() | 219 | se.close() |
| 217 | 220 | ||
| 218 | # close the backup fds | 221 | # close the backup fds |
| 219 | os.close(osi[0]) | 222 | os.close(osi[0]) |
| 220 | os.close(oso[0]) | 223 | os.close(oso[0]) |
| 221 | os.close(ose[0]) | 224 | os.close(ose[0]) |
| 222 | 225 | ||
| 223 | if ret==0: | 226 | if ret==0: |
| 224 | if bb.debug_level > 0: | 227 | if bb.debug_level > 0: |
| @@ -350,7 +353,12 @@ def mkstamp(task, d): | |||
| 350 | return | 353 | return |
| 351 | stamp = "%s.%s" % (data.expand(stamp, d), task) | 354 | stamp = "%s.%s" % (data.expand(stamp, d), task) |
| 352 | mkdirhier(os.path.dirname(stamp)) | 355 | mkdirhier(os.path.dirname(stamp)) |
| 353 | open(stamp, "w+") | 356 | # Remove the file and recreate to force timestamp |
| 357 | # change on broken NFS filesystems | ||
| 358 | if os.access(stamp, os.F_OK): | ||
| 359 | os.remove(stamp) | ||
| 360 | f = open(stamp, "w") | ||
| 361 | f.close() | ||
| 354 | 362 | ||
| 355 | 363 | ||
| 356 | def add_task(task, deps, d): | 364 | def add_task(task, deps, d): |
