Better handling if parent closes REDO_CHEATFDS or MAKEFLAGS fds.
Silently recover if REDO_CHEATFDS file descriptors are closed, because they aren't completely essential and MAKEFLAGS-related warnings already get printed if all file descriptors have been closed. If MAKEFLAGS --jobserver-auth flags are closed, improve the error message so that a) it's a normal error instead of an exception and b) we link to documentation about why it happens. Also write some more detailed documentation about what's going on here.
This commit is contained in:
parent
bcc05a6e86
commit
3dbdfbc06f
16 changed files with 136 additions and 47 deletions
|
|
@ -1,13 +1,13 @@
|
|||
"""redo-ifchange: build the given targets if they have changed."""
|
||||
import os, sys, traceback
|
||||
from . import env, builder, deps, jobserver, logs, state
|
||||
from . import env, builder, deps, helpers, jobserver, logs, state
|
||||
from .logs import debug2, err
|
||||
|
||||
|
||||
def should_build(t):
|
||||
f = state.File(name=t)
|
||||
if f.is_failed():
|
||||
raise builder.ImmediateReturn(32)
|
||||
raise helpers.ImmediateReturn(32)
|
||||
dirty = deps.isdirty(f, depth='', max_changed=env.v.RUNID,
|
||||
already_checked=[])
|
||||
return f.is_generated, dirty == [f] and deps.DIRTY or dirty
|
||||
|
|
@ -56,7 +56,7 @@ def main():
|
|||
traceback.print_exc(100, sys.stderr)
|
||||
err('unexpected error: %r\n' % e)
|
||||
rv = 1
|
||||
except KeyboardInterrupt:
|
||||
except (KeyboardInterrupt, helpers.ImmediateReturn):
|
||||
if env.is_toplevel:
|
||||
builder.await_log_reader()
|
||||
sys.exit(200)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue