Accepting request 737582 from GNOME:Factory

New stable + patch

OBS-URL: https://build.opensuse.org/request/show/737582
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gdm?expand=0&rev=218
This commit is contained in:
Dominique Leuenberger 2019-10-17 11:04:46 +00:00 committed by Git OBS Bridge
commit 9cfbd35bf4
14 changed files with 215 additions and 455 deletions

View File

@ -2,9 +2,8 @@
<service name="obs_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">https://gitlab.gnome.org/GNOME/gdm.git</param>
<param name="revision">gnome-3-32</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="changesgenerate">enable</param>
<param name="revision">refs/tags/3.34.1</param>
<param name="versionformat">@PARENT_TAG@</param>
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">

View File

@ -1,4 +0,0 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://gitlab.gnome.org/GNOME/gdm.git</param>
<param name="changesrevision">0e31d869aa20e13b346af6ef6aa11cf72ba2e833</param></service></servicedata>

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0cc3a6ed7b243b359dd7a478eab7c511958230a37e331c25e5432b05a22498cc
size 7465997

3
gdm-3.34.1.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6767010dfa403267b0a2dd8242932cbbb7891da13b310e7cfbec79a34076b5e1
size 7456269

View File

@ -1,16 +1,17 @@
diff -Nura gdm-3.26.2.1/daemon/gdm-display.c gdm-3.26.2.1_new/daemon/gdm-display.c
--- gdm-3.26.2.1/daemon/gdm-display.c 2017-12-05 18:56:25.988123494 +0800
+++ gdm-3.26.2.1_new/daemon/gdm-display.c 2017-12-05 18:57:00.248398445 +0800
@@ -591,7 +591,7 @@
Index: b/daemon/gdm-display.c
===================================================================
--- a/daemon/gdm-display.c 2019-10-11 21:11:39.925180538 +0800
+++ b/daemon/gdm-display.c 2019-10-11 21:14:23.866397460 +0800
@@ -570,7 +570,7 @@ gdm_display_prepare (GdmDisplay *self)
*/
look_for_existing_users_sync (self);
- self->priv->doing_initial_setup = wants_initial_setup (self);
+ self->priv->doing_initial_setup = FALSE;
- priv->doing_initial_setup = wants_initial_setup (self);
+ priv->doing_initial_setup = FALSE;
g_object_ref (self);
ret = GDM_DISPLAY_GET_CLASS (self)->prepare (self);
@@ -1441,6 +1441,7 @@
@@ -1509,6 +1509,7 @@ on_launch_environment_session_died (GdmL
self_destruct (self);
}
@ -18,19 +19,7 @@ diff -Nura gdm-3.26.2.1/daemon/gdm-display.c gdm-3.26.2.1_new/daemon/gdm-display
static gboolean
can_create_environment (const char *session_id)
{
@@ -1454,9 +1455,11 @@
return session_exists;
}
+#endif
#define ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT GDM_RUN_DIR "/gdm.ran-initial-setup"
+#if 0
static gboolean
already_done_initial_setup_on_this_boot (void)
{
@@ -1591,6 +1594,7 @@
@@ -1660,6 +1661,7 @@ wants_initial_setup (GdmDisplay *self)
return enabled;
}
@ -38,9 +27,10 @@ diff -Nura gdm-3.26.2.1/daemon/gdm-display.c gdm-3.26.2.1_new/daemon/gdm-display
void
gdm_display_start_greeter_session (GdmDisplay *self)
diff -Nura gdm-3.26.2.1/data/gdm.schemas.in.in gdm-3.26.2.1_new/data/gdm.schemas.in.in
--- gdm-3.26.2.1/data/gdm.schemas.in.in 2017-12-05 18:56:25.982123446 +0800
+++ gdm-3.26.2.1_new/data/gdm.schemas.in.in 2017-12-05 18:57:44.712755287 +0800
Index: b/data/gdm.schemas.in
===================================================================
--- a/data/gdm.schemas.in 2019-10-11 21:11:39.925180538 +0800
+++ b/data/gdm.schemas.in 2019-10-11 21:11:43.473206874 +0800
@@ -50,7 +50,7 @@
<schema>
<key>daemon/InitialSetupEnable</key>

View File

@ -1,13 +0,0 @@
Index: gdm-3.32.0+2/daemon/gdm-display.c
===================================================================
--- gdm-3.32.0+2.orig/daemon/gdm-display.c
+++ gdm-3.32.0+2/daemon/gdm-display.c
@@ -696,7 +696,7 @@ gdm_display_unmanage (GdmDisplay *self)
}
elapsed = g_timer_elapsed (priv->server_timer, NULL);
- if (elapsed < 3) {
+ if (elapsed < 10) {
g_warning ("GdmDisplay: display lasted %lf seconds", elapsed);
_gdm_display_set_status (self, GDM_DISPLAY_FAILED);
} else {

View File

@ -0,0 +1,92 @@
Index: b/daemon/gdm-display.c
===================================================================
--- a/daemon/gdm-display.c 2019-10-07 16:56:30.000000000 +0800
+++ b/daemon/gdm-display.c 2019-10-11 18:32:02.962410140 +0800
@@ -1523,12 +1523,12 @@ can_create_environment (const char *sess
return session_exists;
}
-#define ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT GDM_RUN_DIR "/gdm.ran-initial-setup"
+#define BLOCK_INITIAL_SETUP LOCALSTATEDIR "/lib/gdm/block-initial-setup"
static gboolean
-already_done_initial_setup_on_this_boot (void)
+already_done_initial_setup (void)
{
- if (g_file_test (ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT, G_FILE_TEST_EXISTS))
+ if (g_file_test (BLOCK_INITIAL_SETUP, G_FILE_TEST_EXISTS))
return TRUE;
return FALSE;
@@ -1624,7 +1624,7 @@ wants_initial_setup (GdmDisplay *self)
priv = gdm_display_get_instance_private (self);
- if (already_done_initial_setup_on_this_boot ()) {
+ if (already_done_initial_setup ()) {
return FALSE;
}
Index: b/daemon/gdm-manager.c
===================================================================
--- a/daemon/gdm-manager.c 2019-10-07 16:56:30.000000000 +0800
+++ b/daemon/gdm-manager.c 2019-10-11 18:32:26.370601206 +0800
@@ -62,7 +62,7 @@
#define GDM_MANAGER_DISPLAYS_PATH GDM_DBUS_PATH "/Displays"
#define INITIAL_SETUP_USERNAME "gnome-initial-setup"
-#define ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT GDM_RUN_DIR "/gdm.ran-initial-setup"
+#define BLOCK_INITIAL_SETUP LOCALSTATEDIR "/lib/gdm/block-initial-setup"
typedef struct
{
@@ -1781,6 +1781,7 @@ on_start_user_session (StartUserSessionO
gboolean doing_initial_setup = FALSE;
GdmDisplay *display;
const char *session_id;
+ int fd = -1;
#if defined(ENABLE_WAYLAND_SUPPORT) && defined(ENABLE_USER_DISPLAY_SERVER)
g_autofree char *display_session_type = NULL;
#endif
@@ -1813,6 +1814,15 @@ on_start_user_session (StartUserSessionO
#endif
NULL);
+ fd = open(BLOCK_INITIAL_SETUP, O_RDONLY|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC, 0644);
+ if (fd == -1 && errno != EEXIST) {
+ g_warning ("GdmDisplay: Could not write initial-setup-done marker to %s: %s",
+ BLOCK_INITIAL_SETUP,
+ strerror(errno));
+ }
+ else {
+ close(fd);
+ }
if (doing_initial_setup)
chown_initial_setup_home_dir ();
@@ -1833,8 +1843,6 @@ on_start_user_session (StartUserSessionO
g_object_ref (display);
if (doing_initial_setup) {
- g_autoptr(GError) error = NULL;
-
#if defined(ENABLE_WAYLAND_SUPPORT) && defined(ENABLE_USER_DISPLAY_SERVER)
if (g_strcmp0 (display_session_type, "wayland") == 0) {
g_debug ("GdmManager: closing down initial setup display in background");
@@ -1847,16 +1855,6 @@ on_start_user_session (StartUserSessionO
gdm_display_unmanage (display);
gdm_display_finish (display);
}
-
- if (!g_file_set_contents (ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT,
- "1",
- 1,
- &error)) {
- g_warning ("GdmDisplay: Could not write initial-setup-done marker to %s: %s",
- ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT,
- error->message);
- g_clear_error (&error);
- }
} else {
g_debug ("GdmManager: session has its display server, reusing our server for another login screen");
}

View File

@ -1,264 +0,0 @@
Index: gdm-3.32.0+2/daemon/gdm-display-store.c
===================================================================
--- gdm-3.32.0+2.orig/daemon/gdm-display-store.c
+++ gdm-3.32.0+2/daemon/gdm-display-store.c
@@ -136,6 +136,35 @@ typedef struct
gpointer user_data;
} FindClosure;
+static void
+copy_func (StoredDisplay *stored_display,
+ FindClosure *closure)
+{
+ closure->user_data = g_list_append (closure->user_data,
+ stored_display->display);
+}
+
+GList *
+gdm_display_store_get_displays (GdmDisplayStore *store)
+{
+ GList *displays = NULL;
+ GList *store_displays = NULL;
+ FindClosure closure;
+ g_return_val_if_fail (store != NULL, NULL);
+
+ store_displays = g_hash_table_get_values (store->priv->displays);
+
+ closure.user_data = displays;
+
+ g_list_foreach (store_displays,
+ (GFunc) copy_func,
+ &closure);
+ displays = closure.user_data;
+
+ g_list_free (store_displays);
+ return displays;
+}
+
static gboolean
find_func (const char *id,
StoredDisplay *stored_display,
Index: gdm-3.32.0+2/daemon/gdm-display-store.h
===================================================================
--- gdm-3.32.0+2.orig/daemon/gdm-display-store.h
+++ gdm-3.32.0+2/daemon/gdm-display-store.h
@@ -86,6 +86,8 @@ GdmDisplay * gdm_display_store_fi
GdmDisplayStoreFunc predicate,
gpointer user_data);
+GList * gdm_display_store_get_displays (GdmDisplayStore *store);
+
G_END_DECLS
Index: gdm-3.32.0+2/daemon/gdm-manager.c
===================================================================
--- gdm-3.32.0+2.orig/daemon/gdm-manager.c
+++ gdm-3.32.0+2/daemon/gdm-manager.c
@@ -2735,9 +2735,7 @@ unexport_display (const char *id,
}
static void
-finish_display (const char *id,
- GdmDisplay *display,
- GdmManager *manager)
+finish_display (GdmDisplay *display)
{
gdm_display_stop_greeter_session (display);
if (gdm_display_get_status (display) == GDM_DISPLAY_MANAGED)
@@ -2749,6 +2747,7 @@ static void
gdm_manager_dispose (GObject *object)
{
GdmManager *manager;
+ GList *displays = NULL;
g_return_if_fail (object != NULL);
g_return_if_fail (GDM_IS_MANAGER (object));
@@ -2790,9 +2789,11 @@ gdm_manager_dispose (GObject *object)
g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (manager));
}
- gdm_display_store_foreach (manager->priv->display_store,
- (GdmDisplayStoreFunc) finish_display,
- manager);
+ displays = gdm_display_store_get_displays (manager->priv->display_store);
+ g_list_foreach (displays,
+ (GFunc) finish_display,
+ NULL);
+ g_list_free (displays);
gdm_display_store_clear (manager->priv->display_store);
Index: gdm-3.32.0+2/daemon/gdm-session-worker.c
===================================================================
--- gdm-3.32.0+2.orig/daemon/gdm-session-worker.c
+++ gdm-3.32.0+2/daemon/gdm-session-worker.c
@@ -34,6 +34,7 @@
#include <errno.h>
#include <grp.h>
#include <pwd.h>
+#include <signal.h>
#include <security/pam_appl.h>
@@ -181,6 +182,8 @@ struct GdmSessionWorkerPrivate
GdmSessionSettings *user_settings;
GDBusMethodInvocation *pending_invocation;
+
+ GMainLoop *main_loop;
};
#ifdef SUPPORTS_PAM_EXTENSIONS
@@ -197,6 +200,7 @@ enum {
PROP_0,
PROP_SERVER_ADDRESS,
PROP_IS_REAUTH_SESSION,
+ PROP_MAIN_LOOP,
};
static void gdm_session_worker_class_init (GdmSessionWorkerClass *klass);
@@ -2456,6 +2460,13 @@ gdm_session_worker_set_is_reauth_session
}
static void
+gdm_session_worker_set_main_loop (GdmSessionWorker *worker,
+ GMainLoop *main_loop)
+{
+ worker->priv->main_loop = main_loop;
+}
+
+static void
gdm_session_worker_set_property (GObject *object,
guint prop_id,
const GValue *value,
@@ -2472,6 +2483,9 @@ gdm_session_worker_set_property (GObject
case PROP_IS_REAUTH_SESSION:
gdm_session_worker_set_is_reauth_session (self, g_value_get_boolean (value));
break;
+ case PROP_MAIN_LOOP:
+ gdm_session_worker_set_main_loop (self, g_value_get_pointer (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -2495,6 +2509,9 @@ gdm_session_worker_get_property (GObject
case PROP_IS_REAUTH_SESSION:
g_value_set_boolean (value, self->priv->is_reauth_session);
break;
+ case PROP_MAIN_LOOP:
+ g_value_set_pointer (value, self->priv->main_loop);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -2764,6 +2781,16 @@ do_open_session (GdmSessionWorker *worke
worker->priv->pending_invocation = NULL;
}
+static gboolean
+on_shutdown_signal_cb (gpointer user_data)
+{
+ GMainLoop *mainloop = user_data;
+
+ g_main_loop_quit (mainloop);
+
+ return FALSE;
+}
+
static void
do_start_session (GdmSessionWorker *worker)
{
@@ -2773,6 +2800,9 @@ do_start_session (GdmSessionWorker *work
error = NULL;
res = gdm_session_worker_start_session (worker, &error);
if (res) {
+ g_unix_signal_add (SIGTERM, on_shutdown_signal_cb, worker->priv->main_loop);
+ g_unix_signal_add (SIGINT, on_shutdown_signal_cb, worker->priv->main_loop);
+
gdm_dbus_worker_complete_start_program (GDM_DBUS_WORKER (worker),
worker->priv->pending_invocation,
worker->priv->child_pid);
@@ -3471,6 +3501,13 @@ gdm_session_worker_class_init (GdmSessio
"is reauth session",
FALSE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (object_class,
+ PROP_MAIN_LOOP,
+ g_param_spec_pointer ("main-loop",
+ "main loop",
+ "main loop",
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
}
static void
@@ -3561,13 +3598,15 @@ gdm_session_worker_finalize (GObject *ob
GdmSessionWorker *
gdm_session_worker_new (const char *address,
- gboolean is_reauth_session)
+ gboolean is_reauth_session,
+ GMainLoop *main_loop)
{
GObject *object;
object = g_object_new (GDM_TYPE_SESSION_WORKER,
"server-address", address,
"is-reauth-session", is_reauth_session,
+ "main-loop", main_loop,
NULL);
return GDM_SESSION_WORKER (object);
Index: gdm-3.32.0+2/daemon/gdm-session-worker.h
===================================================================
--- gdm-3.32.0+2.orig/daemon/gdm-session-worker.h
+++ gdm-3.32.0+2/daemon/gdm-session-worker.h
@@ -51,6 +51,7 @@ typedef struct
GType gdm_session_worker_get_type (void);
GdmSessionWorker * gdm_session_worker_new (const char *server_address,
- gboolean is_for_reauth) G_GNUC_MALLOC;
+ gboolean is_for_reauth,
+ GMainLoop *main_loop) G_GNUC_MALLOC;
G_END_DECLS
#endif /* GDM_SESSION_WORKER_H */
Index: gdm-3.32.0+2/daemon/session-worker-main.c
===================================================================
--- gdm-3.32.0+2.orig/daemon/session-worker-main.c
+++ gdm-3.32.0+2/daemon/session-worker-main.c
@@ -64,12 +64,6 @@ is_debug_set (void)
return debug;
}
-static void
-on_sigterm_cb (int signal_number)
-{
- _exit (EXIT_SUCCESS);
-}
-
int
main (int argc,
char **argv)
@@ -83,8 +77,6 @@ main (int argc,
{ NULL }
};
- signal (SIGTERM, on_sigterm_cb);
-
bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
textdomain (GETTEXT_PACKAGE);
setlocale (LC_ALL, "");
@@ -120,10 +112,10 @@ main (int argc,
is_for_reauth = g_getenv ("GDM_SESSION_FOR_REAUTH") != NULL;
- worker = gdm_session_worker_new (address, is_for_reauth);
-
main_loop = g_main_loop_new (NULL, FALSE);
+ worker = gdm_session_worker_new (address, is_for_reauth, main_loop);
+
g_unix_signal_add (SIGUSR1, on_sigusr1_cb, NULL);
g_main_loop_run (main_loop);

View File

@ -1,99 +0,0 @@
Index: gdm-3.32.0+2/libgdm/gdm-sessions.c
===================================================================
--- gdm-3.32.0+2.orig/libgdm/gdm-sessions.c
+++ gdm-3.32.0+2/libgdm/gdm-sessions.c
@@ -111,14 +111,6 @@ key_file_is_relevant (GKeyFile *key_
return TRUE;
}
-static gboolean
-find_session_with_same_name (const char *id,
- GdmSessionFile *session,
- const char *translated_name)
-{
- return g_strcmp0 (session->translated_name, translated_name) == 0;
-}
-
static void
load_session_file (const char *id,
const char *path)
@@ -126,7 +118,7 @@ load_session_file (const char
GKeyFile *key_file;
GError *error;
gboolean res;
- GdmSessionFile *session, *session_with_same_name;
+ GdmSessionFile *session;
key_file = g_key_file_new ();
@@ -162,13 +154,6 @@ load_session_file (const char
session->translated_name = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, "Name", NULL, NULL);
session->translated_comment = g_key_file_get_locale_string (key_file, G_KEY_FILE_DESKTOP_GROUP, "Comment", NULL, NULL);
- session_with_same_name = g_hash_table_find (gdm_available_sessions_map,
- (GHRFunc) find_session_with_same_name,
- session->translated_name);
-
- if (session_with_same_name != NULL)
- g_hash_table_remove (gdm_available_sessions_map, session_with_same_name->id);
-
g_hash_table_insert (gdm_available_sessions_map,
g_strdup (id),
session);
@@ -176,6 +161,29 @@ load_session_file (const char
g_key_file_free (key_file);
}
+static gboolean
+remove_duplicate_sessions (gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ gboolean already_known;
+ const char *id;
+ GHashTable *names_seen_before;
+ GdmSessionFile *session;
+
+ id = (const char *) key;
+ names_seen_before = (GHashTable *) user_data;
+ session = (GdmSessionFile *) value;
+ already_known = !g_hash_table_add (names_seen_before, session->translated_name);
+
+ if (already_known)
+ g_debug ("GdmSession: Removing %s (%s) as we already have a session by this name",
+ session->id,
+ session->path);
+
+ return already_known;
+}
+
static void
collect_sessions_from_directory (const char *dirname)
{
@@ -230,6 +238,7 @@ collect_sessions_from_directory (const c
static void
collect_sessions (void)
{
+ g_autoptr(GHashTable) names_seen_before = NULL;
GArray *xorg_search_array = NULL;
GArray *wayland_search_array = NULL;
gchar *session_dir = NULL;
@@ -241,6 +250,8 @@ collect_sessions (void)
DATADIR "/xsessions/",
};
+ names_seen_before = g_hash_table_new (g_str_hash, g_str_equal);
+
xorg_search_array = g_array_new (TRUE, TRUE, sizeof (char *));
const gchar * const *system_data_dirs = g_get_system_data_dirs ();
@@ -292,6 +303,9 @@ collect_sessions (void)
g_array_free (wayland_search_array, TRUE);
#endif
+ g_hash_table_foreach_remove (gdm_available_sessions_map,
+ remove_duplicate_sessions,
+ names_seen_before);
}
/**

View File

@ -8,7 +8,7 @@ Index: gdm-3.32.0+2/daemon/main.c
+#define SHELLSCRIPT "\
+/bin/bash -c \
+\'PROCESS=\"X Xwayland\"\;\
+\'PROCESS=\"X Xwayland plymouth\"\;\
+R=$(pidof $PROCESS)\;\
+while [ $? == 0 ]\;\
+do sleep 1\;\

View File

@ -1,8 +1,7 @@
Index: gdm-3.31.91/common/gdm-common.c
===================================================================
--- gdm-3.31.91.orig/common/gdm-common.c 2019-02-21 20:44:14.000000000 +0100
+++ gdm-3.31.91/common/gdm-common.c 2019-02-27 07:47:16.998264608 +0100
@@ -632,6 +632,8 @@ gdm_get_script_environment (const char *
diff -urp gdm-3.33.90.orig/common/gdm-common.c gdm-3.33.90/common/gdm-common.c
--- gdm-3.33.90.orig/common/gdm-common.c 2019-08-13 14:42:23.000000000 -0500
+++ gdm-3.33.90/common/gdm-common.c 2019-08-31 20:49:56.456485182 -0500
@@ -631,6 +631,8 @@ gdm_get_script_environment (const char *
if (display_hostname) {
g_hash_table_insert (hash, g_strdup ("REMOTE_HOST"), g_strdup (display_hostname));
@ -11,9 +10,9 @@ Index: gdm-3.31.91/common/gdm-common.c
}
/* Runs as root */
@@ -843,3 +845,14 @@ gdm_shell_expand (const char *str,
}
return g_string_free (s, FALSE);
@@ -952,3 +954,14 @@ gdm_find_display_session_for_uid (const
return TRUE;
}
+
+char *
@ -26,11 +25,10 @@ Index: gdm-3.31.91/common/gdm-common.c
+ return g_strdup ("localhost");
+ }
+}
Index: gdm-3.31.91/common/gdm-common.h
===================================================================
--- gdm-3.31.91.orig/common/gdm-common.h 2019-02-21 20:44:14.000000000 +0100
+++ gdm-3.31.91/common/gdm-common.h 2019-02-27 07:47:16.998264608 +0100
@@ -56,6 +56,7 @@ char *gdm_generate_random_bytes
diff -urp gdm-3.33.90.orig/common/gdm-common.h gdm-3.33.90/common/gdm-common.h
--- gdm-3.33.90.orig/common/gdm-common.h 2019-08-13 14:42:23.000000000 -0500
+++ gdm-3.33.90/common/gdm-common.h 2019-08-31 20:49:56.460485202 -0500
@@ -65,6 +65,7 @@ char *gdm_generate_random_bytes
gboolean gdm_get_login_window_session_id (const char *seat_id,
char **session_id);
gboolean gdm_goto_login_session (GError **error);
@ -38,10 +36,9 @@ Index: gdm-3.31.91/common/gdm-common.h
GPtrArray *gdm_get_script_environment (const char *username,
const char *display_name,
Index: gdm-3.31.91/daemon/gdm-display-access-file.c
===================================================================
--- gdm-3.31.91.orig/daemon/gdm-display-access-file.c 2019-02-21 20:44:14.000000000 +0100
+++ gdm-3.31.91/daemon/gdm-display-access-file.c 2019-02-27 07:47:16.998264608 +0100
diff -urp gdm-3.33.90.orig/daemon/gdm-display-access-file.c gdm-3.33.90/daemon/gdm-display-access-file.c
--- gdm-3.33.90.orig/daemon/gdm-display-access-file.c 2019-08-02 14:44:35.000000000 -0500
+++ gdm-3.33.90/daemon/gdm-display-access-file.c 2019-08-31 20:49:56.460485202 -0500
@@ -441,13 +441,10 @@ _get_auth_info_for_display (GdmDisplayAc
*
* https://bugs.freedesktop.org/show_bug.cgi?id=43425
@ -59,11 +56,10 @@ Index: gdm-3.31.91/daemon/gdm-display-access-file.c
} else {
*family = FamilyWild;
gdm_display_get_remote_hostname (display, address, NULL);
Index: gdm-3.31.91/daemon/gdm-launch-environment.c
===================================================================
--- gdm-3.31.91.orig/daemon/gdm-launch-environment.c 2019-02-21 20:44:14.000000000 +0100
+++ gdm-3.31.91/daemon/gdm-launch-environment.c 2019-02-27 07:47:16.998264608 +0100
@@ -218,6 +218,11 @@ build_launch_environment (GdmLaunchEnvir
diff -urp gdm-3.33.90.orig/daemon/gdm-launch-environment.c gdm-3.33.90/daemon/gdm-launch-environment.c
--- gdm-3.33.90.orig/daemon/gdm-launch-environment.c 2019-08-13 20:37:16.000000000 -0500
+++ gdm-3.33.90/daemon/gdm-launch-environment.c 2019-08-31 20:49:56.460485202 -0500
@@ -216,6 +216,11 @@ build_launch_environment (GdmLaunchEnvir
g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id));
}
@ -75,10 +71,9 @@ Index: gdm-3.31.91/daemon/gdm-launch-environment.c
g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true"));
return hash;
Index: gdm-3.31.91/daemon/gdm-session.c
===================================================================
--- gdm-3.31.91.orig/daemon/gdm-session.c 2019-02-27 07:47:16.990264560 +0100
+++ gdm-3.31.91/daemon/gdm-session.c 2019-02-27 07:47:16.998264608 +0100
diff -urp gdm-3.33.90.orig/daemon/gdm-session.c gdm-3.33.90/daemon/gdm-session.c
--- gdm-3.33.90.orig/daemon/gdm-session.c 2019-08-31 20:49:31.756354259 -0500
+++ gdm-3.33.90/daemon/gdm-session.c 2019-08-31 20:49:56.464485224 -0500
@@ -2683,6 +2683,14 @@ set_up_session_environment (GdmSession *
}
}

View File

@ -1,3 +1,74 @@
-------------------------------------------------------------------
Tue Oct 8 11:37:53 UTC 2019 - Felix Zhang <fezhang@suse.com>
- Add gdm-initial-setup-hardening.patch: Introduce a persistent
state file to prevent gnome-initial-setup from running if any
regular users has previously logged into the system, replacing
the current runtime state file that pervents initial-setup from
running more than once per boot, so as to reduce the security
attack surface.
Make this fix openSUSE only for now as upstream discussion is
heading another way involving more complicated mechanisms
(boo#1140851, glgo#GNOME/gnome-initial-setup#76).
- Rebase gdm-disable-gnome-initial-setup.patch.
-------------------------------------------------------------------
Mon Oct 7 10:02:43 UTC 2019 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 3.34.1:
+ De-duplicate sessions on pure Xorg too.
+ Fix fast user switching by assuming the login screen VT is
always the initial one.
+ Updated translations.
-------------------------------------------------------------------
Wed Sep 18 02:59:55 UTC 2019 - Xiaoguang Wang <xwang@suse.com>
- Update gdm-switch-to-tty1.patch: switch tty after plymouth
terminates.
-------------------------------------------------------------------
Wed Sep 11 16:25:58 UTC 2019 - Bjørn Lie <bjorn.lie@gmail.com>
- Update to version 3.34.0:
+ Updated translations.
-------------------------------------------------------------------
Thu Sep 5 12:30:54 NZST 2019 - luke@ljones.dev
- Update to version 3.33.92:
+ Fix typo in debug message
+ Revert vt changing fix, because it exposes logind bug and it
wasn't quite right anyway
+ Ensure login screen gets reaped when user switching
+ Translation updates
-------------------------------------------------------------------
Sun Sep 1 01:53:57 UTC 2019 - Michael Gorse <mgorse@suse.com>
- Update to version 3.33.90:
+ Update for changes to gnome-settings-daemon.
+ initial-setup permissions fix.
+ allow users to set PATH from ~/.config/environment.
+ support systemd user sessions.
+ misc warning fixes.
+ leak fix in libgdm.
+ vt changing fix.
+ drop some deprecations.
+ drop unused icons.
+ Translation updates.
+ Changes in version 3.33.4:
+ Fix session search directories.
+ Kill user sessions when stopping gdm.
+ Add way for sessions to register when they successfully started
+ Translation updates.
- Rebased gdm-xauthlocalhostname.patch and
gdm-disable-gnome-initial-setup.patch.
- Drop gdm-fails-to-restart-gnome-shell.patch,
gdm-kill-user-session.patch, and
gdm-remove-duplicate-sessions.patch: fixed upstream.
- Drop icons and pixmaps from files.
-------------------------------------------------------------------
Fri Aug 02 19:05:30 UTC 2019 - bjorn.lie@gmail.com
@ -34,9 +105,9 @@ Thu May 9 08:58:52 UTC 2019 - Xiaoguang Wang <xwang@suse.com>
-------------------------------------------------------------------
Sun Apr 28 07:23:07 UTC 2019 - qzheng <qzheng@suse.com>
- Add gdm-remove-duplicate-sessions.patch: Backport from upstream
commit 187c8515 and 1795bb31 to remove duplicate sessions once,
after all sessions have been processed (boo#1131625,
- Add gdm-remove-duplicate-sessions.patch: Backport from upstream
commit 187c8515 and 1795bb31 to remove duplicate sessions once,
after all sessions have been processed (boo#1131625,
glgo#GNOME/gdm#473).
-------------------------------------------------------------------

View File

@ -1,5 +1,5 @@
name: gdm
version: 3.32.0+2
mtime: 1552499029
commit: 820f90f5a78b81b2e4610da14627266c2135c8b0
version: 3.34.1
mtime: 1570438590
commit: 80e010198217284d3cf52e8b334862a80b00cbd1

View File

@ -19,14 +19,15 @@
%define systemdsystemunitdir %(pkg-config --variable=systemdsystemunitdir systemd)
# FIXME: need to check what should be done to enable this (at least adapt the pam files). See bnc#699999
%define enable_split_authentication 0
Name: gdm
Version: 3.32.0+2
Version: 3.34.1
Release: 0
Summary: The GNOME Display Manager
License: GPL-2.0-or-later
Group: System/GUI/GNOME
URL: https://wiki.gnome.org/Projects/GDM
# We are using source services, so no download url for source
Source0: %{name}-%{version}.tar.xz
Source1: gdm.pamd
Source2: gdm-autologin.pamd
@ -54,16 +55,12 @@ Patch3: gdm-default-wm.patch
Patch4: gdm-xauthlocalhostname.patch
# PATCH-FIX-OPENSUSE gdm-switch-to-tty1.patch bsc#1113700 xwang@suse.com -- switch to tty1 when stopping gdm service
Patch6: gdm-switch-to-tty1.patch
# PATCH-FIX-UPSTREAM gdm-fails-to-restart-gnome-shell.patch bsc#981976 glgo#GNOME/gdm#266 tyang@suse.com -- Gdm should stop after a few times fails
Patch7: gdm-fails-to-restart-gnome-shell.patch
# PATCH-FIX-OPENSUSE gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch bnc#1075805 bgo#793255 msrb@suse.com -- Add runtime option to start X under root instead of regular user. Necessary if no DRI drivers are present. rejected upstream
Patch8: gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch
# PATCH-FIX-UPSTREAM gdm-kill-user-session.patch bsc#1112294 glgo#GNOME/gdm#400 xwang@suse.com -- Kill all sessions when stopping gdm service
Patch11: gdm-kill-user-session.patch
# PATCH-FIX-OPENSUSE gdm-initial-setup-hardening.patch boo#1140851, glgo#GNOME/gnome-initial-setup#76 fezhang@suse.com -- Prevent gnome-initial-setup running if any regular user has perviously logged into the system
Patch9: gdm-initial-setup-hardening.patch
# PATCH-FIX-OPENSUSE gdm-s390-not-require-g-s-d_wacom.patch bsc#1129412 yfjiang@suse.com -- Remove the runtime requirement of g-s-d Wacom plugin
Patch13: gdm-s390-not-require-g-s-d_wacom.patch
# PATCH-FIX-UPSTREAM gdm-remove-duplicate-sessions.patch boo#1131625 glgo#GNOME/gdm#473 qzheng@suse.com -- Remove duplicate sessions once, after all sessions have been processed.
Patch14: gdm-remove-duplicate-sessions.patch
### NOTE: Keep please SLE-only patches at bottom (starting on 1000).
# PATCH-FIX-SLE gdm-disable-gnome-initial-setup.patch bnc#1067976 qzhao@suse.com -- Disable gnome-initial-setup runs before gdm, g-i-s will only serve for CJK people to choose the input-method after login.
Patch1000: gdm-disable-gnome-initial-setup.patch
@ -214,13 +211,11 @@ cp %{SOURCE8} .
%patch3 -p1
%patch4 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch11 -p1
%patch9 -p1
%ifarch s390 s390x
%patch13 -p1
%endif
%patch14 -p1
# SLE-only patches start at 1000
%if !0%{?is_opensuse}
@ -343,8 +338,6 @@ dconf update
%{_datadir}/gdm/
%{_datadir}/gnome-session/sessions/gnome-login.session
%{_datadir}/glib-2.0/schemas/org.gnome.login-screen.gschema.xml
%{_datadir}/icons/*/*/*/*.*
%{_datadir}/pixmaps/*.png
/%{_lib}/security/pam_gdm.so
%dir %{_libexecdir}/gdm
%{_libexecdir}/gdm/gdm-*