From 093fba6f31eb53630978c28f847d6ec1ce70daf5 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Tue, 9 Dec 2008 20:26:27 +0100 Subject: gdm: start adding infrastructure to make it start on boot and do something usefull --- packages/gnome/gdm/gdm | 73 ++++++++++++++++++++++++++++++++++++++++ packages/gnome/gdm/gdm.conf | 80 ++++++++++++++++++++++++++++++++++++++++++++ packages/gnome/gdm_2.24.1.bb | 42 +++++++++++++++++++++-- 3 files changed, 193 insertions(+), 2 deletions(-) create mode 100755 packages/gnome/gdm/gdm create mode 100644 packages/gnome/gdm/gdm.conf diff --git a/packages/gnome/gdm/gdm b/packages/gnome/gdm/gdm new file mode 100755 index 0000000000..0d43a6f91a --- /dev/null +++ b/packages/gnome/gdm/gdm @@ -0,0 +1,73 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: gdm +# Should-Start: console-screen acpid dbus hal network-manager +# Required-Start: $local_fs $remote_fs +# Required-Stop: $local_fs $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: GNOME Display Manager +# Description: Debian init script for the GNOME Display Manager +### END INIT INFO +# +# Author: Ryan Murray +# +set -e + +PATH=/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/sbin/gdm + +test -x $DAEMON || exit 0 + +if [ -r /etc/default/locale ]; then + . /etc/default/locale + export LANG LANGUAGE +fi + +# To start gdm even if it is not the default display manager, change +# HEED_DEFAULT_DISPLAY_MANAGER to "false." +HEED_DEFAULT_DISPLAY_MANAGER=true +DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager + +case "$1" in + start) + CONFIGURED_DAEMON=$(basename "$(cat $DEFAULT_DISPLAY_MANAGER_FILE 2> /dev/null)") + if grep -wqs text /proc/cmdline; then + echo "Not starting GNOME Display Manager (gdm); found 'text' in kernel commandline." + elif [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" ] && \ + [ "$HEED_DEFAULT_DISPLAY_MANAGER" = "true" ] && \ + [ "$CONFIGURED_DAEMON" != gdm ] ; then + echo "Not starting GNOME Display Manager; it is not the default display manager" + else + echo "Starting GNOME Display Manager" "gdm" + start-stop-daemon --start --quiet --exec $DAEMON + fi + ;; + stop) + echo "Stopping GNOME Display Manager" "gdm" + set +e + start-stop-daemon --stop --quiet --pidfile /var/run/gdm.pid \ + --name gdm --retry 5 + set -e + ;; + reload) + echo "Scheduling reload of GNOME Display Manager configuration" "gdm" + set +e + start-stop-daemon --stop --signal USR1 --quiet --pidfile \ + /var/run/gdm.pid --name gdm + set -e + ;; + status) + status_of_proc -p "$PIDFILE" "$DAEMON" gdm && exit 0 || exit $? + ;; + restart|force-reload) + $0 stop + $0 start + ;; + *) + echo "Usage: /etc/init.d/gdm {start|stop|restart|reload|force-reload|status}" + exit 1 + ;; +esac + +exit 0 diff --git a/packages/gnome/gdm/gdm.conf b/packages/gnome/gdm/gdm.conf new file mode 100644 index 0000000000..559823b863 --- /dev/null +++ b/packages/gnome/gdm/gdm.conf @@ -0,0 +1,80 @@ +# GDM Custom Configuration file. +# +# This file is the appropriate place for specifying your customizations to the +# GDM configuration. If you run gdmsetup, it will automatically edit this +# file for you and will cause the daemon and any running GDM GUI programs to +# automatically update with the new configuration. Not all configuration +# options are supported by gdmsetup, so to modify some values it may be +# necessary to modify this file directly by hand. +# +# This file overrides the default configuration settings. These settings +# are stored in the GDM System Defaults configuration file, which is found +# at the following location. +# +# /usr/share/gdm/defaults.conf. +# +# This file contains comments about the meaning of each configuration option, +# so is also a useful reference. Also refer to the documentation links at +# the end of this comment for further information. In short, to hand-edit +# this file, simply add or modify the key=value combination in the +# appropriate section in the template below this comment section. +# +# For example, if you want to specify a different value for the Enable key +# in the "[debug]" section of your GDM System Defaults configuration file, +# then add "Enable=true" in the "[debug]" section of this file. If the +# key already exists in this file, then simply modify it. +# +# Older versions of GDM used the "gdm.conf" file for configuration. If your +# system has an old gdm.conf file on the system, it will be used instead of +# this file - so changes made to this file will not take effect. Consider +# migrating your configuration to this file and removing the gdm.conf file. +# +# If you hand edit a GDM configuration file, you can run the following +# command and the GDM daemon will immediately reflect the change. Any +# running GDM GUI programs will also be notified to update with the new +# configuration. +# +# gdmflexiserver --command="UPDATE_CONFIG " +# +# e.g, the "Enable" key in the "[debug]" section would be "debug/Enable". +# +# You can also run gdm-restart or gdm-safe-restart to cause GDM to restart and +# re-read the new configuration settings. You can also restart GDM by sending +# a HUP or USR1 signal to the daemon. HUP behaves like gdm-restart and causes +# any user session started by GDM to exit immediately while USR1 behaves like +# gdm-safe-restart and will wait until all users log out before restarting GDM. +# +# For full reference documentation see the gnome help browser under +# GNOME|System category. You can also find the docs in HTML form on +# http://www.gnome.org/projects/gdm/ +# +# NOTE: Lines that begin with "#" are considered comments. +# +# Have fun! + +[daemon] + +[security] + +[xdmcp] + +[gui] + +[greeter] + +[chooser] + +[debug] + +# Note that to disable servers defined in the GDM System Defaults +# configuration file (such as 0=Standard, you must put a line in this file +# that says 0=inactive, as described in the Configuration section of the GDM +# documentation. +# +[servers] + +# Also note, that if you redefine a [server-foo] section, then GDM will +# use the definition in this file, not the GDM System Defaults configuration +# file. It is currently not possible to disable a [server-foo] section +# defined in the GDM System Defaults configuration file. +# diff --git a/packages/gnome/gdm_2.24.1.bb b/packages/gnome/gdm_2.24.1.bb index 24e36f5a11..cdca2f87ae 100644 --- a/packages/gnome/gdm_2.24.1.bb +++ b/packages/gnome/gdm_2.24.1.bb @@ -3,18 +3,56 @@ LICENSE = "GPL" DEPENDS = "libpam gnome-doc-utils gtk+ libglade libgnomecanvas librsvg libxml2 libart-lgpl" -inherit gnome +PR = "r1" -SRC_URI += "file://%gconf-tree.xml" +inherit gnome update-rc.d + +SRC_URI += "file://%gconf-tree.xml \ + file://gdm.conf \ + file://gdm \ + " do_install_prepend() { mkdir -p ${D}/var/lib/gdm/.gconf.mandatory cp ${WORKDIR}/%gconf-tree.xml ${D}/var/lib/gdm/.gconf.mandatory/ + install -d ${D}/${sysconfdir}/gdm + install -m 0644 ${WORKDIR}/gdm.conf ${D}/${sysconfdir}/gdm/ + install -d ${D}/${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/gdm ${D}/${sysconfdir}/init.d/ } FILES_${PN} += "${datadir}/icon* \ ${datadir}/xsession*" +CONFFILES_${PN} += "${sysconfdir}/gdm/gdm.conf ${sysconfdir}/init.d/gdm" + +INITSCRIPT_NAME = "gdm" +INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ." + +pkg_postinst_${PN} () { + # can't do this offline + if [ "x$D" != "x" ]; then + exit 1 + fi + grep "^gdm:" /etc/group > /dev/null || addgroup gdm + grep "^gdm:" /etc/passwd > /dev/null || adduser --disabled-password --system --home /var/lib/gdm gdm --ingroup gdm -g gdm + +if [ -d /var/lib/gdm ]; then + chown -R gdm:gdm /var/lib/gdm + chmod 0750 /var/lib/gdm +fi + +# Register up as default dm +mkdir -p ${sysconfdir}/X11/ +echo "${bindir}/gdm" > ${sysconfdir}/X11/default-display-manager + +} + +pkg_postrm_${PN} () { + deluser gdm || true + delgroup gdm || true + sed -i /gdm/d ${sysconfdir}/X11/default-display-manager || true +} -- cgit 1.2.3-korg