Hello community, here is the log from the commit of package lightdm for openSUSE:Factory checked in at 2018-07-06 10:44:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/lightdm (Old) and /work/SRC/openSUSE:Factory/.lightdm.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lightdm" Fri Jul 6 10:44:11 2018 rev:97 rq:620940 version:1.26.0 Changes: -------- --- /work/SRC/openSUSE:Factory/lightdm/lightdm.changes 2018-03-18 21:45:15.844807104 +0100 +++ /work/SRC/openSUSE:Factory/.lightdm.new/lightdm.changes 2018-07-06 10:44:18.339089770 +0200 @@ -1,0 +2,18 @@ +Thu Apr 12 14:19:31 UTC 2018 - [email protected] + +- Update to version 1.26.0: + * Fix build system to require C99. + * Support moc being called moc-qt5. + * Fail configure if MOC can't be found. + * Use AccountsService extension system for extended greeter + information. + * Fix incorrect use of ConsoleKit CanSuspend/Hibernate API. + * Use standard format for arguments passed to qtchooser. + * Modernise code style. +- Rebase lightdm-disable-utmp-handling.patch, + lightdm-set-gdmflexiserver-envvar.patch, + lightdm-sysconfig-support.patch, + lightdm-xauthlocalhostname-support.patch. +- Rename and rebase lightdm-ignore-known-symlink-sessions.patch. + +------------------------------------------------------------------- Old: ---- ignore-known-symlink-sessions.patch lightdm-1.24.1.tar.xz New: ---- lightdm-1.26.0.tar.xz lightdm-ignore-known-symlink-sessions.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lightdm.spec ++++++ --- /var/tmp/diff_new_pack.aCNH2H/_old 2018-07-06 10:44:19.527088356 +0200 +++ /var/tmp/diff_new_pack.aCNH2H/_new 2018-07-06 10:44:19.531088351 +0200 @@ -27,7 +27,7 @@ %define typelibname typelib-1_0-LightDM-1 %define rundir /run Name: lightdm -Version: 1.24.1 +Version: 1.26.0 Release: 0 Summary: Lightweight, Cross-desktop Display Manager License: GPL-3.0-or-later @@ -50,7 +50,7 @@ # PATCH-FIX-OPENSUSE lightdm-use-run-dir.patch [email protected] -- Use /run instead of /var/run Patch4: lightdm-use-run-dir.patch # PATCH-FIX-OPENSUSE ignore-known-symlink-sessions.patch boo#1030873 -- Ignore known synlink sessions. -Patch5: ignore-known-symlink-sessions.patch +Patch5: lightdm-ignore-known-symlink-sessions.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: gcc-c++ @@ -303,6 +303,11 @@ %{_libexecdir}/X11/displaymanagers/default-displaymanager %ghost %{_sysconfdir}/alternatives/default-displaymanager %{_datadir}/lightdm/ +%dir %{_datadir}/accountsservice/ +%dir %{_datadir}/accountsservice/interfaces/ +%{_datadir}/accountsservice/interfaces/org.freedesktop.DisplayManager.AccountsService.xml +%{_datadir}/dbus-1/interfaces/org.freedesktop.DisplayManager.AccountsService.xml +%{_datadir}/polkit-1/actions/org.freedesktop.DisplayManager.AccountsService.policy %dir %{_datadir}/bash-completion/ %dir %{_datadir}/bash-completion/completions/ %{_datadir}/bash-completion/completions/dm-tool ++++++ lightdm-1.24.1.tar.xz -> lightdm-1.26.0.tar.xz ++++++ ++++ 25369 lines of diff (skipped) ++++++ lightdm-disable-utmp-handling.patch ++++++ --- /var/tmp/diff_new_pack.aCNH2H/_old 2018-07-06 10:44:19.859087961 +0200 +++ /var/tmp/diff_new_pack.aCNH2H/_new 2018-07-06 10:44:19.863087956 +0200 @@ -1,5 +1,5 @@ -# HG changeset patch -# Parent ce2ab1b9285a9408ec9673b555b398c2af18de62 +# git changeset patch +# Parent e4be60aa2d0234c4c8714033287e482e5673b18c disable utmp handling since this is handled in the Xstartup/Xreset scripts --- a/src/session-child.c @@ -15,7 +15,7 @@ #include <sys/mman.h> #if HAVE_LIBAUDIT -@@ -202,6 +204,7 @@ read_xauth (void) +@@ -192,6 +194,7 @@ read_xauth (void) return x_authority_new (x_authority_family, x_authority_address, x_authority_address_length, x_authority_number, x_authority_name, x_authority_data, x_authority_data_length); } @@ -23,7 +23,7 @@ /* GNU provides this but we can't rely on that so let's make our own version */ static void updwtmpx (const gchar *wtmp_file, struct utmpx *ut) -@@ -224,6 +227,7 @@ updwtmpx (const gchar *wtmp_file, struct +@@ -213,6 +216,7 @@ updwtmpx (const gchar *wtmp_file, struct updwtmp (wtmp_file, &u); } @@ -31,7 +31,7 @@ #if HAVE_LIBAUDIT static void -@@ -401,6 +405,7 @@ session_child_run (int argc, char **argv +@@ -344,6 +348,7 @@ session_child_run (int argc, char **argv /* Write record to btmp database */ if (authentication_result == PAM_AUTH_ERR) { @@ -39,41 +39,44 @@ struct utmpx ut; struct timeval tv; -@@ -422,6 +427,8 @@ session_child_run (int argc, char **argv +@@ -364,6 +369,7 @@ session_child_run (int argc, char **argv + ut.ut_tv.tv_usec = tv.tv_usec; updwtmpx ("/var/log/btmp", &ut); - -+ +#endif + #if HAVE_LIBAUDIT audit_event (AUDIT_USER_LOGIN, username, -1, remote_host_name, tty, FALSE); - #endif -@@ -726,6 +733,7 @@ session_child_run (int argc, char **argv +@@ -684,6 +690,7 @@ session_child_run (int argc, char **argv + /* Wait for the command to complete (blocks) */ + if (child_pid > 0) { - int child_status; - +#if 0 /* Log to utmp */ if (g_strcmp0 (pam_getenv (pam_handle, "XDG_SESSION_CLASS"), "greeter") != 0) { -@@ -759,14 +767,14 @@ session_child_run (int argc, char **argv +@@ -711,11 +718,11 @@ session_child_run (int argc, char **argv + g_printerr ("Failed to write utmpx: %s\n", strerror (errno)); + endutxent (); + updwtmpx ("/var/log/wtmp", &ut); +- + #if HAVE_LIBAUDIT audit_event (AUDIT_USER_LOGIN, username, uid, remote_host_name, tty, TRUE); #endif } -- +#endif + + int child_status; waitpid (child_pid, &child_status, 0); - child_pid = 0; - if (WIFEXITED (child_status)) - return_code = WEXITSTATUS (child_status); +@@ -725,6 +732,7 @@ session_child_run (int argc, char **argv else return_code = EXIT_FAILURE; -- + +#if 0 /* Log to utmp */ if (g_strcmp0 (pam_getenv (pam_handle, "XDG_SESSION_CLASS"), "greeter") != 0) { -@@ -800,6 +808,7 @@ session_child_run (int argc, char **argv +@@ -757,6 +765,7 @@ session_child_run (int argc, char **argv audit_event (AUDIT_USER_LOGOUT, username, uid, remote_host_name, tty, TRUE); #endif } ++++++ lightdm-ignore-known-symlink-sessions.patch ++++++ From: Fabian Vogt <[email protected]> Subject: Do not show symlinked session files more than once References: boo#1030873 If a session file is a symlink that points into the currently searched directory, ignore it. Special take needs to be taken care to map the default-session hint passed to the greeter correctly. As symlinked sessions are not available anymore, the target of those needs to be passed as session name instead. --- a/liblightdm-gobject/session.c +++ b/liblightdm-gobject/session.c @@ -8,6 +8,10 @@ * See http://www.gnu.org/copyleft/lgpl.html the full text of the license. */ +#define _GNU_SOURCE +#include <libgen.h> +#include <stdlib.h> + #include <string.h> #include <gio/gdesktopappinfo.h> @@ -137,6 +141,23 @@ load_sessions_dir (GList *sessions, cons g_autofree gchar *path = g_build_filename (sessions_dir, filename, NULL); + /* Ignore symlinks that point to files we will visit manually later. */ + if (g_file_test (path, G_FILE_TEST_IS_SYMLINK)) + { + gboolean skip = FALSE; + + char *ltarget = canonicalize_file_name ((char *) path), + *ltarget_dir = ltarget == NULL ? NULL : dirname(ltarget); + + /* Link target is absolute -> compare with sessions_dir. */ + skip = g_strcmp0 (ltarget_dir, sessions_dir) == 0; + + free (ltarget); + + if (skip) + continue; + } + g_autoptr(GKeyFile) key_file = g_key_file_new (); g_autoptr(GError) e = NULL; gboolean result = g_key_file_load_from_file (key_file, path, G_KEY_FILE_NONE, &e); --- a/src/seat.c +++ b/src/seat.c @@ -9,6 +9,8 @@ * license. */ +#define _GNU_SOURCE +#include <libgen.h> #include <stdlib.h> #include <string.h> #include <sys/wait.h> @@ -520,11 +522,87 @@ find_resettable_greeter (Seat *seat) return NULL; } +/* Returns basename of the .desktop file at the specified path. + * Returned string needs to be g_free'd. */ +static char * +desktop_basename (const char *path) +{ + if (!path) + return NULL; + + char *filename = g_path_get_basename (path); + if (!filename) + return NULL; + + unsigned int len = strlen(filename); + if (len >= 8) /* strlen(".desktop") */ + filename[len - 8] = '\0'; + + return filename; +} + +static char * +find_session_file (Seat *seat, const char *sessions_dir, const char *session_name) +{ + char **dirs; + char *ret_path = NULL; + int i; + + g_return_val_if_fail (sessions_dir != NULL, NULL); + g_return_val_if_fail (session_name != NULL, NULL); + + dirs = g_strsplit (sessions_dir, ":", -1); + for (i = 0; dirs[i]; i++) + { + g_autofree char *filename; + char *path; + + filename = g_strdup_printf ("%s.desktop", session_name); + path = g_build_filename (dirs[i], filename, NULL); + if (g_file_test (path, G_FILE_TEST_EXISTS)) + { + ret_path = path; + break; + } + else + g_free (path); + } + g_strfreev (dirs); + + return ret_path; +} + static void set_greeter_hints (Seat *seat, Greeter *greeter) { greeter_clear_hints (greeter); - greeter_set_hint (greeter, "default-session", seat_get_string_property (seat, "user-session")); + + /* The user-session might be a symlink to the actual default-session. */ + const char *user_session = seat_get_string_property (seat, "user-session"); + char *default_session = NULL; + + const char *sessions_dir = config_get_string (config_get_instance (), "LightDM", "sessions-directory"); + g_autofree char *user_session_path = find_session_file (seat, sessions_dir, user_session); + if (g_file_test (user_session_path, G_FILE_TEST_IS_SYMLINK)) + { + char *ltarget = canonicalize_file_name ((char*) user_session_path); + + /* TODO: Check that the link target points into a valid session_dir. */ + + if (g_str_has_suffix (ltarget, ".desktop")) + default_session = desktop_basename (ltarget); + + free(ltarget); + } + + if (default_session) + { + greeter_set_hint (greeter, "default-session", default_session); + g_free (default_session); + } + else + greeter_set_hint (greeter, "default-session", user_session); + greeter_set_hint (greeter, "hide-users", seat_get_boolean_property (seat, "greeter-hide-users") ? "true" : "false"); greeter_set_hint (greeter, "show-manual-login", seat_get_boolean_property (seat, "greeter-show-manual-login") ? "true" : "false"); greeter_set_hint (greeter, "show-remote-login", seat_get_boolean_property (seat, "greeter-show-remote-login") ? "true" : "false"); ++++++ lightdm-set-gdmflexiserver-envvar.patch ++++++ --- /var/tmp/diff_new_pack.aCNH2H/_old 2018-07-06 10:44:19.895087918 +0200 +++ /var/tmp/diff_new_pack.aCNH2H/_new 2018-07-06 10:44:19.895087918 +0200 @@ -1,10 +1,8 @@ -set the GDMFLEXISERVER environment variable for the gdmflexiserver wrapper +Set the GDMFLEXISERVER environment variable for the gdmflexiserver wrapper. -Index: lightdm-1.17.3/src/Makefile.am -=================================================================== ---- lightdm-1.17.3.orig/src/Makefile.am -+++ lightdm-1.17.3/src/Makefile.am -@@ -79,6 +79,7 @@ lightdm_CFLAGS = \ +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -85,6 +85,7 @@ lightdm_CFLAGS = \ $(WARN_CFLAGS) \ $(LIGHTDM_CFLAGS) \ -I"$(top_srcdir)/common" \ @@ -12,12 +10,10 @@ -DSBIN_DIR=\"$(sbindir)\" \ -DUSERS_DIR=\"$(localstatedir)/lib/lightdm-data\" \ -DLOG_DIR=\"$(localstatedir)/log/lightdm\" \ -Index: lightdm-1.17.3/src/session-child.c -=================================================================== ---- lightdm-1.17.3.orig/src/session-child.c -+++ lightdm-1.17.3/src/session-child.c -@@ -655,6 +655,8 @@ session_child_run (int argc, char **argv - g_free (value); +--- a/src/session-child.c ++++ b/src/session-child.c +@@ -622,6 +622,8 @@ session_child_run (int argc, char **argv + pam_putenv (pam_handle, value); } + pam_putenv (pam_handle, g_strdup_printf ("GDMFLEXISERVER=%s", PKGLIBEXEC_DIR "/gdmflexiserver")); ++++++ lightdm-sysconfig-support.patch ++++++ --- /var/tmp/diff_new_pack.aCNH2H/_old 2018-07-06 10:44:19.903087908 +0200 +++ /var/tmp/diff_new_pack.aCNH2H/_new 2018-07-06 10:44:19.907087903 +0200 @@ -1,7 +1,5 @@ -Index: lightdm-1.22.0/data/lightdm.conf -=================================================================== ---- lightdm-1.22.0.orig/data/lightdm.conf -+++ lightdm-1.22.0/data/lightdm.conf +--- a/data/lightdm.conf ++++ b/data/lightdm.conf @@ -1,3 +1,26 @@ +# NOTE: settings under /etc/sysconfig take precendence over those below, +# specifically: @@ -29,10 +27,8 @@ # # General configuration # -Index: lightdm-1.22.0/src/lightdm.c -=================================================================== ---- lightdm-1.22.0.orig/src/lightdm.c -+++ lightdm-1.22.0/src/lightdm.c +--- a/src/lightdm.c ++++ b/src/lightdm.c @@ -22,6 +22,7 @@ #include <errno.h> @@ -41,7 +37,7 @@ #include "display-manager.h" #include "display-manager-service.h" #include "xdmcp-server.h" -@@ -50,6 +51,85 @@ static gint exit_code = EXIT_SUCCESS; +@@ -52,6 +53,85 @@ static gint exit_code = EXIT_SUCCESS; static gboolean update_login1_seat (Login1Seat *login1_seat); @@ -127,9 +123,9 @@ static void log_cb (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer data) { -@@ -933,6 +1013,9 @@ main (int argc, char **argv) - g_warning ("Failed to make cache directory %s: %s", dir, strerror (errno)); - g_free (dir); +@@ -837,6 +917,9 @@ main (int argc, char **argv) + if (g_mkdir_with_parents (cache_dir_path, S_IRWXU | S_IXGRP | S_IXOTH) < 0) + g_warning ("Failed to make cache directory %s: %s", cache_dir_path, strerror (errno)); + /* Load sysconfig settings */ + config_load_sysconfig (config_get_instance ()); @@ -137,10 +133,8 @@ log_init (); /* Show queued messages once logging is complete */ -Index: lightdm-1.22.0/src/Makefile.am -=================================================================== ---- lightdm-1.22.0.orig/src/Makefile.am -+++ lightdm-1.22.0/src/Makefile.am +--- a/src/Makefile.am ++++ b/src/Makefile.am @@ -77,7 +77,9 @@ lightdm_SOURCES = \ xdmcp-server.h \ xdmcp-session.c \ @@ -152,10 +146,8 @@ lightdm_CFLAGS = \ $(WARN_CFLAGS) \ -Index: lightdm-1.22.0/src/opensuse-sysconfig.c -=================================================================== --- /dev/null -+++ lightdm-1.22.0/src/opensuse-sysconfig.c ++++ b/src/opensuse-sysconfig.c @@ -0,0 +1,380 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -537,10 +529,8 @@ + return boolean_value; +} + -Index: lightdm-1.22.0/src/opensuse-sysconfig.h -=================================================================== ---- /dev/null -+++ lightdm-1.22.0/src/opensuse-sysconfig.h +--- a/src/opensuse-sysconfig.h ++++ b/src/opensuse-sysconfig.h @@ -0,0 +1,50 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * @@ -592,13 +582,11 @@ +G_END_DECLS + +#endif /* __OPENSUSE_SYSCONFIG_H */ -Index: lightdm-1.22.0/src/seat.c -=================================================================== ---- lightdm-1.22.0.orig/src/seat.c -+++ lightdm-1.22.0/src/seat.c -@@ -1338,9 +1338,14 @@ create_greeter_session (Seat *seat) +--- a/src/seat.c ++++ b/src/seat.c +@@ -1222,9 +1222,14 @@ create_greeter_session (Seat *seat) + } session_set_argv (SESSION (greeter_session), argv); - g_strfreev (argv); - greeter_set_pam_services (greeter, - seat_get_string_property (seat, "pam-service"), @@ -614,7 +602,7 @@ g_signal_connect (greeter, GREETER_SIGNAL_CREATE_SESSION, G_CALLBACK (greeter_create_session_cb), seat); g_signal_connect (greeter, GREETER_SIGNAL_START_SESSION, G_CALLBACK (greeter_start_session_cb), seat); -@@ -1589,7 +1594,10 @@ seat_switch_to_user (Seat *seat, const g +@@ -1459,7 +1464,10 @@ seat_switch_to_user (Seat *seat, const g /* Attempt to authenticate them */ session = create_user_session (seat, username, FALSE); g_signal_connect (session, SESSION_SIGNAL_AUTHENTICATION_COMPLETE, G_CALLBACK (switch_authentication_complete_cb), seat); ++++++ lightdm-xauthlocalhostname-support.patch ++++++ --- /var/tmp/diff_new_pack.aCNH2H/_old 2018-07-06 10:44:19.915087894 +0200 +++ /var/tmp/diff_new_pack.aCNH2H/_new 2018-07-06 10:44:19.915087894 +0200 @@ -3,9 +3,9 @@ --- a/src/seat-local.c +++ b/src/seat-local.c -@@ -452,6 +452,7 @@ seat_local_run_script (Seat *seat, Displ - path = x_server_local_get_authority_file_path (x_server); - process_set_env (script, "DISPLAY", x_server_get_address (X_SERVER (x_server))); +@@ -402,6 +402,7 @@ seat_local_run_script (Seat *seat, Displ + const gchar *path = x_server_local_get_authority_file_path (X_SERVER_LOCAL (display_server)); + process_set_env (script, "DISPLAY", x_server_get_address (X_SERVER (display_server))); process_set_env (script, "XAUTHORITY", path); + process_set_env (script, "XAUTHLOCALHOSTNAME", g_get_host_name ()); } @@ -13,14 +13,13 @@ SEAT_CLASS (seat_local_parent_class)->run_script (seat, display_server, script); --- a/src/x-authority.c +++ b/src/x-authority.c -@@ -70,9 +70,9 @@ x_authority_new_cookie (guint16 family, +@@ -68,8 +68,8 @@ x_authority_new_cookie (guint16 family, XAuthority * x_authority_new_local_cookie (const gchar *number) { - gchar hostname[1024]; -+ const gchar *hostname; - - gethostname (hostname, 1024); ++ const gchar *hostname; + hostname = g_get_host_name (); return x_authority_new_cookie (XAUTH_FAMILY_LOCAL, (guint8 *) hostname, strlen (hostname), number); } @@ -35,7 +34,7 @@ struct XServerPrivate { -@@ -154,6 +155,8 @@ x_server_connect_session (DisplayServer +@@ -151,6 +152,8 @@ x_server_connect_session (DisplayServer else l_debug (session, "Not setting XDG_VTNR");
