]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Refine postinst to respect masking of display-manager.service
authorMartin Pitt <martin.pitt@ubuntu.com>
Sun, 27 Apr 2014 13:09:18 +0000 (15:09 +0200)
committerMartin Pitt <martin.pitt@ubuntu.com>
Sun, 27 Apr 2014 13:09:18 +0000 (15:09 +0200)
debian/lightdm.postinst

index 7c8686e1da53606dd4333882e019c40ad8504b2a..8549974fa162d560148fb52dc9a33c295b0810f8 100644 (file)
@@ -69,6 +69,24 @@ fi
 # stdout, which can confuse debconf.
 db_stop
 
+DEFAULT_SERVICE=/etc/systemd/system/display-manager.service
+# set default-display-manager systemd service link according to our config
+if [ "$1" = configure ] && [ -d /etc/systemd/system/ ]; then
+  if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ]; then
+    SERVICE=/lib/systemd/system/$(basename $(cat "$DEFAULT_DISPLAY_MANAGER_FILE")).service
+    if [ -h "$DEFAULT_SERVICE" ] && [ $(readlink "$DEFAULT_SERVICE") = /dev/null ]; then
+      echo "Display manager service is masked" >&2
+    elif [ -e "$SERVICE" ]; then
+      ln -sf "$SERVICE" "$DEFAULT_SERVICE"
+    else
+      echo "WARNING: $SERVICE is the selected default display manager but does not exist" >&2
+      rm -f "$DEFAULT_SERVICE"
+    fi
+  else
+    rm -f "$DEFAULT_SERVICE"
+  fi
+fi
+
 case "$1" in
     configure)
         # LP: #1189948
@@ -80,16 +98,6 @@ case "$1" in
                 chmod 0644 /etc/apparmor.d/abstractions/lightdm_chromium-browser || true
             fi
         fi
-
-        # set default-display-manager systemd service link according to our config
-        if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" -a -d /etc/systemd/system/ ]; then
-            SERVICE=/lib/systemd/system/$(basename $(cat "$DEFAULT_DISPLAY_MANAGER_FILE")).service
-            if [ -e "$SERVICE" ]; then
-                ln -sf "$SERVICE" /etc/systemd/system/display-manager.service
-            else
-                echo "ERROR: $SERVICE is the selected default display manager but does not exist" >&2
-            fi
-        fi
         ;;
 esac