git: 23a47f28de20 - main - x11/lightdm: Fix login.conf issues, import various improvements
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 29 Dec 2023 18:25:19 UTC
The branch main has been updated by madpilot:
URL: https://cgit.FreeBSD.org/ports/commit/?id=23a47f28de20c42fb2c3a7286c815797013df6ea
commit 23a47f28de20c42fb2c3a7286c815797013df6ea
Author: Guido Falsi <madpilot@FreeBSD.org>
AuthorDate: 2023-12-29 18:23:10 +0000
Commit: Guido Falsi <madpilot@FreeBSD.org>
CommitDate: 2023-12-29 18:25:15 +0000
x11/lightdm: Fix login.conf issues, import various improvements
- Add patch to use setusercontext(3) to setup user environment, so it respects login.conf among other things [1]
- Use autoreconf, since patch requires regenerating configure script to check for setusercontext(3) [2]
- Explicitly disable libaudit support, not supported in FreeBSD [3]
- Add QT5 options, disabled by default, to control linking against qt5 [4]
- Import patch adding option to enable alternative location for .xsession-errors file [5]
- Correctly define runtime dependencies
- Forcibly disable installation of apparmor files
- Install PAM configuration files as samples, so in the future they are not overwritten if customized
- Pet portclippy/portfmt
- Regenerate patches
Upstreaming:
[1] https://github.com/canonical/lightdm/pull/334
[5] https://github.com/canonical/lightdm/pull/335
Many thanks to all people involved!
PR: 266532 [1] [2],
273720 [1],
275885 [3] [4] [5]
Tested by: Ivan Rozhuk <rozhuk.im@gmail.com>,
Daniel Tameling <tamelingdaniel@gmail.com> (provided setusercontext patch),
Anton Saietskii <vsasjason@gmail.com>
---
x11/lightdm/Makefile | 71 ++++++++++++--------
x11/lightdm/files/patch-common_configuration.c | 10 +++
x11/lightdm/files/patch-configure.ac | 11 ++++
x11/lightdm/files/patch-data_Makefile.am | 29 +++++++++
x11/lightdm/files/patch-data_lightdm.conf | 23 +++++--
x11/lightdm/files/patch-data_users.conf | 4 +-
.../files/patch-liblightdm-gobject_language.c | 10 +--
x11/lightdm/files/patch-src_lightdm.c | 11 +++-
x11/lightdm/files/patch-src_session-child.c | 75 +++++++++++++++++++---
x11/lightdm/files/patch-src_session.c | 21 ++++++
x11/lightdm/pkg-plist | 19 +++++-
11 files changed, 235 insertions(+), 49 deletions(-)
diff --git a/x11/lightdm/Makefile b/x11/lightdm/Makefile
index a1bef078c1a5..cc0b195c5978 100644
--- a/x11/lightdm/Makefile
+++ b/x11/lightdm/Makefile
@@ -1,6 +1,6 @@
PORTNAME= lightdm
PORTVERSION= 1.32.0
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= x11
MASTER_SITES= https://github.com/canonical/${PORTNAME}/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/
@@ -9,58 +9,77 @@ COMMENT= Lightweight Display Manager
WWW= https://github.com/canonical/lightdm
# library/bindings are LGPLv2 or LGPLv3, the rest GPLv3+
-LICENSE= LGPL20 LGPL3 GPLv3
+LICENSE= GPLv3 LGPL20 LGPL3
LICENSE_COMB= multi
+LICENSE_FILE_GPLv3= ${WRKSRC}/COPYING.GPL3
LICENSE_FILE_LGPL20= ${WRKSRC}/COPYING.LGPL2
LICENSE_FILE_LGPL3= ${WRKSRC}/COPYING.LGPL3
-LICENSE_FILE_GPLv3= ${WRKSRC}/COPYING.GPL3
BUILD_DEPENDS= itstool:textproc/itstool
-LIB_DEPENDS= libaccountsservice.so:sysutils/accountsservice \
- libck-connector.so:sysutils/consolekit2 \
- libgcrypt.so:security/libgcrypt \
+LIB_DEPENDS= libgcrypt.so:security/libgcrypt \
libxklavier.so:x11/libxklavier
+RUN_DEPENDS= accountsservice>=0:sysutils/accountsservice \
+ ck-launch-session:sysutils/consolekit2
-USES= compiler:c++11-lang cpe gettext gmake gnome libtool localbase \
- pathfix pkgconfig tar:xz xorg
+USES= autoreconf compiler:c++11-lang cpe gettext gmake gnome \
+ libtool localbase pathfix pkgconfig tar:xz xorg
CPE_VENDOR= ${PORTNAME}_project
USE_CXXSTD= c++11
USE_GNOME= glib20 intltool
-USE_XORG= x11 xcb xdmcp
USE_LDCONFIG= yes
USE_RC_SUBR= lightdm
+USE_XORG= x11 xcb xdmcp
+GNU_CONFIGURE= yes
+# tests causes PAM errors
+CONFIGURE_ARGS= --disable-libaudit \
+ --disable-tests
+INSTALL_TARGET= install-strip
+LIBS= -lutil
CONFLICTS_INSTALL= sddm
+PORTSCOUT= limitw:1,even
+SUB_FILES= Xsession
+USERS= lightdm
+GROUPS= lightdm video
-GNU_CONFIGURE= yes
-CONFIGURE_ARGS= --disable-tests # PAM errors
-INSTALL_TARGET= install-strip
-USERS= lightdm
-GROUPS= lightdm video
-PORTSCOUT= limitw:1,even
-SUB_FILES= Xsession
+OPTIONS_DEFINE= DOCS QT5 VAPI
+OPTIONS_DEFAULT= VAPI
+OPTIONS_SUB= yes
-OPTIONS_DEFINE= DOCS VAPI
-OPTIONS_DEFAULT=VAPI
-OPTIONS_SUB= yes
+DOCS_BUILD_DEPENDS= ${LOCALBASE}/share/aclocal/yelp.m4:textproc/yelp-tools \
+ gtkdoc-check:textproc/gtk-doc
+DOCS_CONFIGURE_ON= --enable-gtk-doc
-DOCS_BUILD_DEPENDS= gtkdoc-check:textproc/gtk-doc
-DOCS_CONFIGURE_ENABLE= gtk-doc
+QT5_USES= qt:5
+QT5_USE= QT=buildtools,core,dbus,gui
+QT5_CONFIGURE_ENABLE= liblightdm-qt5
VAPI_USES= vala:build
+VAPI_USE= GNOME=introspection:build
VAPI_CONFIGURE_ENABLE= vala
-VAPI_USE= gnome=introspection:build
post-patch:
@${REINPLACE_CMD} -e 's,%%PREFIX%%,${PREFIX},' \
${WRKSRC}/data/lightdm.conf
+post-patch-DOCS-off:
+ @${REINPLACE_CMD} -e '/^GTK_DOC_CHECK/d' \
+ -e '/^YELP_HELP_INIT/d' \
+ -e '/^doc\/Makefile/d' \
+ -e '/^help\/Makefile/d' \
+ ${WRKSRC}/configure.ac
+ @${REINPLACE_CMD} -e '/^SUBDIRS/s/ doc help//' \
+ ${WRKSRC}/Makefile.am
+
post-install:
${RM} -r ${STAGEDIR}${PREFIX}/etc/init
- ${INSTALL_SCRIPT} ${WRKDIR}/Xsession ${STAGEDIR}${PREFIX}/etc/lightdm/
- ${MV} ${STAGEDIR}${PREFIX}/etc/lightdm/keys.conf ${STAGEDIR}${PREFIX}/etc/lightdm/keys.conf.sample
- ${MV} ${STAGEDIR}${PREFIX}/etc/lightdm/lightdm.conf ${STAGEDIR}${PREFIX}/etc/lightdm/lightdm.conf.sample
- ${MV} ${STAGEDIR}${PREFIX}/etc/lightdm/users.conf ${STAGEDIR}${PREFIX}/etc/lightdm/users.conf.sample
+ ${INSTALL_SCRIPT} ${WRKDIR}/Xsession ${STAGEDIR}${ETCDIR}
+ ${MV} ${STAGEDIR}${ETCDIR}/keys.conf ${STAGEDIR}${ETCDIR}/keys.conf.sample
+ ${MV} ${STAGEDIR}${ETCDIR}/lightdm.conf ${STAGEDIR}${ETCDIR}/lightdm.conf.sample
+ ${MV} ${STAGEDIR}${ETCDIR}/users.conf ${STAGEDIR}${ETCDIR}/users.conf.sample
+ ${MV} ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm.sample
+ ${MV} ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm-autologin ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm-autologin.sample
+ ${MV} ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm-greeter ${STAGEDIR}${PREFIX}/etc/pam.d/lightdm-greeter.sample
${MKDIR} ${STAGEDIR}/var/cache/lightdm \
${STAGEDIR}/var/log/lightdm \
${STAGEDIR}/var/run/lightdm
diff --git a/x11/lightdm/files/patch-common_configuration.c b/x11/lightdm/files/patch-common_configuration.c
new file mode 100644
index 000000000000..46b802cf0d25
--- /dev/null
+++ b/x11/lightdm/files/patch-common_configuration.c
@@ -0,0 +1,10 @@
+--- common/configuration.c.orig 2021-02-15 22:00:52 UTC
++++ common/configuration.c
+@@ -346,6 +346,7 @@ config_init (Configuration *config)
+ g_hash_table_insert (config->priv->lightdm_keys, "greeters-directory", GINT_TO_POINTER (KEY_SUPPORTED));
+ g_hash_table_insert (config->priv->lightdm_keys, "backup-logs", GINT_TO_POINTER (KEY_SUPPORTED));
+ g_hash_table_insert (config->priv->lightdm_keys, "dbus-service", GINT_TO_POINTER (KEY_SUPPORTED));
++ g_hash_table_insert (config->priv->lightdm_keys, "smart-xsession-errors", GINT_TO_POINTER (KEY_SUPPORTED));
+ g_hash_table_insert (config->priv->lightdm_keys, "logind-load-seats", GINT_TO_POINTER (KEY_DEPRECATED));
+
+ g_hash_table_insert (config->priv->seat_keys, "type", GINT_TO_POINTER (KEY_SUPPORTED));
diff --git a/x11/lightdm/files/patch-configure.ac b/x11/lightdm/files/patch-configure.ac
new file mode 100644
index 000000000000..82f71abb6f26
--- /dev/null
+++ b/x11/lightdm/files/patch-configure.ac
@@ -0,0 +1,11 @@
+--- configure.ac.orig 2022-07-18 03:42:33 UTC
++++ configure.ac
+@@ -48,7 +48,7 @@ AC_CHECK_HEADERS(gcrypt.h, [], AC_MSG_ERROR(libgcrypt
+
+ AC_CHECK_HEADERS(gcrypt.h, [], AC_MSG_ERROR(libgcrypt not found))
+
+-AC_CHECK_FUNCS(setresgid setresuid clearenv __getgroups_chk)
++AC_CHECK_FUNCS(setresgid setresuid setusercontext clearenv __getgroups_chk)
+
+ PKG_CHECK_MODULES(LIGHTDM, [
+ glib-2.0 >= 2.44
diff --git a/x11/lightdm/files/patch-data_Makefile.am b/x11/lightdm/files/patch-data_Makefile.am
new file mode 100644
index 000000000000..bb824df623ef
--- /dev/null
+++ b/x11/lightdm/files/patch-data_Makefile.am
@@ -0,0 +1,29 @@
+--- data/Makefile.am.orig 2022-05-01 23:00:26 UTC
++++ data/Makefile.am
+@@ -15,18 +15,6 @@ dist_completions_DATA = bash-completion/dm-tool bash-c
+ completionsdir = $(datadir)/bash-completion/completions
+ dist_completions_DATA = bash-completion/dm-tool bash-completion/lightdm
+
+-lightdm-guest-session: $(srcdir)/apparmor/lightdm-guest-session.in
+- sed -e 's|@libexecdir[@]|$(libexecdir)|g' $< >$@
+-
+-apparmor_profiledir = $(sysconfdir)/apparmor.d
+-apparmor_profile_DATA = \
+- lightdm-guest-session
+-
+-apparmor_profile_abstractionsdir = $(apparmor_profiledir)/abstractions
+-dist_apparmor_profile_abstractions_DATA = \
+- apparmor/abstractions/lightdm \
+- apparmor/abstractions/lightdm_chromium-browser
+-
+ accountsservice_interface = org.freedesktop.DisplayManager.AccountsService.xml
+
+ dbusdir = $(datadir)/dbus-1/interfaces
+@@ -46,5 +34,5 @@ dist_man1_MANS = dm-tool.1 \
+ dist_man1_MANS = dm-tool.1 \
+ lightdm.1
+
+-EXTRA_DIST = apparmor/lightdm-guest-session.in $(polkit_in_files)
+-CLEANFILES = lightdm-guest-session $(polkit_DATA)
++EXTRA_DIST = $(polkit_in_files)
++CLEANFILES = $(polkit_DATA)
diff --git a/x11/lightdm/files/patch-data_lightdm.conf b/x11/lightdm/files/patch-data_lightdm.conf
index 4fa124de5e6e..2307f7ac0134 100644
--- a/x11/lightdm/files/patch-data_lightdm.conf
+++ b/x11/lightdm/files/patch-data_lightdm.conf
@@ -1,6 +1,13 @@
---- data/lightdm.conf.orig 2018-09-05 01:33:31 UTC
+--- data/lightdm.conf.orig 2022-07-04 03:28:22 UTC
+++ data/lightdm.conf
-@@ -22,8 +22,8 @@
+@@ -17,13 +17,15 @@
+ # greeters-directory = Directory to find greeters
+ # backup-logs = True to move add a .old suffix to old log files when opening new ones
+ # dbus-service = True if LightDM provides a D-Bus service to control it
++# smart-xsession-errors = True to force .xsesion.errors file to be positioned according to XDG standards
++# Default False, put it in ~/.xsession-errors
+ #
+ [LightDM]
#start-default-seat=true
#greeter-user=lightdm
#minimum-display-number=0
@@ -10,8 +17,16 @@
+lock-memory=false
#user-authority-in-system-dir=false
#guest-account-script=guest-account
- #logind-check-graphical=false
-@@ -108,7 +108,7 @@
+ #logind-check-graphical=true
+@@ -35,6 +37,7 @@
+ #greeters-directory=$XDG_DATA_DIRS/lightdm/greeters:$XDG_DATA_DIRS/xgreeters
+ #backup-logs=true
+ #dbus-service=true
++#smart-xsession-errors=false
+
+ #
+ # Seat configuration
+@@ -108,7 +111,7 @@
#allow-user-switching=true
#allow-guest=true
#guest-session=
diff --git a/x11/lightdm/files/patch-data_users.conf b/x11/lightdm/files/patch-data_users.conf
index 5366e684f798..e30ff589bcd1 100644
--- a/x11/lightdm/files/patch-data_users.conf
+++ b/x11/lightdm/files/patch-data_users.conf
@@ -1,4 +1,4 @@
---- data/users.conf.orig 2015-08-09 23:30:00 UTC
+--- data/users.conf.orig 2019-08-04 22:29:55 UTC
+++ data/users.conf
@@ -9,6 +9,6 @@
# hidden-shells = Shells that indicate a user cannot login
@@ -7,4 +7,4 @@
-minimum-uid=500
+minimum-uid=1001
hidden-users=nobody nobody4 noaccess
- hidden-shells=/bin/false /usr/sbin/nologin
+ hidden-shells=/bin/false /usr/sbin/nologin /sbin/nologin
diff --git a/x11/lightdm/files/patch-liblightdm-gobject_language.c b/x11/lightdm/files/patch-liblightdm-gobject_language.c
index adfbd9a9e9a4..f6d5cbea8165 100644
--- a/x11/lightdm/files/patch-liblightdm-gobject_language.c
+++ b/x11/lightdm/files/patch-liblightdm-gobject_language.c
@@ -1,8 +1,8 @@
https://bugs.launchpad.net/lightdm/+bug/790186
---- liblightdm-gobject/language.c.orig 2018-08-29 22:30:07 UTC
+--- liblightdm-gobject/language.c.orig 2021-02-15 22:06:28 UTC
+++ liblightdm-gobject/language.c
-@@ -57,6 +57,12 @@ G_DEFINE_TYPE_WITH_PRIVATE (LightDMLanguage, lightdm_l
+@@ -55,6 +55,12 @@ static GList *languages = NULL;
static gboolean have_languages = FALSE;
static GList *languages = NULL;
@@ -15,7 +15,7 @@ https://bugs.launchpad.net/lightdm/+bug/790186
static void
update_languages (void)
{
-@@ -83,7 +89,7 @@ update_languages (void)
+@@ -81,7 +87,7 @@ update_languages (void)
continue;
/* Ignore the non-interesting languages */
@@ -24,7 +24,7 @@ https://bugs.launchpad.net/lightdm/+bug/790186
continue;
LightDMLanguage *language = g_object_new (LIGHTDM_TYPE_LANGUAGE, "code", code, NULL);
-@@ -94,12 +100,6 @@ update_languages (void)
+@@ -92,12 +98,6 @@ update_languages (void)
have_languages = TRUE;
}
@@ -37,7 +37,7 @@ https://bugs.launchpad.net/lightdm/+bug/790186
/* Get a valid locale name that can be passed to setlocale(), so we always can use nl_langinfo() to get language and country names. */
static gchar *
get_locale_name (const gchar *code)
-@@ -131,7 +131,7 @@ get_locale_name (const gchar *code)
+@@ -129,7 +129,7 @@ get_locale_name (const gchar *code)
for (gint i = 0; avail_locales[i]; i++)
{
const gchar *loc = avail_locales[i];
diff --git a/x11/lightdm/files/patch-src_lightdm.c b/x11/lightdm/files/patch-src_lightdm.c
index 99f72cd044b1..bc422d31c2af 100644
--- a/x11/lightdm/files/patch-src_lightdm.c
+++ b/x11/lightdm/files/patch-src_lightdm.c
@@ -1,6 +1,15 @@
--- src/lightdm.c.orig 2022-07-10 21:17:23 UTC
+++ src/lightdm.c
-@@ -813,7 +813,7 @@ main (int argc, char **argv)
+@@ -758,6 +758,8 @@ main (int argc, char **argv)
+ config_set_boolean (config_get_instance (), "LightDM", "backup-logs", TRUE);
+ if (!config_has_key (config_get_instance (), "LightDM", "dbus-service"))
+ config_set_boolean (config_get_instance (), "LightDM", "dbus-service", TRUE);
++ if (!config_has_key (config_get_instance (), "LightDM", "smart-xsession-errors"))
++ config_set_boolean (config_get_instance (), "LightDM", "smart-xsession-errors", FALSE);
+ if (!config_has_key (config_get_instance (), "Seat:*", "type"))
+ config_set_string (config_get_instance (), "Seat:*", "type", "local");
+ if (!config_has_key (config_get_instance (), "Seat:*", "pam-service"))
+@@ -813,7 +815,7 @@ main (int argc, char **argv)
if (!config_has_key (config_get_instance (), "XDMCPServer", "hostname"))
config_set_string (config_get_instance (), "XDMCPServer", "hostname", g_get_host_name ());
if (!config_has_key (config_get_instance (), "LightDM", "logind-check-graphical"))
diff --git a/x11/lightdm/files/patch-src_session-child.c b/x11/lightdm/files/patch-src_session-child.c
index ba8fd14b5577..5ee4af1043f3 100644
--- a/x11/lightdm/files/patch-src_session-child.c
+++ b/x11/lightdm/files/patch-src_session-child.c
@@ -1,14 +1,19 @@
---- src/session-child.c.orig 2018-02-06 23:31:03 UTC
+--- src/session-child.c.orig 2021-04-12 04:52:50 UTC
+++ src/session-child.c
-@@ -13,7 +13,6 @@
+@@ -13,9 +13,11 @@
#include <grp.h>
#include <glib.h>
#include <security/pam_appl.h>
-#include <utmp.h>
#include <utmpx.h>
#include <sys/mman.h>
++#if HAVE_SETUSERCONTEXT
++#include <login_cap.h>
++#endif
-@@ -192,28 +191,6 @@ read_xauth (void)
+ #if HAVE_LIBAUDIT
+ #include <libaudit.h>
+@@ -193,28 +195,6 @@ 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);
}
@@ -37,7 +42,7 @@
#if HAVE_LIBAUDIT
static void
audit_event (int type, const gchar *username, uid_t uid, const gchar *remote_host_name, const gchar *tty, gboolean success)
-@@ -363,7 +340,6 @@ session_child_run (int argc, char **argv)
+@@ -364,7 +344,6 @@ session_child_run (int argc, char **argv)
ut.ut_tv.tv_sec = tv.tv_sec;
ut.ut_tv.tv_usec = tv.tv_usec;
@@ -45,16 +50,70 @@
#if HAVE_LIBAUDIT
audit_event (AUDIT_USER_LOGIN, username, -1, remote_host_name, tty, FALSE);
-@@ -393,7 +369,7 @@ session_child_run (int argc, char **argv)
+@@ -394,7 +373,7 @@ session_child_run (int argc, char **argv)
else
{
/* Set POSIX variables */
- pam_putenv (pam_handle, "PATH=/usr/local/bin:/usr/bin:/bin");
-+ pam_putenv (pam_handle, "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:~/bin");
++ pam_putenv (pam_handle, "PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin");
pam_putenv (pam_handle, g_strdup_printf ("USER=%s", username));
pam_putenv (pam_handle, g_strdup_printf ("LOGNAME=%s", username));
pam_putenv (pam_handle, g_strdup_printf ("HOME=%s", user_get_home_directory (user)));
-@@ -708,7 +684,6 @@ session_child_run (int argc, char **argv)
+@@ -636,7 +615,29 @@ session_child_run (int argc, char **argv)
+ /* Make this process its own session */
+ if (setsid () < 0)
+ _exit (errno);
+-
++#if HAVE_SETUSERCONTEXT
++ /* Setup user context
++ * Reset the current environment to what is in the PAM context,
++ * then setusercontext will add to it as necessary as there is no
++ * option for setusercontext to add to a PAM context.
++ */
++ extern char **environ;
++ environ = pam_getenvlist (pam_handle);
++ struct passwd* pwd = getpwnam (username);
++ if (pwd) {
++ if (setusercontext (NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0) {
++ int _errno = errno;
++ fprintf(stderr, "setusercontext for \"%s\" (%d) failed: %s\n",
++ username, user_get_uid (user), strerror (errno));
++ _exit (_errno);
++ }
++ endpwent();
++ } else {
++ fprintf (stderr, "getpwname for \"%s\" failed: %s\n",
++ username, strerror (errno));
++ _exit (ENOENT);
++ }
++#else
+ /* Change to this user */
+ if (getuid () == 0)
+ {
+@@ -646,6 +647,7 @@ session_child_run (int argc, char **argv)
+ if (setuid (uid) != 0)
+ _exit (errno);
+ }
++#endif
+
+ /* Change working directory */
+ /* NOTE: This must be done after the permissions are changed because NFS filesystems can
+@@ -668,7 +670,13 @@ session_child_run (int argc, char **argv)
+ signal (SIGPIPE, SIG_DFL);
+
+ /* Run the command */
+- execve (command_argv[0], command_argv, pam_getenvlist (pam_handle));
++ execve (command_argv[0], command_argv,
++#if HAVE_SETUSERCONTEXT
++ environ
++#else
++ pam_getenvlist (pam_handle)
++#endif
++ );
+ _exit (EXIT_FAILURE);
+ }
+
+@@ -709,7 +717,6 @@ session_child_run (int argc, char **argv)
if (!pututxline (&ut))
g_printerr ("Failed to write utmpx: %s\n", strerror (errno));
endutxent ();
@@ -62,7 +121,7 @@
#if HAVE_LIBAUDIT
audit_event (AUDIT_USER_LOGIN, username, uid, remote_host_name, tty, TRUE);
-@@ -749,7 +724,6 @@ session_child_run (int argc, char **argv)
+@@ -750,7 +757,6 @@ session_child_run (int argc, char **argv)
if (!pututxline (&ut))
g_printerr ("Failed to write utmpx: %s\n", strerror (errno));
endutxent ();
diff --git a/x11/lightdm/files/patch-src_session.c b/x11/lightdm/files/patch-src_session.c
new file mode 100644
index 000000000000..73629fc301e7
--- /dev/null
+++ b/x11/lightdm/files/patch-src_session.c
@@ -0,0 +1,21 @@
+--- src/session.c.orig 2021-04-12 04:52:50 UTC
++++ src/session.c
+@@ -981,7 +981,17 @@ session_init (Session *session)
+ {
+ SessionPrivate *priv = session_get_instance_private (session);
+
+- priv->log_filename = g_strdup (".xsession-errors");
++ if(config_get_boolean (config_get_instance (), "LightDM", "smart-xsession-errors")) {
++ if (g_getenv ("XDG_STATE_HOME")) {
++ priv->log_filename = g_build_filename (g_getenv ("XDG_STATE_HOME"), ".xsession-errors", NULL);
++ } else if (g_getenv ("XDG_CACHE_HOME")) {
++ priv->log_filename = g_build_filename (g_getenv ("XDG_CACHE_HOME"), ".xsession-errors", NULL);
++ } else {
++ priv->log_filename = g_build_filename (".cache", ".xsession-errors", NULL);
++ }
++ } else {
++ priv->log_filename = g_strdup (".xsession-errors");
++ }
+ priv->log_mode = LOG_MODE_BACKUP_AND_TRUNCATE;
+ priv->to_child_input = -1;
+ priv->from_child_output = -1;
diff --git a/x11/lightdm/pkg-plist b/x11/lightdm/pkg-plist
index 4813332c3660..ed4fcb87411f 100644
--- a/x11/lightdm/pkg-plist
+++ b/x11/lightdm/pkg-plist
@@ -3,9 +3,9 @@ bin/dm-tool
@sample %%ETCDIR%%/keys.conf.sample
@sample %%ETCDIR%%/lightdm.conf.sample
@sample %%ETCDIR%%/users.conf.sample
-etc/pam.d/lightdm
-etc/pam.d/lightdm-autologin
-etc/pam.d/lightdm-greeter
+@sample etc/pam.d/lightdm.sample
+@sample etc/pam.d/lightdm-autologin.sample
+@sample etc/pam.d/lightdm-greeter.sample
include/lightdm-gobject-1/lightdm.h
include/lightdm-gobject-1/lightdm/greeter.h
include/lightdm-gobject-1/lightdm/language.h
@@ -14,12 +14,25 @@ include/lightdm-gobject-1/lightdm/power.h
include/lightdm-gobject-1/lightdm/session.h
include/lightdm-gobject-1/lightdm/system.h
include/lightdm-gobject-1/lightdm/user.h
+%%QT5%%include/lightdm-qt5-3/QLightDM/Greeter
+%%QT5%%include/lightdm-qt5-3/QLightDM/Power
+%%QT5%%include/lightdm-qt5-3/QLightDM/SessionsModel
+%%QT5%%include/lightdm-qt5-3/QLightDM/UsersModel
+%%QT5%%include/lightdm-qt5-3/QLightDM/greeter.h
+%%QT5%%include/lightdm-qt5-3/QLightDM/power.h
+%%QT5%%include/lightdm-qt5-3/QLightDM/sessionsmodel.h
+%%QT5%%include/lightdm-qt5-3/QLightDM/usersmodel.h
%%VAPI%%lib/girepository-1.0/LightDM-1.typelib
lib/liblightdm-gobject-1.a
lib/liblightdm-gobject-1.so
lib/liblightdm-gobject-1.so.0
lib/liblightdm-gobject-1.so.0.0.0
+%%QT5%%lib/liblightdm-qt5-3.a
+%%QT5%%lib/liblightdm-qt5-3.so
+%%QT5%%lib/liblightdm-qt5-3.so.0
+%%QT5%%lib/liblightdm-qt5-3.so.0.0.0
libdata/pkgconfig/liblightdm-gobject-1.pc
+%%QT5%%libdata/pkgconfig/liblightdm-qt5-3.pc
libexec/lightdm-guest-session
man/man1/dm-tool.1.gz
man/man1/lightdm.1.gz