Hello community, here is the log from the commit of package lightdm.2120 for openSUSE:13.1:Update checked in at 2013-10-23 10:18:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:13.1:Update/lightdm.2120 (Old) and /work/SRC/openSUSE:13.1:Update/.lightdm.2120.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lightdm.2120" Changes: -------- New Changes file: --- /dev/null 2013-10-11 12:16:15.204037506 +0200 +++ /work/SRC/openSUSE:13.1:Update/.lightdm.2120.new/lightdm.changes 2013-10-23 10:18:49.000000000 +0200 @@ -0,0 +1,703 @@ +------------------------------------------------------------------- +Tue Oct 22 11:11:24 UTC 2013 - [email protected] + +- add lightdm-set-xdg-session-class.patch in order to correctly set + $XDG_SESSION_CLASS for greeters (bnc#846914, lp#1242939, + backported from upstream bzr) + +------------------------------------------------------------------- +Thu Oct 10 09:16:10 UTC 2013 - [email protected] + +- add lightdm-destroy-quit-timeout.patch in order to destroy quit + timeout when a process object is destroyed - fixes a crash where + a deleted Process object might be accessed after a timeout + (lp#1207935, bnc#845280, backported from upstream bzr) + +------------------------------------------------------------------- +Wed Oct 9 08:58:20 UTC 2013 - [email protected] + +- update to version 1.8.0 + - Add regression test for corrupt X authority files + +------------------------------------------------------------------- +Mon Oct 7 09:19:40 UTC 2013 - [email protected] + +- update to version 1.7.18 + - Set XDG_VTNR=1 as a fallback if using SeatUnity without a + functioning compositor or working VT switching, so that logind + will recognize the VT as active + - Fix ConsoleKit support broken in 1.7.5 + - Fix --test-mode + - Add support for running Surfaceflinger sessions + - surfaceflinger: Set XDG_VTNR=0 if VTs are not available + - Allow compiling of liblightdm-qt without liblightdm-gobject + - Add missing documentation for xremote seat options + - Set session environment variables for guest sessions (1.7 + regression) + - Don't fail writing X authority if reading it had an error + - Update environment variables that we pass to Mir + +------------------------------------------------------------------- +Wed Sep 11 08:39:56 UTC 2013 - [email protected] + +- update to version 1.7.14 + - Correctly set permissions on Xauthority file + - Correctly set $XDG_CURRENT_DESKTOP for non-autologin sessions + - Fix overallocation of array for strings from greeter + - Fix truncation writing card32 in XDMCP server + +------------------------------------------------------------------- +Sun Sep 8 19:28:36 UTC 2013 - [email protected] + +- update to version 1.7.12 + - Add xdg-seat config setting + - Notify Unity System Compositor of the session being + authenticated + - Fix crash when greeter quits due to read watch not being + removed + - Correctly setup Unity System Compositor environment + - Improve log messages + - Fix session locking broken in 1.7.5 + - Load lightdm.conf after lightdm.conf.d/*.conf + - Also support loading config from /usr/share + - When switching sessions show a greeter if authentication + required + - Set $XDG_CURRENT_DESKTOP if specified in the xsession file + - Change logging prefixes to make it easier to troubleshoot + multiseat setups + - Bring Ubuntu packaging in-tree + - Correctly set XDG_VTNR for unity sessions that are not + autologin + - Add support for Mir sessions and greeters + - Set XDG_VTNR for unity sessions + - Fix desktop-session-start upstart signal not being emitted + since 1.7.5 + - Fix greeter log broken in 1.7.5. + +------------------------------------------------------------------- +Tue Jul 23 08:45:14 UTC 2013 - [email protected] + +- update to version 1.7.7 + - Fix uninitialized pointer introduced in 1.7.3 + - Enable compile warnings and fix code generating warnings + +------------------------------------------------------------------- +Mon Jul 22 14:54:36 UTC 2013 - [email protected] + +- update to version 1.7.6 + - Restore greeter hints that were regressed in 1.7.5. + - Don't run greeters through session wrapper - regression + in 1.7.5 + - Quit Plymouth correctly when using the unity seat type + - Release the VT when the system compositor fails to start + - Load sessions and greeters from /usr/share/lightdm/sessions and + /usr/share/lightdm/greeters. The existing directories are + checked if the sessions are not in these directories. + - Refactor the Display class so that it merges with the Seat + class + - Support running the greeter and session in different display + servers instead of re-using the same one during a login. + - Add more regression tests + - Documentation fixes + - Set XDG_SEAT and XDG_VTNR environment variables. + - Add initial support for Unity (i.e. Mir based) seats. + - Add a greeter wrapper option. + - Load configuration from /etc/lightdm/lightdm.conf.d. + - Fix compile warnings + - Fix tests not running from install directory inside checkout. + - Fix incorrectly distributed guest-session apparmor data + - Fix .pc file for liblightdm-qt5-3 + - Add a new option "autologin-in-background" which lets an + autologin happen in a second display while still showing the + greeter. + - Stop if fail to create default seat + - Add option to set seat type in lightdm-set-defaults + - Stop using g_file_set_contents - it can leave intermediate + files around + - Make tests work without installing them + - Fix distcheck +- dropped obsolete lightdm-fix-pkgconfig.patch +- added lightdm-fix-session-setup-script-env.patch in order to put + user information in the environment when running + session-setup-script + +------------------------------------------------------------------- +Sat May 4 18:35:23 UTC 2013 - [email protected] + +- Added lightdm-fix-pkgconfig.patch, fixes liblightdm-3 pc file + +------------------------------------------------------------------- +Thu May 2 12:27:18 UTC 2013 - [email protected] + +- import pam config used by the gdm greeter which includes + common-session that in turn contains pam_systemd and registers + the greeter session allowing suspend/hibernate/reboot/shutdown +- consequently remove lightdm.rules workaround for policykit + +------------------------------------------------------------------- +Thu May 2 10:30:02 UTC 2013 - [email protected] + +- remove support for openSUSE 12.1 +- remove dependency on upower +- amend lightdm.rules with a rule for logind + +------------------------------------------------------------------- +Wed May 1 18:24:04 UTC 2013 - [email protected] + +- Update to version 1.7.0 + - Use logind instead of ConsoleKit if it is available + - Use Q_SLOTS and Q_SIGNALS instead of slots and signals. + - Ignore stale X server locks + - Pass through system locale or set locale from + AccountsService/.dmrc + - Fix bug where seat failure before D-Bus acquired would not + stop daemon +- Dropped patches due to upstream inclusion: + - lightdm-make-sessions-inherit-system-default-locale.patch + - lightdm-fix-language-setting.patch + - lightdm-do-not-strip-codeset-from-language.patch + - lightdm-fix-function-declarations-missing-prototypes.patch + +- Drop Require for ConsoleKit-X11 as that lightdm now supports + systemd + +------------------------------------------------------------------- +Thu Apr 18 08:14:40 UTC 2013 - [email protected] + +- remove apparmor profile for a guest session which is not + supported in openSUSE + +------------------------------------------------------------------- +Mon Apr 15 07:49:35 UTC 2013 - [email protected] + +- update to version 1.6.0 + - allow VNC command to be specified in lightdm.conf + - fix build with gobject-introspection 1.35.9 + - fix authentication cancel regression caused in 1.5.2 + - fix stale X server being left behind when using LockSession + D-Bus API + - adjust AppArmor profile to also work with logind + - don't use GIO to access X authority files - it uses GVFS which + is unnecessary overhead/complexity + - handle over/underflows when reading from greeter + - improve warning message when XDMCP packet has length mismatch + - only report test command line if it fails + - add more regression tests + - QLightDM: Add Qt5 version of the library: liblightdm-qt5-2 + - QLightDM: Add some missing role names in UsersModel + - QLightDM: Add a backgroundPath role to UsersModel + - QLightDM: Fix potential crash in QLightDM::UsersModel closedown + - improve guest session apparmor + - run each test in its own /tmp dir so they can't interfere with + eachother + - fix script hooks no longer working with latest glib + - fix display clean up code + - add man page for lightdm-set-defaults + - use xzip for distribution, don't distribute old metadata + - correctly check if display is active when session quits ++++ 506 more lines (skipped) ++++ between /dev/null ++++ and /work/SRC/openSUSE:13.1:Update/.lightdm.2120.new/lightdm.changes New: ---- X11-displaymanagers-lightdm lightdm-1.8.0.tar.xz lightdm-default-configuration.patch lightdm-destroy-quit-timeout.patch lightdm-disable-utmp-handling.patch lightdm-fix-session-setup-script-env.patch lightdm-greeter.pamd lightdm-lock-screen-before-switch.patch lightdm-rpmlintrc lightdm-set-gdmflexiserver-envvar.patch lightdm-set-xdg-session-class.patch lightdm-sysconfig-support.patch lightdm-use-run-dir.patch lightdm-xauthlocalhostname-support.patch lightdm.changes lightdm.spec ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lightdm.spec ++++++ # # spec file for package lightdm # # Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2011 Guido Berhoerster. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %define gobject_libname lightdm-gobject-1 %define gobject_lib lib%{gobject_libname}-0 %define qt_libname lightdm-qt-3 %define qt_lib lib%{qt_libname}-0 %if 0%{?suse_version} >= 1230 %define rundir /run %else %define rundir %{_localstatedir}/run %endif Name: lightdm Version: 1.8.0 Release: 0 Summary: Lightweight, Cross-desktop Display Manager License: GPL-3.0+ Group: System/X11/Displaymanagers Url: http://www.freedesktop.org/wiki/Software/LightDM Source0: https://launchpad.net/lightdm/1.8/%{version}/+download/%{name}-%{version}.tar.xz Source1: %{name}-greeter.pamd Source2: X11-displaymanagers-%{name} Source100: %{name}-rpmlintrc # PATCH-FEATURE-OPENSUSE lightdm-sysconfig-support.patch [email protected] -- Adds support for reading configuration options from /etc/sysconfig/displaymanager and /etc/sysconfig/windowmanager Patch0: lightdm-sysconfig-support.patch # PATCH-FEATURE-OPENSUSE lightdm-xauthlocalhostname-support.patch bnc#796230 [email protected] -- Set XAUTHLOCALHOSTNAME to the hostname for local logins to avoid issues in the session in case the hostname changes Patch1: lightdm-xauthlocalhostname-support.patch # PATCH-FEATURE-OPENSUSE lightdm-set-gdmflexiserver-envvar.patch [email protected] -- Sets the GDMFLEXISERVER environment variable for the gdmflexiserver wrapper Patch2: lightdm-set-gdmflexiserver-envvar.patch # PATCH-FEATURE-OPENSUSE lightdm-default-configuration.patch [email protected] -- Modifies configuration with suitable defaults for openSUSE Patch3: lightdm-default-configuration.patch # PATCH-FIX-UPSTREAM lightdm-lock-screen-before-switch.patch [email protected] -- Try to lock the screen before switching users Patch4: lightdm-lock-screen-before-switch.patch # PATCH-FIX-OPENSUSE lightdm-disable-utmp-handling.patch [email protected] -- Disable utmp handling since this is handled in the Xstartup/Xreset scripts Patch5: lightdm-disable-utmp-handling.patch # PATCH-FIX-OPENSUSE lightdm-use-run-dir.patch [email protected] -- Use /run instead of /var/run Patch6: lightdm-use-run-dir.patch # PATCH-FIX-UPSTREAM lightdm-fix-session-setup-script-env.patch [email protected] -- Put user information in the environment when running session-setup-script Patch7: lightdm-fix-session-setup-script-env.patch # PATCH-FIX-UPSTREAM lightdm-destroy-quit-timeout.patch lp#1207935 [email protected] -- Destroy quit timeout when a process object is destroyed - fixes a crash where a deleted Process object might be accessed after a timeout (backported from upstream bzr) Patch8: lightdm-destroy-quit-timeout.patch # PATCH-FIX-UPSTREAM lightdm-set-xdg-session-class.patch bnc#846914 lp#1242939 [email protected] -- Correctly set $XDG_SESSION_CLASS for greeters (backported from upstream bzr) Patch9: lightdm-set-xdg-session-class.patch BuildRequires: gcc-c++ BuildRequires: gnome-common BuildRequires: gtk-doc BuildRequires: intltool BuildRequires: libgcrypt-devel BuildRequires: pam-devel BuildRequires: xdm BuildRequires: pkgconfig(QtCore) BuildRequires: pkgconfig(QtDBus) BuildRequires: pkgconfig(QtGui) BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(gio-unix-2.0) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gobject-2.0) BuildRequires: pkgconfig(gobject-introspection-1.0) BuildRequires: pkgconfig(libxklavier) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xcb) BuildRequires: pkgconfig(xdmcp) Requires(pre): pwdutils # 3rd party greeters don't have to follow # the same versioning of lightdm Requires: lightdm-greeter # uses pam configuration and relies on scripts provided by xdm Requires: gdmflexiserver Requires: xdm Recommends: %{name}-lang BuildRoot: %{_tmppath}/%{name}-%{version}-build %description LightDM is a lightweight, cross-desktop display manager. Its main features are a well-defined greeter API allowing multiple GUIs, support for all display manager use cases, with plugins where appropriate, low code complexity, and fast performance. Due to its cross-platform nature greeters can be written in several toolkits such as Qt and GTK. %lang_package %package -n %{gobject_lib} Summary: LightDM GObject-based Client Library License: LGPL-2.0 or LGPL-3.0 Group: System/Libraries Recommends: accountsservice %description -n %{gobject_lib} A GObject-based library for LightDM clients to use to interface with LightDM. %package gobject-devel Summary: Development Files for %{gobject_lib} License: LGPL-2.0 or LGPL-3.0 Group: Development/Libraries/C and C++ Requires: %{gobject_lib} = %{version} %description gobject-devel This package contains development files needed for developing GObject-based LightDM clients. %package -n %{qt_lib} Summary: LightDM Qt-based Client Library License: LGPL-2.0 or LGPL-3.0 Group: System/Libraries %description -n %{qt_lib} A Qt-based library for LightDM clients to use to interface with LightDM. %package qt-devel Summary: Development Files for %{qt_lib} License: LGPL-2.0 or LGPL-3.0 Group: Development/Libraries/C and C++ Requires: %{qt_lib} = %{version} %description qt-devel This package contains development files needed for developing Qt-based LightDM clients. %prep %setup -q %patch0 -p1 %patch1 -p1 %patch2 -p1 %patch3 -p1 %patch4 -p1 %patch5 -p1 %if 0%{?suse_version} >= 1230 %patch6 -p1 %endif %patch7 -p1 %patch8 -p1 %patch9 -p1 %build bash ./autogen.sh %configure \ --libexecdir=%{_libexecdir} \ --disable-static \ --enable-gtk-doc \ --with-user-session=twm \ --with-greeter-session=lightdm-default-greeter \ --with-greeter-user=lightdm make %{?_smp_mflags} V=1 %install %make_install rm -f %{buildroot}%{_libdir}/*.la # upstart configuration is not needed rm -rf %{buildroot}%{_sysconfdir}/init/ # there is no guest session support in openSUSE rm -rf %{buildroot}%{_sysconfdir}/apparmor.d/ # these are useless stubs for now rm -rf %{buildroot}%{_datadir}/help/ ln -sf %{_sysconfdir}/pam.d/xdm %{buildroot}%{_sysconfdir}/pam.d/lightdm ln -sf %{_sysconfdir}/pam.d/xdm-np %{buildroot}%{_sysconfdir}/pam.d/lightdm-autologin install -D -m 644 -p %{SOURCE1} %{buildroot}%{_sysconfdir}/pam.d/lightdm-greeter install -D -m 644 -p %{SOURCE2} %{buildroot}%{_libexecdir}/X11/displaymanagers/lightdm install -d %{buildroot}%{_datadir}/lightdm/greeters install -d %{buildroot}%{_datadir}/xgreeters install -d %{buildroot}%{_datadir}/lightdm/sessions install -d %{buildroot}%{_datadir}/lightdm/remote-sessions install -d %{buildroot}%{_localstatedir}/log/lightdm install -d %{buildroot}%{rundir}/lightdm install -d %{buildroot}%{_localstatedir}/lib/lightdm install -d %{buildroot}%{_localstatedir}/cache/lightdm %find_lang %{name} %{?no_lang_C} %clean rm -rf %{buildroot} %pre /usr/sbin/groupadd -r lightdm 2> /dev/null || : /usr/sbin/useradd -r -g lightdm -s /bin/false -c "LightDM daemon" \ -d /var/lib/lightdm lightdm 2> /dev/null || : /usr/sbin/usermod -g lightdm -G lightdm -s /bin/false lightdm 2> /dev/null %post -n %{gobject_lib} -p /sbin/ldconfig %postun -n %{gobject_lib} -p /sbin/ldconfig %post -n %{qt_lib} -p /sbin/ldconfig %postun -n %{qt_lib} -p /sbin/ldconfig %files %defattr(-,root,root,-) %doc COPYING.GPL3 NEWS %{_bindir}/dm-tool %{_sbindir}/lightdm %dir %{_libexecdir}/lightdm/ %{_libexecdir}/%{name}/lightdm-set-defaults %{_libexecdir}/%{name}/lightdm-guest-session-wrapper %{_libexecdir}/%{name}/gdmflexiserver %dir %{_sysconfdir}/lightdm/ %config %{_sysconfdir}/lightdm/lightdm.conf %config %{_sysconfdir}/lightdm/users.conf %config %{_sysconfdir}/lightdm/keys.conf %config %{_sysconfdir}/pam.d/lightdm* %config %{_sysconfdir}/dbus-1/system.d/org.freedesktop.DisplayManager.conf %dir %{_libexecdir}/X11/displaymanagers/ %{_libexecdir}/X11/displaymanagers/lightdm %{_datadir}/lightdm %dir %{_datadir}/xgreeters/ %ghost %attr(711,lightdm,lightdm) %dir %{rundir}/lightdm %attr(750,lightdm,lightdm) %dir %{_localstatedir}/log/lightdm %attr(750,lightdm,lightdm) %dir %{_localstatedir}/lib/lightdm %ghost %attr(711,root,root) %dir %{_localstatedir}/cache/lightdm %doc %{_mandir}/man1/lightdm.1* %doc %{_mandir}/man1/lightdm-set-defaults.1* %files lang -f %{name}.lang %files -n %{gobject_lib} %defattr(-,root,root,-) %doc COPYING.LGPL2 COPYING.LGPL3 %{_libdir}/lib%{gobject_libname}.so.* %files gobject-devel %defattr(-,root,root,-) %{_libdir}/lib%{gobject_libname}.so %{_libdir}/pkgconfig/lib%{gobject_libname}.pc %{_includedir}/%{gobject_libname}/ %{_libdir}/girepository-1.0/LightDM-1.typelib %{_datadir}/gir-1.0/LightDM-1.gir %dir %{_datadir}/vala %dir %{_datadir}/vala/vapi %{_datadir}/vala/vapi/liblightdm-gobject-1.vapi %doc %{_datadir}/gtk-doc/html/%{gobject_libname}/ %files -n %{qt_lib} %defattr(-,root,root,-) %doc COPYING.LGPL2 COPYING.LGPL3 %{_libdir}/lib%{qt_libname}.so.* %files qt-devel %defattr(-,root,root,-) %{_libdir}/lib%{qt_libname}.so %{_libdir}/pkgconfig/lib%{qt_libname}.pc %{_includedir}/%{qt_libname}/ %changelog ++++++ X11-displaymanagers-lightdm ++++++ lightdm_reload_proc() { /etc/init.d/xdm restart exit $? } lightdm_vars() { case $1 in lightdm) DISPLAYMANAGER=/usr/sbin/lightdm RELOADPROC=lightdm_reload_proc ;; *) return 1 ;; esac return 0 } ++++++ lightdm-default-configuration.patch ++++++ openSUSE-specific default configuration diff --git a/data/lightdm.conf b/data/lightdm.conf --- a/data/lightdm.conf +++ b/data/lightdm.conf @@ -51,7 +51,7 @@ #minimum-display-number=0 #minimum-vt=7 #lock-memory=true -#user-authority-in-system-dir=false +user-authority-in-system-dir=true #guest-account-script=guest-account #log-directory=/var/log/lightdm #run-directory=/var/run/lightdm @@ -103,6 +103,7 @@ #type=xlocal #xdg-seat=seat0 #xserver-command=X +xserver-command=/usr/bin/X #xserver-layout= #xserver-config= #xserver-allow-tcp=false @@ -122,12 +123,12 @@ #user-session=default #allow-guest=true #guest-session=UNIMPLEMENTED -#session-wrapper=lightdm-session +session-wrapper=/etc/X11/xdm/Xsession #greeter-wrapper= #display-setup-script= -#greeter-setup-script= -#session-setup-script= -#session-cleanup-script= +greeter-setup-script=/etc/X11/xdm/Xsetup +session-setup-script=/etc/X11/xdm/Xstartup +session-cleanup-script=/etc/X11/xdm/Xreset #autologin-guest=false #autologin-user= #autologin-user-timeout=0 diff --git a/data/users.conf b/data/users.conf --- a/data/users.conf +++ b/data/users.conf @@ -9,6 +9,6 @@ # hidden-shells = Shells that indicate a user cannot login # [UserAccounts] -minimum-uid=500 -hidden-users=nobody nobody4 noaccess -hidden-shells=/bin/false /usr/sbin/nologin +minimum-uid=1000 +hidden-users=nobody +hidden-shells=/bin/false /sbin/nologin ++++++ lightdm-destroy-quit-timeout.patch ++++++ === modified file 'src/process.c' Index: lightdm-1.8.0/src/process.c =================================================================== --- lightdm-1.8.0.orig/src/process.c +++ lightdm-1.8.0/src/process.c @@ -297,6 +297,8 @@ process_finalize (GObject *object) g_free (self->priv->command); g_hash_table_unref (self->priv->env); + if (self->priv->quit_timeout) + g_source_remove (self->priv->quit_timeout); if (self->priv->watch) g_source_remove (self->priv->watch); ++++++ lightdm-disable-utmp-handling.patch ++++++ # HG changeset patch # Parent e7b391d67ca5135c48d1aef993e2aedfbce4345e disable utmp handling since this is handled in the Xstartup/Xreset scripts diff --git a/src/session-child.c b/src/session-child.c --- a/src/session-child.c +++ b/src/session-child.c @@ -13,7 +13,9 @@ #include <grp.h> #include <glib.h> #include <security/pam_appl.h> +#if 0 #include <utmpx.h> +#endif #include <sys/mman.h> #include "configuration.h" @@ -597,6 +599,7 @@ session_child_run (int argc, char **argv /* Wait for the command to complete (blocks) */ if (child_pid > 0) { +#if 0 /* Log to utmp */ if (g_strcmp0 (class, XDG_SESSION_CLASS_GREETER) != 0) { @@ -624,10 +627,10 @@ session_child_run (int argc, char **argv g_printerr ("Failed to write utmpx: %s\n", strerror (errno)); endutxent (); } - +#endif waitpid (child_pid, &return_code, 0); child_pid = 0; - +#if 0 /* Log to utmp */ if (g_strcmp0 (class, XDG_SESSION_CLASS_GREETER) != 0) { @@ -655,6 +658,7 @@ session_child_run (int argc, char **argv g_printerr ("Failed to write utmpx: %s\n", strerror (errno)); endutxent (); } +#endif } /* Remove X authority */ ++++++ lightdm-fix-session-setup-script-env.patch ++++++ # HG changeset patch # Parent f537e458b1a5e1e92d5030bdc77dfc1540433c70 Put user information in the environment when running session-setup-script diff --git a/src/seat.c b/src/seat.c --- a/src/seat.c +++ b/src/seat.c @@ -470,12 +470,16 @@ static void run_session (Seat *seat, Session *session) { const gchar *script; + User *user = NULL; if (IS_GREETER (session)) script = seat_get_string_property (seat, "greeter-setup-script"); else + { script = seat_get_string_property (seat, "session-setup-script"); - if (script && !run_script (seat, session_get_display_server (session), script, NULL)) + user = session_get_user (session); + } + if (script && !run_script (seat, session_get_display_server (session), script, user)) { l_debug (seat, "Switching to greeter due to failed setup script"); switch_to_greeter_from_failed_session (seat, session); ++++++ lightdm-greeter.pamd ++++++ #%PAM-1.0 # LightDM PAM configuration used only for the greeter session auth required pam_permit.so account required pam_permit.so password include common-password session required pam_loginuid.so session include common-session ++++++ lightdm-lock-screen-before-switch.patch ++++++ try to lock the screen before switching users diff --git a/utils/gdmflexiserver b/utils/gdmflexiserver --- a/utils/gdmflexiserver +++ b/utils/gdmflexiserver @@ -9,9 +9,47 @@ # # See http://www.gnu.org/copyleft/gpl.html for the full text of the license. +PATH=/usr/local/bin:/bin:/usr/bin +export PATH + if [ -z "$XDG_SEAT_PATH" ]; then # something went wrong exit 1 fi +find_command () { + cmd="$1" + oIFS="${IFS}"; IFS=: + set -- ${PATH} + IFS="${oIFS}" + + for part; do + [ -x "${part}/${cmd}" ] && return 0 + done + return 1 +} + +lock_screen () { + for lock_cmd in \ + "xscreensaver-command -lock" \ + "gnome-screensaver-command --lock" \ + "dbus-send --session --dest=org.freedesktop.ScreenSaver --type=method_call /ScreenSaver org.freedesktop.ScreenSaver.Lock" + do + ${lock_cmd} >/dev/null 2>&1 && return + done + + for lock_cmd in \ + "slock" \ + "xlock -mode blank" + do + set -- ${lock_cmd} + if find_command "$1"; then + ${lock_cmd} >/dev/null 2>&1 & + return + fi + done +} + +lock_screen + dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.DisplayManager $XDG_SEAT_PATH org.freedesktop.DisplayManager.Seat.SwitchToGreeter ++++++ lightdm-rpmlintrc ++++++ addFilter ('untranslated-desktop-file /usr/share/xgreeters/') ++++++ lightdm-set-gdmflexiserver-envvar.patch ++++++ set the GDMFLEXISERVER environment variable for the gdmflexiserver wrapper diff --git a/src/session-child.c b/src/session-child.c --- a/src/session-child.c +++ b/src/session-child.c @@ -531,10 +531,7 @@ session_child_run (int argc, char **argv g_free (value); } - /* Put our tools directory in the path as a hack so we can use the legacy gdmflexiserver interface */ - path = pam_getenv (pam_handle, "PATH"); - if (path) - pam_putenv (pam_handle, g_strdup_printf ("PATH=%s:%s", PKGLIBEXEC_DIR, path)); + pam_putenv (pam_handle, g_strdup_printf ("GDMFLEXISERVER=%s", PKGLIBEXEC_DIR "/gdmflexiserver")); /* Catch terminate signal and pass it to the child */ signal (SIGTERM, signal_cb); ++++++ lightdm-set-xdg-session-class.patch ++++++ ++++ 1648 lines (skipped) ++++++ lightdm-sysconfig-support.patch ++++++ ++++ 658 lines (skipped) ++++++ lightdm-use-run-dir.patch ++++++ # HG changeset patch # Parent 4415a32cab05e4dea9459f89aa25a58a042f23b2 Use /run instead of localstatedir/run/lightdm diff --git a/src/Makefile.am b/src/Makefile.am --- a/src/Makefile.am +++ b/src/Makefile.am @@ -85,7 +85,7 @@ lightdm_CFLAGS = \ -DSBIN_DIR=\"$(sbindir)\" \ -DCONFIG_DIR=\"$(sysconfdir)/lightdm\" \ -DLOG_DIR=\"$(localstatedir)/log/lightdm\" \ - -DRUN_DIR=\"$(localstatedir)/run/lightdm\" \ + -DRUN_DIR=\"/run/lightdm\" \ -DCACHE_DIR=\"$(localstatedir)/cache/lightdm\" \ -DSYSTEM_CONFIG_DIR=\"$(pkgdatadir)/lightdm.conf.d\" \ -DSESSIONS_DIR=\"$(pkgdatadir)/sessions:$(datadir)/xsessions\" \ ++++++ lightdm-xauthlocalhostname-support.patch ++++++ Set XAUTHLOCALHOSTNAME to the hostname for local logins to avoid issues in the session in case the hostname changes diff --git a/src/Makefile.am b/src/Makefile.am --- a/src/Makefile.am +++ b/src/Makefile.am @@ -74,7 +74,9 @@ lightdm_SOURCES = \ xdmcp-session.h \ xdmcp-session-private.h \ opensuse-sysconfig.c \ - opensuse-sysconfig.h + opensuse-sysconfig.h \ + util.c \ + util.h lightdm_CFLAGS = \ $(LIGHTDM_CFLAGS) \ diff --git a/src/seat-xlocal.c b/src/seat-xlocal.c --- a/src/seat-xlocal.c +++ b/src/seat-xlocal.c @@ -16,6 +16,7 @@ #include "x-server-local.h" #include "plymouth.h" #include "vt.h" +#include "util.h" G_DEFINE_TYPE (SeatXLocal, seat_xlocal, SEAT_TYPE); @@ -235,12 +236,16 @@ static void seat_xlocal_run_script (Seat *seat, DisplayServer *display_server, Process *script) { const gchar *path; + gchar *hostname; XServerLocal *x_server; x_server = X_SERVER_LOCAL (display_server); path = x_server_local_get_authority_file_path (x_server); process_set_env (script, "DISPLAY", x_server_get_address (X_SERVER (x_server))); process_set_env (script, "XAUTHORITY", path); + hostname = lightdm_gethostname (); + process_set_env (script, "XAUTHLOCALHOSTNAME", hostname); + g_free (hostname); SEAT_CLASS (seat_xlocal_parent_class)->run_script (seat, display_server, script); } diff --git a/src/util.c b/src/util.c new file mode 100644 --- /dev/null +++ b/src/util.c @@ -0,0 +1,15 @@ +#include <unistd.h> +#include <limits.h> +#include <glib.h> +#include "util.h" + +gchar * +lightdm_gethostname (void) +{ + gchar hostname[HOST_NAME_MAX + 1]; + + if (gethostname (hostname, HOST_NAME_MAX) == 0) + return g_strdup (hostname); + + return g_strdup ("localhost"); +} diff --git a/src/util.h b/src/util.h new file mode 100644 --- /dev/null +++ b/src/util.h @@ -0,0 +1,3 @@ +#include <glib.h> + +gchar * lightdm_gethostname (void); diff --git a/src/x-server-local.c b/src/x-server-local.c --- a/src/x-server-local.c +++ b/src/x-server-local.c @@ -22,6 +22,7 @@ #include "configuration.h" #include "process.h" #include "vt.h" +#include "util.h" struct XServerLocalPrivate { @@ -152,13 +153,14 @@ XServerLocal * x_server_local_new (void) { XServerLocal *self = g_object_new (X_SERVER_LOCAL_TYPE, NULL); - gchar hostname[1024], *number, *name; + gchar *hostname, *number, *name; x_server_set_display_number (X_SERVER (self), x_server_local_get_unused_display_number ()); - gethostname (hostname, 1024); + hostname = lightdm_gethostname (); number = g_strdup_printf ("%d", x_server_get_display_number (X_SERVER (self))); x_server_set_authority (X_SERVER (self), x_authority_new_cookie (XAUTH_FAMILY_LOCAL, (guint8*) hostname, strlen (hostname), number)); + g_free (hostname); g_free (number); name = g_strdup_printf ("x-%d", x_server_get_display_number (X_SERVER (self))); diff --git a/src/x-server.c b/src/x-server.c --- a/src/x-server.c +++ b/src/x-server.c @@ -15,6 +15,8 @@ #include "x-server.h" #include "configuration.h" +#include "x-server-local.h" +#include "util.h" struct XServerPrivate { @@ -168,6 +170,12 @@ x_server_connect_session (DisplayServer else l_debug (session, "Not setting XDG_VTNR"); + if (IS_X_SERVER_LOCAL (display_server)) + { + gchar *hostname = lightdm_gethostname (); + session_set_env (session, "XAUTHLOCALHOSTNAME", hostname); + g_free (hostname); + } session_set_env (session, "DISPLAY", x_server_get_address (X_SERVER (display_server))); session_set_xdisplay (session, x_server_get_address (X_SERVER (display_server))); session_set_remote_host_name (session, x_server_get_hostname (X_SERVER (display_server))); -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
