/[gentoo-x86]/x11-base/xorg-server/files/xdm.initd-4
Gentoo

Contents of /x11-base/xorg-server/files/xdm.initd-4

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Wed Nov 16 21:49:59 2011 UTC (6 years, 7 months ago) by chithanh
Branch: MAIN
Add dependency on libXrender when building dmx, bug #390697. Prevent dbus from starting too late, bug #390609.

(Portage version: 2.2.0_alpha72/cvs/Linux x86_64)

1 chithanh 1.1 #!/sbin/runscript
2     # Copyright 1999-2011 Gentoo Foundation
3     # Distributed under the terms of the GNU General Public License, v2
4     # $Header: /var/cvsroot/gentoo-x86/x11-base/xorg-server/files/xdm.initd-3,v 1.3 2011/11/01 22:53:09 hwoarang Exp $
5    
6     # This is here to serve as a note to myself, and future developers.
7     #
8     # Any Display manager (gdm,kdm,xdm) has the following problem: if
9     # it is started before any getty, and no vt is specified, it will
10     # usually run on vt2. When the getty on vt2 then starts, and the
11     # DM is already started, the getty will take control of the keyboard,
12     # leaving us with a "dead" keyboard.
13     #
14     # Resolution: add the following line to /etc/inittab
15     #
16     # x:a:once:/etc/X11/startDM.sh
17     #
18     # and have /etc/X11/startDM.sh start the DM in daemon mode if
19     # a lock is present (with the info of what DM should be started),
20     # else just fall through.
21     #
22     # How this basically works, is the "a" runlevel is a additional
23     # runlevel that you can use to fork processes with init, but the
24     # runlevel never gets changed to this runlevel. Along with the "a"
25     # runlevel, the "once" key word means that startDM.sh will only be
26     # run when we specify it to run, thus eliminating respawning
27     # startDM.sh when "xdm" is not added to the default runlevel, as was
28     # done previously.
29     #
30     # This script then just calls "telinit a", and init will run
31     # /etc/X11/startDM.sh after the current runlevel completes (this
32     # script should only be added to the actual runlevel the user is
33     # using).
34     #
35     # Martin Schlemmer
36     # aka Azarah
37     # 04 March 2002
38    
39     depend() {
40     need localmount xdm-setup
41    
42     # this should start as early as possible
43     # we can't do 'before *' as that breaks it
44     # (#139824) Start after ypbind and autofs for network authentication
45     # (#145219 #180163) Could use lirc mouse as input device
46     # (#70689 comment #92) Start after consolefont to avoid display corruption
47     # (#291269) Start after quota, since some dm need readable home
48     # (#390609) gdm-3 will fail when dbus is not running
49     after bootmisc consolefont modules netmount
50     after readahead-list ypbind autofs openvpn gpm lircmd
51     after quota
52     after dbus
53     before alsasound
54    
55     # Start before X
56     use consolekit xfs
57     }
58    
59     setup_dm() {
60     local MY_XDM
61    
62     MY_XDM=$(echo "${DISPLAYMANAGER}" | tr '[:upper:]' '[:lower:]')
63    
64     # Load our root path from profile.env
65     # Needed for kdm
66     PATH=${PATH}:$(. /etc/profile.env; echo "${ROOTPATH}")
67    
68     NAME=
69     case "${MY_XDM}" in
70     kdm|kde)
71     EXE="$(which kdm)"
72     PIDFILE=/var/run/kdm.pid
73     ;;
74     kdm-*)
75     EXE="/usr/kde/${MY_XDM#kdm-}/bin/kdm"
76     PIDFILE=/var/run/kdm.pid
77     ;;
78     entrance*)
79     EXE=/usr/sbin/entranced
80     PIDFILE=/var/lib/entranced.pid
81     ;;
82     gdm|gnome)
83     EXE=/usr/bin/gdm
84     [ "${RC_UNAME}" != "Linux" ] && NAME=gdm-binary
85     PIDFILE=/var/run/gdm.pid
86     ;;
87     wdm)
88     EXE=/usr/bin/wdm
89     PIDFILE=
90     ;;
91     gpe)
92     EXE=/usr/bin/gpe-dm
93     PIDFILE=/var/run/gpe-dm.pid
94     ;;
95     lxdm)
96     EXE=/usr/sbin/lxdm-binary
97     PIDFILE=/var/run/lxdm.pid
98     START_STOP_ARGS="--background"
99     ;;
100     lightdm)
101     EXE=/usr/sbin/lightdm
102     PIDFILE=/var/run/lightdm.pid
103     START_STOP_ARGS="--background"
104     ;;
105     *)
106     # first find out if there is such executable
107     EXE="$(which ${MY_XDM} 2>/dev/null)"
108     PIDFILE="/var/run/${MY_XDM}.pid"
109    
110     # warn user that he is doing sick things if the exe was not found
111     if [ -z "${EXE}" ]; then
112     echo "ERROR: Your XDM value is invalid."
113     echo " No ${MY_XDM} executable could be found on your system."
114     fi
115     ;;
116     esac
117    
118     if ! [ -x "${EXE}" ]; then
119     EXE=/usr/bin/xdm
120     PIDFILE=/var/run/xdm.pid
121     if ! [ -x "/usr/bin/xdm" ]; then
122     echo "ERROR: Please set your DISPLAYMANAGER variable in /etc/conf.d/xdm,"
123     echo " or install x11-apps/xdm package"
124     eend 255
125     fi
126     fi
127     }
128    
129     # Check to see if something is defined on our VT
130     vtstatic() {
131     if [ -e /etc/inittab ] ; then
132     grep -Eq "^[^#]+.*\<tty$1\>" /etc/inittab
133     elif [ -e /etc/ttys ] ; then
134     grep -q "^ttyv$(($1 - 1))" /etc/ttys
135     else
136     return 1
137     fi
138     }
139    
140     start() {
141     local EXE NAME PIDFILE
142     setup_dm
143    
144     if [ -f /etc/.noxdm ]; then
145     einfo "Skipping ${EXE##*/}, /etc/.noxdm found or \"nox\" bootparam passed."
146     rm /etc/.noxdm
147     return 0
148     fi
149    
150     ebegin "Setting up ${EXE##*/}"
151    
152     # save the prefered DM
153     save_options "service" "${EXE}"
154     save_options "name" "${NAME}"
155     save_options "pidfile" "${PIDFILE}"
156     save_options "start_stop_args" "${START_STOP_ARGS}"
157    
158     if [ -n "${CHECKVT-y}" ] ; then
159     if vtstatic "${CHECKVT:-7}" ; then
160     if [ -x /sbin/telinit ] && [ "${SOFTLEVEL}" != "BOOT" ] && [ "${RC_SOFTLEVEL}" != "BOOT" ]; then
161     ewarn "Something is already defined on VT ${CHECKVT:-7}, will start X later"
162     telinit a >/dev/null 2>&1
163     return 0
164     else
165     eerror "Something is already defined on VT ${CHECKVT:-7}, not starting"
166     return 1
167     fi
168     fi
169     fi
170    
171     /etc/X11/startDM.sh
172     eend 0
173     }
174    
175     stop() {
176     local curvt retval
177    
178     retval=0
179     if [ -t 0 ]; then
180     if type fgconsole >/dev/null 2>&1; then
181     curvt=$(fgconsole 2>/dev/null)
182     else
183     curvt=$(tty)
184     case "${curvt}" in
185     /dev/ttyv[0-9]*) curvt=${curvt#/dev/ttyv} ;;
186     *) curvt= ;;
187     esac
188     fi
189     fi
190     local myexe myname mypidfile myservice
191     myexe=$(get_options "service")
192     myname=$(get_options "name")
193     mypidfile=$(get_options "pidfile")
194     myservice=${myexe##*/}
195    
196     [ -z "${myexe}" ] && return 0
197    
198     ebegin "Stopping ${myservice}"
199    
200     if start-stop-daemon --quiet --test --stop --exec "${myexe}"; then
201     start-stop-daemon --stop --exec "${myexe}" --retry TERM/5/TERM/5 \
202     ${mypidfile:+--pidfile} ${mypidfile} \
203     ${myname:+--name} ${myname}
204     retval=${?}
205     fi
206    
207     # switch back to original vt
208     if [ -n "${curvt}" ]; then
209     if type chvt >/dev/null 2>&1; then
210     chvt "${curvt}"
211     else
212     vidcontrol -s "$((curvt + 1))"
213     fi
214     fi
215    
216     eend ${retval} "Error stopping ${myservice}"
217     return ${retval}
218     }
219    
220     # vim: set ts=4 :

  ViewVC Help
Powered by ViewVC 1.1.20