diff --git a/fix-boot.patch b/fix-boot.patch new file mode 100644 index 0000000..211c873 --- /dev/null +++ b/fix-boot.patch @@ -0,0 +1,217 @@ +diff -up gdm-2.29.4/daemon/gdm-simple-slave.c.fix-boot gdm-2.29.4/daemon/gdm-simple-slave.c +--- gdm-2.29.4/daemon/gdm-simple-slave.c.fix-boot 2010-01-14 16:10:58.507800165 -0500 ++++ gdm-2.29.4/daemon/gdm-simple-slave.c 2010-01-14 16:10:58.543800532 -0500 +@@ -91,6 +91,7 @@ struct GdmSimpleSlavePrivate + + enum { + PROP_0, ++ FORCE_ACTIVE_VT + }; + + static void gdm_simple_slave_class_init (GdmSimpleSlaveClass *klass); +@@ -1321,11 +1322,13 @@ gdm_simple_slave_run (GdmSimpleSlave *sl + char *display_name; + char *auth_file; + gboolean display_is_local; ++ gboolean force_active_vt; + + g_object_get (slave, + "display-is-local", &display_is_local, + "display-name", &display_name, + "display-x11-authority-file", &auth_file, ++ "force-active-vt", &force_active_vt, + NULL); + + /* if this is local display start a server if one doesn't +@@ -1363,7 +1366,11 @@ gdm_simple_slave_run (GdmSimpleSlave *sl + plymouth_prepare_for_transition (slave); + res = gdm_server_start_on_active_vt (slave->priv->server); + } else { +- res = gdm_server_start (slave->priv->server); ++ if (force_active_vt) { ++ res = gdm_server_start_on_active_vt (slave->priv->server); ++ } else { ++ res = gdm_server_start (slave->priv->server); ++ } + } + if (! res) { + g_warning (_("Could not start the X " +@@ -1515,12 +1522,14 @@ gdm_simple_slave_finalize (GObject *obje + } + + GdmSlave * +-gdm_simple_slave_new (const char *id) ++gdm_simple_slave_new (const char *id, ++ gboolean force_active_vt) + { + GObject *object; + + object = g_object_new (GDM_TYPE_SIMPLE_SLAVE, + "display-id", id, ++ "force-active-vt", force_active_vt, + NULL); + + return GDM_SLAVE (object); +diff -up gdm-2.29.4/daemon/gdm-simple-slave.h.fix-boot gdm-2.29.4/daemon/gdm-simple-slave.h +--- gdm-2.29.4/daemon/gdm-simple-slave.h.fix-boot 2009-12-08 10:20:18.000000000 -0500 ++++ gdm-2.29.4/daemon/gdm-simple-slave.h 2010-01-14 16:10:58.543800532 -0500 +@@ -48,7 +48,8 @@ typedef struct + } GdmSimpleSlaveClass; + + GType gdm_simple_slave_get_type (void); +-GdmSlave * gdm_simple_slave_new (const char *id); ++GdmSlave * gdm_simple_slave_new (const char *id, ++ gboolean force_active_vt); + + G_END_DECLS + +diff -up gdm-2.29.4/daemon/gdm-slave.c.fix-boot gdm-2.29.4/daemon/gdm-slave.c +--- gdm-2.29.4/daemon/gdm-slave.c.fix-boot 2010-01-14 16:10:58.280770006 -0500 ++++ gdm-2.29.4/daemon/gdm-slave.c 2010-01-14 16:10:58.544770030 -0500 +@@ -84,6 +84,7 @@ struct GdmSlavePrivate + char *display_hostname; + gboolean display_is_local; + gboolean display_is_parented; ++ gboolean force_active_vt; + char *display_seat_id; + char *display_x11_authority_file; + char *parent_display_name; +@@ -102,6 +103,7 @@ enum { + PROP_DISPLAY_NUMBER, + PROP_DISPLAY_HOSTNAME, + PROP_DISPLAY_IS_LOCAL, ++ PROP_FORCE_ACTIVE_VT, + PROP_DISPLAY_SEAT_ID, + PROP_DISPLAY_X11_AUTHORITY_FILE + }; +@@ -1404,6 +1406,13 @@ _gdm_slave_set_display_is_local (GdmSlav + } + + static void ++_gdm_slave_set_force_active_vt (GdmSlave *slave, ++ gboolean force_active_vt) ++{ ++ slave->priv->force_active_vt = force_active_vt; ++} ++ ++static void + gdm_slave_set_property (GObject *object, + guint prop_id, + const GValue *value, +@@ -1435,6 +1444,9 @@ gdm_slave_set_property (GObject *ob + case PROP_DISPLAY_IS_LOCAL: + _gdm_slave_set_display_is_local (self, g_value_get_boolean (value)); + break; ++ case PROP_FORCE_ACTIVE_VT: ++ _gdm_slave_set_force_active_vt (self, g_value_get_boolean (value)); ++ break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; +@@ -1473,6 +1485,9 @@ gdm_slave_get_property (GObject *obje + case PROP_DISPLAY_IS_LOCAL: + g_value_set_boolean (value, self->priv->display_is_local); + break; ++ case PROP_FORCE_ACTIVE_VT: ++ g_value_set_boolean (value, self->priv->force_active_vt); ++ break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; +diff -up gdm-2.29.4/daemon/gdm-static-display.c.fix-boot gdm-2.29.4/daemon/gdm-static-display.c +--- gdm-2.29.4/daemon/gdm-static-display.c.fix-boot 2009-12-17 09:20:42.000000000 -0500 ++++ gdm-2.29.4/daemon/gdm-static-display.c 2010-01-14 16:10:58.545800295 -0500 +@@ -86,10 +86,27 @@ gdm_static_display_remove_user_authoriza + } + + static gboolean ++triggered_to_force_display_on_active_vt (void) ++{ ++ gboolean should_force_display_on_active_vt; ++ ++ should_force_display_on_active_vt = g_file_test (GDM_SPOOL_DIR "/force-display-on-active-vt", ++ G_FILE_TEST_EXISTS); ++ g_unlink (GDM_SPOOL_DIR "/force-display-on-active-vt"); ++ ++ return should_force_display_on_active_vt; ++} ++ ++static gboolean + gdm_static_display_manage (GdmDisplay *display) + { + g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE); + ++ if (triggered_to_force_display_on_active_vt ()) { ++ g_object_set (display, "force-active-vt", TRUE, NULL); ++ } else { ++ g_object_set (display, "force-active-vt", FALSE, NULL); ++ } + GDM_DISPLAY_CLASS (gdm_static_display_parent_class)->manage (display); + + return TRUE; +diff -up gdm-2.29.4/daemon/Makefile.am.fix-boot gdm-2.29.4/daemon/Makefile.am +--- gdm-2.29.4/daemon/Makefile.am.fix-boot 2010-01-14 16:16:26.262770051 -0500 ++++ gdm-2.29.4/daemon/Makefile.am 2010-01-14 16:17:35.998771692 -0500 +@@ -14,6 +14,7 @@ AM_CPPFLAGS = \ + -DLOGDIR=\"$(logdir)\" \ + -DSBINDIR=\"$(sbindir)\" \ + -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ ++ -DGDM_SPOOL_DIR=\"/var/spool/gdm\" \ + -DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \ + -DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \ + -DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \ +diff -up gdm-2.29.4/daemon/simple-slave-main.c.fix-boot gdm-2.29.4/daemon/simple-slave-main.c +--- gdm-2.29.4/daemon/simple-slave-main.c.fix-boot 2009-12-21 11:36:30.000000000 -0500 ++++ gdm-2.29.4/daemon/simple-slave-main.c 2010-01-14 16:10:58.545800295 -0500 +@@ -178,9 +178,11 @@ main (int argc, + DBusGConnection *connection; + GdmSlave *slave; + static char *display_id = NULL; ++ static gboolean force_active_vt = FALSE; + GdmSignalHandler *signal_handler; + static GOptionEntry entries [] = { + { "display-id", 0, 0, G_OPTION_ARG_STRING, &display_id, N_("Display ID"), N_("ID") }, ++ { "force-active-vt", 0, 0, G_OPTION_ARG_NONE, &force_active_vt, N_("Force X to start on active vt"), NULL }, + { NULL } + }; + +@@ -248,7 +250,7 @@ main (int argc, + gdm_signal_handler_add (signal_handler, SIGUSR1, signal_cb, NULL); + gdm_signal_handler_add (signal_handler, SIGUSR2, signal_cb, NULL); + +- slave = gdm_simple_slave_new (display_id); ++ slave = gdm_simple_slave_new (display_id, force_active_vt); + if (slave == NULL) { + goto out; + } +diff -up gdm-2.29.4/data/Makefile.am.fix-boot gdm-2.29.4/data/Makefile.am +--- gdm-2.29.4/data/Makefile.am.fix-boot 2009-12-21 11:36:30.000000000 -0500 ++++ gdm-2.29.4/data/Makefile.am 2010-01-14 16:10:58.546769600 -0500 +@@ -13,6 +13,7 @@ predir = $(gdmconfdir)/PreSession + postlogindir = $(gdmconfdir)/PostLogin + workingdir = $(GDM_WORKING_DIR) + xauthdir = $(GDM_XAUTH_DIR) ++spooldir = $(GDM_SPOOL_DIR) + screenshotdir = $(GDM_SCREENSHOT_DIR) + cachedir = $(localstatedir)/cache/gdm + +@@ -125,6 +126,7 @@ uninstall-hook: + $(DESTDIR)$(workingdir)/.gconf.mandatory \ + $(DESTDIR)$(screenshotdir) \ + $(DESTDIR)$(xauthdir) ++ $(DESTDIR)$(spooldir) + + install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.path + if test '!' -d $(DESTDIR)$(gdmconfdir); then \ +@@ -217,6 +219,11 @@ install-data-hook: gdm.conf-custom Xsess + chmod 1770 $(DESTDIR)$(workingdir); \ + chown root:gdm $(DESTDIR)$(workingdir) || : ; \ + fi ++ if test '!' -d $(DESTDIR)$(spooldir); then \ ++ $(mkinstalldirs) $(DESTDIR)$(spooldir); \ ++ chmod 775 $(DESTDIR)$(spooldir); \ ++ chown root:gdm $(DESTDIR)$(spooldir) || : ; \ ++ fi + + if test '!' -d $(DESTDIR)$(cachedir); then \ + $(mkinstalldirs) $(DESTDIR)$(cachedir); \ diff --git a/gdm.spec b/gdm.spec index 57635aa..ec8b02d 100644 --- a/gdm.spec +++ b/gdm.spec @@ -16,7 +16,7 @@ Summary: The GNOME Display Manager Name: gdm Version: 2.29.4 -Release: 1%{?dist} +Release: 2%{?dist} Epoch: 1 License: GPLv2+ Group: User Interface/X @@ -105,6 +105,7 @@ Patch96: gdm-multistack.patch Patch97: gdm-bubble-location.patch Patch98: tray-padding.patch Patch99: gdm-2.23.1-fedora-logo.patch +Patch100: fix-boot.patch %package user-switch-applet Summary: GDM User Switcher Panel Applet @@ -147,6 +148,7 @@ The GDM fingerprint plugin provides functionality necessary to use a fingerprint %patch97 -p1 -b .bubble-location %patch98 -p1 -b .tray-padding %patch99 -p1 -b .fedora-logo +%patch100 -p1 -b .fix-boot autoreconf -i -f @@ -202,6 +204,9 @@ rm -rf $RPM_BUILD_ROOT/%{_prefix}/doc # create log dir mkdir -p $RPM_BUILD_ROOT/var/log/gdm +# and a spool dir +mkdir -p $RPM_BUILD_ROOT/var/spool/gdm + # remove the gdm Xsession as we're using the xdm one rm -f $RPM_BUILD_ROOT%{_sysconfdir}/gdm/Xsession (cd $RPM_BUILD_ROOT%{_sysconfdir}/gdm; ln -sf ../X11/xinit/Xsession .) @@ -368,6 +373,7 @@ fi %dir %{_datadir}/gdm/autostart/LoginWindow %config %{_datadir}/gdm/autostart/LoginWindow/* %dir %{_localstatedir}/log/gdm +%dir %{_localstatedir}/spool/gdm %dir %{_localstatedir}/run/gdm/greeter %attr(1770, gdm, gdm) %dir %{_localstatedir}/lib/gdm %attr(1750, gdm, gdm) %dir %{_localstatedir}/lib/gdm/.gconf.mandatory @@ -398,6 +404,9 @@ fi %{_libdir}/gdm/simple-greeter/plugins/fingerprint.so %changelog +* Thu Jan 14 2010 Ray Strode 2.29.4-2 +- Fix boot + * Tue Dec 22 2009 Matthias Clasen - 2.29.4-1 - Update to 2.29.4