x11/gdm: udpate to 47.0

PR:	286697
This commit is contained in:
Olivier Duchateau 2025-06-11 11:53:26 +02:00 committed by Baptiste Daroussin
parent bd9b7ae943
commit 3ed44d9da9
35 changed files with 660 additions and 1210 deletions

View File

@ -1,59 +1,55 @@
PORTNAME= gdm PORTNAME= gdm
PORTVERSION= 42.0 PORTVERSION= 47.0
PORTREVISION= 7
CATEGORIES= x11 gnome CATEGORIES= x11 gnome
MASTER_SITES= GNOME MASTER_SITES= GNOME
DIST_SUBDIR= gnome DIST_SUBDIR= gnome
MAINTAINER= gnome@FreeBSD.org MAINTAINER= gnome@FreeBSD.org
COMMENT= GNOME display manager 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 LICENSE_FILE= ${WRKSRC}/COPYING
BUILD_DEPENDS= iso-codes>=0:misc/iso-codes \ PORTSCOUT= limit:^47\.
itstool:textproc/itstool \
zenity>=3.0.0:x11/zenity BUILD_DEPENDS= iso-codes>0:misc/iso-codes \
xorg-server>0:x11-servers/xorg-server \
itstool:textproc/itstool
LIB_DEPENDS= libaccountsservice.so:sysutils/accountsservice \ LIB_DEPENDS= libaccountsservice.so:sysutils/accountsservice \
libcanberra-gtk3.so:audio/libcanberra-gtk3 \ libcanberra-gtk3.so:audio/libcanberra-gtk3 \
libcanberra.so:audio/libcanberra \ libcanberra.so:audio/libcanberra \
libck-connector.so:sysutils/consolekit2 \ libck-connector.so:sysutils/consolekit2 \
libfribidi.so:converters/fribidi libjson-glib-1.0.so:devel/json-glib
RUN_DEPENDS= at-spi2-core>=0:accessibility/at-spi2-core \ RUN_DEPENDS= gnome-keyring-3:security/gnome-keyring \
gnome-icon-theme-symbolic>=0:x11-themes/gnome-icon-theme-symbolic \ gnome-session>0:x11/gnome-session \
gnome-keyring-3:security/gnome-keyring \ gnome-settings-daemon>0:sysutils/gnome-settings-daemon \
gnome-session>=3.0.0:x11/gnome-session \ iso-codes>0:misc/iso-codes
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
# used in scripts # used in scripts
RUN_DEPENDS+= setxkbmap:x11/setxkbmap \ RUN_DEPENDS+= setxkbmap:x11/setxkbmap \
xhost:x11/xhost \ xhost:x11/xhost \
xmodmap:x11/xmodmap \ xmodmap:x11/xmodmap \
xrdb:x11/xrdb \ xrdb:x11/xrdb \
xsetroot:x11/xsetroot \ xsetroot:x11/xsetroot \
xterm:x11/xterm xterm:x11/xterm \
zenity:x11/zenity
USERS= gdm USERS= gdm
GROUPS= gdm video GROUPS= gdm video
PORTSCOUT= limitw:1,even
USES= cpe gettext gnome localbase:ldflags meson pathfix \ USES= cpe gettext gnome localbase:ldflags meson pathfix \
pkgconfig tar:xz xorg pkgconfig tar:xz xorg
CPE_VENDOR= gnome CPE_VENDOR= gnome
CPE_PRODUCT= gnome_display_manager 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_LDCONFIG= yes
USE_XORG= x11 xau xcb xdmcp xorgproto USE_XORG= x11 xau xcb xdmcp xorgproto
USE_RC_SUBR= gdm USE_RC_SUBR= gdm
USE_GNOME_SUBR= yes 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 \ MESON_ARGS= -Dat-spi-registryd-dir=${PREFIX}/libexec \
-Dcustom-conf=${PREFIX}/etc/gdm/custom.conf \ -Dcustom-conf=${PREFIX}/etc/gdm/custom.conf \
-Ddbus-sys=${PREFIX}/etc/dbus-1/system.d \
-Ddefault-pam-config=none \ -Ddefault-pam-config=none \
-Ddmconfdir=${PREFIX}/share/xsessions \ -Ddmconfdir=${PREFIX}/share/xsessions \
-Dgdm-xsession=true \ -Dgdm-xsession=true \
@ -61,24 +57,21 @@ MESON_ARGS= -Dat-spi-registryd-dir=${PREFIX}/libexec \
-Dinitial-vt=09 \ -Dinitial-vt=09 \
-Dlang-file=${PREFIX}/etc/gdm/locale.conf \ -Dlang-file=${PREFIX}/etc/gdm/locale.conf \
-Dlibaudit=disabled \ -Dlibaudit=disabled \
-Dlog-dir=/var/log/gdm \
-Dpid-file=/var/run/gdm.pid \ -Dpid-file=/var/run/gdm.pid \
-Dplymouth=disabled \ -Dplymouth=disabled \
-Dscreenshot-dir=/var/run/gdm/greeter \ -Dscreenshot-dir=/var/run/gdm/greeter \
-Dselinux=disabled \ -Dselinux=disabled \
-Dsysconfsubdir=gdm \
-Dsystemd-journal=false \ -Dsystemd-journal=false \
-Duser-display-server=false \ -Duser-display-server=false \
-Dudev-dir=${PREFIX}/lib/udev/rules.d \
-Duser=gdm \ -Duser=gdm \
-Dwayland-support=false \ -Dworking-dir=/var/cache/gdm \
-Dworking-dir=/var/db/gdm \
-Dxauth-dir=/var/run/gdm -Dxauth-dir=/var/run/gdm
# this is a hack until we can get our own pam dir and dir in order. # this is a hack until we can get our own pam dir and dir in order.
CPPFLAGS+= -DHAS_SA_LEN -DWITH_CONSOLE_KIT=1 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 locale.conf
GDMDIR?= ${PREFIX}/etc/gdm GDMDIR?= ${PREFIX}/etc/gdm
@ -92,48 +85,33 @@ IPV6_MESON_TRUE= ipv6
.include <bsd.port.options.mk> .include <bsd.port.options.mk>
post-patch: 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' \ @${REINPLACE_CMD} -e 's|/usr/X11R6|${LOCALBASE}|g' \
-e 's|/usr/bin/X|${LOCALBASE}/bin/X|g' \ -e 's|/usr/bin/X|${LOCALBASE}/bin/X|g' \
-e 's|/usr/bin/Xorg|${LOCALBASE}/bin/Xorg|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' \ @${REINPLACE_CMD} -e 's|/at-spi-registryd|/at-spi2-registryd|g' \
${WRKSRC}/chooser/gdm-host-chooser.c \ ${WRKSRC}/chooser/gdm-host-chooser.c \
${WRKSRC}/chooser/chooser-main.c ${WRKSRC}/chooser/chooser-main.c
@${REINPLACE_CMD} -e 's|/etc/X11|${LOCALBASE}/etc/X11|g' \ @${REINPLACE_CMD} -e 's|/etc/X11|${LOCALBASE}/etc/X11|g' \
${WRKSRC}/data/Init.in \ ${WRKSRC}/data/Init.in \
${WRKSRC}/data/PostLogin \
${WRKSRC}/data/PostSession.in \
${WRKSRC}/data/PreSession.in \
${WRKSRC}/data/Xsession.in ${WRKSRC}/data/Xsession.in
@${RM} ${WRKSRC}/data/applications/gdm-simple-greeter.desktop \
${WRKSRC}/data/applications/gdm-simple-greeter.desktop.in \ # Force X11 session (support of Wayland is not yet complete!)
${WRKSRC}/data/applications/gnome-shell.desktop \ @${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: 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/
${INSTALL_DATA} ${WRKDIR}/gdm-autologin \ ${INSTALL_DATA} ${WRKDIR}/gdm-autologin \
${STAGEDIR}${PREFIX}/etc/pam.d/gdm-autologin.sample ${STAGEDIR}${PREFIX}/etc/pam.d/gdm-autologin.sample
${INSTALL_DATA} ${WRKDIR}/gdm-launch-environment \ ${INSTALL_DATA} ${WRKDIR}/gdm-launch-environment \
@ -141,19 +119,13 @@ post-install:
${INSTALL_DATA} ${WRKDIR}/gdm-password \ ${INSTALL_DATA} ${WRKDIR}/gdm-password \
${STAGEDIR}${PREFIX}/etc/pam.d/gdm-password.sample ${STAGEDIR}${PREFIX}/etc/pam.d/gdm-password.sample
${INSTALL_DATA} ${WRKDIR}/client.conf \ #${INSTALL_DATA} ${WRKDIR}/client.conf \
${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/client.conf.sample # ${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/client.conf.sample
${INSTALL_DATA} ${WRKDIR}/locale.conf \ ${INSTALL_DATA} ${WRKDIR}/locale.conf \
${STAGEDIR}${PREFIX}/etc/gdm/locale.conf.sample ${STAGEDIR}${PREFIX}/etc/gdm/locale.conf.sample
${MKDIR} ${STAGEDIR}/var/cache/gdm ${INSTALL_DATA} ${FILESDIR}/15_org.gnome.login-screen.gschema.override \
${MKDIR} ${STAGEDIR}/var/log/gdm ${STAGEDIR}${PREFIX}/share/glib-2.0/schemas/
${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
.include <bsd.port.mk> .include <bsd.port.mk>

View File

@ -1,3 +1,3 @@
TIMESTAMP = 1647984111 TIMESTAMP = 1744645483
SHA256 (gnome/gdm-42.0.tar.xz) = a328ac976937bec179971ff07829a1246b98ce724181c128ae32a0ba47ad3855 SHA256 (gnome/gdm-47.0.tar.xz) = c5858326bfbcc8ace581352e2be44622dc0e9e5c2801c8690fd2eed502607f84
SIZE (gnome/gdm-42.0.tar.xz) = 811200 SIZE (gnome/gdm-47.0.tar.xz) = 936172

View File

@ -0,0 +1,3 @@
[org.gnome.login-screen]
enable-fingerprint-authentication=false
enable-smartcard-authentication=false

View File

@ -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)

View File

@ -1,2 +0,0 @@
autospawn = no
daemon-binary = /usr/bin/true

View File

@ -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}
"
+

View File

@ -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 \

View File

@ -4,8 +4,8 @@
auth required pam_permit.so auth required pam_permit.so
auth optional /usr/local/lib/pam_ck_connector.so auth optional %%PREFIX%%/lib/pam_ck_connector.so
auth optional /usr/local/lib/pam_gnome_keyring.so auth optional %%PREFIX%%/lib/pam_gnome_keyring.so
account required pam_nologin.so account required pam_nologin.so
account include system account include system
@ -13,4 +13,4 @@ account include system
password include system password include system
session 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

View File

@ -4,8 +4,8 @@
auth include system auth include system
auth optional /usr/local/lib/pam_ck_connector.so auth optional %%PREFIX%%/lib/pam_ck_connector.so
auth optional /usr/local/lib/pam_gnome_keyring.so auth optional %%PREFIX%%/lib/pam_gnome_keyring.so
account required pam_nologin.so account required pam_nologin.so
account include system account include system
@ -13,4 +13,4 @@ account include system
password include system password include system
session 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

View File

@ -32,9 +32,9 @@ gdm_start()
fi fi
echo "Starting ${name}." 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 # 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 # 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 if ! checkyesno gdm_preserve_base_pam_conf && [ -f /etc/pam.d/gdm ]; then

View File

@ -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

View File

@ -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 +++ common/gdm-common.c
@@ -36,7 +36,9 @@ @@ -36,8 +36,13 @@
#include "gdm-common.h" #include "gdm-common.h"
+#ifdef WITH_SYSTEMD +#if defined(WITH_SYSTEMD)
#include <systemd/sd-login.h> #include <systemd/sd-login.h>
+#elif defined(WITH_CONSOLE_KIT)
+#include <ConsoleKit/sd-login.h>
+#endif +#endif
+
#define GDM_DBUS_NAME "org.gnome.DisplayManager" #define GDM_DBUS_NAME "org.gnome.DisplayManager"
#define GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH "/org/gnome/DisplayManager/LocalDisplayFactory" #define GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH "/org/gnome/DisplayManager/LocalDisplayFactory"
@@ -352,6 +354,412 @@ create_transient_display (GDBusConnection *connection, #define GDM_DBUS_LOCAL_DISPLAY_FACTORY_INTERFACE "org.gnome.DisplayManager.LocalDisplayFactory"
return TRUE; @@ -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);
+ 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, "(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;
+}
+#endif
+
gboolean
gdm_activate_session_by_id (GDBusConnection *connection,
const char *seat_id,
@@ -360,6 +768,7 @@ gdm_activate_session_by_id (GDBusConnection *connectio
GError *local_error = NULL;
GVariant *reply;
+#if defined(WITH_SYSTEMD)
reply = g_dbus_connection_call_sync (connection, reply = g_dbus_connection_call_sync (connection,
+#if defined(WITH_SYSTEMD)
"org.freedesktop.login1", "org.freedesktop.login1",
"/org/freedesktop/login1", "/org/freedesktop/login1",
@@ -370,7 +779,41 @@ gdm_activate_session_by_id (GDBusConnection *connectio "org.freedesktop.login1.Manager",
+#elif defined(WITH_CONSOLE_KIT)
+ "org.freedesktop.ConsoleKit",
+ "/org/freedesktop/ConsoleKit/Manager",
+ "org.freedesktop.ConsoleKit.Manager",
+#endif
"ActivateSessionOnSeat",
g_variant_new ("(ss)", session_id, seat_id),
NULL,
G_DBUS_CALL_FLAGS_NONE, G_DBUS_CALL_FLAGS_NONE,
-1, -1,
NULL, &local_error); cancellable, &local_error);
+#elif defined(WITH_CONSOLE_KIT)
+ gboolean ret;
+ +
+ reply = g_dbus_connection_call_sync (connection,
+ CK_NAME,
+ seat_id,
+ CK_SEAT_INTERFACE,
+ "CanActivateSessions",
+ NULL,
+ G_VARIANT_TYPE ("(b)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL, &local_error);
if (reply == NULL) { if (reply == NULL) {
+ g_warning ("Unable to determine if can activate sessions: %s", local_error ? local_error->message : "");
+ g_error_free (local_error);
+ return FALSE;
+ }
+
+ g_variant_get (reply, "(b)", &ret);
+ if (ret != TRUE)
+ return ret;
+
+ reply = g_dbus_connection_call_sync (connection,
+ CK_NAME,
+ seat_id,
+ CK_SEAT_INTERFACE,
+ "ActivateSession",
+ g_variant_new ("(o)", session_id),
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL, &local_error);
+#endif
+ if (reply == NULL) {
g_warning ("Unable to activate session: %s", local_error->message); g_warning ("Unable to activate session: %s", local_error->message);
g_error_free (local_error); g_error_free (local_error);
return FALSE; @@ -916,7 +928,9 @@ gdm_find_display_session (GPid pid,
@@ -521,7 +964,7 @@ goto_login_session (GDBusConnection *connection,
}
}
- if (! ret && g_strcmp0 (seat_id, "seat0") == 0) {
+ if (! ret && g_strcmp0 (seat_id, SEAT_ID) == 0) {
res = create_transient_display (connection, error);
if (res) {
ret = TRUE;
@@ -907,7 +1350,9 @@ gdm_find_display_session (GPid pid,
return TRUE; return TRUE;
} else { } else {

View File

@ -1,12 +1,10 @@
--- common/gdm-common.h.orig 2022-01-12 14:15:56 UTC --- common/gdm-common.h.orig 2023-09-14 15:27:04 UTC
+++ common/gdm-common.h +++ common/gdm-common.h
@@ -29,6 +29,50 @@ @@ -29,6 +29,17 @@
#define REGISTER_SESSION_TIMEOUT 10 #define REGISTER_SESSION_TIMEOUT 10
+#if defined(WITH_SYSTEMD) +#if defined(WITH_CONSOLE_KIT)
+#define SEAT_ID "seat0"
+#elif defined(WITH_CONSOLE_KIT)
+#define CK_NAME "org.freedesktop.ConsoleKit" +#define CK_NAME "org.freedesktop.ConsoleKit"
+#define CK_PATH "/org/freedesktop/ConsoleKit" +#define CK_PATH "/org/freedesktop/ConsoleKit"
+#define CK_INTERFACE "org.freedesktop.ConsoleKit" +#define CK_INTERFACE "org.freedesktop.ConsoleKit"
@ -15,37 +13,6 @@
+#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager" +#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
+#define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat" +#define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat"
+#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session" +#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
+#define SEAT_ID "/org/freedesktop/ConsoleKit/Seat1"
+
+int
+sd_pid_get_session(pid_t pid, char **session);
+
+int
+sd_session_get_uid(const char *session,
+ uid_t *uid);
+
+int
+sd_session_get_class(const char *session, char **class);
+
+int
+sd_session_get_seat(const char *session,
+ char **seat);
+
+int
+sd_seat_get_sessions(const char *seat,
+ char ***sessions,
+ uid_t **uid,
+ unsigned int *n_uids);
+
+int
+sd_session_get_state(const char *session, char **state);
+
+int
+sd_session_get_service(const char *session,
+ char **service);
+
+int
+sd_seat_can_graphical(const char *seat);
+#endif +#endif
+ +
#define VE_IGNORE_EINTR(expr) \ #define VE_IGNORE_EINTR(expr) \

View File

@ -1,4 +1,4 @@
--- common/gdm-log.c.orig 2022-01-12 14:15:56 UTC --- common/gdm-log.c.orig 2023-03-20 15:42:37 UTC
+++ common/gdm-log.c +++ common/gdm-log.c
@@ -30,7 +30,9 @@ @@ -30,7 +30,9 @@
#include <unistd.h> #include <unistd.h>

View File

@ -1,19 +1,12 @@
--- daemon/gdm-display-access-file.c.orig 2022-01-12 14:15:56 UTC --- daemon/gdm-display-access-file.c.orig 2023-09-14 15:27:04 UTC
+++ daemon/gdm-display-access-file.c +++ daemon/gdm-display-access-file.c
@@ -337,9 +337,18 @@ _create_xauth_file_for_user (const char *username, @@ -337,9 +337,11 @@ _create_xauth_file_for_user (const char *username,
g_debug ("GdmDisplayAccessFile: creating %s", auth_filename); g_debug ("GdmDisplayAccessFile: creating %s", auth_filename);
/* mode 00600 */ /* mode 00600 */
errno = 0; errno = 0;
- fd = g_open (auth_filename, - fd = g_open (auth_filename,
- O_RDWR | O_CREAT | O_EXCL | O_BINARY, - O_RDWR | O_CREAT | O_EXCL | O_BINARY,
- S_IRUSR | S_IWUSR); - S_IRUSR | S_IWUSR);
+#if defined(__OpenBSD__)
+ if (uid == 676) {
+ fd = g_open (auth_filename,
+ O_RDWR | O_CREAT | O_EXCL | O_BINARY,
+ S_IRUSR | S_IWUSR | S_IRGRP);
+ } else
+#endif
+ { + {
+ fd = g_open (auth_filename, + fd = g_open (auth_filename,
+ O_RDWR | O_CREAT | O_EXCL | O_BINARY, + O_RDWR | O_CREAT | O_EXCL | O_BINARY,
@ -22,15 +15,15 @@
if (fd < 0) { if (fd < 0) {
g_set_error (error, g_set_error (error,
@@ -441,9 +450,9 @@ _get_auth_info_for_display (GdmDisplayAccessFile *file @@ -429,9 +431,9 @@ _get_auth_info_for_display (GdmDisplayAccessFile *file
* *
* https://bugs.freedesktop.org/show_bug.cgi?id=43425 * https://bugs.freedesktop.org/show_bug.cgi?id=43425
*/ */
- char localhost[HOST_NAME_MAX + 1] = ""; - char localhost[HOST_NAME_MAX + 1] = "";
+ char localhost[256] = ""; + char localhost[_POSIX_HOST_NAME_MAX + 1] = "";
*family = FamilyLocal; *family = FamilyLocal;
- if (gethostname (localhost, HOST_NAME_MAX) == 0) { - if (gethostname (localhost, HOST_NAME_MAX) == 0) {
+ if (gethostname (localhost, 255) == 0) { + if (gethostname (localhost, _POSIX_HOST_NAME_MAX) == 0) {
*address = g_strdup (localhost); *address = g_strdup (localhost);
} else { } else {
*address = g_strdup ("localhost"); *address = g_strdup ("localhost");

View File

@ -1,16 +0,0 @@
--- daemon/gdm-display.c.orig 2022-01-12 14:15:56 UTC
+++ daemon/gdm-display.c
@@ -245,8 +245,13 @@ setup_xhost_auth (XHostAddress *host_entr
host_entries[1].address = "localuser\0" GDM_USERNAME;
host_entries[1].length = sizeof ("localuser\0" GDM_USERNAME);
host_entries[2].family = FamilyServerInterpreted;
+#if defined(__OpenBSD__)
+ host_entries[2].address = "localuser\0_gnome-initial-setup";
+ host_entries[2].length = sizeof ("localuser\0_gnome-initial-setup");
+#else
host_entries[2].address = "localuser\0gnome-initial-setup";
host_entries[2].length = sizeof ("localuser\0gnome-initial-setup");
+#endif
}
gboolean

View File

@ -0,0 +1,21 @@
--- daemon/gdm-launch-environment.c.orig 2023-09-14 15:27:04 UTC
+++ daemon/gdm-launch-environment.c
@@ -140,18 +140,12 @@ build_launch_environment (GdmLaunchEnvironment *launch
"GI_TYPELIB_PATH",
"LANG",
"LANGUAGE",
- "LC_ADDRESS",
"LC_ALL",
"LC_COLLATE",
"LC_CTYPE",
- "LC_IDENTIFICATION",
- "LC_MEASUREMENT",
"LC_MESSAGES",
"LC_MONETARY",
- "LC_NAME",
"LC_NUMERIC",
- "LC_PAPER",
- "LC_TELEPHONE",
"LC_TIME",
"LD_LIBRARY_PATH",
"PATH",

View File

@ -1,20 +1,22 @@
--- daemon/gdm-local-display-factory.c.orig 2022-03-21 18:12:40 UTC --- daemon/gdm-local-display-factory.c.orig 2024-09-16 13:28:26 UTC
+++ daemon/gdm-local-display-factory.c +++ daemon/gdm-local-display-factory.c
@@ -29,10 +29,12 @@ @@ -28,11 +28,15 @@
#include <glib-object.h>
#include <gio/gio.h> #include <gio/gio.h>
+#ifdef WITH_SYSTEMD
#ifdef HAVE_UDEV #ifdef HAVE_UDEV
-#include <gudev/gudev.h> #include <gudev/gudev.h>
+#undef HAVE_UDEV
#endif #endif
+#ifdef WITH_SYSTEMD
#include <systemd/sd-login.h> #include <systemd/sd-login.h>
+#elif defined(WITH_CONSOLE_KIT)
+#include <ConsoleKit/sd-login.h>
+#endif +#endif
#include "gdm-common.h" #include "gdm-common.h"
#include "gdm-manager.h" #include "gdm-manager.h"
@@ -68,8 +70,10 @@ struct _GdmLocalDisplayFactory @@ -68,8 +72,10 @@ struct _GdmLocalDisplayFactory
/* FIXME: this needs to be per seat? */ /* FIXME: this needs to be per seat? */
guint num_failures; guint num_failures;
@ -23,9 +25,9 @@
guint seat_removed_id; guint seat_removed_id;
+#endif +#endif
guint seat_properties_changed_id; guint seat_properties_changed_id;
guint seat_attention_key;
gboolean seat0_has_platform_graphics; @@ -108,9 +114,11 @@ static gpointer local_display_factory_object = NULL;
@@ -106,9 +110,11 @@ static gpointer local_display_factory_object = NULL;
static gboolean gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory); static gboolean gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory);
static gpointer local_display_factory_object = NULL; static gpointer local_display_factory_object = NULL;
@ -37,27 +39,7 @@
G_DEFINE_TYPE (GdmLocalDisplayFactory, gdm_local_display_factory, GDM_TYPE_DISPLAY_FACTORY) G_DEFINE_TYPE (GdmLocalDisplayFactory, gdm_local_display_factory, GDM_TYPE_DISPLAY_FACTORY)
@@ -245,9 +251,9 @@ struct GdmDisplayServerConfiguration { @@ -474,6 +482,7 @@ gdm_local_display_factory_create_transient_display (Gd
const char *session_type;
} display_server_configuration[] = {
#ifdef ENABLE_WAYLAND_SUPPORT
- { "wayland", GDM_KEY_WAYLAND_ENABLE, "/usr/bin/Xwayland", "wayland" },
+ { "wayland", GDM_KEY_WAYLAND_ENABLE, "/usr/local/bin/Xwayland", "wayland" },
#endif
- { "xorg", GDM_KEY_XORG_ENABLE, "/usr/bin/Xorg", "x11" },
+ { "xorg", GDM_KEY_XORG_ENABLE, X_SERVER, "x11" },
{ NULL, NULL, NULL },
};
@@ -373,7 +379,6 @@ gdm_local_display_factory_create_transient_display (Gd
gboolean ret;
GdmDisplay *display = NULL;
gboolean is_initial = FALSE;
- const char *session_type;
g_autofree gchar *preferred_display_server = NULL;
g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE);
@@ -451,6 +456,7 @@ gdm_local_display_factory_create_transient_display (Gd
return ret; return ret;
} }
@ -65,7 +47,7 @@
static void static void
finish_display_on_seat_if_waiting (GdmDisplayStore *display_store, finish_display_on_seat_if_waiting (GdmDisplayStore *display_store,
GdmDisplay *display, GdmDisplay *display,
@@ -505,6 +511,7 @@ on_session_registered_cb (GObject *gobject, @@ -528,6 +537,7 @@ on_session_registered_cb (GObject *gobject,
finish_waiting_displays_on_seat (factory, "seat0"); finish_waiting_displays_on_seat (factory, "seat0");
} }
@ -73,51 +55,58 @@
static void static void
on_display_status_changed (GdmDisplay *display, on_display_status_changed (GdmDisplay *display,
@@ -552,7 +559,7 @@ on_display_status_changed (GdmDisplay *dis @@ -560,7 +570,9 @@ on_display_status_changed (GdmDisplay *dis
* if there isn't one. "session-id", &session_id,
NULL);
+#ifdef WITH_SYSTEMD
sd_seat_get_active (seat_id, &seat_active_session, NULL);
+#endif
status = gdm_display_get_status (display);
@@ -578,12 +590,16 @@ on_display_status_changed (GdmDisplay *dis
* screen when the user logs out.
*/ */
if (is_local && if (is_local &&
- (g_strcmp0 (session_class, "greeter") != 0 || factory->active_vt == GDM_INITIAL_VT)) { +#ifdef WITH_SYSTEMD
((g_strcmp0 (session_class, "greeter") != 0 &&
(!seat_active_session || g_strcmp0(session_id, seat_active_session) == 0)) ||
#if defined(ENABLE_USER_DISPLAY_SERVER)
(g_strcmp0 (seat_id, "seat0") == 0 && factory->active_vt == GDM_INITIAL_VT) ||
#endif
g_strcmp0 (seat_id, "seat0") != 0)) {
+#else
+ (g_strcmp0 (session_class, "greeter") != 0)) { + (g_strcmp0 (session_class, "greeter") != 0)) {
+#endif
/* reset num failures */ /* reset num failures */
factory->num_failures = 0; factory->num_failures = 0;
@@ -741,7 +748,9 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto @@ -818,12 +834,15 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
g_auto (GStrv) session_types = NULL;
const char *legacy_session_types[] = { "x11", NULL }; const char *legacy_session_types[] = { "x11", NULL };
GdmDisplayStore *store;
GdmDisplay *display = NULL; GdmDisplay *display = NULL;
+#ifdef WITH_SYSTEMD +#ifdef WITH_SYSTEMD
g_autofree char *login_session_id = NULL; g_autofree char *login_session_id = NULL;
+#endif +#endif
gboolean wayland_enabled = FALSE, xorg_enabled = FALSE;
g_autofree gchar *preferred_display_server = NULL; g_autofree gchar *preferred_display_server = NULL;
gboolean falling_back = FALSE; gboolean waiting_on_udev = FALSE;
@@ -781,7 +790,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
seat_supports_graphics = FALSE;
}
- if (g_strcmp0 (seat_id, "seat0") == 0) { g_debug ("GdmLocalDisplayFactory: display for seat %s requested", seat_id);
+ if (g_strcmp0 (seat_id, SEAT_ID) == 0) {
is_seat0 = TRUE;
falling_back = factory->num_failures > 0;
@@ -869,6 +878,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
return;
}
+#ifdef WITH_SYSTEMD +#ifdef WITH_SYSTEMD
/* If we already have a login window, switch to it */ /* If we already have a login window, switch to it */
if (gdm_get_login_window_session_id (seat_id, &login_session_id)) { if (gdm_get_login_window_session_id (seat_id, &login_session_id)) {
GdmDisplay *display; GdmDisplay *display;
@@ -886,6 +896,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto @@ -843,6 +862,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
return; return;
} }
} }
+#endif +#endif
g_debug ("GdmLocalDisplayFactory: Adding display on seat %s", seat_id); preferred_display_server = get_preferred_display_server (factory);
@@ -929,6 +940,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto @@ -993,6 +1013,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
return; return;
} }
@ -125,7 +114,7 @@
static void static void
delete_display (GdmLocalDisplayFactory *factory, delete_display (GdmLocalDisplayFactory *factory,
const char *seat_id) { const char *seat_id) {
@@ -940,6 +952,7 @@ delete_display (GdmLocalDisplayFactory *factory, @@ -1004,6 +1025,7 @@ delete_display (GdmLocalDisplayFactory *factory,
store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory)); store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
gdm_display_store_foreach_remove (store, lookup_by_seat_id, (gpointer) seat_id); gdm_display_store_foreach_remove (store, lookup_by_seat_id, (gpointer) seat_id);
} }
@ -133,16 +122,15 @@
static gboolean static gboolean
gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory) gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory)
@@ -951,6 +964,8 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF @@ -1015,6 +1037,7 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF
const char *seat; const char *seat;
g_debug ("GdmLocalDisplayFactory: enumerating seats from logind"); g_debug ("GdmLocalDisplayFactory: enumerating seats from logind");
+
+#ifdef WITH_SYSTEMD +#ifdef WITH_SYSTEMD
result = g_dbus_connection_call_sync (factory->connection, result = g_dbus_connection_call_sync (factory->connection,
"org.freedesktop.login1", "org.freedesktop.login1",
"/org/freedesktop/login1", "/org/freedesktop/login1",
@@ -961,6 +976,18 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF @@ -1025,6 +1048,18 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF
G_DBUS_CALL_FLAGS_NONE, G_DBUS_CALL_FLAGS_NONE,
-1, -1,
NULL, &error); NULL, &error);
@ -161,15 +149,15 @@
if (!result) { if (!result) {
g_warning ("GdmLocalDisplayFactory: Failed to issue method call: %s", error->message); g_warning ("GdmLocalDisplayFactory: Failed to issue method call: %s", error->message);
@@ -980,6 +1007,7 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF @@ -1044,6 +1079,7 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF
return TRUE; return TRUE;
} }
+#ifdef WITH_SYSTEMD +#ifdef WITH_SYSTEMD
static void static void
on_seat_new (GDBusConnection *connection, on_seat_activate_greeter (GDBusConnection *connection,
const gchar *sender_name, const gchar *sender_name,
@@ -1093,6 +1121,7 @@ lookup_by_tty (const char *id, @@ -1177,6 +1213,7 @@ lookup_by_tty (const char *id,
return g_strcmp0 (tty_to_check, tty_to_find) == 0; return g_strcmp0 (tty_to_check, tty_to_find) == 0;
} }
@ -177,15 +165,15 @@
#if defined(ENABLE_USER_DISPLAY_SERVER) #if defined(ENABLE_USER_DISPLAY_SERVER)
static void static void
@@ -1295,6 +1324,7 @@ on_uevent (GUdevClient *client, @@ -1354,6 +1391,7 @@ on_vt_changed (GIOChannel *source,
} }
#endif #endif
+#ifdef WITH_SYSTEMD +#ifdef WITH_SYSTEMD
#ifdef HAVE_UDEV
static void static void
gdm_local_display_factory_start_monitor (GdmLocalDisplayFactory *factory) on_uevent (GUdevClient *client,
{ @@ -1444,10 +1482,12 @@ gdm_local_display_factory_start_monitor (GdmLocalDispl
@@ -1352,10 +1382,12 @@ gdm_local_display_factory_start_monitor (GdmLocalDispl
} }
#endif #endif
} }
@ -194,19 +182,19 @@
static void static void
gdm_local_display_factory_stop_monitor (GdmLocalDisplayFactory *factory) gdm_local_display_factory_stop_monitor (GdmLocalDisplayFactory *factory)
{ {
+#ifdef HAVE_UDEV +#ifdef WITH_SYSTEMD
if (factory->uevent_handler_id) { if (factory->uevent_handler_id) {
g_signal_handler_disconnect (factory->gudev_client, factory->uevent_handler_id); g_signal_handler_disconnect (factory->gudev_client, factory->uevent_handler_id);
factory->uevent_handler_id = 0; factory->uevent_handler_id = 0;
@@ -1387,6 +1419,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla @@ -1478,6 +1518,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla
factory->wait_to_finish_timeout_id = 0; g_clear_handle_id (&factory->active_vt_watch_id, g_source_remove);
} g_clear_handle_id (&factory->wait_to_finish_timeout_id, g_source_remove);
#endif #endif
+#endif +#endif
} }
static void static void
@@ -1441,7 +1474,9 @@ gdm_local_display_factory_start (GdmDisplayFactory *ba @@ -1532,7 +1573,9 @@ gdm_local_display_factory_start (GdmDisplayFactory *ba
factory, factory,
0); 0);

View File

@ -1,38 +1,31 @@
--- daemon/gdm-manager.c.orig 2022-01-12 14:15:56 UTC --- daemon/gdm-manager.c.orig 2024-05-29 15:50:27 UTC
+++ daemon/gdm-manager.c +++ daemon/gdm-manager.c
@@ -36,7 +36,9 @@ @@ -36,7 +36,11 @@
#include <act/act-user-manager.h> #include <act/act-user-manager.h>
+#ifdef WITH_SYSTEMD +#ifdef WITH_SYSTEMD
#include <systemd/sd-login.h> #include <systemd/sd-login.h>
+#elif defined(WITH_CONSOLE_KIT)
+#include <ConsoleKit/sd-login.h>
+#endif +#endif
#include "gdm-common.h" #include "gdm-common.h"
@@ -61,7 +63,7 @@ @@ -307,6 +311,7 @@ session_unlock (GdmManager *manager,
#define GDM_MANAGER_PATH GDM_DBUS_PATH "/Manager"
#define GDM_MANAGER_DISPLAYS_PATH GDM_DBUS_PATH "/Displays"
-#define INITIAL_SETUP_USERNAME "gnome-initial-setup"
+#define INITIAL_SETUP_USERNAME "_gnome-initial-setup"
#define ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT GDM_RUN_DIR "/gdm.ran-initial-setup"
typedef struct
@@ -304,6 +306,7 @@ session_unlock (GdmManager *manager,
g_debug ("Unlocking session %s", ssid); g_debug ("Unlocking session %s", ssid);
+#if defined(WITH_SYSTEMD) +#if defined(WITH_SYSTEMD)
reply = g_dbus_connection_call_sync (manager->priv->connection, reply = g_dbus_connection_call_sync (manager->connection,
"org.freedesktop.login1", "org.freedesktop.login1",
"/org/freedesktop/login1", "/org/freedesktop/login1",
@@ -321,6 +324,25 @@ session_unlock (GdmManager *manager, @@ -324,6 +329,25 @@ session_unlock (GdmManager *manager,
g_error_free (error); g_error_free (error);
return FALSE; return FALSE;
} }
+#elif defined(WITH_CONSOLE_KIT) +#elif defined(WITH_CONSOLE_KIT)
+ reply = g_dbus_connection_call_sync (manager->priv->connection, + reply = g_dbus_connection_call_sync (manager->connection,
+ CK_NAME, + CK_NAME,
+ ssid, + ssid,
+ CK_SESSION_INTERFACE, + CK_SESSION_INTERFACE,
@ -53,7 +46,43 @@
g_variant_unref (reply); g_variant_unref (reply);
@@ -436,6 +458,7 @@ static char * @@ -380,6 +404,7 @@ is_remote_session (GdmManager *self,
const char *session_id,
GError **error)
{
+#ifdef WITH_SYSTEMD
int ret;
ret = sd_session_is_remote (session_id);
@@ -393,6 +418,27 @@ is_remote_session (GdmManager *self,
}
return ret != FALSE;
+#elif defined(WITH_CONSOLE_KIT)
+ char *seat = NULL;
+ int ret;
+ gboolean is_remote;
+
+ ret = sd_session_get_seat (session_id, &seat);
+
+ if (ret < 0 && ret != -ENXIO) {
+ g_debug ("GdmManager: Error while retrieving seat for session %s: %s",
+ session_id, g_strerror (-ret));
+ }
+
+ if (seat != NULL) {
+ is_remote = FALSE;
+ free (seat);
+ } else {
+ is_remote = TRUE;
+ }
+
+ return is_remote;
+#endif
}
static char *
@@ -427,6 +473,7 @@ get_tty_for_session_id (const char *session_id,
get_tty_for_session_id (const char *session_id, get_tty_for_session_id (const char *session_id,
GError **error) GError **error)
{ {
@ -61,7 +90,7 @@
int ret; int ret;
char *tty, *out_tty; char *tty, *out_tty;
@@ -457,6 +480,9 @@ get_tty_for_session_id (const char *session_id, @@ -448,6 +495,9 @@ get_tty_for_session_id (const char *session_id,
} }
return out_tty; return out_tty;
@ -71,32 +100,7 @@
} }
static void static void
@@ -609,6 +635,7 @@ switch_to_compatible_user_session (GdmManager *manager @@ -2101,12 +2151,58 @@ on_user_session_died (GdmSession *session,
if (existing_session != NULL) {
ssid_to_activate = gdm_session_get_session_id (existing_session);
+#ifndef __FreeBSD__
if (seat_id != NULL) {
res = gdm_activate_session_by_id (manager->priv->connection, seat_id, ssid_to_activate);
if (! res) {
@@ -616,6 +643,7 @@ switch_to_compatible_user_session (GdmManager *manager
goto out;
}
}
+#endif
res = session_unlock (manager, ssid_to_activate);
if (!res) {
@@ -1204,7 +1232,7 @@ display_is_on_seat0 (GdmDisplay *display)
g_object_get (G_OBJECT (display), "seat-id", &seat_id, NULL);
- if (g_strcmp0 (seat_id, "seat0") != 0) {
+ if (g_strcmp0 (seat_id, SEAT_ID) != 0) {
is_on_seat0 = FALSE;
}
@@ -2019,12 +2047,58 @@ on_user_session_died (GdmSession *session,
remove_user_session (manager, session); remove_user_session (manager, session);
} }

View File

@ -1,4 +1,4 @@
--- daemon/gdm-server.c.orig 2022-01-28 21:55:35 UTC --- daemon/gdm-server.c.orig 2024-09-16 13:28:26 UTC
+++ daemon/gdm-server.c +++ daemon/gdm-server.c
@@ -43,7 +43,9 @@ @@ -43,7 +43,9 @@
#include <linux/vt.h> #include <linux/vt.h>
@ -10,7 +10,7 @@
#ifdef ENABLE_SYSTEMD_JOURNAL #ifdef ENABLE_SYSTEMD_JOURNAL
#include <systemd/sd-journal.h> #include <systemd/sd-journal.h>
@@ -84,6 +86,9 @@ struct _GdmServer @@ -86,6 +88,9 @@ struct _GdmServer
char *auth_file; char *auth_file;
guint child_watch_id; guint child_watch_id;
@ -20,7 +20,7 @@
gboolean is_initial; gboolean is_initial;
}; };
@@ -114,13 +119,60 @@ static void gdm_server_finalize (GObject @@ -116,13 +121,60 @@ G_DEFINE_TYPE (GdmServer, gdm_server, G_TYPE_OBJECT)
G_DEFINE_TYPE (GdmServer, gdm_server, G_TYPE_OBJECT) G_DEFINE_TYPE (GdmServer, gdm_server, G_TYPE_OBJECT)
@ -81,7 +81,7 @@
static void static void
gdm_server_ready (GdmServer *server) gdm_server_ready (GdmServer *server)
{ {
@@ -133,7 +185,26 @@ gdm_server_ready (GdmServer *server) @@ -135,7 +187,26 @@ gdm_server_ready (GdmServer *server)
g_signal_emit (server, signals[READY], 0); g_signal_emit (server, signals[READY], 0);
} }
@ -108,7 +108,7 @@
static GSList *active_servers; static GSList *active_servers;
static gboolean sigusr1_thread_running; static gboolean sigusr1_thread_running;
static GCond sigusr1_thread_cond; static GCond sigusr1_thread_cond;
@@ -199,6 +270,7 @@ gdm_server_launch_sigusr1_thread_if_needed (void) @@ -201,6 +272,7 @@ gdm_server_launch_sigusr1_thread_if_needed (void)
g_mutex_unlock (&sigusr1_thread_mutex); g_mutex_unlock (&sigusr1_thread_mutex);
} }
} }
@ -116,7 +116,7 @@
static void static void
gdm_server_init_command (GdmServer *server) gdm_server_init_command (GdmServer *server)
@@ -307,10 +379,12 @@ gdm_server_resolve_command_line (GdmServer *server, @@ -310,10 +382,12 @@ gdm_server_resolve_command_line (GdmServer *server,
argv[len++] = g_strdup (server->auth_file); argv[len++] = g_strdup (server->auth_file);
} }
@ -129,7 +129,7 @@
/* If we were compiled with Xserver >= 1.17 we need to specify /* If we were compiled with Xserver >= 1.17 we need to specify
* '-listen tcp' as the X server dosen't listen on tcp sockets * '-listen tcp' as the X server dosen't listen on tcp sockets
@@ -656,11 +730,13 @@ server_child_watch (GPid pid, @@ -653,11 +727,13 @@ server_child_watch (GPid pid,
g_object_unref (server); g_object_unref (server);
} }

View File

@ -1,4 +1,4 @@
--- daemon/gdm-session-worker-job.c.orig 2022-01-12 14:15:56 UTC --- daemon/gdm-session-worker-job.c.orig 2024-09-16 13:28:26 UTC
+++ daemon/gdm-session-worker-job.c +++ daemon/gdm-session-worker-job.c
@@ -36,7 +36,9 @@ @@ -36,7 +36,9 @@
#include <sys/prctl.h> #include <sys/prctl.h>

View File

@ -1,4 +1,4 @@
--- daemon/gdm-session-worker.c.orig 2022-03-21 18:12:40 UTC --- daemon/gdm-session-worker.c.orig 2024-09-16 13:28:26 UTC
+++ daemon/gdm-session-worker.c +++ daemon/gdm-session-worker.c
@@ -28,9 +28,11 @@ @@ -28,9 +28,11 @@
#include <string.h> #include <string.h>
@ -12,17 +12,18 @@
#include <errno.h> #include <errno.h>
#include <grp.h> #include <grp.h>
#include <pwd.h> #include <pwd.h>
@@ -49,7 +51,9 @@ @@ -53,8 +55,10 @@
#include <X11/Xauth.h> #include <X11/Xauth.h>
#endif
+#ifdef WITH_SYSTEMD +#ifdef WITH_SYSTEMD
#include <systemd/sd-daemon.h> #include <systemd/sd-daemon.h>
#include <systemd/sd-login.h>
+#endif +#endif
#ifdef ENABLE_SYSTEMD_JOURNAL #ifdef ENABLE_SYSTEMD_JOURNAL
#include <systemd/sd-journal.h> #include <systemd/sd-journal.h>
@@ -126,6 +130,10 @@ struct GdmSessionWorkerPrivate @@ -130,6 +134,10 @@ struct _GdmSessionWorker
int exit_code; int exit_code;
@ -33,7 +34,7 @@
pam_handle_t *pam_handle; pam_handle_t *pam_handle;
GPid child_pid; GPid child_pid;
@@ -140,6 +148,11 @@ struct GdmSessionWorkerPrivate @@ -144,6 +152,11 @@ struct _GdmSessionWorker
char *hostname; char *hostname;
char *username; char *username;
char *log_file; char *log_file;
@ -45,7 +46,7 @@
char *session_id; char *session_id;
uid_t uid; uid_t uid;
gid_t gid; gid_t gid;
@@ -207,6 +220,12 @@ typedef int (* GdmSessionWorkerPamNewMessagesFunc) (in @@ -213,12 +226,223 @@ typedef int (* GdmSessionWorkerPamNewMessagesFunc) (in
struct pam_response **, struct pam_response **,
gpointer); gpointer);
@ -58,9 +59,8 @@
G_DEFINE_TYPE_WITH_CODE (GdmSessionWorker, G_DEFINE_TYPE_WITH_CODE (GdmSessionWorker,
gdm_session_worker, gdm_session_worker,
GDM_DBUS_TYPE_WORKER_SKELETON, GDM_DBUS_TYPE_WORKER_SKELETON,
@@ -214,6 +233,211 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionWorker, G_IMPLEMENT_INTERFACE (GDM_DBUS_TYPE_WORKER,
worker_interface_init) worker_interface_init))
G_ADD_PRIVATE (GdmSessionWorker))
+#ifdef WITH_CONSOLE_KIT +#ifdef WITH_CONSOLE_KIT
+static gboolean +static gboolean
@ -78,27 +78,27 @@
+ const char *display_hostname; + const char *display_hostname;
+ gint32 uid; + gint32 uid;
+ +
+ g_assert (worker->priv->session_cookie == NULL); + g_assert (worker->session_cookie == NULL);
+ +
+ if (worker->priv->x11_display_name != NULL) { + if (worker->x11_display_name != NULL) {
+ display_name = worker->priv->x11_display_name; + display_name = worker->x11_display_name;
+ } else { + } else {
+ display_name = ""; + display_name = "";
+ } + }
+ if (worker->priv->hostname != NULL) { + if (worker->hostname != NULL) {
+ display_hostname = worker->priv->hostname; + display_hostname = worker->hostname;
+ } else { + } else {
+ display_hostname = ""; + display_hostname = "";
+ } + }
+ if (worker->priv->display_device != NULL) { + if (worker->display_device != NULL) {
+ display_device = worker->priv->display_device; + display_device = worker->display_device;
+ } else { + } else {
+ display_device = ""; + display_device = "";
+ } + }
+ +
+ g_assert (worker->priv->username != NULL); + g_assert (worker->username != NULL);
+ +
+ gdm_get_pwent_for_name (worker->priv->username, &pwent); + gdm_get_pwent_for_name (worker->username, &pwent);
+ if (pwent == NULL) { + if (pwent == NULL) {
+ goto out; + goto out;
+ } + }
@ -121,21 +121,21 @@
+ g_variant_builder_add_parsed (&builder, "('x11-display-device', <%s>)", display_device); + g_variant_builder_add_parsed (&builder, "('x11-display-device', <%s>)", display_device);
+ g_variant_builder_add_parsed (&builder, "('x11-display', <%s>)", display_name); + g_variant_builder_add_parsed (&builder, "('x11-display', <%s>)", display_name);
+ g_variant_builder_add_parsed (&builder, "('remote-host-name', <%s>)", display_hostname); + g_variant_builder_add_parsed (&builder, "('remote-host-name', <%s>)", display_hostname);
+ g_variant_builder_add_parsed (&builder, "('is-local', <%b>)", worker->priv->display_is_local); + g_variant_builder_add_parsed (&builder, "('is-local', <%b>)", worker->display_is_local);
+ +
+ worker->priv->session_type = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_TYPE"); + worker->session_type = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_TYPE");
+ if (worker->priv->session_type != NULL) { + if (worker->session_type != NULL) {
+ g_variant_builder_add_parsed (&builder, "('session-type', <%s>)", worker->priv->session_type); + g_variant_builder_add_parsed (&builder, "('session-type', <%s>)", worker->session_type);
+ } + }
+ +
+ worker->priv->session_class = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_CLASS"); + worker->session_class = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_CLASS");
+ if (worker->priv->session_class != NULL) { + if (worker->session_class != NULL) {
+ g_variant_builder_add_parsed (&builder, "('session-class', <%s>)", worker->priv->session_class); + g_variant_builder_add_parsed (&builder, "('session-class', <%s>)", worker->session_class);
+ } + }
+ +
+ worker->priv->session_service = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_SERVICE"); + worker->session_service = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_SERVICE");
+ if (worker->priv->session_service != NULL) { + if (worker->session_service != NULL) {
+ g_variant_builder_add_parsed (&builder, "('session-service', <%s>)", worker->priv->session_service); + g_variant_builder_add_parsed (&builder, "('session-service', <%s>)", worker->session_service);
+ } + }
+ +
+ parameters = g_variant_builder_end (&builder); + parameters = g_variant_builder_end (&builder);
@ -159,12 +159,12 @@
+ goto out; + goto out;
+ } + }
+ +
+ g_variant_get (reply, "(s)", &worker->priv->session_cookie); + g_variant_get (reply, "(s)", &worker->session_cookie);
+ +
+ g_variant_unref (reply); + g_variant_unref (reply);
+ +
+out: +out:
+ return worker->priv->session_cookie != NULL; + return worker->session_cookie != NULL;
+} +}
+ +
+static void +static void
@ -175,7 +175,7 @@
+ GError *error = NULL; + GError *error = NULL;
+ gboolean was_closed; + gboolean was_closed;
+ +
+ if (worker->priv->session_cookie == NULL) { + if (worker->session_cookie == NULL) {
+ return; + return;
+ } + }
+ +
@ -195,7 +195,7 @@
+ CK_MANAGER_PATH, + CK_MANAGER_PATH,
+ CK_MANAGER_INTERFACE, + CK_MANAGER_INTERFACE,
+ "CloseSession", + "CloseSession",
+ g_variant_new ("(s)", worker->priv->session_cookie), + g_variant_new ("(s)", worker->session_cookie),
+ G_VARIANT_TYPE ("(b)"), + G_VARIANT_TYPE ("(b)"),
+ G_DBUS_CALL_FLAGS_NONE, + G_DBUS_CALL_FLAGS_NONE,
+ -1, + -1,
@ -217,7 +217,7 @@
+ g_variant_unref (reply); + g_variant_unref (reply);
+ +
+out: +out:
+ g_clear_pointer (&worker->priv->session_cookie, + g_clear_pointer (&worker->session_cookie,
+ (GDestroyNotify) g_free); + (GDestroyNotify) g_free);
+} +}
+ +
@ -245,7 +245,7 @@
+ CK_MANAGER_PATH, + CK_MANAGER_PATH,
+ CK_MANAGER_INTERFACE, + CK_MANAGER_INTERFACE,
+ "GetSessionForCookie", + "GetSessionForCookie",
+ g_variant_new ("(s)", worker->priv->session_cookie), + g_variant_new ("(s)", worker->session_cookie),
+ G_VARIANT_TYPE ("(o)"), + G_VARIANT_TYPE ("(o)"),
+ G_DBUS_CALL_FLAGS_NONE, + G_DBUS_CALL_FLAGS_NONE,
+ -1, + -1,
@ -270,25 +270,15 @@
/* adapted from glib script_execute */ /* adapted from glib script_execute */
static void static void
script_execute (const gchar *file, script_execute (const gchar *file,
@@ -670,7 +894,9 @@ gdm_session_worker_process_pam_message (GdmSessionWork @@ -972,6 +1196,7 @@ gdm_session_worker_stop_auditor (GdmSessionWorker *wor
char *user_answer; worker->auditor = NULL;
gboolean res;
char *utf8_msg;
+#ifdef PAM_RADIO_TYPE
char *msg;
+#endif
if (response != NULL) {
*response = NULL;
@@ -914,6 +1140,7 @@ gdm_session_worker_stop_auditor (GdmSessionWorker *wor
worker->priv->auditor = NULL;
} }
+#ifdef WITH_SYSTEMD +#ifdef WITH_SYSTEMD
static void static void
on_release_display (int signal) on_release_display (int signal)
{ {
@@ -1056,6 +1283,7 @@ jump_to_vt (GdmSessionWorker *worker, @@ -1114,6 +1339,7 @@ jump_to_vt (GdmSessionWorker *worker,
close (active_vt_tty_fd); close (active_vt_tty_fd);
} }
@ -296,7 +286,7 @@
static void static void
gdm_session_worker_set_state (GdmSessionWorker *worker, gdm_session_worker_set_state (GdmSessionWorker *worker,
@@ -1158,7 +1386,9 @@ gdm_session_worker_initialize_pam (GdmSessionWorker @@ -1216,7 +1442,9 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
{ {
struct pam_conv pam_conversation; struct pam_conv pam_conversation;
int error_code; int error_code;
@ -304,9 +294,9 @@
char tty_string[256]; char tty_string[256];
+#endif +#endif
g_assert (worker->priv->pam_handle == NULL); g_assert (service != NULL);
g_assert (worker->pam_handle == NULL);
@@ -1230,6 +1460,10 @@ gdm_session_worker_initialize_pam (GdmSessionWorker @@ -1297,6 +1525,10 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
gdm_session_worker_set_environment_variable (worker, "XDG_SEAT", seat_id); gdm_session_worker_set_environment_variable (worker, "XDG_SEAT", seat_id);
} }
@ -317,36 +307,34 @@
if (strcmp (service, "gdm-launch-environment") == 0) { if (strcmp (service, "gdm-launch-environment") == 0) {
gdm_session_worker_set_environment_variable (worker, "XDG_SESSION_CLASS", "greeter"); gdm_session_worker_set_environment_variable (worker, "XDG_SESSION_CLASS", "greeter");
} }
@@ -1237,12 +1471,14 @@ gdm_session_worker_initialize_pam (GdmSessionWorker @@ -1304,13 +1536,6 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
g_debug ("GdmSessionWorker: state SETUP_COMPLETE"); g_debug ("GdmSessionWorker: state SETUP_COMPLETE");
gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE); gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE);
+#ifdef WITH_SYSTEMD - if (g_strcmp0 (seat_id, "seat0") == 0 && worker->seat0_has_vts) {
/* Temporarily set PAM_TTY with the login VT, - /* Temporarily set PAM_TTY with the login VT,
PAM_TTY will be reset with the users VT right before the user session is opened */ - PAM_TTY will be reset with the users VT right before the user session is opened */
g_snprintf (tty_string, 256, "/dev/tty%d", GDM_INITIAL_VT); - g_snprintf (tty_string, 256, "/dev/tty%d", GDM_INITIAL_VT);
pam_set_item (worker->priv->pam_handle, PAM_TTY, tty_string); - pam_set_item (worker->pam_handle, PAM_TTY, tty_string);
- }
-
if (!display_is_local) if (!display_is_local)
worker->priv->password_is_required = TRUE; worker->password_is_required = TRUE;
+#endif
out: @@ -1621,7 +1846,11 @@ _lookup_passwd_info (const char *username,
if (error_code != PAM_SUCCESS) {
@@ -1545,7 +1781,11 @@ _lookup_passwd_info (const char *username,
if (passwd_entry->pw_shell != NULL && passwd_entry->pw_shell[0] != '\0') { if (passwd_entry->pw_shell != NULL && passwd_entry->pw_shell[0] != '\0') {
*shellp = g_strdup (passwd_entry->pw_shell); *shellp = g_strdup (passwd_entry->pw_shell);
} else { } else {
- *shellp = g_strdup ("/bin/bash"); +#if defined(__FreeBSD__)
+#if defined(__OpenBSD__)
+ *shellp = g_strdup ("/bin/ksh");
+#else
+ *shellp = g_strdup ("/bin/sh"); + *shellp = g_strdup ("/bin/sh");
+#else
*shellp = g_strdup ("/bin/bash");
+#endif +#endif
} }
} }
ret = TRUE; ret = TRUE;
@@ -1689,6 +1929,20 @@ gdm_session_worker_get_environment (GdmSessionWorker * @@ -1760,6 +1989,20 @@ gdm_session_worker_get_environment (GdmSessionWorker *
return (const char * const *) pam_getenvlist (worker->priv->pam_handle); return (const char * const *) pam_getenvlist (worker->pam_handle);
} }
+#ifdef WITH_CONSOLE_KIT +#ifdef WITH_CONSOLE_KIT
@ -355,10 +343,10 @@
+{ +{
+ open_ck_session (worker); + open_ck_session (worker);
+ +
+ if (worker->priv->session_cookie != NULL) { + if (worker->session_cookie != NULL) {
+ gdm_session_worker_set_environment_variable (worker, + gdm_session_worker_set_environment_variable (worker,
+ "XDG_SESSION_COOKIE", + "XDG_SESSION_COOKIE",
+ worker->priv->session_cookie); + worker->session_cookie);
+ } + }
+} +}
+#endif +#endif
@ -366,7 +354,7 @@
static gboolean static gboolean
run_script (GdmSessionWorker *worker, run_script (GdmSessionWorker *worker,
const char *dir) const char *dir)
@@ -1766,6 +2020,10 @@ session_worker_child_watch (GPid pid, @@ -1837,6 +2080,10 @@ session_worker_child_watch (GPid pid,
: WIFSIGNALED (status) ? WTERMSIG (status) : WIFSIGNALED (status) ? WTERMSIG (status)
: -1); : -1);
@ -376,8 +364,8 @@
+ +
gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS); gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS);
worker->priv->child_pid = -1; worker->child_pid = -1;
@@ -1978,6 +2236,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w @@ -2037,6 +2284,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
error_code = PAM_SUCCESS; error_code = PAM_SUCCESS;
@ -385,15 +373,15 @@
/* If we're in new vt mode, jump to the new vt now. There's no need to jump for /* If we're in new vt mode, jump to the new vt now. There's no need to jump for
* the other two modes: in the logind case, the session will activate itself when * the other two modes: in the logind case, the session will activate itself when
* ready, and in the reuse server case, we're already on the correct VT. */ * ready, and in the reuse server case, we're already on the correct VT. */
@@ -1986,6 +2245,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w @@ -2045,6 +2293,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
jump_to_vt (worker, worker->priv->session_vt); jump_to_vt (worker, worker->session_vt);
} }
} }
+#endif +#endif
if (!worker->priv->is_program_session && !run_script (worker, GDMCONFDIR "/PostLogin")) { if (!worker->is_program_session && !run_script (worker, GDMCONFDIR "/PostLogin")) {
g_set_error (error, g_set_error (error,
@@ -2048,6 +2308,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w @@ -2107,6 +2356,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
_exit (EXIT_FAILURE); _exit (EXIT_FAILURE);
} }
@ -401,7 +389,7 @@
/* Take control of the tty /* Take control of the tty
*/ */
if (needs_controlling_terminal) { if (needs_controlling_terminal) {
@@ -2055,6 +2316,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w @@ -2114,6 +2364,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
g_debug ("GdmSessionWorker: could not take control of tty: %m"); g_debug ("GdmSessionWorker: could not take control of tty: %m");
} }
} }
@ -409,7 +397,7 @@
#ifdef HAVE_LOGINCAP #ifdef HAVE_LOGINCAP
if (setusercontext (NULL, passwd_entry, passwd_entry->pw_uid, LOGIN_SETALL) < 0) { if (setusercontext (NULL, passwd_entry, passwd_entry->pw_uid, LOGIN_SETALL) < 0) {
@@ -2186,6 +2448,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w @@ -2242,6 +2493,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
return TRUE; return TRUE;
} }
@ -417,7 +405,7 @@
static gboolean static gboolean
set_up_for_new_vt (GdmSessionWorker *worker) set_up_for_new_vt (GdmSessionWorker *worker)
{ {
@@ -2286,6 +2549,7 @@ fail: @@ -2341,6 +2593,7 @@ fail:
close (fd); close (fd);
return FALSE; return FALSE;
} }
@ -425,38 +413,38 @@
static gboolean static gboolean
set_up_for_current_vt (GdmSessionWorker *worker, set_up_for_current_vt (GdmSessionWorker *worker,
@@ -2353,12 +2617,14 @@ set_up_for_current_vt (GdmSessionWorker *worker, @@ -2410,12 +2663,14 @@ set_up_for_current_vt (GdmSessionWorker *worker,
} }
#endif #endif
+#ifdef WITH_SYSTEMD +#ifdef WITH_SYSTEMD
if (g_strcmp0 (worker->priv->display_seat_id, "seat0") == 0) { if (g_strcmp0 (worker->display_seat_id, "seat0") == 0 && worker->seat0_has_vts) {
g_debug ("GdmSessionWorker: setting XDG_VTNR to current vt"); g_debug ("GdmSessionWorker: setting XDG_VTNR to current vt");
set_xdg_vtnr_to_current_vt (worker); set_xdg_vtnr_to_current_vt (worker);
} else { } else {
g_debug ("GdmSessionWorker: not setting XDG_VTNR since not seat0"); g_debug ("GdmSessionWorker: not setting XDG_VTNR since no VTs on seat");
} }
+#endif +#endif
return TRUE; return TRUE;
out: }
@@ -2384,6 +2650,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo @@ -2440,6 +2695,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
break; break;
case GDM_SESSION_DISPLAY_MODE_NEW_VT: case GDM_SESSION_DISPLAY_MODE_NEW_VT:
case GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED: case GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED:
+#ifdef WITH_SYSTEMD +#ifdef WITH_SYSTEMD
if (!set_up_for_new_vt (worker)) { if (!set_up_for_new_vt (worker)) {
g_set_error (error, g_set_error (error,
GDM_SESSION_WORKER_ERROR, GDM_SESSION_WORKER_ERROR,
@@ -2391,6 +2658,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo @@ -2447,6 +2703,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
"Unable to open VT"); "Unable to open VT");
return FALSE; return FALSE;
} }
+#endif +#endif
break; break;
}
} }
@@ -2470,8 +2727,16 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
@@ -2413,8 +2681,16 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
g_debug ("GdmSessionWorker: state SESSION_OPENED"); g_debug ("GdmSessionWorker: state SESSION_OPENED");
gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SESSION_OPENED); gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SESSION_OPENED);
@ -471,9 +459,9 @@
+#endif +#endif
+ +
if (session_id != NULL) { if (session_id != NULL) {
g_free (worker->priv->session_id); g_free (worker->session_id);
worker->priv->session_id = session_id; worker->session_id = g_steal_pointer (&session_id);
@@ -2968,6 +3244,7 @@ gdm_session_worker_handle_open (GdmDBusWorker @@ -3022,6 +3287,7 @@ gdm_session_worker_handle_open (GdmDBusWorker
return TRUE; return TRUE;
} }
@ -481,22 +469,32 @@
static char ** static char **
filter_extensions (const char * const *extensions) filter_extensions (const char * const *extensions)
{ {
@@ -2993,6 +3270,7 @@ filter_extensions (const char * const *extensions) @@ -3045,6 +3311,7 @@ filter_extensions (const char * const *extensions)
return filtered_extensions; return g_steal_pointer (&filtered_extensions);
} }
+#endif +#endif
static gboolean static gboolean
gdm_session_worker_handle_initialize (GdmDBusWorker *object, gdm_session_worker_handle_initialize (GdmDBusWorker *object,
@@ -3012,8 +3290,10 @@ gdm_session_worker_handle_initialize (GdmDBusWorker @@ -3064,8 +3331,10 @@ gdm_session_worker_handle_initialize (GdmDBusWorker
while (g_variant_iter_loop (&iter, "{sv}", &key, &value)) { while (g_variant_iter_loop (&iter, "{sv}", &key, &value)) {
if (g_strcmp0 (key, "service") == 0) { if (g_strcmp0 (key, "service") == 0) {
worker->priv->service = g_variant_dup_string (value, NULL); worker->service = g_variant_dup_string (value, NULL);
+#ifdef SUPPORTS_PAM_EXTENSIONS +#ifdef SUPPORTS_PAM_EXTENSIONS
} else if (g_strcmp0 (key, "extensions") == 0) { } else if (g_strcmp0 (key, "extensions") == 0) {
worker->priv->extensions = filter_extensions (g_variant_get_strv (value, NULL)); worker->extensions = filter_extensions (g_variant_get_strv (value, NULL));
+#endif +#endif
} else if (g_strcmp0 (key, "username") == 0) { } else if (g_strcmp0 (key, "username") == 0) {
worker->priv->username = g_variant_dup_string (value, NULL); worker->username = g_variant_dup_string (value, NULL);
} else if (g_strcmp0 (key, "is-program-session") == 0) { } else if (g_strcmp0 (key, "is-program-session") == 0) {
@@ -3089,7 +3358,9 @@ gdm_session_worker_handle_initialize (GdmDBusWorker
}
}
+#ifdef WITH_SYSTEMD
worker->seat0_has_vts = sd_seat_can_tty ("seat0");
+#endif
worker->pending_invocation = invocation;

View File

@ -1,6 +1,16 @@
--- daemon/gdm-session.c.orig 2022-01-12 14:15:56 UTC --- daemon/gdm-session.c.orig 2024-09-16 13:28:26 UTC
+++ daemon/gdm-session.c +++ daemon/gdm-session.c
@@ -116,6 +116,9 @@ struct _GdmSession @@ -45,7 +45,9 @@
#include <json-glib/json-glib.h>
+#ifdef WITH_SYSTEMD
#include <systemd/sd-login.h>
+#endif
#include "gdm-session.h"
#include "gdm-session-glue.h"
@@ -120,6 +122,9 @@ struct _GdmSession
/* object lifetime scope */ /* object lifetime scope */
char *session_type; char *session_type;
@ -10,7 +20,7 @@
char *display_name; char *display_name;
char *display_hostname; char *display_hostname;
char *display_device; char *display_device;
@@ -371,7 +374,9 @@ get_system_session_dirs (GdmSession *self, @@ -387,7 +392,9 @@ get_system_session_dirs (GdmSession *self,
DATADIR "/xsessions/", DATADIR "/xsessions/",
}; };
@ -20,3 +30,19 @@
search_array = g_array_new (TRUE, TRUE, sizeof (char *)); search_array = g_array_new (TRUE, TRUE, sizeof (char *));
@@ -3386,6 +3393,7 @@ gdm_session_is_frozen (GdmSession *self)
gboolean
gdm_session_is_frozen (GdmSession *self)
{
+#ifdef WITH_SYSTEMD
g_autofree char *cgroup = NULL, *path = NULL, *data = NULL;
g_auto (GStrv) arr = NULL;
@@ -3408,6 +3416,7 @@ gdm_session_is_frozen (GdmSession *self)
if (g_str_equal (arr[i], "frozen"))
return g_str_equal (arr[i + 1], "1");
}
+#endif
return FALSE;
}

View File

@ -0,0 +1,36 @@
--- daemon/gdm-wayland-session.c.orig 2023-09-14 15:27:04 UTC
+++ daemon/gdm-wayland-session.c
@@ -212,32 +212,7 @@ import_environment (State *state,
import_environment (State *state,
GCancellable *cancellable)
{
- g_autoptr(GVariant) reply = NULL;
- g_autoptr(GVariant) environment_variant = NULL;
- g_autoptr(GError) error = NULL;
-
- reply = g_dbus_connection_call_sync (state->bus_connection,
- "org.freedesktop.systemd1",
- "/org/freedesktop/systemd1",
- "org.freedesktop.DBus.Properties",
- "Get",
- g_variant_new ("(ss)",
- "org.freedesktop.systemd1.Manager",
- "Environment"),
- NULL,
- G_DBUS_CALL_FLAGS_NONE,
- -1, cancellable, &error);
-
- if (reply == NULL) {
- g_debug ("could not fetch environment: %s", error->message);
- return FALSE;
- }
-
- g_variant_get (reply, "(v)", &environment_variant);
-
- state->environment = g_variant_dup_strv (environment_variant, NULL);
-
- return TRUE;
+ return FALSE;
}
static void

View File

@ -1,20 +1,28 @@
--- daemon/gdm-x-session.c.orig 2022-01-12 14:15:56 UTC --- daemon/gdm-x-session.c.orig 2023-03-20 15:42:37 UTC
+++ daemon/gdm-x-session.c +++ daemon/gdm-x-session.c
@@ -114,7 +114,7 @@ prepare_auth_file (void) @@ -20,6 +20,7 @@
#include "config.h"
#include <locale.h>
+#include <limits.h>
#include <sysexits.h>
#include "gdm-common.h"
@@ -114,7 +115,7 @@ prepare_auth_file (void)
GError *error = NULL; GError *error = NULL;
gboolean prepared = FALSE; gboolean prepared = FALSE;
Xauth auth_entry = { 0 }; Xauth auth_entry = { 0 };
- char localhost[HOST_NAME_MAX + 1] = ""; - char localhost[HOST_NAME_MAX + 1] = "";
+ char localhost[256] = ""; + char localhost[_POSIX_HOST_NAME_MAX + 1] = "";
g_debug ("Preparing auth file for X server"); g_debug ("Preparing auth file for X server");
@@ -124,7 +124,7 @@ prepare_auth_file (void) @@ -124,7 +125,7 @@ prepare_auth_file (void)
return NULL; return NULL;
} }
- if (gethostname (localhost, HOST_NAME_MAX) < 0) { - if (gethostname (localhost, HOST_NAME_MAX) < 0) {
+ if (gethostname (localhost, 255) < 0) { + if (gethostname (localhost, _POSIX_HOST_NAME_MAX) < 0) {
strncpy (localhost, "localhost", sizeof (localhost) - 1); strncpy (localhost, "localhost", sizeof (localhost) - 1);
} }

View File

@ -1,4 +1,4 @@
--- daemon/main.c.orig 2022-03-21 18:12:40 UTC --- daemon/main.c.orig 2023-03-20 15:42:37 UTC
+++ daemon/main.c +++ daemon/main.c
@@ -281,6 +281,7 @@ is_debug_set (void) @@ -281,6 +281,7 @@ is_debug_set (void)
return debug; return debug;

View File

@ -1,6 +1,6 @@
--- daemon/meson.build.orig 2022-03-21 18:12:40 UTC --- daemon/meson.build.orig 2024-09-16 13:28:26 UTC
+++ daemon/meson.build +++ daemon/meson.build
@@ -128,6 +128,7 @@ gdm_session_worker = executable('gdm-session-worker', @@ -145,6 +145,7 @@ gdm_session_worker = executable('gdm-session-worker',
gdm_session_worker = executable('gdm-session-worker', gdm_session_worker = executable('gdm-session-worker',
gdm_session_worker_src, gdm_session_worker_src,
dependencies: gdm_session_worker_deps, dependencies: gdm_session_worker_deps,
@ -8,7 +8,7 @@
include_directories: gdm_session_worker_includes, include_directories: gdm_session_worker_includes,
install: true, install: true,
install_dir: get_option('libexecdir'), install_dir: get_option('libexecdir'),
@@ -211,6 +212,7 @@ gdm_daemon = executable('gdm', @@ -234,6 +235,7 @@ gdm_daemon = executable('gdm',
gdm_daemon = executable('gdm', gdm_daemon = executable('gdm',
[ gdm_daemon_sources, gdm_daemon_gen_sources ], [ gdm_daemon_sources, gdm_daemon_gen_sources ],
dependencies: gdm_daemon_deps, dependencies: gdm_daemon_deps,

View File

@ -0,0 +1,12 @@
--- data/gdm.conf-custom.in.orig 2023-05-05 18:12:53 UTC
+++ data/gdm.conf-custom.in
@@ -2,7 +2,8 @@
[daemon]
# Uncomment the line below to force the login screen to use Xorg
-#WaylandEnable=false
+WaylandEnable=false
+PreferredDisplayServer=xorg
[security]

View File

@ -1,48 +1,97 @@
--- data/meson.build.orig 2022-01-12 14:15:56 UTC --- data/meson.build.orig 2024-09-16 13:28:26 UTC
+++ data/meson.build +++ data/meson.build
@@ -164,41 +164,43 @@ else @@ -13,7 +13,7 @@ foreach file : [ 'Init', 'PreSession', 'PostSession' ]
install_data(generated_file,
install_dir: gdmconfdir / file,
install_mode: 'rwxr-xr-x',
- rename: 'Default'
+ rename: 'Default.sample'
)
endforeach
@@ -26,7 +26,7 @@ configure_file(
# gdm.conf
configure_file(
input: 'gdm.conf.in',
- output: '@BASENAME@',
+ output: 'gdm.conf.sample',
configuration: {
'GDM_USERNAME': get_option('user'),
},
@@ -34,10 +34,10 @@ configure_file(
)
configure_file(
input: 'gdm.conf-custom.in',
- output: gdm_custom_conf.split('/')[-1],
+ output: 'custom.conf.sample',
copy: true,
install_mode: 'rw-r--r--',
- install_dir: run_command(find_program('dirname'), gdm_custom_conf).stdout().strip(),
+ install_dir: gdmconfdir,
)
# GSettings schema
@@ -163,59 +163,61 @@ endif
service_config.set('PLYMOUTH_QUIT_SERVICE', '') service_config.set('PLYMOUTH_QUIT_SERVICE', '')
endif endif
-if get_option('systemdsystemunitdir') != '' -systemdsystemunitdir = get_option('systemdsystemunitdir')
- systemd_systemunitdir = get_option('systemdsystemunitdir') -if systemdsystemunitdir != 'no'
-else - if get_option('systemdsystemunitdir') != ''
- systemd_systemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir') - systemd_systemunitdir = get_option('systemdsystemunitdir')
-endif - else
- assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd system unit dir or disable it')
- systemd_systemunitdir = systemd_dep.get_variable(pkgconfig: 'systemdsystemunitdir')
+if host_machine.system() == 'linux' +if host_machine.system() == 'linux'
+ if get_option('systemdsystemunitdir') != '' + systemdsystemunitdir = get_option('systemdsystemunitdir')
+ systemd_systemunitdir = get_option('systemdsystemunitdir') + if systemdsystemunitdir != 'no'
+ else + if get_option('systemdsystemunitdir') != ''
+ systemd_systemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir') + systemd_systemunitdir = get_option('systemdsystemunitdir')
+ endif + else
+ assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd system unit dir or disable it')
-if get_option('systemduserunitdir') != '' + systemd_systemunitdir = systemd_dep.get_variable(pkgconfig: 'systemdsystemunitdir')
- systemd_userunitdir = get_option('systemduserunitdir') + endif
-else endif
- systemd_userunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir',
- define_variable: ['prefix', get_option('prefix')])
-endif -endif
+ if get_option('systemduserunitdir') != ''
+ systemd_userunitdir = get_option('systemduserunitdir')
+ else
+ systemd_userunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir',
+ define_variable: ['prefix', get_option('prefix')])
+ endif
-configure_file( -systemduserunitdir = get_option('systemduserunitdir')
- input: 'gdm.service.in', -if systemduserunitdir != 'no'
- output: '@BASENAME@', - if get_option('systemduserunitdir') != ''
- configuration: service_config, - systemd_userunitdir = get_option('systemduserunitdir')
- install_dir: systemd_systemunitdir, - else
- format: 'cmake' - assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd user unit dir or disable it')
-) - systemd_userunitdir = systemd_dep.get_variable(pkgconfig: 'systemduserunitdir',
+ configure_file( - pkgconfig_define: ['prefix', get_option('prefix')])
+ input: 'gdm.service.in', + systemduserunitdir = get_option('systemduserunitdir')
+ output: '@BASENAME@', + if systemduserunitdir != 'no'
+ configuration: service_config, + if get_option('systemduserunitdir') != ''
+ install_dir: systemd_systemunitdir, + systemd_userunitdir = get_option('systemduserunitdir')
+ format: 'cmake' + else
+ ) + assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd user unit dir or disable it')
+ systemd_userunitdir = systemd_dep.get_variable(pkgconfig: 'systemduserunitdir',
+ pkgconfig_define: ['prefix', get_option('prefix')])
+ endif
endif
-endif
-if systemdsystemunitdir != 'no'
- configure_file(
- input: 'gdm.service.in',
- output: '@BASENAME@',
- configuration: service_config,
- install_dir: systemd_systemunitdir,
- format: 'cmake'
- )
-endif
+ if systemdsystemunitdir != 'no'
+ configure_file(
+ input: 'gdm.service.in',
+ output: '@BASENAME@',
+ configuration: service_config,
+ install_dir: systemd_systemunitdir,
+ format: 'cmake'
+ )
+ endif
-gdm_gnome_session_wanted_targets = [] -gdm_gnome_session_wanted_targets = []
-foreach component: gdm_gnome_user_session_wanted_components -foreach component: gdm_gnome_user_session_wanted_components
@ -53,25 +102,35 @@
+ gdm_gnome_session_wanted_targets += 'Wants=@0@.target'.format(component) + gdm_gnome_session_wanted_targets += 'Wants=@0@.target'.format(component)
+ endforeach + endforeach
-configure_file( -if systemduserunitdir != 'no'
- input: 'session.conf.in', - configure_file(
- output: 'session.conf', - input: 'session.conf.in',
- configuration: { - output: 'session.conf',
- 'requires_component': gdm_gnome_shell_component, - configuration: {
- 'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets), - 'requires_component': gdm_gnome_shell_component,
- }, - 'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets),
- install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d', - },
-) - install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d',
+ configure_file( - )
+ input: 'session.conf.in', + if systemduserunitdir != 'no'
+ output: 'session.conf', + configure_file(
+ configuration: { + input: 'session.conf.in',
+ 'requires_component': gdm_gnome_shell_component, + output: 'session.conf',
+ 'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets), + configuration: {
+ }, + 'requires_component': gdm_gnome_shell_component,
+ install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d', + 'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets),
+ ) + },
+endif + install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d',
+ )
+ endif
endif
# XSession # XSession
if get_option('gdm-xsession') if get_option('gdm-xsession') and have_x11_support
configure_file(
input: 'Xsession.in',
- output: '@BASENAME@',
+ output: 'Xsession.sample',
configuration: {
'libexecdir': gdm_prefix / get_option('libexecdir'),
'XSESSION_SHELL': get_option('solaris')? '/bin/ksh' : '/bin/sh',

View File

@ -0,0 +1,38 @@
--- libgdm/gdm-sessions.c.orig 2024-05-29 15:50:27 UTC
+++ libgdm/gdm-sessions.c
@@ -35,7 +35,9 @@
#include <glib/gi18n.h>
#include <glib/gstdio.h>
+#ifdef WITH_SYSTEMD
#include <systemd/sd-login.h>
+#endif
#include "gdm-sessions.h"
@@ -60,6 +62,7 @@ gdm_session_file_free (GdmSessionFile *session)
g_free (session);
}
+#ifdef WITH_SYSTEMD
static char *
get_systemd_session (void)
{
@@ -104,6 +107,7 @@ get_systemd_seat (void)
return g_steal_pointer (&seat);
}
+#endif
/* adapted from gnome-menus desktop-entries.c */
static gboolean
@@ -138,7 +142,9 @@ key_file_is_relevant (GKeyFile *key_file)
g_error_free (error);
}
+#ifdef WITH_SYSTEMD
seat = get_systemd_seat ();
+#endif
only_headless_allowed = seat == NULL;

View File

@ -1,48 +0,0 @@
--- libgdm/gdm-user-switching.c.orig 2022-01-12 14:15:56 UTC
+++ libgdm/gdm-user-switching.c
@@ -31,7 +31,9 @@
#include <glib-object.h>
#include <gio/gio.h>
+#ifdef WITH_SYSTEMD
#include <systemd/sd-login.h>
+#endif
#include "common/gdm-common.h"
#include "gdm-user-switching.h"
@@ -76,6 +78,7 @@ activate_session_id (GDBusConnection *connection,
{
GVariant *reply;
+#if defined(WITH_SYSTEMD)
reply = g_dbus_connection_call_sync (connection,
"org.freedesktop.login1",
"/org/freedesktop/login1",
@@ -86,6 +89,18 @@ activate_session_id (GDBusConnection *connection,
G_DBUS_CALL_FLAGS_NONE,
-1,
cancellable, error);
+#elif defined(WITH_CONSOLE_KIT)
+ reply = g_dbus_connection_call_sync (connection,
+ CK_NAME,
+ seat_id,
+ CK_SEAT_INTERFACE,
+ "ActivateSession",
+ g_variant_new ("(o)", session_id),
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL, error);
+#endif
if (reply == NULL) {
g_prefix_error (error, _("Unable to activate session: "));
return FALSE;
@@ -227,7 +242,7 @@ goto_login_session (GDBusConnection *connection,
}
}
- if (! ret && g_strcmp0 (seat_id, "seat0") == 0) {
+ if (! ret && g_strcmp0 (seat_id, SEAT_ID) == 0) {
res = create_transient_display (connection, cancellable, error);
if (res) {
ret = TRUE;

View File

@ -1,51 +1,82 @@
--- meson.build.orig 2022-03-21 18:12:40 UTC --- meson.build.orig 2024-09-16 13:28:26 UTC
+++ meson.build +++ meson.build
@@ -37,8 +37,14 @@ config_h_dir = include_directories('.') @@ -48,9 +48,15 @@ endif
config_h_dir = include_directories('.') endif
# Dependencies # Dependencies
-udev_dep = dependency('udev') -udev_dep = dependency('udev')
-gudev_dep = dependency('gudev-1.0', version: '>= 232') -gudev_dep = dependency('gudev-1.0', version: '>= 232')
+if host_machine.system() == 'linux' +if host_machine.system() == 'linux'
+ udev_dep = dependency('udev') + udev_dep = dependency('udev')
+ gudev_dep = dependency('gudev-1.0', version: '>= 232')
+else +else
+ udev_dep = declare_dependency() + udev_dep = declare_dependency()
+ gudev_dep = declare_dependency() + gudev_dep = declare_dependency()
+ udev_dir = '/usr/local/lib/udev/rules.d'
+endif +endif
glib_min_version = '2.56.0' +gudev_dep = dependency('gudev-1.0', version: '>= 232', required: false)
+
@@ -89,17 +95,22 @@ else # PAM
else libpam_dep = cc.find_library('pam')
# what to do, what to do, this is wrong, but this just sets the pam_extensions_supported = cc.has_header_symbol(
# defaults, perhaps this user is cross compiling or some such @@ -123,23 +129,29 @@ endif
- x_path = '/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin' have_xdmcp = false
- x_bin = '/usr/bin/X'
+ x_path = '/usr/local/bin/X11:/usr/local/bin:/opt/X11R6/bin'
+ x_bin = '/usr/local/bin/X'
endif
xdmcp_dep = cc.find_library('Xdmcp', required: get_option('xdmcp'))
if xdmcp_dep.found() and get_option('tcp-wrappers')
libwrap_dep = cc.find_library('wrap')
endif endif
# systemd # systemd
-systemd_dep = dependency('systemd') -logind_provider = get_option('logind-provider')
-libsystemd_dep = dependency('libsystemd') -systemd_dep = dependency('systemd', required: false)
-if meson.version().version_compare('>= 0.53') -if logind_provider == 'systemd'
- libsystemd_dep = dependency('libsystemd')
- logind_dep = libsystemd_dep
- systemd_multiseat_x = find_program('systemd-multi-seat-x',
- required: false,
- dirs: [
- systemd_dep.get_variable(pkgconfig: 'systemdutildir'),
- '/lib/systemd',
- '/usr/lib/systemd',
- ])
- systemd_x_server = systemd_multiseat_x.found()? systemd_multiseat_x.path() : '/lib/systemd/systemd-multi-seat-x'
+if host_machine.system() == 'linux' +if host_machine.system() == 'linux'
+ systemd_dep = dependency('systemd') + logind_provider = get_option('logind-provider')
+ libsystemd_dep = dependency('libsystemd') + systemd_dep = dependency('systemd', required: false)
+else + if logind_provider == 'systemd'
+ systemd_dep = declare_dependency() + libsystemd_dep = dependency('libsystemd')
+ libsystemd_dep = declare_dependency() + logind_dep = libsystemd_dep
+ systemd_multiseat_x = find_program('systemd-multi-seat-x',
+ required: false,
+ dirs: [
+ systemd_dep.get_variable(pkgconfig: 'systemdutildir'),
+ '/lib/systemd',
+ '/usr/lib/systemd',
+ ])
+ systemd_x_server = systemd_multiseat_x.found()? systemd_multiseat_x.path() : '/lib/systemd/systemd-multi-seat-x'
+ else
+ elogind_dep = dependency('libelogind')
+ logind_dep = elogind_dep
+ systemd_x_server = 'disabled'
+ endif
else
- elogind_dep = dependency('libelogind')
- logind_dep = elogind_dep
- systemd_x_server = 'disabled'
+ systemd_dep = dependency('libconsolekit')
+ logind_dep = dependency('libconsolekit')
+ systemd_x_server = '/lib/systemd/systemd-multi-seat-x'
endif
# Plymouth
plymouth_dep = dependency('ply-boot-client', required: get_option('plymouth'))
@@ -292,7 +304,10 @@ conf.set_quoted('X_PATH', x_path)
conf.set('WITH_PLYMOUTH', plymouth_dep.found())
conf.set_quoted('X_SERVER', x_bin)
conf.set_quoted('X_PATH', x_path)
-conf.set('HAVE_UDEV', gudev_dep.found())
+# Avoid build failure when libgudev is installed
+if host_machine.system() == 'linux'
+ conf.set('HAVE_UDEV', gudev_dep.found())
+endif +endif
+if host_machine.system() == 'linux' conf.set('HAVE_UT_UT_HOST', utmp_has_host_field)
systemd_multiseat_x = find_program('systemd-multi-seat-x', conf.set('HAVE_UT_UT_PID', utmp_has_pid_field)
required: false, conf.set('HAVE_UT_UT_ID', utmp_has_id_field)
dirs: [ @@ -304,6 +319,7 @@ conf.set('ENABLE_IPV6', get_option('ipv6'))
@@ -257,6 +268,7 @@ conf.set('ENABLE_IPV6', get_option('ipv6'))
conf.set('HAVE_UT_UT_TV', utmp_has_tv_field) conf.set('HAVE_UT_UT_TV', utmp_has_tv_field)
conf.set('HAVE_UT_UT_SYSLEN', utmp_has_syslen_field) conf.set('HAVE_UT_UT_SYSLEN', utmp_has_syslen_field)
conf.set('ENABLE_IPV6', get_option('ipv6')) conf.set('ENABLE_IPV6', get_option('ipv6'))

View File

@ -26,8 +26,6 @@ POST-INSTALL)
${MKDIR} -p ${PKG_PREFIX}/etc/gdm/Sessions ${MKDIR} -p ${PKG_PREFIX}/etc/gdm/Sessions
${MKDIR} -p ${PKG_PREFIX}/etc/dm/Sessions ${MKDIR} -p ${PKG_PREFIX}/etc/dm/Sessions
${CHOWN} -R ${USER}:${GROUP} ${PKG_PREFIX}/etc/gdm/home
exit 0 exit 0
;; ;;
esac esac

View File

@ -14,7 +14,7 @@ EOM
To really remove the gdm port, please remove the following To really remove the gdm port, please remove the following
directories manualy: directories manualy:
/var/cache/gdm /var/gdm /var/log/gdm and /var/run/gdm /var/cache/gdm /var/log/gdm and /var/run/gdm
EOM EOM
} }

View File

@ -1,4 +1,4 @@
bin/gdm-screenshot bin/gdm-config
bin/gdmflexiserver bin/gdmflexiserver
@sample etc/dbus-1/system.d/gdm.conf.sample @sample etc/dbus-1/system.d/gdm.conf.sample
@sample %%ETCDIR%%/Init/Default.sample @sample %%ETCDIR%%/Init/Default.sample
@ -7,7 +7,6 @@ bin/gdmflexiserver
@sample %%ETCDIR%%/PreSession/Default.sample @sample %%ETCDIR%%/PreSession/Default.sample
@sample %%ETCDIR%%/Xsession.sample @sample %%ETCDIR%%/Xsession.sample
@sample %%ETCDIR%%/custom.conf.sample @sample %%ETCDIR%%/custom.conf.sample
@sample %%ETCDIR%%/home/.pulse/client.conf.sample
@sample %%ETCDIR%%/locale.conf.sample @sample %%ETCDIR%%/locale.conf.sample
@sample etc/pam.d/gdm-autologin.sample @sample etc/pam.d/gdm-autologin.sample
@sample etc/pam.d/gdm-launch-environment.sample @sample etc/pam.d/gdm-launch-environment.sample
@ -21,6 +20,7 @@ lib/libgdm.so
lib/libgdm.so.1 lib/libgdm.so.1
lib/libgdm.so.1.0.0 lib/libgdm.so.1.0.0
lib/security/pam_gdm.so lib/security/pam_gdm.so
lib/udev/rules.d/61-gdm.rules
libdata/pkgconfig/gdm.pc libdata/pkgconfig/gdm.pc
libexec/gdm-host-chooser libexec/gdm-host-chooser
libexec/gdm-runtime-config libexec/gdm-runtime-config
@ -59,14 +59,20 @@ share/help/fr/gdm/index.docbook
share/help/fr/gdm/legal.xml share/help/fr/gdm/legal.xml
share/help/gl/gdm/index.docbook share/help/gl/gdm/index.docbook
share/help/gl/gdm/legal.xml share/help/gl/gdm/legal.xml
share/help/hr/gdm/index.docbook
share/help/hr/gdm/legal.xml
share/help/hu/gdm/index.docbook share/help/hu/gdm/index.docbook
share/help/hu/gdm/legal.xml share/help/hu/gdm/legal.xml
share/help/id/gdm/index.docbook share/help/id/gdm/index.docbook
share/help/id/gdm/legal.xml share/help/id/gdm/legal.xml
share/help/it/gdm/index.docbook share/help/it/gdm/index.docbook
share/help/it/gdm/legal.xml share/help/it/gdm/legal.xml
share/help/ka/gdm/index.docbook
share/help/ka/gdm/legal.xml
share/help/ko/gdm/index.docbook share/help/ko/gdm/index.docbook
share/help/ko/gdm/legal.xml share/help/ko/gdm/legal.xml
share/help/nl/gdm/index.docbook
share/help/nl/gdm/legal.xml
share/help/oc/gdm/index.docbook share/help/oc/gdm/index.docbook
share/help/oc/gdm/legal.xml share/help/oc/gdm/legal.xml
share/help/pt_BR/gdm/index.docbook share/help/pt_BR/gdm/index.docbook
@ -87,6 +93,7 @@ share/help/uk/gdm/index.docbook
share/help/uk/gdm/legal.xml share/help/uk/gdm/legal.xml
share/help/zh_CN/gdm/index.docbook share/help/zh_CN/gdm/index.docbook
share/help/zh_CN/gdm/legal.xml share/help/zh_CN/gdm/legal.xml
share/locale/ab/LC_MESSAGES/gdm.mo
share/locale/af/LC_MESSAGES/gdm.mo share/locale/af/LC_MESSAGES/gdm.mo
share/locale/am/LC_MESSAGES/gdm.mo share/locale/am/LC_MESSAGES/gdm.mo
share/locale/an/LC_MESSAGES/gdm.mo share/locale/an/LC_MESSAGES/gdm.mo
@ -200,15 +207,7 @@ share/locale/zu/LC_MESSAGES/gdm.mo
@postexec mkdir -p %D/share/xsessions @postexec mkdir -p %D/share/xsessions
@postexec dconf update @postexec dconf update
@postunexec dconf update @postunexec dconf update
@mode 1775 @dir /var/cache/gdm
@dir etc/gdm/home
@mode
@dir %%ETCDIR%%/Sessions
@dir etc/dm
@dir etc/dm/Sessions
@dir share/xsessions
@dir /var/cache/gdm/
@dir /var/run/gdm/greeter @dir /var/run/gdm/greeter
@dir /var/run/gdm/ @dir /var/run/gdm
@dir /var/log/gdm/ @dir /var/log/gdm
@postunexec rm -fr /var/gdm