The shutdown state causes the server to finish what its doing, stop was
them meant to completely stop it. It doesn't mean the server is stopped
though. Renaming the current stop event for forceshutdown gives more
meaning to what it actually does. The stopped namespace then becomes
available to indicate a completely stopped server.
(Bitbake rev:
12e9d33bfae5294e3870dfd1202f63383ad05e92)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
"""
Trigger cooker 'shutdown' mode
"""
- command.cooker.shutdown()
+ command.cooker.shutdown(False)
- def stateStop(self, command, params):
+ def stateForceShutdown(self, command, params):
"""
Stop the cooker
"""
- command.cooker.stop()
+ command.cooker.shutdown(True)
def getVariable(self, command, params):
"""
"""
class state:
- initial, parsing, running, shutdown, stop = range(5)
+ initial, parsing, running, shutdown, forceshutdown, stopped = range(6)
class SkippedPackage:
def buildFileIdle(server, rq, abort):
- if abort or self.state == state.stop:
+ if abort or self.state == state.forceshutdown:
rq.finish_runqueue(True)
elif self.state == state.shutdown:
rq.finish_runqueue(False)
targets = self.checkPackages(targets)
def buildTargetsIdle(server, rq, abort):
- if abort or self.state == state.stop:
+ if abort or self.state == state.forceshutdown:
rq.finish_runqueue(True)
elif self.state == state.shutdown:
rq.finish_runqueue(False)
if self.state == state.running:
return
- if self.state in (state.shutdown, state.stop):
+ if self.state in (state.shutdown, state.forceshutdown):
self.parser.shutdown(clean=False, force = True)
sys.exit(1)
prserv.serv.auto_shutdown(self.data)
bb.event.fire(CookerExit(), self.event_data)
- def shutdown(self):
- self.state = state.shutdown
-
- def stop(self):
- self.state = state.stop
+ def shutdown(self, force = False):
+ if force:
+ self.state = state.forceshutdown
+ else:
+ self.state = state.shutdown
def initialize(self):
self.initConfigurationData()
self.event_queue.close()
bb.event.unregister_UIHhandler(self.event_handle.value)
self.command_channel.close()
- self.cooker.stop()
+ self.cooker.shutdown(True)
self.idle_commands(.1)
def idle_commands(self, delay, fds = []):
self.building = False
def cancel_parse(self):
- self.runCommand(["stateStop"])
+ self.runCommand(["stateForceShutdown"])
def cancel_build(self, force=False):
if force:
# Force the cooker to stop as quickly as possible
- self.runCommand(["stateStop"])
+ self.runCommand(["stateForceShutdown"])
else:
# Wait for tasks to complete before shutting down, this helps
# leave the workdir in a usable state
break
if shutdown == 1:
print("\nSecond Keyboard Interrupt, stopping...\n")
- _, error = server.runCommand(["stateStop"])
+ _, error = server.runCommand(["stateForceShutdown"])
if error:
print('Unable to cleanly stop: %s' % error)
if shutdown == 0:
except KeyboardInterrupt:
pass
finally:
- server.runCommand(["stateStop"])
+ server.runCommand(["stateForceShutdown"])
main.shutdown = 2
if not params.observe_only and main.shutdown == 1:
print("\nSecond Keyboard Interrupt, stopping...\n")
- _, error = server.runCommand(["stateStop"])
+ _, error = server.runCommand(["stateForceShutdown"])
if error:
logger.error("Unable to cleanly stop: %s" % error)
if not params.observe_only and main.shutdown == 0:
exitflag = True
if shutdown == 1:
mw.appendText("Second Keyboard Interrupt, stopping...\n")
- _, error = server.runCommand(["stateStop"])
+ _, error = server.runCommand(["stateForceShutdown"])
if error:
print("Unable to cleanly stop: %s" % error)
if shutdown == 0: