File macros.display-manager of Package display-manager-macros

# See https://en.opensuse.org/openSUSE:DisplayManagerRework:Packaging

%display_manager_preset_provides(p:) \
Provides: systemd-presets-desktop = %{version} \
Conflicts: systemd-presets-desktop \
%{-p:Provides: systemd-presets-desktop-%{-p*} = %{version}} \
%{nil}

%display_manager_preset_supplements() \
Supplements: (%{1} and display-manager-setup) \
%{nil}

%display_manager_preset_requires \
%{?systemd_preset_requires} \
%{nil}

%display_manager_package_requires \
Requires: display-manager-setup \
%{nil}

#### Used by display-manager-setup ####

%dms_systemd_enable_force_post() \
if [ "$(systemctl is-enabled %{1})" != "not-found" ]; then \
systemctl enable --force %{1} \
else \
echo "%{1} doesn't exist: doing nothing." \
fi \
%{nil}

%display_manager_validate_no_preset \
# Reverse order of update-alternatives priority so we end up with the same result \
if [ "$(systemctl is-enabled display-manager 2>&1 | grep -E 'not-found|severed')" ]; then \
  echo "Display Manager configuration still looks broken!" \
  echo "Enabling all display managers" \
  %{dms_systemd_enable_force_post xdm} \
  %{dms_systemd_enable_force_post lightdm} \
  %{dms_systemd_enable_force_post sddm} \
  %{dms_systemd_enable_force_post gdm} \
fi \
%{nil}

%display_manager_validate \
if [ "$(systemctl is-enabled display-manager 2>&1 | grep -E 'not-found|severed')" ]; then \
  echo "Display Manager configuration looks broken!" \
  echo "Presetting all display managers" \
  %{systemd_preset_force_post -e gdm} \
  %{systemd_preset_force_post -e sddm} \
  %{systemd_preset_force_post -e lightdm} \
  %{systemd_preset_force_post -e xdm} \
fi \
%{display_manager_validate_no_preset} \
%{nil}

%display_manager_check_triggers \
# check we have a valid configuration \
# in case of no presets call display_manager_validate_no_preset \
set +x \
set +v \
set -e \
grep -q -E 'gdm|sddm|lightdm|xdm|display-manager-legacy' && dm_changed=1 || dm_changed=0 \
if [ "$dm_changed" = "1" ]; then \
  %{display_manager_validate} \
fi \
%{nil}

%display_manager_migration_pre \
# DML = Display Manager Legacy \
# migrate from update-alternatives to systemd \
set +x \
set +v \
set -e \
if test -e /etc/systemd/system/display-manager.service; then \
  dml_is_running_as_dm=0 \
  # pre Tumbleweed/Leap16 (Leap15 etc.) \
  if [ "$(realpath /etc/systemd/system/display-manager.service)" = "/usr/lib/systemd/system/display-manager.service" ]; then \
    dml_is_running_as_dm=1 \
  fi \
  # Tumbleweed/Leap16 \
  # display-manager is currently 'legacy mode' - if migration has already occured \
  # the below command would return 'disabled' \
  if [ "$(systemctl is-enabled display-manager-legacy)" = "enabled" ]; then \
    dml_is_running_as_dm=1 \
  fi \
  if [ "$dml_is_running_as_dm" = "1" ]; then \
    if [ -x /usr/sbin/update-alternatives ]; then \
      current_dm="$(update-alternatives --query default-displaymanager | awk '/Value:/ {print $2}')" \
      current_dm="$(basename $current_dm)" \
      echo "$current_dm" > /run/display-manager-migration \
    fi \
  fi \
fi \
%{nil}

%display_manager_migration_posttrans \
# migrate from update-alternatives to systemd \
set +x \
set +v \
set -e \
if test -e /run/display-manager-migration; then \
  current_dm="$(cat /run/display-manager-migration)" \
  echo "Display Manager configuration: migrating from update-alternatives to systemd" \
  systemctl enable --force ${current_dm}.service || true \
  # if original provider got removed - validate configuration \
  %{display_manager_validate} \
  rm /run/display-manager-migration \
fi \
%{nil}

#### Used by display-manager-setup ####

openSUSE Build Service is sponsored by