diff --git a/gui-libs/display-manager-init/files/display-manager.initd b/gui-libs/display-manager-init/files/display-manager.initd index e650df9600e..092754d234a 100644 --- a/gui-libs/display-manager-init/files/display-manager.initd +++ b/gui-libs/display-manager-init/files/display-manager.initd @@ -2,6 +2,7 @@ # Copyright 1999-2020 Gentoo Authors # Distributed under the terms of the GNU General Public License, v2 +retry="TERM/5/TERM/5" # This is here to serve as a note to myself, and future developers. # # Any Display manager (gdm,kdm,xdm) has the following problem: if @@ -59,83 +60,77 @@ setup_dm() { local MY_XDM MY_XDM=$(echo "${DISPLAYMANAGER}" | tr '[:upper:]' '[:lower:]') - - NAME= case "${MY_XDM}" in kdm|kde) - # Load our root path from profile.env - # Needed for kdm - PATH=${PATH}:$(. /etc/profile.env; echo "${ROOTPATH}") - EXE=/usr/bin/kdm - PIDFILE=/run/kdm.pid + command=/usr/bin/kdm + pidfile=/run/kdm.pid ;; entrance*) - EXE=/usr/sbin/entrance - PIDFILE=/run/entrance.pid + command=/usr/sbin/entrance + pidfile=/run/entrance.pid ;; gdm|gnome) # gdm-3 and above has different paths if [ -f /usr/sbin/gdm ]; then - EXE=/usr/sbin/gdm - PIDFILE=/run/gdm/gdm.pid - START_STOP_ARGS="--background" - AUTOCLEAN_CGROUP="yes" + command=/usr/sbin/gdm + pidfile=/run/gdm/gdm.pid + start_stop_daemon_args="--background" else - EXE=/usr/bin/gdm - PIDFILE=/run/gdm.pid + command=/usr/bin/gdm + pidfile=/run/gdm.pid fi - [ "${RC_UNAME}" != "Linux" ] && NAME=gdm-binary + [ "${RC_UNAME}" != "Linux" ] && name=gdm-binary ;; greetd) - EXE=/usr/bin/greetd - PIDFILE=/run/greetd.pid - START_STOP_ARGS="-m --background" + command=/usr/bin/greetd + command_background=yes + pidfile=/run/greetd.pid ;; wdm) - EXE=/usr/bin/wdm - PIDFILE= + command=/usr/bin/wdm ;; gpe) - EXE=/usr/bin/gpe-dm - PIDFILE=/run/gpe-dm.pid + command=/usr/bin/gpe-dm + pidfile=/run/gpe-dm.pid ;; lxdm) - EXE=/usr/sbin/lxdm-binary - PIDFILE=/run/lxdm.pid - START_STOP_ARGS="--background" + command=/usr/sbin/lxdm-binary + pidfile=/run/lxdm.pid + start_stop_daemon_args="--background" ;; lightdm) - EXE=/usr/sbin/lightdm - PIDFILE=/run/lightdm.pid - START_STOP_ARGS="--background" + command=/usr/sbin/lightdm + pidfile=/run/lightdm.pid + start_stop_daemon_args="--background" ;; sddm) - EXE="/usr/bin/sddm" - START_STOP_ARGS="-m --background" - PIDFILE=/run/sddm.pid + command="/usr/bin/sddm" + command_background=yes + pidfile=/run/sddm.pid ;; *) # first find out if there is such executable - EXE="$(command -v ${MY_XDM} 2>/dev/null)" - PIDFILE="/run/${MY_XDM}.pid" + command="$(command -v ${MY_XDM} 2>/dev/null)" + pidfile="/run/${MY_XDM}.pid" # warn user that they are doing sick things if the exe was not found if [ -z "${EXE}" ]; then - echo "ERROR: Your XDM value is invalid." - echo " No ${MY_XDM} executable could be found on your system." + eerror "ERROR: Your XDM value is invalid." + eerror " No ${MY_XDM} executable could be found on your system." fi ;; esac - if ! [ -x "${EXE}" ]; then - EXE=/usr/bin/xdm - PIDFILE=/run/xdm.pid + if ! [ -x "${command}" ]; then + command=/usr/bin/xdm + pidfile=/run/xdm.pid if ! [ -x "/usr/bin/xdm" ]; then - echo "ERROR: Please set your DISPLAYMANAGER variable in /etc/conf.d/xdm," - echo " or install x11-apps/xdm package" - eend 255 + eerror "ERROR: Please set your DISPLAYMANAGER variable in /etc/conf.d/xdm," + eerror " or install the x11-apps/xdm package" + return 1 fi fi + return 0 } # Check to see if something is defined on our VT @@ -147,48 +142,33 @@ vtstatic() { else return 1 fi + return } -start() { - local EXE NAME PIDFILE AUTOCLEAN_CGROUP - setup_dm +start_pre() { + setup_dm || return if [ -f /run/.nogui ]; then - einfo "Skipping ${EXE##*/}, /run/.nogui found or 'nogui' bootparam passed." + einfo "Skipping ${command##*/}, /run/.nogui found or 'nogui' bootparam passed." rm /run/.nogui - return 0 + return 1 fi - ebegin "Setting up ${EXE##*/}" - - # save the prefered DM - save_options "service" "${EXE}" - save_options "name" "${NAME}" - save_options "pidfile" "${PIDFILE}" - save_options "start_stop_args" "${START_STOP_ARGS}" - save_options "autoclean_cgroup" "${AUTOCLEAN_CGROUP:-no}" - - if [ -n "${CHECKVT-y}" ] ; then - if vtstatic "${CHECKVT:-7}" ; then - if [ -x /sbin/telinit ] && [ "${SOFTLEVEL}" != "BOOT" ] && [ "${RC_SOFTLEVEL}" != "BOOT" ]; then - ewarn "Something is already defined on VT ${CHECKVT:-7}, will start X later" - telinit a >/dev/null 2>&1 - return 0 - else - eerror "Something is already defined on VT ${CHECKVT:-7}, not starting" - return 1 - fi + if vtstatic "${CHECKVT:-7}" ; then + if [ -x /sbin/telinit ] && [ "${SOFTLEVEL}" != "BOOT" ] && [ "${RC_SOFTLEVEL}" != "BOOT" ]; then + ewarn "Something is already defined on VT ${CHECKVT:-7}, will start X later" + telinit a >/dev/null 2>&1 + return 0 + else + eerror "Something is already defined on VT ${CHECKVT:-7}, not starting" + return 1 fi fi - /usr/bin/startDM - eend 0 + return 0 } -stop() { - local curvt retval - - retval=0 +stop_pre() { if [ -t 0 ]; then if type fgconsole >/dev/null 2>&1; then curvt=$(fgconsole 2>/dev/null) @@ -200,24 +180,10 @@ stop() { esac fi fi - local myexe myname mypidfile myservice - myexe=$(get_options "service") - myname=$(get_options "name") - mypidfile=$(get_options "pidfile") - myservice=${myexe##*/} - yesno "${rc_cgroup_cleanup:-no}" || rc_cgroup_cleanup=$(get_options "autoclean_cgroup") - - [ -z "${myexe}" ] && return 0 - - ebegin "Stopping ${myservice}" - - if start-stop-daemon --quiet --test --stop --exec "${myexe}" 2>/dev/null; then - start-stop-daemon --stop --exec "${myexe}" --retry TERM/5/TERM/5 \ - "${mypidfile:+--pidfile}" "${mypidfile}" \ - "${myname:+--name}" "${myname}" - retval=${?} - fi + return +} +stop_post() { # switch back to original vt if [ -n "${curvt}" ]; then if type chvt >/dev/null 2>&1; then @@ -226,9 +192,7 @@ stop() { vidcontrol -s "$((curvt + 1))" fi fi - - eend ${retval} "Error stopping ${myservice}" - return ${retval} + return } # vim: set ts=4 : diff --git a/gui-libs/display-manager-init/files/startDM b/gui-libs/display-manager-init/files/startDM index 976d1dd2d56..43dcf3c84b3 100644 --- a/gui-libs/display-manager-init/files/startDM +++ b/gui-libs/display-manager-init/files/startDM @@ -14,16 +14,6 @@ if [ ! -d /run/openrc ]; then eerror "$0 should only be used on OpenRC systems" fi -. /lib/rc/sh/functions.sh - -export RC_SVCNAME=display-manager -EXEC="$(get_options service)" -NAME="$(get_options name)" -PIDFILE="$(get_options pidfile)" -START_STOP_ARGS="$(get_options start_stop_args)" - -start-stop-daemon --start --exec "${EXEC}" \ -"${NAME:+--name}" "${NAME}" "${PIDFILE:+--pidfile}" "${PIDFILE}" ${START_STOP_ARGS} || \ -eerror "ERROR: could not start the Display Manager" +rc-service display-manager start # vim:ts=4