git: 3ed44d9da9a5 - main - x11/gdm: udpate to 47.0

From: Baptiste Daroussin <bapt_at_FreeBSD.org>
Date: Wed, 11 Jun 2025 10:08:25 UTC
The branch main has been updated by bapt:

URL: https://cgit.FreeBSD.org/ports/commit/?id=3ed44d9da9a554e59cec3d972c5965d9ac09f028

commit 3ed44d9da9a554e59cec3d972c5965d9ac09f028
Author:     Olivier Duchateau <duchateau.olivier@gmail.com>
AuthorDate: 2025-06-11 09:53:26 +0000
Commit:     Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2025-06-11 10:07:11 +0000

    x11/gdm: udpate to 47.0
    
    PR:     286697
---
 x11/gdm/Makefile                                   | 110 ++---
 x11/gdm/distinfo                                   |   6 +-
 .../15_org.gnome.login-screen.gschema.override     |   3 +
 x11/gdm/files/Makefile.am                          |  18 -
 x11/gdm/files/client.conf.in                       |   2 -
 x11/gdm/files/configure.ac                         | 154 -------
 x11/gdm/files/daemon_Makefile.am                   |  33 --
 x11/gdm/files/gdm-autologin.in                     |   6 +-
 x11/gdm/files/gdm-password.in                      |   6 +-
 x11/gdm/files/gdm.in                               |   4 +-
 x11/gdm/files/patch-build-aux_find-x-server.sh     |  13 +
 x11/gdm/files/patch-common_gdm-common.c            | 487 +--------------------
 x11/gdm/files/patch-common_gdm-common.h            |  39 +-
 x11/gdm/files/patch-common_gdm-log.c               |   2 +-
 .../files/patch-daemon_gdm-display-access-file.c   |  17 +-
 x11/gdm/files/patch-daemon_gdm-display.c           |  16 -
 .../files/patch-daemon_gdm-launch-environment.c    |  21 +
 .../files/patch-daemon_gdm-local-display-factory.c | 124 +++---
 x11/gdm/files/patch-daemon_gdm-manager.c           |  90 ++--
 x11/gdm/files/patch-daemon_gdm-server.c            |  14 +-
 .../files/patch-daemon_gdm-session-worker-job.c    |   2 +-
 x11/gdm/files/patch-daemon_gdm-session-worker.c    | 212 +++++----
 x11/gdm/files/patch-daemon_gdm-session.c           |  32 +-
 x11/gdm/files/patch-daemon_gdm-wayland-session.c   |  36 ++
 x11/gdm/files/patch-daemon_gdm-x-session.c         |  18 +-
 x11/gdm/files/patch-daemon_main.c                  |   2 +-
 x11/gdm/files/patch-daemon_meson.build             |   6 +-
 x11/gdm/files/patch-data_gdm.conf-custom.in        |  12 +
 x11/gdm/files/patch-data_meson.build               | 173 +++++---
 x11/gdm/files/patch-libgdm_gdm-sessions.c          |  38 ++
 x11/gdm/files/patch-libgdm_gdm-user-switching.c    |  48 --
 x11/gdm/files/patch-meson.build                    |  95 ++--
 x11/gdm/pkg-install                                |   2 -
 x11/gdm/pkg-message                                |   2 +-
 x11/gdm/pkg-plist                                  |  25 +-
 35 files changed, 659 insertions(+), 1209 deletions(-)

diff --git a/x11/gdm/Makefile b/x11/gdm/Makefile
index 24bd485364b5..761c2de67f9e 100644
--- a/x11/gdm/Makefile
+++ b/x11/gdm/Makefile
@@ -1,59 +1,55 @@
 PORTNAME=	gdm
-PORTVERSION=	42.0
-PORTREVISION=	7
+PORTVERSION=	47.0
 CATEGORIES=	x11 gnome
 MASTER_SITES=	GNOME
 DIST_SUBDIR=	gnome
 
 MAINTAINER=	gnome@FreeBSD.org
 COMMENT=	GNOME display manager
-WWW=		https://www.gnome.org/projects/gdm/
+WWW=		https://gitlab.gnome.org/GNOME/gdm
 
-LICENSE=	GPLv2
+LICENSE=	GPLv2+
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-BUILD_DEPENDS=	iso-codes>=0:misc/iso-codes \
-		itstool:textproc/itstool \
-		zenity>=3.0.0:x11/zenity
+PORTSCOUT=	limit:^47\.
+
+BUILD_DEPENDS=	iso-codes>0:misc/iso-codes \
+		xorg-server>0:x11-servers/xorg-server \
+		itstool:textproc/itstool
 LIB_DEPENDS=	libaccountsservice.so:sysutils/accountsservice \
 		libcanberra-gtk3.so:audio/libcanberra-gtk3 \
 		libcanberra.so:audio/libcanberra \
 		libck-connector.so:sysutils/consolekit2 \
-		libfribidi.so:converters/fribidi
-RUN_DEPENDS=	at-spi2-core>=0:accessibility/at-spi2-core \
-		gnome-icon-theme-symbolic>=0:x11-themes/gnome-icon-theme-symbolic \
-		gnome-keyring-3:security/gnome-keyring \
-		gnome-session>=3.0.0:x11/gnome-session \
-		gnome-settings-daemon>=3.0.0:sysutils/gnome-settings-daemon \
-		iso-codes>=0:misc/iso-codes \
-		polkit-gnome>=0.105:sysutils/polkit-gnome \
-		zenity>=3.0.0:x11/zenity
+		libjson-glib-1.0.so:devel/json-glib
+RUN_DEPENDS=	gnome-keyring-3:security/gnome-keyring \
+		gnome-session>0:x11/gnome-session \
+		gnome-settings-daemon>0:sysutils/gnome-settings-daemon \
+		iso-codes>0:misc/iso-codes
 # used in scripts
 RUN_DEPENDS+=	setxkbmap:x11/setxkbmap \
 		xhost:x11/xhost \
 		xmodmap:x11/xmodmap \
 		xrdb:x11/xrdb \
 		xsetroot:x11/xsetroot \
-		xterm:x11/xterm
+		xterm:x11/xterm \
+		zenity:x11/zenity
 
 USERS=		gdm
 GROUPS=		gdm video
 
-PORTSCOUT=	limitw:1,even
-
 USES=		cpe gettext gnome localbase:ldflags meson pathfix \
 		pkgconfig tar:xz xorg
 CPE_VENDOR=	gnome
 CPE_PRODUCT=	gnome_display_manager
-USE_GNOME=	cairo dconf gtk30 intltool introspection
+USE_GNOME=	atk dconf gdkpixbuf glib20 gtk30 introspection:build
 USE_LDCONFIG=	yes
 USE_XORG=	x11 xau xcb xdmcp xorgproto
 USE_RC_SUBR=	gdm
 USE_GNOME_SUBR=	yes
-GLIB_SCHEMAS=	org.gnome.login-screen.gschema.xml
+GLIB_SCHEMAS=	org.gnome.login-screen.gschema.xml \
+		15_org.gnome.login-screen.gschema.override
 MESON_ARGS=	-Dat-spi-registryd-dir=${PREFIX}/libexec \
 		-Dcustom-conf=${PREFIX}/etc/gdm/custom.conf \
-		-Ddbus-sys=${PREFIX}/etc/dbus-1/system.d \
 		-Ddefault-pam-config=none \
 		-Ddmconfdir=${PREFIX}/share/xsessions \
 		-Dgdm-xsession=true \
@@ -61,24 +57,21 @@ MESON_ARGS=	-Dat-spi-registryd-dir=${PREFIX}/libexec \
 		-Dinitial-vt=09 \
 		-Dlang-file=${PREFIX}/etc/gdm/locale.conf \
 		-Dlibaudit=disabled \
-		-Dlog-dir=/var/log/gdm \
 		-Dpid-file=/var/run/gdm.pid \
 		-Dplymouth=disabled \
 		-Dscreenshot-dir=/var/run/gdm/greeter \
 		-Dselinux=disabled \
-		-Dsysconfsubdir=gdm \
 		-Dsystemd-journal=false \
 		-Duser-display-server=false \
+		-Dudev-dir=${PREFIX}/lib/udev/rules.d \
 		-Duser=gdm \
-		-Dwayland-support=false \
-		-Dworking-dir=/var/db/gdm \
+		-Dworking-dir=/var/cache/gdm \
 		-Dxauth-dir=/var/run/gdm
 
 # this is a hack until we can get our own pam dir and dir in order.
 CPPFLAGS+=	-DHAS_SA_LEN -DWITH_CONSOLE_KIT=1
-INSTALL_TARGET=	install-strip
 
-SUB_FILES+=	client.conf gdm-autologin gdm-launch-environment gdm-password \
+SUB_FILES+=	gdm-autologin gdm-launch-environment gdm-password \
 		locale.conf
 
 GDMDIR?=	${PREFIX}/etc/gdm
@@ -92,48 +85,33 @@ IPV6_MESON_TRUE=	ipv6
 .include <bsd.port.options.mk>
 
 post-patch:
-	@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
-		-e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
-		-e 's|/bin/bash|/bin/sh|g' \
-		${WRKSRC}/daemon/gdm-session-worker.c
 	@${REINPLACE_CMD} -e 's|/usr/X11R6|${LOCALBASE}|g' \
 		-e 's|/usr/bin/X|${LOCALBASE}/bin/X|g' \
 		-e 's|/usr/bin/Xorg|${LOCALBASE}/bin/Xorg|g' \
-		${WRKSRC}/meson.build ${WRKSRC}/daemon/*.c ${WRKSRC}/po/*.po
+		${WRKSRC}/meson.build
+	@${REINPLACE_CMD} -e 's|/usr/bin/|${LOCALBASE}/bin/|g' \
+		${WRKSRC}/daemon/gdm-local-display-factory.c
 	@${REINPLACE_CMD} -e 's|/at-spi-registryd|/at-spi2-registryd|g' \
 		${WRKSRC}/chooser/gdm-host-chooser.c \
 		${WRKSRC}/chooser/chooser-main.c
 	@${REINPLACE_CMD} -e 's|/etc/X11|${LOCALBASE}/etc/X11|g' \
 		${WRKSRC}/data/Init.in \
-		${WRKSRC}/data/PostLogin \
-		${WRKSRC}/data/PostSession.in \
-		${WRKSRC}/data/PreSession.in \
 		${WRKSRC}/data/Xsession.in
-	@${RM}	${WRKSRC}/data/applications/gdm-simple-greeter.desktop \
-		${WRKSRC}/data/applications/gdm-simple-greeter.desktop.in \
-		${WRKSRC}/data/applications/gnome-shell.desktop \
 
-post-install:
-	${MV} ${STAGEDIR}${PREFIX}/etc/gdm/custom.conf \
-		${STAGEDIR}${PREFIX}/etc/gdm/custom.conf.sample
-	${MV} ${STAGEDIR}${PREFIX}/etc/gdm/PostSession/Default \
-		${STAGEDIR}${PREFIX}/etc/gdm/PostSession/Default.sample
-	${MV} ${STAGEDIR}${PREFIX}/etc/gdm/PreSession/Default \
-		${STAGEDIR}${PREFIX}/etc/gdm/PreSession/Default.sample
-	${MV} ${STAGEDIR}${PREFIX}/etc/gdm/Init/Default \
-		${STAGEDIR}${PREFIX}/etc/gdm/Init/Default.sample
-	${MV} ${STAGEDIR}${PREFIX}/etc/gdm/Xsession \
-		${STAGEDIR}${PREFIX}/etc/gdm/Xsession.sample
-	${MV} ${STAGEDIR}${PREFIX}/etc/dbus-1/system.d/gdm.conf \
-		${STAGEDIR}${PREFIX}/etc/dbus-1/system.d/gdm.conf.sample
-
-	${MKDIR} ${STAGEDIR}${PREFIX}/share/xsessions
-	${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/Sessions
-	${MKDIR} ${STAGEDIR}${PREFIX}/etc/dm/Sessions
-
-	${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home
-	${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/
+# Force X11 session (support of Wayland is not yet complete!)
+	@${REINPLACE_CMD} -e 's|wayland|xorg|' \
+		${WRKSRC}/data/gdm.schemas.in
+
+pre-install:
+	${MKDIR} ${STAGEDIR}/var/cache/gdm
+	${MKDIR} ${STAGEDIR}/var/log/gdm
+	${MKDIR} ${STAGEDIR}/var/run/gdm/greeter
 
+	#${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home
+	#${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse
+	#${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home/.config
+
+post-install:
 	${INSTALL_DATA} ${WRKDIR}/gdm-autologin \
 		${STAGEDIR}${PREFIX}/etc/pam.d/gdm-autologin.sample
 	${INSTALL_DATA} ${WRKDIR}/gdm-launch-environment \
@@ -141,19 +119,13 @@ post-install:
 	${INSTALL_DATA} ${WRKDIR}/gdm-password \
 		${STAGEDIR}${PREFIX}/etc/pam.d/gdm-password.sample
 
-	${INSTALL_DATA} ${WRKDIR}/client.conf \
-		${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/client.conf.sample
+	#${INSTALL_DATA} ${WRKDIR}/client.conf \
+	#	${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/client.conf.sample
 
 	${INSTALL_DATA} ${WRKDIR}/locale.conf \
 		${STAGEDIR}${PREFIX}/etc/gdm/locale.conf.sample
 
-	${MKDIR} ${STAGEDIR}/var/cache/gdm
-	${MKDIR} ${STAGEDIR}/var/log/gdm
-	${MKDIR} ${STAGEDIR}/var/run/gdm
-	${MKDIR} ${STAGEDIR}/var/run/gdm/greeter
-
-	@${RM} ${STAGEDIR}${PREFIX}/lib/udev/rules.d/61-gdm.rules
-	@${RMDIR} ${STAGEDIR}${PREFIX}/lib/udev/rules.d
-	@${RMDIR} ${STAGEDIR}${PREFIX}/lib/udev
+	${INSTALL_DATA} ${FILESDIR}/15_org.gnome.login-screen.gschema.override \
+		${STAGEDIR}${PREFIX}/share/glib-2.0/schemas/
 
 .include <bsd.port.mk>
diff --git a/x11/gdm/distinfo b/x11/gdm/distinfo
index a80583954905..f69f6eab0f2e 100644
--- a/x11/gdm/distinfo
+++ b/x11/gdm/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1647984111
-SHA256 (gnome/gdm-42.0.tar.xz) = a328ac976937bec179971ff07829a1246b98ce724181c128ae32a0ba47ad3855
-SIZE (gnome/gdm-42.0.tar.xz) = 811200
+TIMESTAMP = 1744645483
+SHA256 (gnome/gdm-47.0.tar.xz) = c5858326bfbcc8ace581352e2be44622dc0e9e5c2801c8690fd2eed502607f84
+SIZE (gnome/gdm-47.0.tar.xz) = 936172
diff --git a/x11/gdm/files/15_org.gnome.login-screen.gschema.override b/x11/gdm/files/15_org.gnome.login-screen.gschema.override
new file mode 100644
index 000000000000..7ddb43edbb3e
--- /dev/null
+++ b/x11/gdm/files/15_org.gnome.login-screen.gschema.override
@@ -0,0 +1,3 @@
+[org.gnome.login-screen]
+enable-fingerprint-authentication=false
+enable-smartcard-authentication=false
diff --git a/x11/gdm/files/Makefile.am b/x11/gdm/files/Makefile.am
deleted file mode 100644
index 6bb317816bc5..000000000000
--- a/x11/gdm/files/Makefile.am
+++ /dev/null
@@ -1,18 +0,0 @@
-$OpenBSD: patch-Makefile_am,v 1.1 2016/10/31 16:15:46 ajacoutot Exp $
-
-REVERT - Linux-PAM
-From 714b6af29b916ac7da0cdab6f83460574ed49cf2 Mon Sep 17 00:00:00 2001
-From: Ray Strode <rstrode@redhat.com>
-Date: Mon, 15 Aug 2016 13:48:00 -0400
-Subject: pam_gdm: add stub pam module
-
---- Makefile.am.orig	2017-10-30 16:21:02.000000000 +0100
-+++ Makefile.am	2018-01-14 12:30:07.298406000 +0100
-@@ -7,7 +7,6 @@ SUBDIRS = 			\
- 	daemon 			\
- 	libgdm 			\
- 	utils 			\
--	pam_gdm			\
- 	po 			\
- 	tests 			\
- 	$(NULL)
diff --git a/x11/gdm/files/client.conf.in b/x11/gdm/files/client.conf.in
deleted file mode 100644
index ef886bff7259..000000000000
--- a/x11/gdm/files/client.conf.in
+++ /dev/null
@@ -1,2 +0,0 @@
-autospawn = no
-daemon-binary = /usr/bin/true
diff --git a/x11/gdm/files/configure.ac b/x11/gdm/files/configure.ac
deleted file mode 100644
index 80b14caaa4d2..000000000000
--- a/x11/gdm/files/configure.ac
+++ /dev/null
@@ -1,154 +0,0 @@
-$OpenBSD: patch-configure_ac,v 1.12 2017/04/17 13:17:07 ajacoutot Exp $
-
-REVERT - Linux-PAM
-From 714b6af29b916ac7da0cdab6f83460574ed49cf2 Mon Sep 17 00:00:00 2001
-From: Ray Strode <rstrode@redhat.com>
-Date: Mon, 15 Aug 2016 13:48:00 -0400
-Subject: pam_gdm: add stub pam module
-
-REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
-From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001
-From: Ray Strode <rstrode@redhat.com>
-Date: Fri, 12 Jun 2015 13:28:01 -0400
-Subject: drop consolekit support
-
-https://bugzilla.gnome.org/show_bug.cgi?id=722482
-
---- configure.ac.orig	2017-10-30 16:21:11.000000000 +0100
-+++ configure.ac	2018-01-14 13:01:16.646216000 +0100
-@@ -232,12 +232,6 @@ AM_CONDITIONAL(ENABLE_EXHERBO_PAM_CONFIG, test x$with_
- AM_CONDITIONAL(ENABLE_LFS_PAM_CONFIG, test x$with_default_pam_config = xlfs)
- AM_CONDITIONAL(ENABLE_ARCH_PAM_CONFIG, test x$with_default_pam_config = xarch)
- 
--AC_CHECK_HEADERS([security/pam_modules.h security/pam_modutil.h security/pam_ext.h],
--                 [have_pam=yes],
--                 [if test "x$have_pam" = xyes ; then
--                        AC_MSG_ERROR([PAM development files not found.])
--                 fi])
--
- AC_ARG_ENABLE(console-helper,
- 	      AS_HELP_STRING([--enable-console-helper],
-                              [Enable PAM console helper @<:@default=auto@:>@]),,
-@@ -263,7 +257,15 @@ AC_ARG_WITH(tcp-wrappers,
-                            [Use TCP Wrappers @<:@default=auto@:>@]),,
-             with_tcp_wrappers=auto)
- 
-+AC_ARG_WITH(console-kit,
-+            AS_HELP_STRING([--with-console-kit],
-+                           [Add ConsoleKit support @<:@default=auto@:>@]),,
-+            with_console_kit=no)
- 
-+AC_ARG_WITH(systemd,
-+            AS_HELP_STRING([--with-systemd],
-+                           [Add systemd support @<:@default=auto@:>@]),
-+            [with_systemd=$withval], [with_systemd=auto])
- AC_ARG_WITH([systemdsystemunitdir],
-             AS_HELP_STRING([--with-systemdsystemunitdir=DIR],
-                            [Directory for systemd service files]),
-@@ -548,6 +550,8 @@ fi
- if test "x$supports_pam_extensions" = "xyes" ; then
- 	AM_CONDITIONAL(SUPPORTS_PAM_EXTENSIONS, true)
- 	AC_DEFINE(SUPPORTS_PAM_EXTENSIONS, 1, [Define if PAM supports GDMs custom extensions])
-+else
-+	AM_CONDITIONAL(SUPPORTS_PAM_EXTENSIONS, false)
- fi
- 
- AC_CHECK_LIB(keyutils, keyctl_read, [
-@@ -655,14 +659,8 @@ dnl --------------------------------------------------
- dnl - Check for utmp stuff
- dnl ---------------------------------------------------------------------------
- 
--AC_CHECK_HEADERS(utmp.h utmpx.h libutil.h sys/param.h)
--AC_CHECK_FUNCS([getutxent updwtmpx updwtmp])
--AC_CHECK_LIB(util, login, [
--		   AC_DEFINE(HAVE_LOGIN, 1, [Define if have login])
--		       EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil" ])
--AC_CHECK_LIB(util, logout, [
--		   AC_DEFINE(HAVE_LOGOUT, 1, [Define if have logout])
--		       EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil" ])
-+AC_CHECK_HEADERS(utmp.h utmpx.h util.h sys/param.h)
-+AC_CHECK_FUNCS([getutxent getttyent updwtmpx updwtmp])
- AC_CHECK_LIB(util, logwtmp, [
- 	  	   AC_DEFINE(HAVE_LOGWTMP, 1, [Define if have logwtmp])
- 		       EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil" ])
-@@ -911,12 +909,42 @@ AC_SUBST(XINERAMA_LIBS)
- CPPFLAGS="$xinerama_save_cppflags"
- 
- dnl ---------------------------------------------------------------------------
-+dnl - Check for ConsoleKit support
-+dnl ---------------------------------------------------------------------------
-+
-+use_console_kit=no
-+if test "x$with_console_kit" != "xno" ; then
-+	use_console_kit=yes
-+	AC_DEFINE(WITH_CONSOLE_KIT, 1, [Define to enable ConsoleKit support])
-+fi
-+AM_CONDITIONAL(WITH_CONSOLE_KIT, test x$use_console_kit = xyes)
-+AC_SUBST(WITH_CONSOLE_KIT)
-+
-+dnl ---------------------------------------------------------------------------
- dnl - Check for systemd support
- dnl ---------------------------------------------------------------------------
- 
- PKG_CHECK_MODULES(SYSTEMD,
--                  [libsystemd])
-+                  [libsystemd-login >= 186 libsystemd-daemon],
-+                  [have_systemd=yes], [have_systemd=no])
- 
-+if test "x$with_systemd" = "xauto" ; then
-+        if test x$have_systemd = xno ; then
-+                use_systemd=no
-+        else
-+                use_systemd=yes
-+        fi
-+else
-+        use_systemd="$with_systemd"
-+fi
-+
-+if test "x$use_systemd" != "xno" ; then
-+        if test "x$have_systemd" = "xno"; then
-+                AC_MSG_ERROR([Systemd support explicitly required, but systemd not found])
-+        fi
-+
-+        AC_DEFINE(WITH_SYSTEMD, 1, [Define to enable systemd support])
-+fi
- AC_SUBST(SYSTEMD_CFLAGS)
- AC_SUBST(SYSTEMD_LIBS)
- 
-@@ -1111,6 +1139,14 @@ fi
- AC_SUBST(GDM_CUSTOM_CONF)
- AC_SUBST(GDM_OLD_CONF, '${gdmconfdir}/gdm.conf')
- 
-+AC_ARG_WITH(consolekit-directory,
-+              [AC_HELP_STRING([--with-consolekit-directory],
-+                              [Specify the directory of ck-get-x11-display-device @<:@default=libexecdir@:>@])],,
-+                              [with_consolekit_directory="\${libexecdir}"])
-+
-+CONSOLEKIT_DIR=$with_consolekit_directory
-+AC_SUBST(CONSOLEKIT_DIR)
-+
- AC_ARG_WITH(gnome-settings-daemon-directory,
-               [AC_HELP_STRING([--with-gnome-settings-daemon-directory],
-                               [Specify the directory of gnome-settings-daemon used by the chooser @<:@default=libexecdir@:>@])],,
-@@ -1601,6 +1637,7 @@ echo "
-         dmconfdir:                ${dmconfdir}
-         localstatedir:            ${localstatedir}
-         datadir:                  ${datadir}
-+	consolekit location:      ${with_consolekit_directory}
- 	gnome-settings-daemon location: ${with_gnome_settings_daemon_directory}
- 	gnome-session-check-accel location: ${with_check_accelerated_directory}
- 	source code location:	  ${srcdir}
-@@ -1631,6 +1668,8 @@ echo \
- "        Xinerama support:         ${XINERAMA_SUPPORT}
-         XDMCP support:            ${XDMCP_SUPPORT}
-         SELinux support:          ${use_selinux}
-+        ConsoleKit support:       ${use_console_kit}
-+        systemd support:          ${use_systemd}
-         systemd unit dir:         ${with_systemdsystemunitdir}
-         plymouth support:         ${use_plymouth}
-         wayland support:          ${enable_wayland_support}
-@@ -1639,3 +1678,4 @@ echo \
-         Enable documentation:     ${enable_documentation}
-         Install GDM's Xsession:   ${enable_gdm_xsession}
- "
-+
diff --git a/x11/gdm/files/daemon_Makefile.am b/x11/gdm/files/daemon_Makefile.am
deleted file mode 100644
index 72d55fb06926..000000000000
--- a/x11/gdm/files/daemon_Makefile.am
+++ /dev/null
@@ -1,33 +0,0 @@
---- daemon/Makefile.am.orig	2017-10-30 16:21:02.000000000 +0100
-+++ daemon/Makefile.am	2018-01-14 12:30:11.501517000 +0100
-@@ -21,6 +21,7 @@ AM_CPPFLAGS = \
- 	-DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\"		\
- 	-DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\"	\
- 	-DGDM_SESSION_DEFAULT_PATH=\"$(GDM_SESSION_DEFAULT_PATH)\" \
-+	-DCONSOLEKIT_DIR=\"$(CONSOLEKIT_DIR)\" \
- 	$(DISABLE_DEPRECATED_CFLAGS)			\
- 	$(DAEMON_CFLAGS)				\
- 	$(XLIB_CFLAGS)					\
-@@ -267,6 +268,11 @@ EXTRA_gdm_SOURCES = 	\
- 	$(XDMCP_SOURCES)	\
- 	$(NULL)
- 
-+CONSOLE_KIT_SOURCES = 		\
-+	$(NULL)
-+
-+EXTRA_gdm_SOURCES += $(CONSOLE_KIT_SOURCES)
-+
- gdm_LDADD = \
- 	$(top_builddir)/common/libgdmcommon.la	\
- 	$(XLIB_LIBS)				\
-@@ -277,6 +283,10 @@ gdm_LDADD = \
- 	$(JOURNALD_LIBS)				\
- 	$(EXTRA_DAEMON_LIBS)			\
- 	$(NULL)
-+
-+if WITH_CONSOLE_KIT
-+gdm_SOURCES += $(CONSOLE_KIT_SOURCES)
-+endif
- 
- CLEANFILES =					\
- 	gdm-display-glue.c			\
diff --git a/x11/gdm/files/gdm-autologin.in b/x11/gdm/files/gdm-autologin.in
index 9e89fd1fcbbb..78a423679762 100644
--- a/x11/gdm/files/gdm-autologin.in
+++ b/x11/gdm/files/gdm-autologin.in
@@ -4,8 +4,8 @@
 
 auth		required	pam_permit.so
 
-auth		optional	/usr/local/lib/pam_ck_connector.so
-auth		optional	/usr/local/lib/pam_gnome_keyring.so
+auth		optional	%%PREFIX%%/lib/pam_ck_connector.so
+auth		optional	%%PREFIX%%/lib/pam_gnome_keyring.so
 
 account		required	pam_nologin.so
 account		include		system
@@ -13,4 +13,4 @@ account		include		system
 password	include		system
 
 session		include		system
-session		optional	/usr/local/lib/pam_gnome_keyring.so auto_start
+session		optional	%%PREFIX%%/lib/pam_gnome_keyring.so auto_start
diff --git a/x11/gdm/files/gdm-password.in b/x11/gdm/files/gdm-password.in
index 3b7b48e2e9b9..65bfa040422f 100644
--- a/x11/gdm/files/gdm-password.in
+++ b/x11/gdm/files/gdm-password.in
@@ -4,8 +4,8 @@
 
 auth		include		system
 
-auth		optional	/usr/local/lib/pam_ck_connector.so
-auth		optional	/usr/local/lib/pam_gnome_keyring.so
+auth		optional	%%PREFIX%%/lib/pam_ck_connector.so
+auth		optional	%%PREFIX%%/lib/pam_gnome_keyring.so
 
 account		required	pam_nologin.so
 account		include		system
@@ -13,4 +13,4 @@ account		include		system
 password	include		system
 
 session		include		system
-session		optional	/usr/local/lib/pam_gnome_keyring.so auto_start
+session		optional	%%PREFIX%%/lib/pam_gnome_keyring.so auto_start
diff --git a/x11/gdm/files/gdm.in b/x11/gdm/files/gdm.in
index 5a0fcc2d76a9..16b6c4aeae13 100644
--- a/x11/gdm/files/gdm.in
+++ b/x11/gdm/files/gdm.in
@@ -32,9 +32,9 @@ gdm_start()
     fi
     echo "Starting ${name}."
 
-    # we need to remove locking files under $gdm_home/.cache/gnome-shell/
+    # we need to remove locking files under /var/cache/gdm/.cache/gnome-shell/
     # until XDG_RUNTIME_DIR can be set and used
-    rm -fr %%PREFIX%%/etc/gdm/home/.cache/gnome-shell/runtime-state*
+    rm -fr /var/cache/gdm/.cache/gnome-shell/runtime-state*
 
     # make sure there is no pam configuration for gdm service in base system
     if ! checkyesno gdm_preserve_base_pam_conf && [ -f /etc/pam.d/gdm ]; then
diff --git a/x11/gdm/files/patch-build-aux_find-x-server.sh b/x11/gdm/files/patch-build-aux_find-x-server.sh
new file mode 100644
index 000000000000..ca3f15693fe5
--- /dev/null
+++ b/x11/gdm/files/patch-build-aux_find-x-server.sh
@@ -0,0 +1,13 @@
+--- build-aux/find-x-server.sh.orig	2023-05-05 18:12:53 UTC
++++ build-aux/find-x-server.sh
+@@ -29,6 +29,10 @@ elif test -x /usr/openwin/bin/Xsun; then
+     echo "/usr/openwin/bin/Xsun"
+ elif test -x /opt/X11R6/bin/X; then
+     echo "/opt/X11R6/bin/X"
++elif test -x /usr/local/bin/Xorg; then
++    echo "/usr/local/bin/Xorg"
++elif test -x /usr/local/bin/X; then
++    echo "/usr/local/bin/X"
+ else
+     echo ""
+ fi
diff --git a/x11/gdm/files/patch-common_gdm-common.c b/x11/gdm/files/patch-common_gdm-common.c
index cb4900ae4994..1ee91d606f3e 100644
--- a/x11/gdm/files/patch-common_gdm-common.c
+++ b/x11/gdm/files/patch-common_gdm-common.c
@@ -1,488 +1,43 @@
---- common/gdm-common.c.orig	2022-01-12 14:15:56 UTC
+--- common/gdm-common.c.orig	2023-09-14 15:27:04 UTC
 +++ common/gdm-common.c
-@@ -36,7 +36,9 @@
+@@ -36,8 +36,13 @@
  
  #include "gdm-common.h"
  
-+#ifdef WITH_SYSTEMD
++#if defined(WITH_SYSTEMD)
  #include <systemd/sd-login.h>
++#elif defined(WITH_CONSOLE_KIT)
++#include <ConsoleKit/sd-login.h>
 +#endif
  
++
  #define GDM_DBUS_NAME                            "org.gnome.DisplayManager"
  #define GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH      "/org/gnome/DisplayManager/LocalDisplayFactory"
-@@ -352,6 +354,412 @@ create_transient_display (GDBusConnection *connection,
-         return TRUE;
- }
+ #define GDM_DBUS_LOCAL_DISPLAY_FACTORY_INTERFACE "org.gnome.DisplayManager.LocalDisplayFactory"
+@@ -368,15 +373,22 @@ gdm_activate_session_by_id (GDBusConnection *connectio
+         g_return_val_if_fail (session_id != NULL, FALSE);
  
-+#ifdef WITH_CONSOLE_KIT
-+int
-+sd_seat_can_graphical(const char *seat)
-+{
-+        // XXX
-+        return 1;
-+}
-+
-+int
-+sd_session_get_service(const char *session,
-+                       char **service)
-+{
-+        GError *local_error = NULL;
-+        GVariant *reply;
-+        const char *value;
-+        g_autoptr(GDBusConnection) connection = NULL;
-+
-+        if (session == NULL || !g_variant_is_object_path (session))
-+                return -ENXIO;
-+
-+        connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
-+        if (connection == NULL) {
-+                g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
-+                return -ENXIO;
-+        }
-+
-+        reply = g_dbus_connection_call_sync (connection,
-+                                             CK_NAME,
-+                                             session,
-+                                             CK_SESSION_INTERFACE,
-+                                             "GetSessionService",
-+                                             NULL,
-+                                             G_VARIANT_TYPE ("(s)"),
-+                                             G_DBUS_CALL_FLAGS_NONE,
-+                                             -1,
-+                                             NULL, &local_error);
-+        if (reply == NULL) {
-+                g_warning ("Unable to determine session service: %s", local_error ? local_error->message : "");
-+                g_error_free (local_error);
-+                return -ENXIO;
-+        }
-+
-+        g_variant_get (reply, "(s)", &value);
-+        g_variant_unref (reply);
-+
-+        *service = g_strdup (value);
-+
-+        return 0;
-+}
-+
-+int
-+sd_session_get_uid(const char *session,
-+                   uid_t *uid)
-+{
-+        GError *local_error = NULL;
-+        GVariant *reply;
-+        g_autoptr(GDBusConnection) connection = NULL;
-+        uid_t local_uid;
-+
-+        if (session == NULL || !g_variant_is_object_path (session))
-+                return -ENXIO;
-+
-+        connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
-+        if (connection == NULL) {
-+                g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
-+                return -ENXIO;
-+        }
-+
-+        reply = g_dbus_connection_call_sync (connection,
-+                                             CK_NAME,
-+                                             session,
-+                                             CK_SESSION_INTERFACE,
-+                                             "GetUnixUser",
-+                                             NULL,
-+                                             G_VARIANT_TYPE ("(u)"),
-+                                             G_DBUS_CALL_FLAGS_NONE,
-+                                             -1,
-+                                             NULL, &local_error);
-+        if (reply == NULL) {
-+                g_warning ("Unable to get session for unix service: %s", local_error ? local_error->message : "");
-+                g_error_free (local_error);
-+                return -ENXIO;
-+        }
-+
-+        g_variant_get (reply, "(u)", &local_uid);
-+        g_variant_unref (reply);
-+
-+        *uid = local_uid;
-+
-+        return 0;
-+}
-+
-+int
-+sd_seat_get_sessions(const char   *seat,
-+                     char       ***sessions,
-+                     uid_t       **uid,
-+                     unsigned int *n_uids)
-+{
-+        GError *local_error = NULL;
-+        GVariant *reply;
-+        GVariantIter *iter;
-+        gchar *value = NULL;
-+        glong nchild;
-+        g_autoptr(GDBusConnection) connection = NULL;
-+
-+        if (seat == NULL || !g_variant_is_object_path (seat))
-+                return -ENXIO;
-+
-+        connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
-+        if (connection == NULL) {
-+                g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
-+                return -ENXIO;
-+        }
-+
-+        reply = g_dbus_connection_call_sync (connection,
-+                                             CK_NAME,
-+                                             seat,
-+                                             CK_SEAT_INTERFACE,
-+                                             "GetSessions",
-+                                             NULL,
-+                                             G_VARIANT_TYPE ("(ao)"),
-+                                             G_DBUS_CALL_FLAGS_NONE,
-+                                             -1,
-+                                             NULL, &local_error);
-+        if (reply == NULL) {
-+                g_warning ("Unable to list sessions: %s", local_error->message);
-+                g_error_free (local_error);
-+                return -ENXIO;
-+        }
-+
-+        g_variant_get (reply, "(ao)", &iter);
-+        g_variant_unref (reply);
-+
-+        nchild = g_variant_iter_n_children(iter);
-+        *sessions = calloc(nchild, sizeof(gchar *));
-+        if (*sessions == NULL) {
-+                g_warning ("Unable to allocate memory for sessions array: %s", g_strerror(errno));
-+                return -ENOMEM;
-+        }
-+
-+        while (g_variant_iter_next (iter, "o", &value)) {
-+                (*sessions)[nchild - 1] = g_strdup(value);
-+        }
-+        (*sessions)[nchild] = NULL;
-+
-+        g_variant_iter_free (iter);
-+
-+        return 0;
-+}
-+
-+int
-+sd_session_get_seat(const char *session,
-+                    char      **seat)
-+{
-+        GError *local_error = NULL;
-+        GVariant *reply;
-+        const char *value;
-+        g_autoptr(GDBusConnection) connection = NULL;
-+
-+        if (session == NULL || !g_variant_is_object_path (session))
-+                return -ENXIO;
-+
-+        connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
-+        if (connection == NULL) {
-+                g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
-+                return -ENXIO;
-+        }
-+
-+        reply = g_dbus_connection_call_sync (connection,
-+                                             CK_NAME,
-+                                             session,
-+                                             CK_SESSION_INTERFACE,
-+                                             "GetSeatId",
-+                                             NULL, /* parameters */
-+                                             G_VARIANT_TYPE ("(o)"),
-+                                             G_DBUS_CALL_FLAGS_NONE,
-+                                             -1,
-+                                             NULL, &local_error);
-+        if (reply == NULL) {
-+                g_warning ("Unable to determine seat: %s", local_error ? local_error->message : "");
-+                g_error_free (local_error);
-+                return -ENXIO;
-+        }
-+
-+        g_variant_get (reply, "(o)", &value);
-+        g_variant_unref (reply);
-+
-+        *seat = g_strdup(value);
-+
-+        return 0;
-+}
-+
-+int
-+sd_pid_get_session(pid_t pid, char **session)
-+{
-+        GError *local_error = NULL;
-+        GVariant *reply;
-+        const char *value;
-+        g_autoptr(GDBusConnection) connection = NULL;
-+
-+        connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
-+        if (connection == NULL) {
-+                g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
-+                return -ENXIO;
-+        }
-+
-+        reply = g_dbus_connection_call_sync (connection,
-+                                             CK_NAME,
-+                                             CK_MANAGER_PATH,
-+                                             CK_MANAGER_INTERFACE,
-+                                             "GetSessionForUnixProcess",
-+                                             g_variant_new ("(u)", pid),
-+                                             G_VARIANT_TYPE ("(o)"),
-+                                             G_DBUS_CALL_FLAGS_NONE,
-+                                             -1,
-+                                             NULL, &local_error);
-+        if (reply == NULL) {
-+                g_warning ("Unable to list sessions: %s", local_error ? local_error->message : "");
-+                g_error_free (local_error);
-+                return -ENXIO;
-+        }
-+
-+        g_variant_get (reply, "(o)", &value);
-+        g_variant_unref (reply);
-+
-+        *session = g_strdup (value);
-+
-+        return 0;
-+}
-+
-+int
-+sd_session_get_type(const char *session, char **type)
-+{
-+        GError *local_error = NULL;
-+        GVariant *reply;
-+        const char *value;
-+        g_autoptr(GDBusConnection) connection = NULL;
-+
-+        if (session == NULL || !g_variant_is_object_path (session))
-+                return -ENXIO;
-+
-+        connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
-+        if (connection == NULL) {
-+                g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
-+                return -ENXIO;
-+        }
-+
-+        reply = g_dbus_connection_call_sync (connection,
-+                                             CK_NAME,
-+                                             session,
-+                                             CK_SESSION_INTERFACE,
-+                                             "GetSessionType",
-+                                             NULL,
-+                                             G_VARIANT_TYPE ("(s)"),
-+                                             G_DBUS_CALL_FLAGS_NONE,
-+                                             -1,
-+                                             NULL, &local_error);
-+        if (reply == NULL) {
-+                g_warning ("Unable to determine session type: %s", local_error ? local_error->message : "");
-+                g_error_free (local_error);
-+                return -ENXIO;
-+        }
-+
-+        g_variant_get (reply, "(s)", &value);
-+        g_variant_unref (reply);
-+
-+        *type = g_strdup (value);
-+
-+        return 0;
-+}
-+
-+int
-+sd_session_get_class(const char *session, char **class)
-+{
-+        GError *local_error = NULL;
-+        GVariant *reply;
-+        const gchar *value;
-+        g_autoptr(GDBusConnection) connection = NULL;
-+
-+        if (session == NULL || !g_variant_is_object_path (session))
-+                return -ENXIO;
-+
-+        connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
-+        if (connection == NULL) {
-+                g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
-+                return -ENXIO;
-+        }
-+
-+        reply = g_dbus_connection_call_sync (connection,
-+                                             CK_NAME,
-+                                             session,
-+                                             CK_SESSION_INTERFACE,
-+                                             "GetSessionClass",
-+                                             NULL,
-+                                             G_VARIANT_TYPE ("(s)"),
-+                                             G_DBUS_CALL_FLAGS_NONE,
-+                                             -1,
-+                                             NULL, &local_error);
-+        if (reply == NULL) {
-+                g_warning ("Unable to determine session class: %s", local_error ? local_error->message : "");
-+                g_error_free (local_error);
-+                return -ENXIO;
-+        }
-+
-+        g_variant_get (reply, "(s)", &value);
-+        g_variant_unref (reply);
-+
-+        *class = g_strdup(value);
-+
-+        return 0;
-+}
-+
-+int
-+sd_session_get_state(const char *session, char **state)
-+{
-+        GError *local_error = NULL;
-+        GVariant *reply;
-+        const char *value;
-+        g_autoptr(GDBusConnection) connection = NULL;
-+
-+        if (session == NULL || !g_variant_is_object_path (session))
-+                return -ENXIO;
-+
-+        connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
-+        if (connection == NULL) {
-+                g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
-+                return -ENXIO;
-+        }
-+
-+        reply = g_dbus_connection_call_sync (connection,
-+                                             CK_NAME,
-+                                             session,
-+                                             CK_SESSION_INTERFACE,
-+                                             "GetSessionState",
-+                                             NULL,
-+                                             G_VARIANT_TYPE ("(s)"),
-+                                             G_DBUS_CALL_FLAGS_NONE,
-+                                             -1,
-+                                             NULL, &local_error);
-+        if (reply == NULL) {
-+                g_warning ("Unable to determine session state: %s", local_error ? local_error->message : "");
-+                g_error_free (local_error);
-+                return -ENXIO;
-+        }
-+
-+        g_variant_get (reply, "(s)", &value);
-+        g_variant_unref (reply);
-+
-+        *state = g_strdup (value);
-+
-+        return 0;
-+}
-+
-+int
-+sd_uid_get_sessions(uid_t uid, int require_active, char ***sessions)
-+{
-+        GError *local_error = NULL;
-+        GVariant *reply;
-+        GVariantIter *iter;
-+        gchar *value = NULL;
-+        glong nchild;
-+        g_autoptr(GDBusConnection) connection = NULL;
-+
-+        connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
-+        if (connection == NULL) {
-+                g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
-+                return -ENXIO;
-+        }
-+
-+        reply = g_dbus_connection_call_sync (connection,
-+                                             CK_NAME,
-+                                             CK_MANAGER_PATH,
-+                                             CK_MANAGER_INTERFACE,
-+                                             "GetSessionsForUnixUser",
-+                                             g_variant_new ("(u)", uid),
-+                                             G_VARIANT_TYPE ("(ao)"),
-+                                             G_DBUS_CALL_FLAGS_NONE,
-+                                             -1,
-+                                             NULL, &local_error);
*** 1904 LINES SKIPPED ***