guibuilder_pel7x64builder0
6 years ago
14 changed files with 4490 additions and 0 deletions
@ -0,0 +1,210 @@
@@ -0,0 +1,210 @@
|
||||
From d4f6b620c4c1b56e7e6421cc470eb711d7faa0eb Mon Sep 17 00:00:00 2001 |
||||
From: Rui Matos <tiagomatos@gmail.com> |
||||
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 |
||||
|
@ -0,0 +1,212 @@
@@ -0,0 +1,212 @@
|
||||
From cbddcc7c8cc8dcccc8c9a616e1decf8a3ed1cb87 Mon Sep 17 00:00:00 2001 |
||||
From: Ray Strode <rstrode@redhat.com> |
||||
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 c10c9151..f2875fcb 100644 |
||||
--- a/data/Makefile.am |
||||
+++ b/data/Makefile.am |
||||
@@ -59,74 +59,63 @@ 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,[@]X_XNEST_CMD[@],$(X_XNEST_CMD),g' \ |
||||
-e 's,[@]X_XNEST_CONFIG_OPTIONS[@],$(X_XNEST_CONFIG_OPTIONS),g' \ |
||||
-e 's,[@]X_XNEST_UNSCALED_FONTPATH[@],$(X_XNEST_UNSCALED_FONTPATH),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 \ |
||||
@@ -163,61 +152,60 @@ endif |
||||
|
||||
EXTRA_DIST += \ |
||||
$(dconf_db_files) \ |
||||
$(schemas_in_files) \ |
||||
$(schemas_DATA) \ |
||||
$(dbusconf_in_files) \ |
||||
$(localealias_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 764afd15..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.A11yKeyboard;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; |
||||
-- |
||||
2.14.2 |
||||
|
@ -0,0 +1,86 @@
@@ -0,0 +1,86 @@
|
||||
From 5c86f9731ed715bcf603c9dd93dced002f11b996 Mon Sep 17 00:00:00 2001 |
||||
From: Ray Strode <rstrode@redhat.com> |
||||
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 |
||||
|
@ -0,0 +1,103 @@
@@ -0,0 +1,103 @@
|
||||
From 0012497171500090b55e4c8e967809a5b2daaa94 Mon Sep 17 00:00:00 2001 |
||||
From: Ray Strode <rstrode@redhat.com> |
||||
Date: Wed, 14 Feb 2018 16:07:15 -0500 |
||||
Subject: [PATCH] Revert "session: don't call gdm_session_defaults_changed from |
||||
setup" |
||||
|
||||
This reverts commit 572a19324b75cc1f1b2db4908e2d7c9f06e4e335. |
||||
|
||||
It turns out we need this call for more than just the session type, |
||||
we also need to it to inform the greeter about the default session |
||||
to use. |
||||
--- |
||||
daemon/gdm-session.c | 2 ++ |
||||
1 file changed, 2 insertions(+) |
||||
|
||||
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c |
||||
index 3a1b7f23..e9cbd0ec 100644 |
||||
--- a/daemon/gdm-session.c |
||||
+++ b/daemon/gdm-session.c |
||||
@@ -2368,78 +2368,80 @@ initialize (GdmSession *self, |
||||
g_variant_builder_add_parsed (&details, "{'seat-id', <%s>}", self->priv->display_seat_id); |
||||
|
||||
if (self->priv->display_x11_authority_file != NULL) |
||||
g_variant_builder_add_parsed (&details, "{'x11-authority-file', <%s>}", self->priv->display_x11_authority_file); |
||||
|
||||
g_debug ("GdmSession: Beginning initialization"); |
||||
|
||||
conversation = find_conversation_by_name (self, service_name); |
||||
if (conversation != NULL) { |
||||
gdm_dbus_worker_call_initialize (conversation->worker_proxy, |
||||
g_variant_builder_end (&details), |
||||
|
||||
conversation->worker_cancellable, |
||||
(GAsyncReadyCallback) on_initialization_complete_cb, |
||||
conversation); |
||||
} |
||||
|
||||
g_free (extensions); |
||||
} |
||||
|
||||
void |
||||
gdm_session_setup (GdmSession *self, |
||||
const char *service_name) |
||||
{ |
||||
|
||||
g_return_if_fail (GDM_IS_SESSION (self)); |
||||
|
||||
update_session_type (self); |
||||
|
||||
initialize (self, service_name, NULL, NULL); |
||||
+ gdm_session_defaults_changed (self); |
||||
} |
||||
|
||||
|
||||
void |
||||
gdm_session_setup_for_user (GdmSession *self, |
||||
const char *service_name, |
||||
const char *username) |
||||
{ |
||||
|
||||
g_return_if_fail (GDM_IS_SESSION (self)); |
||||
g_return_if_fail (username != NULL); |
||||
|
||||
update_session_type (self); |
||||
|
||||
gdm_session_select_user (self, username); |
||||
|
||||
self->priv->is_program_session = FALSE; |
||||
initialize (self, service_name, self->priv->selected_user, NULL); |
||||
+ gdm_session_defaults_changed (self); |
||||
} |
||||
|
||||
void |
||||
gdm_session_setup_for_program (GdmSession *self, |
||||
const char *service_name, |
||||
const char *username, |
||||
const char *log_file) |
||||
{ |
||||
|
||||
g_return_if_fail (GDM_IS_SESSION (self)); |
||||
|
||||
self->priv->is_program_session = TRUE; |
||||
initialize (self, service_name, username, log_file); |
||||
} |
||||
|
||||
void |
||||
gdm_session_authenticate (GdmSession *self, |
||||
const char *service_name) |
||||
{ |
||||
GdmSessionConversation *conversation; |
||||
|
||||
g_return_if_fail (GDM_IS_SESSION (self)); |
||||
|
||||
conversation = find_conversation_by_name (self, service_name); |
||||
if (conversation != NULL) { |
||||
gdm_dbus_worker_call_authenticate (conversation->worker_proxy, |
||||
conversation->worker_cancellable, |
||||
(GAsyncReadyCallback) on_authenticate_cb, |
||||
conversation); |
||||
} |
||||
-- |
||||
2.14.3 |
||||
|
@ -0,0 +1,280 @@
@@ -0,0 +1,280 @@
|
||||
From 0522f061f30baeecff958e0deee89934baff3776 Mon Sep 17 00:00:00 2001 |
||||
From: Ray Strode <rstrode@redhat.com> |
||||
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 @@ |
||||
<arg name="session_id" direction="out" type="s"/> |
||||
</method> |
||||
<method name="SetLanguageName"> |
||||
<arg name="language" direction="in" type="s"/> |
||||
</method> |
||||
<method name="SetSessionName"> |
||||
<arg name="session_name" direction="in" type="s" /> |
||||
</method> |
||||
<method name="SetSessionDisplayMode"> |
||||
<arg name="mode" direction="in" type="s"/> |
||||
</method> |
||||
<method name="SetEnvironmentVariable"> |
||||
<arg name="name" direction="in" type="s"/> |
||||
<arg name="value" direction="in" type="s"/> |
||||
</method> |
||||
<method name="StartProgram"> |
||||
<arg name="command" direction="in" type="s"/> |
||||
<arg name="child_pid" direction="out" type="i"/> |
||||
</method> |
||||
<method name="Initialize"> |
||||
<arg name="details" direction="in" type="a{sv}"/> |
||||
</method> |
||||
<method name="Setup"> |
||||
<arg name="service_name" direction="in" type="s"/> |
||||
<arg name="x11_display_name" direction="in" type="s"/> |
||||
<arg name="x11_authority_file" direction="in" type="s"/> |
||||
<arg name="display_device" direction="in" type="s"/> |
||||
<arg name="display_seat" direction="in" type="s"/> |
||||
<arg name="hostname" direction="in" type="s"/> |
||||
<arg name="display_is_local" direction="in" type="b"/> |
||||
- <arg name="display_is_initial" direction="in" type="b"/> |
||||
</method> |
||||
<method name="SetupForUser"> |
||||
<arg name="service_name" direction="in" type="s"/> |
||||
<arg name="user_name" direction="in" type="s"/> |
||||
<arg name="x11_display_name" direction="in" type="s"/> |
||||
<arg name="x11_authority_file" direction="in" type="s"/> |
||||
<arg name="display_device" direction="in" type="s"/> |
||||
<arg name="display_seat" direction="in" type="s"/> |
||||
<arg name="hostname" direction="in" type="s"/> |
||||
<arg name="display_is_local" direction="in" type="b"/> |
||||
- <arg name="display_is_initial" direction="in" type="b"/> |
||||
</method> |
||||
<method name="SetupForProgram"> |
||||
<arg name="service_name" direction="in" type="s"/> |
||||
<arg name="user_name" direction="in" type="s"/> |
||||
<arg name="x11_display_name" direction="in" type="s"/> |
||||
<arg name="x11_authority_file" direction="in" type="s"/> |
||||
<arg name="display_device" direction="in" type="s"/> |
||||
<arg name="display_seat" direction="in" type="s"/> |
||||
<arg name="hostname" direction="in" type="s"/> |
||||
<arg name="display_is_local" direction="in" type="b"/> |
||||
- <arg name="display_is_initial" direction="in" type="b"/> |
||||
<arg name="log_file" direction="in" type="s"/> |
||||
</method> |
||||
<method name="StartReauthentication"> |
||||
<arg name="pid_of_caller" direction="in" type="i"/> |
||||
<arg name="uid_of_caller" direction="in" type="i"/> |
||||
<arg name="address" direction="out" type="s"/> |
||||
</method> |
||||
|
||||
<signal name="SessionExited"> |
||||
<arg name="service_name" type="s" /> |
||||
<!-- This is a combination of exit code and exit |
||||
signal. Use macros in sys/wait.h to handle it. --> |
||||
<arg name="status" type="i" /> |
||||
</signal> |
||||
<signal name="SavedLanguageNameRead"> |
||||
<arg name="language_name" type="s"/> |
||||
</signal> |
||||
<signal name="SavedSessionNameRead"> |
||||
<arg name="session_name" type="s"/> |
||||
</signal> |
||||
<signal name="UsernameChanged"> |
||||
<arg name="new_username" type="s"/> |
||||
</signal> |
||||
<signal name="Reauthenticated"> |
||||
<arg name="service_name" type="s"/> |
||||
</signal> |
||||
<signal name="CancelPendingQuery"> |
||||
</signal> |
||||
</interface> |
||||
</node> |
||||
-- |
||||
2.14.2 |
||||
|
@ -0,0 +1,45 @@
@@ -0,0 +1,45 @@
|
||||
From 6effb1671a917adb3ed8f77f5e13324e8b455c32 Mon Sep 17 00:00:00 2001 |
||||
From: Ray Strode <rstrode@redhat.com> |
||||
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 |
||||
|
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
From e21c8b8fcdd3365ac19ae4024c0f615526358072 Mon Sep 17 00:00:00 2001 |
||||
From: Ray Strode <rstrode@redhat.com> |
||||
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 |
||||
|
@ -0,0 +1,104 @@
@@ -0,0 +1,104 @@
|
||||
From be25f936f6568af9019bf446c3cf2a19de5e167f Mon Sep 17 00:00:00 2001 |
||||
From: Ray Strode <rstrode@localhost.localdomain> |
||||
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 |
||||
|
@ -0,0 +1,147 @@
@@ -0,0 +1,147 @@
|
||||
From a17354e67eab4a294c30ec3e8b407057c6fb5f80 Mon Sep 17 00:00:00 2001 |
||||
From: Ray Strode <rstrode@redhat.com> |
||||
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 |
||||
|
@ -0,0 +1,195 @@
@@ -0,0 +1,195 @@
|
||||
From 45848cf2625eaec34a07c03fdee624c8a2cb76de Mon Sep 17 00:00:00 2001 |
||||
From: Ray Strode <rstrode@redhat.com> |
||||
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 |
||||
|
@ -0,0 +1,53 @@
@@ -0,0 +1,53 @@
|
||||
From 5337f1094ecedf50bcfb9a000ac6b99bd95ffea2 Mon Sep 17 00:00:00 2001 |
||||
From: Ray Strode <rstrode@redhat.com> |
||||
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 |
||||
|
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
[org.gnome.login-screen] |
||||
logo='/usr/share/pixmaps/fedora-gdm-logo.png' |
||||
enable-smartcard-authentication=true |
@ -0,0 +1,24 @@
@@ -0,0 +1,24 @@
|
||||
From 2cd39fafe8109a41d1e87b8ba89a2c3229d71a01 Mon Sep 17 00:00:00 2001 |
||||
From: Ray Strode <rstrode@redhat.com> |
||||
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 |
||||
|
Loading…
Reference in new issue