From nobody Fri Dec 29 18:25:19 2023 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4T1v1r197Kz54vSc; Fri, 29 Dec 2023 18:25:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4T1v1r0d9Xz3DwC; Fri, 29 Dec 2023 18:25:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1703874320; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kbNsoMScDjHNEOO21kXpuD6qEaCjBPBBcee36NC4o1M=; b=rrLppTouHnO+HIxLc04W0gb8l3XmGobeAzgqprvk5/YcLSi8D/4UcDKVsULdGGv70hJQle nWIaQoadI4bU7eJ4B/JPurMNDxh5VeDvj7t9MQucEmrw2cnS7x+IqxNroEcdJsEqHBtAuj 83NjMZDfx+nIGlOxFg0cgD2I3qKpi8CZKX4qLAPCYaFZ+hLNPC5xyDynSkrfApFtbxVXB2 V2sNYCzx99X7tiGcEvEYIuJOuUau9VzSA1pLCqqVqmfTxXP6StllamKia6Mm901rJ5S7jH fftf2Xas3uTEKGuFjKN1OWXaq9b8kGFUh8xPUOaR8NQcfQxz7OGwKVRoqkQT6g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1703874320; a=rsa-sha256; cv=none; b=wq+mSa6b+sRv1UTQSU4CTwLMmCZoHAMEQj1MsCFMIUPGNnAahNBSoJ+0IYmoejlCKZIgPT 3czAAzhDgVm9K9+/97FiNdcaOz/HJgib1zfximeL9LRzaVEPa7FxZEq9/Kk59d9jLtGYSo cgxtAlFd3Ec8WEnN8gZ4TLQbMrOHKYImwiF3NTEtsyhRTHerAUE/ylZs9rB2V86aPYvN9F 1RVe2lNYy4A1EWQo2TMd21qwsonsJhoqm8TuiB7fN1c//QRVcm6j6HQxZfc6AspYYFYKBt tJGmg7IhqBkZf6WZthV8blQ9EzB45rWKjoJufzlolFtHxOz35SIPcBOoyhSfPA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1703874320; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=kbNsoMScDjHNEOO21kXpuD6qEaCjBPBBcee36NC4o1M=; b=WxaK226NGvQs3ZuHV0xkBQb0JUD+siccNiJA5wam/3U35bYKPcSDH/n970iDSDaatN1nwJ fkcUpSLMipg1xrHnRx5DQzuzNzwynbVMxizAaKl8vr94ii0xA2pFUVZ5MfYuu1LdCmJpnE PYTWE7oFta+cqeKmJ0qfwGEnnNpz4niY3JK9FWefEjE+cVD3LP56Q5buQCt7Hn8IUe2+Zb 3zhusvL4qB7d+pLKVZVIMG1CkrTZHwxwBwg+x5zawXYml4v/AIWUFhm+hmCLvt/lNrv+lw XLjAIeOpUZaIQmPn6SFe34Wjx000CejW1l8q+TmPYagQv3Id4CBnf390G6GpzQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4T1v1q6pZsz2Qv; Fri, 29 Dec 2023 18:25:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 3BTIPJqq003834; Fri, 29 Dec 2023 18:25:19 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 3BTIPJcY003831; Fri, 29 Dec 2023 18:25:19 GMT (envelope-from git) Date: Fri, 29 Dec 2023 18:25:19 GMT Message-Id: <202312291825.3BTIPJcY003831@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Guido Falsi Subject: git: 23a47f28de20 - main - x11/lightdm: Fix login.conf issues, import various improvements List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-main@freebsd.org X-BeenThere: dev-commits-ports-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: madpilot X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 23a47f28de20c42fb2c3a7286c815797013df6ea Auto-Submitted: auto-generated The branch main has been updated by madpilot: URL: https://cgit.FreeBSD.org/ports/commit/?id=23a47f28de20c42fb2c3a7286c815797013df6ea commit 23a47f28de20c42fb2c3a7286c815797013df6ea Author: Guido Falsi AuthorDate: 2023-12-29 18:23:10 +0000 Commit: Guido Falsi 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 , Daniel Tameling (provided setusercontext patch), Anton Saietskii --- 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 #include #include -#include #include #include ++#if HAVE_SETUSERCONTEXT ++#include ++#endif -@@ -192,28 +191,6 @@ read_xauth (void) + #if HAVE_LIBAUDIT + #include +@@ -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