* Allow Upstart jobs to declare that they shouldn't be restarted by

switch-to-configuration.  E.g. the X server shouldn't be restarted
  because that kills all the X clients.

svn path=/nixos/trunk/; revision=33223
wip/yesman
Eelco Dolstra 12 years ago
parent 3495a773f9
commit 86d8d62d16
  1. 2
      modules/services/misc/disnix.nix
  2. 4
      modules/services/system/dbus.nix
  3. 4
      modules/services/x11/xserver.nix
  4. 9
      modules/system/activation/switch-to-configuration.sh
  5. 11
      modules/system/upstart/upstart.nix
  6. 2
      modules/virtualisation/xen-dom0.nix

@ -126,6 +126,8 @@ in
+ optionalString config.services.tomcat.enable " and started tomcat"
+ optionalString config.services.svnserve.enable " and started svnserve";
restartIfChanged = false;
script =
''
export PATH=/var/run/current-system/sw/bin:/var/run/current-system/sw/sbin

@ -117,7 +117,9 @@ in
jobs.dbus =
{ startOn = "started udev and started syslogd";
restartIfChanged = false;
path = [ pkgs.dbus_daemon pkgs.dbus_tools ];
preStart =

@ -392,7 +392,9 @@ in
};
jobs.xserver =
{ environment =
{ restartIfChanged = false;
environment =
{ FONTCONFIG_FILE = "/etc/fonts/fonts.conf"; # !!! cleanup
XKB_BINDIR = "${xorg.xkbcomp}/bin"; # Needed for the Xkb extension.
TZ = config.time.timeZone;

@ -108,14 +108,7 @@ for job in $(cd $newJobs && ls *.conf); do
status=$(status "$job")
if ! [[ "$status" =~ start/ ]]; then continue; fi
if [ "$(readlink -f "$newJobs/$job.conf")" = "$(readlink -f "/var/run/upstart-jobs/$job")" ]; then continue; fi
# Hack: don't restart the X server (that would kill all the clients).
# And don't restart dbus, since that causes ConsoleKit to
# forget about current sessions.
# Idem for xendomains because we don't want to save/restore
# Xen domains unless we have to.
# TODO: Jobs should be able to declare that they should not be
# auto-restarted.
if echo "$job" | grep -q "^xserver$\|^dbus$\|^disnix$\|^xendomains$\|^udevtrigger$"; then
if ! grep -q "^# RESTART-IF-CHANGED" "$newJobs/$job.conf"; then
echo "not restarting changed service ‘$job"
continue
fi

@ -82,6 +82,8 @@ let
${optionalString job.task "task"}
${optionalString (!job.task && job.respawn) "respawn"}
${optionalString job.restartIfChanged "# RESTART-IF-CHANGED"}
${ # preStop is run only if there is exec or script.
# (upstart 0.6.5, job.c:562)
optionalString (job.preStop != "") (assert hasMain; ''
@ -283,6 +285,15 @@ let
'';
};
restartIfChanged = mkOption {
type = types.bool;
default = true;
description = ''
Whether the job should be restarted if it has changed after a
NixOS configuration switch.
'';
};
task = mkOption {
type = types.bool;
default = false;

@ -140,6 +140,8 @@ in
stopOn = "starting shutdown and stopping xend";
restartIfChanged = false;
path = [ pkgs.xen ];
environment.XENDOM_CONFIG = "${xen}/etc/sysconfig/xendomains";

Loading…
Cancel
Save