From ca70cf6ce7cf47be0a29af9e91b4230de366a8e1 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Oct 29 2019 10:41:14 +0000 Subject: import gdm-3.28.2-18.el7 --- diff --git a/.gdm.metadata b/.gdm.metadata new file mode 100644 index 0000000..4dc1d6e --- /dev/null +++ b/.gdm.metadata @@ -0,0 +1 @@ +4733edef031ca2618fb48cdbdc0aa23c139edb85 SOURCES/gdm-3.28.2.tar.xz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3ac4a68 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/gdm-3.28.2.tar.xz diff --git a/SOURCES/0001-Honor-initial-setup-being-disabled-by-distro-install.patch b/SOURCES/0001-Honor-initial-setup-being-disabled-by-distro-install.patch new file mode 100644 index 0000000..bb44070 --- /dev/null +++ b/SOURCES/0001-Honor-initial-setup-being-disabled-by-distro-install.patch @@ -0,0 +1,210 @@ +From d4f6b620c4c1b56e7e6421cc470eb711d7faa0eb Mon Sep 17 00:00:00 2001 +From: Rui Matos +Date: Mon, 23 Jan 2017 20:19:51 +0100 +Subject: [PATCH] Honor initial setup being disabled by distro installer + +Sysadmins might want to disable any kind of initial setup for their +users, perhaps because they pre-configure their environments. We +already provide a configuration file option for this but distro +installers might have their own way of requesting this. + +At least the anaconda installer provides an option to skip any kind +post-install setup tools so, for now we're only adding support for +that but more might be added in the future. + +https://bugzilla.gnome.org/show_bug.cgi?id=777708 +--- + daemon/Makefile.am | 1 + + daemon/gdm-display.c | 29 +++++++++++++++++++++++++++++ + 2 files changed, 30 insertions(+) + +diff --git a/daemon/Makefile.am b/daemon/Makefile.am +index 5e9eb5e0..3b1b1512 100644 +--- a/daemon/Makefile.am ++++ b/daemon/Makefile.am +@@ -1,47 +1,48 @@ + NULL = + + AM_CPPFLAGS = \ + -I. \ + -I.. \ + -I$(top_srcdir)/common \ + -I$(top_srcdir)/pam-extensions \ + -I$(top_builddir)/common \ + -DBINDIR=\"$(bindir)\" \ + -DDATADIR=\"$(datadir)\" \ + -DDMCONFDIR=\"$(dmconfdir)\" \ + -DGDMCONFDIR=\"$(gdmconfdir)\" \ + -DLIBDIR=\"$(libdir)\" \ + -DLIBEXECDIR=\"$(libexecdir)\" \ + -DLOCALSTATEDIR=\"$(localstatedir)\" \ + -DLOGDIR=\"$(logdir)\" \ + -DSBINDIR=\"$(sbindir)\" \ ++ -DSYSCONFDIR=\"$(sysconfdir)\" \ + -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ + -DGDM_RUN_DIR=\"$(GDM_RUN_DIR)\" \ + -DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \ + -DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \ + -DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \ + -DGDM_SESSION_DEFAULT_PATH=\"$(GDM_SESSION_DEFAULT_PATH)\" \ + $(DISABLE_DEPRECATED_CFLAGS) \ + $(DAEMON_CFLAGS) \ + $(XLIB_CFLAGS) \ + $(WARN_CFLAGS) \ + $(DEBUG_CFLAGS) \ + $(SYSTEMD_CFLAGS) \ + $(JOURNALD_CFLAGS) \ + $(LIBSELINUX_CFLAGS) \ + -DLANG_CONFIG_FILE=\"$(LANG_CONFIG_FILE)\" \ + $(NULL) + + BUILT_SOURCES = \ + gdm-display-glue.h \ + gdm-manager-glue.h \ + gdm-local-display-glue.h \ + gdm-local-display-factory-glue.h \ + gdm-session-glue.h \ + gdm-session-worker-glue.h \ + gdm-session-enum-types.h \ + $(NULL) + + gdm-session-enum-types.h: gdm-session-enum-types.h.in gdm-session.h + $(AM_V_GEN) glib-mkenums --template $^ > $@ + +diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c +index 6a3984a9..30723da0 100644 +--- a/daemon/gdm-display.c ++++ b/daemon/gdm-display.c +@@ -1522,100 +1522,129 @@ kernel_cmdline_initial_setup_force_state (gboolean *force_state) + GError *error = NULL; + gchar *contents = NULL; + gchar *setup_argument = NULL; + + g_return_val_if_fail (force_state != NULL, FALSE); + + if (!g_file_get_contents ("/proc/cmdline", &contents, NULL, &error)) { + g_debug ("GdmDisplay: Could not check kernel parameters, not forcing initial setup: %s", + error->message); + g_clear_error (&error); + return FALSE; + } + + g_debug ("GdmDisplay: Checking kernel command buffer %s", contents); + + if (!kernel_cmdline_initial_setup_argument (contents, &setup_argument, &error)) { + g_debug ("GdmDisplay: Failed to read kernel commandline: %s", error->message); + g_clear_pointer (&contents, g_free); + return FALSE; + } + + g_clear_pointer (&contents, g_free); + + /* Poor-man's check for truthy or falsey values */ + *force_state = setup_argument[0] == '1'; + + g_free (setup_argument); + return TRUE; + } + ++static gboolean ++initial_setup_disabled_by_anaconda (void) ++{ ++ GKeyFile *key_file; ++ const gchar *file_name = SYSCONFDIR "/sysconfig/anaconda"; ++ gboolean disabled = FALSE; ++ GError *error = NULL; ++ ++ key_file = g_key_file_new (); ++ if (!g_key_file_load_from_file (key_file, file_name, G_KEY_FILE_NONE, &error)) { ++ if (!g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT) && ++ !g_error_matches (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_NOT_FOUND)) { ++ g_warning ("Could not read %s: %s", file_name, error->message); ++ } ++ g_error_free (error); ++ goto out; ++ } ++ ++ disabled = g_key_file_get_boolean (key_file, "General", ++ "post_install_tools_disabled", NULL); ++ out: ++ g_key_file_unref (key_file); ++ return disabled; ++} ++ + static gboolean + wants_initial_setup (GdmDisplay *self) + { + gboolean enabled = FALSE; + gboolean forced = FALSE; + + if (already_done_initial_setup_on_this_boot ()) { + return FALSE; + } + + if (kernel_cmdline_initial_setup_force_state (&forced)) { + if (forced) { + g_debug ("GdmDisplay: Forcing gnome-initial-setup"); + return TRUE; + } + + g_debug ("GdmDisplay: Forceing no gnome-initial-setup"); + return FALSE; + } + + /* don't run initial-setup on remote displays + */ + if (!self->priv->is_local) { + return FALSE; + } + + /* don't run if the system has existing users */ + if (self->priv->have_existing_user_accounts) { + return FALSE; + } + + /* don't run if initial-setup is unavailable */ + if (!can_create_environment ("gnome-initial-setup")) { + return FALSE; + } + + if (!gdm_settings_direct_get_boolean (GDM_KEY_INITIAL_SETUP_ENABLE, &enabled)) { + return FALSE; + } + ++ if (initial_setup_disabled_by_anaconda ()) { ++ return FALSE; ++ } ++ + return enabled; + } + + void + gdm_display_start_greeter_session (GdmDisplay *self) + { + GdmSession *session; + char *display_name; + char *seat_id; + char *hostname; + char *auth_file = NULL; + + g_return_if_fail (g_strcmp0 (self->priv->session_class, "greeter") == 0); + + g_debug ("GdmDisplay: Running greeter"); + + display_name = NULL; + seat_id = NULL; + hostname = NULL; + + g_object_get (self, + "x11-display-name", &display_name, + "seat-id", &seat_id, + "remote-hostname", &hostname, + NULL); + if (self->priv->access_file != NULL) { + auth_file = gdm_display_access_file_get_path (self->priv->access_file); + } + + g_debug ("GdmDisplay: Creating greeter for %s %s", display_name, hostname); +-- +2.14.2 + diff --git a/SOURCES/0001-Revert-data-Add-gnome-login.session.patch b/SOURCES/0001-Revert-data-Add-gnome-login.session.patch new file mode 100644 index 0000000..bf8ec16 --- /dev/null +++ b/SOURCES/0001-Revert-data-Add-gnome-login.session.patch @@ -0,0 +1,212 @@ +From c35c3fa71f3ecdc4c12d4b90200e41c9ea658366 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Fri, 13 Oct 2017 13:56:22 -0400 +Subject: [PATCH] Revert "data: Add gnome-login.session" + +This reverts commit 1073f0e792d9d5bf9d53bddb6e51177c8024c2b3. +--- + data/Makefile.am | 12 ------------ + data/dconf/defaults/00-upstream-settings | 2 +- + data/gnome-login.session.in | 3 --- + 3 files changed, 1 insertion(+), 16 deletions(-) + delete mode 100644 data/gnome-login.session.in + +diff --git a/data/Makefile.am b/data/Makefile.am +index a47e7900..f69ec12d 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -56,74 +56,63 @@ gsettings_SCHEMAS = org.gnome.login-screen.gschema.xml + + schemasdir = $(pkgdatadir) + schemas_in_files = gdm.schemas.in + schemas_DATA = $(schemas_in_files:.schemas.in=.schemas) + + gdm.schemas.in: $(srcdir)/gdm.schemas.in.in + sed -e 's,[@]GDMPREFETCHCMD[@],$(GDMPREFETCHCMD),g' \ + -e 's,[@]GDM_CUSTOM_CONF[@],$(GDM_CUSTOM_CONF),g' \ + -e 's,[@]GDM_USER_PATH[@],$(GDM_USER_PATH),g' \ + -e 's,[@]GDM_USERNAME[@],$(GDM_USERNAME),g' \ + -e 's,[@]GDM_GROUPNAME[@],$(GDM_GROUPNAME),g' \ + -e 's,[@]HALT_COMMAND[@],$(HALT_COMMAND),g' \ + -e 's,[@]REBOOT_COMMAND[@],$(REBOOT_COMMAND),g' \ + -e 's,[@]SOUND_PROGRAM[@],$(SOUND_PROGRAM),g' \ + -e 's,[@]SUSPEND_COMMAND[@],$(SUSPEND_COMMAND),g' \ + -e 's,[@]XEVIE_OPTION[@],$(XEVIE_OPTION),g' \ + -e 's,[@]ALWAYS_RESTART_SERVER[@],$(ALWAYS_RESTART_SERVER),g' \ + -e 's,[@]X_CONFIG_OPTIONS[@],$(X_CONFIG_OPTIONS),g' \ + -e 's,[@]X_SERVER[@],$(X_SERVER),g' \ + -e 's,[@]GDM_RBAC_SYSCMD_KEYS[@],$(GDM_RBAC_SYSCMD_KEYS),g' \ + -e 's,[@]datadir[@],$(datadir),g' \ + -e 's,[@]gdmconfdir[@],$(gdmconfdir),g' \ + -e 's,[@]libdir[@],$(libdir),g' \ + -e 's,[@]libexecdir[@],$(libexecdir),g' \ + -e 's,[@]gdmlocaledir[@],$(gdmlocaledir),g' \ + -e 's,[@]logdir[@],$(logdir),g' \ + -e 's,[@]pixmapdir[@],$(pixmapdir),g' \ + -e 's,[@]sbindir[@],$(sbindir),g' \ + <$(srcdir)/gdm.schemas.in.in >gdm.schemas.in + +- +-EXTRA_DIST += gnome-login.session.in +- +-gnome-login.session: $(srcdir)/gnome-login.session.in +- sed -e 's,[@]libexecdir[@],$(libexecdir),g' \ +- -e 's,[@]CHECK_ACCELERATED_DIR[@],$(CHECK_ACCELERATED_DIR),g' \ +- < $< > $@.tmp && mv $@.tmp $@ +- + localealiasdir = $(datadir)/gdm + localealias_DATA = locale.alias + +-sessiondir = $(datadir)/gnome-session/sessions +-session_DATA = gnome-login.session +- + pam_redhat_files = \ + pam-redhat/gdm-autologin.pam \ + pam-redhat/gdm-launch-environment.pam \ + pam-redhat/gdm-fingerprint.pam \ + pam-redhat/gdm-smartcard.pam \ + pam-redhat/gdm-password.pam \ + pam-redhat/gdm-pin.pam \ + $(NULL) + EXTRA_DIST += $(pam_redhat_files) + + pam_openembedded_files = pam-openembedded/gdm-password.pam \ + pam-openembedded/gdm-autologin.pam \ + pam-openembedded/gdm-launch-environment.pam \ + pam-openembedded/gdm-pin.pam \ + $(NULL) + EXTRA_DIST += $(pam_openembedded_files) + + pam_exherbo_files = pam-exherbo/gdm-autologin.pam \ + pam-exherbo/gdm-launch-environment.pam \ + pam-exherbo/gdm-fingerprint.pam \ + pam-exherbo/gdm-smartcard.pam \ + pam-exherbo/gdm-password.pam \ + pam-exherbo/gdm-pin.pam \ + $(NULL) + EXTRA_DIST += $(pam_exherbo_files) + + pam_lfs_files = \ + pam-lfs/gdm-autologin.pam \ + pam-lfs/gdm-launch-environment.pam \ + pam-lfs/gdm-fingerprint.pam \ +@@ -164,61 +153,60 @@ udevrules_DATA = 61-gdm.rules + EXTRA_DIST += \ + $(dconf_db_files) \ + $(schemas_in_files) \ + $(schemas_DATA) \ + $(dbusconf_in_files) \ + $(localealias_DATA) \ + $(udevrules_DATA) \ + gdm.schemas.in.in \ + gdm.conf-custom.in \ + Xsession.in \ + Init.in \ + PreSession.in \ + PostSession.in \ + PostLogin \ + org.gnome.login-screen.gschema.xml.in \ + $(NULL) + + CLEANFILES = \ + Xsession \ + gdm.conf-custom \ + Init \ + PreSession \ + PostSession \ + $(gsettings_SCHEMAS) \ + greeter-dconf-defaults \ + $(NULL) + + DISTCLEANFILES = \ + $(dbusconf_DATA) \ + gdm.schemas \ +- gnome-login.session \ + $(NULL) + + MAINTAINERCLEANFILES = \ + *~ \ + Makefile.in + + systemdsystemunit = + + gdm.service: $(srcdir)/gdm.service.in + $(AM_V_GEN)sed \ + -e 's,[@]sbindir[@],$(sbindir),g' \ + -e 's,[@]GDM_INITIAL_VT[@],$(GDM_INITIAL_VT),g' \ + -e 's,[@]LANG_CONFIG_FILE[@],$(LANG_CONFIG_FILE),g' \ + -e 's,[@]PLYMOUTH_QUIT_SERVICE[@],$(PLYMOUTH_QUIT_SERVICE),g' \ + -e 's, *$$,,g' \ + < $< > $@ + systemdsystemunit += gdm.service + CLEANFILES += gdm.service + + if INSTALL_SYSTEMD_UNITS + systemdsystemunit_DATA=$(systemdsystemunit) + systemdsystemunitdir=$(SYSTEMD_SYSTEM_UNIT_DIR) + endif + + Xsession_files = + if ENABLE_GDM_XSESSION + + Xsession: $(srcdir)/Xsession.in + sed -e 's,[@]XSESSION_SHELL[@],$(XSESSION_SHELL),g' \ + -e 's,[@]libexecdir[@],$(libexecdir),g' \ +diff --git a/data/dconf/defaults/00-upstream-settings b/data/dconf/defaults/00-upstream-settings +index 603903e6..f109e0a9 100644 +--- a/data/dconf/defaults/00-upstream-settings ++++ b/data/dconf/defaults/00-upstream-settings +@@ -1,40 +1,40 @@ + # This file is part of the GDM packaging and should not be changed. + # + # Instead create your own file next to it with a higher numbered prefix, + # and run + # + # dconf update + # + + [org/gnome/desktop/session] +-session-name='gnome-login' ++session-name='gnome' + + [org/gnome/desktop/a11y] + always-show-universal-access-status=true + + [org/gnome/desktop/background] + show-desktop-icons=false + + [org/gnome/desktop/default-applications/terminal] + exec='true' + + [org/gnome/desktop/lockdown] + disable-application-handlers=true + disable-command-line=true + disable-lock-screen=true + disable-log-out=false + disable-printing=true + disable-print-setup=true + disable-save-to-disk=true + disable-user-switching=true + + [org/gnome/desktop/sound] + event-sounds=true + + [org/gnome/settings-daemon/plugins/media-keys] + calculator='' + eject='' + email='' + help='' + home='' + media='' +diff --git a/data/gnome-login.session.in b/data/gnome-login.session.in +deleted file mode 100644 +index fbc10580..00000000 +--- a/data/gnome-login.session.in ++++ /dev/null +@@ -1,3 +0,0 @@ +-[GNOME Session] +-Name=Display Manager +-RequiredComponents=org.gnome.Shell;org.gnome.SettingsDaemon.A11ySettings;org.gnome.SettingsDaemon.Clipboard;org.gnome.SettingsDaemon.Color;org.gnome.SettingsDaemon.Datetime;org.gnome.SettingsDaemon.Housekeeping;org.gnome.SettingsDaemon.Keyboard;org.gnome.SettingsDaemon.MediaKeys;org.gnome.SettingsDaemon.Mouse;org.gnome.SettingsDaemon.Power;org.gnome.SettingsDaemon.PrintNotifications;org.gnome.SettingsDaemon.Rfkill;org.gnome.SettingsDaemon.ScreensaverProxy;org.gnome.SettingsDaemon.Sharing;org.gnome.SettingsDaemon.Smartcard;org.gnome.SettingsDaemon.Sound;org.gnome.SettingsDaemon.Wacom;org.gnome.SettingsDaemon.XSettings; +-- +1.8.3.1 + diff --git a/SOURCES/0001-Revert-gdm-sessions-force-a-session-bus-for-non-seat.patch b/SOURCES/0001-Revert-gdm-sessions-force-a-session-bus-for-non-seat.patch new file mode 100644 index 0000000..eb2f277 --- /dev/null +++ b/SOURCES/0001-Revert-gdm-sessions-force-a-session-bus-for-non-seat.patch @@ -0,0 +1,86 @@ +From 5c86f9731ed715bcf603c9dd93dced002f11b996 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Tue, 17 Oct 2017 10:06:22 -0400 +Subject: [PATCH] Revert "gdm-sessions: force a session bus for non-seat0 + session" + +This reverts commit 2b52d8933c8ab38e7ee83318da2363d00d8c5581. +--- + daemon/gdm-session.c | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c +index 3e71ad2f..3a1b7f23 100644 +--- a/daemon/gdm-session.c ++++ b/daemon/gdm-session.c +@@ -2870,66 +2870,61 @@ gdm_session_start_session (GdmSession *self, + allow_remote_connections = TRUE; + } + + if (run_launcher) { + if (is_x11) { + program = g_strdup_printf (LIBEXECDIR "/gdm-x-session %s %s\"%s\"", + run_xsession_script? "--run-script " : "", + allow_remote_connections? "--allow-remote-connections " : "", + command); + } else { + program = g_strdup_printf (LIBEXECDIR "/gdm-wayland-session \"%s\"", + command); + } + } else if (run_xsession_script) { + program = g_strdup_printf (GDMCONFDIR "/Xsession \"%s\"", command); + } else { + program = g_strdup (command); + } + + g_free (command); + } else { + if (run_launcher) { + if (is_x11) { + program = g_strdup_printf (LIBEXECDIR "/gdm-x-session \"%s\"", + self->priv->selected_program); + } else { + program = g_strdup_printf (LIBEXECDIR "/gdm-wayland-session \"%s\"", + self->priv->selected_program); + } + } else { +- if (g_strcmp0 (self->priv->display_seat_id, "seat0") != 0) { +- program = g_strdup_printf ("dbus-run-session -- %s", +- self->priv->selected_program); +- } else { +- program = g_strdup (self->priv->selected_program); +- } ++ program = g_strdup (self->priv->selected_program); + } + } + + set_up_session_environment (self); + send_environment (self, conversation); + + gdm_dbus_worker_call_start_program (conversation->worker_proxy, + program, + conversation->worker_cancellable, + (GAsyncReadyCallback) on_start_program_cb, + conversation); + g_free (program); + } + + static void + stop_all_conversations (GdmSession *self) + { + stop_all_other_conversations (self, NULL, TRUE); + } + + static void + do_reset (GdmSession *self) + { + stop_all_conversations (self); + + g_list_free_full (self->priv->pending_worker_connections, g_object_unref); + self->priv->pending_worker_connections = NULL; + + g_free (self->priv->selected_user); + self->priv->selected_user = NULL; +-- +2.14.2 + diff --git a/SOURCES/0001-Revert-session-forward-is-initial-from-display-to-wo.patch b/SOURCES/0001-Revert-session-forward-is-initial-from-display-to-wo.patch new file mode 100644 index 0000000..b5d6af6 --- /dev/null +++ b/SOURCES/0001-Revert-session-forward-is-initial-from-display-to-wo.patch @@ -0,0 +1,280 @@ +From 0522f061f30baeecff958e0deee89934baff3776 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Fri, 12 May 2017 10:11:09 -0400 +Subject: [PATCH] Revert "session: forward is-initial from display to worker" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This reverts commit 7a4e34049c79e907d1a027390c5d3a8dcdc11977. + +It breaks login screen until reboot on 7.3→7.4 upgrade. +--- + daemon/gdm-session-worker.c | 10 ++-------- + daemon/gdm-session-worker.xml | 3 --- + 2 files changed, 2 insertions(+), 11 deletions(-) + +diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c +index 34b3bf7f..10ecccb0 100644 +--- a/daemon/gdm-session-worker.c ++++ b/daemon/gdm-session-worker.c +@@ -3033,166 +3033,160 @@ gdm_session_worker_handle_initialize (GdmDBusWorker *object, + + if (worker->priv->username) { + wait_for_settings = !gdm_session_settings_load (worker->priv->user_settings, + worker->priv->username); + } + } + + if (wait_for_settings) { + /* Load settings from accounts daemon before continuing + */ + g_signal_connect (G_OBJECT (worker->priv->user_settings), + "notify::is-loaded", + G_CALLBACK (on_settings_is_loaded_changed), + worker); + } else { + queue_state_change (worker); + } + + return TRUE; + } + + static gboolean + gdm_session_worker_handle_setup (GdmDBusWorker *object, + GDBusMethodInvocation *invocation, + const char *service, + const char *x11_display_name, + const char *x11_authority_file, + const char *console, + const char *seat_id, + const char *hostname, +- gboolean display_is_local, +- gboolean display_is_initial) ++ gboolean display_is_local) + { + GdmSessionWorker *worker = GDM_SESSION_WORKER (object); + validate_and_queue_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE); + + worker->priv->service = g_strdup (service); + worker->priv->x11_display_name = g_strdup (x11_display_name); + worker->priv->x11_authority_file = g_strdup (x11_authority_file); + worker->priv->display_device = g_strdup (console); + worker->priv->display_seat_id = g_strdup (seat_id); + worker->priv->hostname = g_strdup (hostname); + worker->priv->display_is_local = display_is_local; +- worker->priv->display_is_initial = display_is_initial; + worker->priv->username = NULL; + + g_signal_connect_swapped (worker->priv->user_settings, + "notify::language-name", + G_CALLBACK (on_saved_language_name_read), + worker); + + g_signal_connect_swapped (worker->priv->user_settings, + "notify::session-name", + G_CALLBACK (on_saved_session_name_read), + worker); + return TRUE; + } + + static gboolean + gdm_session_worker_handle_setup_for_user (GdmDBusWorker *object, + GDBusMethodInvocation *invocation, + const char *service, + const char *username, + const char *x11_display_name, + const char *x11_authority_file, + const char *console, + const char *seat_id, + const char *hostname, +- gboolean display_is_local, +- gboolean display_is_initial) ++ gboolean display_is_local) + { + GdmSessionWorker *worker = GDM_SESSION_WORKER (object); + + if (!validate_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE)) + return TRUE; + + worker->priv->service = g_strdup (service); + worker->priv->x11_display_name = g_strdup (x11_display_name); + worker->priv->x11_authority_file = g_strdup (x11_authority_file); + worker->priv->display_device = g_strdup (console); + worker->priv->display_seat_id = g_strdup (seat_id); + worker->priv->hostname = g_strdup (hostname); + worker->priv->display_is_local = display_is_local; +- worker->priv->display_is_initial = display_is_initial; + worker->priv->username = g_strdup (username); + + g_signal_connect_swapped (worker->priv->user_settings, + "notify::language-name", + G_CALLBACK (on_saved_language_name_read), + worker); + + g_signal_connect_swapped (worker->priv->user_settings, + "notify::session-name", + G_CALLBACK (on_saved_session_name_read), + worker); + + /* Load settings from accounts daemon before continuing + */ + worker->priv->pending_invocation = invocation; + if (gdm_session_settings_load (worker->priv->user_settings, username)) { + queue_state_change (worker); + } else { + g_signal_connect (G_OBJECT (worker->priv->user_settings), + "notify::is-loaded", + G_CALLBACK (on_settings_is_loaded_changed), + worker); + } + + return TRUE; + } + + static gboolean + gdm_session_worker_handle_setup_for_program (GdmDBusWorker *object, + GDBusMethodInvocation *invocation, + const char *service, + const char *username, + const char *x11_display_name, + const char *x11_authority_file, + const char *console, + const char *seat_id, + const char *hostname, + gboolean display_is_local, +- gboolean display_is_initial, + const char *log_file) + { + GdmSessionWorker *worker = GDM_SESSION_WORKER (object); + validate_and_queue_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE); + + worker->priv->service = g_strdup (service); + worker->priv->x11_display_name = g_strdup (x11_display_name); + worker->priv->x11_authority_file = g_strdup (x11_authority_file); + worker->priv->display_device = g_strdup (console); + worker->priv->display_seat_id = g_strdup (seat_id); + worker->priv->hostname = g_strdup (hostname); + worker->priv->display_is_local = display_is_local; +- worker->priv->display_is_initial = display_is_initial; + worker->priv->username = g_strdup (username); + worker->priv->log_file = g_strdup (log_file); + worker->priv->is_program_session = TRUE; + + return TRUE; + } + + static gboolean + gdm_session_worker_handle_start_program (GdmDBusWorker *object, + GDBusMethodInvocation *invocation, + const char *text) + { + GdmSessionWorker *worker = GDM_SESSION_WORKER (object); + GError *parse_error = NULL; + validate_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SESSION_STARTED); + + if (worker->priv->is_reauth_session) { + g_dbus_method_invocation_return_error (invocation, + GDM_SESSION_WORKER_ERROR, + GDM_SESSION_WORKER_ERROR_IN_REAUTH_SESSION, + "Cannot start a program while in a reauth session"); + return TRUE; + } + + g_debug ("GdmSessionWorker: start program: %s", text); + + g_clear_pointer (&worker->priv->arguments, (GDestroyNotify) g_strfreev); + if (! g_shell_parse_argv (text, NULL, &worker->priv->arguments, &parse_error)) { + g_dbus_method_invocation_take_error (invocation, parse_error); + return TRUE; +diff --git a/daemon/gdm-session-worker.xml b/daemon/gdm-session-worker.xml +index 4280fe09..bc055973 100644 +--- a/daemon/gdm-session-worker.xml ++++ b/daemon/gdm-session-worker.xml +@@ -8,83 +8,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +- + + + + + + + + + + +- + + + + + + + + + + +- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-- +2.14.2 + diff --git a/SOURCES/0001-configure-don-t-assume-x-server-defaults-to-local-on.patch b/SOURCES/0001-configure-don-t-assume-x-server-defaults-to-local-on.patch new file mode 100644 index 0000000..4ed8c8e --- /dev/null +++ b/SOURCES/0001-configure-don-t-assume-x-server-defaults-to-local-on.patch @@ -0,0 +1,86 @@ +From 56e545ff4c87685f50ee9c77e0faab0c44b4ee3c Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 3 Dec 2018 13:58:47 -0500 +Subject: [PATCH] configure: don't assume x server defaults to local only + +it doesn't in rhel. +--- + configure.ac | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 7ad55df84..4ed53027f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1243,68 +1243,60 @@ elif test -x /usr/X11R6/bin/X; then + X_PATH="/usr/X11R6/bin" + X_SERVER_PATH="/usr/X11R6/bin" + X_SERVER="/usr/X11R6/bin/X" + elif test -x /usr/bin/Xorg; then + X_PATH="/usr/bin" + X_SERVER_PATH="/usr/bin" + X_SERVER="/usr/bin/Xorg" + elif test -x /usr/X11/bin/X; then + X_PATH="/usr/X11/bin" + X_SERVER_PATH="/usr/X11/bin" + X_SERVER="/usr/X11/bin/X" + elif test -x /usr/openwin/bin/Xsun; then + # Do not add /usr/openwin/bin here because on Solaris you need + # /usr/openwin/bin in your PATH even if you are using the Xorg + # Xserver. We add this to the path below. + X_PATH="/usr/openwin/bin" + X_SERVER_PATH="/usr/openwin/bin" + X_SERVER="/usr/openwin/bin/Xsun" + elif test -x /opt/X11R6/bin/X; then + X_PATH="/opt/X11R6/bin" + X_SERVER_PATH="/opt/X11R6/bin" + X_SERVER="/opt/X11R6/bin/X" + else + # what to do, what to do, this is wrong, but this just sets the + # defaults, perhaps this user is cross compiling or some such + X_PATH="/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin" + X_SERVER_PATH="/usr/bin" + X_SERVER="/usr/bin/X" + fi + +-dnl --------------------------------------------------------------------------- +-dnl - Check if Xorg is new enough to require '-listen tcp' (1.17) +-dnl --------------------------------------------------------------------------- +- +-if $PKG_CONFIG --atleast-version=1.17 xorg-server; then +- AC_DEFINE([HAVE_XSERVER_THAT_DEFAULTS_TO_LOCAL_ONLY], [], [XServer disables tcp access by default]) +-fi +- + dnl --------------------------------------------------------------------------- + dnl - Expand vars + dnl --------------------------------------------------------------------------- + + AS_AC_EXPAND(LOCALSTATEDIR, $localstatedir) + AS_AC_EXPAND(SYSCONFDIR, $sysconfdir) + AS_AC_EXPAND(DATADIR, $datadir) + AS_AC_EXPAND(BINDIR, $bindir) + AS_AC_EXPAND(SBINDIR, $sbindir) + AS_AC_EXPAND(LIBDIR, $libdir) + AS_AC_EXPAND(LIBEXECDIR, $libexecdir) + + dnl --------------------------------------------------------------------------- + dnl - runtime directory + dnl --------------------------------------------------------------------------- + + AC_ARG_WITH([run-dir], + AS_HELP_STRING([--with-run-dir=], + [runtime directory])) + + if ! test -z "$with_run_dir"; then + GDM_RUN_DIR=$with_run_dir + else + GDM_RUN_DIR=${localstatedir}/run/gdm + fi + + AC_SUBST([GDM_RUN_DIR]) + + dnl --------------------------------------------------------------------------- + dnl - PID file +-- +2.17.1 + diff --git a/SOURCES/0001-daemon-gdm-session-record.c-open-close-the-utmp-data.patch b/SOURCES/0001-daemon-gdm-session-record.c-open-close-the-utmp-data.patch new file mode 100644 index 0000000..c3b6a2c --- /dev/null +++ b/SOURCES/0001-daemon-gdm-session-record.c-open-close-the-utmp-data.patch @@ -0,0 +1,136 @@ +From 086d68f24d984fb48e44aa16aa815825cd5ed0bc Mon Sep 17 00:00:00 2001 +From: Jason Pleau +Date: Wed, 30 May 2018 21:48:22 -0400 +Subject: [PATCH] daemon/gdm-session-record.c: open/close the utmp database + +pututxline() was used without first opening the utxmp database and +without closing it, preventing the logout entry from being fully +committed. + +This caused the number of logged-in users to increment after each login, +as logging out did not correctly remove the user login record from utmp. + +This commit wraps pututxline() between setutxent() and endutxent(), +making sure that the login/logout operation are fully flushed. + +Fixes #381 +--- + daemon/gdm-session-record.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/daemon/gdm-session-record.c b/daemon/gdm-session-record.c +index 487f10047..d2df58873 100644 +--- a/daemon/gdm-session-record.c ++++ b/daemon/gdm-session-record.c +@@ -186,104 +186,108 @@ gdm_session_record_login (GPid session_pid, + + g_debug ("Writing login record"); + + #if defined(HAVE_UT_UT_TYPE) + session_record.ut_type = USER_PROCESS; + g_debug ("using ut_type USER_PROCESS"); + #endif + + record_set_timestamp (&session_record); + record_set_pid (&session_record, session_pid); + record_set_host (&session_record, x11_display_name, host_name); + record_set_line (&session_record, display_device, x11_display_name); + + /* Handle wtmp */ + g_debug ("Writing wtmp session record to " GDM_NEW_SESSION_RECORDS_FILE); + #if defined(HAVE_UPDWTMPX) + updwtmpx (GDM_NEW_SESSION_RECORDS_FILE, &session_record); + #elif defined(HAVE_UPDWTMP) + updwtmp (GDM_NEW_SESSION_RECORDS_FILE, &session_record); + #elif defined(HAVE_LOGWTMP) && defined(HAVE_UT_UT_HOST) + #if defined(HAVE_UT_UT_USER) + logwtmp (session_record.ut_line, session_record.ut_user, session_record.ut_host); + #elif defined(HAVE_UT_UT_NAME) + logwtmp (session_record.ut_line, session_record.ut_name, session_record.ut_host); + #endif + #endif + + /* Handle utmp */ + #if defined(HAVE_GETUTXENT) + g_debug ("Adding or updating utmp record for login"); ++ setutxent(); + pututxline (&session_record); ++ endutxent(); + #elif defined(HAVE_LOGIN) + login (&session_record); + #endif + } + + void + gdm_session_record_logout (GPid session_pid, + const char *user_name, + const char *host_name, + const char *x11_display_name, + const char *display_device) + { + UTMP session_record = { 0 }; + + if (x11_display_name == NULL) + x11_display_name = display_device; + + g_debug ("Writing logout record"); + + #if defined(HAVE_UT_UT_TYPE) + session_record.ut_type = DEAD_PROCESS; + g_debug ("using ut_type DEAD_PROCESS"); + #endif + + record_set_timestamp (&session_record); + record_set_pid (&session_record, session_pid); + record_set_host (&session_record, x11_display_name, host_name); + record_set_line (&session_record, display_device, x11_display_name); + + /* Handle wtmp */ + g_debug ("Writing wtmp logout record to " GDM_NEW_SESSION_RECORDS_FILE); + #if defined(HAVE_UPDWTMPX) + updwtmpx (GDM_NEW_SESSION_RECORDS_FILE, &session_record); + #elif defined (HAVE_UPDWTMP) + updwtmp (GDM_NEW_SESSION_RECORDS_FILE, &session_record); + #elif defined(HAVE_LOGWTMP) + logwtmp (session_record.ut_line, "", ""); + #endif + + /* Handle utmp */ + #if defined(HAVE_GETUTXENT) + g_debug ("Adding or updating utmp record for logout"); ++ setutxent(); + pututxline (&session_record); ++ endutxent(); + #elif defined(HAVE_LOGOUT) + logout (session_record.ut_line); + #endif + } + + void + gdm_session_record_failed (GPid session_pid, + const char *user_name, + const char *host_name, + const char *x11_display_name, + const char *display_device) + { + UTMP session_record = { 0 }; + + if (x11_display_name == NULL) + x11_display_name = display_device; + + record_set_username (&session_record, user_name); + + g_debug ("Writing failed session attempt record"); + + #if defined(HAVE_UT_UT_TYPE) + session_record.ut_type = USER_PROCESS; + g_debug ("using ut_type USER_PROCESS"); + #endif + + record_set_timestamp (&session_record); + record_set_pid (&session_record, session_pid); + record_set_host (&session_record, x11_display_name, host_name); + record_set_line (&session_record, display_device, x11_display_name); +-- +2.17.1 + diff --git a/SOURCES/0001-data-change-cirrus-blacklist-to-use-gdm-disable-wayl.patch b/SOURCES/0001-data-change-cirrus-blacklist-to-use-gdm-disable-wayl.patch new file mode 100644 index 0000000..d892e74 --- /dev/null +++ b/SOURCES/0001-data-change-cirrus-blacklist-to-use-gdm-disable-wayl.patch @@ -0,0 +1,112 @@ +From a9b82ca4a87315235924317c0fc48324a8b7cb9f Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 21 May 2018 11:13:31 -0400 +Subject: [PATCH] data: change cirrus blacklist to use gdm-disable-wayland + +Now that we have a gdm-disable-wayland binary for disabling +wayland at boot, we should use it. + +This commit changes the cirrus udev rule to use gdm-disable-wayland, +rather than running sh and printf. + +https://bugzilla.gnome.org/show_bug.cgi?id=796315 + + +(cherry picked from commit a913eea70342411247e770a91b75dd800941bb6e) +--- + data/61-gdm.rules | 2 -- + data/61-gdm.rules.in | 2 ++ + data/Makefile.am | 5 +++++ + 3 files changed, 7 insertions(+), 2 deletions(-) + delete mode 100644 data/61-gdm.rules + create mode 100644 data/61-gdm.rules.in + +diff --git a/data/61-gdm.rules b/data/61-gdm.rules +deleted file mode 100644 +index 5ffa8b8a0..000000000 +--- a/data/61-gdm.rules ++++ /dev/null +@@ -1,2 +0,0 @@ +-# disable Wayland on Cirrus chipsets +-ATTR{vendor}=="0x1013", ATTR{device}=="0x00b8", ATTR{subsystem_vendor}=="0x1af4", ATTR{subsystem_device}=="0x1100", RUN+="/bin/sh -c '/bin/mkdir /run/gdm ; /usr/bin/printf \"[daemon]\nWaylandEnable=false\" >> /run/gdm/custom.conf'" +diff --git a/data/61-gdm.rules.in b/data/61-gdm.rules.in +new file mode 100644 +index 000000000..de8e17903 +--- /dev/null ++++ b/data/61-gdm.rules.in +@@ -0,0 +1,2 @@ ++# disable Wayland on Cirrus chipsets ++ATTR{vendor}=="0x1013", ATTR{device}=="0x00b8", ATTR{subsystem_vendor}=="0x1af4", ATTR{subsystem_device}=="0x1100", RUN+="@libexecdir@/gdm-disable-wayland" +diff --git a/data/Makefile.am b/data/Makefile.am +index a47e7900f..192dfa052 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -134,60 +134,65 @@ pam_lfs_files = \ + EXTRA_DIST += $(pam_lfs_files) + + pam_arch_files = pam-arch/gdm-autologin.pam \ + pam-arch/gdm-launch-environment.pam \ + pam-arch/gdm-fingerprint.pam \ + pam-arch/gdm-smartcard.pam \ + pam-arch/gdm-password.pam \ + pam-arch/gdm-pin.pam \ + $(NULL) + EXTRA_DIST += $(pam_arch_files) + + if ENABLE_REDHAT_PAM_CONFIG + pam_files = $(pam_redhat_files) + endif + if ENABLE_OPENEMBEDDED_PAM_CONFIG + pam_files = $(pam_openembedded_files) + endif + if ENABLE_EXHERBO_PAM_CONFIG + pam_files = $(pam_exherbo_files) + endif + if ENABLE_LFS_PAM_CONFIG + pam_files = $(pam_lfs_files) + endif + if ENABLE_ARCH_PAM_CONFIG + pam_files = $(pam_arch_files) + endif + + udevrulesdir = $(prefix)/lib/udev/rules.d + udevrules_DATA = 61-gdm.rules + ++EXTRA_DIST += $(srcdir)/61-gdm.rules.in ++61-gdm.rules: $(srcdir)/61-gdm.rules.in ++ sed -e 's,[@]libexecdir[@],$(libexecdir),g' \ ++ < $< > $@.tmp && mv $@.tmp $@ ++ + EXTRA_DIST += \ + $(dconf_db_files) \ + $(schemas_in_files) \ + $(schemas_DATA) \ + $(dbusconf_in_files) \ + $(localealias_DATA) \ + $(udevrules_DATA) \ + gdm.schemas.in.in \ + gdm.conf-custom.in \ + Xsession.in \ + Init.in \ + PreSession.in \ + PostSession.in \ + PostLogin \ + org.gnome.login-screen.gschema.xml.in \ + $(NULL) + + CLEANFILES = \ + Xsession \ + gdm.conf-custom \ + Init \ + PreSession \ + PostSession \ + $(gsettings_SCHEMAS) \ + greeter-dconf-defaults \ + $(NULL) + + DISTCLEANFILES = \ + $(dbusconf_DATA) \ + gdm.schemas \ +-- +2.17.1 + diff --git a/SOURCES/0001-data-drop-pam_gdm-reintroduce-pam_env-postlogin.patch b/SOURCES/0001-data-drop-pam_gdm-reintroduce-pam_env-postlogin.patch new file mode 100644 index 0000000..25913bd --- /dev/null +++ b/SOURCES/0001-data-drop-pam_gdm-reintroduce-pam_env-postlogin.patch @@ -0,0 +1,45 @@ +From 6effb1671a917adb3ed8f77f5e13324e8b455c32 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Tue, 30 Jan 2018 10:32:08 -0500 +Subject: [PATCH] data: drop pam_gdm, reintroduce pam_env/postlogin + +The current upstream pam configuration upstream doesn't really +make sense in RHEL. + +systemd doesn't handle /etc/environment on its own in RHEL and it +doesn't populate the kernel keyring with disk encrypt passwords, +so pam_gdm is not useful. + +This commit restores the pam configuration to something closer to +what was shipped in 7.3 +--- + data/pam-redhat/gdm-autologin.pam | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/data/pam-redhat/gdm-autologin.pam b/data/pam-redhat/gdm-autologin.pam +index c31ff27a..aa99e1b0 100644 +--- a/data/pam-redhat/gdm-autologin.pam ++++ b/data/pam-redhat/gdm-autologin.pam +@@ -1,16 +1,15 @@ + #%PAM-1.0 +-auth [success=ok default=1] pam_gdm.so +--auth optional pam_gnome_keyring.so +-auth sufficient pam_permit.so ++auth required pam_env.so ++auth required pam_permit.so ++auth include postlogin + account required pam_nologin.so + account include system-auth + password include system-auth + session required pam_selinux.so close + session required pam_loginuid.so + session optional pam_console.so + session required pam_selinux.so open + session optional pam_keyinit.so force revoke + session required pam_namespace.so + session include system-auth +-session optional pam_gnome_keyring.so auto_start + session include postlogin +-- +2.14.3 + diff --git a/SOURCES/0001-gdm.conf-custom.in-strip-out-reference-to-wayland.patch b/SOURCES/0001-gdm.conf-custom.in-strip-out-reference-to-wayland.patch new file mode 100644 index 0000000..9ec89f9 --- /dev/null +++ b/SOURCES/0001-gdm.conf-custom.in-strip-out-reference-to-wayland.patch @@ -0,0 +1,33 @@ +From e21c8b8fcdd3365ac19ae4024c0f615526358072 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 16 Mar 2017 10:52:41 -0400 +Subject: [PATCH] gdm.conf-custom.in: strip out reference to wayland + +--- + data/gdm.conf-custom.in | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/data/gdm.conf-custom.in b/data/gdm.conf-custom.in +index 67ebca39..73d0b5f4 100644 +--- a/data/gdm.conf-custom.in ++++ b/data/gdm.conf-custom.in +@@ -1,16 +1,14 @@ + # GDM configuration storage + + [daemon] +-# Uncoment the line below to force the login screen to use Xorg +-#WaylandEnable=false + + [security] + + [xdmcp] + + [chooser] + + [debug] + # Uncomment the line below to turn on debugging + #Enable=true + +-- +2.14.2 + diff --git a/SOURCES/0001-libgdm-fix-pointer-boolean-task-confusion.patch b/SOURCES/0001-libgdm-fix-pointer-boolean-task-confusion.patch new file mode 100644 index 0000000..084e2ae --- /dev/null +++ b/SOURCES/0001-libgdm-fix-pointer-boolean-task-confusion.patch @@ -0,0 +1,159 @@ +From 18770aa5b3644abac1879d4eb754351e24072bc2 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 14 May 2018 15:49:50 -0400 +Subject: [PATCH] libgdm: fix pointer/boolean task confusion + +The manager fetching code in GdmClient treats its task +return value as boolean, but it's actually a pointer (the manager) + +This commit corrects the confusion. + +https://bugzilla.gnome.org/show_bug.cgi?id=795940 +--- + libgdm/gdm-client.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/libgdm/gdm-client.c b/libgdm/gdm-client.c +index 294f4f4d0..58ede0aab 100644 +--- a/libgdm/gdm-client.c ++++ b/libgdm/gdm-client.c +@@ -364,65 +364,67 @@ on_reauthentication_channel_opened (GdmManager *manager, + GCancellable *cancellable; + char *address; + GError *error; + + error = NULL; + if (!gdm_manager_call_open_reauthentication_channel_finish (manager, + &address, + result, + &error)) { + g_task_return_error (task, error); + g_object_unref (task); + return; + } + + cancellable = g_task_get_cancellable (task); + g_dbus_connection_new_for_address (address, + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT, + NULL, + cancellable, + (GAsyncReadyCallback) + on_reauthentication_channel_connected, + task); + } + + static void + on_got_manager_for_reauthentication (GdmClient *client, + GAsyncResult *result, + GTask *task) + { + GCancellable *cancellable; ++ GdmManager *manager; + char *username; + GError *error; + + error = NULL; +- if (!g_task_propagate_boolean (G_TASK (result), &error)) { ++ manager = g_task_propagate_pointer (G_TASK (result), &error); ++ if (manager == NULL) { + g_task_return_error (task, error); + g_object_unref (task); + return; + } + + cancellable = g_task_get_cancellable (task); + username = g_object_get_data (G_OBJECT (task), "username"); + gdm_manager_call_open_reauthentication_channel (client->priv->manager, + username, + cancellable, + (GAsyncReadyCallback) + on_reauthentication_channel_opened, + task); + + } + + static gboolean + gdm_client_open_connection_sync (GdmClient *client, + GCancellable *cancellable, + GError **error) + { + gboolean ret; + + g_return_val_if_fail (GDM_IS_CLIENT (client), FALSE); + + if (client->priv->manager == NULL) { + client->priv->manager = gdm_manager_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_NONE, + "org.gnome.DisplayManager", + "/org/gnome/DisplayManager/Manager", +@@ -507,64 +509,66 @@ on_session_opened (GdmManager *manager, + client = GDM_CLIENT (g_async_result_get_source_object (G_ASYNC_RESULT (task))); + + error = NULL; + if (!gdm_manager_call_open_session_finish (manager, + &client->priv->address, + result, + &error)) { + g_task_return_error (task, error); + g_object_unref (task); + g_object_unref (client); + return; + } + + cancellable = g_task_get_cancellable (task); + g_dbus_connection_new_for_address (client->priv->address, + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT, + NULL, + cancellable, + (GAsyncReadyCallback) + on_connected, + task); + g_object_unref (client); + } + + static void + on_got_manager_for_opening_connection (GdmClient *client, + GAsyncResult *result, + GTask *task) + { + GCancellable *cancellable; ++ GdmManager *manager; + GError *error; + + error = NULL; +- if (!g_task_propagate_boolean (G_TASK (result), &error)) { ++ manager = g_task_propagate_pointer (G_TASK (result), &error); ++ if (manager == NULL) { + g_task_return_error (task, error); + g_object_unref (task); + return; + } + + cancellable = g_task_get_cancellable (task); + gdm_manager_call_open_session (client->priv->manager, + cancellable, + (GAsyncReadyCallback) + on_session_opened, + task); + } + + static void + finish_pending_opens (GdmClient *client, + GError *error) + { + GList *node; + + for (node = client->priv->pending_opens; + node != NULL; + node = node->next) { + + GTask *task = node->data; + + g_task_return_error (task, error); + g_object_unref (task); + } + g_clear_pointer (&client->priv->pending_opens, + (GDestroyNotify) g_list_free); +-- +2.20.1 + diff --git a/SOURCES/0001-local-display-factory-don-t-spawn-login-screen-if-ba.patch b/SOURCES/0001-local-display-factory-don-t-spawn-login-screen-if-ba.patch new file mode 100644 index 0000000..eef37ae --- /dev/null +++ b/SOURCES/0001-local-display-factory-don-t-spawn-login-screen-if-ba.patch @@ -0,0 +1,187 @@ +From 02429cabcddd3a12e0cddd975820b37e8440f1c7 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 22 May 2019 10:53:12 -0400 +Subject: [PATCH] local-display-factory: don't spawn login screen if background + session dies + +At the moment gdm conjures up a login screen any time a user session +exits. + +This is the right behavior if the user explicitly logs out, but if an +admin is killing a session on a background VT, then going to the login +screen is wrong. + +This commit changes the code to detect when the killed session is in +the foreground, and only then bring up a login screen. +--- + daemon/gdm-local-display-factory.c | 24 +++++++++++++++++++++++- + 1 file changed, 23 insertions(+), 1 deletion(-) + +diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c +index cf4f5095c..6856d30d0 100644 +--- a/daemon/gdm-local-display-factory.c ++++ b/daemon/gdm-local-display-factory.c +@@ -227,137 +227,159 @@ gdm_local_display_factory_create_transient_display (GdmLocalDisplayFactory *fact + + store_display (factory, display); + + if (! gdm_display_manage (display)) { + display = NULL; + goto out; + } + + if (! gdm_display_get_id (display, id, NULL)) { + display = NULL; + goto out; + } + + ret = TRUE; + out: + /* ref either held by store or not at all */ + g_object_unref (display); + + return ret; + } + + static void + on_display_status_changed (GdmDisplay *display, + GParamSpec *arg1, + GdmLocalDisplayFactory *factory) + { + int status; + GdmDisplayStore *store; + int num; + char *seat_id = NULL; ++ char *session_id = NULL; + char *session_type = NULL; + char *session_class = NULL; + gboolean is_initial = TRUE; + gboolean is_local = TRUE; ++ int ret; + + num = -1; + gdm_display_get_x11_display_number (display, &num, NULL); + + store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); + + g_object_get (display, + "seat-id", &seat_id, ++ "session-id", &session_id, + "is-initial", &is_initial, + "is-local", &is_local, + "session-type", &session_type, + "session-class", &session_class, + NULL); + + status = gdm_display_get_status (display); + + g_debug ("GdmLocalDisplayFactory: display status changed: %d", status); + switch (status) { + case GDM_DISPLAY_FINISHED: + /* remove the display number from factory->priv->used_display_numbers + so that it may be reused */ + if (num != -1) { + g_hash_table_remove (factory->priv->used_display_numbers, GUINT_TO_POINTER (num)); + } + gdm_display_store_remove (store, display); + + /* if this is a local display, recreate the display so + * a new login screen comes up if one is missing. + */ + if (is_local && g_strcmp0 (session_class, "greeter") != 0) { ++ g_autofree char *active_session = NULL; ++ + /* reset num failures */ + factory->priv->num_failures = 0; + +- create_display (factory, seat_id, session_type, is_initial); ++ ret = sd_seat_get_active (seat_id, &active_session, NULL); ++ ++ if (ret == 0) { ++ g_autofree char *state = NULL; ++ ret = sd_session_get_state (active_session, &state); ++ if (ret != 0 || ++ g_strcmp0 (state, "closing") == 0 || ++ g_strcmp0 (active_session, session_id) == 0) { ++ g_clear_pointer (&active_session, free); ++ } ++ } ++ ++ /* If this died in the foreground leaving us on a blank vt, ++ start a new login screen */ ++ if (!sd_seat_can_multi_session (seat_id) || active_session == NULL) { ++ create_display (factory, seat_id, session_type, is_initial); ++ } + } + break; + case GDM_DISPLAY_FAILED: + /* leave the display number in factory->priv->used_display_numbers + so that it doesn't get reused */ + gdm_display_store_remove (store, display); + + /* Create a new equivalent display if it was static */ + if (is_local) { + + factory->priv->num_failures++; + + if (factory->priv->num_failures > MAX_DISPLAY_FAILURES) { + /* oh shit */ + g_warning ("GdmLocalDisplayFactory: maximum number of X display failures reached: check X server log for errors"); + } else { + #ifdef ENABLE_WAYLAND_SUPPORT + if (g_strcmp0 (session_type, "wayland") == 0) { + g_free (session_type); + session_type = NULL; + } + + #endif + create_display (factory, seat_id, session_type, is_initial); + } + } + break; + case GDM_DISPLAY_UNMANAGED: + break; + case GDM_DISPLAY_PREPARED: + break; + case GDM_DISPLAY_MANAGED: + break; + default: + g_assert_not_reached (); + break; + } + + g_free (seat_id); ++ g_free (session_id); + g_free (session_type); + g_free (session_class); + } + + static gboolean + lookup_by_seat_id (const char *id, + GdmDisplay *display, + gpointer user_data) + { + const char *looking_for = user_data; + char *current; + gboolean res; + + g_object_get (G_OBJECT (display), "seat-id", ¤t, NULL); + + res = g_strcmp0 (current, looking_for) == 0; + + g_free(current); + + return res; + } + + static gboolean + activate_session_id (GdmLocalDisplayFactory *self, + const char *seat_id, + const char *session_id) + { + GError *error = NULL; + GVariant *reply; + +-- +2.21.0 + diff --git a/SOURCES/0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch b/SOURCES/0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch new file mode 100644 index 0000000..7c0508b --- /dev/null +++ b/SOURCES/0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch @@ -0,0 +1,343 @@ +From 37fd7d17cff85440fdeaff95a88f341c10ce5211 Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Thu, 20 Dec 2018 14:51:38 -0500 +Subject: [PATCH] manager: allow multiple xdmcp logins for the same user + +--- + common/gdm-settings-keys.h | 1 + + daemon/gdm-manager.c | 71 ++++++++++++++++++++++++++++---------- + data/gdm.schemas.in.in | 5 +++ + 3 files changed, 59 insertions(+), 18 deletions(-) + +diff --git a/common/gdm-settings-keys.h b/common/gdm-settings-keys.h +index f0059b5cf..6113a625b 100644 +--- a/common/gdm-settings-keys.h ++++ b/common/gdm-settings-keys.h +@@ -28,37 +28,38 @@ G_BEGIN_DECLS + #define GDM_KEY_USER "daemon/User" + #define GDM_KEY_GROUP "daemon/Group" + #define GDM_KEY_AUTO_LOGIN_ENABLE "daemon/AutomaticLoginEnable" + #define GDM_KEY_AUTO_LOGIN_USER "daemon/AutomaticLogin" + #define GDM_KEY_TIMED_LOGIN_ENABLE "daemon/TimedLoginEnable" + #define GDM_KEY_TIMED_LOGIN_USER "daemon/TimedLogin" + #define GDM_KEY_TIMED_LOGIN_DELAY "daemon/TimedLoginDelay" + #define GDM_KEY_INITIAL_SETUP_ENABLE "daemon/InitialSetupEnable" + #define GDM_KEY_WAYLAND_ENABLE "daemon/WaylandEnable" + + #define GDM_KEY_DEBUG "debug/Enable" + + #define GDM_KEY_INCLUDE "greeter/Include" + #define GDM_KEY_EXCLUDE "greeter/Exclude" + #define GDM_KEY_INCLUDE_ALL "greeter/IncludeAll" + + #define GDM_KEY_DISALLOW_TCP "security/DisallowTCP" + #define GDM_KEY_ALLOW_REMOTE_AUTOLOGIN "security/AllowRemoteAutoLogin" + + #define GDM_KEY_XDMCP_ENABLE "xdmcp/Enable" + #define GDM_KEY_SHOW_LOCAL_GREETER "xdmcp/ShowLocalGreeter" + #define GDM_KEY_MAX_PENDING "xdmcp/MaxPending" + #define GDM_KEY_MAX_SESSIONS "xdmcp/MaxSessions" + #define GDM_KEY_MAX_WAIT "xdmcp/MaxWait" + #define GDM_KEY_DISPLAYS_PER_HOST "xdmcp/DisplaysPerHost" + #define GDM_KEY_UDP_PORT "xdmcp/Port" + #define GDM_KEY_INDIRECT "xdmcp/HonorIndirect" + #define GDM_KEY_MAX_WAIT_INDIRECT "xdmcp/MaxWaitIndirect" + #define GDM_KEY_PING_INTERVAL "xdmcp/PingIntervalSeconds" + #define GDM_KEY_WILLING "xdmcp/Willing" ++#define GDM_KEY_ALLOW_MULTIPLE_SESSIONS_PER_USER "xdmcp/AllowMultipleSessionsPerUser" + + #define GDM_KEY_MULTICAST "chooser/Multicast" + #define GDM_KEY_MULTICAST_ADDR "chooser/MulticastAddr" + + G_END_DECLS + + #endif /* _GDM_SETTINGS_KEYS_H */ +diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c +index 031c61ce6..a24d7614d 100644 +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -577,93 +577,106 @@ get_display_and_details_for_bus_sender (GdmManager *self, + if (out_tty != NULL) { + *out_tty = get_tty_for_session_id (session_id, &error); + + if (error != NULL) { + g_debug ("GdmManager: Error while retrieving tty for session: %s", + error->message); + g_clear_error (&error); + } + } + + display = gdm_display_store_find (self->priv->display_store, + lookup_by_session_id, + (gpointer) session_id); + + if (out_display != NULL) { + *out_display = display; + } + out: + g_free (session_id); + } + + static gboolean + switch_to_compatible_user_session (GdmManager *manager, + GdmSession *session, + gboolean fail_if_already_switched) + { + gboolean res; + gboolean ret; + const char *username; + const char *seat_id; +- const char *ssid_to_activate; ++ const char *ssid_to_activate = NULL; + GdmSession *existing_session; + + ret = FALSE; + + username = gdm_session_get_username (session); + seat_id = gdm_session_get_display_seat_id (session); + +- if (!fail_if_already_switched) { +- session = NULL; +- } ++ if (!fail_if_already_switched) ++ ssid_to_activate = gdm_session_get_session_id (session); + +- existing_session = find_session_for_user_on_seat (manager, username, seat_id, session); ++ if (ssid_to_activate == NULL) { ++ if (!seat_id || !sd_seat_can_multi_session (seat_id)) { ++ g_debug ("GdmManager: unable to activate existing sessions from login screen unless on seat0"); ++ goto out; ++ } + +- if (existing_session != NULL) { +- ssid_to_activate = gdm_session_get_session_id (existing_session); +- if (seat_id != NULL) { +- res = activate_session_id (manager, seat_id, ssid_to_activate); +- if (! res) { +- g_debug ("GdmManager: unable to activate session: %s", ssid_to_activate); +- goto out; +- } ++ if (!fail_if_already_switched) { ++ session = NULL; + } + +- res = session_unlock (manager, ssid_to_activate); +- if (!res) { +- /* this isn't fatal */ +- g_debug ("GdmManager: unable to unlock session: %s", ssid_to_activate); ++ existing_session = find_session_for_user_on_seat (manager, username, seat_id, session); ++ ++ if (existing_session != NULL) { ++ ssid_to_activate = gdm_session_get_session_id (existing_session); + } +- } else { ++ } ++ ++ if (ssid_to_activate == NULL) { + goto out; + } + ++ if (seat_id != NULL) { ++ res = activate_session_id (manager, seat_id, ssid_to_activate); ++ if (! res) { ++ g_debug ("GdmManager: unable to activate session: %s", ssid_to_activate); ++ goto out; ++ } ++ } ++ ++ res = session_unlock (manager, ssid_to_activate); ++ if (!res) { ++ /* this isn't fatal */ ++ g_debug ("GdmManager: unable to unlock session: %s", ssid_to_activate); ++ } ++ + ret = TRUE; + + out: + return ret; + } + + static GdmDisplay * + get_display_for_user_session (GdmSession *session) + { + return g_object_get_data (G_OBJECT (session), "gdm-display"); + } + + static GdmSession * + get_user_session_for_display (GdmDisplay *display) + { + if (display == NULL) { + return NULL; + } + + return g_object_get_data (G_OBJECT (display), "gdm-user-session"); + } + + static gboolean + add_session_record (GdmManager *manager, + GdmSession *session, + GPid pid, + SessionRecord record) + { + const char *username; + char *display_name, *hostname, *display_device; +@@ -1063,92 +1076,114 @@ open_temporary_reauthentication_channel (GdmManager *self, + g_signal_connect (session, + "client-disconnected", + G_CALLBACK (on_reauthentication_client_disconnected), + self); + g_signal_connect (session, + "client-rejected", + G_CALLBACK (on_reauthentication_client_rejected), + self); + g_signal_connect (session, + "cancelled", + G_CALLBACK (on_reauthentication_cancelled), + self); + g_signal_connect (session, + "conversation-started", + G_CALLBACK (on_reauthentication_conversation_started), + self); + g_signal_connect (session, + "conversation-stopped", + G_CALLBACK (on_reauthentication_conversation_stopped), + self); + g_signal_connect (session, + "verification-complete", + G_CALLBACK (on_reauthentication_verification_complete), + self); + + address = gdm_session_get_server_address (session); + + return g_strdup (address); + } + ++static gboolean ++remote_users_can_log_in_more_than_once (GdmManager *manager) ++{ ++ gboolean enabled; ++ ++ enabled = FALSE; ++ ++ gdm_settings_direct_get_boolean (GDM_KEY_ALLOW_MULTIPLE_SESSIONS_PER_USER, &enabled); ++ ++ g_debug ("GdmDisplay: Remote users allowed to log in more than once: %s", enabled? "yes" : "no"); ++ ++ return enabled; ++} ++ + static gboolean + gdm_manager_handle_open_reauthentication_channel (GdmDBusManager *manager, + GDBusMethodInvocation *invocation, + const char *username) + { + GdmManager *self = GDM_MANAGER (manager); + const char *sender; + GdmDisplay *display = NULL; + GdmSession *session; + GDBusConnection *connection; + char *seat_id = NULL; + char *session_id = NULL; + GPid pid = 0; + uid_t uid = (uid_t) -1; + gboolean is_login_screen = FALSE; + gboolean is_remote = FALSE; + + g_debug ("GdmManager: trying to open reauthentication channel for user %s", username); + + sender = g_dbus_method_invocation_get_sender (invocation); + connection = g_dbus_method_invocation_get_connection (invocation); + get_display_and_details_for_bus_sender (self, connection, sender, &display, &seat_id, &session_id, NULL, &pid, &uid, &is_login_screen, &is_remote); + + if (session_id == NULL || pid == 0 || uid == (uid_t) -1) { + g_dbus_method_invocation_return_error_literal (invocation, + G_DBUS_ERROR, + G_DBUS_ERROR_ACCESS_DENIED, + _("No session available")); + + return TRUE; + } + ++ if (is_login_screen && is_remote && remote_users_can_log_in_more_than_once (self)) { ++ g_dbus_method_invocation_return_error_literal (invocation, ++ G_DBUS_ERROR, ++ G_DBUS_ERROR_ACCESS_DENIED, ++ "Login screen creates new sessions for remote connections"); ++ return TRUE; ++ } ++ + if (is_login_screen) { + session = find_session_for_user_on_seat (self, + username, + seat_id, + NULL); + } else { + session = get_user_session_for_display (display); + } + + if (session != NULL && gdm_session_is_running (session)) { + gdm_session_start_reauthentication (session, pid, uid); + g_hash_table_insert (self->priv->open_reauthentication_requests, + GINT_TO_POINTER (pid), + invocation); + } else if (is_login_screen) { + g_dbus_method_invocation_return_error_literal (invocation, + G_DBUS_ERROR, + G_DBUS_ERROR_ACCESS_DENIED, + "Login screen only allowed to open reauthentication channels for running sessions"); + return TRUE; + } else { + char *address; + address = open_temporary_reauthentication_channel (self, + seat_id, + session_id, + pid, + uid, + is_remote); + gdm_dbus_manager_complete_open_reauthentication_channel (GDM_DBUS_MANAGER (manager), + invocation, +diff --git a/data/gdm.schemas.in.in b/data/gdm.schemas.in.in +index 8ad203101..f50934b15 100644 +--- a/data/gdm.schemas.in.in ++++ b/data/gdm.schemas.in.in +@@ -102,32 +102,37 @@ + + xdmcp/DisplaysPerHost + i + 1 + + + xdmcp/Port + i + 177 + + + xdmcp/HonorIndirect + b + true + + + xdmcp/MaxWaitIndirect + i + 30 + + + xdmcp/PingIntervalSeconds + i + 0 + + + xdmcp/Willing + s + @gdmconfdir@/Xwilling + ++ ++ xdmcp/AllowMultipleSessionsPerUser ++ b ++ false ++ + + +-- +2.20.1 + diff --git a/SOURCES/0001-manager-plug-leak-in-maybe_activate_other_session.patch b/SOURCES/0001-manager-plug-leak-in-maybe_activate_other_session.patch new file mode 100644 index 0000000..9b961d9 --- /dev/null +++ b/SOURCES/0001-manager-plug-leak-in-maybe_activate_other_session.patch @@ -0,0 +1,103 @@ +From 82006d15b70842d2b1ad7d47d9490e315436cb5f Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Fri, 22 Jun 2018 14:44:11 -0400 +Subject: [PATCH 1/7] manager: plug leak in maybe_activate_other_session + +The function asks logind what the currently active session is on the +given seat. It then leaks the response. + +This commit plugs the leak. +--- + daemon/gdm-manager.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c +index 7539acf11..129cc0de4 100644 +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -1394,79 +1394,81 @@ get_login_window_session_id (const char *seat_id, + out: + if (sessions) { + for (i = 0; sessions[i]; i ++) { + free (sessions[i]); + } + + free (sessions); + } + + return ret; + } + + static void + activate_login_window_session_on_seat (GdmManager *self, + const char *seat_id) + { + char *session_id; + + if (!get_login_window_session_id (seat_id, &session_id)) { + return; + } + + activate_session_id (self, seat_id, session_id); + } + + static void + maybe_activate_other_session (GdmManager *self, + GdmDisplay *old_display) + { + char *seat_id = NULL; +- char *session_id; ++ char *session_id = NULL; + int ret; + + g_object_get (G_OBJECT (old_display), + "seat-id", &seat_id, + NULL); + + ret = sd_seat_get_active (seat_id, &session_id, NULL); + + if (ret == 0) { + GdmDisplay *display; + + display = gdm_display_store_find (self->priv->display_store, + lookup_by_session_id, + (gpointer) session_id); + + if (display == NULL) { + activate_login_window_session_on_seat (self, seat_id); + } ++ ++ g_free (session_id); + } + + g_free (seat_id); + } + + static const char * + get_username_for_greeter_display (GdmManager *manager, + GdmDisplay *display) + { + gboolean doing_initial_setup = FALSE; + + g_object_get (G_OBJECT (display), + "doing-initial-setup", &doing_initial_setup, + NULL); + + if (doing_initial_setup) { + return INITIAL_SETUP_USERNAME; + } else { + return GDM_USERNAME; + } + } + + static void + set_up_automatic_login_session (GdmManager *manager, + GdmDisplay *display) + { + GdmSession *session; + char *display_session_type = NULL; + gboolean is_initial; + +-- +2.19.0 + diff --git a/SOURCES/0001-session-worker-don-t-kill-progress-group-until-PostS.patch b/SOURCES/0001-session-worker-don-t-kill-progress-group-until-PostS.patch new file mode 100644 index 0000000..9c70862 --- /dev/null +++ b/SOURCES/0001-session-worker-don-t-kill-progress-group-until-PostS.patch @@ -0,0 +1,90 @@ +From a9d3724eb048862af7f89f037f37582df118abfd Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 29 Aug 2019 09:34:04 -0400 +Subject: [PATCH] session-worker: don't kill progress group until PostSession + is run + +Killing the process group leads to the worker getting killed, so +the PostSession never gets run. + +This commit fixes that, by deferring killing the process group +until after PostSession has run. +--- + daemon/gdm-session-worker.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c +index 0e8541589..9bdee361f 100644 +--- a/daemon/gdm-session-worker.c ++++ b/daemon/gdm-session-worker.c +@@ -1793,65 +1793,65 @@ run_script (GdmSessionWorker *worker, + } + + return gdm_run_script (dir, + worker->priv->username, + worker->priv->x11_display_name, + worker->priv->display_is_local? NULL : worker->priv->hostname, + worker->priv->x11_authority_file); + } + + static void + session_worker_child_watch (GPid pid, + int status, + GdmSessionWorker *worker) + { + g_debug ("GdmSessionWorker: child (pid:%d) done (%s:%d)", + (int) pid, + WIFEXITED (status) ? "status" + : WIFSIGNALED (status) ? "signal" + : "unknown", + WIFEXITED (status) ? WEXITSTATUS (status) + : WIFSIGNALED (status) ? WTERMSIG (status) + : -1); + + + gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS); + + gdm_dbus_worker_emit_session_exited (GDM_DBUS_WORKER (worker), + worker->priv->service, + status); + +- killpg (pid, SIGHUP); +- + worker->priv->child_pid = -1; + worker->priv->child_watch_id = 0; + run_script (worker, GDMCONFDIR "/PostSession"); ++ ++ killpg (pid, SIGHUP); + } + + static void + gdm_session_worker_watch_child (GdmSessionWorker *worker) + { + g_debug ("GdmSession worker: watching pid %d", worker->priv->child_pid); + worker->priv->child_watch_id = g_child_watch_add (worker->priv->child_pid, + (GChildWatchFunc)session_worker_child_watch, + worker); + + } + + static gboolean + _is_loggable_file (const char* filename) + { + struct stat file_info; + + if (g_lstat (filename, &file_info) < 0) { + return FALSE; + } + + return S_ISREG (file_info.st_mode) && g_access (filename, R_OK | W_OK) == 0; + } + + static void + rotate_logs (const char *path, + guint n_copies) + { + int i; + +-- +2.21.0 + diff --git a/SOURCES/0001-utils-add-new-gdm-disable-wayland-binary.patch b/SOURCES/0001-utils-add-new-gdm-disable-wayland-binary.patch new file mode 100644 index 0000000..2d7c65c --- /dev/null +++ b/SOURCES/0001-utils-add-new-gdm-disable-wayland-binary.patch @@ -0,0 +1,125 @@ +From 14656db42a6b4d4d48cf74127f3187dfe85607ec Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 21 May 2018 15:03:29 +0000 +Subject: [PATCH] utils: add new gdm-disable-wayland binary + +We currently disable wayland for cirrus by calling printf +from a udev rule. This works, but it's a little too open +coded to easily write SELinux policy for. + +This commit introduces a new program, gdm-disable-wayland, +that does the same thing, but in a dedicated binary. + +A future commit will change the udev rule to use the binary. + +https://bugzilla.gnome.org/show_bug.cgi?id=796315 + + +(cherry picked from commit 2dc57da31781dedfe374ce353b0f5fd6aa9da56f) +--- + utils/Makefile.am | 14 ++++++++++ + utils/gdm-disable-wayland.c | 53 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 67 insertions(+) + create mode 100644 utils/gdm-disable-wayland.c + +diff --git a/utils/Makefile.am b/utils/Makefile.am +index ae3cc01f..babe890b 100644 +--- a/utils/Makefile.am ++++ b/utils/Makefile.am +@@ -10,6 +10,8 @@ AM_CPPFLAGS = \ + -DDATADIR=\"$(datadir)\" \ + -DGDMCONFDIR=\"$(gdmconfdir)\" \ + -DLOCALSTATEDIR=\""$(localstatedir)"\" \ ++ -DGDM_RUN_DIR=\"$(GDM_RUN_DIR)\" \ ++ -DGDM_RUNTIME_CONF=\"$(GDM_RUNTIME_CONF)\" \ + -DGDM_SCREENSHOT_DIR=\""$(GDM_SCREENSHOT_DIR)"\"\ + -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ + $(UTILS_CFLAGS) \ +@@ -31,6 +33,10 @@ bin_PROGRAMS = \ + gdm-screenshot \ + $(NULL) + ++libexec_PROGRAMS = \ ++ gdm-disable-wayland \ ++ $(NULL) ++ + gdmflexiserver_LDADD = \ + $(top_builddir)/common/libgdmcommon.la \ + $(GTK_LIBS) \ +@@ -49,6 +55,14 @@ gdm_screenshot_LDADD = \ + $(COMMON_LIBS) \ + $(NULL) + ++gdm_disable_wayland_LDADD = \ ++ $(COMMON_LIBS) \ ++ $(NULL) ++ ++gdm_disable_wayland_SOURCES = \ ++ gdm-disable-wayland.c \ ++ $(NULL) ++ + CLEANFILES = \ + $(NULL) + +diff --git a/utils/gdm-disable-wayland.c b/utils/gdm-disable-wayland.c +new file mode 100644 +index 00000000..be61c4d8 +--- /dev/null ++++ b/utils/gdm-disable-wayland.c +@@ -0,0 +1,53 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- ++ * ++ * Copyright (C) 2018 Red Hat, Inc. ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ * ++ */ ++ ++#include "config.h" ++ ++#include ++#include ++#include ++ ++#include ++ ++int ++main (int argc, char *argv[]) ++{ ++ g_autoptr(GKeyFile) key_file = NULL; ++ g_autoptr(GError) error = NULL; ++ gboolean saved_okay; ++ ++ setlocale (LC_ALL, ""); ++ ++ key_file = g_key_file_new (); ++ ++ g_key_file_set_boolean (key_file, "daemon", "WaylandEnable", FALSE); ++ ++ g_mkdir_with_parents (GDM_RUN_DIR, 0711); ++ ++ saved_okay = g_key_file_save_to_file (key_file, GDM_RUNTIME_CONF, &error); ++ ++ if (!saved_okay) { ++ g_printerr ("gdm-disable-wayland: unable to disable wayland: %s", ++ error->message); ++ return EX_CANTCREAT; ++ } ++ ++ return EX_OK; ++} +-- +2.21.0 + diff --git a/SOURCES/0001-worker-add-compat-patch-to-make-new-worker-work-with.patch b/SOURCES/0001-worker-add-compat-patch-to-make-new-worker-work-with.patch new file mode 100644 index 0000000..58779ad --- /dev/null +++ b/SOURCES/0001-worker-add-compat-patch-to-make-new-worker-work-with.patch @@ -0,0 +1,104 @@ +From be25f936f6568af9019bf446c3cf2a19de5e167f Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Fri, 12 May 2017 15:20:14 -0400 +Subject: [PATCH] worker: add compat patch to make new worker work with old + daemon + +--- + daemon/gdm-session-worker.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/daemon/gdm-session-worker.c b/daemon/gdm-session-worker.c +index 10ecccb0..f71594c2 100644 +--- a/daemon/gdm-session-worker.c ++++ b/daemon/gdm-session-worker.c +@@ -3140,69 +3140,86 @@ gdm_session_worker_handle_setup_for_user (GdmDBusWorker *object, + static gboolean + gdm_session_worker_handle_setup_for_program (GdmDBusWorker *object, + GDBusMethodInvocation *invocation, + const char *service, + const char *username, + const char *x11_display_name, + const char *x11_authority_file, + const char *console, + const char *seat_id, + const char *hostname, + gboolean display_is_local, + const char *log_file) + { + GdmSessionWorker *worker = GDM_SESSION_WORKER (object); + validate_and_queue_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE); + + worker->priv->service = g_strdup (service); + worker->priv->x11_display_name = g_strdup (x11_display_name); + worker->priv->x11_authority_file = g_strdup (x11_authority_file); + worker->priv->display_device = g_strdup (console); + worker->priv->display_seat_id = g_strdup (seat_id); + worker->priv->hostname = g_strdup (hostname); + worker->priv->display_is_local = display_is_local; + worker->priv->username = g_strdup (username); + worker->priv->log_file = g_strdup (log_file); + worker->priv->is_program_session = TRUE; + + return TRUE; + } + ++static void ++fix_environment_if_old_gdm_daemon_running (GdmSessionWorker *worker) ++{ ++ const char *daemon_version; ++ const char *username; ++ ++ daemon_version = gdm_session_worker_get_environment_variable (worker, "GDM_VERSION"); ++ username = gdm_session_worker_get_environment_variable (worker, "USERNAME"); ++ ++ if (g_strcmp0 (daemon_version, "3.14.2") == 0 && ++ g_strcmp0 (username, "gdm") == 0) { ++ gdm_session_worker_set_environment_variable (worker, "GNOME_SHELL_SESSION_MODE", "gdm"); ++ } ++} ++ + static gboolean + gdm_session_worker_handle_start_program (GdmDBusWorker *object, + GDBusMethodInvocation *invocation, + const char *text) + { + GdmSessionWorker *worker = GDM_SESSION_WORKER (object); + GError *parse_error = NULL; + validate_state_change (worker, invocation, GDM_SESSION_WORKER_STATE_SESSION_STARTED); + ++ fix_environment_if_old_gdm_daemon_running (worker); ++ + if (worker->priv->is_reauth_session) { + g_dbus_method_invocation_return_error (invocation, + GDM_SESSION_WORKER_ERROR, + GDM_SESSION_WORKER_ERROR_IN_REAUTH_SESSION, + "Cannot start a program while in a reauth session"); + return TRUE; + } + + g_debug ("GdmSessionWorker: start program: %s", text); + + g_clear_pointer (&worker->priv->arguments, (GDestroyNotify) g_strfreev); + if (! g_shell_parse_argv (text, NULL, &worker->priv->arguments, &parse_error)) { + g_dbus_method_invocation_take_error (invocation, parse_error); + return TRUE; + } + + worker->priv->pending_invocation = invocation; + queue_state_change (worker); + + return TRUE; + } + + static void + on_reauthentication_client_connected (GdmSession *session, + GCredentials *credentials, + GPid pid_of_client, + ReauthenticationRequest *request) + { + g_debug ("GdmSessionWorker: client connected to reauthentication server"); + } +-- +2.14.2 + diff --git a/SOURCES/0002-manager-start-login-screen-if-old-one-is-finished.patch b/SOURCES/0002-manager-start-login-screen-if-old-one-is-finished.patch new file mode 100644 index 0000000..0fe31cf --- /dev/null +++ b/SOURCES/0002-manager-start-login-screen-if-old-one-is-finished.patch @@ -0,0 +1,92 @@ +From 6b4402fb0bbf17803c2354e92fc448a537d2d506 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Fri, 22 Jun 2018 14:55:39 -0400 +Subject: [PATCH 2/7] manager: start login screen if old one is finished + +Since commit 22c332ba we try to start a login screen if we end up +on an empty VT and there isn't one running. + +Unfortunately the check for "is on an empty VT" is a little busted. +It counts the VT has non-empty if there's a display associated with +it, even if that display is in the FINISHED state about to be +reaped. + +That means, in some cases, we'll still leave the user on an empty +VT with no login screen. + +This commit addresses the problem by explicitly checking for +FINISHED displays, and proceeding even in their presense. +--- + daemon/gdm-manager.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c +index 129cc0de4..3f5772e65 100644 +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -1410,61 +1410,61 @@ activate_login_window_session_on_seat (GdmManager *self, + char *session_id; + + if (!get_login_window_session_id (seat_id, &session_id)) { + return; + } + + activate_session_id (self, seat_id, session_id); + } + + static void + maybe_activate_other_session (GdmManager *self, + GdmDisplay *old_display) + { + char *seat_id = NULL; + char *session_id = NULL; + int ret; + + g_object_get (G_OBJECT (old_display), + "seat-id", &seat_id, + NULL); + + ret = sd_seat_get_active (seat_id, &session_id, NULL); + + if (ret == 0) { + GdmDisplay *display; + + display = gdm_display_store_find (self->priv->display_store, + lookup_by_session_id, + (gpointer) session_id); + +- if (display == NULL) { ++ if (display == NULL || gdm_display_get_status (display) == GDM_DISPLAY_FINISHED) { + activate_login_window_session_on_seat (self, seat_id); + } + + g_free (session_id); + } + + g_free (seat_id); + } + + static const char * + get_username_for_greeter_display (GdmManager *manager, + GdmDisplay *display) + { + gboolean doing_initial_setup = FALSE; + + g_object_get (G_OBJECT (display), + "doing-initial-setup", &doing_initial_setup, + NULL); + + if (doing_initial_setup) { + return INITIAL_SETUP_USERNAME; + } else { + return GDM_USERNAME; + } + } + + static void + set_up_automatic_login_session (GdmManager *manager, + GdmDisplay *display) + { +-- +2.19.0 + diff --git a/SOURCES/0003-manager-don-t-bail-if-session-disappears-out-from-un.patch b/SOURCES/0003-manager-don-t-bail-if-session-disappears-out-from-un.patch new file mode 100644 index 0000000..0ac74ac --- /dev/null +++ b/SOURCES/0003-manager-don-t-bail-if-session-disappears-out-from-un.patch @@ -0,0 +1,126 @@ +From 64779fcad9efa9fdb4b1a8963e2386cf763e53d8 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Fri, 22 Jun 2018 15:26:03 -0400 +Subject: [PATCH 3/7] manager: don't bail if session disappears out from under + us + +It's entirely possible for a session returned by +sd_seat_get_sessions to disappear immediately after the +sd_seat_get_sessions call returns. This is especially +likely at logout time where the session will briefly be +in the "closing" state before getting reaped. + +If that happens when we're looking for a greeter session, we +stop looking for a greeter session and bail out all confused. + +This commit fixes the confusion by gracefully handling the +session disappearing by just proceeding to the next session +in the list. +--- + daemon/gdm-manager.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c +index 3f5772e65..c391307fa 100644 +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -1318,87 +1318,96 @@ maybe_start_pending_initial_login (GdmManager *manager, + g_free (user_session_seat_id); + } + + static gboolean + get_login_window_session_id (const char *seat_id, + char **session_id) + { + gboolean ret; + int res, i; + char **sessions; + char *service_id; + char *service_class; + char *state; + + res = sd_seat_get_sessions (seat_id, &sessions, NULL, NULL); + if (res < 0) { + g_debug ("Failed to determine sessions: %s", strerror (-res)); + return FALSE; + } + + if (sessions == NULL || sessions[0] == NULL) { + *session_id = NULL; + ret = TRUE; + goto out; + } + + for (i = 0; sessions[i]; i ++) { + + res = sd_session_get_class (sessions[i], &service_class); + if (res < 0) { ++ if (res == -ENOENT || res == -ENXIO) { ++ continue; ++ } ++ + g_debug ("failed to determine class of session %s: %s", sessions[i], strerror (-res)); + ret = FALSE; + goto out; + } + + if (strcmp (service_class, "greeter") != 0) { + free (service_class); + continue; + } + + free (service_class); + + ret = sd_session_get_state (sessions[i], &state); + if (ret < 0) { ++ if (res == -ENOENT || res == -ENXIO) ++ continue; ++ + g_debug ("failed to determine state of session %s: %s", sessions[i], strerror (-res)); + ret = FALSE; + goto out; + } + + if (g_strcmp0 (state, "closing") == 0) { + free (state); + continue; + } + free (state); + + res = sd_session_get_service (sessions[i], &service_id); + if (res < 0) { ++ if (res == -ENOENT || res == -ENXIO) ++ continue; + g_debug ("failed to determine service of session %s: %s", sessions[i], strerror (-res)); + ret = FALSE; + goto out; + } + + if (strcmp (service_id, "gdm-launch-environment") == 0) { + *session_id = g_strdup (sessions[i]); + ret = TRUE; + + free (service_id); + goto out; + } + + free (service_id); + } + + *session_id = NULL; + ret = TRUE; + + out: + if (sessions) { + for (i = 0; sessions[i]; i ++) { + free (sessions[i]); + } + + free (sessions); + } + + return ret; + } +-- +2.19.0 + diff --git a/SOURCES/0004-manager-make-get_login_window_session_id-fail-if-no-.patch b/SOURCES/0004-manager-make-get_login_window_session_id-fail-if-no-.patch new file mode 100644 index 0000000..bd4dbcf --- /dev/null +++ b/SOURCES/0004-manager-make-get_login_window_session_id-fail-if-no-.patch @@ -0,0 +1,146 @@ +From 65c3fc674ee4ec0f5139973aa53114db2f1fcf45 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Tue, 17 Jul 2018 15:40:25 -0400 +Subject: [PATCH 4/7] manager: make get_login_window_session_id fail if no + login screen + +Right now we oddly succeed from get_login_window_session_id +if we can't find a login window. + +None of the caller expect that, so fail instead. +--- + daemon/gdm-manager.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c +index c391307fa..34ee74033 100644 +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -1310,122 +1310,122 @@ maybe_start_pending_initial_login (GdmManager *manager, + NULL); + + if (g_strcmp0 (greeter_seat_id, user_session_seat_id) == 0) { + start_user_session (manager, operation); + manager->priv->initial_login_operation = NULL; + } + + g_free (greeter_seat_id); + g_free (user_session_seat_id); + } + + static gboolean + get_login_window_session_id (const char *seat_id, + char **session_id) + { + gboolean ret; + int res, i; + char **sessions; + char *service_id; + char *service_class; + char *state; + + res = sd_seat_get_sessions (seat_id, &sessions, NULL, NULL); + if (res < 0) { + g_debug ("Failed to determine sessions: %s", strerror (-res)); + return FALSE; + } + + if (sessions == NULL || sessions[0] == NULL) { + *session_id = NULL; +- ret = TRUE; ++ ret = FALSE; + goto out; + } + + for (i = 0; sessions[i]; i ++) { + + res = sd_session_get_class (sessions[i], &service_class); + if (res < 0) { + if (res == -ENOENT || res == -ENXIO) { + continue; + } + + g_debug ("failed to determine class of session %s: %s", sessions[i], strerror (-res)); + ret = FALSE; + goto out; + } + + if (strcmp (service_class, "greeter") != 0) { + free (service_class); + continue; + } + + free (service_class); + + ret = sd_session_get_state (sessions[i], &state); + if (ret < 0) { + if (res == -ENOENT || res == -ENXIO) + continue; + + g_debug ("failed to determine state of session %s: %s", sessions[i], strerror (-res)); + ret = FALSE; + goto out; + } + + if (g_strcmp0 (state, "closing") == 0) { + free (state); + continue; + } + free (state); + + res = sd_session_get_service (sessions[i], &service_id); + if (res < 0) { + if (res == -ENOENT || res == -ENXIO) + continue; + g_debug ("failed to determine service of session %s: %s", sessions[i], strerror (-res)); + ret = FALSE; + goto out; + } + + if (strcmp (service_id, "gdm-launch-environment") == 0) { + *session_id = g_strdup (sessions[i]); + ret = TRUE; + + free (service_id); + goto out; + } + + free (service_id); + } + + *session_id = NULL; +- ret = TRUE; ++ ret = FALSE; + + out: + if (sessions) { + for (i = 0; sessions[i]; i ++) { + free (sessions[i]); + } + + free (sessions); + } + + return ret; + } + + static void + activate_login_window_session_on_seat (GdmManager *self, + const char *seat_id) + { + char *session_id; + + if (!get_login_window_session_id (seat_id, &session_id)) { + return; + } + + activate_session_id (self, seat_id, session_id); + } + + static void + maybe_activate_other_session (GdmManager *self, + GdmDisplay *old_display) + { +-- +2.19.0 + diff --git a/SOURCES/0005-daemon-try-harder-to-get-to-a-login-screen-at-logout.patch b/SOURCES/0005-daemon-try-harder-to-get-to-a-login-screen-at-logout.patch new file mode 100644 index 0000000..3879eec --- /dev/null +++ b/SOURCES/0005-daemon-try-harder-to-get-to-a-login-screen-at-logout.patch @@ -0,0 +1,654 @@ +From b7b492296a69bc5100ff5908048ed5ef121d3587 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 30 Jul 2018 16:21:29 -0400 +Subject: [PATCH 5/7] daemon: try harder to get to a login screen at logout + +commit 22c332ba and some follow up commits try to ensure the +user never stays on a blank VT by jumping to a login screen in +the event they'd end up on one. + +Unfortunately, that part of the code can't start a login screen +if there's not one running at all. + +This commit moves the code to GdmLocalDisplyFactor where the +login screens are created, so users won't end up on a blank +VT even if no login screen is yet running. +--- + daemon/gdm-local-display-factory.c | 161 ++++++++++++++++++++++++++++- + daemon/gdm-manager.c | 54 ---------- + 2 files changed, 156 insertions(+), 59 deletions(-) + +diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c +index b29f5ac52..cf852b55a 100644 +--- a/daemon/gdm-local-display-factory.c ++++ b/daemon/gdm-local-display-factory.c +@@ -1,60 +1,62 @@ + /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2007 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + + #include "config.h" + + #include + #include + + #include + #include + #include + #include + ++#include ++ + #include "gdm-common.h" + #include "gdm-manager.h" + #include "gdm-display-factory.h" + #include "gdm-local-display-factory.h" + #include "gdm-local-display-factory-glue.h" + + #include "gdm-settings-keys.h" + #include "gdm-settings-direct.h" + #include "gdm-display-store.h" + #include "gdm-local-display.h" + #include "gdm-legacy-display.h" + + #define GDM_LOCAL_DISPLAY_FACTORY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_LOCAL_DISPLAY_FACTORY, GdmLocalDisplayFactoryPrivate)) + + #define GDM_DBUS_PATH "/org/gnome/DisplayManager" + #define GDM_LOCAL_DISPLAY_FACTORY_DBUS_PATH GDM_DBUS_PATH "/LocalDisplayFactory" + #define GDM_MANAGER_DBUS_NAME "org.gnome.DisplayManager.LocalDisplayFactory" + + #define MAX_DISPLAY_FAILURES 5 + + struct GdmLocalDisplayFactoryPrivate + { + GdmDBusLocalDisplayFactory *skeleton; + GDBusConnection *connection; + GHashTable *used_display_numbers; + + /* FIXME: this needs to be per seat? */ + guint num_failures; + + guint seat_new_id; +@@ -226,171 +228,320 @@ gdm_local_display_factory_create_transient_display (GdmLocalDisplayFactory *fact + store_display (factory, display); + + if (! gdm_display_manage (display)) { + display = NULL; + goto out; + } + + if (! gdm_display_get_id (display, id, NULL)) { + display = NULL; + goto out; + } + + ret = TRUE; + out: + /* ref either held by store or not at all */ + g_object_unref (display); + + return ret; + } + + static void + on_display_status_changed (GdmDisplay *display, + GParamSpec *arg1, + GdmLocalDisplayFactory *factory) + { + int status; + GdmDisplayStore *store; + int num; + char *seat_id = NULL; + char *session_type = NULL; ++ char *session_class = NULL; + gboolean is_initial = TRUE; + gboolean is_local = TRUE; + + num = -1; + gdm_display_get_x11_display_number (display, &num, NULL); + + store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); + + g_object_get (display, + "seat-id", &seat_id, + "is-initial", &is_initial, + "is-local", &is_local, + "session-type", &session_type, ++ "session-class", &session_class, + NULL); + + status = gdm_display_get_status (display); + + g_debug ("GdmLocalDisplayFactory: display status changed: %d", status); + switch (status) { + case GDM_DISPLAY_FINISHED: + /* remove the display number from factory->priv->used_display_numbers + so that it may be reused */ + if (num != -1) { + g_hash_table_remove (factory->priv->used_display_numbers, GUINT_TO_POINTER (num)); + } + gdm_display_store_remove (store, display); + + /* if this is a local display, do a full resync. Only + * seats without displays will get created anyway. This + * ensures we get a new login screen when the user logs out, + * if there isn't one. + */ +- if (is_local) { ++ if (is_local && g_strcmp0 (session_class, "greeter") != 0) { + /* reset num failures */ + factory->priv->num_failures = 0; + + gdm_local_display_factory_sync_seats (factory); + } + break; + case GDM_DISPLAY_FAILED: + /* leave the display number in factory->priv->used_display_numbers + so that it doesn't get reused */ + gdm_display_store_remove (store, display); + + /* Create a new equivalent display if it was static */ + if (is_local) { + + factory->priv->num_failures++; + + if (factory->priv->num_failures > MAX_DISPLAY_FAILURES) { + /* oh shit */ + g_warning ("GdmLocalDisplayFactory: maximum number of X display failures reached: check X server log for errors"); + } else { + #ifdef ENABLE_WAYLAND_SUPPORT + if (g_strcmp0 (session_type, "wayland") == 0) { + g_free (session_type); + session_type = NULL; + } + + #endif + create_display (factory, seat_id, session_type, is_initial); + } + } + break; + case GDM_DISPLAY_UNMANAGED: + break; + case GDM_DISPLAY_PREPARED: + break; + case GDM_DISPLAY_MANAGED: + break; + default: + g_assert_not_reached (); + break; + } + + g_free (seat_id); + g_free (session_type); ++ g_free (session_class); + } + + static gboolean + lookup_by_seat_id (const char *id, + GdmDisplay *display, + gpointer user_data) + { + const char *looking_for = user_data; + char *current; + gboolean res; + + g_object_get (G_OBJECT (display), "seat-id", ¤t, NULL); + + res = g_strcmp0 (current, looking_for) == 0; + + g_free(current); + + return res; + } + ++static gboolean ++activate_session_id (GdmLocalDisplayFactory *self, ++ const char *seat_id, ++ const char *session_id) ++{ ++ GError *error = NULL; ++ GVariant *reply; ++ ++ reply = g_dbus_connection_call_sync (self->priv->connection, ++ "org.freedesktop.login1", ++ "/org/freedesktop/login1", ++ "org.freedesktop.login1.Manager", ++ "ActivateSessionOnSeat", ++ g_variant_new ("(ss)", session_id, seat_id), ++ NULL, /* expected reply */ ++ G_DBUS_CALL_FLAGS_NONE, ++ -1, ++ NULL, ++ &error); ++ if (reply == NULL) { ++ g_debug ("GdmManager: logind 'ActivateSessionOnSeat' %s raised:\n %s\n\n", ++ g_dbus_error_get_remote_error (error), error->message); ++ g_error_free (error); ++ return FALSE; ++ } ++ ++ g_variant_unref (reply); ++ ++ return TRUE; ++} ++ ++static gboolean ++get_login_window_session_id (const char *seat_id, ++ char **session_id) ++{ ++ gboolean ret; ++ int res, i; ++ char **sessions; ++ char *service_id; ++ char *service_class; ++ char *state; ++ ++ res = sd_seat_get_sessions (seat_id, &sessions, NULL, NULL); ++ if (res < 0) { ++ g_debug ("Failed to determine sessions: %s", strerror (-res)); ++ return FALSE; ++ } ++ ++ if (sessions == NULL || sessions[0] == NULL) { ++ *session_id = NULL; ++ ret = TRUE; ++ goto out; ++ } ++ ++ for (i = 0; sessions[i]; i ++) { ++ ++ res = sd_session_get_class (sessions[i], &service_class); ++ if (res < 0) { ++ if (res == -ENOENT || res == -ENXIO) { ++ continue; ++ } ++ ++ g_debug ("failed to determine class of session %s: %s", sessions[i], strerror (-res)); ++ ret = FALSE; ++ goto out; ++ } ++ ++ if (strcmp (service_class, "greeter") != 0) { ++ free (service_class); ++ continue; ++ } ++ ++ free (service_class); ++ ++ ret = sd_session_get_state (sessions[i], &state); ++ if (ret < 0) { ++ if (res == -ENOENT || res == -ENXIO) ++ continue; ++ ++ g_debug ("failed to determine state of session %s: %s", sessions[i], strerror (-res)); ++ ret = FALSE; ++ goto out; ++ } ++ ++ if (g_strcmp0 (state, "closing") == 0) { ++ free (state); ++ continue; ++ } ++ free (state); ++ ++ res = sd_session_get_service (sessions[i], &service_id); ++ if (res < 0) { ++ if (res == -ENOENT || res == -ENXIO) ++ continue; ++ g_debug ("failed to determine service of session %s: %s", sessions[i], strerror (-res)); ++ ret = FALSE; ++ goto out; ++ } ++ ++ if (strcmp (service_id, "gdm-launch-environment") == 0) { ++ *session_id = g_strdup (sessions[i]); ++ ret = TRUE; ++ ++ free (service_id); ++ goto out; ++ } ++ ++ free (service_id); ++ } ++ ++ *session_id = NULL; ++ ret = FALSE; ++ ++out: ++ if (sessions) { ++ for (i = 0; sessions[i]; i ++) { ++ free (sessions[i]); ++ } ++ ++ free (sessions); ++ } ++ ++ return ret; ++} ++ + static GdmDisplay * + create_display (GdmLocalDisplayFactory *factory, + const char *seat_id, + const char *session_type, + gboolean initial) + { + GdmDisplayStore *store; + GdmDisplay *display = NULL; ++ char *active_session_id = NULL; ++ int ret; + +- /* Ensure we don't create the same display more than once */ + store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); +- display = gdm_display_store_find (store, lookup_by_seat_id, (gpointer) seat_id); +- if (display != NULL) { +- return NULL; ++ ++ ret = sd_seat_get_active (seat_id, &active_session_id, NULL); ++ ++ if (ret == 0) { ++ char *login_session_id = NULL; ++ ++ /* If we already have a login window, switch to it */ ++ if (get_login_window_session_id (seat_id, &login_session_id)) { ++ if (g_strcmp0 (active_session_id, login_session_id) != 0) { ++ activate_session_id (factory, seat_id, login_session_id); ++ } ++ g_clear_pointer (&login_session_id, g_free); ++ g_clear_pointer (&active_session_id, g_free); ++ return NULL; ++ } ++ g_clear_pointer (&active_session_id, g_free); ++ } else { ++ /* Ensure we don't create the same display more than once */ ++ display = gdm_display_store_find (store, lookup_by_seat_id, (gpointer) seat_id); ++ ++ if (display != NULL) { ++ return NULL; ++ } + } + + g_debug ("GdmLocalDisplayFactory: Adding display on seat %s", seat_id); + + #ifdef ENABLE_USER_DISPLAY_SERVER + if (g_strcmp0 (seat_id, "seat0") == 0) { + display = gdm_local_display_new (); + if (session_type != NULL) { + g_object_set (G_OBJECT (display), "session-type", session_type, NULL); + } + } + #endif + + if (display == NULL) { + guint32 num; + + num = take_next_display_number (factory); + + display = gdm_legacy_display_new (num); + } + + g_object_set (display, "seat-id", seat_id, NULL); + g_object_set (display, "is-initial", initial, NULL); + + store_display (factory, display); + + /* let store own the ref */ + g_object_unref (display); + + if (! gdm_display_manage (display)) { +diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c +index 34ee74033..031c61ce6 100644 +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -1318,171 +1318,118 @@ maybe_start_pending_initial_login (GdmManager *manager, + g_free (user_session_seat_id); + } + + static gboolean + get_login_window_session_id (const char *seat_id, + char **session_id) + { + gboolean ret; + int res, i; + char **sessions; + char *service_id; + char *service_class; + char *state; + + res = sd_seat_get_sessions (seat_id, &sessions, NULL, NULL); + if (res < 0) { + g_debug ("Failed to determine sessions: %s", strerror (-res)); + return FALSE; + } + + if (sessions == NULL || sessions[0] == NULL) { + *session_id = NULL; + ret = FALSE; + goto out; + } + + for (i = 0; sessions[i]; i ++) { + + res = sd_session_get_class (sessions[i], &service_class); + if (res < 0) { +- if (res == -ENOENT || res == -ENXIO) { +- continue; +- } +- + g_debug ("failed to determine class of session %s: %s", sessions[i], strerror (-res)); + ret = FALSE; + goto out; + } + + if (strcmp (service_class, "greeter") != 0) { + free (service_class); + continue; + } + + free (service_class); + + ret = sd_session_get_state (sessions[i], &state); + if (ret < 0) { +- if (res == -ENOENT || res == -ENXIO) +- continue; +- + g_debug ("failed to determine state of session %s: %s", sessions[i], strerror (-res)); + ret = FALSE; + goto out; + } + + if (g_strcmp0 (state, "closing") == 0) { + free (state); + continue; + } + free (state); + + res = sd_session_get_service (sessions[i], &service_id); + if (res < 0) { +- if (res == -ENOENT || res == -ENXIO) +- continue; + g_debug ("failed to determine service of session %s: %s", sessions[i], strerror (-res)); + ret = FALSE; + goto out; + } + + if (strcmp (service_id, "gdm-launch-environment") == 0) { + *session_id = g_strdup (sessions[i]); + ret = TRUE; + + free (service_id); + goto out; + } + + free (service_id); + } + + *session_id = NULL; + ret = FALSE; + + out: + if (sessions) { + for (i = 0; sessions[i]; i ++) { + free (sessions[i]); + } + + free (sessions); + } + + return ret; + } + +-static void +-activate_login_window_session_on_seat (GdmManager *self, +- const char *seat_id) +-{ +- char *session_id; +- +- if (!get_login_window_session_id (seat_id, &session_id)) { +- return; +- } +- +- activate_session_id (self, seat_id, session_id); +-} +- +-static void +-maybe_activate_other_session (GdmManager *self, +- GdmDisplay *old_display) +-{ +- char *seat_id = NULL; +- char *session_id = NULL; +- int ret; +- +- g_object_get (G_OBJECT (old_display), +- "seat-id", &seat_id, +- NULL); +- +- ret = sd_seat_get_active (seat_id, &session_id, NULL); +- +- if (ret == 0) { +- GdmDisplay *display; +- +- display = gdm_display_store_find (self->priv->display_store, +- lookup_by_session_id, +- (gpointer) session_id); +- +- if (display == NULL || gdm_display_get_status (display) == GDM_DISPLAY_FINISHED) { +- activate_login_window_session_on_seat (self, seat_id); +- } +- +- g_free (session_id); +- } +- +- g_free (seat_id); +-} +- + static const char * + get_username_for_greeter_display (GdmManager *manager, + GdmDisplay *display) + { + gboolean doing_initial_setup = FALSE; + + g_object_get (G_OBJECT (display), + "doing-initial-setup", &doing_initial_setup, + NULL); + + if (doing_initial_setup) { + return INITIAL_SETUP_USERNAME; + } else { + return GDM_USERNAME; + } + } + + static void + set_up_automatic_login_session (GdmManager *manager, + GdmDisplay *display) + { + GdmSession *session; + char *display_session_type = NULL; + gboolean is_initial; + + /* 0 is root user; since the daemon talks to the session object + * directly, itself, for automatic login + */ + session = create_user_session_for_display (manager, display, 0); + +@@ -1674,61 +1621,60 @@ on_display_status_changed (GdmDisplay *display, + if ((display_number == -1 && status == GDM_DISPLAY_PREPARED) || + (display_number != -1 && status == GDM_DISPLAY_MANAGED)) { + char *session_class; + + g_object_get (display, + "session-class", &session_class, + NULL); + if (g_strcmp0 (session_class, "greeter") == 0) + set_up_session (manager, display); + g_free (session_class); + } + + if (status == GDM_DISPLAY_MANAGED) { + greeter_display_started (manager, display); + } + break; + case GDM_DISPLAY_FAILED: + case GDM_DISPLAY_UNMANAGED: + case GDM_DISPLAY_FINISHED: + #ifdef WITH_PLYMOUTH + if (quit_plymouth) { + plymouth_quit_without_transition (); + manager->priv->plymouth_is_running = FALSE; + } + #endif + + if (status == GDM_DISPLAY_FINISHED || g_strcmp0 (session_type, "x11") == 0) { + manager->priv->ran_once = TRUE; + } + maybe_start_pending_initial_login (manager, display); +- maybe_activate_other_session (manager, display); + break; + default: + break; + } + + } + + static void + on_display_removed (GdmDisplayStore *display_store, + const char *id, + GdmManager *manager) + { + GdmDisplay *display; + + display = gdm_display_store_lookup (display_store, id); + if (display != NULL) { + g_dbus_object_manager_server_unexport (manager->priv->object_manager, id); + + g_signal_handlers_disconnect_by_func (display, G_CALLBACK (on_display_status_changed), manager); + + g_signal_emit (manager, signals[DISPLAY_REMOVED], 0, id); + } + } + + static void + destroy_start_user_session_operation (StartUserSessionOperation *operation) + { + g_object_set_data (G_OBJECT (operation->session), + "start-user-session-operation", + NULL); +-- +2.19.0 + diff --git a/SOURCES/0006-daemon-ensure-is-initial-bit-is-transferred-to-new-l.patch b/SOURCES/0006-daemon-ensure-is-initial-bit-is-transferred-to-new-l.patch new file mode 100644 index 0000000..f1d0fe4 --- /dev/null +++ b/SOURCES/0006-daemon-ensure-is-initial-bit-is-transferred-to-new-l.patch @@ -0,0 +1,97 @@ +From 91eee14bcd2447d78ad00e3de9d4380e423cb897 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 24 Sep 2018 10:53:53 -0400 +Subject: [PATCH 6/7] daemon: ensure is-initial bit is transferred to new login + screen at logout + +At the moment, when a user logs out we call sync_seats to restart the +login screen. sync_seats doesn't know whether or not vt1 is occupied. + +This commit changes the code to call the more targeted `create_display` +function, which we can inform of vt1's availability by the is_initial +flag. +--- + daemon/gdm-local-display-factory.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c +index cf852b55a..9a07f03ed 100644 +--- a/daemon/gdm-local-display-factory.c ++++ b/daemon/gdm-local-display-factory.c +@@ -257,70 +257,68 @@ on_display_status_changed (GdmDisplay *display, + char *session_type = NULL; + char *session_class = NULL; + gboolean is_initial = TRUE; + gboolean is_local = TRUE; + + num = -1; + gdm_display_get_x11_display_number (display, &num, NULL); + + store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); + + g_object_get (display, + "seat-id", &seat_id, + "is-initial", &is_initial, + "is-local", &is_local, + "session-type", &session_type, + "session-class", &session_class, + NULL); + + status = gdm_display_get_status (display); + + g_debug ("GdmLocalDisplayFactory: display status changed: %d", status); + switch (status) { + case GDM_DISPLAY_FINISHED: + /* remove the display number from factory->priv->used_display_numbers + so that it may be reused */ + if (num != -1) { + g_hash_table_remove (factory->priv->used_display_numbers, GUINT_TO_POINTER (num)); + } + gdm_display_store_remove (store, display); + +- /* if this is a local display, do a full resync. Only +- * seats without displays will get created anyway. This +- * ensures we get a new login screen when the user logs out, +- * if there isn't one. ++ /* if this is a local display, recreate the display so ++ * a new login screen comes up if one is missing. + */ + if (is_local && g_strcmp0 (session_class, "greeter") != 0) { + /* reset num failures */ + factory->priv->num_failures = 0; + +- gdm_local_display_factory_sync_seats (factory); ++ create_display (factory, seat_id, session_type, is_initial); + } + break; + case GDM_DISPLAY_FAILED: + /* leave the display number in factory->priv->used_display_numbers + so that it doesn't get reused */ + gdm_display_store_remove (store, display); + + /* Create a new equivalent display if it was static */ + if (is_local) { + + factory->priv->num_failures++; + + if (factory->priv->num_failures > MAX_DISPLAY_FAILURES) { + /* oh shit */ + g_warning ("GdmLocalDisplayFactory: maximum number of X display failures reached: check X server log for errors"); + } else { + #ifdef ENABLE_WAYLAND_SUPPORT + if (g_strcmp0 (session_type, "wayland") == 0) { + g_free (session_type); + session_type = NULL; + } + + #endif + create_display (factory, seat_id, session_type, is_initial); + } + } + break; + case GDM_DISPLAY_UNMANAGED: + break; + case GDM_DISPLAY_PREPARED: +-- +2.19.0 + diff --git a/SOURCES/0007-local-display-factory-try-even-harder-to-get-to-a-lo.patch b/SOURCES/0007-local-display-factory-try-even-harder-to-get-to-a-lo.patch new file mode 100644 index 0000000..bad3a28 --- /dev/null +++ b/SOURCES/0007-local-display-factory-try-even-harder-to-get-to-a-lo.patch @@ -0,0 +1,118 @@ +From 72782991144e8e6671c2dbed6fe1727e2dc329fb Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 4 Oct 2018 14:01:44 -0400 +Subject: [PATCH 7/7] local-display-factory: try even harder to get to a login + screen + +At the moment we sometimes fail to create a login screen when +logout results in the user ending up on an empty VT. + +That is because we're accidentally running into the non-seat0 +code path for seat0. + +This commit addresses the problem by specifically checking for +if the seat is multi-session capable rather than checking if +the seat has an active session. +--- + daemon/gdm-local-display-factory.c | 19 +++++++++++-------- + 1 file changed, 11 insertions(+), 8 deletions(-) + +diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c +index 8b0b2e5c2..cf4f5095c 100644 +--- a/daemon/gdm-local-display-factory.c ++++ b/daemon/gdm-local-display-factory.c +@@ -459,80 +459,83 @@ get_login_window_session_id (const char *seat_id, + free (service_id); + goto out; + } + + free (service_id); + } + + *session_id = NULL; + ret = FALSE; + + out: + if (sessions) { + for (i = 0; sessions[i]; i ++) { + free (sessions[i]); + } + + free (sessions); + } + + return ret; + } + + static GdmDisplay * + create_display (GdmLocalDisplayFactory *factory, + const char *seat_id, + const char *session_type, + gboolean initial) + { + GdmDisplayStore *store; + GdmDisplay *display = NULL; +- char *active_session_id = NULL; + int ret; + + store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); + +- ret = sd_seat_get_active (seat_id, &active_session_id, NULL); +- +- if (ret == 0) { ++ if (sd_seat_can_multi_session (seat_id)) { + char *login_session_id = NULL; + + /* If we already have a login window, switch to it */ + if (get_login_window_session_id (seat_id, &login_session_id)) { +- if (g_strcmp0 (active_session_id, login_session_id) != 0) { ++ char *active_session_id = NULL; ++ ++ ret = sd_seat_get_active (seat_id, &active_session_id, NULL); ++ ++ if (ret == 0 && g_strcmp0 (active_session_id, login_session_id) != 0) { + activate_session_id (factory, seat_id, login_session_id); ++ ++ g_clear_pointer (&login_session_id, g_free); ++ g_clear_pointer (&active_session_id, g_free); ++ return NULL; + } ++ + g_clear_pointer (&login_session_id, g_free); +- g_clear_pointer (&active_session_id, g_free); +- return NULL; + } +- g_clear_pointer (&active_session_id, g_free); + } else { + /* Ensure we don't create the same display more than once */ + display = gdm_display_store_find (store, lookup_by_seat_id, (gpointer) seat_id); + + if (display != NULL) { + return NULL; + } + } + + g_debug ("GdmLocalDisplayFactory: Adding display on seat %s", seat_id); + + #ifdef ENABLE_USER_DISPLAY_SERVER + if (g_strcmp0 (seat_id, "seat0") == 0) { + display = gdm_local_display_new (); + if (session_type != NULL) { + g_object_set (G_OBJECT (display), "session-type", session_type, NULL); + } + } + #endif + + if (display == NULL) { + guint32 num; + + num = take_next_display_number (factory); + + display = gdm_legacy_display_new (num); + } + + g_object_set (display, "seat-id", seat_id, NULL); + g_object_set (display, "is-initial", initial, NULL); +-- +2.17.1 + diff --git a/SOURCES/audit-4.patch b/SOURCES/audit-4.patch new file mode 100644 index 0000000..ac52ebb --- /dev/null +++ b/SOURCES/audit-4.patch @@ -0,0 +1,147 @@ +From a17354e67eab4a294c30ec3e8b407057c6fb5f80 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Fri, 3 Jul 2015 14:39:33 -0400 +Subject: [PATCH 4/8] server: add -audit 4 to default flags + +--- + daemon/gdm-server.c | 2 +- + daemon/gdm-x-session.c | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c +index 83fba99c..5bd9725c 100644 +--- a/daemon/gdm-server.c ++++ b/daemon/gdm-server.c +@@ -191,61 +191,61 @@ gdm_server_launch_sigusr1_thread_if_needed (void) + static GThread *sigusr1_thread; + + if (sigusr1_thread == NULL) { + sigusr1_thread = g_thread_new ("gdm SIGUSR1 catcher", sigusr1_thread_main, NULL); + + g_mutex_lock (&sigusr1_thread_mutex); + while (!sigusr1_thread_running) + g_cond_wait (&sigusr1_thread_cond, &sigusr1_thread_mutex); + g_mutex_unlock (&sigusr1_thread_mutex); + } + } + + static void + gdm_server_init_command (GdmServer *server) + { + gboolean debug = FALSE; + const char *debug_options; + const char *verbosity = ""; + + if (server->priv->command != NULL) { + return; + } + + gdm_settings_direct_get_boolean (GDM_KEY_DEBUG, &debug); + if (debug) { + debug_options = " -logverbose 7 -core "; + } else { + debug_options = ""; + } + +-#define X_SERVER_ARG_FORMAT " -background none -noreset -verbose %s%s" ++#define X_SERVER_ARG_FORMAT " -background none -noreset -audit 4 -verbose %s%s" + + /* This is a temporary hack to work around the fact that XOrg + * currently lacks support for multi-seat hotplugging for + * display devices. This bit should be removed as soon as XOrg + * gains native support for automatically enumerating usb + * based graphics adapters at start-up via udev. */ + + /* systemd ships an X server wrapper tool which simply invokes + * the usual X but ensures it only uses the display devices of + * the seat. */ + + /* We do not rely on this wrapper server if, a) the machine + * wasn't booted using systemd, or b) the wrapper tool is + * missing, or c) we are running for the main seat 'seat0'. */ + + #ifdef ENABLE_SYSTEMD_JOURNAL + /* For systemd, we don't have a log file but instead log to stdout, + so set it to the xserver's built-in default verbosity */ + if (debug) + verbosity = "7 -logfile /dev/null"; + else + verbosity = "3 -logfile /dev/null"; + #endif + + if (g_access (SYSTEMD_X_SERVER, X_OK) < 0) { + goto fallback; + } + + if (server->priv->display_seat_id == NULL || + strcmp (server->priv->display_seat_id, "seat0") == 0) { +diff --git a/daemon/gdm-x-session.c b/daemon/gdm-x-session.c +index 88fe96f4..a499a342 100644 +--- a/daemon/gdm-x-session.c ++++ b/daemon/gdm-x-session.c +@@ -247,60 +247,62 @@ spawn_x_server (State *state, + } + + g_ptr_array_add (arguments, "-displayfd"); + g_ptr_array_add (arguments, display_fd_string); + + g_ptr_array_add (arguments, "-auth"); + g_ptr_array_add (arguments, auth_file); + + /* If we were compiled with Xserver >= 1.17 we need to specify + * '-listen tcp' as the X server dosen't listen on tcp sockets + * by default anymore. In older versions we need to pass + * -nolisten tcp to disable listening on tcp sockets. + */ + #ifdef HAVE_XSERVER_THAT_DEFAULTS_TO_LOCAL_ONLY + if (allow_remote_connections) { + g_ptr_array_add (arguments, "-listen"); + g_ptr_array_add (arguments, "tcp"); + } + #else + if (!allow_remote_connections) { + g_ptr_array_add (arguments, "-nolisten"); + g_ptr_array_add (arguments, "tcp"); + } + #endif + + g_ptr_array_add (arguments, "-background"); + g_ptr_array_add (arguments, "none"); + + g_ptr_array_add (arguments, "-noreset"); + g_ptr_array_add (arguments, "-keeptty"); ++ g_ptr_array_add (arguments, "-audit"); ++ g_ptr_array_add (arguments, "4"); + + g_ptr_array_add (arguments, "-verbose"); + if (state->debug_enabled) { + g_ptr_array_add (arguments, "7"); + } else { + g_ptr_array_add (arguments, "3"); + } + + if (state->debug_enabled) { + g_ptr_array_add (arguments, "-core"); + } + g_ptr_array_add (arguments, NULL); + + subprocess = g_subprocess_launcher_spawnv (launcher, + (const char * const *) arguments->pdata, + &error); + g_free (display_fd_string); + g_clear_object (&launcher); + g_ptr_array_free (arguments, TRUE); + + if (subprocess == NULL) { + g_debug ("could not start X server: %s", error->message); + goto out; + } + + input_stream = g_unix_input_stream_new (pipe_fds[0], TRUE); + data_stream = g_data_input_stream_new (input_stream); + g_clear_object (&input_stream); + + display_number = g_data_input_stream_read_line (data_stream, +-- +2.14.2 + diff --git a/SOURCES/classic-session.patch b/SOURCES/classic-session.patch new file mode 100644 index 0000000..1ddc504 --- /dev/null +++ b/SOURCES/classic-session.patch @@ -0,0 +1,195 @@ +From 45848cf2625eaec34a07c03fdee624c8a2cb76de Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 3 Apr 2013 10:28:09 -0400 +Subject: [PATCH 8/8] session: change default session + +We default to gnome-classic in rhel, unless overridden +by /etc/sysconfig/desktop +--- + daemon/gdm-session.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 100 insertions(+) + +diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c +index f62f77d0..d6f1e121 100644 +--- a/daemon/gdm-session.c ++++ b/daemon/gdm-session.c +@@ -495,76 +495,176 @@ get_session_command_for_name (GdmSession *self, + { + gboolean res; + char *filename; + + filename = g_strdup_printf ("%s.desktop", name); + res = get_session_command_for_file (self, filename, command); + g_free (filename); + + return res; + } + + static const char * + get_default_language_name (GdmSession *self) + { + const char *default_language; + + if (self->priv->saved_language != NULL) { + return self->priv->saved_language; + } + + default_language = g_hash_table_lookup (self->priv->environment, + "LANG"); + + if (default_language != NULL) { + return default_language; + } + + return setlocale (LC_MESSAGES, NULL); + } + ++static const char * ++get_configured_default_session_name (GdmSession *self) ++{ ++ static const char *config_file = "/etc/sysconfig/desktop"; ++ const char *session_name = "gnome-classic"; ++ gchar *contents = NULL; ++ gchar *p; ++ gsize length; ++ GError *error; ++ GString *line; ++ GRegex *re; ++ ++ if (!g_file_test (config_file, G_FILE_TEST_EXISTS)) { ++ g_debug ("Cannot access '%s'", config_file); ++ return session_name; ++ } ++ ++ error = NULL; ++ if (!g_file_get_contents (config_file, &contents, &length, &error)) { ++ g_debug ("Failed to parse '%s': %s", ++ config_file, ++ (error && error->message) ? error->message : "(null)"); ++ g_error_free (error); ++ return session_name; ++ } ++ ++ if (!g_utf8_validate (contents, length, NULL)) { ++ g_warning ("Invalid UTF-8 in '%s'", config_file); ++ g_free (contents); ++ return session_name; ++ } ++ ++ re = g_regex_new ("DESKTOP=\"?KDE\"?[ \t]*", 0, 0, &error); ++ if (re == NULL) { ++ g_warning ("Failed to regex: %s", ++ (error && error->message) ? error->message : "(null)"); ++ g_error_free (error); ++ g_free (contents); ++ return session_name; ++ } ++ ++ line = g_string_new (""); ++ for (p = contents; p && *p; p = g_utf8_find_next_char (p, NULL)) { ++ gunichar ch; ++ GMatchInfo *match_info = NULL; ++ ++ ch = g_utf8_get_char (p); ++ if ((ch != '\n') && (ch != '\0')) { ++ g_string_append_unichar (line, ch); ++ continue; ++ } ++ ++ if (line->str && g_utf8_get_char (line->str) == '#') { ++ goto next_line; ++ } ++ ++ if (!g_regex_match (re, line->str, 0, &match_info)) { ++ goto next_line; ++ } ++ ++ if (!g_match_info_matches (match_info)) { ++ goto next_line; ++ } ++ ++ session_name = "1-kde-plasma-standard"; ++ break; ++ ++next_line: ++ g_match_info_free (match_info); ++ g_string_set_size (line, 0); ++ } ++ ++ g_string_free (line, TRUE); ++ g_regex_unref (re); ++ g_free (contents); ++ ++ return session_name; ++} ++ + static const char * + get_fallback_session_name (GdmSession *self) + { + char **search_dirs; ++ const char *configured_session; + int i; + char *name; + GSequence *sessions; + GSequenceIter *session; + + if (self->priv->fallback_session_name != NULL) { + /* verify that the cached version still exists */ + if (get_session_command_for_name (self, self->priv->fallback_session_name, NULL)) { + goto out; + } + } + ++ configured_session = get_configured_default_session_name (self); ++ ++ name = g_strdup (configured_session); ++ if (get_session_command_for_name (self, name, NULL)) { ++ g_free (self->priv->fallback_session_name); ++ self->priv->fallback_session_name = name; ++ goto out; ++ } ++ g_free (name); ++ ++ if (g_strcmp0 (configured_session, "gnome-classic") != 0) { ++ name = g_strdup ("gnome-classic"); ++ if (get_session_command_for_name (self, name, NULL)) { ++ g_free (self->priv->fallback_session_name); ++ self->priv->fallback_session_name = name; ++ goto out; ++ } ++ g_free (name); ++ } ++ + name = g_strdup ("gnome"); + if (get_session_command_for_name (self, name, NULL)) { + g_free (self->priv->fallback_session_name); + self->priv->fallback_session_name = name; + goto out; + } + g_free (name); + + sessions = g_sequence_new (g_free); + + search_dirs = get_system_session_dirs (self); + for (i = 0; search_dirs[i] != NULL; i++) { + GDir *dir; + const char *base_name; + + dir = g_dir_open (search_dirs[i], 0, NULL); + + if (dir == NULL) { + continue; + } + + do { + base_name = g_dir_read_name (dir); + + if (base_name == NULL) { + break; + } + + if (!g_str_has_suffix (base_name, ".desktop")) { + continue; +-- +2.14.2 + diff --git a/SOURCES/clear-screen.patch b/SOURCES/clear-screen.patch new file mode 100644 index 0000000..0d3a595 --- /dev/null +++ b/SOURCES/clear-screen.patch @@ -0,0 +1,53 @@ +From 5337f1094ecedf50bcfb9a000ac6b99bd95ffea2 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Fri, 14 Mar 2014 11:04:49 -0400 +Subject: [PATCH 5/8] systemd: clear terminal after starting + +This helps with flicker when the X server shuts down. +--- + data/gdm.service.in | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/data/gdm.service.in b/data/gdm.service.in +index 72201c1f..b58f4c61 100644 +--- a/data/gdm.service.in ++++ b/data/gdm.service.in +@@ -1,34 +1,35 @@ + [Unit] + Description=GNOME Display Manager + + # replaces the getty + Conflicts=getty@tty@GDM_INITIAL_VT@.service + After=getty@tty@GDM_INITIAL_VT@.service + + # replaces plymouth-quit since it quits plymouth on its own + Conflicts=@PLYMOUTH_QUIT_SERVICE@ + After=@PLYMOUTH_QUIT_SERVICE@ + + # Needs all the dependencies of the services it's replacing + # pulled from getty@.service and @PLYMOUTH_QUIT_SERVICE@ + # (except for plymouth-quit-wait.service since it waits until + # plymouth is quit, which we do) + After=rc-local.service plymouth-start.service systemd-user-sessions.service + + # GDM takes responsibility for stopping plymouth, so if it fails + # for any reason, make sure plymouth still stops + OnFailure=plymouth-quit.service + + [Service] + ExecStart=@sbindir@/gdm ++ExecStartPost=-/bin/bash -c "TERM=linux /usr/bin/clear > /dev/tty1" + KillMode=mixed + Restart=always + IgnoreSIGPIPE=no + BusName=org.gnome.DisplayManager + StandardOutput=syslog + StandardError=inherit + EnvironmentFile=-@LANG_CONFIG_FILE@ + ExecReload=/bin/kill -SIGHUP $MAINPID + + [Install] + Alias=display-manager.service +-- +2.14.2 + diff --git a/SOURCES/ja.po b/SOURCES/ja.po new file mode 100644 index 0000000..5b95641 --- /dev/null +++ b/SOURCES/ja.po @@ -0,0 +1,424 @@ +# gdm ja.po. +# Copyright (C) 1999-2012 Free Software Foundation, Inc. +# Yukihiro Nakai , 1999. +# ITANI Eiichiro , 1999. +# Takayuki KUSANO , 2000, 2010, 2012. +# Yukihior Nakai , 2000-2002. +# Taku YASUI , 2001. +# SATO Satoru , 2001, 2006. +# Akira TAGOH , 2001. +# KAMAGASAKO Masatoshi , 2003. +# Takeshi AIHANA , 2004-2009. +# Ryoichi INAGAKI , 2004. +# Hideki Yamane (Debian-JP) , 2009. +# Hideki Yamane , 2011. +# Noriko Mizumoto , 2012. +# Jiro Matsuzawa , 2013, 2014. +# Hajime Taira , 2015. +# kmoriguc , 2017. #zanata +# ljanda , 2017. #zanata +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-05-16 15:21+0200\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2017-05-22 12:35+0000\n" +"Last-Translator: kmoriguc \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Zanata 4.1.1\n" + +#: ../chooser/gdm-host-chooser-dialog.c:147 +msgid "Select System" +msgstr "システムの選択" + +#: ../chooser/gdm-host-chooser-widget.c:254 +msgid "XDMCP: Could not create XDMCP buffer!" +msgstr "XDMCP: XDMCP のバッファーを生成できませんでした" + +#: ../chooser/gdm-host-chooser-widget.c:260 +msgid "XDMCP: Could not read XDMCP header!" +msgstr "XDMCP: XDMCP のヘッダーを読み取れませんでした" + +#: ../chooser/gdm-host-chooser-widget.c:266 +msgid "XDMCP: Incorrect XDMCP version!" +msgstr "XDMCP: XDMCP のバージョンが間違っています!" + +#: ../chooser/gdm-host-chooser-widget.c:272 +msgid "XDMCP: Unable to parse address" +msgstr "XDMCP: アドレスを解析できません" + +#: ../common/gdm-common.c:298 +#, c-format +msgid "/dev/urandom is not a character device" +msgstr "/dev/urandom はキャラクターデバイスではありません" + +#: ../common/gdm-common.c:468 ../libgdm/gdm-user-switching.c:209 +#, c-format +msgid "Could not identify the current session." +msgstr "現在のセッションを取得できませんでした。" + +#: ../common/gdm-common.c:477 ../libgdm/gdm-user-switching.c:218 +#, c-format +msgid "Could not identify the current seat." +msgstr "現在のシートを識別できませんでした。" + +#: ../common/gdm-common.c:487 ../libgdm/gdm-user-switching.c:228 +#, c-format +msgid "" +"The system is unable to determine whether to switch to an existing login " +"screen or start up a new login screen." +msgstr "既存のログイン画面に切り替えるか、新しいログイン画面を起動するのかを、システムが決定することができませんでした。" + +#: ../common/gdm-common.c:495 ../libgdm/gdm-user-switching.c:236 +#, c-format +msgid "The system is unable to start up a new login screen." +msgstr "新しいログイン画面を起動できません。" + +#: ../daemon/gdm-display-access-file.c:300 +#, c-format +msgid "could not find user \"%s\" on system" +msgstr "システムに \"%s\" というユーザーは見つかりませんでした" + +#: ../daemon/gdm-legacy-display.c:235 +msgid "" +"Could not start the X server (your graphical environment) due to an internal " +"error. Please contact your system administrator or check your syslog to " +"diagnose. In the meantime this display will be disabled. Please restart GDM " +"when the problem is corrected." +msgstr "" +"何らかの内部エラーが原因で、X サーバー(グラフィカル環境)を起動できませんでした。システム管理者に問い合わせるか、syslog " +"の内容をチェックして調査してみてください。とりあえず、このディスプレイを無効にします。問題が解決したら GDM を再起動してください。" + +#: ../daemon/gdm-manager.c:772 +msgid "No display available" +msgstr "利用できるディスプレイがありません" + +#: ../daemon/gdm-manager.c:841 ../daemon/gdm-manager.c:1114 +msgid "No session available" +msgstr "利用できるセッションがありません" + +#: ../daemon/gdm-manager.c:859 +msgid "Chooser session unavailable" +msgstr "選択したセッションは利用できません" + +#: ../daemon/gdm-manager.c:869 +msgid "Can only be called before user is logged in" +msgstr "ユーザーがログインする前にしか呼び出しできません" + +#: ../daemon/gdm-manager.c:880 +msgid "Caller not GDM" +msgstr "呼び出し側が GDM ではありません" + +#: ../daemon/gdm-manager.c:890 +msgid "Unable to open private communication channel" +msgstr "プライベートコミュニケーションチャンネルを開けません" + +#: ../daemon/gdm-server.c:391 +#, c-format +msgid "Server was to be spawned by user %s but that user doesn't exist" +msgstr "ユーザー %s としてサーバーを起動しようとしましたが、そのようなユーザーは存在しません" + +#: ../daemon/gdm-server.c:402 ../daemon/gdm-server.c:422 +#, c-format +msgid "Couldn't set groupid to %d" +msgstr "グループ ID を %d に設定できませんでした" + +#: ../daemon/gdm-server.c:408 +#, c-format +msgid "initgroups () failed for %s" +msgstr "%s に対する initgroups () の呼び出しに失敗しました" + +#: ../daemon/gdm-server.c:414 +#, c-format +msgid "Couldn't set userid to %d" +msgstr "ユーザー ID を %d に設定できませんでした" + +#: ../daemon/gdm-server.c:492 +#, c-format +msgid "%s: Could not open log file for display %s!" +msgstr "%s: ディスプレイ (%s) のログファイルを開けません!" + +#: ../daemon/gdm-server.c:513 ../daemon/gdm-server.c:519 +#: ../daemon/gdm-server.c:525 +#, c-format +msgid "%s: Error setting %s to %s" +msgstr "%s: %s を %s に設定する際にエラー" + +#: ../daemon/gdm-server.c:545 +#, c-format +msgid "%s: Server priority couldn't be set to %d: %s" +msgstr "%s: サーバーの優先度を %d にセットできませんでした: %s" + +#: ../daemon/gdm-server.c:697 +#, c-format +msgid "%s: Empty server command for display %s" +msgstr "%s: ディスプレイ (%s) のサーバーコマンドが空です" + +#: ../daemon/gdm-session-auditor.c:90 +msgid "Username" +msgstr "ユーザー名" + +#: ../daemon/gdm-session-auditor.c:91 +msgid "The username" +msgstr "ユーザー名です" + +#: ../daemon/gdm-session-auditor.c:95 +msgid "Hostname" +msgstr "ホスト名" + +#: ../daemon/gdm-session-auditor.c:96 +msgid "The hostname" +msgstr "ホスト名です" + +#: ../daemon/gdm-session-auditor.c:101 +msgid "Display Device" +msgstr "ディスプレイのデバイス" + +#: ../daemon/gdm-session-auditor.c:102 +msgid "The display device" +msgstr "ディスプレイのデバイスです" + +#: ../daemon/gdm-session.c:1314 +msgid "Could not create authentication helper process" +msgstr "認証ヘルパーのプロセスを作成できませんでした" + +#: ../daemon/gdm-session-worker.c:641 +msgid "Your account was given a time limit that's now passed." +msgstr "アカウントに設定されていた有効期限が切れました。" + +#: ../daemon/gdm-session-worker.c:648 +msgid "Sorry, that didn't work. Please try again." +msgstr "認証に失敗しました。やり直してください。" + +#: ../daemon/gdm-session-worker.c:1036 +msgid "Username:" +msgstr "ユーザー名:" + +#: ../daemon/gdm-session-worker.c:1538 ../daemon/gdm-session-worker.c:1555 +#, c-format +msgid "no user account available" +msgstr "利用できるアカウントがありません" + +#: ../daemon/gdm-session-worker.c:1582 +msgid "Unable to change to user" +msgstr "ユーザーを変更できません" + +#: ../daemon/gdm-wayland-session.c:470 +msgid "GNOME Display Manager Wayland Session Launcher" +msgstr "GNOME ディスプレイマネージャー Wayland セッションランチャー" + +#: ../daemon/gdm-xdmcp-display-factory.c:612 +msgid "Could not create socket!" +msgstr "ソケットを生成できませんでした" + +#: ../daemon/gdm-x-session.c:814 +msgid "Run program through /etc/gdm/Xsession wrapper script" +msgstr "/etc/gdm/Xsession のラッパースクリプトを介してプログラムを起動する" + +#: ../daemon/gdm-x-session.c:815 +msgid "Listen on TCP socket" +msgstr "TCP ソケットでリッスンする" + +#: ../daemon/gdm-x-session.c:826 +msgid "GNOME Display Manager X Session Launcher" +msgstr "GNOME ディスプレイマネージャー X セッションランチャー" + +#: ../daemon/main.c:125 ../daemon/main.c:138 +#, c-format +msgid "Cannot write PID file %s: possibly out of disk space: %s" +msgstr "PID ファイル %s に書き込めません; ディスクの空き容量が足りないようです: %s" + +#: ../daemon/main.c:182 +#, c-format +msgid "Failed to create ran once marker dir %s: %s" +msgstr "起動済みマーカーディレクトリ %s の作成に失敗しました: %s" + +#: ../daemon/main.c:188 +#, c-format +msgid "Failed to create LogDir %s: %s" +msgstr "ログディレクトリ %s の作成に失敗しました: %s" + +#: ../daemon/main.c:223 +#, c-format +msgid "Can't find the GDM user '%s'. Aborting!" +msgstr "GDM ユーザー '%s' が見つからないので処理を中止します!" + +#: ../daemon/main.c:229 +msgid "The GDM user should not be root. Aborting!" +msgstr "root を GDM ユーザーにしないでください; 処理を中止します!" + +#: ../daemon/main.c:235 +#, c-format +msgid "Can't find the GDM group '%s'. Aborting!" +msgstr "GDM グループ '%s' が見つからないので処理を中止します!" + +#: ../daemon/main.c:241 +msgid "The GDM group should not be root. Aborting!" +msgstr "root を GDM グループにしないでください; 処理を中止します!" + +#: ../daemon/main.c:318 +msgid "Make all warnings fatal" +msgstr "警告をすべて致命的にする" + +#: ../daemon/main.c:319 +msgid "Exit after a time (for debugging)" +msgstr "時間が経過したら終了する (デバッグ用)" + +#: ../daemon/main.c:320 +msgid "Print GDM version" +msgstr "GDM のバージョンを表示する" + +#: ../daemon/main.c:333 +msgid "GNOME Display Manager" +msgstr "GNOME ディスプレイマネージャー" + +#. make sure the pid file doesn't get wiped +#: ../daemon/main.c:381 +msgid "Only the root user can run GDM" +msgstr "root ユーザーのみが GDM を起動できます" + +#. Translators: worker is a helper process that does the work +#. of starting up a session +#: ../daemon/session-worker-main.c:94 +msgid "GNOME Display Manager Session Worker" +msgstr "GDM セッションワーカー" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:1 +msgid "Whether or not to allow fingerprint readers for login" +msgstr "指紋リーダーによるログイン認証を許可する" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:2 +msgid "" +"The login screen can optionally allow users who have enrolled their " +"fingerprints to log in using those prints." +msgstr "ログイン画面では、指紋を登録したユーザーがそれを使ってログインするのを任意に許可することができます。" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:3 +msgid "Whether or not to allow smartcard readers for login" +msgstr "スマートカードリーダーによるログイン認証を許可する" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:4 +msgid "" +"The login screen can optionally allow users who have smartcards to log in " +"using those smartcards." +msgstr "ログイン画面では、スマートカードを持つユーザーがスマートカードを使ってログインするのを任意に許可することができます。" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:5 +msgid "Whether or not to allow passwords for login" +msgstr "パスワードによるログイン認証を許可する" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:6 +msgid "" +"The login screen can be configured to disallow password authentication, " +"forcing the user to use smartcard or fingerprint authentication." +msgstr "ログイン画面では、パスワード認証を無効化して、スマートカードや指紋による認証をユーザーに強制するよう設定できます。" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:7 +msgid "Path to small image at top of user list" +msgstr "ユーザーリストの一番上にある小さな画像へのパス" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:8 +msgid "" +"The login screen can optionally show a small image to provide site " +"administrators and distributions a way to display branding." +msgstr "ログイン画面では、サイトの管理者やディストリビューションがブランドを示す方法として、小さな画像を任意で表示できます。" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:9 +msgid "" +"The fallback login screen can optionally show a small image to provide site " +"administrators and distributions a way to display branding." +msgstr "フォールバックログイン画面では、サイトの管理者やディストリビューションがブランドを示す方法として、小さな画像を表示することもできます。" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:10 +msgid "Avoid showing user list" +msgstr "ユーザー一覧を表示しない" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:11 +msgid "" +"The login screen normally shows a list of available users to log in as. This " +"setting can be toggled to disable showing the user list." +msgstr "ログインスクリーンでは、利用可能なユーザーが通常表示されています。この設定ではユーザー一覧表示を無効に設定可能です。" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:12 +msgid "Enable showing the banner message" +msgstr "バナーメッセージを表示するかどうか" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:13 +msgid "Set to true to show the banner message text." +msgstr "true にすると、バナーメッセージを表示します。" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:14 +msgid "Banner message text" +msgstr "バナーメッセージの文字列" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:15 +msgid "Text banner message to show in the login window." +msgstr "ログインウィンドウに表示するバナーメッセージの文字列です。" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:16 +msgid "Disable showing the restart buttons" +msgstr "再起動のボタンを表示しないかどうか" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:17 +msgid "" +"Set to true to disable showing the restart buttons in the login window." +msgstr "true にすると、ログインウィンドウに再起動のボタンが表示されなくなります。" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:18 +msgid "Number of allowed authentication failures" +msgstr "許容できる認証失敗の回数です" + +#: ../data/org.gnome.login-screen.gschema.xml.in.h:19 +msgid "" +"The number of times a user is allowed to attempt authentication, before " +"giving up and going back to user selection." +msgstr "ユーザーが認証を試行できる回数です。この回数を失敗すると、ユーザー選択に戻ることになります。" + +#: ../libgdm/gdm-user-switching.c:59 +msgid "Unable to create transient display: " +msgstr "一時的なディスプレイを作成できません:" + +#: ../libgdm/gdm-user-switching.c:90 +msgid "Unable to activate session: " +msgstr "セッションを開始することができません:" + +#: ../utils/gdmflexiserver.c:45 +msgid "Only the VERSION command is supported" +msgstr "VERSION コマンドのみがサポートされています" + +#: ../utils/gdmflexiserver.c:45 +msgid "COMMAND" +msgstr "COMMAND" + +#: ../utils/gdmflexiserver.c:46 ../utils/gdmflexiserver.c:47 +#: ../utils/gdmflexiserver.c:49 ../utils/gdmflexiserver.c:50 +msgid "Ignored — retained for compatibility" +msgstr "無視しました - 下位互換のために残してあるだけです" + +#: ../utils/gdmflexiserver.c:48 ../utils/gdm-screenshot.c:43 +msgid "Debugging output" +msgstr "デバッグ情報を出力する" + +#: ../utils/gdmflexiserver.c:52 +msgid "Version of this application" +msgstr "バージョンを表示する" + +#. Option parsing +#: ../utils/gdmflexiserver.c:137 +msgid "- New GDM login" +msgstr "- 新しい GDM のログイン" + +#: ../utils/gdm-screenshot.c:212 +msgid "Screenshot taken" +msgstr "スクリーンショットの撮影" + +#. Option parsing +#: ../utils/gdm-screenshot.c:279 +msgid "Take a picture of the screen" +msgstr "画面のスクリーンショットを撮る" + diff --git a/SOURCES/org.gnome.login-screen.gschema.override b/SOURCES/org.gnome.login-screen.gschema.override new file mode 100644 index 0000000..6c56276 --- /dev/null +++ b/SOURCES/org.gnome.login-screen.gschema.override @@ -0,0 +1,3 @@ +[org.gnome.login-screen] +logo='/usr/share/pixmaps/fedora-gdm-logo.png' +enable-smartcard-authentication=true diff --git a/SOURCES/system-dconf.patch b/SOURCES/system-dconf.patch new file mode 100644 index 0000000..3f3ba16 --- /dev/null +++ b/SOURCES/system-dconf.patch @@ -0,0 +1,24 @@ +From 2cd39fafe8109a41d1e87b8ba89a2c3229d71a01 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 31 Jul 2013 17:32:55 -0400 +Subject: [PATCH 7/8] data: add system dconf databases to gdm profile + +This way system settings can affect the login screen. +--- + data/dconf/gdm.in | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/data/dconf/gdm.in b/data/dconf/gdm.in +index 4d8bf174..9694078f 100644 +--- a/data/dconf/gdm.in ++++ b/data/dconf/gdm.in +@@ -1,2 +1,6 @@ + user-db:user ++system-db:gdm ++system-db:local ++system-db:site ++system-db:distro + file-db:@DATADIR@/@PACKAGE@/greeter-dconf-defaults +-- +2.14.2 + diff --git a/SPECS/gdm.spec b/SPECS/gdm.spec new file mode 100644 index 0000000..8227891 --- /dev/null +++ b/SPECS/gdm.spec @@ -0,0 +1,3101 @@ +%global _changelog_trimtime %(date +%s -d "1 year ago") +%global _hardened_build 1 + +%define libauditver 1.0.6 +%define gtk3_version 2.99.2 +%define pam_version 0.99.8.1-11 +%define desktop_file_utils_version 0.2.90 +%define nss_version 3.11.1 + +Name: gdm +Epoch: 1 +Version: 3.28.2 +Release: 18%{?dist} +Summary: The GNOME Display Manager + +License: GPLv2+ +URL: https://wiki.gnome.org/Projects/GDM +Source0: http://download.gnome.org/sources/gdm/3.28/gdm-%{version}.tar.xz +Source1: org.gnome.login-screen.gschema.override +Source2: ja.po + +Patch0: 0001-Honor-initial-setup-being-disabled-by-distro-install.patch + +Patch10001: 0001-Revert-session-forward-is-initial-from-display-to-wo.patch +Patch20001: 0001-worker-add-compat-patch-to-make-new-worker-work-with.patch + +Patch30001: 0001-libgdm-fix-pointer-boolean-task-confusion.patch + +# breaks upgrades +Patch40001: 0001-Revert-data-Add-gnome-login.session.patch +# we don't have new enough dbus for this and don't need it with our old dbus +Patch50001: 0001-Revert-gdm-sessions-force-a-session-bus-for-non-seat.patch + +Patch60001: 0001-data-change-cirrus-blacklist-to-use-gdm-disable-wayl.patch + +Patch70001: 0001-manager-plug-leak-in-maybe_activate_other_session.patch +Patch70002: 0002-manager-start-login-screen-if-old-one-is-finished.patch +Patch70003: 0003-manager-don-t-bail-if-session-disappears-out-from-un.patch +Patch70004: 0004-manager-make-get_login_window_session_id-fail-if-no-.patch +Patch70005: 0005-daemon-try-harder-to-get-to-a-login-screen-at-logout.patch +Patch70006: 0006-daemon-ensure-is-initial-bit-is-transferred-to-new-l.patch +Patch70007: 0007-local-display-factory-try-even-harder-to-get-to-a-lo.patch + +Patch80001: 0001-daemon-gdm-session-record.c-open-close-the-utmp-data.patch + +Patch90001: 0001-manager-allow-multiple-xdmcp-logins-for-the-same-use.patch + +Patch100001: 0001-local-display-factory-don-t-spawn-login-screen-if-ba.patch + +Patch110001: 0001-session-worker-don-t-kill-progress-group-until-PostS.patch + +Patch900000: audit-4.patch +Patch900001: clear-screen.patch +Patch900002: 0001-gdm.conf-custom.in-strip-out-reference-to-wayland.patch +Patch900003: system-dconf.patch +Patch900004: classic-session.patch +Patch900005: 0001-data-drop-pam_gdm-reintroduce-pam_env-postlogin.patch +Patch900006: 0001-configure-don-t-assume-x-server-defaults-to-local-on.patch + +Patch990000: 0001-utils-add-new-gdm-disable-wayland-binary.patch + +BuildRequires: pam-devel >= 0:%{pam_version} +BuildRequires: desktop-file-utils >= %{desktop_file_utils_version} +BuildRequires: libtool automake autoconf +BuildRequires: libattr-devel +BuildRequires: gettext +BuildRequires: git +BuildRequires: libdmx-devel +BuildRequires: audit-libs-devel >= %{libauditver} +BuildRequires: autoconf automake libtool +BuildRequires: intltool +%ifnarch s390 s390x ppc ppc64 +BuildRequires: xorg-x11-server-Xorg +BuildRequires: pkgconfig(xorg-server) +%endif +BuildRequires: nss-devel >= %{nss_version} +BuildRequires: pkgconfig(accountsservice) >= 0.6.3 +BuildRequires: pkgconfig(check) +BuildRequires: pkgconfig(gobject-introspection-1.0) +BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version} +BuildRequires: pkgconfig(iso-codes) +BuildRequires: pkgconfig(libcanberra-gtk3) +BuildRequires: pkgconfig(libselinux) +BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(ply-boot-client) +BuildRequires: pkgconfig(systemd) +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xau) +BuildRequires: libXdmcp-devel +BuildRequires: systemd +BuildRequires: keyutils-libs-devel +BuildRequires: dconf + +Requires(pre): /usr/sbin/useradd +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd + +Provides: service(graphical-login) = %{name} + +Requires: accountsservice +Requires: audit-libs >= %{libauditver} +Requires: dconf +# since we use it, and pam spams the log if the module is missing +Requires: gnome-keyring-pam +Requires: gnome-session +Requires: gnome-settings-daemon >= 3.27.90 +Requires: gnome-shell +Requires: iso-codes +# We need 1.0.4-5 since it lets us use "localhost" in auth cookies +Requires: libXau >= 1.0.4-4 +Requires: pam >= 0:%{pam_version} +Requires: pulseaudio-gdm-hooks +Requires: /sbin/nologin +Requires: setxkbmap +Requires: systemd >= 186 +Requires: system-logos +Requires: xorg-x11-server-utils +Requires: xorg-x11-xinit + +Conflicts: xorg-x11-server-Xorg < 1.20.4-6 + +Obsoletes: gdm-libs < 1:3.12.0-3 +Provides: gdm-libs%{?_isa} = %{epoch}:%{version}-%{release} + +# Swallow up old fingerprint/smartcard plugins +Obsoletes: gdm-plugin-smartcard < 1:3.2.1 +Provides: gdm-plugin-smartcard = %{epoch}:%{version}-%{release} + +Obsoletes: gdm-plugin-fingerprint < 1:3.2.1 +Provides: gdm-plugin-fingerprint = %{epoch}:%{version}-%{release} + +%description +GDM, the GNOME Display Manager, handles authentication-related backend +functionality for logging in a user and unlocking the user's session after +it's been locked. GDM also provides functionality for initiating user-switching, +so more than one user can be logged in at the same time. It handles +graphical session registration with the system for both local and remote +sessions (in the latter case, via the XDMCP protocol). In cases where the +session doesn't provide it's own display server, GDM can start the display +server on behalf of the session. + +%package devel +Summary: Development files for gdm +Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release} +Requires: gdm-pam-extensions-devel = %{epoch}:%{version}-%{release} + +%description devel +The gdm-devel package contains headers and other +files needed to build custom greeters. + +%package pam-extensions-devel +Summary: Macros for developing GDM extensions to PAM +Group: Development/Libraries +Requires: pam-devel +Obsoletes: gdm-pam-extensions < 1:3.28.2-5 +Provides: gdm-pam-extensions = %{epoch}:%{version}-%{release} + +%description pam-extensions-devel +The gdm-pam-extensions-devel package contains headers and other +files that are helpful to PAM modules wishing to support +GDM specific authentication features. + +%prep +%autosetup -S git + +cp -f $RPM_SOURCE_DIR/ja.po po + +intltoolize --force --copy --automake +autoreconf --force --install --verbose + +%build + +%configure --with-pam-prefix=%{_sysconfdir} \ + --with-run-dir=/run/gdm \ + --with-default-path="/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin" \ + --enable-split-authentication \ + --enable-profiling \ + --enable-console-helper \ + --with-plymouth \ + --disable-systemd-journal \ + --disable-user-display-server \ + --enable-wayland-support \ + --with-selinux + +# drop unneeded direct library deps with --as-needed +# libtool doesn't make this easy, so we do it the hard way +sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0 /g' -e 's/ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then/ func_append compile_command " -Wl,-O1,--as-needed"\n func_append finalize_command " -Wl,-O1,--as-needed"\n\0/' libtool + +make %{?_smp_mflags} + + +%install +mkdir -p %{buildroot}%{_sysconfdir}/gdm/Init +mkdir -p %{buildroot}%{_sysconfdir}/gdm/PreSession +mkdir -p %{buildroot}%{_sysconfdir}/gdm/PostSession + +make install DESTDIR=%{buildroot} + +rm -f %{buildroot}%{_sysconfdir}/pam.d/gdm + +# add logo to shell greeter +cp -a %{SOURCE1} %{buildroot}%{_datadir}/glib-2.0/schemas + +# docs go elsewhere +rm -rf %{buildroot}/%{_prefix}/doc + +# create log dir +mkdir -p %{buildroot}/var/log/gdm + +(cd %{buildroot}%{_sysconfdir}/gdm; ln -sf ../X11/xinit/Xsession .) + +mkdir -p %{buildroot}%{_datadir}/gdm/autostart/LoginWindow + +mkdir -p %{buildroot}/run/gdm + +mkdir -p %{buildroot}%{_sysconfdir}/dconf/db/gdm.d/locks + +find %{buildroot} -name '*.a' -delete +find %{buildroot} -name '*.la' -delete + +%find_lang gdm --with-gnome + +%pre +/usr/sbin/useradd -M -u 42 -d /var/lib/gdm -s /sbin/nologin -r gdm > /dev/null 2>&1 +/usr/sbin/usermod -d /var/lib/gdm -s /sbin/nologin gdm >/dev/null 2>&1 +# ignore errors, as we can't disambiguate between gdm already existed +# and couldn't create account with the current adduser. +exit 0 + +%post +/sbin/ldconfig +touch --no-create /usr/share/icons/hicolor >&/dev/null || : + +# if the user already has a config file, then migrate it to the new +# location; rpm will ensure that old file will be renamed + +custom=/etc/gdm/custom.conf + +if [ $1 -ge 2 ] ; then + if [ -f /usr/share/gdm/config/gdm.conf-custom ]; then + oldconffile=/usr/share/gdm/config/gdm.conf-custom + elif [ -f /etc/X11/gdm/gdm.conf ]; then + oldconffile=/etc/X11/gdm/gdm.conf + fi + + # Comment out some entries from the custom config file that may + # have changed locations in the update. Also move various + # elements to their new locations. + + [ -n "$oldconffile" ] && sed \ + -e 's@^command=/usr/X11R6/bin/X@#command=/usr/bin/Xorg@' \ + -e 's@^Xnest=/usr/X11R6/bin/Xnest@#Xnest=/usr/X11R6/bin/Xnest@' \ + -e 's@^BaseXsession=/etc/X11/xdm/Xsession@#BaseXsession=/etc/X11/xinit/Xsession@' \ + -e 's@^BaseXsession=/etc/X11/gdm/Xsession@#&@' \ + -e 's@^BaseXsession=/etc/gdm/Xsession@#&@' \ + -e 's@^Greeter=/usr/bin/gdmgreeter@#Greeter=/usr/libexec/gdmgreeter@' \ + -e 's@^RemoteGreeter=/usr/bin/gdmlogin@#RemoteGreeter=/usr/libexec/gdmlogin@' \ + -e 's@^GraphicalTheme=Bluecurve@#&@' \ + -e 's@^BackgroundColor=#20305a@#&@' \ + -e 's@^DefaultPath=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin@#&@' \ + -e 's@^RootPath=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin@#&@' \ + -e 's@^HostImageDir=/usr/share/hosts/@#HostImageDir=/usr/share/pixmaps/faces/@' \ + -e 's@^LogDir=/var/log/gdm@#&@' \ + -e 's@^PostLoginScriptDir=/etc/X11/gdm/PostLogin@#&@' \ + -e 's@^PreLoginScriptDir=/etc/X11/gdm/PreLogin@#&@' \ + -e 's@^PreSessionScriptDir=/etc/X11/gdm/PreSession@#&@' \ + -e 's@^PostSessionScriptDir=/etc/X11/gdm/PostSession@#&@' \ + -e 's@^DisplayInitDir=/var/run/gdm.pid@#&@' \ + -e 's@^RebootCommand=/sbin/reboot;/sbin/shutdown -r now;/usr/sbin/shutdown -r now;/usr/bin/reboot@#&@' \ + -e 's@^HaltCommand=/sbin/poweroff;/sbin/shutdown -h now;/usr/sbin/shutdown -h now;/usr/bin/poweroff@#&@' \ + -e 's@^ServAuthDir=/var/gdm@#&@' \ + -e 's@^Greeter=/usr/bin/gdmlogin@Greeter=/usr/libexec/gdmlogin@' \ + -e 's@^RemoteGreeter=/usr/bin/gdmgreeter@RemoteGreeter=/usr/libexec/gdmgreeter@' \ + $oldconffile > $custom +fi + +if [ $1 -ge 2 -a -f $custom ] && grep -q /etc/X11/gdm $custom ; then + sed -i -e 's@/etc/X11/gdm@/etc/gdm@g' $custom +fi + +%systemd_post gdm.service + +%preun +%systemd_preun gdm.service + +%postun +/sbin/ldconfig +if [ $1 -eq 0 ]; then + touch --no-create %{_datadir}/icons/hicolor >&/dev/null || : + gtk-update-icon-cache %{_datadir}/icons/hicolor >&/dev/null || : +fi + +if [ $1 -eq 0 ] ; then + /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : +fi +%systemd_postun + +%triggerun -- gdm < 1:3.14.2-1 +test -e %{_sysconfdir}/sysconfig/desktop && mv -f %{_sysconfdir}/sysconfig/desktop %{_sysconfdir}/sysconfig/desktop.rpmsave || : + +%posttrans +dconf update +gtk-update-icon-cache %{_datadir}/icons/hicolor >&/dev/null || : +/usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : + +%files -f gdm.lang +%doc AUTHORS NEWS README +%license COPYING +%dir %{_sysconfdir}/gdm +%config(noreplace) %{_sysconfdir}/gdm/custom.conf +%config %{_sysconfdir}/gdm/Init/* +%config %{_sysconfdir}/gdm/PostLogin/* +%config %{_sysconfdir}/gdm/PreSession/* +%config %{_sysconfdir}/gdm/PostSession/* +%config %{_sysconfdir}/pam.d/gdm-autologin +%config %{_sysconfdir}/pam.d/gdm-password +# not config files +%{_sysconfdir}/gdm/Xsession +%{_datadir}/gdm/gdm.schemas +%{_sysconfdir}/dbus-1/system.d/gdm.conf +%dir %{_sysconfdir}/gdm/Init +%dir %{_sysconfdir}/gdm/PreSession +%dir %{_sysconfdir}/gdm/PostSession +%dir %{_sysconfdir}/gdm/PostLogin +%{_datadir}/pixmaps/*.png +%{_datadir}/glib-2.0/schemas/org.gnome.login-screen.gschema.xml +%{_datadir}/glib-2.0/schemas/org.gnome.login-screen.gschema.override +%{_libexecdir}/gdm-disable-wayland +%{_libexecdir}/gdm-host-chooser +%{_libexecdir}/gdm-session-worker +%{_libexecdir}/gdm-simple-chooser +%{_libexecdir}/gdm-wayland-session +%{_libexecdir}/gdm-x-session +%{_sbindir}/gdm +%{_bindir}/gdmflexiserver +%{_bindir}/gdm-screenshot +%dir %{_datadir}/dconf +%dir %{_datadir}/dconf/profile +%{_datadir}/dconf/profile/gdm +%dir %{_datadir}/gdm/greeter +%dir %{_datadir}/gdm/greeter/applications +%{_datadir}/gdm/greeter/applications/* +%dir %{_datadir}/gdm/greeter/autostart +%{_datadir}/gdm/greeter/autostart/* +%{_datadir}/gdm/greeter-dconf-defaults +%{_datadir}/gdm/locale.alias +%{_datadir}/gdm/gdb-cmd +%{_libdir}/girepository-1.0/Gdm-1.0.typelib +%{_libdir}/security/pam_gdm.so +%{_libdir}/libgdm*.so* +%attr(0711, root, gdm) %dir %{_localstatedir}/log/gdm +%attr(1770, gdm, gdm) %dir %{_localstatedir}/lib/gdm +%attr(0711, root, gdm) %dir /run/gdm +%attr(1755, root, gdm) %dir %{_localstatedir}/cache/gdm +%dir %{_sysconfdir}/dconf/db/gdm.d/locks +%dir %{_sysconfdir}/dconf/db/gdm.d +%{_datadir}/icons/hicolor/*/*/*.png +%config %{_sysconfdir}/pam.d/gdm-pin +%config %{_sysconfdir}/pam.d/gdm-smartcard +%config %{_sysconfdir}/pam.d/gdm-fingerprint +%{_sysconfdir}/pam.d/gdm-launch-environment +%{_udevrulesdir}/61-gdm.rules +%{_unitdir}/gdm.service + +%files devel +%dir %{_includedir}/gdm +%{_includedir}/gdm/*.h +%exclude %{_includedir}/gdm/gdm-pam-extensions.h +%dir %{_datadir}/gir-1.0 +%{_datadir}/gir-1.0/Gdm-1.0.gir +%{_libdir}/pkgconfig/gdm.pc + +%files pam-extensions-devel +%{_includedir}/gdm/gdm-pam-extensions.h +%{_libdir}/pkgconfig/gdm-pam-extensions.pc + +%changelog +* Tue Sep 17 2019 Jonas Ådahl - 3.28.2-18 +- Include gdm-disable-wayland binary + Resolves: #1749325 + +* Thu Aug 29 2019 Ray Strode - 3.28.2-17 +- Fix PostSession + Resolves: #1547158 + +* Wed May 22 2019 Ray Strode - 3.28.2-16 +- Don't bring up login screen if background session gets killed + Related: #1680120 + +* Wed Apr 03 2019 Ray Strode - 3.28.2-15 +- sync AllowMultipleSessionsPerUser patch from 7.6 branch + Resolves: #1664353 +- Create dconf dirs by default + Resolves: #1664284 + +* Thu Mar 28 2019 Ray Strode - 3.28.2-14 +- Fix unlock on XDMCP sessions + Resolves: #1693060 + +* Fri Mar 01 2019 Ray Strode - 3.28.2-13 +- Fix login on s390 + Resolves: #1680060 + +* Thu Feb 21 2019 Ray Strode - 3.28.2-12 +- Add option to allow the same user to log in via XDMCP more + than once. + Resolves: #1664353 + +* Mon Dec 03 2018 Ray Strode - 3.28.2-11 +- Don't assume X server defaults to local only + Resolves: #1647621 + +* Fri Oct 05 2018 Ray Strode - 3.28.2-10 +- another user switching fix + Resolves: #1489977 + +* Mon Sep 24 2018 Ray Strode - 3.28.2-9 +- fast user switching fix + Related: #1597339 + +* Tue Sep 04 2018 Ray Strode - 3.28.2-8 +- Clear utmp entries properly + Resolves: #1600079 + +* Mon Jul 30 2018 Ray Strode - 3.28.2-7 +- Another crack at the blank login screen problem + Resolves: #1489977 + +* Mon Jul 16 2018 Ray Strode - 3.28.2-6 +- add gdm-pam-extension provides to fix upgrades + Resolves: #1601598 + +* Tue Jun 26 2018 Ray Strode - 3.28.2-5 +- Fix double free + Related: #1489977 + Resolves: 1594814 + +* Fri Jun 22 2018 Ray Strode - 3.28.2-4 +- Fix blank login screen problem + Resolves: #1489977 + +* Wed Jun 20 2018 Ray Strode - 3.28.2-3 +- Make udev script more friendly to RHEL 7 udev + Resolves: #1593356 + +* Tue May 29 2018 Ray Strode - 1:3.28.2-2 +- Drop reference to gconf + Resolves: #1542702 + +* Thu May 17 2018 Kalev Lember - 1:3.28.2-1 +- Update to 3.28.2 +- Resolves: #1567200 + +* Wed Feb 14 2018 Ray Strode - 3.26.2.1-5 +- Fix bullet in session list + Resolves: #1527145 + +* Tue Jan 30 2018 Ray Strode - 3.26.2.1-4 +- Repair autologin PAM configuration following rebase. + Resolves: #1539106 + +* Tue Nov 14 2017 Ray Strode - 3.26.2.1-3 +- Split PAM macros off into new subpackage + Resolves: #1512213 + +* Mon Nov 13 2017 Ray Strode - 3.26.2.1-2 +- Fix permissions on log dir + Resolves: #1275532 + +* Tue Oct 31 2017 Ray Strode - 3.26.2.1-1 +- Update to 3.26.2.1 + Integrates a lot of the downstream patches + Related: #1481740 +- Fixes race condition introduced by list display patch + Related: #1413900 + +* Tue Oct 17 2017 Ray Strode - 3.26.1-3 +- Revert patch that calls dbus-run-session + Related: #1481740 + +* Fri Oct 13 2017 Ray Strode - 3.26.1-2 +- Fix a few warnings discovered by coverity + Related: #1481740 + +* Wed Oct 11 2017 Ray Strode - 3.26.1-1 +- Update to 3.26.1 + Resolves: #1489359 + Related: #1481740 +- Enable wayland support + Resolves: #1481740 +- Fix bogus wtmp entries + Resolves: #1391156 + +* Tue Aug 15 2017 Ray Strode - 3.22.3-14 +- Fix memory corruption bug when user switching + Resolves: #1477289 + +* Wed Jul 26 2017 Ray Strode - 3.22.3-13 +- Add support for displaying lists + Resolves: #1413900 + +* Wed Jul 12 2017 Ray Strode - 3.22.3-12 +- Ensure X server is dead after logout + Resolves: #1469755 + +* Tue May 30 2017 Ray Strode - 3.22.3-11 +- Add japanese translation + Resolves: #1449632 + +* Fri May 12 2017 Ray Strode - 3.22.3-10 +- Add patches to try to maintain some semblance of compatibility + when live upgrading between 7.3 and 7.4 + Related: #1448786 + +* Thu May 04 2017 Ray Strode - 3.22.3-9 +- Make sure reauthentication is run within the user + session. + Resolves:#1448209 + +* Wed Apr 05 2017 Ray Strode 3.22.3-8 +- Reap transient login screens when they are no longer needed +- Jump to login screen if we end up on a blank VT + Resolves: #1301028 + +* Mon Apr 03 2017 Ray Strode - 3.22.3-7 +- Fix user switching + Related: #1386862 + +* Fri Mar 31 2017 Ray Strode - 3.22.3-6 +- Fix indirect XDMCP + Resolves: #1273156 + +* Thu Mar 16 2017 Ray Strode - 3.22.3-5 +- Attempt to fix po file installation + Related: #1386862 + +* Thu Mar 16 2017 Ray Strode - 3.22.3-4 +- Drop reference to wayland in config file +- use autosetup to simplify spec maintenance + Related: #1386862 + +* Fri Mar 10 2017 Ray Strode - 3.22.3-3 +- Don't fall over if autologin user isn't available + Resolves #1373837 + +* Thu Mar 9 2017 Rui Matos - 1:3.22.3-2 +- Honor anaconda's firstboot being disabled + Resolves: #1226819 + +* Mon Mar 06 2017 Ray Strode - 3.22.3-1 +- Rebase to 3.22.3 + Resolves: #1386862 + +* Wed Sep 21 2016 Ray Strode - 3.14.2-19 +- Add error traps around XKillClient calls, fixes regression + on logout + Resolves: #1377987 + +* Tue Jul 19 2016 Ray Strode - 3.14.2-18 +- Fix unlock with XDMCP + Resolves: #1315342 +- Inform remote display about session exiting when using + XDMCP + Resolves: #1313059 + +* Tue Jul 12 2016 Ray Strode - 3.14.2-17 +- Add versioned requires with gnome-shell + Resolves: #1294546 + +* Wed Apr 20 2016 Ray Strode - 3.14.2-16 +- Be more resiliant against flakey DNS with XDMCP + Resolves: #1286631 + +* Wed Apr 20 2016 Ray Strode - 3.14.2-15 +- Fix language chooser on KDE only systems + Resolves: #1298753 + +* Tue Apr 19 2016 Ray Strode - 3.14.2-14 +- Fix ups to previous patch + Related: #1282577 + +* Mon Apr 18 2016 Ray Strode 3.14.2-13 +- Allow PostLogin script to show windows + Resolves: #1282577 + +* Tue Aug 18 2015 Ray Strode 3.14.2-12 +- don't log to systemd journal so logs end up in the same + place they did in 7.1 + Resolves: #1253055 + +* Wed Aug 05 2015 Ray Strode 3.14.2-11 +- Fix console spew on gdm downgrade + Resolves: #1247969 + +* Mon Jul 27 2015 Ray Strode 3.14.2-10 +- Fix console spew introduced in language change feature + Related: #1056181 + +* Fri Jul 17 2015 Ray Strode 3.14.2-9 +- Fix crasher in previous fix if /etc/sysconfig/desktop is not around + Related: #1141676 + +* Thu Jul 16 2015 Ray Strode 3.14.2-8 +- Honor /etc/sysconfig/desktop:DESKTOP=KDE to default to kde + Resolves: #1141676 + +* Wed Jul 15 2015 Ray Strode 3.14.2-7 +- Make sure GDM is shutdown orderly so it can be restarted okay + Related: #1174564 + Resolves: 1241227 + +* Fri Jul 03 2015 Ray Strode 3.14.2-6 +- Add -audit 4 to default server flags + Resolves: #1188665 + +* Thu Jul 02 2015 Ray Strode 3.14.2-5 +- Make sure lang changes are picked up on logout + Resolves: #1056181 + +* Thu Jun 25 2015 Ray Strode 3.14.2-4 +- Make sure user customizations to gdm via /etc/dconf/db/gdm.d + continue to work following rebase. + Related: #1174564 + +* Tue Jun 23 2015 Ray Strode 3.14.2-3 +- Add hack to make gdm work on machines that don't have video cards + Resolves: #1168502 + Related: 1230255 + +* Thu May 21 2015 Ray Strode 3.14.2-2 +- Add postlogin back to pam config + (spotted by rpmdiff) + Related: #1174564 + +* Mon Mar 30 2015 Ray Strode - 1:3.14.2-1 +- Update to 3.14.2 (based on work from Richard and Kalev) +- Drop upstreamed patches + Related: #1174564 + +* Thu Nov 13 2014 Ray Strode 3.8.4-32 +- Fix session chooser for smartcard login + Resolves: #1159056 + +* Mon Oct 06 2014 Ray Strode 3.8.4-31 +- Fix race that sometimes leads to 90 second stall at shutdown + Resolves: #1107811 + +* Fri Oct 03 2014 Ray Strode 3.8.4-30 +- Fix race in timed login + Resolves: #1043571 + +* Fri May 23 2014 Ray Strode 3.8.4-29 +- rebuild for dist confusion + Related: #1086189 + +* Mon Apr 28 2014 Ray Strode 3.8.4-28 +- Fix resource leak when reauthentication client is rejected + Resolves: #1086189 + +- Don't reject reauthentication clients with uids that don't + match the uid of those clients' logind sessions. + Related: #1086189 1057179 + +* Wed Apr 23 2014 Ray Strode 3.8.4-27 +- One more PATH logic update + Related: #1080153 + Resolves: 1091053 + +* Tue Apr 22 2014 Ray Strode 3.8.4-26 +- Adjust path setting logic one more time to preserve + /sbin and /bin ordering + Related: #1080153 + Resolves: 1091053 + +* Tue Apr 01 2014 Ray Strode 3.8.4-25 +- Set proper path for worker session + Resolves: #1080153 + +* Thu Mar 27 2014 Ray Strode 3.8.4-24 +- Obsolete user-switch applet + Related: #1072801 + +* Thu Mar 27 2014 Ray Strode 3.8.4-23 +- Make sure sessions running without seats can authenticate + Resolves: #1057179 + +* Thu Mar 27 2014 Ray Strode 3.8.4-22 +- More pam-gnome-keyring fixes + Resolves: #1057179 + +* Wed Mar 26 2014 Ray Strode 3.8.4-21 +- Fix problem introduced in clear-screen patch + Resolves: #1076222 + +* Wed Mar 19 2014 Ray Strode 3.8.4-20 +- Make sure root user can reauthenticate as well + Resolves: #1057179 + +* Wed Mar 12 2014 Ray Strode 3.8.4-18 +- Make sure pam_gnome_keyring gets notified when the password is changed + in the middle of first login. + Resolves: #1075714 + +* Wed Mar 12 2014 Ray Strode 3.8.4-17 +- Fix uninitialized variable warnings noticed defect scan + Resolves: #1057179 + +* Wed Mar 12 2014 Ray Strode 3.8.4-16 +- Allow reauthentication for non GDM sessions + Resolves: #1057179 + +* Mon Feb 03 2014 Ray Strode 3.8.4-15 +- Fail simple-slave gracefully when run manually with invalid data + Resolves: #1032179 + +* Fri Jan 31 2014 Ray Strode - 1:3.8.4-14 +- Fix empty username crash + Resolves: #1049965 + +* Wed Jan 29 2014 Ray Strode - 1:3.8.4-13 +- Fix infinite recursion -> crash + Resolves: #1032509 + +* Wed Jan 29 2014 Ray Strode - 1:3.8.4-12 +- Fix memory leak + Resolves: #1020885 + +* Fri Jan 24 2014 Daniel Mach - 1:3.8.4-11 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 1:3.8.4-10 +- Mass rebuild 2013-12-27 + +* Wed Dec 11 2013 Matthias Clasen 3.8.4-9 +- Update translations +- Resolves: #1030333 + +* Wed Nov 20 2013 Ray Strode 3.8.4-8 +- Set reauth mode when reauthenticating + Resolves: #1032154 + +* Fri Nov 01 2013 Ray Strode 3.8.4-7 +- Fix XDMCP + Related: #906397 + +* Tue Aug 27 2013 Ray Strode 3.8.4-5 +- Fix crasher reported in Upstream bug 706409 + +* Wed Aug 21 2013 Ray Strode 3.8.4-4 +- Don't force smartcard authentication disabled + Related: #990630 + +* Wed Aug 21 2013 Ray Strode 3.8.4-3 +- default to classic session (again) + +* Wed Jul 31 2013 Ray Strode 3.8.4-2 +- Hook up system dconf databases to login screen + Related: #990630 + +* Tue Jul 30 2013 Ray Strode - 3.8.4-1 +- Update to 3.8.4 + +* Sat Jun 22 2013 Matthias Clasen - 3.8.3-2 +- Trim %%changelog + +* Fri Jun 14 2013 Ray Strode 3.8.3-1 +- Update to 3.8.3 + +* Tue May 21 2013 Matthias Clasen 1:3.8.1.1-6 +- Don't include the fallback greeter + +* Mon May 20 2013 Ray Strode 1:3.8.1.1-5 +- Fix permissions on /run/gdm + Resolves: #fudge + (http://lists.fedoraproject.org/pipermail/devel/2013-May/182906.html) + +* Mon May 20 2013 Ray Strode 1:3.8.1.1-4 +- Require gnome-shell. We no longer use the fallback greeter. + (Since gdm 3.7.92). + +* Fri May 17 2013 Ray Strode - 1:3.8.1.1-3 +- Build with -fpie + Resolves: #955154 + +* Thu May 16 2013 Florian Müllner - 1:3.8.1.1-2 +- Update branding + +* Wed Apr 17 2013 Richard Hughes - 1:3.8.1.1-1 +- Update to 3.8.1.1 + +* Mon Apr 15 2013 Kalev Lember - 1:3.8.1-1 +- Update to 3.8.1 + +* Mon Apr 01 2013 Kalev Lember - 1:3.8.0-2 +- Drop the metacity dep now that the fallback greeter is gone + +* Tue Mar 26 2013 Kalev Lember - 1:3.8.0-1 +- Update to 3.8.0 + +* Thu Mar 21 2013 Kalev Lember - 1:3.7.92-2 +- Drop the polkit-gnome dep now that the fallback greeter is gone + +* Wed Mar 20 2013 Richard Hughes - 1:3.7.92-1 +- Update to 3.7.92 + +* Wed Mar 6 2013 Matthias Clasen 3.7.91-1 +- Update to 3.7.91 + +* Wed Feb 27 2013 Ray Strode 3.7.90-3 +- Fix up runtime dir for real + +* Tue Feb 26 2013 Ray Strode 3.7.90-2 +- Fix up runtime dir path (spotted by dwalsh) + +* Fri Feb 22 2013 Kalev Lember - 1:3.7.90-1 +- Update to 3.7.90 + +* Wed Feb 06 2013 Kalev Lember - 1:3.7.5-1 +- Update to 3.7.5 + +* Wed Jan 09 2013 Richard Hughes - 1:3.7.3.1-1 +- Update to 3.7.3.1 + +* Tue Nov 20 2012 Richard Hughes - 1:3.7.2-1 +- Update to 3.7.2 + +* Tue Nov 20 2012 Matthias Clasen - 1:3.6.2-2 +- Remove patch fuzz of 999 + +* Wed Nov 14 2012 Kalev Lember - 1:3.6.2-1 +- Update to 3.6.2 + +* Mon Nov 05 2012 Ray Strode - 1:3.6.1-4 +- Fix GDM auth cookie problem + Related: #870695 + +* Mon Oct 29 2012 Matthias Clasen - 1:3.6.1-3 +- Add ppc to %%ExcludeArch + +* Thu Oct 18 2012 Matthias Clasen - 1:3.6.1-2 +- Require gnome-icon-theme-symbolic (#867718) + +* Tue Oct 16 2012 Kalev Lember - 1:3.6.1-1 +- Update to 3.6.1 + +* Tue Sep 25 2012 Richard Hughes - 1:3.6.0-1 +- Update to 3.6.0 + +* Wed Sep 19 2012 Matthias Clasen 1:3.5.92.1-1 +- Update to 3.5.92.1 + +* Fri Sep 07 2012 Ray Strode 1:3.5.91-2 +- Fix autologin +- Fix selinux context after forking session + +* Thu Sep 06 2012 Richard Hughes - 1:3.5.91-1 +- Update to 3.5.91 + +* Tue Aug 21 2012 Richard Hughes - 1:3.5.90-1 +- Update to 3.5.90 + +* Tue Aug 7 2012 Lennart Poettering - 1:3.5.5-2 +- https://fedoraproject.org/wiki/Features/DisplayManagerRework +- https://bugzilla.redhat.com/show_bug.cgi?id=846135 +- Ship and use gdm.service +- Force gdm onto VT1 + +* Tue Aug 07 2012 Richard Hughes - 1:3.5.5-1 +- Update to 3.5.5 + +* Fri Jul 27 2012 Fedora Release Engineering - 1:3.5.4.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jul 19 2012 Ray Strode 3.5.4.2-1 +- Update to 3.5.4.2 +- Fixes non-autologin + +* Thu Jul 19 2012 Ray Strode 3.5.4.1-1 +- Update to 3.5.4.1 +- Fixes autologin +- Fixes logind integration +- Fixes dconf incompatibility + +* Thu Jul 19 2012 Matthias Clasen - 1:3.5.4-3 +- Fix dconf profile syntax + +* Thu Jul 19 2012 Kalev Lember - 1:3.5.4-2 +- Require systemd >= 186 for libsystemd-login + +* Tue Jul 17 2012 Richard Hughes - 1:3.5.4-1 +- Update to 3.5.4 + +* Thu Jun 28 2012 Ray Strode 3.5.2-4 +- Build with plymouth support (woops). + +* Wed Jun 13 2012 Ray Strode 3.5.2-3 +- Drop unused spool dir + Related: #819254 + +* Sat Jun 9 2012 Matthias Clasen - 1:3.5.2-2 +- Fix gnome-shell detection + +* Thu Jun 07 2012 Richard Hughes - 1:3.5.2-1 +- Update to 3.5.2 + +* Sat Apr 14 2012 Matthias Clasen - 3.4.1-1 +- Update to 3.4.1 + +* Mon Apr 09 2012 Ray Strode 3.4.0.1-5 +- One more try at fixing crash + Resolves: #810451 + +* Mon Apr 09 2012 Ray Strode 3.4.0.1-4 +- Fix crash + Resolves: #810451 + +* Thu Apr 5 2012 Matthias Clasen 3.4.0.1-3 +- Make session unlocking after user switching work + +* Mon Apr 02 2012 Ray Strode 3.4.0.1-2 +- Move pam_gnome_keyring after XDG_RUNTIME_DIR is setup + Resolves: #809152 + +* Tue Mar 27 2012 Ray Strode 3.4.0.1-1 +- Update to 3.4.0.1 +- fixes autologin + +* Tue Mar 27 2012 Richard Hughes - 1:3.4.0-1 +- Update to 3.4.0 + +* Tue Mar 20 2012 Ray Strode 3.3.92.1-1 +- Update to 3.3.92.1 + +* Wed Feb 15 2012 Ray Strode 3.2.1.1-14 +- More consolekit registration fixes + +* Mon Feb 13 2012 Ray Strode 3.2.1.1-12 +- Restore ConsoleKit registration if ConsoleKit is installed + +* Tue Feb 7 2012 Lennart Poettering - 1:3.2.1.1-11 +- Add multi-seat patch from gdm git master + +* Thu Jan 26 2012 Ray Strode 3.2.1.1-10 +- Drop system-icon-theme requirement since we don't depend + on it anymore + +* Fri Jan 13 2012 Fedora Release Engineering - 1:3.2.1.1-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Wed Nov 09 2011 Adam Williamson 1:3.2.1.1-8 +- sync with recent changes on f16 branch: + + update to 3.2.1.1 + + properly set up PAM files + + auth fixes + + put fallback plugin development files in -devel + + require metacity to fix #746693 + + fix logo in fallback mode - just set it to a Fedora file + +* Thu Nov 03 2011 Ray Strode 3.2.1-3 +- Drop fprintd-pam dependency and make Harald's laptop + more lean and streamlined. + +* Wed Oct 26 2011 Fedora Release Engineering - 1:3.2.1-2 +- Rebuilt for glibc bug#747377 + +* Tue Oct 18 2011 Ray Strode 3.2.1-1 +- Update to 3.2.1 +- Move plugins into main package + +* Wed Oct 5 2011 Adam Williamson - 1:3.2.0-2 +- shell_check.patch (upstream): re-add check for gnome-shell presence + before using it to handle login (RH #743596) + +* Wed Sep 28 2011 Ray - 1:3.2.0-1 +- Update to 3.2.0 + +* Tue Jun 28 2011 Ray Strode 3.1.2-3 +- Disable fatal critcals + Resolves: #717324 + +* Tue Jun 21 2011 Michael Schwendt - 3.1.2-2 +- Fix /dev/ull typo in scriptlets (#693046). + +* Mon Jun 13 2011 Ray Strode 3.1.2-1 +- Update for release + +* Mon Jun 06 2011 Ray Strode 3.0.4-1 +- Update to latest version + Resolves CVE-2011-1709 + +* Fri Apr 15 2011 Matthias Clasen - 3.0.0-2 +- Put the Fedora logo back in the greeter + +* Mon Apr 4 2011 Matthias Clasen - 3.0.0-1 +- Update to 3.0.0 + +* Tue Mar 22 2011 Ray Strode 2.91.94-1 +- Update to 2.91.94 + +* Wed Mar 09 2011 Ray Strode 2.91.93-2 +- Fix autologin crash + +* Tue Mar 08 2011 Ray Strode 2.91.93-1 +- Update to 2.91.93 + +* Tue Feb 22 2011 Ray Strode 2.91.6-11 +- Dropping async code didn't work. The bug was still + around. This commit should fix it. + +* Fri Feb 18 2011 Ray Strode 2.91.6-10 +- Fix user list async bugs by dropping async code and + moving to accounts service library + Resolves: #678236 +- Add requires for accounts service to spec since it isn't + optional (and hasn't been for a while) + +* Thu Feb 17 2011 Ray Strode 2.91.6-9 +- Add back session chooser + Resolves: #539638 + +* Mon Feb 14 2011 Ray Strode 2.91.6-8 +- Do build with pam stack changes need to get ecryptfs + working. + Resolves: #665061 + +* Mon Feb 14 2011 Ray Strode 2.91.6-7 +- Fix crasher and rendering glitches + Resolves: #674978 + +* Fri Feb 11 2011 Matthias Clasen - 2.91.6-6 +- Rebuild against newer gtk + +* Wed Feb 09 2011 Christopher Aillon - 2.91.6-5 +- Drop the requires on plymouth-gdm-hooks since it no longer exists + +* Tue Feb 08 2011 Fedora Release Engineering - 1:2.91.6-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Feb 07 2011 Bastien Nocera 2.91.6-3 +- Really disable gnome-settings-daemon plugins in the greeter + +* Fri Feb 04 2011 Ray Strode 2.91.6-2 +- Drop some unimportant patches +- Attempt to fix bug 674978 (theme related crash) + +* Wed Feb 02 2011 Ray Strode 2.91.6-1 +- Update to 2.91.6 + +* Sat Jan 29 2011 Ville Skyttä - 1:2.91.4-6 +- Dir ownership fixes. + +* Wed Jan 19 2011 Ray Strode 2.91.4-5 +- Fix swapped LHS and RHS in more-aggressive-about-loading-icons + patch + +* Wed Jan 19 2011 Ray Strode 2.91.4-4 +- Update previous patch to handle NULL better + +* Wed Jan 19 2011 Ray Strode 2.91.4-3 +- Fix icon ref counting issue + +* Wed Jan 19 2011 Ray Strode 2.91.4-2 +- Be more aggresive about loading icons + (right now we fail, which combined with fatal criticals + gives us crashes) + +* Fri Dec 17 2010 Ray Strode 2.91.4-1 +- Update to 2.91.4 + +* Wed Dec 15 2010 Christopher Aillon 2.32.0-4 +- Add maybe-set-is-loaded.patch to ensure we end up with a loaded user + +* Wed Dec 01 2010 Peter Hutterer 1:2.32.0-3 +- plymouth.patch: xserver 1.10 takes "-background none" root argument + instead of the fedora-specific "-nr". +- Add missing BuildRequires for dbus-glib-devel + +* Mon Nov 15 2010 Dan Williams 2.32.0-2 +- Fix upower build requirement + +* Wed Sep 29 2010 Ray Strode 2.32.0-1 +- Update to 2.32.0 + +* Tue Aug 17 2010 Ray Strode 2.31.90-1 +- Update to 2.31.90 + +* Wed Jun 16 2010 Matthias Clasen 2.30.2-3 +- Kill explicit library deps + +* Tue Apr 27 2010 Ray Strode 2.30.2-2 +- Update multistack patch +- Add accounts service patch +- Update plymouth patch + +* Tue Apr 27 2010 Matthias Clasen 2.30.2-1 +- Update to 2.30.2 +- Spec file cleanups + +* Tue Apr 06 2010 Ray Strode 2.30.0-2 +- Update plymouth patch to work with 0.8.1 + +* Mon Mar 29 2010 Matthias Clasen 2.30.0-1 +- Update to 2.30.0 + +* Wed Mar 24 2010 Matthias Clasen 2.29.92-4 +- Drop hal dependency + +* Tue Mar 09 2010 Ray Strode 2.29.92-3 +- Drop Prereq in favor of Requires(pre) + +* Tue Mar 09 2010 Ray Strode 2.29.92-2 +- Rebase multistack patch + +* Tue Mar 09 2010 Bastien Nocera 2.29.92-1 +- Update to 2.29.92 + +* Thu Feb 11 2010 Matthias Clasen 2.29.6-1 +- Update to 2.29.6 + +* Thu Jan 28 2010 Ray Strode 2.29.5-2 +- name graphical-login vprovides (bug 559268) + +* Tue Jan 26 2010 Ray Strode 2.29.5-1 +- Update to 2.29.5 + +* Sun Jan 17 2010 Matthias Clasen - 2.29.4-3 +- Rebuild + +* 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 + +* Wed Dec 09 2009 Ray Strode 2.29.1-3 +- Update to work better with latest plymouth + +* Thu Dec 03 2009 Ray Strode 2.29.1-2 +- Drop upstreamed patches +- rebase multi-stack patch + +* Tue Dec 01 2009 Bastien Nocera 2.29.1-1 +- Update to 2.29.1 + +* Sat Oct 31 2009 Matthias Clasen 2.28.1-20 +- Don't show 'Lock Screen' in the user switcher if locked down + +* Sat Oct 31 2009 Matthias Clasen 2.28.1-18 +- Actually set up statusicon padding + +* Fri Oct 30 2009 Ray Strode 2.28.1-17 +- Make the user list slide animation smoother + +* Thu Oct 29 2009 Ray Strode 2.28.1-16 +- Shrink autologin timer +- Make language dialog not double spaced + +* Thu Oct 29 2009 Ray Strode 2.28.1-15 +- Don't show fingerprint task button unless fingerprint is + enabled +- Don't show smartcard task button and list item unless + pcscd is running. + +* Wed Oct 28 2009 Ray Strode 2.28.1-14 +- Don't show image on login button + +* Wed Oct 28 2009 Ray Strode 2.28.1-13 +- Fix double free during user switching (might address + bug 512944) + +* Tue Oct 27 2009 Ray Strode 2.28.1-12 +- One more go at bug 527920 + +* Tue Oct 27 2009 Ray Strode 2.28.1-11 +- Tighten permissions on /var/run/gdm (bug 531063) + +* Mon Oct 26 2009 Ray Strode 2.28.1-10 +- Position shutdown menu properly on multihead machines + +* Fri Oct 23 2009 Ray Strode 2.28.1-9 +- Don't show hostname by default if it's localhost + +* Fri Oct 23 2009 Ray Strode 2.28.1-8 +- Attempt to fix crash some users see. +- Clean up rebase + +* Fri Oct 23 2009 Ray Strode 2.28.1-7 +- Show Other user even when there are no other users + (bug 527920) + +* Fri Oct 23 2009 Ray Strode 2.28.1-6 +- Properly read default keyboard layout (bug 530452) + +* Fri Oct 23 2009 Ray Strode 2.28.1-5 +- Remove tool tip from login button + +* Thu Oct 22 2009 Ray Strode 2.28.1-4 +- Fix autologin window spasms +- Fix autologin timer animation +- Make autologin and multistack play better together +- Add padding to notification tray + +* Wed Oct 21 2009 Ray Strode 2.28.1-3 +- Move date from panel to clock tooltip + +* Tue Oct 20 2009 Ray Strode 2.28.1-2 +- Move shutdown functions to panel from login window + +* Tue Oct 20 2009 Ray Strode 2.28.1-1 +- Update to 2.28.1 + +* Fri Oct 09 2009 Ray Strode 2.28.0-9 +- Fix Other... user. + +* Fri Oct 9 2009 Matthias Clasen - 1:2.28.0-8 +- Move bubbles to the lower right on the login screen + +* Wed Oct 07 2009 Ray Strode - 1:2.28.0-7 +- Fix gdm-password / xguest interaction (bug 524421) + +* Mon Oct 5 2009 Matthias Clasen - 1:2.28.4-6 +- Fix the autostart file for at-spi-registryd + +* Thu Oct 1 2009 Matthias Clasen - 1:2.28.4-5 +- Handle keyboard layout variants + +* Mon Sep 28 2009 Ray Strode - 1:2.28.0-4 +- Add cache dir to package manifest + +* Mon Sep 28 2009 Richard Hughes - 1:2.28.0-3 +- Add a patch to use DeviceKit-power rather than the removed methods in + gnome-power-manager. + +* Fri Sep 25 2009 Ray Strode 1:2.28.0-2 +- Fix autologin + +* Wed Sep 23 2009 Matthias Clasen 1:2.28.0-1 +- Update to 2.28.0 + +* Sat Aug 29 2009 Caolán McNamara 1:2.27.90-2 +- rebuild with new audit + +* Mon Aug 24 2009 Ray Strode 1:2.27.90-1 +- update to 2.27.90 + +* Fri Aug 21 2009 Tomas Mraz - 1:2.27.4-7 +- rebuilt with new audit + +* Wed Aug 19 2009 Lennart Poettering 1:2.27.4-6 +- Add pulseaudio-gdm-hooks to dependencies + +* Thu Aug 06 2009 Ray Strode 1:2.27.4-5 +- rebuild + +* Sat Aug 1 2009 Matthias Clasen 1:2.27.4-4 +- Drop unneeded direct deps + +* Fri Jul 24 2009 Ray Strode 1:2.27.4-3 +- Fix delay during login + +* Mon Jul 20 2009 Ray Strode 1:2.27.4-2 +- Use correct multi-stack patch + +* Mon Jul 20 2009 Ray Strode 1:2.27.4-1 +- Update to 2.27.4 + +* Thu Jul 02 2009 Adam Jackson 1:2.26.1-13 +- Requires: xorg-x11-xkb-utils -> Requires: setxkbmap + +* Wed Jul 01 2009 Ray Strode - 1:2.26.1-12 +- Drop defunct arch conditional buildrequires + +* Tue Jun 30 2009 Matthias Clasen - 1:2.26.1-11 +- Rebuild against new libxklavier + +* Fri Jun 12 2009 Matthias Clasen - 1:2.26.1-10 +- Bump rev to fix upgrade path + +* Tue Jun 9 2009 Matthias Clasen - 1:2.26.1-8 +- Port to PolicyKit 1 + +* Wed Jun 03 2009 Ray Strode - 1:2.26.1-5 +- Fix language parsing code (bug 502778) + +* Mon Apr 27 2009 Matthias Clasen - 1:2.26.1-4 +- Don't drop schemas translations from po files + +* Fri Apr 24 2009 Ray Strode - 1:2.26.1-3 +- Add Requires for pam modules in plugins + +* Tue Apr 21 2009 Ray Strode - 1:2.26.1-2 +- Stop inactive pam conversations when one succeeds. + Should fix bug 496234 + +* Tue Apr 14 2009 Ray Strode - 1:2.26.1-1 +- Update to 2.26.1 + +* Mon Apr 13 2009 Ray Strode - 1:2.26.0-8 +- Add less boring multistack patch for testing + +* Mon Mar 23 2009 Ray Strode - 1:2.26.0-7 +- Load session and language settings when username is read on + Other user + +* Fri Mar 20 2009 Ray Strode - 1:2.26.0-6 +- Fix problem in keyboard layout selector (483195) + +* Thu Mar 19 2009 Ray Strode - 1:2.26.0-5 +- Use gethostname() _properly_ instead of g_get_host_name() when writing + out xauth files, because the hostname may change out from + under us and glib caches it. + +* Thu Mar 19 2009 Ray Strode - 1:2.26.0-4 +- Use gethostname() instead of g_get_host_name() when writing + out xauth files, because the hostname may change out from + under us and glib caches it. + +* Wed Mar 18 2009 Ray Strode - 1:2.26.0-3 +- emit "user-selected" signal for non-user items in the list + as well. + +* Mon Mar 16 2009 Ray Strode - 1:2.26.0-2 +- Clean up empty auth dirs so they don't hang around forever + (bug 485974) + +* Mon Mar 16 2009 Ray Strode - 1:2.26.0-1 +- Update to 2.26.0 +- Drop gcc workaround. it might not be needed now. + +* Sat Mar 14 2009 Ray Strode - 1:2.25.2-20 +- Drop the use localhost patch because it broke things. + Instead add authorization that doesn't depend on a hostname + +* Thu Mar 12 2009 Ray Strode - 1:2.25.2-19 +- Add a lame patch in the off chance it might work around a + gcc bug on ppc: + unable to find register to spill in class 'LINK_OR_CTR_REGS' + Probably won't work. + +* Thu Mar 12 2009 Ray Strode - 1:2.25.2-18 +- Add Requires: libXau >= 1.0.4-4 to use localhost in xauth cookies +- Use localhost instead of g_get_host_name () + +* Thu Mar 12 2009 Ray Strode - 1:2.25.2-17 +- Don't force X server on active vt more than once + +* Tue Mar 10 2009 Ray Strode - 1:2.25.2-16 +- Store greeter's auth cookie under "localhost" instead + of g_get_host_name() since NetworkManager tries to synchronize + the internal hostname with the externally resolvable one. + +* Mon Mar 9 2009 Ray Strode - 1:2.25.2-15 +- Don't race with PAM modules that ask questions during + pam_open_session (and don't subsequently go bonkers when + losing the race). + +* Fri Mar 6 2009 Ray Strode - 1:2.25.2-14 +- Reset "start session when ready" state to FALSE when starting + new greeter from existing slave. May fix problem Chris Ball + is seeing with language selection in autologin the second time + after boot up. + +* Thu Mar 5 2009 Ray Strode - 1:2.25.2-13 +- 2.25.2-10 fixes were actually only for timed login. + Add same fix for auto login + +* Thu Mar 5 2009 Ray Strode - 1:2.25.2-12 +- Create settings object early to prevent assertion failures + when one pam conversation completes before another starts. + +* Wed Mar 4 2009 Ray Strode - 1:2.25.2-11 +- Bring back language/session/layout selector for autologin + +* Wed Mar 4 2009 Ray Strode - 1:2.25.2-10 +- Add some fixes for autologin + +* Tue Mar 3 2009 Ray Strode - 1:2.25.2-9 +- Add limited 'one-stack-only' version of multistack patch + (See https://fedoraproject.org/wiki/Features/MultiplePAMStacksInGDM) +- Drop 10 second delay in start up because of broken autostart + file + +* Fri Feb 27 2009 Matthias Clasen +- Require PolicyKit-authentication-agent + +* Tue Feb 24 2009 Matthias Clasen +- Refine the hal patch + +* Tue Feb 24 2009 Fedora Release Engineering - 1:2.25.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Fri Feb 20 2009 Matthias Clasen - 1:2.25.2-5 +- Get the default keyboard layout out of hal device properties + instead of /etc/sysconfig/keyboard + +* Fri Feb 20 2009 Ray Strode - 1:2.25.2-4 +- add Provides: service(graphical-login) to help anaconda + +* Thu Jan 22 2009 Ray Strode - 1:2.25.2-3 +- Open log files for append to make selinux lock down easier + +* Wed Dec 17 2008 Matthias Clasen - 1:2.25.2-2 +- Update to 2.25.2 +- Drop the xkb groups workaround to see if the issue disappeared + +* Thu Dec 4 2008 Matthias Clasen - 1:2.25.1-2 +- Update to 2.25.1 + +* Mon Oct 20 2008 Matthias Clasen - 1:2.24.0-11 +- Respect system keyboard setting + +* Wed Oct 15 2008 Ray Strode - 1:2.24.0-10 +- Rework "force X on vt1" code to work after the user logs out + +* Wed Oct 15 2008 Matthias Clasen - 1:2.24.0-9 +- Save some space + +* Fri Oct 3 2008 Matthias Clasen - 1:2.24.0-8 +- Don't show a non-functional help menuitem + +* Tue Sep 30 2008 Ray Strode - 1:2.24.0-7 +- Make panel slide in initially like the gnome panel + +* Tue Sep 30 2008 Ray Strode - 1:2.24.0-6 +- drop background priority change. Choppyiness in -3 ended up + being a bug in gnome-settings-daemon. +- pull patch from upstream to scale face icons with fontsize + +* Thu Sep 25 2008 Matthias Clasen - 1:2.24.0-5 +- Require gnome-session + +* Tue Sep 23 2008 Matthias Clasen - 1:2.24.0-4 +- Let /var/lib/gdm be owned by gdm, to make pulseaudio happy + +* Tue Sep 23 2008 Ray Strode - 1:2.24.0-3 +- Load background after everything else, so the crossfade + isn't choppy. + +* Mon Sep 22 2008 Ray Strode - 1:2.24.0-2 +- Fix permssions on spool dir + +* Mon Sep 22 2008 Matthias Clasen - 1:2.24.0-1 +- Update to 2.24.0 + +* Mon Sep 22 2008 Ray Strode - 1:2.23.92-10 +- Flush X event queue after setting _XROOTPMAP_ID so there's + no race with settings daemon reading the property + +* Fri Sep 19 2008 Ray Strode - 1:2.23.92-9 +- Fix crash from language dialog + +* Wed Sep 17 2008 Ray Strode - 1:2.23.92-8 +- canonicalize codeset to match output of locale -m +- filter duplicates from language list + +* Tue Sep 16 2008 Matthias Clasen - 1:2.23.92-7 +- Plug a few memory leaks + +* Tue Sep 16 2008 Ray Strode - 1:2.23.92-6 +- Use _XROOTPMAP_ID instead of _XSETROOT_ID + +* Tue Sep 16 2008 Ray Strode - 1:2.23.92-5 +- Save root window in XSETROOTID property for transition + +* Fri Sep 12 2008 Ray Strode - 1:2.23.92-4 +- Fix bug in last patch + +* Thu Sep 11 2008 Ray Strode - 1:2.23.92-3 +- Add hook to allow for plymouth transition + +* Tue Sep 9 2008 Jon McCann - 1:2.23.92-2 +- Disallow root login + +* Mon Sep 8 2008 Jon McCann - 1:2.23.92-1 +- Update to 2.23.92-1 + +* Thu Aug 28 2008 Jon McCann - 1:2.23.91-0.20080828.2 +- Update to non-broken snapshot + +* Thu Aug 28 2008 Jon McCann - 1:2.23.91-0.20080828.1 +- Update to snapshot + +* Mon Aug 25 2008 Jon McCann - 1:2.23.90-2 +- Add desktop file for metacity + +* Mon Aug 25 2008 Jon McCann - 1:2.23.90-1 +- Update to 2.23.90 + +* Thu Aug 14 2008 Behdad Esfahbod - 1:2.23.2-3 +- Add upstreamed patch gdm-2.23.2-unknown-lang.patch + +* Wed Aug 13 2008 Ray Strode - 1:2.23.2-2 +- Require plymouth-gdm-hooks so plymouth-log-viewer gets pulled + in on upgrades + +* Wed Jul 30 2008 Jon McCann - 1:2.23.2-1 +- Update to 2.23.2 + +* Mon Jul 28 2008 Jon McCann - 1:2.23.1.0.2008.07.28.1 +- Update to newer snapshot + +* Mon Jul 21 2008 Jon McCann - 1:2.23.1.0.2008.07.21.3 +- Update to newer snapshot + +* Mon Jul 21 2008 Jon McCann - 1:2.23.1.0.2008.07.21.2 +- Update to new snapshot + +* Mon Jul 21 2008 Jon McCann - 1:2.23.1.0.2008.07.21.1 +- Update to snapshot + +* Fri Jul 11 2008 Matthias Clasen - 1:2.22.0-12 +- Actually apply the patch + +* Thu Jul 10 2008 Matthias Clasen - 1:2.22.0-11 +- Fix some broken icons on the login screen + +* Thu Jul 10 2008 Matthias Clasen - 1:2.22.0-10 +- Improve rendering of languages + +* Thu Jul 3 2008 Jon McCann - 1:2.22.0-9 +- Check for a null filesystem type + +* Wed Jun 25 2008 Ray Strode - 1:2.22.0-8 +- After discussion with X team, turn tcp connections off by default, + but add back option to toggle on (bug 446672) + +* Wed Jun 25 2008 Ray Strode - 1:2.22.0-7 +- enable tcp connections by default + +* Thu May 8 2008 Matthias Clasen - 1:2.22.0-6 +- Add a GConf key to disable the user list + +* Mon May 5 2008 Matthias Clasen - 1:2.22.0-5 +- Autoreconf +- Bump rev + +* Mon May 5 2008 Matthias Clasen - 1:2.22.0-4 +- Add a keyboard chooser to the greeter + +* Sun May 4 2008 Matthias Clasen - 1:2.22.0-3 +- Fix source url + +* Fri May 1 2008 Jon McCann - 1:2.22.0-2 +- Retry tagging + +* Fri May 1 2008 Jon McCann - 1:2.22.0-1 +- Update to 2.22.0 +- Fix restarting when bus goes away + +* Thu May 1 2008 Ray Strode - 1:2.21.10-0.2008.05.01.1 +- ConsoleKit fixes +- Don't show session selector if only one session installed +- automatically pop up language/session selectors when using mnemonics + +* Tue Apr 29 2008 Jon McCann - 1:2.21.10-0.2008.04.29.2 +- Fix debugging +- Fix resetting slave after session migration +- Desensitize power buttons briefly after page switch +- Remove Users: label from greeter + +* Tue Apr 29 2008 Jon McCann - 1:2.21.10-0.2008.04.29.1 +- make transient greeter less transient to workaround spurious vt switch + +* Mon Apr 28 2008 Ray Strode - 1:2.21.10-0.2008.04.28.1 +- a11y improvements +- make "Suspend" desensitize properly when not-available +- make resize animation faster +- user switcher fixes + +* Fri Apr 18 2008 Ray Strode - 1:2.21.10-0.2008.04.18.2 +- Get Chinese back in language list + +* Fri Apr 18 2008 Ray Strode - 1:2.21.10-0.2008.04.18.1 +- start orca without main window +- add missing priorities for plugins +- add more failsafe lockdown + +* Wed Apr 16 2008 Ray Strode - 1:2.21.10-0.2008.04.16.1 +- Disable typeahead when asking for password so password can't get shown + in clear text (bug 442300) + +* Wed Apr 16 2008 Ray Strode - 1:2.21.10-0.2008.04.11.4 +- Use start-here instead of fedora-logo-icon to aid generic-logos + +* Fri Apr 11 2008 Matthias Clasen - 1:2.21.10-0.2008.04.11.3 +- Fix up the XKB workaround + +* Fri Apr 11 2008 Ray Strode - 1:2.21.10-0.2008.04.11.2 +- Fix security issue in last commit + +* Fri Apr 11 2008 Ray Strode - 1:2.21.10-0.2008.04.11.1 +- Fix focus handling when tabbing from user-chooser to buttons +- don't set real uid to user before setcred +- fix permissions on /var/run/gdm ... again + +* Thu Apr 10 2008 Matthias Clasen - 1:2.21.10-0.2008.04.08.4 +- Work around a XKB problem + +* Tue Apr 8 2008 Ray Strode - 1:2.21.10-0.2008.04.08.3 +- Language list was incomplete (bug 441613) + +* Tue Apr 8 2008 Ray Strode - 1:2.21.10-0.2008.04.08.2 +- Fix permissions on /var/run/gdm + +* Tue Apr 8 2008 Ray Strode - 1:2.21.10-0.2008.04.08.1 +- Install X auth cookies in /var/run/gdm instead of /tmp + +* Mon Apr 7 2008 Ray Strode - 1:2.21.10-0.2008.04.07.3 +- Disable image for automatic login and other user +- Act more sanely if gnome isn't installed + +* Mon Apr 7 2008 Ray Strode - 1:2.21.10-0.2008.04.07.2 +- Allow double-click to select language from list + +* Mon Apr 7 2008 Ray Strode - 1:2.21.10-0.2008.04.07.1 +- Make automatic login timer fade in +- No more checkboxes in user-switch applet + +* Sun Apr 6 2008 Ray Strode - 1:2.21.10-0.2008.04.06.1 +- Focus face browser after failed login attempt +- disable debug messages until 2.22.0 is released + +* Sat Apr 5 2008 Matthias Clasen - 1:2.21.10-0.2008.04.04.2 +- Improve handling of CK error messages + +* Sat Apr 5 2008 Ray Strode - 1:2.21.10-0.2008.04.04.1 +- Fix jump in animation for autologin +- Fix crash if LANG="somethingbogus" + +* Sat Apr 5 2008 Ray Strode - 1:2.21.10-0.2008.04.03.3 +- Fix crash when canceling autologin + +* Fri Apr 4 2008 Matthias Clasen - 1:2.21.10-0.2008.04.03.2 +- Uninstall gconf schemas before the files are gone + +* Thu Apr 3 2008 Ray Strode - 1:2.21.10-0.2008.04.03.1 +- Update to snapshot +- Improves shrink/grow animation of login window + +* Wed Apr 2 2008 Jon McCann - 1:2.21.10-0.2008.04.02.1 +- Update to snapshot + +* Mon Mar 31 2008 Matthias Clasen - 1:2.21.10-0.2008.03.26.4 +- Fix a directory ownership oversight + +* Wed Mar 26 2008 Jon McCann - 1:2.21.10-0.2008.03.26.3 +- Fix build due to #436349 + +* Wed Mar 26 2008 Jon McCann - 1:2.21.10-0.2008.03.26.2 +- Update to newer snapshot that includes more lockdown + +* Wed Mar 26 2008 Ray Strode - 1:2.21.10-0.2008.03.26.1 +- Update to snapshot +- Turn on profiling + +* Fri Mar 21 2008 Matthias Clasen - 1:2.21.10-0.2008.03.18.3 +- Don't require a theme we don't use + +* Wed Mar 19 2008 Ray Strode - 1:2.21.10-0.2008.03.18.2 +- Fix default path (bug 430187) + +* Tue Mar 18 2008 Jon McCann - 1:2.21.10-0.2008.03.18.1 +- Update to snapshot + +* Mon Mar 17 2008 Matthias Clasen - 1:2.21.9-5 +- Implement tooltips in the language selection dialog + +* Mon Mar 17 2008 Matthias Clasen - 1:2.21.9-4 +- Stop gvfs from using fuse in the sandbox session + +* Tue Mar 11 2008 Ray Strode - 1:2.21.9-3 +- remove duplication signal definition from bad patch merge + which led to crash for "Other" user + +* Mon Mar 10 2008 Jon McCann - 1:2.21.9-2 +- Fix case where we can't lookup a user. + +* Mon Mar 10 2008 Jon McCann - 1:2.21.9-1 +- Update to 2.21.9 + +* Mon Mar 10 2008 Ray Strode - 1:2.21.9-0.2008.03.10.2 +- Prevent some spurious wake ups caused by the + timed login timer animation + +* Mon Mar 10 2008 Ray Strode - 1:2.21.9-0.2008.03.10.1 +- Update to latest snapshot + +* Fri Mar 7 2008 David Woodhouse - 1:2.21.9-0.2008.02.29.3 +- Fix endianness breakage in signal pipes (#436333) + +* Mon Mar 3 2008 Ray Strode - 1:2.21.9-0.2008.02.29.2 +- Be more explicit in file list; use less globs +- Don't package user-switcher in both packages! + +* Fri Feb 29 2008 Ray Strode - 1:2.21.9-0.2008.02.29.1 +- Update to snapshot +- Split user-switcher out + +* Mon Feb 25 2008 Jon McCann - 1:2.21.8-1 +- Update to 2.21.8 + +* Tue Feb 12 2008 Jon McCann - 1:2.21.7-1 +- Update to 2.21.7 + +* Fri Feb 8 2008 Ray Strode - 1:2.21.7-0.2008.02.08.1 +- Update to snapshot + +* Wed Jan 30 2008 Jon McCann - 1:2.21.6-1 +- Update to 2.21.6 + +* Thu Jan 24 2008 Ray Strode - 1:2.21.5-2 +- add BuildRequires for iso-codes-devel + +* Fri Jan 18 2008 Jon McCann - 1:2.21.5-1 +- Update to 2.21.5 + +* Thu Jan 17 2008 Jon McCann - 1:2.21.2-0.2007.11.20.11 +- Rebuild + +* Mon Jan 15 2008 Dan Walsh - 1:2.21.2-0.2007.11.20.10 +- Fix gdm.pam file so that session include system-auth happens after other session setup + +* Mon Jan 7 2008 Ray Strode - 1:2.21.2-0.2007.11.20.9 +- hide guest account since it doesn't work + +* Fri Dec 21 2007 Ray Strode - 1:2.21.2-0.2007.11.20.8 +- Fix background (and other settings) + +* Wed Dec 19 2007 Ray Strode - 1:2.21.2-0.2007.11.20.7 +- Improve animation to be less jumpy + +* Fri Dec 14 2007 Ray Strode - 1:2.21.2-0.2007.11.20.6 +- Fix an uninitialized variable that makes the session list stop + growing before its finished sometimes + +* Thu Dec 13 2007 Ray Strode - 1:2.21.2-0.2007.11.20.5 +- add session chooser to login screen +- add hoaky animations + +* Fri Nov 30 2007 Matthias Clasen - 1:2.21.2-0.2007.11.20.4 +- Use the new "substack" support in pam to make keyring unlocking work + +* Tue Nov 20 2007 Ray Strode - 1:2.21.2-0.2007.11.20.3 +- use metacity for now + +* Tue Nov 20 2007 Ray Strode - 1:2.21.2-0.2007.11.20.2 +- Drop dont run profile patch since dwalsh changed /usr/sbin/gdm label + +* Tue Nov 20 2007 Ray Strode - 1:2.21.2-0.2007.11.20.1 +- Update to today's snapshot + +* Mon Nov 19 2007 Ray Strode - 1:2.21.2-0.2007.11.19.3 +- fix permissions on homedir + +* Mon Nov 19 2007 Ray Strode - 1:2.21.2-0.2007.11.19.2 +- move homedir to /var/lib/gdm + +* Mon Nov 19 2007 Ray Strode - 1:2.21.2-0.2007.11.19.1 +- Update to today's snapshot + +* Thu Nov 15 2007 Ray Strode - 1:2.21.2-0.2007.11.14.2 +- don't source /etc/profile at startup + +* Wed Nov 14 2007 Ray Strode - 1:2.21.2-0.2007.11.14.1 +- Update to today's snapshot + +* Fri Nov 9 2007 Ray Strode - 1:2.21.2-0.2007.11.09.1 +- Update to today's snapshot + +* Tue Oct 30 2007 Ray Strode - 1:2.21.1-0.2007.10.30.1 +- Update to today's snapshot + +* Tue Oct 23 2007 Ray Strode - 1:2.21.1-0.2007.10.23.1 +- Update to today's snapshot + +* Mon Oct 22 2007 Ray Strode - 1:2.21.1-0.2007.10.22.1 +- Add a snapshot gdm trunk, totally different unfinished ui... + +* Fri Oct 5 2007 Dan Walsh - 1:2.20.0-14 +- Added pam_selinux_permit and pam_namespace to gdm-pam + - This pam module allows user without a password to login when selinux is in enforcing mode +- Added pam_namespace to gdm-autologin-pam +- These changes were made to make it easier to setup the xguest user account + +* Tue Oct 3 2007 Alexander Larsson - 1:2.20.0-14 +- Fix up pam keyring integration to be what the latest version + of the docs says + +* Tue Oct 2 2007 Ray Strode - 1:2.20.0-13 +- Actually add said escape == cancel behavior back + +* Tue Oct 2 2007 Ray Strode - 1:2.20.0-12 +- Add escape == cancel behavior back + +* Mon Oct 1 2007 Matthias Clasen - 1:2.20.0-11 +- Fix a refcounting problem with user faces + +* Mon Oct 1 2007 Ray Strode - 1:2.20.0-10 +- apply upstream patch from Brady Anderson + to fix writing out .dmrc file when setting default language + (upstream bug 453916) + +* Fri Sep 28 2007 Ray Strode - 1:2.20.0-9 +- drop redhat-artwork dep, add fedorainfinity-gdm-theme dep + +* Fri Sep 28 2007 Ray Strode - 1:2.20.0-8 +- Another crack at 240853 + +* Fri Sep 28 2007 Matthias Clasen - 1:2.20.0-7 +- Fix the stupid bullets again + +* Thu Sep 27 2007 Ray Strode - 1:2.20.0-6 +- The previously mentioned typo didn't matter before because the + compiled in default matched what the config file was supposed to + say. This commit restores matched default behavior (bug 301031) + +* Thu Sep 27 2007 Ray Strode - 1:2.20.0-5 +- Fix an apparent typo in the securitytokens.conf config file + (bug 301031) + +* Thu Sep 20 2007 Matthias Clasen - 1:2.20.0-4 +- Reenable root login due to popular demand + +* Wed Sep 19 2007 Matthias Clasen - 1:2.20.0-3 +- Change default theme to FedoraInfinity + +* Wed Sep 19 2007 Matthias Clasen - 1:2.20.0-2 +- Fix a hang on restart (#240853) + +* Tue Sep 18 2007 Matthias Clasen - 1:2.20.0-1 +- Update to 2.20.0 + +* Wed Sep 12 2007 Ray Strode - 1:2.19.8-4 +- Change default password character back to circle instead of + asterisk (bug 287951) + +* Fri Sep 7 2007 Ray Strode - 1:2.19.8-3 +- rebuild --with-selinux + +* Fri Sep 7 2007 Ray Strode - 1:2.19.8-2 +- make things work better for xguest users (bug 254164) + +* Fri Sep 7 2007 Matthias Clasen - 1:2.19.8-1 +- Update to 2.19.8 + +* Tue Sep 4 2007 Matthias Clasen - 1:2.19.7-1 +- Update to 2.19.7 + +* Fri Aug 24 2007 Ray Strode - 1:2.19.6-5 +- use pam_selinux instead of home grown selinux code (bug 254164) + +* Wed Aug 22 2007 Kristian Høgsberg - 1:2.19.6-4 +- Pass -br to the default X server too. + +* Sat Aug 18 2007 Ray Strode - 1:2.19.6-3 +- disable root login (see "low-hanging fruit" discussion on + fedora-desktop-list) + +* Thu Aug 16 2007 Ray Strode - 1:2.19.6-2 +- disable type ahead in user list (bug 252991) + +* Wed Aug 15 2007 Matthias Clasen - 1:2.19.6-1 +- Update to 2.19.6 +- Use %%find_lang for help files + +* Sun Aug 12 2007 Adam Jackson 1:2.19.5-9 +- Remove the filereq on /etc/pam.d/system-auth, pam alone is sufficient. +- Bump the pam requirement to 0.99, 0.75 is ancient. + +* Sun Aug 12 2007 Matthias Clasen - 1:2.19.5-8 +- Make the previous fix actually work + +* Sun Aug 12 2007 Matthias Clasen - 1:2.19.5-7 +- Make gdmsetup work with consolehelper and pam again + +* Mon Aug 6 2007 Matthias Clasen - 1:2.19.5-6 +- Require gnome-keyring-pam + +* Mon Aug 6 2007 Ray Strode - 1:2.19.5-5 +- change previous patch to drop even more code + +* Mon Aug 6 2007 Ray Strode - 1:2.19.5-4 +- turn off dwellmouselistener if devices don't send core events. + don't warp pointer to stylus ever (upstream bug 457998) + +* Fri Aug 3 2007 Ray Strode - 1:2.19.5-3 +- remove dwellmouselistener module from default configuration. + It's pretty broken (bug 248752) + +* Fri Aug 3 2007 Matthias Clasen - 1:2.19.5-2 +- Update license field + +* Tue Jul 31 2007 Matthias Clasen - 1:2.19.5-1 +- Update to 2.19.5 + +* Mon Jul 30 2007 Matthias Clasen - 1:2.19.4-2 +- Add optional gnome-keyring support to the gdm pam stack + +* Tue Jul 10 2007 Ray Strode - 1:2.19.4-1 +- Update to 2.19.4 + +* Wed Jun 27 2007 Ray Strode - 1:2.19.3-3 +- set Browser=true by default + +* Wed Jun 27 2007 Matthias Clasen - 1:2.19.3-2 +- Drop an unnecessary file dependency + +* Mon Jun 18 2007 Ray Strode - 1:2.19.3-1 +- Update to 2.19.3 + +* Tue Jun 5 2007 Matthias Clasen - 1:2.19.2-1 +- Update to 2.19.2 + +* Mon May 21 2007 Matthias Clasen - 1:2.19.1-1 +- Update to 2.19.1 + +* Tue May 15 2007 Ray Strode - 1:2.18.0-14 +- hide users from userlist that have disabled shells + (bug 240148) + +* Thu May 10 2007 Matthias Clasen - 1:2.18.0-13 +- Follow packaging guidelines for scrollkeeper dependencies + +* Mon May 7 2007 Ray Strode - 1:2.18.0-12 +- reenable utmp logging (bug 209537) + +* Tue Apr 17 2007 Ray Strode - 1:2.18.0-11 +- Be more verbose to help isolate the problem in bug 234567 + +* Thu Apr 12 2007 Ray Strode - 1:2.18.0-10 +- add "Default" session back to the sessions menu (bug 234218) + +* Thu Apr 5 2007 Ray Strode - 1:2.18.0-9 +- don't expect utf-8 usernames for plain greeter face browser + either. + +* Thu Apr 5 2007 Ray Strode - 1:2.18.0-8 +- don't expect utf-8 usernames for face browser (bug 235351). + +* Thu Mar 29 2007 Ray Strode - 1:2.18.0-7 +- don't strcpy overlapping strings (bug 208181). + +* Tue Mar 27 2007 Matthias Clasen - 1:2.18.0-6 +- Hide gdmphotosetup by default, since About Me does the same + +* Tue Mar 20 2007 Ray Strode - 1:2.18.0-5 +- add fix to allow themes to cope with low resolution modes + better (bug 232672) + +* Mon Mar 19 2007 Ray Strode - 1:2.18.0-4 +- update and reenable security token patch + +* Mon Mar 19 2007 David Zeuthen - 1:2.18.0-3 +- Also pass AT's to the session from the plain greeter (#232518) +- New faces including new subpackage gdm-extra-faces + +* Tue Mar 13 2007 David Zeuthen - 1:2.18.0-2 +- Update to upstream release 2.18.0 +- Switch default theme to FedoraFlyingHigh and show /etc/passwd users +- Fix accessibility in the themed greeter (GNOME #412576) +- Enable accessible login, make sure gdm can access devices and + pass activated AT's to the login session (#229912) +- Disable smart card login for now as patch doesn't apply anymore + +* Fri Mar 9 2007 Ray Strode - 1:2.17.8-3 +- hide langauges that aren't displayable from the list (bug 206048) + +* Tue Mar 6 2007 Ray Strode - 1:2.17.8-2 +- turn off pam sanity check because it conflicts with audit + +* Wed Feb 28 2007 Matthias Clasen - 1:2.17.8-1 +- Update to 2.17.8 + +* Sat Feb 24 2007 Matthias Clasen - 1:2.17.7-5 +- Fix keynav in the face browser + +* Fri Feb 23 2007 David Zeuthen - 1:2.17.7-4 +- Add some enhancements to the greeter (bgo #411427) + +* Fri Feb 23 2007 Ray Strode - 1:2.17.7-3 +- Update to 2.17.7 + +* Fri Feb 23 2007 Matthias Clasen - 1:2.17.7-2 +- Don't own /usr/share/icons/hicolor +- Install all desktop files + +* Mon Feb 12 2007 Matthias Clasen - 1:2.17.7-1 +- try to update to 2.17.7 +- Drop upstreamed patches + +* Mon Feb 12 2007 Matthias Clasen - 1:2.17.6-4 +- Reuse existing sessions without asking +- Don't show failsafe sessions + +* Sat Feb 10 2007 Matthias Clasen - 1:2.17.6-3 +- Fix a problem with the ConsoleKit support + +* Tue Feb 6 2007 Matthias Clasen - 1:2.17.6-2 +- Apply a patch to improve fast user switching experience + +* Tue Jan 23 2007 Matthias Clasen - 1:2.17.6-1 +- Update to 2.17.6 + +* Sat Jan 13 2007 Matthias Clasen - 1:2.17.5-2 +- Enable ConsoleKit support + +* Thu Jan 11 2007 Matthias Clasen - 1:2.17.5-1 +- Update to 2.17.5 + +* Fri Dec 15 2006 Matthias Clasen - 1:2.17.4-1 +- Update to 2.17.4, which fixes CVE-2006-6105 + +* Tue Dec 5 2006 Matthias Clasen - 1:2.17.3-1 +- Update to 2.17.3 +- Update some patches + +* Tue Nov 7 2006 Matthias Clasen - 1:2.17.2-1 +- Update to 2.17.2 + +* Sun Nov 5 2006 Matthias Clasen - 1:2.17.1-1 +- Update to 2.17.1 + +* Thu Oct 26 2006 Matthias Clasen - 1:2.17.0-2 +- Fix a crash with launching a11y support + +* Sun Oct 22 2006 Matthias Clasen - 1:2.17.0-1 +- Update to 2.17.0 + +* Tue Oct 17 2006 Matthias Clasen - 1:2.16.0-17 +- Make photosetup help button work (#198138) + +* Sun Oct 15 2006 Ray Strode - 1:2.16.0-16.fc7 +- don't log canceled pam conversations as failed login attempts + +* Sun Oct 15 2006 Ray Strode - 1:2.16.0-15.fc7 +- Prefer modules in secmod db over hardcoded coolkey path + +* Sat Oct 14 2006 Ray Strode - 1:2.16.0-14.fc7 +- have security token monitor helper process kill itself when + the communication pipe to the main process goes away (bug 210677). + +* Wed Oct 10 2006 Ray Strode - 1:2.16.0-13.fc6 +- desensitize entry fields until pam asks for input, so if pam + doesn't initially ask for input (like in smart card required mode) + the user can't type something and confuse gdm (bug 201344) + +* Fri Oct 6 2006 Ray Strode - 1:2.16.0-12.fc6 +- invoke standard X server with -br option to ensure we get a + black root on startup + +* Thu Oct 5 2006 Ray Strode - 1:2.16.0-11.fc6 +- make monitoring code more reliable (bug 208018) + +* Wed Sep 27 2006 Matthias Clasen - 1:2.16.0-10.fc6 +- Fix small issues in gdmsetup (#208225) + +* Wed Sep 27 2006 Matthias Clasen - 1:2.16.0-9.fc6 +- Fix a problem with the display of the FedoraDNA theme + in gdmsetup + +* Tue Sep 19 2006 Ray Strode - 1:2.16.0-8.fc6 +- Add as_IN, si_LK to language list (bug 203917) + +* Mon Sep 18 2006 Ray Strode - 1:2.16.0-7.fc6 +- fix a problem recently introduced in the smart card forking + code + +* Mon Sep 18 2006 Ray Strode - 1:2.16.0-6.fc6 +- fix a problem recently introduced in the smart card driver + loading code (bug 206882) + +* Thu Sep 14 2006 Ray Strode - 1:2.16.0-5.fc6 +- don't leak pipe fds (bug 206709) + +* Thu Sep 14 2006 Ray Strode - 1:2.16.0-4.fc6 +- update security token patch to not poll + +* Fri Sep 8 2006 Jesse Keating - 1:2.16.0-3.fc6 +- Apply correct defaults patch + +* Thu Sep 7 2006 Matthias Clasen - 1:2.16.0-2.fc6 +- Change the default theme to FedoraDNA +- Bump redhat-artwork requirement + +* Tue Sep 5 2006 Matthias Clasen - 1:2.16.0-1.fc6 +- Update to 2.16.0 + +* Sat Aug 26 2006 Karsten Hopp - 1:2.15.10-2.fc6 +- buildrequire inttools as this isn't a requirement of scrollkeeper anymore + and thus missing from the buildroot + +* Mon Aug 21 2006 Matthias Clasen - 1:2.15.10-1.fc6 +- Update to 2.15.10 +- Drop upstreamed patch + +* Fri Aug 4 2006 Ray Strode - 1:2.15.9-1 +- update to 2.15.9 + +* Fri Aug 4 2006 Ray Strode - 1:2.15.7-2 +- update gdmsetup pam file to use config-util stacks + +* Thu Aug 3 2006 Ray Strode - 1:2.15.7-1 +- update to 2.15.7 +- drop selinux patch that I don't think was ever finished + +* Thu Aug 3 2006 Ray Strode - 1:2.15.6-14 +- fix face browser + (http://bugzilla.gnome.org/show_bug.cgi?id=349640) +- fix error message reporting + (http://bugzilla.gnome.org/show_bug.cgi?id=349758) + +* Fri Jul 21 2006 Ray Strode - 1:2.15.6-13 +- simply all the security token code by only using one pam stack +- drop lame kill on token removal feature + +* Fri Jul 21 2006 Ray Strode - 1:2.15.6-12 +- move authcookies out of home directories to prevent problems + on nfs/afs mounted home directories (bug 178233). + +* Fri Jul 21 2006 Ray Strode - 1:2.15.6-11 +- really fix annoying dialog problem mentioned in 2.15.6-6 + +* Wed Jul 19 2006 Ray Strode - 1:2.15.6-10 +- center cursor on xinerama head (bug 180085) + +* Tue Jul 18 2006 Ray Strode - 1:2.15.6-9 +- add "kill all sessions on token removal" feature + +* Tue Jul 18 2006 Ray Strode - 1:2.15.6-8 +- reenable session keyring support in pam module (bug 198629) + +* Mon Jul 17 2006 Ray Strode - 1:2.15.6-7 +- make security token support use its own config file in + preparation for modularizing it. + +* Mon Jul 17 2006 Ray Strode - 1:2.15.6-6 +- fix off-by-one in the process-all-ops patch that was causing + an anoying dialog to pop up on each login + +* Sun Jul 16 2006 Ray Strode - 1:2.15.6-5 +- add initial wtmp and btmp logging support + +* Fri Jul 14 2006 Ray Strode - 1:2.15.6-4 +- fix bug in security token support + +* Fri Jul 14 2006 Ray Strode - 1:2.15.6-3 +- fix hang in gdmsetup + +* Fri Jul 14 2006 Ray Strode - 1:2.15.6-2 +- put new pam module at top of stack (bug 198629) + +* Wed Jul 12 2006 Ray Strode - 1:2.15.6-1 +- Update to 2.15.6 + +* Wed Jul 12 2006 Ray Strode - 1:2.15.5-4 +- add new pam module to pam files to support kernel session keyring + +* Wed Jul 12 2006 Jesse Keating - 1:2.15.5-3.1 +- rebuild + +* Tue Jul 11 2006 Ray Strode 1:2.15.5-3 +- add initial support for smart card security tokens + +* Fri Jul 7 2006 Ray Strode 1:2.15.5-2 +- add patch to process all operations when more than one comes + in really quickly +- move default "Please enter your username" message to the + greeter instead of the slave so that it doesn't get stacked if + a pam module has a non default message +- add new message for reseting the current login operation + (like the cancel button does, but accessible via the gdm fifo) + +* Tue Jun 13 2006 Matthias Clasen 1:2.15.5-1 +- Update to 2.15.5 + +* Mon Jun 12 2006 Bill Nottingham 1:2.15.3-8 +- replace automake14 buildreq with automake + +* Thu Jun 8 2006 Ray Strode 1:2.15.3-7 +- fix CVE-2006-2452 + +* Wed Jun 7 2006 Jeremy Katz - 1:2.15.3-6 +- buildrequire the server so that we get the path right in the config file + +* Tue Jun 06 2006 Karsten Hopp 1:2.15.3-5 +- buildrequire libdmx-devel + +* Mon Jun 5 2006 Matthias Clasen - 1:2.15.3-4 +- Require system-logos, not fedora-logos + +* Tue May 23 2006 Ray Strode - 1:2.15.3-3 +- Support xdm -nodaemon option (bug 192461) + +* Mon May 22 2006 Matthias Clasen - 1:2.15.3-2 +- Add missing BuildRequires (#192494) + +* Wed May 17 2006 Matthias Clasen - 1:2.15.3-1 +- Update to 2.15.3 + +* Wed May 10 2006 Matthias Clasen - 1:2.15.0-1 +- Update to 2.15.0 + +* Wed Apr 26 2006 Matthias Clasen - 1:2.14.4-2 +- Update to 2.14.4 + +* Wed Apr 12 2006 Ray Strode - 1:2.14.1-4 +- fix libexecdir substitution problem in configuration file + +* Tue Apr 11 2006 Ray Strode - 1:2.14.1-3 +- Add gdmthemetester.in to the mix (upstream bug 338079) + +* Tue Apr 11 2006 Matthias Clasen - 1:2.14.1-2 +- Update to 2.14.1 + +* Mon Mar 13 2006 Ray Strode - 1:2.14.0-1 +- Update to 2.14.0 + +* Tue Mar 7 2006 Ray Strode - 1:2.13.0.9-4 +- Follow Solaris's lead and default to AlwaysRestartServer=True + (may work around bug 182957) + +* Mon Mar 6 2006 Ray Strode - 1:2.13.0.9-3 +- migrate users with baseXsession=/etc/X11/gdm/Xsession to + /etc/X11/xinit/Xsession + +* Mon Mar 6 2006 Ray Strode - 1:2.13.0.9-2 +- disable sounds completely when disabled in configuration file + (upstream bug 333435) + +* Tue Feb 28 2006 Ray Strode - 1:2.13.0.9-1 +- Update to 2.13.0.9 +- Use new %%post section, written by + Michal Jaegermann (bug 183082) + +* Sat Feb 25 2006 Ray Strode - 1:2.13.0.8-6 +- fix a broken link + +* Fri Feb 24 2006 Ray Strode - 1:2.13.0.8-5 +- change some /etc/X11 bits in the spec file to /etc + +* Sun Feb 19 2006 Ray Strode - 1:2.13.0.8-3 +- add server entry for accel-indirect branch of xorg + +* Wed Feb 15 2006 Ray and Matthias - 1:2.13.0.8-2 +- malloc memory that is later freed + +* Mon Feb 13 2006 Ray Strode - 1:2.13.0.8-1 +- update to 2.13.0.8 + +* Mon Feb 13 2006 Ray Strode - 1:2.13.0.7.0.2006.02.12-2 +- migrate custom.conf settings with /etc/X11/gdm to /etc/gdm + +* Sun Feb 12 2006 Ray Strode - 1:2.13.0.7.0.2006.02.12-1 +- update to cvs snapshot +- move gdm to /etc instead of /etc/X11 +- move custom gdm.conf to sysconfdir instead of symlinking from + datadir (bug 180364) + +* Fri Feb 10 2006 Jesse Keating - 1:2.13.0.7-2.1 +- bump again for double-long bug on ppc(64) + +* Thu Feb 9 2006 Matthias Clasen - 2.13.0.7-2 +- Make gdmsetup use consolehelper +- Don't use deprecated pam_stack + +* Tue Feb 07 2006 Jesse Keating - 1:2.13.0.7-1.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Tue Jan 31 2006 Ray Strode - 1:2.13.0.7-1 +- update to 2.13.0.7 + +* Mon Jan 30 2006 Bill Nottingham +- silence gdm-safe-restart + +* Thu Jan 19 2006 Ray Strode - 1:2.13.0.5-7 +- sed -ie isn't the same as sed -i -e (we want the latter) + +* Wed Jan 18 2006 Christopher Aillon - 1:2.13.0.5-6 +- Add patch to fix clock to default to 24h in locales that expect it (175453) + +* Tue Jan 17 2006 Ray Strode - 1:2.13.0.5-1 +- update to 2.13.0.5 (bug 178099) + +* Tue Jan 17 2006 Ray Strode - 1:2.13.0.4-5 +- add new theme by Diana Fong, Máirín Duffy, and me + +* Mon Jan 16 2006 Ray Strode - 1:2.13.0.4-4 +- improve migration snippet (bug 177443). + +* Fri Jan 13 2006 Ray Strode - 1:2.13.0.4-3 +- migrate X server configuration for pre-modular X configurations. + Problems reported by Dennis Gregorovic + +* Mon Jan 9 2006 Ray Strode - 1:2.13.0.4-2 +- use xinit Xsession again. + +* Mon Jan 9 2006 Ray Strode - 1:2.13.0.4-1 +- update to 2.13.0.4 + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Nov 16 2005 Ray Strode - 1:2.8.0.4-13 +- Don't fallback to xsm, try gnome-session instead +- Require xorg-x11-xinit + +* Mon Nov 14 2005 Ray Strode - 1:2.8.0.4-12 +- Make sure that dbus-launch gets called if available + +* Mon Nov 14 2005 Ray Strode - 1:2.8.0.4-11 +- Don't use X session / setup files anymore. +- Don't install early login init scripts +- remove xsri dependency +- don't prune language lists anymore + +* Sun Nov 13 2005 Jeremy Katz - 1:2.8.0.4-10 +- also fix default xsession for where its moved in modular X + +* Sun Nov 13 2005 Jeremy Katz - 1:2.8.0.4-9 +- change requirements for modular X +- patch to find x server with modular X + +* Thu Oct 20 2005 Ray Strode 1:2.8.0.4-8 +- redhat-artwork was busted, require new version + +* Tue Oct 18 2005 Ray Strode 1:2.8.0.4-7 +- zero-initialize message buffer, + bug fixed by Josh Parson (jbparsons@usdavis.edu) (bug 160603) +- fix typo in redhat-artwork requires line + +* Mon Oct 17 2005 Steve Grubb 1:2.8.0.4-6 +- add login audit patch (bug 170569) + +* Mon Oct 17 2005 Ray Strode 1:2.8.0.4-5 +- bump redhat-artwork requirement to get rid of the boot + throbber for now, since it seems to have reappeared + mysteriously (bug 171025) +p +* Thu Oct 13 2005 Dan Walsh 1:2.8.0.4-4 +- Change to use getseuserbyname + +* Thu Sep 28 2005 Dan Walsh 1:2.8.0.4-3 +- Fix selinux not to fail when in permissive mode + +* Thu Sep 27 2005 Ray Strode 1:2.8.0.4-2 +- remove flexiserver from menus + +* Thu Sep 8 2005 Ray Strode 1:2.8.0.4-1 +- update to 2.8.0.4 + +* Tue Sep 6 2005 Ray Strode 1:2.8.0.2-4 +- Apply clean up patch from Steve Grubb (gnome bug 315388). + +* Tue Aug 30 2005 Ray Strode 1:2.8.0.2-3 +- Prune language list of installed languages +- Make config file noreplace again (bug 167087). + +* Sat Aug 20 2005 Ray Strode 1:2.8.0.2-2 +- hide throbber + +* Fri Aug 19 2005 Ray Strode 1:2.8.0.2-1 +- update to 2.8.0.2 +- disable early login stuff temporarily + +* Thu Aug 18 2005 Ray Strode 1:2.6.0.8-18 +- rebuild + +* Wed Aug 10 2005 Ray Strode 1:2.6.0.8-17 +- Prune uninstalled languages from language list. + +* Mon May 23 2005 Ray Strode 1:2.6.0.8-16 +- Make sure username/password incorrect message gets displayed + (bug 158127). +- reread system locale before starting gdm in early login mode + (bug 158376). + +* Thu May 19 2005 Ray Strode 1:2.6.0.8-15 +- Take out some syslog spew (bug 157711). + +* Thu May 12 2005 Ray Strode 1:2.6.0.8-14 +- Fix processing of new-line characters that got broken + in 2.6.0.8-11 (bug 157442). + +* Tue May 3 2005 Ray Strode 1:2.6.0.8-12 +- Fix processing of non-ascii characters that got broken + in 2.6.0.8-11, found by Miloslav Trmac , + (bug 156590). + +* Thu Apr 28 2005 Ray Strode 1:2.6.0.8-11 +- Fix halt command (bug 156299) +- Process all messages sent to the greeter in a read, not just + the first + +* Wed Apr 27 2005 Jeremy Katz - 1:2.6.0.8-10 +- silence %%postun + +* Tue Apr 26 2005 Ray Strode 1:2.6.0.8-9 +- Change default standard greeter theme to clearlooks and + default graphical greeter theme to Bluecurve specifically. + +- Change default path values (bug 154280) + +* Mon Apr 25 2005 Matthias Clasen 1:2.6.0.8-8 +- for early-login, delay XDMCP initialization until allow-login + +* Sun Apr 24 2005 Ray Strode 1:2.6.0.8-7 +- calling gdm_debug and g_strdup_printf from signal handlers are + bad news (Spotted by Mark McLoughlin ). + +* Tue Apr 19 2005 Matthias Clasen 1:2.6.0.8-6 +- Add a throbber for early login + +* Mon Apr 18 2005 Ray Strode 1:2.6.0.8-5 +- Don't install gnome.desktop to /usr/share/xsessions (bug 145791) + +* Thu Apr 14 2005 Matthias Clasen 1:2.6.0.8-4 +- Don't do early-login if firstboot is going to run +- Make early-login work with timed and automatic logins + +* Wed Apr 13 2005 Ray Strode 1:2.6.0.8-3 +- Don't hard code dpi setting to 96.0, but instead look at + Xft.dpi + +* Wed Apr 13 2005 Ray Strode 1:2.6.0.8-2 +- touch /var/lock/subsys/gdm-early-login so gdm gets killed on + runlevel changes (bug 154414) +- don't try to use system dpi settings for canvas text (bug 127532) +- merge resource database from displays other than :0 + +* Sat Apr 2 2005 Ray Strode 1:2.6.0.8-1 +- update to 2.6.0.8 +- add new init scripts to support early-login mode + +* Tue Mar 29 2005 Ray Strode 1:2.6.0.7-8 +- Add a --wait-for-bootup cmdline option. + +* Mon Mar 28 2005 Christopher Aillon +- rebuilt + +* Fri Mar 25 2005 Christopher Aillon 1:2.6.0.7-6 +- Update the GTK+ theme icon cache on (un)install + +* Fri Mar 11 2005 Alexandre Oliva 1:2.6.0.7-5 +- fix patch for bug 149899 (fixes bug 150745) + +* Wed Mar 09 2005 Than Ngo 1:2.6.0.7-4 +- add OnlyShowIn=GNOME; + +* Mon Feb 28 2005 Ray Strode 1:2.6.0.7-3 +- seteuid/egid as user before testing for presence of + user's home directory (fixes bug 149899) + +* Thu Feb 10 2005 Ray Strode 1:2.6.0.7-2 +- Turn off "switchdesk" mode by default which accidentally got + turned on by default in 2.6.0.5-4 + +* Wed Feb 2 2005 Matthias Clasen 1:2.6.0.7-1 +- Update to 2.6.0.7 + +* Tue Jan 25 2005 Ray Strode 1:2.6.0.5-11 +- Fix bug in greeter sort-session-list patch where selecting + a session did nothing (bug 145626) + +* Thu Dec 9 2004 Dan Walsh 1:2.6.0.5-10 +- Remove pam_selinux from gdmsetup pam file + +* Wed Dec 1 2004 Ray Strode 1:2.6.0.5-9 +- Look up and use username instead of assuming that user entered + login is cannonical. Patch from + Mike Patnode (fixes bug 141380). + +* Thu Nov 11 2004 Ray Strode 1:2.6.0.5-8 +- Sort session list so that default session comes out on top + (fixes bug 107324) + +* Wed Nov 10 2004 Ray Strode 1:2.6.0.5-7 +- Make desktop file symlink instead of absolute (bug 104390) +- Add flexiserver back to menus + +* Wed Oct 20 2004 Ray Strode 1:2.6.0.5-6 +- Clean up xses if the session was successfullly completed. + (fixes bug #136382) + +* Tue Oct 19 2004 Ray Strode 1:2.6.0.5-5 +- Prefer nb_NO over no_NO for Norwegian (fixes bug #136033) + +* Thu Oct 7 2004 Alexander Larsson - 1:2.6.0.5-4 +- Change default greeter theme to "Default", require + redhat-artwork with Default symlink. + +* Wed Sep 29 2004 Ray Strode 1:2.6.0.5-3 +- Check if there is a selected node before using iterator. + (fixes bug #133329). + +* Fri Sep 24 2004 Ray Strode 1:2.6.0.5-2 +- Don't mess with gdmphotosetup categories. Upstream categories + are fine. + +* Mon Sep 20 2004 Ray Strode 1:2.6.0.5-1 +- update to 2.6.0.5 + +* Tue Aug 3 2004 Matthias Clasen 1:2.6.0.3-5 +- fix messed up changelog + +* Tue Aug 3 2004 Matthias Clasen 1:2.6.0.3-4 +- rebuilt + +* Thu Aug 2 2004 Ray Strode 1:2.6.0.3-3 +- rebuilt + +* Mon Jul 26 2004 Bill Nottingham 1:2.6.0.3-2 +- fix theme (#128599) + +* Thu Jun 17 2004 Ray Strode 1:2.6.0.3-1 +- update to 2.6.0.3 (fixes bug #117677) + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Fri May 21 2004 Matthias Clasen 1:2.6.0.0-5 +- rebuild + +* Mon May 17 2004 Than Ngo 1:2.6.0.0-4 +- add patch to build gdm-binary with PIE + +* Thu Apr 22 2004 Mark McLoughlin - 1:2.6.0.0-3 +- Update the "use switchdesk" message to only be display when + switchdesk-gui is installed and to not reference a non existant + menu item (bug #121460) + +* Fri Apr 2 2004 Colin Walters 1:2.6.0.0-2 +- Always put session errors in /tmp, in preparation for + completely preventing gdm from writing to /home/ + +* Thu Apr 1 2004 Alex Larsson 1:2.6.0.0-1 +- update to 2.6.0.0 + +* Tue Mar 16 2004 Dan Walsh 1:2.5.90.3-1 +- Use selinux patch again + +* Tue Mar 16 2004 Dan Walsh 1:2.5.90.3-1 +- Stop using selinux patch and use pam_selinux instead. + +* Wed Mar 10 2004 Alex Larsson 1:2.5.90.2-1 +- update to 2.5.90.2 + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Thu Feb 26 2004 Alexander Larsson 1:2.5.90.1-1 +- update to 2.5.90.1 + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Tue Feb 03 2004 Warren Togami 1:2.4.4.5-9 +- add two lines to match upstream CVS to xdmcp_sessions.patch + Fully resolves #110315 and #113154 + +* Sun Feb 01 2004 Warren Togami 1:2.4.4.5-8 +- patch30 xdmcp_session counter fix from gdm-2.5.90.0 #110315 +- automake14 really needed, not automake +- BR libcroco-devel, libcroco-devel, libattr-devel, gettext +- conditionally BR libselinux-devel +- explicit epoch in all deps +- make the ja.po time format change with a sed expression rather than + overwriting the whole file (Petersen #113995) + +* Thu Jan 29 2004 Jeremy Katz - 1:2.4.4.5-7 +- fix build with current auto* + +* Tue Jan 27 2004 Jeremy Katz 1:2.4.4.5-5 +- try a simple rebuild for libcroco abi change + +* Mon Jan 26 2004 Dan Walsh 1:2.4.4.5-4 +- Fix call to is_selinux_enabled + +* Fri Jan 16 2004 Dan Walsh 1:2.4.4.5-3 +- Use /sbin/reboot and /sbin/poweroff instead of consolehelper version + +* Thu Oct 30 2003 Dan Walsh 1:2.4.4.5-2.sel +- turn on SELinux + +* Mon Oct 20 2003 Jonathan Blandford 2:2.4.4.5-1 +- get rid of the teal + +* Fri Oct 17 2003 Jonathan Blandford 1:2.4.4.5-1 +- new version + +* Thu Oct 9 2003 Jonathan Blandford 1:2.4.4.3-6.sel +- new patch from George to fix #106189 +- change bg color in rhdefaults patch +- turn off SELinux + +* Thu Oct 8 2003 Dan Walsh 1:2.4.4.3-6.sel +- turn on SELinux + +* Tue Oct 7 2003 Alexander Larsson 1:2.4.4.3-5 +- Fix greeter line-breaking crash (rest of #106189) + +* Tue Oct 7 2003 Alexander Larsson 1:2.4.4.3-4 +- Set the BaseXSession properly in the config. +- This fixes parts of bug #106189 + +* Mon Oct 6 2003 Havoc Pennington 1:2.4.4.3-3 +- change DefaultSession=Default.desktop to DefaultSession=default.desktop +- SELinux off again + +* Fri Oct 3 2003 Dan Walsh 1:2.4.4.3-2.sel +- turn on SELinux + +* Thu Oct 2 2003 Havoc Pennington 1:2.4.4.3-1 +- 2.4.4.3 +- --without-selinux for now, since libselinux not in the buildroot + +* Mon Sep 8 2003 Dan Walsh 1:2.4.4.0-4 +- turn off SELinux + +* Fri Sep 5 2003 Dan Walsh 1:2.4.4.0-3.sel +- turn on SELinux + +* Thu Sep 4 2003 Alexander Larsson 1:2.4.4.0-2 +- Use the right default session (#103546) + +* Wed Sep 3 2003 Alexander Larsson 1:2.4.4.0-1 +- update to 2.4.4.0 +- update to georges new selinux patch + +* Fri Aug 29 2003 Elliot Lee 1:2.4.2.102-2 +- Remove scrollkeeper files + +* Tue Aug 26 2003 George Lebl 1:2.4.2.102-1 +- updated to 2.4.2.102 +- removed outdated patches +- Use Xsetup_0 only for :0 since that's the way it works + for xdm +- remove the gnome.desktop file, its going into gnome-session + +* Thu Aug 14 2003 Havoc Pennington 1:2.4.1.6-1 +- update to latest bugfix version on george's advice +- remove setlocale patch that's upstream +- remove console setup patches that are upstream + +* Thu Jun 12 2003 Dan Walsh 2.4.1.3-9 +- Port to SELinux + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Tue Jun 3 2003 Jeff Johnson +- add explicit epoch's where needed. + +* Sun May 04 2003 Florian La Roche +- fix post: localstatedir -> _localstatedir + +* Thu May 1 2003 Havoc Pennington 1:2.4.1.3-6 +- enable UTF-8 for CJK + +* Mon Feb 24 2003 Elliot Lee +- debuginfo rebuild + +* Thu Feb 20 2003 Owen Taylor +- Run the error dialogs under /bin/sh --login, so we + get lang.sh, and thus unicode_start running. Fixes + the X-doesn't-start dialog showing up as random + blinking characters. + +* Fri Feb 14 2003 Havoc Pennington 1:2.4.1.3-2 +- nuke buildreq Xft + +* Wed Feb 5 2003 Havoc Pennington 1:2.4.1.3-1 +- upgrade to 2.4.1.3 + +* Mon Feb 3 2003 Matt Wilson 1:2.4.1.1-6 +- added gdm-2.4.1.1-64bit.patch to fix 64 bit crash in cookie + generation (#83334) + +* Mon Feb 3 2003 Owen Taylor +- Add patch to fix problem where setting LC_COLLATE=C would give LC_MESSAGES=wa_BE (#82019) + +* Thu Jan 30 2003 Matt Wilson 1:2.4.1.1-3 +- fix pam.d entry, pam_env wasn't properly patched +- disable optimizations on x86_64 to work around gcc bug + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Mon Jan 20 2003 Owen Taylor +- Upgrade to 2.4.1.1 (Fixes #81907) +- Redirect stdout of kill to /dev/null (#80814) + +* Thu Jan 9 2003 Havoc Pennington +- 2.4.1.0 +- add patch from george to ask "are you sure?" for shutdown/reboot since it's now just one click away + +* Thu Dec 19 2002 Havoc Pennington +- 2.4.0.12 +- update new patch for no-utf8-in-cjk +- drop patch to photo setup, now upstream +- drop confdocs patch now upstream +- move all the gdm.conf changes into single "rhconfig" patch +- remove "sid-fix" patch now upstream + +* Mon Nov 11 2002 Nalin Dahyabhai 2.4.0.7-14 +- remove the directory part of module specifications from the PAM config files, + allowing the same PAM config to work for either arch on multilib boxes + +* Thu Sep 5 2002 Owen Taylor +- Change zh_CN entry in language menu to zh_CN.GB18030 + +* Thu Sep 5 2002 Akira TAGOH 2.4.0.7-12 +- copied gdm-ja.po to ja.po. + +* Mon Sep 2 2002 Owen Taylor +- Fix problem where gdm was opening ~/.xsession-errors itself to bad effect + +* Sat Aug 31 2002 Havoc Pennington +- include ja.po with new date format + +* Wed Aug 28 2002 Havoc Pennington +- remove noreplace on gdm.conf #71309 +- make gnome-gdmsetup absolute, #72910 + +* Wed Aug 28 2002 Havoc Pennington +- put /usr/X11R6/bin in path for now fixes #72781 +- use proper i18n algorithm for word wrap, #71937 +- remove greek text from language picker due to lack + of greek font +- reorder PAM config file #72657 + +* Wed Aug 28 2002 Havoc Pennington +- improve gdmsetup icon +- remove GNOME session, we will instead put it in gnome-session +- apply patch from george to make gdmphotosetup file selector + work + +* Mon Aug 26 2002 Elliot Lee 2.4.0.7-6 +- Patches for #64902, #66486, #68483, #71308 +- post-install script changes from the gdm.spec mentioned in #70965 +- noreplace on gdm.conf for #71309 + +* Sun Aug 25 2002 Havoc Pennington +- put in a patch from george to fix some setsid()/kill() confusion + possibly fixing #72295 +- turn off UseCirclesInEntry for now, fixes #72433 + +* Tue Aug 20 2002 Alexander Larsson +- Set UseCirclesInEntry to true in config + +* Thu Aug 15 2002 Havoc Pennington +- rename Gnome session to GNOME, this was just bugging me + +* Thu Aug 8 2002 Havoc Pennington +- 2.4.0.7 with bugfixes George kindly did for me, + including mnemonics for the graphical greeter +- use Wonderland gtk theme for the nongraphical greeter +- remove patches that are now upstream + +* Tue Jul 30 2002 Havoc Pennington +- update rhconfig patch +- use pam_timestamp for the config tool +- link to a desktop file in redhat-menus +- update .gnome2 patch, filed upstream bug +- 2.4.0.4 +- rebuild with new gail, librsvg2 + +* Tue Jun 25 2002 Owen Taylor +- Require redhat-artwork, make the default greeter theme Wonderland +- Look for all configuration in .gnome2 not .gnome. This avoids problems + with changes in the set of session/lang. +- Remove English from locale.alias, make most locales UTF-8 +- Call find_lang with the right name + +* Sun Jun 16 2002 Havoc Pennington +- rebuild for new libs +- put gdm-autologin pam config file in file list, hope + its absence wasn't deliberate +- use desktop-file-install + +* Mon Jun 10 2002 Havoc Pennington +- rebuild in different environment + +* Mon Jun 10 2002 Havoc Pennington +- 2.4.0.0 + +* Tue May 21 2002 Havoc Pennington +- rebuild in different environment + +* Tue May 21 2002 Havoc Pennington +- 2.3.90.3 + +* Tue May 14 2002 Matt Wilson 2.3.90.2.90-1 +- pulled from current CVS, named it 2.3.90.2.90-1 + +* Thu Feb 14 2002 Havoc Pennington +- rebuild for new libs +- add URL tag + +* Mon Feb 11 2002 Alex Larsson 2.3.90.1.90-1 +- Updated to a cvs snapshot that has the new greeter. + +* Thu Jan 24 2002 Havoc Pennington +- rebuild in rawhide + +* Tue Sep 4 2001 Havoc Pennington +- fix #52997 (ukrainian in language list) + +* Fri Aug 31 2001 Havoc Pennington +- Add po files from sources.redhat.com + +* Mon Aug 27 2001 Havoc Pennington +- Add po files from sources.redhat.com + +* Wed Aug 15 2001 Nalin Dahyabhai +- set SESSION to true in console.apps control file + +* Tue Aug 14 2001 Havoc Pennington +- change default title font to work in CJK, #51698 + +* Wed Aug 8 2001 Bill Nottingham +- fix %pre for using /var/gdm as home dir + +* Sun Aug 5 2001 Nalin Dahyabhai +- Tweak PAM setup for gdmconfig to match other consolehelper users + +* Fri Aug 3 2001 Owen Taylor +- Set RUNNING_UNDER_GDM when running display init script +- Run xsri as the background program + +* Thu Aug 02 2001 Havoc Pennington +- Change how session switching works, #49480 +- don't offer to make Failsafe the default, #49479 + +* Thu Aug 02 2001 Havoc Pennington +- clean up some format string mess, and don't + log username to syslog, #5681 +- own some directories #50692 + +* Wed Aug 01 2001 Havoc Pennington +- require/buildrequire latest gnome-libs, to compensate + for upstream crackrock. #50554 + +* Tue Jul 31 2001 Havoc Pennington +- get rid of GiveConsole/TakeConsole, bug #33710 + +* Sun Jul 22 2001 Havoc Pennington +- use Raleigh theme for gdm + +* Thu Jul 19 2001 Havoc Pennington +- depend on usermode, xinitrc + +* Thu Jul 19 2001 Havoc Pennington +- build requires pam-devel, should fix #49448 + +* Mon Jul 16 2001 Havoc Pennington +- log to /var/log/gdm/* + +* Mon Jul 16 2001 Havoc Pennington +- make Halt... power off + +* Tue Jul 10 2001 Havoc Pennington +- gdm user's homedir to /var/gdm not /home/gdm + +* Mon Jul 09 2001 Havoc Pennington +- put pam.d/gdm back in file list + +* Sun Jul 08 2001 Havoc Pennington +- upgrade to 2.2.3.1, pray this fixes more than it breaks + +* Thu Jul 05 2001 Havoc Pennington +- add "rpm" user to those not to show in greeter + +* Tue Jul 03 2001 Havoc Pennington +- Upgrade to 2.2.3 +- require usermode since configure script now checks for it + +* Fri Jun 01 2001 Havoc Pennington +- Prereq for scrollkeeper-update + +* Thu May 30 2001 Havoc Pennington +- New CVS snap with the "no weird sessions" options; + more default settings changes + +* Wed May 30 2001 Havoc Pennington +- Change a bunch of default settings; remaining fixes will involve C hacking + +* Wed May 30 2001 Havoc Pennington +- After, oh, 2 years or so, finally upgrade version and set + release to 1. Remove all hacks and patches, pretty much; + this will break a few things, will be putting them back + via GNOME CVS. All changes should go in 'gdm2' module in + CVS for now. + + This RPM enables all kinds of features that I'm going to turn + off shortly, so don't get excited about them. ;-) + +* Thu Mar 22 2001 Nalin Dahyabhai +- reinitialize pam credentials after calling initgroups() -- the + credentials may be group memberships + +* Mon Mar 19 2001 Owen Taylor +- Fix colors patch + +* Thu Mar 15 2001 Havoc Pennington +- translations + +* Mon Mar 5 2001 Preston Brown +- don't screw up color map on 8 bit displays + +* Fri Feb 23 2001 Trond Eivind Glomsrød +- langify +- Don't define and use "ver" and "nam" at the top of the spec file +- use %%{_tmppath} + +* Tue Feb 13 2001 Tim Powers +- don't allow gdm to show some system accounts in the browser bugzilla + #26898 + +* Fri Jan 19 2001 Akira TAGOH +- Updated Japanese translation. + +* Tue Jan 02 2001 Havoc Pennington +- add another close() to the fdleak patch, bugzilla #22794 + +* Sun Aug 13 2000 Owen Taylor +- Return to toplevel main loop and start Xdcmp if enabled + (Bug #16106) + +* Fri Aug 11 2000 Jonathan Blandford +- Up Epoch and release + +* Wed Aug 02 2000 Havoc Pennington +- Requires Xsession script + +* Wed Jul 19 2000 Owen Taylor +- Italian is better as it_IT than it_CH (bugzilla 12425) + +* Mon Jul 17 2000 Jonathan Blandford +- Don't instally gdmconfig as it doesn't work. + +* Fri Jul 14 2000 Havoc Pennington +- Rearrange code to avoid calling innumerable system calls + in a signal handler + +* Fri Jul 14 2000 Havoc Pennington +- Verbose debug spew for infinite loop stuff + +* Fri Jul 14 2000 Havoc Pennington +- Try to fix infinite loops on X server failure + +* Thu Jul 13 2000 Prospector +- automatic rebuild + +* Thu Jun 29 2000 Havoc Pennington +- Remove Docdir + +* Mon Jun 19 2000 Havoc Pennington +- Fix file descriptor leak (Bugzilla 12301) + +* Mon Jun 19 2000 Havoc Pennington +- Apply security errata patch we released for 6.2 +- Add Gnome.session back, don't know when it disappeared or why + +* Thu Jun 1 2000 Nalin Dahyabhai +- modify PAM setup to use system-auth + +* Fri May 19 2000 Havoc Pennington +- rebuild for the Winston tree + +* Fri Feb 04 2000 Havoc Pennington +- Modify Default.session and Failsafe.session not to add -login option to bash +- exec the session scripts with the user's shell with a hyphen prepended +- doesn't seem to actually work yet with tcsh, but it doesn't seem to + break anything. needs a look to see why it doesn't work + +* Fri Feb 04 2000 Havoc Pennington +- Link PreSession/Default to xdm/GiveConsole +- Link PostSession/Default to xdm/TakeConsole + +* Fri Feb 04 2000 Havoc Pennington +- Fix the fix to the fix (8877) +- remove docs/gdm-manual.txt which doesn't seem to exist from %doc + +* Fri Feb 04 2000 Havoc Pennington +- Enhance 8877 fix by not deleting the "Please login" + message + +* Fri Feb 04 2000 Havoc Pennington +- Try to fix bug 8877 by clearing the message below + the entry box when the prompt changes. may turn + out to be a bad idea. + +* Mon Jan 17 2000 Elliot Lee +- Fix bug #7666: exec Xsession instead of just running it + +* Mon Oct 25 1999 Jakub Jelinek +- Work around so that russian works (uses koi8-r instead + of the default iso8859-5) + +* Tue Oct 12 1999 Owen Taylor +- Try again + +* Tue Oct 12 1999 Owen Taylor +- More fixes for i18n + +* Tue Oct 12 1999 Owen Taylor +- Fixes for i18n + +* Fri Sep 26 1999 Elliot Lee +- Fixed pipewrite bug (found by mkj & ewt). + +* Fri Sep 17 1999 Michael Fulbright +- added requires for pam >= 0.68 + +* Fri Sep 10 1999 Elliot Lee +- I just update this package every five minutes, so any recent changes are my fault. + +* Thu Sep 02 1999 Michael K. Johnson +- built gdm-2.0beta2 + +* Mon Aug 30 1999 Michael K. Johnson +- built gdm-2.0beta1 + +* Tue Aug 17 1999 Michael Fulbright +- included rmeier@liberate.com patch for tcp socket X connections + +* Mon Apr 19 1999 Michael Fulbright +- fix to handling ancient gdm config files with non-standard language specs +- dont close display connection for xdmcp connections, else we die if remote + end dies. + +* Fri Apr 16 1999 Michael Fulbright +- fix language handling to set GDM_LANG variable so gnome-session + can pick it up + +* Wed Apr 14 1999 Michael Fulbright +- fix so certain dialog boxes dont overwrite background images + +* Wed Apr 14 1999 Michael K. Johnson +- do not specify -r 42 to useradd -- it doesn't know how to fall back + if id 42 is already taken + +* Fri Apr 9 1999 Michael Fulbright +- removed suspend feature + +* Mon Apr 5 1999 Jonathan Blandford +- added patch from otaylor to not call gtk funcs from a signal. +- added patch to tab when username not added. +- added patch to center About box (and bring up only one) and ignore "~" + and ".rpm" files. + +* Fri Mar 26 1999 Michael Fulbright +- fixed handling of default session, merged all gdmgreeter patches into one + +* Tue Mar 23 1999 Michael Fulbright +- remove GNOME/KDE/AnotherLevel session scripts, these have been moved to + the appropriate packages instead. +- added patch to make option menus always active (security problem otherwise) +- added jrb's patch to disable stars in passwd entry field + +* Fri Mar 19 1999 Michael Fulbright +- made sure /usr/bin isnt in default path twice +- strip binaries + +* Wed Mar 17 1999 Michael Fulbright +- fixed to use proper system path when root logs in + +* Tue Mar 16 1999 Michael Fulbright +- linked Init/Default to Red Hat default init script for xdm +- removed logo from login dialog box + +* Mon Mar 15 1999 Michael Johnson +- pam_console integration + +* Tue Mar 09 1999 Michael Fulbright +- added session files for GNOME/KDE/AnotherLevel/Default/Failsafe +- patched gdmgreeter to not complete usernames +- patched gdmgreeter to not safe selected session permanently +- patched gdmgreeter to center dialog boxes + +* Mon Mar 08 1999 Michael Fulbright +- removed comments from gdm.conf file, these are not parsed correctly + +* Sun Mar 07 1999 Michael Fulbright +- updated source line for accuracy + +* Fri Feb 26 1999 Owen Taylor +- Updated patches for 1.0.0 +- Fixed some problems in 1.0.0 with installation directories +- moved /usr/var/gdm /var/gdm + +* Thu Feb 25 1999 Michael Fulbright +- moved files from /usr/etc to /etc + +* Tue Feb 16 1999 Michael Johnson +- removed commented-out #1 definition -- put back after testing gnome-libs + comment patch + +* Sat Feb 06 1999 Michael Johnson +- initial packaging