x11/gdm: udpate to 47.0
PR: 286697
This commit is contained in:
parent
bd9b7ae943
commit
3ed44d9da9
110
x11/gdm/Makefile
110
x11/gdm/Makefile
@ -1,59 +1,55 @@
|
||||
PORTNAME= gdm
|
||||
PORTVERSION= 42.0
|
||||
PORTREVISION= 7
|
||||
PORTVERSION= 47.0
|
||||
CATEGORIES= x11 gnome
|
||||
MASTER_SITES= GNOME
|
||||
DIST_SUBDIR= gnome
|
||||
|
||||
MAINTAINER= gnome@FreeBSD.org
|
||||
COMMENT= GNOME display manager
|
||||
WWW= https://www.gnome.org/projects/gdm/
|
||||
WWW= https://gitlab.gnome.org/GNOME/gdm
|
||||
|
||||
LICENSE= GPLv2
|
||||
LICENSE= GPLv2+
|
||||
LICENSE_FILE= ${WRKSRC}/COPYING
|
||||
|
||||
BUILD_DEPENDS= iso-codes>=0:misc/iso-codes \
|
||||
itstool:textproc/itstool \
|
||||
zenity>=3.0.0:x11/zenity
|
||||
PORTSCOUT= limit:^47\.
|
||||
|
||||
BUILD_DEPENDS= iso-codes>0:misc/iso-codes \
|
||||
xorg-server>0:x11-servers/xorg-server \
|
||||
itstool:textproc/itstool
|
||||
LIB_DEPENDS= libaccountsservice.so:sysutils/accountsservice \
|
||||
libcanberra-gtk3.so:audio/libcanberra-gtk3 \
|
||||
libcanberra.so:audio/libcanberra \
|
||||
libck-connector.so:sysutils/consolekit2 \
|
||||
libfribidi.so:converters/fribidi
|
||||
RUN_DEPENDS= at-spi2-core>=0:accessibility/at-spi2-core \
|
||||
gnome-icon-theme-symbolic>=0:x11-themes/gnome-icon-theme-symbolic \
|
||||
gnome-keyring-3:security/gnome-keyring \
|
||||
gnome-session>=3.0.0:x11/gnome-session \
|
||||
gnome-settings-daemon>=3.0.0:sysutils/gnome-settings-daemon \
|
||||
iso-codes>=0:misc/iso-codes \
|
||||
polkit-gnome>=0.105:sysutils/polkit-gnome \
|
||||
zenity>=3.0.0:x11/zenity
|
||||
libjson-glib-1.0.so:devel/json-glib
|
||||
RUN_DEPENDS= gnome-keyring-3:security/gnome-keyring \
|
||||
gnome-session>0:x11/gnome-session \
|
||||
gnome-settings-daemon>0:sysutils/gnome-settings-daemon \
|
||||
iso-codes>0:misc/iso-codes
|
||||
# used in scripts
|
||||
RUN_DEPENDS+= setxkbmap:x11/setxkbmap \
|
||||
xhost:x11/xhost \
|
||||
xmodmap:x11/xmodmap \
|
||||
xrdb:x11/xrdb \
|
||||
xsetroot:x11/xsetroot \
|
||||
xterm:x11/xterm
|
||||
xterm:x11/xterm \
|
||||
zenity:x11/zenity
|
||||
|
||||
USERS= gdm
|
||||
GROUPS= gdm video
|
||||
|
||||
PORTSCOUT= limitw:1,even
|
||||
|
||||
USES= cpe gettext gnome localbase:ldflags meson pathfix \
|
||||
pkgconfig tar:xz xorg
|
||||
CPE_VENDOR= gnome
|
||||
CPE_PRODUCT= gnome_display_manager
|
||||
USE_GNOME= cairo dconf gtk30 intltool introspection
|
||||
USE_GNOME= atk dconf gdkpixbuf glib20 gtk30 introspection:build
|
||||
USE_LDCONFIG= yes
|
||||
USE_XORG= x11 xau xcb xdmcp xorgproto
|
||||
USE_RC_SUBR= gdm
|
||||
USE_GNOME_SUBR= yes
|
||||
GLIB_SCHEMAS= org.gnome.login-screen.gschema.xml
|
||||
GLIB_SCHEMAS= org.gnome.login-screen.gschema.xml \
|
||||
15_org.gnome.login-screen.gschema.override
|
||||
MESON_ARGS= -Dat-spi-registryd-dir=${PREFIX}/libexec \
|
||||
-Dcustom-conf=${PREFIX}/etc/gdm/custom.conf \
|
||||
-Ddbus-sys=${PREFIX}/etc/dbus-1/system.d \
|
||||
-Ddefault-pam-config=none \
|
||||
-Ddmconfdir=${PREFIX}/share/xsessions \
|
||||
-Dgdm-xsession=true \
|
||||
@ -61,24 +57,21 @@ MESON_ARGS= -Dat-spi-registryd-dir=${PREFIX}/libexec \
|
||||
-Dinitial-vt=09 \
|
||||
-Dlang-file=${PREFIX}/etc/gdm/locale.conf \
|
||||
-Dlibaudit=disabled \
|
||||
-Dlog-dir=/var/log/gdm \
|
||||
-Dpid-file=/var/run/gdm.pid \
|
||||
-Dplymouth=disabled \
|
||||
-Dscreenshot-dir=/var/run/gdm/greeter \
|
||||
-Dselinux=disabled \
|
||||
-Dsysconfsubdir=gdm \
|
||||
-Dsystemd-journal=false \
|
||||
-Duser-display-server=false \
|
||||
-Dudev-dir=${PREFIX}/lib/udev/rules.d \
|
||||
-Duser=gdm \
|
||||
-Dwayland-support=false \
|
||||
-Dworking-dir=/var/db/gdm \
|
||||
-Dworking-dir=/var/cache/gdm \
|
||||
-Dxauth-dir=/var/run/gdm
|
||||
|
||||
# this is a hack until we can get our own pam dir and dir in order.
|
||||
CPPFLAGS+= -DHAS_SA_LEN -DWITH_CONSOLE_KIT=1
|
||||
INSTALL_TARGET= install-strip
|
||||
|
||||
SUB_FILES+= client.conf gdm-autologin gdm-launch-environment gdm-password \
|
||||
SUB_FILES+= gdm-autologin gdm-launch-environment gdm-password \
|
||||
locale.conf
|
||||
|
||||
GDMDIR?= ${PREFIX}/etc/gdm
|
||||
@ -92,48 +85,33 @@ IPV6_MESON_TRUE= ipv6
|
||||
.include <bsd.port.options.mk>
|
||||
|
||||
post-patch:
|
||||
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
|
||||
-e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
|
||||
-e 's|/bin/bash|/bin/sh|g' \
|
||||
${WRKSRC}/daemon/gdm-session-worker.c
|
||||
@${REINPLACE_CMD} -e 's|/usr/X11R6|${LOCALBASE}|g' \
|
||||
-e 's|/usr/bin/X|${LOCALBASE}/bin/X|g' \
|
||||
-e 's|/usr/bin/Xorg|${LOCALBASE}/bin/Xorg|g' \
|
||||
${WRKSRC}/meson.build ${WRKSRC}/daemon/*.c ${WRKSRC}/po/*.po
|
||||
${WRKSRC}/meson.build
|
||||
@${REINPLACE_CMD} -e 's|/usr/bin/|${LOCALBASE}/bin/|g' \
|
||||
${WRKSRC}/daemon/gdm-local-display-factory.c
|
||||
@${REINPLACE_CMD} -e 's|/at-spi-registryd|/at-spi2-registryd|g' \
|
||||
${WRKSRC}/chooser/gdm-host-chooser.c \
|
||||
${WRKSRC}/chooser/chooser-main.c
|
||||
@${REINPLACE_CMD} -e 's|/etc/X11|${LOCALBASE}/etc/X11|g' \
|
||||
${WRKSRC}/data/Init.in \
|
||||
${WRKSRC}/data/PostLogin \
|
||||
${WRKSRC}/data/PostSession.in \
|
||||
${WRKSRC}/data/PreSession.in \
|
||||
${WRKSRC}/data/Xsession.in
|
||||
@${RM} ${WRKSRC}/data/applications/gdm-simple-greeter.desktop \
|
||||
${WRKSRC}/data/applications/gdm-simple-greeter.desktop.in \
|
||||
${WRKSRC}/data/applications/gnome-shell.desktop \
|
||||
|
||||
# Force X11 session (support of Wayland is not yet complete!)
|
||||
@${REINPLACE_CMD} -e 's|wayland|xorg|' \
|
||||
${WRKSRC}/data/gdm.schemas.in
|
||||
|
||||
pre-install:
|
||||
${MKDIR} ${STAGEDIR}/var/cache/gdm
|
||||
${MKDIR} ${STAGEDIR}/var/log/gdm
|
||||
${MKDIR} ${STAGEDIR}/var/run/gdm/greeter
|
||||
|
||||
#${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home
|
||||
#${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse
|
||||
#${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home/.config
|
||||
|
||||
post-install:
|
||||
${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 \
|
||||
${STAGEDIR}${PREFIX}/etc/pam.d/gdm-autologin.sample
|
||||
${INSTALL_DATA} ${WRKDIR}/gdm-launch-environment \
|
||||
@ -141,19 +119,13 @@ post-install:
|
||||
${INSTALL_DATA} ${WRKDIR}/gdm-password \
|
||||
${STAGEDIR}${PREFIX}/etc/pam.d/gdm-password.sample
|
||||
|
||||
${INSTALL_DATA} ${WRKDIR}/client.conf \
|
||||
${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/client.conf.sample
|
||||
#${INSTALL_DATA} ${WRKDIR}/client.conf \
|
||||
# ${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/client.conf.sample
|
||||
|
||||
${INSTALL_DATA} ${WRKDIR}/locale.conf \
|
||||
${STAGEDIR}${PREFIX}/etc/gdm/locale.conf.sample
|
||||
|
||||
${MKDIR} ${STAGEDIR}/var/cache/gdm
|
||||
${MKDIR} ${STAGEDIR}/var/log/gdm
|
||||
${MKDIR} ${STAGEDIR}/var/run/gdm
|
||||
${MKDIR} ${STAGEDIR}/var/run/gdm/greeter
|
||||
|
||||
@${RM} ${STAGEDIR}${PREFIX}/lib/udev/rules.d/61-gdm.rules
|
||||
@${RMDIR} ${STAGEDIR}${PREFIX}/lib/udev/rules.d
|
||||
@${RMDIR} ${STAGEDIR}${PREFIX}/lib/udev
|
||||
${INSTALL_DATA} ${FILESDIR}/15_org.gnome.login-screen.gschema.override \
|
||||
${STAGEDIR}${PREFIX}/share/glib-2.0/schemas/
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
TIMESTAMP = 1647984111
|
||||
SHA256 (gnome/gdm-42.0.tar.xz) = a328ac976937bec179971ff07829a1246b98ce724181c128ae32a0ba47ad3855
|
||||
SIZE (gnome/gdm-42.0.tar.xz) = 811200
|
||||
TIMESTAMP = 1744645483
|
||||
SHA256 (gnome/gdm-47.0.tar.xz) = c5858326bfbcc8ace581352e2be44622dc0e9e5c2801c8690fd2eed502607f84
|
||||
SIZE (gnome/gdm-47.0.tar.xz) = 936172
|
||||
|
||||
3
x11/gdm/files/15_org.gnome.login-screen.gschema.override
Normal file
3
x11/gdm/files/15_org.gnome.login-screen.gschema.override
Normal file
@ -0,0 +1,3 @@
|
||||
[org.gnome.login-screen]
|
||||
enable-fingerprint-authentication=false
|
||||
enable-smartcard-authentication=false
|
||||
@ -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)
|
||||
@ -1,2 +0,0 @@
|
||||
autospawn = no
|
||||
daemon-binary = /usr/bin/true
|
||||
@ -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}
|
||||
"
|
||||
+
|
||||
@ -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 \
|
||||
@ -4,8 +4,8 @@
|
||||
|
||||
auth required pam_permit.so
|
||||
|
||||
auth optional /usr/local/lib/pam_ck_connector.so
|
||||
auth optional /usr/local/lib/pam_gnome_keyring.so
|
||||
auth optional %%PREFIX%%/lib/pam_ck_connector.so
|
||||
auth optional %%PREFIX%%/lib/pam_gnome_keyring.so
|
||||
|
||||
account required pam_nologin.so
|
||||
account include system
|
||||
@ -13,4 +13,4 @@ account include system
|
||||
password include system
|
||||
|
||||
session include system
|
||||
session optional /usr/local/lib/pam_gnome_keyring.so auto_start
|
||||
session optional %%PREFIX%%/lib/pam_gnome_keyring.so auto_start
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
|
||||
auth include system
|
||||
|
||||
auth optional /usr/local/lib/pam_ck_connector.so
|
||||
auth optional /usr/local/lib/pam_gnome_keyring.so
|
||||
auth optional %%PREFIX%%/lib/pam_ck_connector.so
|
||||
auth optional %%PREFIX%%/lib/pam_gnome_keyring.so
|
||||
|
||||
account required pam_nologin.so
|
||||
account include system
|
||||
@ -13,4 +13,4 @@ account include system
|
||||
password include system
|
||||
|
||||
session include system
|
||||
session optional /usr/local/lib/pam_gnome_keyring.so auto_start
|
||||
session optional %%PREFIX%%/lib/pam_gnome_keyring.so auto_start
|
||||
|
||||
@ -32,9 +32,9 @@ gdm_start()
|
||||
fi
|
||||
echo "Starting ${name}."
|
||||
|
||||
# we need to remove locking files under $gdm_home/.cache/gnome-shell/
|
||||
# we need to remove locking files under /var/cache/gdm/.cache/gnome-shell/
|
||||
# until XDG_RUNTIME_DIR can be set and used
|
||||
rm -fr %%PREFIX%%/etc/gdm/home/.cache/gnome-shell/runtime-state*
|
||||
rm -fr /var/cache/gdm/.cache/gnome-shell/runtime-state*
|
||||
|
||||
# make sure there is no pam configuration for gdm service in base system
|
||||
if ! checkyesno gdm_preserve_base_pam_conf && [ -f /etc/pam.d/gdm ]; then
|
||||
|
||||
13
x11/gdm/files/patch-build-aux_find-x-server.sh
Normal file
13
x11/gdm/files/patch-build-aux_find-x-server.sh
Normal 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
|
||||
@ -1,488 +1,43 @@
|
||||
--- common/gdm-common.c.orig 2022-01-12 14:15:56 UTC
|
||||
--- common/gdm-common.c.orig 2023-09-14 15:27:04 UTC
|
||||
+++ common/gdm-common.c
|
||||
@@ -36,7 +36,9 @@
|
||||
@@ -36,8 +36,13 @@
|
||||
|
||||
#include "gdm-common.h"
|
||||
|
||||
+#ifdef WITH_SYSTEMD
|
||||
+#if defined(WITH_SYSTEMD)
|
||||
#include <systemd/sd-login.h>
|
||||
+#elif defined(WITH_CONSOLE_KIT)
|
||||
+#include <ConsoleKit/sd-login.h>
|
||||
+#endif
|
||||
|
||||
+
|
||||
#define GDM_DBUS_NAME "org.gnome.DisplayManager"
|
||||
#define GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH "/org/gnome/DisplayManager/LocalDisplayFactory"
|
||||
@@ -352,6 +354,412 @@ create_transient_display (GDBusConnection *connection,
|
||||
return TRUE;
|
||||
}
|
||||
#define GDM_DBUS_LOCAL_DISPLAY_FACTORY_INTERFACE "org.gnome.DisplayManager.LocalDisplayFactory"
|
||||
@@ -368,15 +373,22 @@ gdm_activate_session_by_id (GDBusConnection *connectio
|
||||
g_return_val_if_fail (session_id != NULL, FALSE);
|
||||
|
||||
+#ifdef WITH_CONSOLE_KIT
|
||||
+int
|
||||
+sd_seat_can_graphical(const char *seat)
|
||||
+{
|
||||
+ // XXX
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+sd_session_get_service(const char *session,
|
||||
+ char **service)
|
||||
+{
|
||||
+ GError *local_error = NULL;
|
||||
+ GVariant *reply;
|
||||
+ const char *value;
|
||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
||||
+
|
||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
||||
+ return -ENXIO;
|
||||
+
|
||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
||||
+ if (connection == NULL) {
|
||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ reply = g_dbus_connection_call_sync (connection,
|
||||
+ CK_NAME,
|
||||
+ session,
|
||||
+ CK_SESSION_INTERFACE,
|
||||
+ "GetSessionService",
|
||||
+ NULL,
|
||||
+ G_VARIANT_TYPE ("(s)"),
|
||||
+ G_DBUS_CALL_FLAGS_NONE,
|
||||
+ -1,
|
||||
+ NULL, &local_error);
|
||||
+ if (reply == NULL) {
|
||||
+ g_warning ("Unable to determine session service: %s", local_error ? local_error->message : "");
|
||||
+ g_error_free (local_error);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ g_variant_get (reply, "(s)", &value);
|
||||
+ g_variant_unref (reply);
|
||||
+
|
||||
+ *service = g_strdup (value);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+sd_session_get_uid(const char *session,
|
||||
+ uid_t *uid)
|
||||
+{
|
||||
+ GError *local_error = NULL;
|
||||
+ GVariant *reply;
|
||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
||||
+ uid_t local_uid;
|
||||
+
|
||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
||||
+ return -ENXIO;
|
||||
+
|
||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
||||
+ if (connection == NULL) {
|
||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ reply = g_dbus_connection_call_sync (connection,
|
||||
+ CK_NAME,
|
||||
+ session,
|
||||
+ CK_SESSION_INTERFACE,
|
||||
+ "GetUnixUser",
|
||||
+ NULL,
|
||||
+ G_VARIANT_TYPE ("(u)"),
|
||||
+ G_DBUS_CALL_FLAGS_NONE,
|
||||
+ -1,
|
||||
+ NULL, &local_error);
|
||||
+ if (reply == NULL) {
|
||||
+ g_warning ("Unable to get session for unix service: %s", local_error ? local_error->message : "");
|
||||
+ g_error_free (local_error);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ g_variant_get (reply, "(u)", &local_uid);
|
||||
+ g_variant_unref (reply);
|
||||
+
|
||||
+ *uid = local_uid;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+sd_seat_get_sessions(const char *seat,
|
||||
+ char ***sessions,
|
||||
+ uid_t **uid,
|
||||
+ unsigned int *n_uids)
|
||||
+{
|
||||
+ GError *local_error = NULL;
|
||||
+ GVariant *reply;
|
||||
+ GVariantIter *iter;
|
||||
+ gchar *value = NULL;
|
||||
+ glong nchild;
|
||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
||||
+
|
||||
+ if (seat == NULL || !g_variant_is_object_path (seat))
|
||||
+ return -ENXIO;
|
||||
+
|
||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
||||
+ if (connection == NULL) {
|
||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ reply = g_dbus_connection_call_sync (connection,
|
||||
+ CK_NAME,
|
||||
+ seat,
|
||||
+ CK_SEAT_INTERFACE,
|
||||
+ "GetSessions",
|
||||
+ NULL,
|
||||
+ G_VARIANT_TYPE ("(ao)"),
|
||||
+ G_DBUS_CALL_FLAGS_NONE,
|
||||
+ -1,
|
||||
+ NULL, &local_error);
|
||||
+ if (reply == NULL) {
|
||||
+ g_warning ("Unable to list sessions: %s", local_error->message);
|
||||
+ g_error_free (local_error);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ g_variant_get (reply, "(ao)", &iter);
|
||||
+ g_variant_unref (reply);
|
||||
+
|
||||
+ nchild = g_variant_iter_n_children(iter);
|
||||
+ *sessions = calloc(nchild, sizeof(gchar *));
|
||||
+ if (*sessions == NULL) {
|
||||
+ g_warning ("Unable to allocate memory for sessions array: %s", g_strerror(errno));
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ while (g_variant_iter_next (iter, "o", &value)) {
|
||||
+ (*sessions)[nchild - 1] = g_strdup(value);
|
||||
+ }
|
||||
+ (*sessions)[nchild] = NULL;
|
||||
+
|
||||
+ g_variant_iter_free (iter);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+sd_session_get_seat(const char *session,
|
||||
+ char **seat)
|
||||
+{
|
||||
+ GError *local_error = NULL;
|
||||
+ GVariant *reply;
|
||||
+ const char *value;
|
||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
||||
+
|
||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
||||
+ return -ENXIO;
|
||||
+
|
||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
||||
+ if (connection == NULL) {
|
||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ reply = g_dbus_connection_call_sync (connection,
|
||||
+ CK_NAME,
|
||||
+ session,
|
||||
+ CK_SESSION_INTERFACE,
|
||||
+ "GetSeatId",
|
||||
+ NULL, /* parameters */
|
||||
+ G_VARIANT_TYPE ("(o)"),
|
||||
+ G_DBUS_CALL_FLAGS_NONE,
|
||||
+ -1,
|
||||
+ NULL, &local_error);
|
||||
+ if (reply == NULL) {
|
||||
+ g_warning ("Unable to determine seat: %s", local_error ? local_error->message : "");
|
||||
+ g_error_free (local_error);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ g_variant_get (reply, "(o)", &value);
|
||||
+ g_variant_unref (reply);
|
||||
+
|
||||
+ *seat = g_strdup(value);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+sd_pid_get_session(pid_t pid, char **session)
|
||||
+{
|
||||
+ GError *local_error = NULL;
|
||||
+ GVariant *reply;
|
||||
+ const char *value;
|
||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
||||
+
|
||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
||||
+ if (connection == NULL) {
|
||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ reply = g_dbus_connection_call_sync (connection,
|
||||
+ CK_NAME,
|
||||
+ CK_MANAGER_PATH,
|
||||
+ CK_MANAGER_INTERFACE,
|
||||
+ "GetSessionForUnixProcess",
|
||||
+ g_variant_new ("(u)", pid),
|
||||
+ G_VARIANT_TYPE ("(o)"),
|
||||
+ G_DBUS_CALL_FLAGS_NONE,
|
||||
+ -1,
|
||||
+ NULL, &local_error);
|
||||
+ if (reply == NULL) {
|
||||
+ g_warning ("Unable to list sessions: %s", local_error ? local_error->message : "");
|
||||
+ g_error_free (local_error);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ g_variant_get (reply, "(o)", &value);
|
||||
+ g_variant_unref (reply);
|
||||
+
|
||||
+ *session = g_strdup (value);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+sd_session_get_type(const char *session, char **type)
|
||||
+{
|
||||
+ GError *local_error = NULL;
|
||||
+ GVariant *reply;
|
||||
+ const char *value;
|
||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
||||
+
|
||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
||||
+ return -ENXIO;
|
||||
+
|
||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
||||
+ if (connection == NULL) {
|
||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ reply = g_dbus_connection_call_sync (connection,
|
||||
+ CK_NAME,
|
||||
+ session,
|
||||
+ CK_SESSION_INTERFACE,
|
||||
+ "GetSessionType",
|
||||
+ NULL,
|
||||
+ G_VARIANT_TYPE ("(s)"),
|
||||
+ G_DBUS_CALL_FLAGS_NONE,
|
||||
+ -1,
|
||||
+ NULL, &local_error);
|
||||
+ if (reply == NULL) {
|
||||
+ g_warning ("Unable to determine session type: %s", local_error ? local_error->message : "");
|
||||
+ g_error_free (local_error);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ g_variant_get (reply, "(s)", &value);
|
||||
+ g_variant_unref (reply);
|
||||
+
|
||||
+ *type = g_strdup (value);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+sd_session_get_class(const char *session, char **class)
|
||||
+{
|
||||
+ GError *local_error = NULL;
|
||||
+ GVariant *reply;
|
||||
+ const gchar *value;
|
||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
||||
+
|
||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
||||
+ return -ENXIO;
|
||||
+
|
||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
||||
+ if (connection == NULL) {
|
||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ reply = g_dbus_connection_call_sync (connection,
|
||||
+ CK_NAME,
|
||||
+ session,
|
||||
+ CK_SESSION_INTERFACE,
|
||||
+ "GetSessionClass",
|
||||
+ NULL,
|
||||
+ G_VARIANT_TYPE ("(s)"),
|
||||
+ G_DBUS_CALL_FLAGS_NONE,
|
||||
+ -1,
|
||||
+ NULL, &local_error);
|
||||
+ if (reply == NULL) {
|
||||
+ g_warning ("Unable to determine session class: %s", local_error ? local_error->message : "");
|
||||
+ g_error_free (local_error);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ g_variant_get (reply, "(s)", &value);
|
||||
+ g_variant_unref (reply);
|
||||
+
|
||||
+ *class = g_strdup(value);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+sd_session_get_state(const char *session, char **state)
|
||||
+{
|
||||
+ GError *local_error = NULL;
|
||||
+ GVariant *reply;
|
||||
+ const char *value;
|
||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
||||
+
|
||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
||||
+ return -ENXIO;
|
||||
+
|
||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
||||
+ if (connection == NULL) {
|
||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ reply = g_dbus_connection_call_sync (connection,
|
||||
+ CK_NAME,
|
||||
+ session,
|
||||
+ CK_SESSION_INTERFACE,
|
||||
+ "GetSessionState",
|
||||
+ NULL,
|
||||
+ G_VARIANT_TYPE ("(s)"),
|
||||
+ G_DBUS_CALL_FLAGS_NONE,
|
||||
+ -1,
|
||||
+ NULL, &local_error);
|
||||
+ if (reply == NULL) {
|
||||
+ g_warning ("Unable to determine session state: %s", local_error ? local_error->message : "");
|
||||
+ g_error_free (local_error);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ g_variant_get (reply, "(s)", &value);
|
||||
+ g_variant_unref (reply);
|
||||
+
|
||||
+ *state = g_strdup (value);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+sd_uid_get_sessions(uid_t uid, int require_active, char ***sessions)
|
||||
+{
|
||||
+ GError *local_error = NULL;
|
||||
+ GVariant *reply;
|
||||
+ GVariantIter *iter;
|
||||
+ gchar *value = NULL;
|
||||
+ glong nchild;
|
||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
||||
+
|
||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
||||
+ if (connection == NULL) {
|
||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
||||
+ return -ENXIO;
|
||||
+ }
|
||||
+
|
||||
+ reply = g_dbus_connection_call_sync (connection,
|
||||
+ CK_NAME,
|
||||
+ CK_MANAGER_PATH,
|
||||
+ CK_MANAGER_INTERFACE,
|
||||
+ "GetSessionsForUnixUser",
|
||||
+ g_variant_new ("(u)", uid),
|
||||
+ G_VARIANT_TYPE ("(ao)"),
|
||||
+ G_DBUS_CALL_FLAGS_NONE,
|
||||
+ -1,
|
||||
+ NULL, &local_error);
|
||||
+ 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,
|
||||
+#if defined(WITH_SYSTEMD)
|
||||
"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,
|
||||
-1,
|
||||
NULL, &local_error);
|
||||
+#elif defined(WITH_CONSOLE_KIT)
|
||||
+ gboolean ret;
|
||||
cancellable, &local_error);
|
||||
+
|
||||
+ 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) {
|
||||
+ 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_error_free (local_error);
|
||||
return FALSE;
|
||||
@@ -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,
|
||||
@@ -916,7 +928,9 @@ gdm_find_display_session (GPid pid,
|
||||
|
||||
return TRUE;
|
||||
} else {
|
||||
|
||||
@ -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
|
||||
@@ -29,6 +29,50 @@
|
||||
@@ -29,6 +29,17 @@
|
||||
|
||||
#define REGISTER_SESSION_TIMEOUT 10
|
||||
|
||||
+#if defined(WITH_SYSTEMD)
|
||||
+#define SEAT_ID "seat0"
|
||||
+#elif defined(WITH_CONSOLE_KIT)
|
||||
+#if defined(WITH_CONSOLE_KIT)
|
||||
+#define CK_NAME "org.freedesktop.ConsoleKit"
|
||||
+#define CK_PATH "/org/freedesktop/ConsoleKit"
|
||||
+#define CK_INTERFACE "org.freedesktop.ConsoleKit"
|
||||
@ -15,37 +13,6 @@
|
||||
+#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
|
||||
+#define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat"
|
||||
+#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
|
||||
+
|
||||
#define VE_IGNORE_EINTR(expr) \
|
||||
|
||||
@ -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
|
||||
@@ -30,7 +30,9 @@
|
||||
#include <unistd.h>
|
||||
|
||||
@ -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
|
||||
@@ -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);
|
||||
/* mode 00600 */
|
||||
errno = 0;
|
||||
- fd = g_open (auth_filename,
|
||||
- O_RDWR | O_CREAT | O_EXCL | O_BINARY,
|
||||
- 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,
|
||||
+ O_RDWR | O_CREAT | O_EXCL | O_BINARY,
|
||||
@ -22,15 +15,15 @@
|
||||
|
||||
if (fd < 0) {
|
||||
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
|
||||
*/
|
||||
- char localhost[HOST_NAME_MAX + 1] = "";
|
||||
+ char localhost[256] = "";
|
||||
+ char localhost[_POSIX_HOST_NAME_MAX + 1] = "";
|
||||
*family = FamilyLocal;
|
||||
- if (gethostname (localhost, HOST_NAME_MAX) == 0) {
|
||||
+ if (gethostname (localhost, 255) == 0) {
|
||||
+ if (gethostname (localhost, _POSIX_HOST_NAME_MAX) == 0) {
|
||||
*address = g_strdup (localhost);
|
||||
} else {
|
||||
*address = g_strdup ("localhost");
|
||||
|
||||
@ -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
|
||||
21
x11/gdm/files/patch-daemon_gdm-launch-environment.c
Normal file
21
x11/gdm/files/patch-daemon_gdm-launch-environment.c
Normal 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",
|
||||
@ -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
|
||||
@@ -29,10 +29,12 @@
|
||||
@@ -28,11 +28,15 @@
|
||||
#include <glib-object.h>
|
||||
#include <gio/gio.h>
|
||||
|
||||
+#ifdef WITH_SYSTEMD
|
||||
#ifdef HAVE_UDEV
|
||||
-#include <gudev/gudev.h>
|
||||
+#undef HAVE_UDEV
|
||||
#include <gudev/gudev.h>
|
||||
#endif
|
||||
|
||||
+#ifdef WITH_SYSTEMD
|
||||
#include <systemd/sd-login.h>
|
||||
+#elif defined(WITH_CONSOLE_KIT)
|
||||
+#include <ConsoleKit/sd-login.h>
|
||||
+#endif
|
||||
|
||||
#include "gdm-common.h"
|
||||
#include "gdm-manager.h"
|
||||
@@ -68,8 +70,10 @@ struct _GdmLocalDisplayFactory
|
||||
@@ -68,8 +72,10 @@ struct _GdmLocalDisplayFactory
|
||||
/* FIXME: this needs to be per seat? */
|
||||
guint num_failures;
|
||||
|
||||
@ -23,9 +25,9 @@
|
||||
guint seat_removed_id;
|
||||
+#endif
|
||||
guint seat_properties_changed_id;
|
||||
guint seat_attention_key;
|
||||
|
||||
gboolean seat0_has_platform_graphics;
|
||||
@@ -106,9 +110,11 @@ static gpointer local_display_factory_object = NULL;
|
||||
@@ -108,9 +114,11 @@ static gpointer local_display_factory_object = NULL;
|
||||
|
||||
static gboolean gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory);
|
||||
static gpointer local_display_factory_object = NULL;
|
||||
@ -37,27 +39,7 @@
|
||||
|
||||
G_DEFINE_TYPE (GdmLocalDisplayFactory, gdm_local_display_factory, GDM_TYPE_DISPLAY_FACTORY)
|
||||
|
||||
@@ -245,9 +251,9 @@ struct GdmDisplayServerConfiguration {
|
||||
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
|
||||
@@ -474,6 +482,7 @@ gdm_local_display_factory_create_transient_display (Gd
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -65,7 +47,7 @@
|
||||
static void
|
||||
finish_display_on_seat_if_waiting (GdmDisplayStore *display_store,
|
||||
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");
|
||||
}
|
||||
@ -73,51 +55,58 @@
|
||||
|
||||
static void
|
||||
on_display_status_changed (GdmDisplay *display,
|
||||
@@ -552,7 +559,7 @@ on_display_status_changed (GdmDisplay *dis
|
||||
* if there isn't one.
|
||||
@@ -560,7 +570,9 @@ on_display_status_changed (GdmDisplay *dis
|
||||
"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 &&
|
||||
- (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)) {
|
||||
+#endif
|
||||
/* reset num failures */
|
||||
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 };
|
||||
GdmDisplayStore *store;
|
||||
GdmDisplay *display = NULL;
|
||||
+#ifdef WITH_SYSTEMD
|
||||
g_autofree char *login_session_id = NULL;
|
||||
+#endif
|
||||
gboolean wayland_enabled = FALSE, xorg_enabled = FALSE;
|
||||
g_autofree gchar *preferred_display_server = NULL;
|
||||
gboolean falling_back = FALSE;
|
||||
@@ -781,7 +790,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
|
||||
seat_supports_graphics = FALSE;
|
||||
}
|
||||
gboolean waiting_on_udev = FALSE;
|
||||
|
||||
- if (g_strcmp0 (seat_id, "seat0") == 0) {
|
||||
+ 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;
|
||||
}
|
||||
g_debug ("GdmLocalDisplayFactory: display for seat %s requested", seat_id);
|
||||
|
||||
+#ifdef WITH_SYSTEMD
|
||||
/* If we already have a login window, switch to it */
|
||||
if (gdm_get_login_window_session_id (seat_id, &login_session_id)) {
|
||||
GdmDisplay *display;
|
||||
@@ -886,6 +896,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
|
||||
@@ -843,6 +862,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
|
||||
return;
|
||||
}
|
||||
}
|
||||
+#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;
|
||||
}
|
||||
|
||||
@ -125,7 +114,7 @@
|
||||
static void
|
||||
delete_display (GdmLocalDisplayFactory *factory,
|
||||
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));
|
||||
gdm_display_store_foreach_remove (store, lookup_by_seat_id, (gpointer) seat_id);
|
||||
}
|
||||
@ -133,16 +122,15 @@
|
||||
|
||||
static gboolean
|
||||
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;
|
||||
|
||||
g_debug ("GdmLocalDisplayFactory: enumerating seats from logind");
|
||||
+
|
||||
+#ifdef WITH_SYSTEMD
|
||||
result = g_dbus_connection_call_sync (factory->connection,
|
||||
"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,
|
||||
-1,
|
||||
NULL, &error);
|
||||
@ -161,15 +149,15 @@
|
||||
|
||||
if (!result) {
|
||||
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;
|
||||
}
|
||||
|
||||
+#ifdef WITH_SYSTEMD
|
||||
static void
|
||||
on_seat_new (GDBusConnection *connection,
|
||||
const gchar *sender_name,
|
||||
@@ -1093,6 +1121,7 @@ lookup_by_tty (const char *id,
|
||||
on_seat_activate_greeter (GDBusConnection *connection,
|
||||
const gchar *sender_name,
|
||||
@@ -1177,6 +1213,7 @@ lookup_by_tty (const char *id,
|
||||
|
||||
return g_strcmp0 (tty_to_check, tty_to_find) == 0;
|
||||
}
|
||||
@ -177,15 +165,15 @@
|
||||
|
||||
#if defined(ENABLE_USER_DISPLAY_SERVER)
|
||||
static void
|
||||
@@ -1295,6 +1324,7 @@ on_uevent (GUdevClient *client,
|
||||
@@ -1354,6 +1391,7 @@ on_vt_changed (GIOChannel *source,
|
||||
}
|
||||
#endif
|
||||
|
||||
+#ifdef WITH_SYSTEMD
|
||||
#ifdef HAVE_UDEV
|
||||
static void
|
||||
gdm_local_display_factory_start_monitor (GdmLocalDisplayFactory *factory)
|
||||
{
|
||||
@@ -1352,10 +1382,12 @@ gdm_local_display_factory_start_monitor (GdmLocalDispl
|
||||
on_uevent (GUdevClient *client,
|
||||
@@ -1444,10 +1482,12 @@ gdm_local_display_factory_start_monitor (GdmLocalDispl
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -194,19 +182,19 @@
|
||||
static void
|
||||
gdm_local_display_factory_stop_monitor (GdmLocalDisplayFactory *factory)
|
||||
{
|
||||
+#ifdef HAVE_UDEV
|
||||
+#ifdef WITH_SYSTEMD
|
||||
if (factory->uevent_handler_id) {
|
||||
g_signal_handler_disconnect (factory->gudev_client, factory->uevent_handler_id);
|
||||
factory->uevent_handler_id = 0;
|
||||
@@ -1387,6 +1419,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla
|
||||
factory->wait_to_finish_timeout_id = 0;
|
||||
}
|
||||
@@ -1478,6 +1518,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla
|
||||
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
|
||||
}
|
||||
|
||||
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,
|
||||
0);
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -36,7 +36,9 @@
|
||||
@@ -36,7 +36,11 @@
|
||||
|
||||
#include <act/act-user-manager.h>
|
||||
|
||||
+#ifdef WITH_SYSTEMD
|
||||
#include <systemd/sd-login.h>
|
||||
+#elif defined(WITH_CONSOLE_KIT)
|
||||
+#include <ConsoleKit/sd-login.h>
|
||||
+#endif
|
||||
|
||||
#include "gdm-common.h"
|
||||
|
||||
@@ -61,7 +63,7 @@
|
||||
#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,
|
||||
@@ -307,6 +311,7 @@ session_unlock (GdmManager *manager,
|
||||
|
||||
g_debug ("Unlocking session %s", ssid);
|
||||
|
||||
+#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",
|
||||
@@ -321,6 +324,25 @@ session_unlock (GdmManager *manager,
|
||||
@@ -324,6 +329,25 @@ session_unlock (GdmManager *manager,
|
||||
g_error_free (error);
|
||||
return FALSE;
|
||||
}
|
||||
+#elif defined(WITH_CONSOLE_KIT)
|
||||
+ reply = g_dbus_connection_call_sync (manager->priv->connection,
|
||||
+ reply = g_dbus_connection_call_sync (manager->connection,
|
||||
+ CK_NAME,
|
||||
+ ssid,
|
||||
+ CK_SESSION_INTERFACE,
|
||||
@ -53,7 +46,43 @@
|
||||
|
||||
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,
|
||||
GError **error)
|
||||
{
|
||||
@ -61,7 +90,7 @@
|
||||
int ret;
|
||||
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;
|
||||
@ -71,32 +100,7 @@
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -609,6 +635,7 @@ switch_to_compatible_user_session (GdmManager *manager
|
||||
|
||||
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,
|
||||
@@ -2101,12 +2151,58 @@ on_user_session_died (GdmSession *session,
|
||||
remove_user_session (manager, session);
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -43,7 +43,9 @@
|
||||
#include <linux/vt.h>
|
||||
@ -10,7 +10,7 @@
|
||||
|
||||
#ifdef ENABLE_SYSTEMD_JOURNAL
|
||||
#include <systemd/sd-journal.h>
|
||||
@@ -84,6 +86,9 @@ struct _GdmServer
|
||||
@@ -86,6 +88,9 @@ struct _GdmServer
|
||||
char *auth_file;
|
||||
|
||||
guint child_watch_id;
|
||||
@ -20,7 +20,7 @@
|
||||
|
||||
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)
|
||||
|
||||
@ -81,7 +81,7 @@
|
||||
static void
|
||||
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);
|
||||
}
|
||||
@ -108,7 +108,7 @@
|
||||
static GSList *active_servers;
|
||||
static gboolean sigusr1_thread_running;
|
||||
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);
|
||||
}
|
||||
}
|
||||
@ -116,7 +116,7 @@
|
||||
|
||||
static void
|
||||
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);
|
||||
}
|
||||
|
||||
@ -129,7 +129,7 @@
|
||||
|
||||
/* If we were compiled with Xserver >= 1.17 we need to specify
|
||||
* '-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);
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -36,7 +36,9 @@
|
||||
#include <sys/prctl.h>
|
||||
|
||||
@ -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
|
||||
@@ -28,9 +28,11 @@
|
||||
#include <string.h>
|
||||
@ -12,17 +12,18 @@
|
||||
#include <errno.h>
|
||||
#include <grp.h>
|
||||
#include <pwd.h>
|
||||
@@ -49,7 +51,9 @@
|
||||
|
||||
@@ -53,8 +55,10 @@
|
||||
#include <X11/Xauth.h>
|
||||
#endif
|
||||
|
||||
+#ifdef WITH_SYSTEMD
|
||||
#include <systemd/sd-daemon.h>
|
||||
#include <systemd/sd-login.h>
|
||||
+#endif
|
||||
|
||||
#ifdef ENABLE_SYSTEMD_JOURNAL
|
||||
#include <systemd/sd-journal.h>
|
||||
@@ -126,6 +130,10 @@ struct GdmSessionWorkerPrivate
|
||||
@@ -130,6 +134,10 @@ struct _GdmSessionWorker
|
||||
|
||||
int exit_code;
|
||||
|
||||
@ -33,7 +34,7 @@
|
||||
pam_handle_t *pam_handle;
|
||||
|
||||
GPid child_pid;
|
||||
@@ -140,6 +148,11 @@ struct GdmSessionWorkerPrivate
|
||||
@@ -144,6 +152,11 @@ struct _GdmSessionWorker
|
||||
char *hostname;
|
||||
char *username;
|
||||
char *log_file;
|
||||
@ -45,7 +46,7 @@
|
||||
char *session_id;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
@@ -207,6 +220,12 @@ typedef int (* GdmSessionWorkerPamNewMessagesFunc) (in
|
||||
@@ -213,12 +226,223 @@ typedef int (* GdmSessionWorkerPamNewMessagesFunc) (in
|
||||
struct pam_response **,
|
||||
gpointer);
|
||||
|
||||
@ -58,9 +59,8 @@
|
||||
G_DEFINE_TYPE_WITH_CODE (GdmSessionWorker,
|
||||
gdm_session_worker,
|
||||
GDM_DBUS_TYPE_WORKER_SKELETON,
|
||||
@@ -214,6 +233,211 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionWorker,
|
||||
worker_interface_init)
|
||||
G_ADD_PRIVATE (GdmSessionWorker))
|
||||
G_IMPLEMENT_INTERFACE (GDM_DBUS_TYPE_WORKER,
|
||||
worker_interface_init))
|
||||
|
||||
+#ifdef WITH_CONSOLE_KIT
|
||||
+static gboolean
|
||||
@ -78,27 +78,27 @@
|
||||
+ const char *display_hostname;
|
||||
+ gint32 uid;
|
||||
+
|
||||
+ g_assert (worker->priv->session_cookie == NULL);
|
||||
+ g_assert (worker->session_cookie == NULL);
|
||||
+
|
||||
+ if (worker->priv->x11_display_name != NULL) {
|
||||
+ display_name = worker->priv->x11_display_name;
|
||||
+ if (worker->x11_display_name != NULL) {
|
||||
+ display_name = worker->x11_display_name;
|
||||
+ } else {
|
||||
+ display_name = "";
|
||||
+ }
|
||||
+ if (worker->priv->hostname != NULL) {
|
||||
+ display_hostname = worker->priv->hostname;
|
||||
+ if (worker->hostname != NULL) {
|
||||
+ display_hostname = worker->hostname;
|
||||
+ } else {
|
||||
+ display_hostname = "";
|
||||
+ }
|
||||
+ if (worker->priv->display_device != NULL) {
|
||||
+ display_device = worker->priv->display_device;
|
||||
+ if (worker->display_device != NULL) {
|
||||
+ display_device = worker->display_device;
|
||||
+ } else {
|
||||
+ 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) {
|
||||
+ 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', <%s>)", display_name);
|
||||
+ 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");
|
||||
+ if (worker->priv->session_type != NULL) {
|
||||
+ g_variant_builder_add_parsed (&builder, "('session-type', <%s>)", worker->priv->session_type);
|
||||
+ worker->session_type = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_TYPE");
|
||||
+ if (worker->session_type != NULL) {
|
||||
+ 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");
|
||||
+ if (worker->priv->session_class != NULL) {
|
||||
+ g_variant_builder_add_parsed (&builder, "('session-class', <%s>)", worker->priv->session_class);
|
||||
+ worker->session_class = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_CLASS");
|
||||
+ if (worker->session_class != NULL) {
|
||||
+ 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");
|
||||
+ if (worker->priv->session_service != NULL) {
|
||||
+ g_variant_builder_add_parsed (&builder, "('session-service', <%s>)", worker->priv->session_service);
|
||||
+ worker->session_service = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_SERVICE");
|
||||
+ if (worker->session_service != NULL) {
|
||||
+ g_variant_builder_add_parsed (&builder, "('session-service', <%s>)", worker->session_service);
|
||||
+ }
|
||||
+
|
||||
+ parameters = g_variant_builder_end (&builder);
|
||||
@ -159,12 +159,12 @@
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ g_variant_get (reply, "(s)", &worker->priv->session_cookie);
|
||||
+ g_variant_get (reply, "(s)", &worker->session_cookie);
|
||||
+
|
||||
+ g_variant_unref (reply);
|
||||
+
|
||||
+out:
|
||||
+ return worker->priv->session_cookie != NULL;
|
||||
+ return worker->session_cookie != NULL;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
@ -175,7 +175,7 @@
|
||||
+ GError *error = NULL;
|
||||
+ gboolean was_closed;
|
||||
+
|
||||
+ if (worker->priv->session_cookie == NULL) {
|
||||
+ if (worker->session_cookie == NULL) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
@ -195,7 +195,7 @@
|
||||
+ CK_MANAGER_PATH,
|
||||
+ CK_MANAGER_INTERFACE,
|
||||
+ "CloseSession",
|
||||
+ g_variant_new ("(s)", worker->priv->session_cookie),
|
||||
+ g_variant_new ("(s)", worker->session_cookie),
|
||||
+ G_VARIANT_TYPE ("(b)"),
|
||||
+ G_DBUS_CALL_FLAGS_NONE,
|
||||
+ -1,
|
||||
@ -217,7 +217,7 @@
|
||||
+ g_variant_unref (reply);
|
||||
+
|
||||
+out:
|
||||
+ g_clear_pointer (&worker->priv->session_cookie,
|
||||
+ g_clear_pointer (&worker->session_cookie,
|
||||
+ (GDestroyNotify) g_free);
|
||||
+}
|
||||
+
|
||||
@ -245,7 +245,7 @@
|
||||
+ CK_MANAGER_PATH,
|
||||
+ CK_MANAGER_INTERFACE,
|
||||
+ "GetSessionForCookie",
|
||||
+ g_variant_new ("(s)", worker->priv->session_cookie),
|
||||
+ g_variant_new ("(s)", worker->session_cookie),
|
||||
+ G_VARIANT_TYPE ("(o)"),
|
||||
+ G_DBUS_CALL_FLAGS_NONE,
|
||||
+ -1,
|
||||
@ -270,25 +270,15 @@
|
||||
/* adapted from glib script_execute */
|
||||
static void
|
||||
script_execute (const gchar *file,
|
||||
@@ -670,7 +894,9 @@ gdm_session_worker_process_pam_message (GdmSessionWork
|
||||
char *user_answer;
|
||||
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;
|
||||
@@ -972,6 +1196,7 @@ gdm_session_worker_stop_auditor (GdmSessionWorker *wor
|
||||
worker->auditor = NULL;
|
||||
}
|
||||
|
||||
+#ifdef WITH_SYSTEMD
|
||||
static void
|
||||
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);
|
||||
}
|
||||
@ -296,7 +286,7 @@
|
||||
|
||||
static void
|
||||
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;
|
||||
int error_code;
|
||||
@ -304,9 +294,9 @@
|
||||
char tty_string[256];
|
||||
+#endif
|
||||
|
||||
g_assert (worker->priv->pam_handle == NULL);
|
||||
|
||||
@@ -1230,6 +1460,10 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
|
||||
g_assert (service != NULL);
|
||||
g_assert (worker->pam_handle == NULL);
|
||||
@@ -1297,6 +1525,10 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
|
||||
gdm_session_worker_set_environment_variable (worker, "XDG_SEAT", seat_id);
|
||||
}
|
||||
|
||||
@ -317,36 +307,34 @@
|
||||
if (strcmp (service, "gdm-launch-environment") == 0) {
|
||||
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");
|
||||
gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE);
|
||||
|
||||
+#ifdef WITH_SYSTEMD
|
||||
/* Temporarily set PAM_TTY with the login VT,
|
||||
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);
|
||||
pam_set_item (worker->priv->pam_handle, PAM_TTY, tty_string);
|
||||
- if (g_strcmp0 (seat_id, "seat0") == 0 && worker->seat0_has_vts) {
|
||||
- /* Temporarily set PAM_TTY with the login VT,
|
||||
- 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);
|
||||
- pam_set_item (worker->pam_handle, PAM_TTY, tty_string);
|
||||
- }
|
||||
-
|
||||
if (!display_is_local)
|
||||
worker->priv->password_is_required = TRUE;
|
||||
+#endif
|
||||
worker->password_is_required = TRUE;
|
||||
|
||||
out:
|
||||
if (error_code != PAM_SUCCESS) {
|
||||
@@ -1545,7 +1781,11 @@ _lookup_passwd_info (const char *username,
|
||||
@@ -1621,7 +1846,11 @@ _lookup_passwd_info (const char *username,
|
||||
if (passwd_entry->pw_shell != NULL && passwd_entry->pw_shell[0] != '\0') {
|
||||
*shellp = g_strdup (passwd_entry->pw_shell);
|
||||
} else {
|
||||
- *shellp = g_strdup ("/bin/bash");
|
||||
+#if defined(__OpenBSD__)
|
||||
+ *shellp = g_strdup ("/bin/ksh");
|
||||
+#else
|
||||
+#if defined(__FreeBSD__)
|
||||
+ *shellp = g_strdup ("/bin/sh");
|
||||
+#else
|
||||
*shellp = g_strdup ("/bin/bash");
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
ret = TRUE;
|
||||
@@ -1689,6 +1929,20 @@ gdm_session_worker_get_environment (GdmSessionWorker *
|
||||
return (const char * const *) pam_getenvlist (worker->priv->pam_handle);
|
||||
@@ -1760,6 +1989,20 @@ gdm_session_worker_get_environment (GdmSessionWorker *
|
||||
return (const char * const *) pam_getenvlist (worker->pam_handle);
|
||||
}
|
||||
|
||||
+#ifdef WITH_CONSOLE_KIT
|
||||
@ -355,10 +343,10 @@
|
||||
+{
|
||||
+ open_ck_session (worker);
|
||||
+
|
||||
+ if (worker->priv->session_cookie != NULL) {
|
||||
+ if (worker->session_cookie != NULL) {
|
||||
+ gdm_session_worker_set_environment_variable (worker,
|
||||
+ "XDG_SESSION_COOKIE",
|
||||
+ worker->priv->session_cookie);
|
||||
+ worker->session_cookie);
|
||||
+ }
|
||||
+}
|
||||
+#endif
|
||||
@ -366,7 +354,7 @@
|
||||
static gboolean
|
||||
run_script (GdmSessionWorker *worker,
|
||||
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)
|
||||
: -1);
|
||||
|
||||
@ -376,8 +364,8 @@
|
||||
+
|
||||
gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS);
|
||||
|
||||
worker->priv->child_pid = -1;
|
||||
@@ -1978,6 +2236,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
||||
worker->child_pid = -1;
|
||||
@@ -2037,6 +2284,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
||||
|
||||
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
|
||||
* 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. */
|
||||
@@ -1986,6 +2245,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
||||
jump_to_vt (worker, worker->priv->session_vt);
|
||||
@@ -2045,6 +2293,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
||||
jump_to_vt (worker, worker->session_vt);
|
||||
}
|
||||
}
|
||||
+#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,
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@ -401,7 +389,7 @@
|
||||
/* Take control of the tty
|
||||
*/
|
||||
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");
|
||||
}
|
||||
}
|
||||
@ -409,7 +397,7 @@
|
||||
|
||||
#ifdef HAVE_LOGINCAP
|
||||
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;
|
||||
}
|
||||
|
||||
@ -417,7 +405,7 @@
|
||||
static gboolean
|
||||
set_up_for_new_vt (GdmSessionWorker *worker)
|
||||
{
|
||||
@@ -2286,6 +2549,7 @@ fail:
|
||||
@@ -2341,6 +2593,7 @@ fail:
|
||||
close (fd);
|
||||
return FALSE;
|
||||
}
|
||||
@ -425,38 +413,38 @@
|
||||
|
||||
static gboolean
|
||||
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
|
||||
|
||||
+#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");
|
||||
set_xdg_vtnr_to_current_vt (worker);
|
||||
} else {
|
||||
g_debug ("GdmSessionWorker: not setting XDG_VTNR since not seat0");
|
||||
g_debug ("GdmSessionWorker: not setting XDG_VTNR since no VTs on seat");
|
||||
}
|
||||
+#endif
|
||||
|
||||
return TRUE;
|
||||
out:
|
||||
@@ -2384,6 +2650,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
||||
break;
|
||||
case GDM_SESSION_DISPLAY_MODE_NEW_VT:
|
||||
case GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED:
|
||||
}
|
||||
@@ -2440,6 +2695,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
||||
break;
|
||||
case GDM_SESSION_DISPLAY_MODE_NEW_VT:
|
||||
case GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED:
|
||||
+#ifdef WITH_SYSTEMD
|
||||
if (!set_up_for_new_vt (worker)) {
|
||||
g_set_error (error,
|
||||
GDM_SESSION_WORKER_ERROR,
|
||||
@@ -2391,6 +2658,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
||||
"Unable to open VT");
|
||||
return FALSE;
|
||||
}
|
||||
if (!set_up_for_new_vt (worker)) {
|
||||
g_set_error (error,
|
||||
GDM_SESSION_WORKER_ERROR,
|
||||
@@ -2447,6 +2703,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
||||
"Unable to open VT");
|
||||
return FALSE;
|
||||
}
|
||||
+#endif
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2413,8 +2681,16 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
||||
@@ -2470,8 +2727,16 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
||||
g_debug ("GdmSessionWorker: state SESSION_OPENED");
|
||||
gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SESSION_OPENED);
|
||||
|
||||
@ -471,9 +459,9 @@
|
||||
+#endif
|
||||
+
|
||||
if (session_id != NULL) {
|
||||
g_free (worker->priv->session_id);
|
||||
worker->priv->session_id = session_id;
|
||||
@@ -2968,6 +3244,7 @@ gdm_session_worker_handle_open (GdmDBusWorker
|
||||
g_free (worker->session_id);
|
||||
worker->session_id = g_steal_pointer (&session_id);
|
||||
@@ -3022,6 +3287,7 @@ gdm_session_worker_handle_open (GdmDBusWorker
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -481,22 +469,32 @@
|
||||
static char **
|
||||
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
|
||||
|
||||
static gboolean
|
||||
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)) {
|
||||
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
|
||||
} 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
|
||||
} 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) {
|
||||
@@ -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;
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -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 */
|
||||
char *session_type;
|
||||
@ -10,7 +20,7 @@
|
||||
char *display_name;
|
||||
char *display_hostname;
|
||||
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/",
|
||||
};
|
||||
|
||||
@ -20,3 +30,19 @@
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
36
x11/gdm/files/patch-daemon_gdm-wayland-session.c
Normal file
36
x11/gdm/files/patch-daemon_gdm-wayland-session.c
Normal 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
|
||||
@ -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
|
||||
@@ -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;
|
||||
gboolean prepared = FALSE;
|
||||
Xauth auth_entry = { 0 };
|
||||
- char localhost[HOST_NAME_MAX + 1] = "";
|
||||
+ char localhost[256] = "";
|
||||
+ char localhost[_POSIX_HOST_NAME_MAX + 1] = "";
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
- 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);
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
@@ -281,6 +281,7 @@ is_debug_set (void)
|
||||
return debug;
|
||||
|
||||
@ -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
|
||||
@@ -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_src,
|
||||
dependencies: gdm_session_worker_deps,
|
||||
@ -8,7 +8,7 @@
|
||||
include_directories: gdm_session_worker_includes,
|
||||
install: true,
|
||||
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_sources, gdm_daemon_gen_sources ],
|
||||
dependencies: gdm_daemon_deps,
|
||||
|
||||
12
x11/gdm/files/patch-data_gdm.conf-custom.in
Normal file
12
x11/gdm/files/patch-data_gdm.conf-custom.in
Normal 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]
|
||||
|
||||
@ -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
|
||||
@@ -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', '')
|
||||
endif
|
||||
|
||||
-if get_option('systemdsystemunitdir') != ''
|
||||
- systemd_systemunitdir = get_option('systemdsystemunitdir')
|
||||
-else
|
||||
- systemd_systemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
|
||||
-endif
|
||||
-systemdsystemunitdir = get_option('systemdsystemunitdir')
|
||||
-if systemdsystemunitdir != 'no'
|
||||
- if get_option('systemdsystemunitdir') != ''
|
||||
- systemd_systemunitdir = get_option('systemdsystemunitdir')
|
||||
- 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 get_option('systemdsystemunitdir') != ''
|
||||
+ systemd_systemunitdir = get_option('systemdsystemunitdir')
|
||||
+ else
|
||||
+ systemd_systemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
|
||||
+ 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')])
|
||||
+ systemdsystemunitdir = get_option('systemdsystemunitdir')
|
||||
+ if systemdsystemunitdir != 'no'
|
||||
+ if get_option('systemdsystemunitdir') != ''
|
||||
+ systemd_systemunitdir = get_option('systemdsystemunitdir')
|
||||
+ 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')
|
||||
+ endif
|
||||
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(
|
||||
- input: 'gdm.service.in',
|
||||
- output: '@BASENAME@',
|
||||
- configuration: service_config,
|
||||
- install_dir: systemd_systemunitdir,
|
||||
- format: 'cmake'
|
||||
-)
|
||||
+ configure_file(
|
||||
+ input: 'gdm.service.in',
|
||||
+ output: '@BASENAME@',
|
||||
+ configuration: service_config,
|
||||
+ install_dir: systemd_systemunitdir,
|
||||
+ format: 'cmake'
|
||||
+ )
|
||||
-systemduserunitdir = get_option('systemduserunitdir')
|
||||
-if systemduserunitdir != 'no'
|
||||
- if get_option('systemduserunitdir') != ''
|
||||
- systemd_userunitdir = get_option('systemduserunitdir')
|
||||
- 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')])
|
||||
+ systemduserunitdir = get_option('systemduserunitdir')
|
||||
+ if systemduserunitdir != 'no'
|
||||
+ if get_option('systemduserunitdir') != ''
|
||||
+ systemd_userunitdir = get_option('systemduserunitdir')
|
||||
+ 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 = []
|
||||
-foreach component: gdm_gnome_user_session_wanted_components
|
||||
@ -53,25 +102,35 @@
|
||||
+ gdm_gnome_session_wanted_targets += 'Wants=@0@.target'.format(component)
|
||||
+ endforeach
|
||||
|
||||
-configure_file(
|
||||
- input: 'session.conf.in',
|
||||
- output: 'session.conf',
|
||||
- configuration: {
|
||||
- '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',
|
||||
-)
|
||||
+ configure_file(
|
||||
+ input: 'session.conf.in',
|
||||
+ output: 'session.conf',
|
||||
+ configuration: {
|
||||
+ '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',
|
||||
+ )
|
||||
+endif
|
||||
-if systemduserunitdir != 'no'
|
||||
- configure_file(
|
||||
- input: 'session.conf.in',
|
||||
- output: 'session.conf',
|
||||
- configuration: {
|
||||
- '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',
|
||||
- )
|
||||
+ if systemduserunitdir != 'no'
|
||||
+ configure_file(
|
||||
+ input: 'session.conf.in',
|
||||
+ output: 'session.conf',
|
||||
+ configuration: {
|
||||
+ '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',
|
||||
+ )
|
||||
+ endif
|
||||
endif
|
||||
|
||||
# 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',
|
||||
|
||||
38
x11/gdm/files/patch-libgdm_gdm-sessions.c
Normal file
38
x11/gdm/files/patch-libgdm_gdm-sessions.c
Normal 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;
|
||||
|
||||
@ -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;
|
||||
@ -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
|
||||
@@ -37,8 +37,14 @@ config_h_dir = include_directories('.')
|
||||
config_h_dir = include_directories('.')
|
||||
@@ -48,9 +48,15 @@ endif
|
||||
endif
|
||||
|
||||
# Dependencies
|
||||
-udev_dep = dependency('udev')
|
||||
-gudev_dep = dependency('gudev-1.0', version: '>= 232')
|
||||
+if host_machine.system() == 'linux'
|
||||
+ udev_dep = dependency('udev')
|
||||
+ gudev_dep = dependency('gudev-1.0', version: '>= 232')
|
||||
+else
|
||||
+ udev_dep = declare_dependency()
|
||||
+ gudev_dep = declare_dependency()
|
||||
+ udev_dir = '/usr/local/lib/udev/rules.d'
|
||||
+endif
|
||||
|
||||
glib_min_version = '2.56.0'
|
||||
|
||||
@@ -89,17 +95,22 @@ else
|
||||
else
|
||||
# what to do, what to do, this is wrong, but this just sets the
|
||||
# defaults, perhaps this user is cross compiling or some such
|
||||
- x_path = '/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin'
|
||||
- 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')
|
||||
+gudev_dep = dependency('gudev-1.0', version: '>= 232', required: false)
|
||||
+
|
||||
# PAM
|
||||
libpam_dep = cc.find_library('pam')
|
||||
pam_extensions_supported = cc.has_header_symbol(
|
||||
@@ -123,23 +129,29 @@ endif
|
||||
have_xdmcp = false
|
||||
endif
|
||||
# systemd
|
||||
-systemd_dep = dependency('systemd')
|
||||
-libsystemd_dep = dependency('libsystemd')
|
||||
-if meson.version().version_compare('>= 0.53')
|
||||
-logind_provider = get_option('logind-provider')
|
||||
-systemd_dep = dependency('systemd', required: false)
|
||||
-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'
|
||||
+ systemd_dep = dependency('systemd')
|
||||
+ libsystemd_dep = dependency('libsystemd')
|
||||
+else
|
||||
+ systemd_dep = declare_dependency()
|
||||
+ libsystemd_dep = declare_dependency()
|
||||
+ logind_provider = get_option('logind-provider')
|
||||
+ systemd_dep = dependency('systemd', required: false)
|
||||
+ 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'
|
||||
+ 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
|
||||
+if host_machine.system() == 'linux'
|
||||
systemd_multiseat_x = find_program('systemd-multi-seat-x',
|
||||
required: false,
|
||||
dirs: [
|
||||
@@ -257,6 +268,7 @@ conf.set('ENABLE_IPV6', get_option('ipv6'))
|
||||
conf.set('HAVE_UT_UT_HOST', utmp_has_host_field)
|
||||
conf.set('HAVE_UT_UT_PID', utmp_has_pid_field)
|
||||
conf.set('HAVE_UT_UT_ID', utmp_has_id_field)
|
||||
@@ -304,6 +319,7 @@ conf.set('ENABLE_IPV6', get_option('ipv6'))
|
||||
conf.set('HAVE_UT_UT_TV', utmp_has_tv_field)
|
||||
conf.set('HAVE_UT_UT_SYSLEN', utmp_has_syslen_field)
|
||||
conf.set('ENABLE_IPV6', get_option('ipv6'))
|
||||
|
||||
@ -26,8 +26,6 @@ POST-INSTALL)
|
||||
${MKDIR} -p ${PKG_PREFIX}/etc/gdm/Sessions
|
||||
${MKDIR} -p ${PKG_PREFIX}/etc/dm/Sessions
|
||||
|
||||
${CHOWN} -R ${USER}:${GROUP} ${PKG_PREFIX}/etc/gdm/home
|
||||
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
|
||||
@ -14,7 +14,7 @@ EOM
|
||||
To really remove the gdm port, please remove the following
|
||||
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
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
bin/gdm-screenshot
|
||||
bin/gdm-config
|
||||
bin/gdmflexiserver
|
||||
@sample etc/dbus-1/system.d/gdm.conf.sample
|
||||
@sample %%ETCDIR%%/Init/Default.sample
|
||||
@ -7,7 +7,6 @@ bin/gdmflexiserver
|
||||
@sample %%ETCDIR%%/PreSession/Default.sample
|
||||
@sample %%ETCDIR%%/Xsession.sample
|
||||
@sample %%ETCDIR%%/custom.conf.sample
|
||||
@sample %%ETCDIR%%/home/.pulse/client.conf.sample
|
||||
@sample %%ETCDIR%%/locale.conf.sample
|
||||
@sample etc/pam.d/gdm-autologin.sample
|
||||
@sample etc/pam.d/gdm-launch-environment.sample
|
||||
@ -21,6 +20,7 @@ lib/libgdm.so
|
||||
lib/libgdm.so.1
|
||||
lib/libgdm.so.1.0.0
|
||||
lib/security/pam_gdm.so
|
||||
lib/udev/rules.d/61-gdm.rules
|
||||
libdata/pkgconfig/gdm.pc
|
||||
libexec/gdm-host-chooser
|
||||
libexec/gdm-runtime-config
|
||||
@ -59,14 +59,20 @@ share/help/fr/gdm/index.docbook
|
||||
share/help/fr/gdm/legal.xml
|
||||
share/help/gl/gdm/index.docbook
|
||||
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/legal.xml
|
||||
share/help/id/gdm/index.docbook
|
||||
share/help/id/gdm/legal.xml
|
||||
share/help/it/gdm/index.docbook
|
||||
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/legal.xml
|
||||
share/help/nl/gdm/index.docbook
|
||||
share/help/nl/gdm/legal.xml
|
||||
share/help/oc/gdm/index.docbook
|
||||
share/help/oc/gdm/legal.xml
|
||||
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/zh_CN/gdm/index.docbook
|
||||
share/help/zh_CN/gdm/legal.xml
|
||||
share/locale/ab/LC_MESSAGES/gdm.mo
|
||||
share/locale/af/LC_MESSAGES/gdm.mo
|
||||
share/locale/am/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 dconf update
|
||||
@postunexec dconf update
|
||||
@mode 1775
|
||||
@dir etc/gdm/home
|
||||
@mode
|
||||
@dir %%ETCDIR%%/Sessions
|
||||
@dir etc/dm
|
||||
@dir etc/dm/Sessions
|
||||
@dir share/xsessions
|
||||
@dir /var/cache/gdm/
|
||||
@dir /var/cache/gdm
|
||||
@dir /var/run/gdm/greeter
|
||||
@dir /var/run/gdm/
|
||||
@dir /var/log/gdm/
|
||||
@postunexec rm -fr /var/gdm
|
||||
@dir /var/run/gdm
|
||||
@dir /var/log/gdm
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user