3495a773f9
longer compares the current configuration to the previous configuration, but instead compares the current Upstart state to the intended state. Thus, if the switch script is interrupted, running nixos-rebuild again will resume starting/stopping Upstart jobs where the previous run left off. We determine if an Upstart job has changed by having the pre-start script of each Upstart job put a symlink to its .conf file in /var/run/upstart-jobs. So if this symlink differs from the target of /etc/init/<job>.conf, then the job has changed. This also prevents multiple restarts of dependent jobs. E.g., if job B has "start on started A" and "stop on stopping A", then restarting A will cause B to be restarted, so B shouldn't B restarted a second time. We only start jobs that are not running if 1) they're tasks that have been previously run (like mountall); or 2) they're jobs that have a "start on" condition. This seems a reasonable heuristic. svn path=/nixos/trunk/; revision=33222 |
||
---|---|---|
.. | ||
upstart.nix |