[oe-commits] Koen Kooi : gdm: start adding infrastructure to make it start on boot and do something usefull

GIT User account git at amethyst.openembedded.net
Tue Dec 9 19:29:30 UTC 2008


Module: openembedded.git
Branch: org.openembedded.dev
Commit: 093fba6f31eb53630978c28f847d6ec1ce70daf5
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=093fba6f31eb53630978c28f847d6ec1ce70daf5

Author: Koen Kooi <koen at openembedded.org>
Date:   Tue Dec  9 20:26:27 2008 +0100

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(-)

diff --git a/packages/gnome/gdm/gdm b/packages/gnome/gdm/gdm
new file mode 100755
index 0000000..0d43a6f
--- /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 <rmurray at debian.org>
+#
+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 0000000..559823b
--- /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 <configuration key>"
+#
+# 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 24e36f5..cdca2f8 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
+}
 
 
 





More information about the Openembedded-commits mailing list