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
|
PORTNAME= gdm
|
||||||
PORTVERSION= 42.0
|
PORTVERSION= 47.0
|
||||||
PORTREVISION= 7
|
|
||||||
CATEGORIES= x11 gnome
|
CATEGORIES= x11 gnome
|
||||||
MASTER_SITES= GNOME
|
MASTER_SITES= GNOME
|
||||||
DIST_SUBDIR= gnome
|
DIST_SUBDIR= gnome
|
||||||
|
|
||||||
MAINTAINER= gnome@FreeBSD.org
|
MAINTAINER= gnome@FreeBSD.org
|
||||||
COMMENT= GNOME display manager
|
COMMENT= GNOME display manager
|
||||||
WWW= https://www.gnome.org/projects/gdm/
|
WWW= https://gitlab.gnome.org/GNOME/gdm
|
||||||
|
|
||||||
LICENSE= GPLv2
|
LICENSE= GPLv2+
|
||||||
LICENSE_FILE= ${WRKSRC}/COPYING
|
LICENSE_FILE= ${WRKSRC}/COPYING
|
||||||
|
|
||||||
BUILD_DEPENDS= iso-codes>=0:misc/iso-codes \
|
PORTSCOUT= limit:^47\.
|
||||||
itstool:textproc/itstool \
|
|
||||||
zenity>=3.0.0:x11/zenity
|
BUILD_DEPENDS= iso-codes>0:misc/iso-codes \
|
||||||
|
xorg-server>0:x11-servers/xorg-server \
|
||||||
|
itstool:textproc/itstool
|
||||||
LIB_DEPENDS= libaccountsservice.so:sysutils/accountsservice \
|
LIB_DEPENDS= libaccountsservice.so:sysutils/accountsservice \
|
||||||
libcanberra-gtk3.so:audio/libcanberra-gtk3 \
|
libcanberra-gtk3.so:audio/libcanberra-gtk3 \
|
||||||
libcanberra.so:audio/libcanberra \
|
libcanberra.so:audio/libcanberra \
|
||||||
libck-connector.so:sysutils/consolekit2 \
|
libck-connector.so:sysutils/consolekit2 \
|
||||||
libfribidi.so:converters/fribidi
|
libjson-glib-1.0.so:devel/json-glib
|
||||||
RUN_DEPENDS= at-spi2-core>=0:accessibility/at-spi2-core \
|
RUN_DEPENDS= gnome-keyring-3:security/gnome-keyring \
|
||||||
gnome-icon-theme-symbolic>=0:x11-themes/gnome-icon-theme-symbolic \
|
gnome-session>0:x11/gnome-session \
|
||||||
gnome-keyring-3:security/gnome-keyring \
|
gnome-settings-daemon>0:sysutils/gnome-settings-daemon \
|
||||||
gnome-session>=3.0.0:x11/gnome-session \
|
iso-codes>0:misc/iso-codes
|
||||||
gnome-settings-daemon>=3.0.0:sysutils/gnome-settings-daemon \
|
|
||||||
iso-codes>=0:misc/iso-codes \
|
|
||||||
polkit-gnome>=0.105:sysutils/polkit-gnome \
|
|
||||||
zenity>=3.0.0:x11/zenity
|
|
||||||
# used in scripts
|
# used in scripts
|
||||||
RUN_DEPENDS+= setxkbmap:x11/setxkbmap \
|
RUN_DEPENDS+= setxkbmap:x11/setxkbmap \
|
||||||
xhost:x11/xhost \
|
xhost:x11/xhost \
|
||||||
xmodmap:x11/xmodmap \
|
xmodmap:x11/xmodmap \
|
||||||
xrdb:x11/xrdb \
|
xrdb:x11/xrdb \
|
||||||
xsetroot:x11/xsetroot \
|
xsetroot:x11/xsetroot \
|
||||||
xterm:x11/xterm
|
xterm:x11/xterm \
|
||||||
|
zenity:x11/zenity
|
||||||
|
|
||||||
USERS= gdm
|
USERS= gdm
|
||||||
GROUPS= gdm video
|
GROUPS= gdm video
|
||||||
|
|
||||||
PORTSCOUT= limitw:1,even
|
|
||||||
|
|
||||||
USES= cpe gettext gnome localbase:ldflags meson pathfix \
|
USES= cpe gettext gnome localbase:ldflags meson pathfix \
|
||||||
pkgconfig tar:xz xorg
|
pkgconfig tar:xz xorg
|
||||||
CPE_VENDOR= gnome
|
CPE_VENDOR= gnome
|
||||||
CPE_PRODUCT= gnome_display_manager
|
CPE_PRODUCT= gnome_display_manager
|
||||||
USE_GNOME= cairo dconf gtk30 intltool introspection
|
USE_GNOME= atk dconf gdkpixbuf glib20 gtk30 introspection:build
|
||||||
USE_LDCONFIG= yes
|
USE_LDCONFIG= yes
|
||||||
USE_XORG= x11 xau xcb xdmcp xorgproto
|
USE_XORG= x11 xau xcb xdmcp xorgproto
|
||||||
USE_RC_SUBR= gdm
|
USE_RC_SUBR= gdm
|
||||||
USE_GNOME_SUBR= yes
|
USE_GNOME_SUBR= yes
|
||||||
GLIB_SCHEMAS= org.gnome.login-screen.gschema.xml
|
GLIB_SCHEMAS= org.gnome.login-screen.gschema.xml \
|
||||||
|
15_org.gnome.login-screen.gschema.override
|
||||||
MESON_ARGS= -Dat-spi-registryd-dir=${PREFIX}/libexec \
|
MESON_ARGS= -Dat-spi-registryd-dir=${PREFIX}/libexec \
|
||||||
-Dcustom-conf=${PREFIX}/etc/gdm/custom.conf \
|
-Dcustom-conf=${PREFIX}/etc/gdm/custom.conf \
|
||||||
-Ddbus-sys=${PREFIX}/etc/dbus-1/system.d \
|
|
||||||
-Ddefault-pam-config=none \
|
-Ddefault-pam-config=none \
|
||||||
-Ddmconfdir=${PREFIX}/share/xsessions \
|
-Ddmconfdir=${PREFIX}/share/xsessions \
|
||||||
-Dgdm-xsession=true \
|
-Dgdm-xsession=true \
|
||||||
@ -61,24 +57,21 @@ MESON_ARGS= -Dat-spi-registryd-dir=${PREFIX}/libexec \
|
|||||||
-Dinitial-vt=09 \
|
-Dinitial-vt=09 \
|
||||||
-Dlang-file=${PREFIX}/etc/gdm/locale.conf \
|
-Dlang-file=${PREFIX}/etc/gdm/locale.conf \
|
||||||
-Dlibaudit=disabled \
|
-Dlibaudit=disabled \
|
||||||
-Dlog-dir=/var/log/gdm \
|
|
||||||
-Dpid-file=/var/run/gdm.pid \
|
-Dpid-file=/var/run/gdm.pid \
|
||||||
-Dplymouth=disabled \
|
-Dplymouth=disabled \
|
||||||
-Dscreenshot-dir=/var/run/gdm/greeter \
|
-Dscreenshot-dir=/var/run/gdm/greeter \
|
||||||
-Dselinux=disabled \
|
-Dselinux=disabled \
|
||||||
-Dsysconfsubdir=gdm \
|
|
||||||
-Dsystemd-journal=false \
|
-Dsystemd-journal=false \
|
||||||
-Duser-display-server=false \
|
-Duser-display-server=false \
|
||||||
|
-Dudev-dir=${PREFIX}/lib/udev/rules.d \
|
||||||
-Duser=gdm \
|
-Duser=gdm \
|
||||||
-Dwayland-support=false \
|
-Dworking-dir=/var/cache/gdm \
|
||||||
-Dworking-dir=/var/db/gdm \
|
|
||||||
-Dxauth-dir=/var/run/gdm
|
-Dxauth-dir=/var/run/gdm
|
||||||
|
|
||||||
# this is a hack until we can get our own pam dir and dir in order.
|
# this is a hack until we can get our own pam dir and dir in order.
|
||||||
CPPFLAGS+= -DHAS_SA_LEN -DWITH_CONSOLE_KIT=1
|
CPPFLAGS+= -DHAS_SA_LEN -DWITH_CONSOLE_KIT=1
|
||||||
INSTALL_TARGET= install-strip
|
|
||||||
|
|
||||||
SUB_FILES+= client.conf gdm-autologin gdm-launch-environment gdm-password \
|
SUB_FILES+= gdm-autologin gdm-launch-environment gdm-password \
|
||||||
locale.conf
|
locale.conf
|
||||||
|
|
||||||
GDMDIR?= ${PREFIX}/etc/gdm
|
GDMDIR?= ${PREFIX}/etc/gdm
|
||||||
@ -92,48 +85,33 @@ IPV6_MESON_TRUE= ipv6
|
|||||||
.include <bsd.port.options.mk>
|
.include <bsd.port.options.mk>
|
||||||
|
|
||||||
post-patch:
|
post-patch:
|
||||||
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
|
|
||||||
-e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
|
|
||||||
-e 's|/bin/bash|/bin/sh|g' \
|
|
||||||
${WRKSRC}/daemon/gdm-session-worker.c
|
|
||||||
@${REINPLACE_CMD} -e 's|/usr/X11R6|${LOCALBASE}|g' \
|
@${REINPLACE_CMD} -e 's|/usr/X11R6|${LOCALBASE}|g' \
|
||||||
-e 's|/usr/bin/X|${LOCALBASE}/bin/X|g' \
|
-e 's|/usr/bin/X|${LOCALBASE}/bin/X|g' \
|
||||||
-e 's|/usr/bin/Xorg|${LOCALBASE}/bin/Xorg|g' \
|
-e 's|/usr/bin/Xorg|${LOCALBASE}/bin/Xorg|g' \
|
||||||
${WRKSRC}/meson.build ${WRKSRC}/daemon/*.c ${WRKSRC}/po/*.po
|
${WRKSRC}/meson.build
|
||||||
|
@${REINPLACE_CMD} -e 's|/usr/bin/|${LOCALBASE}/bin/|g' \
|
||||||
|
${WRKSRC}/daemon/gdm-local-display-factory.c
|
||||||
@${REINPLACE_CMD} -e 's|/at-spi-registryd|/at-spi2-registryd|g' \
|
@${REINPLACE_CMD} -e 's|/at-spi-registryd|/at-spi2-registryd|g' \
|
||||||
${WRKSRC}/chooser/gdm-host-chooser.c \
|
${WRKSRC}/chooser/gdm-host-chooser.c \
|
||||||
${WRKSRC}/chooser/chooser-main.c
|
${WRKSRC}/chooser/chooser-main.c
|
||||||
@${REINPLACE_CMD} -e 's|/etc/X11|${LOCALBASE}/etc/X11|g' \
|
@${REINPLACE_CMD} -e 's|/etc/X11|${LOCALBASE}/etc/X11|g' \
|
||||||
${WRKSRC}/data/Init.in \
|
${WRKSRC}/data/Init.in \
|
||||||
${WRKSRC}/data/PostLogin \
|
|
||||||
${WRKSRC}/data/PostSession.in \
|
|
||||||
${WRKSRC}/data/PreSession.in \
|
|
||||||
${WRKSRC}/data/Xsession.in
|
${WRKSRC}/data/Xsession.in
|
||||||
@${RM} ${WRKSRC}/data/applications/gdm-simple-greeter.desktop \
|
|
||||||
${WRKSRC}/data/applications/gdm-simple-greeter.desktop.in \
|
# Force X11 session (support of Wayland is not yet complete!)
|
||||||
${WRKSRC}/data/applications/gnome-shell.desktop \
|
@${REINPLACE_CMD} -e 's|wayland|xorg|' \
|
||||||
|
${WRKSRC}/data/gdm.schemas.in
|
||||||
|
|
||||||
|
pre-install:
|
||||||
|
${MKDIR} ${STAGEDIR}/var/cache/gdm
|
||||||
|
${MKDIR} ${STAGEDIR}/var/log/gdm
|
||||||
|
${MKDIR} ${STAGEDIR}/var/run/gdm/greeter
|
||||||
|
|
||||||
|
#${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home
|
||||||
|
#${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse
|
||||||
|
#${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home/.config
|
||||||
|
|
||||||
post-install:
|
post-install:
|
||||||
${MV} ${STAGEDIR}${PREFIX}/etc/gdm/custom.conf \
|
|
||||||
${STAGEDIR}${PREFIX}/etc/gdm/custom.conf.sample
|
|
||||||
${MV} ${STAGEDIR}${PREFIX}/etc/gdm/PostSession/Default \
|
|
||||||
${STAGEDIR}${PREFIX}/etc/gdm/PostSession/Default.sample
|
|
||||||
${MV} ${STAGEDIR}${PREFIX}/etc/gdm/PreSession/Default \
|
|
||||||
${STAGEDIR}${PREFIX}/etc/gdm/PreSession/Default.sample
|
|
||||||
${MV} ${STAGEDIR}${PREFIX}/etc/gdm/Init/Default \
|
|
||||||
${STAGEDIR}${PREFIX}/etc/gdm/Init/Default.sample
|
|
||||||
${MV} ${STAGEDIR}${PREFIX}/etc/gdm/Xsession \
|
|
||||||
${STAGEDIR}${PREFIX}/etc/gdm/Xsession.sample
|
|
||||||
${MV} ${STAGEDIR}${PREFIX}/etc/dbus-1/system.d/gdm.conf \
|
|
||||||
${STAGEDIR}${PREFIX}/etc/dbus-1/system.d/gdm.conf.sample
|
|
||||||
|
|
||||||
${MKDIR} ${STAGEDIR}${PREFIX}/share/xsessions
|
|
||||||
${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/Sessions
|
|
||||||
${MKDIR} ${STAGEDIR}${PREFIX}/etc/dm/Sessions
|
|
||||||
|
|
||||||
${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home
|
|
||||||
${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/
|
|
||||||
|
|
||||||
${INSTALL_DATA} ${WRKDIR}/gdm-autologin \
|
${INSTALL_DATA} ${WRKDIR}/gdm-autologin \
|
||||||
${STAGEDIR}${PREFIX}/etc/pam.d/gdm-autologin.sample
|
${STAGEDIR}${PREFIX}/etc/pam.d/gdm-autologin.sample
|
||||||
${INSTALL_DATA} ${WRKDIR}/gdm-launch-environment \
|
${INSTALL_DATA} ${WRKDIR}/gdm-launch-environment \
|
||||||
@ -141,19 +119,13 @@ post-install:
|
|||||||
${INSTALL_DATA} ${WRKDIR}/gdm-password \
|
${INSTALL_DATA} ${WRKDIR}/gdm-password \
|
||||||
${STAGEDIR}${PREFIX}/etc/pam.d/gdm-password.sample
|
${STAGEDIR}${PREFIX}/etc/pam.d/gdm-password.sample
|
||||||
|
|
||||||
${INSTALL_DATA} ${WRKDIR}/client.conf \
|
#${INSTALL_DATA} ${WRKDIR}/client.conf \
|
||||||
${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/client.conf.sample
|
# ${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/client.conf.sample
|
||||||
|
|
||||||
${INSTALL_DATA} ${WRKDIR}/locale.conf \
|
${INSTALL_DATA} ${WRKDIR}/locale.conf \
|
||||||
${STAGEDIR}${PREFIX}/etc/gdm/locale.conf.sample
|
${STAGEDIR}${PREFIX}/etc/gdm/locale.conf.sample
|
||||||
|
|
||||||
${MKDIR} ${STAGEDIR}/var/cache/gdm
|
${INSTALL_DATA} ${FILESDIR}/15_org.gnome.login-screen.gschema.override \
|
||||||
${MKDIR} ${STAGEDIR}/var/log/gdm
|
${STAGEDIR}${PREFIX}/share/glib-2.0/schemas/
|
||||||
${MKDIR} ${STAGEDIR}/var/run/gdm
|
|
||||||
${MKDIR} ${STAGEDIR}/var/run/gdm/greeter
|
|
||||||
|
|
||||||
@${RM} ${STAGEDIR}${PREFIX}/lib/udev/rules.d/61-gdm.rules
|
|
||||||
@${RMDIR} ${STAGEDIR}${PREFIX}/lib/udev/rules.d
|
|
||||||
@${RMDIR} ${STAGEDIR}${PREFIX}/lib/udev
|
|
||||||
|
|
||||||
.include <bsd.port.mk>
|
.include <bsd.port.mk>
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
TIMESTAMP = 1647984111
|
TIMESTAMP = 1744645483
|
||||||
SHA256 (gnome/gdm-42.0.tar.xz) = a328ac976937bec179971ff07829a1246b98ce724181c128ae32a0ba47ad3855
|
SHA256 (gnome/gdm-47.0.tar.xz) = c5858326bfbcc8ace581352e2be44622dc0e9e5c2801c8690fd2eed502607f84
|
||||||
SIZE (gnome/gdm-42.0.tar.xz) = 811200
|
SIZE (gnome/gdm-47.0.tar.xz) = 936172
|
||||||
|
|||||||
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 required pam_permit.so
|
||||||
|
|
||||||
auth optional /usr/local/lib/pam_ck_connector.so
|
auth optional %%PREFIX%%/lib/pam_ck_connector.so
|
||||||
auth optional /usr/local/lib/pam_gnome_keyring.so
|
auth optional %%PREFIX%%/lib/pam_gnome_keyring.so
|
||||||
|
|
||||||
account required pam_nologin.so
|
account required pam_nologin.so
|
||||||
account include system
|
account include system
|
||||||
@ -13,4 +13,4 @@ account include system
|
|||||||
password include system
|
password include system
|
||||||
|
|
||||||
session include system
|
session include system
|
||||||
session optional /usr/local/lib/pam_gnome_keyring.so auto_start
|
session optional %%PREFIX%%/lib/pam_gnome_keyring.so auto_start
|
||||||
|
|||||||
@ -4,8 +4,8 @@
|
|||||||
|
|
||||||
auth include system
|
auth include system
|
||||||
|
|
||||||
auth optional /usr/local/lib/pam_ck_connector.so
|
auth optional %%PREFIX%%/lib/pam_ck_connector.so
|
||||||
auth optional /usr/local/lib/pam_gnome_keyring.so
|
auth optional %%PREFIX%%/lib/pam_gnome_keyring.so
|
||||||
|
|
||||||
account required pam_nologin.so
|
account required pam_nologin.so
|
||||||
account include system
|
account include system
|
||||||
@ -13,4 +13,4 @@ account include system
|
|||||||
password include system
|
password include system
|
||||||
|
|
||||||
session include system
|
session include system
|
||||||
session optional /usr/local/lib/pam_gnome_keyring.so auto_start
|
session optional %%PREFIX%%/lib/pam_gnome_keyring.so auto_start
|
||||||
|
|||||||
@ -32,9 +32,9 @@ gdm_start()
|
|||||||
fi
|
fi
|
||||||
echo "Starting ${name}."
|
echo "Starting ${name}."
|
||||||
|
|
||||||
# we need to remove locking files under $gdm_home/.cache/gnome-shell/
|
# we need to remove locking files under /var/cache/gdm/.cache/gnome-shell/
|
||||||
# until XDG_RUNTIME_DIR can be set and used
|
# until XDG_RUNTIME_DIR can be set and used
|
||||||
rm -fr %%PREFIX%%/etc/gdm/home/.cache/gnome-shell/runtime-state*
|
rm -fr /var/cache/gdm/.cache/gnome-shell/runtime-state*
|
||||||
|
|
||||||
# make sure there is no pam configuration for gdm service in base system
|
# make sure there is no pam configuration for gdm service in base system
|
||||||
if ! checkyesno gdm_preserve_base_pam_conf && [ -f /etc/pam.d/gdm ]; then
|
if ! checkyesno gdm_preserve_base_pam_conf && [ -f /etc/pam.d/gdm ]; then
|
||||||
|
|||||||
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
|
+++ common/gdm-common.c
|
||||||
@@ -36,7 +36,9 @@
|
@@ -36,8 +36,13 @@
|
||||||
|
|
||||||
#include "gdm-common.h"
|
#include "gdm-common.h"
|
||||||
|
|
||||||
+#ifdef WITH_SYSTEMD
|
+#if defined(WITH_SYSTEMD)
|
||||||
#include <systemd/sd-login.h>
|
#include <systemd/sd-login.h>
|
||||||
|
+#elif defined(WITH_CONSOLE_KIT)
|
||||||
|
+#include <ConsoleKit/sd-login.h>
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
|
+
|
||||||
#define GDM_DBUS_NAME "org.gnome.DisplayManager"
|
#define GDM_DBUS_NAME "org.gnome.DisplayManager"
|
||||||
#define GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH "/org/gnome/DisplayManager/LocalDisplayFactory"
|
#define GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH "/org/gnome/DisplayManager/LocalDisplayFactory"
|
||||||
@@ -352,6 +354,412 @@ create_transient_display (GDBusConnection *connection,
|
#define GDM_DBUS_LOCAL_DISPLAY_FACTORY_INTERFACE "org.gnome.DisplayManager.LocalDisplayFactory"
|
||||||
return TRUE;
|
@@ -368,15 +373,22 @@ gdm_activate_session_by_id (GDBusConnection *connectio
|
||||||
}
|
g_return_val_if_fail (session_id != NULL, FALSE);
|
||||||
|
|
||||||
+#ifdef WITH_CONSOLE_KIT
|
|
||||||
+int
|
|
||||||
+sd_seat_can_graphical(const char *seat)
|
|
||||||
+{
|
|
||||||
+ // XXX
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_session_get_service(const char *session,
|
|
||||||
+ char **service)
|
|
||||||
+{
|
|
||||||
+ GError *local_error = NULL;
|
|
||||||
+ GVariant *reply;
|
|
||||||
+ const char *value;
|
|
||||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
|
||||||
+
|
|
||||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
|
||||||
+ return -ENXIO;
|
|
||||||
+
|
|
||||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
|
||||||
+ if (connection == NULL) {
|
|
||||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ CK_NAME,
|
|
||||||
+ session,
|
|
||||||
+ CK_SESSION_INTERFACE,
|
|
||||||
+ "GetSessionService",
|
|
||||||
+ NULL,
|
|
||||||
+ G_VARIANT_TYPE ("(s)"),
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1,
|
|
||||||
+ NULL, &local_error);
|
|
||||||
+ if (reply == NULL) {
|
|
||||||
+ g_warning ("Unable to determine session service: %s", local_error ? local_error->message : "");
|
|
||||||
+ g_error_free (local_error);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_get (reply, "(s)", &value);
|
|
||||||
+ g_variant_unref (reply);
|
|
||||||
+
|
|
||||||
+ *service = g_strdup (value);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_session_get_uid(const char *session,
|
|
||||||
+ uid_t *uid)
|
|
||||||
+{
|
|
||||||
+ GError *local_error = NULL;
|
|
||||||
+ GVariant *reply;
|
|
||||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
|
||||||
+ uid_t local_uid;
|
|
||||||
+
|
|
||||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
|
||||||
+ return -ENXIO;
|
|
||||||
+
|
|
||||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
|
||||||
+ if (connection == NULL) {
|
|
||||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ CK_NAME,
|
|
||||||
+ session,
|
|
||||||
+ CK_SESSION_INTERFACE,
|
|
||||||
+ "GetUnixUser",
|
|
||||||
+ NULL,
|
|
||||||
+ G_VARIANT_TYPE ("(u)"),
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1,
|
|
||||||
+ NULL, &local_error);
|
|
||||||
+ if (reply == NULL) {
|
|
||||||
+ g_warning ("Unable to get session for unix service: %s", local_error ? local_error->message : "");
|
|
||||||
+ g_error_free (local_error);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_get (reply, "(u)", &local_uid);
|
|
||||||
+ g_variant_unref (reply);
|
|
||||||
+
|
|
||||||
+ *uid = local_uid;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_seat_get_sessions(const char *seat,
|
|
||||||
+ char ***sessions,
|
|
||||||
+ uid_t **uid,
|
|
||||||
+ unsigned int *n_uids)
|
|
||||||
+{
|
|
||||||
+ GError *local_error = NULL;
|
|
||||||
+ GVariant *reply;
|
|
||||||
+ GVariantIter *iter;
|
|
||||||
+ gchar *value = NULL;
|
|
||||||
+ glong nchild;
|
|
||||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
|
||||||
+
|
|
||||||
+ if (seat == NULL || !g_variant_is_object_path (seat))
|
|
||||||
+ return -ENXIO;
|
|
||||||
+
|
|
||||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
|
||||||
+ if (connection == NULL) {
|
|
||||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ CK_NAME,
|
|
||||||
+ seat,
|
|
||||||
+ CK_SEAT_INTERFACE,
|
|
||||||
+ "GetSessions",
|
|
||||||
+ NULL,
|
|
||||||
+ G_VARIANT_TYPE ("(ao)"),
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1,
|
|
||||||
+ NULL, &local_error);
|
|
||||||
+ if (reply == NULL) {
|
|
||||||
+ g_warning ("Unable to list sessions: %s", local_error->message);
|
|
||||||
+ g_error_free (local_error);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_get (reply, "(ao)", &iter);
|
|
||||||
+ g_variant_unref (reply);
|
|
||||||
+
|
|
||||||
+ nchild = g_variant_iter_n_children(iter);
|
|
||||||
+ *sessions = calloc(nchild, sizeof(gchar *));
|
|
||||||
+ if (*sessions == NULL) {
|
|
||||||
+ g_warning ("Unable to allocate memory for sessions array: %s", g_strerror(errno));
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ while (g_variant_iter_next (iter, "o", &value)) {
|
|
||||||
+ (*sessions)[nchild - 1] = g_strdup(value);
|
|
||||||
+ }
|
|
||||||
+ (*sessions)[nchild] = NULL;
|
|
||||||
+
|
|
||||||
+ g_variant_iter_free (iter);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_session_get_seat(const char *session,
|
|
||||||
+ char **seat)
|
|
||||||
+{
|
|
||||||
+ GError *local_error = NULL;
|
|
||||||
+ GVariant *reply;
|
|
||||||
+ const char *value;
|
|
||||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
|
||||||
+
|
|
||||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
|
||||||
+ return -ENXIO;
|
|
||||||
+
|
|
||||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
|
||||||
+ if (connection == NULL) {
|
|
||||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ CK_NAME,
|
|
||||||
+ session,
|
|
||||||
+ CK_SESSION_INTERFACE,
|
|
||||||
+ "GetSeatId",
|
|
||||||
+ NULL, /* parameters */
|
|
||||||
+ G_VARIANT_TYPE ("(o)"),
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1,
|
|
||||||
+ NULL, &local_error);
|
|
||||||
+ if (reply == NULL) {
|
|
||||||
+ g_warning ("Unable to determine seat: %s", local_error ? local_error->message : "");
|
|
||||||
+ g_error_free (local_error);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_get (reply, "(o)", &value);
|
|
||||||
+ g_variant_unref (reply);
|
|
||||||
+
|
|
||||||
+ *seat = g_strdup(value);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_pid_get_session(pid_t pid, char **session)
|
|
||||||
+{
|
|
||||||
+ GError *local_error = NULL;
|
|
||||||
+ GVariant *reply;
|
|
||||||
+ const char *value;
|
|
||||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
|
||||||
+
|
|
||||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
|
||||||
+ if (connection == NULL) {
|
|
||||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ CK_NAME,
|
|
||||||
+ CK_MANAGER_PATH,
|
|
||||||
+ CK_MANAGER_INTERFACE,
|
|
||||||
+ "GetSessionForUnixProcess",
|
|
||||||
+ g_variant_new ("(u)", pid),
|
|
||||||
+ G_VARIANT_TYPE ("(o)"),
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1,
|
|
||||||
+ NULL, &local_error);
|
|
||||||
+ if (reply == NULL) {
|
|
||||||
+ g_warning ("Unable to list sessions: %s", local_error ? local_error->message : "");
|
|
||||||
+ g_error_free (local_error);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_get (reply, "(o)", &value);
|
|
||||||
+ g_variant_unref (reply);
|
|
||||||
+
|
|
||||||
+ *session = g_strdup (value);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_session_get_type(const char *session, char **type)
|
|
||||||
+{
|
|
||||||
+ GError *local_error = NULL;
|
|
||||||
+ GVariant *reply;
|
|
||||||
+ const char *value;
|
|
||||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
|
||||||
+
|
|
||||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
|
||||||
+ return -ENXIO;
|
|
||||||
+
|
|
||||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
|
||||||
+ if (connection == NULL) {
|
|
||||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ CK_NAME,
|
|
||||||
+ session,
|
|
||||||
+ CK_SESSION_INTERFACE,
|
|
||||||
+ "GetSessionType",
|
|
||||||
+ NULL,
|
|
||||||
+ G_VARIANT_TYPE ("(s)"),
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1,
|
|
||||||
+ NULL, &local_error);
|
|
||||||
+ if (reply == NULL) {
|
|
||||||
+ g_warning ("Unable to determine session type: %s", local_error ? local_error->message : "");
|
|
||||||
+ g_error_free (local_error);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_get (reply, "(s)", &value);
|
|
||||||
+ g_variant_unref (reply);
|
|
||||||
+
|
|
||||||
+ *type = g_strdup (value);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_session_get_class(const char *session, char **class)
|
|
||||||
+{
|
|
||||||
+ GError *local_error = NULL;
|
|
||||||
+ GVariant *reply;
|
|
||||||
+ const gchar *value;
|
|
||||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
|
||||||
+
|
|
||||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
|
||||||
+ return -ENXIO;
|
|
||||||
+
|
|
||||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
|
||||||
+ if (connection == NULL) {
|
|
||||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ CK_NAME,
|
|
||||||
+ session,
|
|
||||||
+ CK_SESSION_INTERFACE,
|
|
||||||
+ "GetSessionClass",
|
|
||||||
+ NULL,
|
|
||||||
+ G_VARIANT_TYPE ("(s)"),
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1,
|
|
||||||
+ NULL, &local_error);
|
|
||||||
+ if (reply == NULL) {
|
|
||||||
+ g_warning ("Unable to determine session class: %s", local_error ? local_error->message : "");
|
|
||||||
+ g_error_free (local_error);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_get (reply, "(s)", &value);
|
|
||||||
+ g_variant_unref (reply);
|
|
||||||
+
|
|
||||||
+ *class = g_strdup(value);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_session_get_state(const char *session, char **state)
|
|
||||||
+{
|
|
||||||
+ GError *local_error = NULL;
|
|
||||||
+ GVariant *reply;
|
|
||||||
+ const char *value;
|
|
||||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
|
||||||
+
|
|
||||||
+ if (session == NULL || !g_variant_is_object_path (session))
|
|
||||||
+ return -ENXIO;
|
|
||||||
+
|
|
||||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
|
||||||
+ if (connection == NULL) {
|
|
||||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ CK_NAME,
|
|
||||||
+ session,
|
|
||||||
+ CK_SESSION_INTERFACE,
|
|
||||||
+ "GetSessionState",
|
|
||||||
+ NULL,
|
|
||||||
+ G_VARIANT_TYPE ("(s)"),
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1,
|
|
||||||
+ NULL, &local_error);
|
|
||||||
+ if (reply == NULL) {
|
|
||||||
+ g_warning ("Unable to determine session state: %s", local_error ? local_error->message : "");
|
|
||||||
+ g_error_free (local_error);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_get (reply, "(s)", &value);
|
|
||||||
+ g_variant_unref (reply);
|
|
||||||
+
|
|
||||||
+ *state = g_strdup (value);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_uid_get_sessions(uid_t uid, int require_active, char ***sessions)
|
|
||||||
+{
|
|
||||||
+ GError *local_error = NULL;
|
|
||||||
+ GVariant *reply;
|
|
||||||
+ GVariantIter *iter;
|
|
||||||
+ gchar *value = NULL;
|
|
||||||
+ glong nchild;
|
|
||||||
+ g_autoptr(GDBusConnection) connection = NULL;
|
|
||||||
+
|
|
||||||
+ connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &local_error);
|
|
||||||
+ if (connection == NULL) {
|
|
||||||
+ g_warning ("Failed to connect to the D-Bus daemon: %s", local_error->message);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ CK_NAME,
|
|
||||||
+ CK_MANAGER_PATH,
|
|
||||||
+ CK_MANAGER_INTERFACE,
|
|
||||||
+ "GetSessionsForUnixUser",
|
|
||||||
+ g_variant_new ("(u)", uid),
|
|
||||||
+ G_VARIANT_TYPE ("(ao)"),
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1,
|
|
||||||
+ NULL, &local_error);
|
|
||||||
+ if (reply == NULL) {
|
|
||||||
+ g_warning ("Unable to list sessions: %s", local_error ? local_error->message : "");
|
|
||||||
+ g_error_free (local_error);
|
|
||||||
+ return -ENXIO;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_get (reply, "(ao)", &iter);
|
|
||||||
+ g_variant_unref (reply);
|
|
||||||
+
|
|
||||||
+ nchild = g_variant_iter_n_children(iter);
|
|
||||||
+ *sessions = calloc(nchild, sizeof(gchar *));
|
|
||||||
+ if (*sessions == NULL) {
|
|
||||||
+ g_warning ("Unable to allocate memory for sessions array: %s", g_strerror(errno));
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ while (g_variant_iter_next (iter, "o", &value)) {
|
|
||||||
+ (*sessions)[nchild - 1] = g_strdup(value);
|
|
||||||
+ }
|
|
||||||
+ (*sessions)[nchild] = NULL;
|
|
||||||
+
|
|
||||||
+ g_variant_iter_free (iter);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
gboolean
|
|
||||||
gdm_activate_session_by_id (GDBusConnection *connection,
|
|
||||||
const char *seat_id,
|
|
||||||
@@ -360,6 +768,7 @@ gdm_activate_session_by_id (GDBusConnection *connectio
|
|
||||||
GError *local_error = NULL;
|
|
||||||
GVariant *reply;
|
|
||||||
|
|
||||||
+#if defined(WITH_SYSTEMD)
|
|
||||||
reply = g_dbus_connection_call_sync (connection,
|
reply = g_dbus_connection_call_sync (connection,
|
||||||
|
+#if defined(WITH_SYSTEMD)
|
||||||
"org.freedesktop.login1",
|
"org.freedesktop.login1",
|
||||||
"/org/freedesktop/login1",
|
"/org/freedesktop/login1",
|
||||||
@@ -370,7 +779,41 @@ gdm_activate_session_by_id (GDBusConnection *connectio
|
"org.freedesktop.login1.Manager",
|
||||||
|
+#elif defined(WITH_CONSOLE_KIT)
|
||||||
|
+ "org.freedesktop.ConsoleKit",
|
||||||
|
+ "/org/freedesktop/ConsoleKit/Manager",
|
||||||
|
+ "org.freedesktop.ConsoleKit.Manager",
|
||||||
|
+#endif
|
||||||
|
"ActivateSessionOnSeat",
|
||||||
|
g_variant_new ("(ss)", session_id, seat_id),
|
||||||
|
NULL,
|
||||||
G_DBUS_CALL_FLAGS_NONE,
|
G_DBUS_CALL_FLAGS_NONE,
|
||||||
-1,
|
-1,
|
||||||
NULL, &local_error);
|
cancellable, &local_error);
|
||||||
+#elif defined(WITH_CONSOLE_KIT)
|
|
||||||
+ gboolean ret;
|
|
||||||
+
|
+
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ CK_NAME,
|
|
||||||
+ seat_id,
|
|
||||||
+ CK_SEAT_INTERFACE,
|
|
||||||
+ "CanActivateSessions",
|
|
||||||
+ NULL,
|
|
||||||
+ G_VARIANT_TYPE ("(b)"),
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1,
|
|
||||||
+ NULL, &local_error);
|
|
||||||
if (reply == NULL) {
|
if (reply == NULL) {
|
||||||
+ g_warning ("Unable to determine if can activate sessions: %s", local_error ? local_error->message : "");
|
|
||||||
+ g_error_free (local_error);
|
|
||||||
+ return FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ g_variant_get (reply, "(b)", &ret);
|
|
||||||
+ if (ret != TRUE)
|
|
||||||
+ return ret;
|
|
||||||
+
|
|
||||||
+ reply = g_dbus_connection_call_sync (connection,
|
|
||||||
+ CK_NAME,
|
|
||||||
+ seat_id,
|
|
||||||
+ CK_SEAT_INTERFACE,
|
|
||||||
+ "ActivateSession",
|
|
||||||
+ g_variant_new ("(o)", session_id),
|
|
||||||
+ NULL,
|
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
|
||||||
+ -1,
|
|
||||||
+ NULL, &local_error);
|
|
||||||
+#endif
|
|
||||||
+ if (reply == NULL) {
|
|
||||||
g_warning ("Unable to activate session: %s", local_error->message);
|
g_warning ("Unable to activate session: %s", local_error->message);
|
||||||
g_error_free (local_error);
|
g_error_free (local_error);
|
||||||
return FALSE;
|
@@ -916,7 +928,9 @@ gdm_find_display_session (GPid pid,
|
||||||
@@ -521,7 +964,7 @@ goto_login_session (GDBusConnection *connection,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (! ret && g_strcmp0 (seat_id, "seat0") == 0) {
|
|
||||||
+ if (! ret && g_strcmp0 (seat_id, SEAT_ID) == 0) {
|
|
||||||
res = create_transient_display (connection, error);
|
|
||||||
if (res) {
|
|
||||||
ret = TRUE;
|
|
||||||
@@ -907,7 +1350,9 @@ gdm_find_display_session (GPid pid,
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -1,12 +1,10 @@
|
|||||||
--- common/gdm-common.h.orig 2022-01-12 14:15:56 UTC
|
--- common/gdm-common.h.orig 2023-09-14 15:27:04 UTC
|
||||||
+++ common/gdm-common.h
|
+++ common/gdm-common.h
|
||||||
@@ -29,6 +29,50 @@
|
@@ -29,6 +29,17 @@
|
||||||
|
|
||||||
#define REGISTER_SESSION_TIMEOUT 10
|
#define REGISTER_SESSION_TIMEOUT 10
|
||||||
|
|
||||||
+#if defined(WITH_SYSTEMD)
|
+#if defined(WITH_CONSOLE_KIT)
|
||||||
+#define SEAT_ID "seat0"
|
|
||||||
+#elif defined(WITH_CONSOLE_KIT)
|
|
||||||
+#define CK_NAME "org.freedesktop.ConsoleKit"
|
+#define CK_NAME "org.freedesktop.ConsoleKit"
|
||||||
+#define CK_PATH "/org/freedesktop/ConsoleKit"
|
+#define CK_PATH "/org/freedesktop/ConsoleKit"
|
||||||
+#define CK_INTERFACE "org.freedesktop.ConsoleKit"
|
+#define CK_INTERFACE "org.freedesktop.ConsoleKit"
|
||||||
@ -15,37 +13,6 @@
|
|||||||
+#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
|
+#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
|
||||||
+#define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat"
|
+#define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat"
|
||||||
+#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
|
+#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
|
||||||
+#define SEAT_ID "/org/freedesktop/ConsoleKit/Seat1"
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_pid_get_session(pid_t pid, char **session);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_session_get_uid(const char *session,
|
|
||||||
+ uid_t *uid);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_session_get_class(const char *session, char **class);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_session_get_seat(const char *session,
|
|
||||||
+ char **seat);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_seat_get_sessions(const char *seat,
|
|
||||||
+ char ***sessions,
|
|
||||||
+ uid_t **uid,
|
|
||||||
+ unsigned int *n_uids);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_session_get_state(const char *session, char **state);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_session_get_service(const char *session,
|
|
||||||
+ char **service);
|
|
||||||
+
|
|
||||||
+int
|
|
||||||
+sd_seat_can_graphical(const char *seat);
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
#define VE_IGNORE_EINTR(expr) \
|
#define VE_IGNORE_EINTR(expr) \
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
--- common/gdm-log.c.orig 2022-01-12 14:15:56 UTC
|
--- common/gdm-log.c.orig 2023-03-20 15:42:37 UTC
|
||||||
+++ common/gdm-log.c
|
+++ common/gdm-log.c
|
||||||
@@ -30,7 +30,9 @@
|
@@ -30,7 +30,9 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|||||||
@ -1,19 +1,12 @@
|
|||||||
--- daemon/gdm-display-access-file.c.orig 2022-01-12 14:15:56 UTC
|
--- daemon/gdm-display-access-file.c.orig 2023-09-14 15:27:04 UTC
|
||||||
+++ daemon/gdm-display-access-file.c
|
+++ daemon/gdm-display-access-file.c
|
||||||
@@ -337,9 +337,18 @@ _create_xauth_file_for_user (const char *username,
|
@@ -337,9 +337,11 @@ _create_xauth_file_for_user (const char *username,
|
||||||
g_debug ("GdmDisplayAccessFile: creating %s", auth_filename);
|
g_debug ("GdmDisplayAccessFile: creating %s", auth_filename);
|
||||||
/* mode 00600 */
|
/* mode 00600 */
|
||||||
errno = 0;
|
errno = 0;
|
||||||
- fd = g_open (auth_filename,
|
- fd = g_open (auth_filename,
|
||||||
- O_RDWR | O_CREAT | O_EXCL | O_BINARY,
|
- O_RDWR | O_CREAT | O_EXCL | O_BINARY,
|
||||||
- S_IRUSR | S_IWUSR);
|
- S_IRUSR | S_IWUSR);
|
||||||
+#if defined(__OpenBSD__)
|
|
||||||
+ if (uid == 676) {
|
|
||||||
+ fd = g_open (auth_filename,
|
|
||||||
+ O_RDWR | O_CREAT | O_EXCL | O_BINARY,
|
|
||||||
+ S_IRUSR | S_IWUSR | S_IRGRP);
|
|
||||||
+ } else
|
|
||||||
+#endif
|
|
||||||
+ {
|
+ {
|
||||||
+ fd = g_open (auth_filename,
|
+ fd = g_open (auth_filename,
|
||||||
+ O_RDWR | O_CREAT | O_EXCL | O_BINARY,
|
+ O_RDWR | O_CREAT | O_EXCL | O_BINARY,
|
||||||
@ -22,15 +15,15 @@
|
|||||||
|
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
g_set_error (error,
|
g_set_error (error,
|
||||||
@@ -441,9 +450,9 @@ _get_auth_info_for_display (GdmDisplayAccessFile *file
|
@@ -429,9 +431,9 @@ _get_auth_info_for_display (GdmDisplayAccessFile *file
|
||||||
*
|
*
|
||||||
* https://bugs.freedesktop.org/show_bug.cgi?id=43425
|
* https://bugs.freedesktop.org/show_bug.cgi?id=43425
|
||||||
*/
|
*/
|
||||||
- char localhost[HOST_NAME_MAX + 1] = "";
|
- char localhost[HOST_NAME_MAX + 1] = "";
|
||||||
+ char localhost[256] = "";
|
+ char localhost[_POSIX_HOST_NAME_MAX + 1] = "";
|
||||||
*family = FamilyLocal;
|
*family = FamilyLocal;
|
||||||
- if (gethostname (localhost, HOST_NAME_MAX) == 0) {
|
- if (gethostname (localhost, HOST_NAME_MAX) == 0) {
|
||||||
+ if (gethostname (localhost, 255) == 0) {
|
+ if (gethostname (localhost, _POSIX_HOST_NAME_MAX) == 0) {
|
||||||
*address = g_strdup (localhost);
|
*address = g_strdup (localhost);
|
||||||
} else {
|
} else {
|
||||||
*address = g_strdup ("localhost");
|
*address = g_strdup ("localhost");
|
||||||
|
|||||||
@ -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
|
+++ daemon/gdm-local-display-factory.c
|
||||||
@@ -29,10 +29,12 @@
|
@@ -28,11 +28,15 @@
|
||||||
|
#include <glib-object.h>
|
||||||
#include <gio/gio.h>
|
#include <gio/gio.h>
|
||||||
|
|
||||||
|
+#ifdef WITH_SYSTEMD
|
||||||
#ifdef HAVE_UDEV
|
#ifdef HAVE_UDEV
|
||||||
-#include <gudev/gudev.h>
|
#include <gudev/gudev.h>
|
||||||
+#undef HAVE_UDEV
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+#ifdef WITH_SYSTEMD
|
|
||||||
#include <systemd/sd-login.h>
|
#include <systemd/sd-login.h>
|
||||||
|
+#elif defined(WITH_CONSOLE_KIT)
|
||||||
|
+#include <ConsoleKit/sd-login.h>
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
#include "gdm-common.h"
|
#include "gdm-common.h"
|
||||||
#include "gdm-manager.h"
|
#include "gdm-manager.h"
|
||||||
@@ -68,8 +70,10 @@ struct _GdmLocalDisplayFactory
|
@@ -68,8 +72,10 @@ struct _GdmLocalDisplayFactory
|
||||||
/* FIXME: this needs to be per seat? */
|
/* FIXME: this needs to be per seat? */
|
||||||
guint num_failures;
|
guint num_failures;
|
||||||
|
|
||||||
@ -23,9 +25,9 @@
|
|||||||
guint seat_removed_id;
|
guint seat_removed_id;
|
||||||
+#endif
|
+#endif
|
||||||
guint seat_properties_changed_id;
|
guint seat_properties_changed_id;
|
||||||
|
guint seat_attention_key;
|
||||||
|
|
||||||
gboolean seat0_has_platform_graphics;
|
@@ -108,9 +114,11 @@ static gpointer local_display_factory_object = NULL;
|
||||||
@@ -106,9 +110,11 @@ static gpointer local_display_factory_object = NULL;
|
|
||||||
|
|
||||||
static gboolean gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory);
|
static gboolean gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory);
|
||||||
static gpointer local_display_factory_object = NULL;
|
static gpointer local_display_factory_object = NULL;
|
||||||
@ -37,27 +39,7 @@
|
|||||||
|
|
||||||
G_DEFINE_TYPE (GdmLocalDisplayFactory, gdm_local_display_factory, GDM_TYPE_DISPLAY_FACTORY)
|
G_DEFINE_TYPE (GdmLocalDisplayFactory, gdm_local_display_factory, GDM_TYPE_DISPLAY_FACTORY)
|
||||||
|
|
||||||
@@ -245,9 +251,9 @@ struct GdmDisplayServerConfiguration {
|
@@ -474,6 +482,7 @@ gdm_local_display_factory_create_transient_display (Gd
|
||||||
const char *session_type;
|
|
||||||
} display_server_configuration[] = {
|
|
||||||
#ifdef ENABLE_WAYLAND_SUPPORT
|
|
||||||
- { "wayland", GDM_KEY_WAYLAND_ENABLE, "/usr/bin/Xwayland", "wayland" },
|
|
||||||
+ { "wayland", GDM_KEY_WAYLAND_ENABLE, "/usr/local/bin/Xwayland", "wayland" },
|
|
||||||
#endif
|
|
||||||
- { "xorg", GDM_KEY_XORG_ENABLE, "/usr/bin/Xorg", "x11" },
|
|
||||||
+ { "xorg", GDM_KEY_XORG_ENABLE, X_SERVER, "x11" },
|
|
||||||
{ NULL, NULL, NULL },
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -373,7 +379,6 @@ gdm_local_display_factory_create_transient_display (Gd
|
|
||||||
gboolean ret;
|
|
||||||
GdmDisplay *display = NULL;
|
|
||||||
gboolean is_initial = FALSE;
|
|
||||||
- const char *session_type;
|
|
||||||
g_autofree gchar *preferred_display_server = NULL;
|
|
||||||
|
|
||||||
g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE);
|
|
||||||
@@ -451,6 +456,7 @@ gdm_local_display_factory_create_transient_display (Gd
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,7 +47,7 @@
|
|||||||
static void
|
static void
|
||||||
finish_display_on_seat_if_waiting (GdmDisplayStore *display_store,
|
finish_display_on_seat_if_waiting (GdmDisplayStore *display_store,
|
||||||
GdmDisplay *display,
|
GdmDisplay *display,
|
||||||
@@ -505,6 +511,7 @@ on_session_registered_cb (GObject *gobject,
|
@@ -528,6 +537,7 @@ on_session_registered_cb (GObject *gobject,
|
||||||
|
|
||||||
finish_waiting_displays_on_seat (factory, "seat0");
|
finish_waiting_displays_on_seat (factory, "seat0");
|
||||||
}
|
}
|
||||||
@ -73,51 +55,58 @@
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
on_display_status_changed (GdmDisplay *display,
|
on_display_status_changed (GdmDisplay *display,
|
||||||
@@ -552,7 +559,7 @@ on_display_status_changed (GdmDisplay *dis
|
@@ -560,7 +570,9 @@ on_display_status_changed (GdmDisplay *dis
|
||||||
* if there isn't one.
|
"session-id", &session_id,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
+#ifdef WITH_SYSTEMD
|
||||||
|
sd_seat_get_active (seat_id, &seat_active_session, NULL);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
status = gdm_display_get_status (display);
|
||||||
|
|
||||||
|
@@ -578,12 +590,16 @@ on_display_status_changed (GdmDisplay *dis
|
||||||
|
* screen when the user logs out.
|
||||||
*/
|
*/
|
||||||
if (is_local &&
|
if (is_local &&
|
||||||
- (g_strcmp0 (session_class, "greeter") != 0 || factory->active_vt == GDM_INITIAL_VT)) {
|
+#ifdef WITH_SYSTEMD
|
||||||
|
((g_strcmp0 (session_class, "greeter") != 0 &&
|
||||||
|
(!seat_active_session || g_strcmp0(session_id, seat_active_session) == 0)) ||
|
||||||
|
#if defined(ENABLE_USER_DISPLAY_SERVER)
|
||||||
|
(g_strcmp0 (seat_id, "seat0") == 0 && factory->active_vt == GDM_INITIAL_VT) ||
|
||||||
|
#endif
|
||||||
|
g_strcmp0 (seat_id, "seat0") != 0)) {
|
||||||
|
+#else
|
||||||
+ (g_strcmp0 (session_class, "greeter") != 0)) {
|
+ (g_strcmp0 (session_class, "greeter") != 0)) {
|
||||||
|
+#endif
|
||||||
/* reset num failures */
|
/* reset num failures */
|
||||||
factory->num_failures = 0;
|
factory->num_failures = 0;
|
||||||
|
|
||||||
@@ -741,7 +748,9 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
|
@@ -818,12 +834,15 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
|
||||||
|
g_auto (GStrv) session_types = NULL;
|
||||||
const char *legacy_session_types[] = { "x11", NULL };
|
const char *legacy_session_types[] = { "x11", NULL };
|
||||||
GdmDisplayStore *store;
|
|
||||||
GdmDisplay *display = NULL;
|
GdmDisplay *display = NULL;
|
||||||
+#ifdef WITH_SYSTEMD
|
+#ifdef WITH_SYSTEMD
|
||||||
g_autofree char *login_session_id = NULL;
|
g_autofree char *login_session_id = NULL;
|
||||||
+#endif
|
+#endif
|
||||||
gboolean wayland_enabled = FALSE, xorg_enabled = FALSE;
|
|
||||||
g_autofree gchar *preferred_display_server = NULL;
|
g_autofree gchar *preferred_display_server = NULL;
|
||||||
gboolean falling_back = FALSE;
|
gboolean waiting_on_udev = FALSE;
|
||||||
@@ -781,7 +790,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
|
|
||||||
seat_supports_graphics = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (g_strcmp0 (seat_id, "seat0") == 0) {
|
g_debug ("GdmLocalDisplayFactory: display for seat %s requested", seat_id);
|
||||||
+ if (g_strcmp0 (seat_id, SEAT_ID) == 0) {
|
|
||||||
is_seat0 = TRUE;
|
|
||||||
|
|
||||||
falling_back = factory->num_failures > 0;
|
|
||||||
@@ -869,6 +878,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifdef WITH_SYSTEMD
|
+#ifdef WITH_SYSTEMD
|
||||||
/* If we already have a login window, switch to it */
|
/* If we already have a login window, switch to it */
|
||||||
if (gdm_get_login_window_session_id (seat_id, &login_session_id)) {
|
if (gdm_get_login_window_session_id (seat_id, &login_session_id)) {
|
||||||
GdmDisplay *display;
|
GdmDisplay *display;
|
||||||
@@ -886,6 +896,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
|
@@ -843,6 +862,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
g_debug ("GdmLocalDisplayFactory: Adding display on seat %s", seat_id);
|
preferred_display_server = get_preferred_display_server (factory);
|
||||||
|
|
||||||
@@ -929,6 +940,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
|
@@ -993,6 +1013,7 @@ ensure_display_for_seat (GdmLocalDisplayFactory *facto
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,7 +114,7 @@
|
|||||||
static void
|
static void
|
||||||
delete_display (GdmLocalDisplayFactory *factory,
|
delete_display (GdmLocalDisplayFactory *factory,
|
||||||
const char *seat_id) {
|
const char *seat_id) {
|
||||||
@@ -940,6 +952,7 @@ delete_display (GdmLocalDisplayFactory *factory,
|
@@ -1004,6 +1025,7 @@ delete_display (GdmLocalDisplayFactory *factory,
|
||||||
store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
|
store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
|
||||||
gdm_display_store_foreach_remove (store, lookup_by_seat_id, (gpointer) seat_id);
|
gdm_display_store_foreach_remove (store, lookup_by_seat_id, (gpointer) seat_id);
|
||||||
}
|
}
|
||||||
@ -133,16 +122,15 @@
|
|||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory)
|
gdm_local_display_factory_sync_seats (GdmLocalDisplayFactory *factory)
|
||||||
@@ -951,6 +964,8 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF
|
@@ -1015,6 +1037,7 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF
|
||||||
const char *seat;
|
const char *seat;
|
||||||
|
|
||||||
g_debug ("GdmLocalDisplayFactory: enumerating seats from logind");
|
g_debug ("GdmLocalDisplayFactory: enumerating seats from logind");
|
||||||
+
|
|
||||||
+#ifdef WITH_SYSTEMD
|
+#ifdef WITH_SYSTEMD
|
||||||
result = g_dbus_connection_call_sync (factory->connection,
|
result = g_dbus_connection_call_sync (factory->connection,
|
||||||
"org.freedesktop.login1",
|
"org.freedesktop.login1",
|
||||||
"/org/freedesktop/login1",
|
"/org/freedesktop/login1",
|
||||||
@@ -961,6 +976,18 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF
|
@@ -1025,6 +1048,18 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF
|
||||||
G_DBUS_CALL_FLAGS_NONE,
|
G_DBUS_CALL_FLAGS_NONE,
|
||||||
-1,
|
-1,
|
||||||
NULL, &error);
|
NULL, &error);
|
||||||
@ -161,15 +149,15 @@
|
|||||||
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
g_warning ("GdmLocalDisplayFactory: Failed to issue method call: %s", error->message);
|
g_warning ("GdmLocalDisplayFactory: Failed to issue method call: %s", error->message);
|
||||||
@@ -980,6 +1007,7 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF
|
@@ -1044,6 +1079,7 @@ gdm_local_display_factory_sync_seats (GdmLocalDisplayF
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
+#ifdef WITH_SYSTEMD
|
+#ifdef WITH_SYSTEMD
|
||||||
static void
|
static void
|
||||||
on_seat_new (GDBusConnection *connection,
|
on_seat_activate_greeter (GDBusConnection *connection,
|
||||||
const gchar *sender_name,
|
const gchar *sender_name,
|
||||||
@@ -1093,6 +1121,7 @@ lookup_by_tty (const char *id,
|
@@ -1177,6 +1213,7 @@ lookup_by_tty (const char *id,
|
||||||
|
|
||||||
return g_strcmp0 (tty_to_check, tty_to_find) == 0;
|
return g_strcmp0 (tty_to_check, tty_to_find) == 0;
|
||||||
}
|
}
|
||||||
@ -177,15 +165,15 @@
|
|||||||
|
|
||||||
#if defined(ENABLE_USER_DISPLAY_SERVER)
|
#if defined(ENABLE_USER_DISPLAY_SERVER)
|
||||||
static void
|
static void
|
||||||
@@ -1295,6 +1324,7 @@ on_uevent (GUdevClient *client,
|
@@ -1354,6 +1391,7 @@ on_vt_changed (GIOChannel *source,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+#ifdef WITH_SYSTEMD
|
+#ifdef WITH_SYSTEMD
|
||||||
|
#ifdef HAVE_UDEV
|
||||||
static void
|
static void
|
||||||
gdm_local_display_factory_start_monitor (GdmLocalDisplayFactory *factory)
|
on_uevent (GUdevClient *client,
|
||||||
{
|
@@ -1444,10 +1482,12 @@ gdm_local_display_factory_start_monitor (GdmLocalDispl
|
||||||
@@ -1352,10 +1382,12 @@ gdm_local_display_factory_start_monitor (GdmLocalDispl
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -194,19 +182,19 @@
|
|||||||
static void
|
static void
|
||||||
gdm_local_display_factory_stop_monitor (GdmLocalDisplayFactory *factory)
|
gdm_local_display_factory_stop_monitor (GdmLocalDisplayFactory *factory)
|
||||||
{
|
{
|
||||||
+#ifdef HAVE_UDEV
|
+#ifdef WITH_SYSTEMD
|
||||||
if (factory->uevent_handler_id) {
|
if (factory->uevent_handler_id) {
|
||||||
g_signal_handler_disconnect (factory->gudev_client, factory->uevent_handler_id);
|
g_signal_handler_disconnect (factory->gudev_client, factory->uevent_handler_id);
|
||||||
factory->uevent_handler_id = 0;
|
factory->uevent_handler_id = 0;
|
||||||
@@ -1387,6 +1419,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla
|
@@ -1478,6 +1518,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla
|
||||||
factory->wait_to_finish_timeout_id = 0;
|
g_clear_handle_id (&factory->active_vt_watch_id, g_source_remove);
|
||||||
}
|
g_clear_handle_id (&factory->wait_to_finish_timeout_id, g_source_remove);
|
||||||
#endif
|
#endif
|
||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1441,7 +1474,9 @@ gdm_local_display_factory_start (GdmDisplayFactory *ba
|
@@ -1532,7 +1573,9 @@ gdm_local_display_factory_start (GdmDisplayFactory *ba
|
||||||
factory,
|
factory,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
|||||||
@ -1,38 +1,31 @@
|
|||||||
--- daemon/gdm-manager.c.orig 2022-01-12 14:15:56 UTC
|
--- daemon/gdm-manager.c.orig 2024-05-29 15:50:27 UTC
|
||||||
+++ daemon/gdm-manager.c
|
+++ daemon/gdm-manager.c
|
||||||
@@ -36,7 +36,9 @@
|
@@ -36,7 +36,11 @@
|
||||||
|
|
||||||
#include <act/act-user-manager.h>
|
#include <act/act-user-manager.h>
|
||||||
|
|
||||||
+#ifdef WITH_SYSTEMD
|
+#ifdef WITH_SYSTEMD
|
||||||
#include <systemd/sd-login.h>
|
#include <systemd/sd-login.h>
|
||||||
|
+#elif defined(WITH_CONSOLE_KIT)
|
||||||
|
+#include <ConsoleKit/sd-login.h>
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
#include "gdm-common.h"
|
#include "gdm-common.h"
|
||||||
|
|
||||||
@@ -61,7 +63,7 @@
|
@@ -307,6 +311,7 @@ session_unlock (GdmManager *manager,
|
||||||
#define GDM_MANAGER_PATH GDM_DBUS_PATH "/Manager"
|
|
||||||
#define GDM_MANAGER_DISPLAYS_PATH GDM_DBUS_PATH "/Displays"
|
|
||||||
|
|
||||||
-#define INITIAL_SETUP_USERNAME "gnome-initial-setup"
|
|
||||||
+#define INITIAL_SETUP_USERNAME "_gnome-initial-setup"
|
|
||||||
#define ALREADY_RAN_INITIAL_SETUP_ON_THIS_BOOT GDM_RUN_DIR "/gdm.ran-initial-setup"
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
@@ -304,6 +306,7 @@ session_unlock (GdmManager *manager,
|
|
||||||
|
|
||||||
g_debug ("Unlocking session %s", ssid);
|
g_debug ("Unlocking session %s", ssid);
|
||||||
|
|
||||||
+#if defined(WITH_SYSTEMD)
|
+#if defined(WITH_SYSTEMD)
|
||||||
reply = g_dbus_connection_call_sync (manager->priv->connection,
|
reply = g_dbus_connection_call_sync (manager->connection,
|
||||||
"org.freedesktop.login1",
|
"org.freedesktop.login1",
|
||||||
"/org/freedesktop/login1",
|
"/org/freedesktop/login1",
|
||||||
@@ -321,6 +324,25 @@ session_unlock (GdmManager *manager,
|
@@ -324,6 +329,25 @@ session_unlock (GdmManager *manager,
|
||||||
g_error_free (error);
|
g_error_free (error);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
+#elif defined(WITH_CONSOLE_KIT)
|
+#elif defined(WITH_CONSOLE_KIT)
|
||||||
+ reply = g_dbus_connection_call_sync (manager->priv->connection,
|
+ reply = g_dbus_connection_call_sync (manager->connection,
|
||||||
+ CK_NAME,
|
+ CK_NAME,
|
||||||
+ ssid,
|
+ ssid,
|
||||||
+ CK_SESSION_INTERFACE,
|
+ CK_SESSION_INTERFACE,
|
||||||
@ -53,7 +46,43 @@
|
|||||||
|
|
||||||
g_variant_unref (reply);
|
g_variant_unref (reply);
|
||||||
|
|
||||||
@@ -436,6 +458,7 @@ static char *
|
@@ -380,6 +404,7 @@ is_remote_session (GdmManager *self,
|
||||||
|
const char *session_id,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
+#ifdef WITH_SYSTEMD
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = sd_session_is_remote (session_id);
|
||||||
|
@@ -393,6 +418,27 @@ is_remote_session (GdmManager *self,
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret != FALSE;
|
||||||
|
+#elif defined(WITH_CONSOLE_KIT)
|
||||||
|
+ char *seat = NULL;
|
||||||
|
+ int ret;
|
||||||
|
+ gboolean is_remote;
|
||||||
|
+
|
||||||
|
+ ret = sd_session_get_seat (session_id, &seat);
|
||||||
|
+
|
||||||
|
+ if (ret < 0 && ret != -ENXIO) {
|
||||||
|
+ g_debug ("GdmManager: Error while retrieving seat for session %s: %s",
|
||||||
|
+ session_id, g_strerror (-ret));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (seat != NULL) {
|
||||||
|
+ is_remote = FALSE;
|
||||||
|
+ free (seat);
|
||||||
|
+ } else {
|
||||||
|
+ is_remote = TRUE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return is_remote;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static char *
|
||||||
|
@@ -427,6 +473,7 @@ get_tty_for_session_id (const char *session_id,
|
||||||
get_tty_for_session_id (const char *session_id,
|
get_tty_for_session_id (const char *session_id,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
@ -61,7 +90,7 @@
|
|||||||
int ret;
|
int ret;
|
||||||
char *tty, *out_tty;
|
char *tty, *out_tty;
|
||||||
|
|
||||||
@@ -457,6 +480,9 @@ get_tty_for_session_id (const char *session_id,
|
@@ -448,6 +495,9 @@ get_tty_for_session_id (const char *session_id,
|
||||||
}
|
}
|
||||||
|
|
||||||
return out_tty;
|
return out_tty;
|
||||||
@ -71,32 +100,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -609,6 +635,7 @@ switch_to_compatible_user_session (GdmManager *manager
|
@@ -2101,12 +2151,58 @@ on_user_session_died (GdmSession *session,
|
||||||
|
|
||||||
if (existing_session != NULL) {
|
|
||||||
ssid_to_activate = gdm_session_get_session_id (existing_session);
|
|
||||||
+#ifndef __FreeBSD__
|
|
||||||
if (seat_id != NULL) {
|
|
||||||
res = gdm_activate_session_by_id (manager->priv->connection, seat_id, ssid_to_activate);
|
|
||||||
if (! res) {
|
|
||||||
@@ -616,6 +643,7 @@ switch_to_compatible_user_session (GdmManager *manager
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
res = session_unlock (manager, ssid_to_activate);
|
|
||||||
if (!res) {
|
|
||||||
@@ -1204,7 +1232,7 @@ display_is_on_seat0 (GdmDisplay *display)
|
|
||||||
|
|
||||||
g_object_get (G_OBJECT (display), "seat-id", &seat_id, NULL);
|
|
||||||
|
|
||||||
- if (g_strcmp0 (seat_id, "seat0") != 0) {
|
|
||||||
+ if (g_strcmp0 (seat_id, SEAT_ID) != 0) {
|
|
||||||
is_on_seat0 = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -2019,12 +2047,58 @@ on_user_session_died (GdmSession *session,
|
|
||||||
remove_user_session (manager, session);
|
remove_user_session (manager, session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
--- daemon/gdm-server.c.orig 2022-01-28 21:55:35 UTC
|
--- daemon/gdm-server.c.orig 2024-09-16 13:28:26 UTC
|
||||||
+++ daemon/gdm-server.c
|
+++ daemon/gdm-server.c
|
||||||
@@ -43,7 +43,9 @@
|
@@ -43,7 +43,9 @@
|
||||||
#include <linux/vt.h>
|
#include <linux/vt.h>
|
||||||
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#ifdef ENABLE_SYSTEMD_JOURNAL
|
#ifdef ENABLE_SYSTEMD_JOURNAL
|
||||||
#include <systemd/sd-journal.h>
|
#include <systemd/sd-journal.h>
|
||||||
@@ -84,6 +86,9 @@ struct _GdmServer
|
@@ -86,6 +88,9 @@ struct _GdmServer
|
||||||
char *auth_file;
|
char *auth_file;
|
||||||
|
|
||||||
guint child_watch_id;
|
guint child_watch_id;
|
||||||
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
gboolean is_initial;
|
gboolean is_initial;
|
||||||
};
|
};
|
||||||
@@ -114,13 +119,60 @@ static void gdm_server_finalize (GObject
|
@@ -116,13 +121,60 @@ G_DEFINE_TYPE (GdmServer, gdm_server, G_TYPE_OBJECT)
|
||||||
|
|
||||||
G_DEFINE_TYPE (GdmServer, gdm_server, G_TYPE_OBJECT)
|
G_DEFINE_TYPE (GdmServer, gdm_server, G_TYPE_OBJECT)
|
||||||
|
|
||||||
@ -81,7 +81,7 @@
|
|||||||
static void
|
static void
|
||||||
gdm_server_ready (GdmServer *server)
|
gdm_server_ready (GdmServer *server)
|
||||||
{
|
{
|
||||||
@@ -133,7 +185,26 @@ gdm_server_ready (GdmServer *server)
|
@@ -135,7 +187,26 @@ gdm_server_ready (GdmServer *server)
|
||||||
|
|
||||||
g_signal_emit (server, signals[READY], 0);
|
g_signal_emit (server, signals[READY], 0);
|
||||||
}
|
}
|
||||||
@ -108,7 +108,7 @@
|
|||||||
static GSList *active_servers;
|
static GSList *active_servers;
|
||||||
static gboolean sigusr1_thread_running;
|
static gboolean sigusr1_thread_running;
|
||||||
static GCond sigusr1_thread_cond;
|
static GCond sigusr1_thread_cond;
|
||||||
@@ -199,6 +270,7 @@ gdm_server_launch_sigusr1_thread_if_needed (void)
|
@@ -201,6 +272,7 @@ gdm_server_launch_sigusr1_thread_if_needed (void)
|
||||||
g_mutex_unlock (&sigusr1_thread_mutex);
|
g_mutex_unlock (&sigusr1_thread_mutex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,7 +116,7 @@
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
gdm_server_init_command (GdmServer *server)
|
gdm_server_init_command (GdmServer *server)
|
||||||
@@ -307,10 +379,12 @@ gdm_server_resolve_command_line (GdmServer *server,
|
@@ -310,10 +382,12 @@ gdm_server_resolve_command_line (GdmServer *server,
|
||||||
argv[len++] = g_strdup (server->auth_file);
|
argv[len++] = g_strdup (server->auth_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,7 +129,7 @@
|
|||||||
|
|
||||||
/* If we were compiled with Xserver >= 1.17 we need to specify
|
/* If we were compiled with Xserver >= 1.17 we need to specify
|
||||||
* '-listen tcp' as the X server dosen't listen on tcp sockets
|
* '-listen tcp' as the X server dosen't listen on tcp sockets
|
||||||
@@ -656,11 +730,13 @@ server_child_watch (GPid pid,
|
@@ -653,11 +727,13 @@ server_child_watch (GPid pid,
|
||||||
g_object_unref (server);
|
g_object_unref (server);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
--- daemon/gdm-session-worker-job.c.orig 2022-01-12 14:15:56 UTC
|
--- daemon/gdm-session-worker-job.c.orig 2024-09-16 13:28:26 UTC
|
||||||
+++ daemon/gdm-session-worker-job.c
|
+++ daemon/gdm-session-worker-job.c
|
||||||
@@ -36,7 +36,9 @@
|
@@ -36,7 +36,9 @@
|
||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
--- daemon/gdm-session-worker.c.orig 2022-03-21 18:12:40 UTC
|
--- daemon/gdm-session-worker.c.orig 2024-09-16 13:28:26 UTC
|
||||||
+++ daemon/gdm-session-worker.c
|
+++ daemon/gdm-session-worker.c
|
||||||
@@ -28,9 +28,11 @@
|
@@ -28,9 +28,11 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -12,17 +12,18 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
@@ -49,7 +51,9 @@
|
@@ -53,8 +55,10 @@
|
||||||
|
|
||||||
#include <X11/Xauth.h>
|
#include <X11/Xauth.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
+#ifdef WITH_SYSTEMD
|
+#ifdef WITH_SYSTEMD
|
||||||
#include <systemd/sd-daemon.h>
|
#include <systemd/sd-daemon.h>
|
||||||
|
#include <systemd/sd-login.h>
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
#ifdef ENABLE_SYSTEMD_JOURNAL
|
#ifdef ENABLE_SYSTEMD_JOURNAL
|
||||||
#include <systemd/sd-journal.h>
|
#include <systemd/sd-journal.h>
|
||||||
@@ -126,6 +130,10 @@ struct GdmSessionWorkerPrivate
|
@@ -130,6 +134,10 @@ struct _GdmSessionWorker
|
||||||
|
|
||||||
int exit_code;
|
int exit_code;
|
||||||
|
|
||||||
@ -33,7 +34,7 @@
|
|||||||
pam_handle_t *pam_handle;
|
pam_handle_t *pam_handle;
|
||||||
|
|
||||||
GPid child_pid;
|
GPid child_pid;
|
||||||
@@ -140,6 +148,11 @@ struct GdmSessionWorkerPrivate
|
@@ -144,6 +152,11 @@ struct _GdmSessionWorker
|
||||||
char *hostname;
|
char *hostname;
|
||||||
char *username;
|
char *username;
|
||||||
char *log_file;
|
char *log_file;
|
||||||
@ -45,7 +46,7 @@
|
|||||||
char *session_id;
|
char *session_id;
|
||||||
uid_t uid;
|
uid_t uid;
|
||||||
gid_t gid;
|
gid_t gid;
|
||||||
@@ -207,6 +220,12 @@ typedef int (* GdmSessionWorkerPamNewMessagesFunc) (in
|
@@ -213,12 +226,223 @@ typedef int (* GdmSessionWorkerPamNewMessagesFunc) (in
|
||||||
struct pam_response **,
|
struct pam_response **,
|
||||||
gpointer);
|
gpointer);
|
||||||
|
|
||||||
@ -58,9 +59,8 @@
|
|||||||
G_DEFINE_TYPE_WITH_CODE (GdmSessionWorker,
|
G_DEFINE_TYPE_WITH_CODE (GdmSessionWorker,
|
||||||
gdm_session_worker,
|
gdm_session_worker,
|
||||||
GDM_DBUS_TYPE_WORKER_SKELETON,
|
GDM_DBUS_TYPE_WORKER_SKELETON,
|
||||||
@@ -214,6 +233,211 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionWorker,
|
G_IMPLEMENT_INTERFACE (GDM_DBUS_TYPE_WORKER,
|
||||||
worker_interface_init)
|
worker_interface_init))
|
||||||
G_ADD_PRIVATE (GdmSessionWorker))
|
|
||||||
|
|
||||||
+#ifdef WITH_CONSOLE_KIT
|
+#ifdef WITH_CONSOLE_KIT
|
||||||
+static gboolean
|
+static gboolean
|
||||||
@ -78,27 +78,27 @@
|
|||||||
+ const char *display_hostname;
|
+ const char *display_hostname;
|
||||||
+ gint32 uid;
|
+ gint32 uid;
|
||||||
+
|
+
|
||||||
+ g_assert (worker->priv->session_cookie == NULL);
|
+ g_assert (worker->session_cookie == NULL);
|
||||||
+
|
+
|
||||||
+ if (worker->priv->x11_display_name != NULL) {
|
+ if (worker->x11_display_name != NULL) {
|
||||||
+ display_name = worker->priv->x11_display_name;
|
+ display_name = worker->x11_display_name;
|
||||||
+ } else {
|
+ } else {
|
||||||
+ display_name = "";
|
+ display_name = "";
|
||||||
+ }
|
+ }
|
||||||
+ if (worker->priv->hostname != NULL) {
|
+ if (worker->hostname != NULL) {
|
||||||
+ display_hostname = worker->priv->hostname;
|
+ display_hostname = worker->hostname;
|
||||||
+ } else {
|
+ } else {
|
||||||
+ display_hostname = "";
|
+ display_hostname = "";
|
||||||
+ }
|
+ }
|
||||||
+ if (worker->priv->display_device != NULL) {
|
+ if (worker->display_device != NULL) {
|
||||||
+ display_device = worker->priv->display_device;
|
+ display_device = worker->display_device;
|
||||||
+ } else {
|
+ } else {
|
||||||
+ display_device = "";
|
+ display_device = "";
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ g_assert (worker->priv->username != NULL);
|
+ g_assert (worker->username != NULL);
|
||||||
+
|
+
|
||||||
+ gdm_get_pwent_for_name (worker->priv->username, &pwent);
|
+ gdm_get_pwent_for_name (worker->username, &pwent);
|
||||||
+ if (pwent == NULL) {
|
+ if (pwent == NULL) {
|
||||||
+ goto out;
|
+ goto out;
|
||||||
+ }
|
+ }
|
||||||
@ -121,21 +121,21 @@
|
|||||||
+ g_variant_builder_add_parsed (&builder, "('x11-display-device', <%s>)", display_device);
|
+ g_variant_builder_add_parsed (&builder, "('x11-display-device', <%s>)", display_device);
|
||||||
+ g_variant_builder_add_parsed (&builder, "('x11-display', <%s>)", display_name);
|
+ g_variant_builder_add_parsed (&builder, "('x11-display', <%s>)", display_name);
|
||||||
+ g_variant_builder_add_parsed (&builder, "('remote-host-name', <%s>)", display_hostname);
|
+ g_variant_builder_add_parsed (&builder, "('remote-host-name', <%s>)", display_hostname);
|
||||||
+ g_variant_builder_add_parsed (&builder, "('is-local', <%b>)", worker->priv->display_is_local);
|
+ g_variant_builder_add_parsed (&builder, "('is-local', <%b>)", worker->display_is_local);
|
||||||
+
|
+
|
||||||
+ worker->priv->session_type = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_TYPE");
|
+ worker->session_type = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_TYPE");
|
||||||
+ if (worker->priv->session_type != NULL) {
|
+ if (worker->session_type != NULL) {
|
||||||
+ g_variant_builder_add_parsed (&builder, "('session-type', <%s>)", worker->priv->session_type);
|
+ g_variant_builder_add_parsed (&builder, "('session-type', <%s>)", worker->session_type);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ worker->priv->session_class = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_CLASS");
|
+ worker->session_class = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_CLASS");
|
||||||
+ if (worker->priv->session_class != NULL) {
|
+ if (worker->session_class != NULL) {
|
||||||
+ g_variant_builder_add_parsed (&builder, "('session-class', <%s>)", worker->priv->session_class);
|
+ g_variant_builder_add_parsed (&builder, "('session-class', <%s>)", worker->session_class);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ worker->priv->session_service = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_SERVICE");
|
+ worker->session_service = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_SERVICE");
|
||||||
+ if (worker->priv->session_service != NULL) {
|
+ if (worker->session_service != NULL) {
|
||||||
+ g_variant_builder_add_parsed (&builder, "('session-service', <%s>)", worker->priv->session_service);
|
+ g_variant_builder_add_parsed (&builder, "('session-service', <%s>)", worker->session_service);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ parameters = g_variant_builder_end (&builder);
|
+ parameters = g_variant_builder_end (&builder);
|
||||||
@ -159,12 +159,12 @@
|
|||||||
+ goto out;
|
+ goto out;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ g_variant_get (reply, "(s)", &worker->priv->session_cookie);
|
+ g_variant_get (reply, "(s)", &worker->session_cookie);
|
||||||
+
|
+
|
||||||
+ g_variant_unref (reply);
|
+ g_variant_unref (reply);
|
||||||
+
|
+
|
||||||
+out:
|
+out:
|
||||||
+ return worker->priv->session_cookie != NULL;
|
+ return worker->session_cookie != NULL;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static void
|
+static void
|
||||||
@ -175,7 +175,7 @@
|
|||||||
+ GError *error = NULL;
|
+ GError *error = NULL;
|
||||||
+ gboolean was_closed;
|
+ gboolean was_closed;
|
||||||
+
|
+
|
||||||
+ if (worker->priv->session_cookie == NULL) {
|
+ if (worker->session_cookie == NULL) {
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -195,7 +195,7 @@
|
|||||||
+ CK_MANAGER_PATH,
|
+ CK_MANAGER_PATH,
|
||||||
+ CK_MANAGER_INTERFACE,
|
+ CK_MANAGER_INTERFACE,
|
||||||
+ "CloseSession",
|
+ "CloseSession",
|
||||||
+ g_variant_new ("(s)", worker->priv->session_cookie),
|
+ g_variant_new ("(s)", worker->session_cookie),
|
||||||
+ G_VARIANT_TYPE ("(b)"),
|
+ G_VARIANT_TYPE ("(b)"),
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
+ G_DBUS_CALL_FLAGS_NONE,
|
||||||
+ -1,
|
+ -1,
|
||||||
@ -217,7 +217,7 @@
|
|||||||
+ g_variant_unref (reply);
|
+ g_variant_unref (reply);
|
||||||
+
|
+
|
||||||
+out:
|
+out:
|
||||||
+ g_clear_pointer (&worker->priv->session_cookie,
|
+ g_clear_pointer (&worker->session_cookie,
|
||||||
+ (GDestroyNotify) g_free);
|
+ (GDestroyNotify) g_free);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
@ -245,7 +245,7 @@
|
|||||||
+ CK_MANAGER_PATH,
|
+ CK_MANAGER_PATH,
|
||||||
+ CK_MANAGER_INTERFACE,
|
+ CK_MANAGER_INTERFACE,
|
||||||
+ "GetSessionForCookie",
|
+ "GetSessionForCookie",
|
||||||
+ g_variant_new ("(s)", worker->priv->session_cookie),
|
+ g_variant_new ("(s)", worker->session_cookie),
|
||||||
+ G_VARIANT_TYPE ("(o)"),
|
+ G_VARIANT_TYPE ("(o)"),
|
||||||
+ G_DBUS_CALL_FLAGS_NONE,
|
+ G_DBUS_CALL_FLAGS_NONE,
|
||||||
+ -1,
|
+ -1,
|
||||||
@ -270,25 +270,15 @@
|
|||||||
/* adapted from glib script_execute */
|
/* adapted from glib script_execute */
|
||||||
static void
|
static void
|
||||||
script_execute (const gchar *file,
|
script_execute (const gchar *file,
|
||||||
@@ -670,7 +894,9 @@ gdm_session_worker_process_pam_message (GdmSessionWork
|
@@ -972,6 +1196,7 @@ gdm_session_worker_stop_auditor (GdmSessionWorker *wor
|
||||||
char *user_answer;
|
worker->auditor = NULL;
|
||||||
gboolean res;
|
|
||||||
char *utf8_msg;
|
|
||||||
+#ifdef PAM_RADIO_TYPE
|
|
||||||
char *msg;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
if (response != NULL) {
|
|
||||||
*response = NULL;
|
|
||||||
@@ -914,6 +1140,7 @@ gdm_session_worker_stop_auditor (GdmSessionWorker *wor
|
|
||||||
worker->priv->auditor = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+#ifdef WITH_SYSTEMD
|
+#ifdef WITH_SYSTEMD
|
||||||
static void
|
static void
|
||||||
on_release_display (int signal)
|
on_release_display (int signal)
|
||||||
{
|
{
|
||||||
@@ -1056,6 +1283,7 @@ jump_to_vt (GdmSessionWorker *worker,
|
@@ -1114,6 +1339,7 @@ jump_to_vt (GdmSessionWorker *worker,
|
||||||
|
|
||||||
close (active_vt_tty_fd);
|
close (active_vt_tty_fd);
|
||||||
}
|
}
|
||||||
@ -296,7 +286,7 @@
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
gdm_session_worker_set_state (GdmSessionWorker *worker,
|
gdm_session_worker_set_state (GdmSessionWorker *worker,
|
||||||
@@ -1158,7 +1386,9 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
|
@@ -1216,7 +1442,9 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
|
||||||
{
|
{
|
||||||
struct pam_conv pam_conversation;
|
struct pam_conv pam_conversation;
|
||||||
int error_code;
|
int error_code;
|
||||||
@ -304,9 +294,9 @@
|
|||||||
char tty_string[256];
|
char tty_string[256];
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
g_assert (worker->priv->pam_handle == NULL);
|
g_assert (service != NULL);
|
||||||
|
g_assert (worker->pam_handle == NULL);
|
||||||
@@ -1230,6 +1460,10 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
|
@@ -1297,6 +1525,10 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
|
||||||
gdm_session_worker_set_environment_variable (worker, "XDG_SEAT", seat_id);
|
gdm_session_worker_set_environment_variable (worker, "XDG_SEAT", seat_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -317,36 +307,34 @@
|
|||||||
if (strcmp (service, "gdm-launch-environment") == 0) {
|
if (strcmp (service, "gdm-launch-environment") == 0) {
|
||||||
gdm_session_worker_set_environment_variable (worker, "XDG_SESSION_CLASS", "greeter");
|
gdm_session_worker_set_environment_variable (worker, "XDG_SESSION_CLASS", "greeter");
|
||||||
}
|
}
|
||||||
@@ -1237,12 +1471,14 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
|
@@ -1304,13 +1536,6 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
|
||||||
g_debug ("GdmSessionWorker: state SETUP_COMPLETE");
|
g_debug ("GdmSessionWorker: state SETUP_COMPLETE");
|
||||||
gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE);
|
gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SETUP_COMPLETE);
|
||||||
|
|
||||||
+#ifdef WITH_SYSTEMD
|
- if (g_strcmp0 (seat_id, "seat0") == 0 && worker->seat0_has_vts) {
|
||||||
/* Temporarily set PAM_TTY with the login VT,
|
- /* Temporarily set PAM_TTY with the login VT,
|
||||||
PAM_TTY will be reset with the users VT right before the user session is opened */
|
- PAM_TTY will be reset with the users VT right before the user session is opened */
|
||||||
g_snprintf (tty_string, 256, "/dev/tty%d", GDM_INITIAL_VT);
|
- g_snprintf (tty_string, 256, "/dev/tty%d", GDM_INITIAL_VT);
|
||||||
pam_set_item (worker->priv->pam_handle, PAM_TTY, tty_string);
|
- pam_set_item (worker->pam_handle, PAM_TTY, tty_string);
|
||||||
|
- }
|
||||||
|
-
|
||||||
if (!display_is_local)
|
if (!display_is_local)
|
||||||
worker->priv->password_is_required = TRUE;
|
worker->password_is_required = TRUE;
|
||||||
+#endif
|
|
||||||
|
|
||||||
out:
|
@@ -1621,7 +1846,11 @@ _lookup_passwd_info (const char *username,
|
||||||
if (error_code != PAM_SUCCESS) {
|
|
||||||
@@ -1545,7 +1781,11 @@ _lookup_passwd_info (const char *username,
|
|
||||||
if (passwd_entry->pw_shell != NULL && passwd_entry->pw_shell[0] != '\0') {
|
if (passwd_entry->pw_shell != NULL && passwd_entry->pw_shell[0] != '\0') {
|
||||||
*shellp = g_strdup (passwd_entry->pw_shell);
|
*shellp = g_strdup (passwd_entry->pw_shell);
|
||||||
} else {
|
} else {
|
||||||
- *shellp = g_strdup ("/bin/bash");
|
+#if defined(__FreeBSD__)
|
||||||
+#if defined(__OpenBSD__)
|
|
||||||
+ *shellp = g_strdup ("/bin/ksh");
|
|
||||||
+#else
|
|
||||||
+ *shellp = g_strdup ("/bin/sh");
|
+ *shellp = g_strdup ("/bin/sh");
|
||||||
|
+#else
|
||||||
|
*shellp = g_strdup ("/bin/bash");
|
||||||
+#endif
|
+#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
@@ -1689,6 +1929,20 @@ gdm_session_worker_get_environment (GdmSessionWorker *
|
@@ -1760,6 +1989,20 @@ gdm_session_worker_get_environment (GdmSessionWorker *
|
||||||
return (const char * const *) pam_getenvlist (worker->priv->pam_handle);
|
return (const char * const *) pam_getenvlist (worker->pam_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
+#ifdef WITH_CONSOLE_KIT
|
+#ifdef WITH_CONSOLE_KIT
|
||||||
@ -355,10 +343,10 @@
|
|||||||
+{
|
+{
|
||||||
+ open_ck_session (worker);
|
+ open_ck_session (worker);
|
||||||
+
|
+
|
||||||
+ if (worker->priv->session_cookie != NULL) {
|
+ if (worker->session_cookie != NULL) {
|
||||||
+ gdm_session_worker_set_environment_variable (worker,
|
+ gdm_session_worker_set_environment_variable (worker,
|
||||||
+ "XDG_SESSION_COOKIE",
|
+ "XDG_SESSION_COOKIE",
|
||||||
+ worker->priv->session_cookie);
|
+ worker->session_cookie);
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
+#endif
|
+#endif
|
||||||
@ -366,7 +354,7 @@
|
|||||||
static gboolean
|
static gboolean
|
||||||
run_script (GdmSessionWorker *worker,
|
run_script (GdmSessionWorker *worker,
|
||||||
const char *dir)
|
const char *dir)
|
||||||
@@ -1766,6 +2020,10 @@ session_worker_child_watch (GPid pid,
|
@@ -1837,6 +2080,10 @@ session_worker_child_watch (GPid pid,
|
||||||
: WIFSIGNALED (status) ? WTERMSIG (status)
|
: WIFSIGNALED (status) ? WTERMSIG (status)
|
||||||
: -1);
|
: -1);
|
||||||
|
|
||||||
@ -376,8 +364,8 @@
|
|||||||
+
|
+
|
||||||
gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS);
|
gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS);
|
||||||
|
|
||||||
worker->priv->child_pid = -1;
|
worker->child_pid = -1;
|
||||||
@@ -1978,6 +2236,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
@@ -2037,6 +2284,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
||||||
|
|
||||||
error_code = PAM_SUCCESS;
|
error_code = PAM_SUCCESS;
|
||||||
|
|
||||||
@ -385,15 +373,15 @@
|
|||||||
/* If we're in new vt mode, jump to the new vt now. There's no need to jump for
|
/* If we're in new vt mode, jump to the new vt now. There's no need to jump for
|
||||||
* the other two modes: in the logind case, the session will activate itself when
|
* the other two modes: in the logind case, the session will activate itself when
|
||||||
* ready, and in the reuse server case, we're already on the correct VT. */
|
* ready, and in the reuse server case, we're already on the correct VT. */
|
||||||
@@ -1986,6 +2245,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
@@ -2045,6 +2293,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
||||||
jump_to_vt (worker, worker->priv->session_vt);
|
jump_to_vt (worker, worker->session_vt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
if (!worker->priv->is_program_session && !run_script (worker, GDMCONFDIR "/PostLogin")) {
|
if (!worker->is_program_session && !run_script (worker, GDMCONFDIR "/PostLogin")) {
|
||||||
g_set_error (error,
|
g_set_error (error,
|
||||||
@@ -2048,6 +2308,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
@@ -2107,6 +2356,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
||||||
_exit (EXIT_FAILURE);
|
_exit (EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -401,7 +389,7 @@
|
|||||||
/* Take control of the tty
|
/* Take control of the tty
|
||||||
*/
|
*/
|
||||||
if (needs_controlling_terminal) {
|
if (needs_controlling_terminal) {
|
||||||
@@ -2055,6 +2316,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
@@ -2114,6 +2364,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
||||||
g_debug ("GdmSessionWorker: could not take control of tty: %m");
|
g_debug ("GdmSessionWorker: could not take control of tty: %m");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -409,7 +397,7 @@
|
|||||||
|
|
||||||
#ifdef HAVE_LOGINCAP
|
#ifdef HAVE_LOGINCAP
|
||||||
if (setusercontext (NULL, passwd_entry, passwd_entry->pw_uid, LOGIN_SETALL) < 0) {
|
if (setusercontext (NULL, passwd_entry, passwd_entry->pw_uid, LOGIN_SETALL) < 0) {
|
||||||
@@ -2186,6 +2448,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
@@ -2242,6 +2493,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -417,7 +405,7 @@
|
|||||||
static gboolean
|
static gboolean
|
||||||
set_up_for_new_vt (GdmSessionWorker *worker)
|
set_up_for_new_vt (GdmSessionWorker *worker)
|
||||||
{
|
{
|
||||||
@@ -2286,6 +2549,7 @@ fail:
|
@@ -2341,6 +2593,7 @@ fail:
|
||||||
close (fd);
|
close (fd);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -425,38 +413,38 @@
|
|||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
set_up_for_current_vt (GdmSessionWorker *worker,
|
set_up_for_current_vt (GdmSessionWorker *worker,
|
||||||
@@ -2353,12 +2617,14 @@ set_up_for_current_vt (GdmSessionWorker *worker,
|
@@ -2410,12 +2663,14 @@ set_up_for_current_vt (GdmSessionWorker *worker,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+#ifdef WITH_SYSTEMD
|
+#ifdef WITH_SYSTEMD
|
||||||
if (g_strcmp0 (worker->priv->display_seat_id, "seat0") == 0) {
|
if (g_strcmp0 (worker->display_seat_id, "seat0") == 0 && worker->seat0_has_vts) {
|
||||||
g_debug ("GdmSessionWorker: setting XDG_VTNR to current vt");
|
g_debug ("GdmSessionWorker: setting XDG_VTNR to current vt");
|
||||||
set_xdg_vtnr_to_current_vt (worker);
|
set_xdg_vtnr_to_current_vt (worker);
|
||||||
} else {
|
} else {
|
||||||
g_debug ("GdmSessionWorker: not setting XDG_VTNR since not seat0");
|
g_debug ("GdmSessionWorker: not setting XDG_VTNR since no VTs on seat");
|
||||||
}
|
}
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
out:
|
}
|
||||||
@@ -2384,6 +2650,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
@@ -2440,6 +2695,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
||||||
break;
|
break;
|
||||||
case GDM_SESSION_DISPLAY_MODE_NEW_VT:
|
case GDM_SESSION_DISPLAY_MODE_NEW_VT:
|
||||||
case GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED:
|
case GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED:
|
||||||
+#ifdef WITH_SYSTEMD
|
+#ifdef WITH_SYSTEMD
|
||||||
if (!set_up_for_new_vt (worker)) {
|
if (!set_up_for_new_vt (worker)) {
|
||||||
g_set_error (error,
|
g_set_error (error,
|
||||||
GDM_SESSION_WORKER_ERROR,
|
GDM_SESSION_WORKER_ERROR,
|
||||||
@@ -2391,6 +2658,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
@@ -2447,6 +2703,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
||||||
"Unable to open VT");
|
"Unable to open VT");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
+#endif
|
+#endif
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2470,8 +2727,16 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
||||||
@@ -2413,8 +2681,16 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
|
|
||||||
g_debug ("GdmSessionWorker: state SESSION_OPENED");
|
g_debug ("GdmSessionWorker: state SESSION_OPENED");
|
||||||
gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SESSION_OPENED);
|
gdm_session_worker_set_state (worker, GDM_SESSION_WORKER_STATE_SESSION_OPENED);
|
||||||
|
|
||||||
@ -471,9 +459,9 @@
|
|||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
if (session_id != NULL) {
|
if (session_id != NULL) {
|
||||||
g_free (worker->priv->session_id);
|
g_free (worker->session_id);
|
||||||
worker->priv->session_id = session_id;
|
worker->session_id = g_steal_pointer (&session_id);
|
||||||
@@ -2968,6 +3244,7 @@ gdm_session_worker_handle_open (GdmDBusWorker
|
@@ -3022,6 +3287,7 @@ gdm_session_worker_handle_open (GdmDBusWorker
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,22 +469,32 @@
|
|||||||
static char **
|
static char **
|
||||||
filter_extensions (const char * const *extensions)
|
filter_extensions (const char * const *extensions)
|
||||||
{
|
{
|
||||||
@@ -2993,6 +3270,7 @@ filter_extensions (const char * const *extensions)
|
@@ -3045,6 +3311,7 @@ filter_extensions (const char * const *extensions)
|
||||||
|
|
||||||
return filtered_extensions;
|
return g_steal_pointer (&filtered_extensions);
|
||||||
}
|
}
|
||||||
+#endif
|
+#endif
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gdm_session_worker_handle_initialize (GdmDBusWorker *object,
|
gdm_session_worker_handle_initialize (GdmDBusWorker *object,
|
||||||
@@ -3012,8 +3290,10 @@ gdm_session_worker_handle_initialize (GdmDBusWorker
|
@@ -3064,8 +3331,10 @@ gdm_session_worker_handle_initialize (GdmDBusWorker
|
||||||
while (g_variant_iter_loop (&iter, "{sv}", &key, &value)) {
|
while (g_variant_iter_loop (&iter, "{sv}", &key, &value)) {
|
||||||
if (g_strcmp0 (key, "service") == 0) {
|
if (g_strcmp0 (key, "service") == 0) {
|
||||||
worker->priv->service = g_variant_dup_string (value, NULL);
|
worker->service = g_variant_dup_string (value, NULL);
|
||||||
+#ifdef SUPPORTS_PAM_EXTENSIONS
|
+#ifdef SUPPORTS_PAM_EXTENSIONS
|
||||||
} else if (g_strcmp0 (key, "extensions") == 0) {
|
} else if (g_strcmp0 (key, "extensions") == 0) {
|
||||||
worker->priv->extensions = filter_extensions (g_variant_get_strv (value, NULL));
|
worker->extensions = filter_extensions (g_variant_get_strv (value, NULL));
|
||||||
+#endif
|
+#endif
|
||||||
} else if (g_strcmp0 (key, "username") == 0) {
|
} else if (g_strcmp0 (key, "username") == 0) {
|
||||||
worker->priv->username = g_variant_dup_string (value, NULL);
|
worker->username = g_variant_dup_string (value, NULL);
|
||||||
} else if (g_strcmp0 (key, "is-program-session") == 0) {
|
} else if (g_strcmp0 (key, "is-program-session") == 0) {
|
||||||
|
@@ -3089,7 +3358,9 @@ gdm_session_worker_handle_initialize (GdmDBusWorker
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef WITH_SYSTEMD
|
||||||
|
worker->seat0_has_vts = sd_seat_can_tty ("seat0");
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
worker->pending_invocation = invocation;
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,16 @@
|
|||||||
--- daemon/gdm-session.c.orig 2022-01-12 14:15:56 UTC
|
--- daemon/gdm-session.c.orig 2024-09-16 13:28:26 UTC
|
||||||
+++ daemon/gdm-session.c
|
+++ daemon/gdm-session.c
|
||||||
@@ -116,6 +116,9 @@ struct _GdmSession
|
@@ -45,7 +45,9 @@
|
||||||
|
|
||||||
|
#include <json-glib/json-glib.h>
|
||||||
|
|
||||||
|
+#ifdef WITH_SYSTEMD
|
||||||
|
#include <systemd/sd-login.h>
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#include "gdm-session.h"
|
||||||
|
#include "gdm-session-glue.h"
|
||||||
|
@@ -120,6 +122,9 @@ struct _GdmSession
|
||||||
|
|
||||||
/* object lifetime scope */
|
/* object lifetime scope */
|
||||||
char *session_type;
|
char *session_type;
|
||||||
@ -10,7 +20,7 @@
|
|||||||
char *display_name;
|
char *display_name;
|
||||||
char *display_hostname;
|
char *display_hostname;
|
||||||
char *display_device;
|
char *display_device;
|
||||||
@@ -371,7 +374,9 @@ get_system_session_dirs (GdmSession *self,
|
@@ -387,7 +392,9 @@ get_system_session_dirs (GdmSession *self,
|
||||||
DATADIR "/xsessions/",
|
DATADIR "/xsessions/",
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -20,3 +30,19 @@
|
|||||||
|
|
||||||
search_array = g_array_new (TRUE, TRUE, sizeof (char *));
|
search_array = g_array_new (TRUE, TRUE, sizeof (char *));
|
||||||
|
|
||||||
|
@@ -3386,6 +3393,7 @@ gdm_session_is_frozen (GdmSession *self)
|
||||||
|
gboolean
|
||||||
|
gdm_session_is_frozen (GdmSession *self)
|
||||||
|
{
|
||||||
|
+#ifdef WITH_SYSTEMD
|
||||||
|
g_autofree char *cgroup = NULL, *path = NULL, *data = NULL;
|
||||||
|
g_auto (GStrv) arr = NULL;
|
||||||
|
|
||||||
|
@@ -3408,6 +3416,7 @@ gdm_session_is_frozen (GdmSession *self)
|
||||||
|
if (g_str_equal (arr[i], "frozen"))
|
||||||
|
return g_str_equal (arr[i + 1], "1");
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
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
|
+++ daemon/gdm-x-session.c
|
||||||
@@ -114,7 +114,7 @@ prepare_auth_file (void)
|
@@ -20,6 +20,7 @@
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
+#include <limits.h>
|
||||||
|
#include <sysexits.h>
|
||||||
|
|
||||||
|
#include "gdm-common.h"
|
||||||
|
@@ -114,7 +115,7 @@ prepare_auth_file (void)
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
gboolean prepared = FALSE;
|
gboolean prepared = FALSE;
|
||||||
Xauth auth_entry = { 0 };
|
Xauth auth_entry = { 0 };
|
||||||
- char localhost[HOST_NAME_MAX + 1] = "";
|
- char localhost[HOST_NAME_MAX + 1] = "";
|
||||||
+ char localhost[256] = "";
|
+ char localhost[_POSIX_HOST_NAME_MAX + 1] = "";
|
||||||
|
|
||||||
g_debug ("Preparing auth file for X server");
|
g_debug ("Preparing auth file for X server");
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ prepare_auth_file (void)
|
@@ -124,7 +125,7 @@ prepare_auth_file (void)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (gethostname (localhost, HOST_NAME_MAX) < 0) {
|
- if (gethostname (localhost, HOST_NAME_MAX) < 0) {
|
||||||
+ if (gethostname (localhost, 255) < 0) {
|
+ if (gethostname (localhost, _POSIX_HOST_NAME_MAX) < 0) {
|
||||||
strncpy (localhost, "localhost", sizeof (localhost) - 1);
|
strncpy (localhost, "localhost", sizeof (localhost) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
--- daemon/main.c.orig 2022-03-21 18:12:40 UTC
|
--- daemon/main.c.orig 2023-03-20 15:42:37 UTC
|
||||||
+++ daemon/main.c
|
+++ daemon/main.c
|
||||||
@@ -281,6 +281,7 @@ is_debug_set (void)
|
@@ -281,6 +281,7 @@ is_debug_set (void)
|
||||||
return debug;
|
return debug;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
--- daemon/meson.build.orig 2022-03-21 18:12:40 UTC
|
--- daemon/meson.build.orig 2024-09-16 13:28:26 UTC
|
||||||
+++ daemon/meson.build
|
+++ daemon/meson.build
|
||||||
@@ -128,6 +128,7 @@ gdm_session_worker = executable('gdm-session-worker',
|
@@ -145,6 +145,7 @@ gdm_session_worker = executable('gdm-session-worker',
|
||||||
gdm_session_worker = executable('gdm-session-worker',
|
gdm_session_worker = executable('gdm-session-worker',
|
||||||
gdm_session_worker_src,
|
gdm_session_worker_src,
|
||||||
dependencies: gdm_session_worker_deps,
|
dependencies: gdm_session_worker_deps,
|
||||||
@ -8,7 +8,7 @@
|
|||||||
include_directories: gdm_session_worker_includes,
|
include_directories: gdm_session_worker_includes,
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: get_option('libexecdir'),
|
install_dir: get_option('libexecdir'),
|
||||||
@@ -211,6 +212,7 @@ gdm_daemon = executable('gdm',
|
@@ -234,6 +235,7 @@ gdm_daemon = executable('gdm',
|
||||||
gdm_daemon = executable('gdm',
|
gdm_daemon = executable('gdm',
|
||||||
[ gdm_daemon_sources, gdm_daemon_gen_sources ],
|
[ gdm_daemon_sources, gdm_daemon_gen_sources ],
|
||||||
dependencies: gdm_daemon_deps,
|
dependencies: gdm_daemon_deps,
|
||||||
|
|||||||
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
|
+++ data/meson.build
|
||||||
@@ -164,41 +164,43 @@ else
|
@@ -13,7 +13,7 @@ foreach file : [ 'Init', 'PreSession', 'PostSession' ]
|
||||||
|
install_data(generated_file,
|
||||||
|
install_dir: gdmconfdir / file,
|
||||||
|
install_mode: 'rwxr-xr-x',
|
||||||
|
- rename: 'Default'
|
||||||
|
+ rename: 'Default.sample'
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
@@ -26,7 +26,7 @@ configure_file(
|
||||||
|
# gdm.conf
|
||||||
|
configure_file(
|
||||||
|
input: 'gdm.conf.in',
|
||||||
|
- output: '@BASENAME@',
|
||||||
|
+ output: 'gdm.conf.sample',
|
||||||
|
configuration: {
|
||||||
|
'GDM_USERNAME': get_option('user'),
|
||||||
|
},
|
||||||
|
@@ -34,10 +34,10 @@ configure_file(
|
||||||
|
)
|
||||||
|
configure_file(
|
||||||
|
input: 'gdm.conf-custom.in',
|
||||||
|
- output: gdm_custom_conf.split('/')[-1],
|
||||||
|
+ output: 'custom.conf.sample',
|
||||||
|
copy: true,
|
||||||
|
install_mode: 'rw-r--r--',
|
||||||
|
- install_dir: run_command(find_program('dirname'), gdm_custom_conf).stdout().strip(),
|
||||||
|
+ install_dir: gdmconfdir,
|
||||||
|
)
|
||||||
|
|
||||||
|
# GSettings schema
|
||||||
|
@@ -163,59 +163,61 @@ endif
|
||||||
service_config.set('PLYMOUTH_QUIT_SERVICE', '')
|
service_config.set('PLYMOUTH_QUIT_SERVICE', '')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
-if get_option('systemdsystemunitdir') != ''
|
-systemdsystemunitdir = get_option('systemdsystemunitdir')
|
||||||
- systemd_systemunitdir = get_option('systemdsystemunitdir')
|
-if systemdsystemunitdir != 'no'
|
||||||
-else
|
- if get_option('systemdsystemunitdir') != ''
|
||||||
- systemd_systemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
|
- systemd_systemunitdir = get_option('systemdsystemunitdir')
|
||||||
-endif
|
- else
|
||||||
|
- assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd system unit dir or disable it')
|
||||||
|
- systemd_systemunitdir = systemd_dep.get_variable(pkgconfig: 'systemdsystemunitdir')
|
||||||
+if host_machine.system() == 'linux'
|
+if host_machine.system() == 'linux'
|
||||||
+ if get_option('systemdsystemunitdir') != ''
|
+ systemdsystemunitdir = get_option('systemdsystemunitdir')
|
||||||
+ systemd_systemunitdir = get_option('systemdsystemunitdir')
|
+ if systemdsystemunitdir != 'no'
|
||||||
+ else
|
+ if get_option('systemdsystemunitdir') != ''
|
||||||
+ systemd_systemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
|
+ systemd_systemunitdir = get_option('systemdsystemunitdir')
|
||||||
+ endif
|
+ else
|
||||||
|
+ assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd system unit dir or disable it')
|
||||||
-if get_option('systemduserunitdir') != ''
|
+ systemd_systemunitdir = systemd_dep.get_variable(pkgconfig: 'systemdsystemunitdir')
|
||||||
- systemd_userunitdir = get_option('systemduserunitdir')
|
+ endif
|
||||||
-else
|
endif
|
||||||
- systemd_userunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir',
|
|
||||||
- define_variable: ['prefix', get_option('prefix')])
|
|
||||||
-endif
|
-endif
|
||||||
+ if get_option('systemduserunitdir') != ''
|
|
||||||
+ systemd_userunitdir = get_option('systemduserunitdir')
|
|
||||||
+ else
|
|
||||||
+ systemd_userunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir',
|
|
||||||
+ define_variable: ['prefix', get_option('prefix')])
|
|
||||||
+ endif
|
|
||||||
|
|
||||||
-configure_file(
|
-systemduserunitdir = get_option('systemduserunitdir')
|
||||||
- input: 'gdm.service.in',
|
-if systemduserunitdir != 'no'
|
||||||
- output: '@BASENAME@',
|
- if get_option('systemduserunitdir') != ''
|
||||||
- configuration: service_config,
|
- systemd_userunitdir = get_option('systemduserunitdir')
|
||||||
- install_dir: systemd_systemunitdir,
|
- else
|
||||||
- format: 'cmake'
|
- assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd user unit dir or disable it')
|
||||||
-)
|
- systemd_userunitdir = systemd_dep.get_variable(pkgconfig: 'systemduserunitdir',
|
||||||
+ configure_file(
|
- pkgconfig_define: ['prefix', get_option('prefix')])
|
||||||
+ input: 'gdm.service.in',
|
+ systemduserunitdir = get_option('systemduserunitdir')
|
||||||
+ output: '@BASENAME@',
|
+ if systemduserunitdir != 'no'
|
||||||
+ configuration: service_config,
|
+ if get_option('systemduserunitdir') != ''
|
||||||
+ install_dir: systemd_systemunitdir,
|
+ systemd_userunitdir = get_option('systemduserunitdir')
|
||||||
+ format: 'cmake'
|
+ else
|
||||||
+ )
|
+ assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd user unit dir or disable it')
|
||||||
|
+ systemd_userunitdir = systemd_dep.get_variable(pkgconfig: 'systemduserunitdir',
|
||||||
|
+ pkgconfig_define: ['prefix', get_option('prefix')])
|
||||||
|
+ endif
|
||||||
|
endif
|
||||||
|
-endif
|
||||||
|
|
||||||
|
-if systemdsystemunitdir != 'no'
|
||||||
|
- configure_file(
|
||||||
|
- input: 'gdm.service.in',
|
||||||
|
- output: '@BASENAME@',
|
||||||
|
- configuration: service_config,
|
||||||
|
- install_dir: systemd_systemunitdir,
|
||||||
|
- format: 'cmake'
|
||||||
|
- )
|
||||||
|
-endif
|
||||||
|
+ if systemdsystemunitdir != 'no'
|
||||||
|
+ configure_file(
|
||||||
|
+ input: 'gdm.service.in',
|
||||||
|
+ output: '@BASENAME@',
|
||||||
|
+ configuration: service_config,
|
||||||
|
+ install_dir: systemd_systemunitdir,
|
||||||
|
+ format: 'cmake'
|
||||||
|
+ )
|
||||||
|
+ endif
|
||||||
|
|
||||||
-gdm_gnome_session_wanted_targets = []
|
-gdm_gnome_session_wanted_targets = []
|
||||||
-foreach component: gdm_gnome_user_session_wanted_components
|
-foreach component: gdm_gnome_user_session_wanted_components
|
||||||
@ -53,25 +102,35 @@
|
|||||||
+ gdm_gnome_session_wanted_targets += 'Wants=@0@.target'.format(component)
|
+ gdm_gnome_session_wanted_targets += 'Wants=@0@.target'.format(component)
|
||||||
+ endforeach
|
+ endforeach
|
||||||
|
|
||||||
-configure_file(
|
-if systemduserunitdir != 'no'
|
||||||
- input: 'session.conf.in',
|
- configure_file(
|
||||||
- output: 'session.conf',
|
- input: 'session.conf.in',
|
||||||
- configuration: {
|
- output: 'session.conf',
|
||||||
- 'requires_component': gdm_gnome_shell_component,
|
- configuration: {
|
||||||
- 'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets),
|
- 'requires_component': gdm_gnome_shell_component,
|
||||||
- },
|
- 'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets),
|
||||||
- install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d',
|
- },
|
||||||
-)
|
- install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d',
|
||||||
+ configure_file(
|
- )
|
||||||
+ input: 'session.conf.in',
|
+ if systemduserunitdir != 'no'
|
||||||
+ output: 'session.conf',
|
+ configure_file(
|
||||||
+ configuration: {
|
+ input: 'session.conf.in',
|
||||||
+ 'requires_component': gdm_gnome_shell_component,
|
+ output: 'session.conf',
|
||||||
+ 'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets),
|
+ configuration: {
|
||||||
+ },
|
+ 'requires_component': gdm_gnome_shell_component,
|
||||||
+ install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d',
|
+ 'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets),
|
||||||
+ )
|
+ },
|
||||||
+endif
|
+ install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d',
|
||||||
|
+ )
|
||||||
|
+ endif
|
||||||
|
endif
|
||||||
|
|
||||||
# XSession
|
# XSession
|
||||||
if get_option('gdm-xsession')
|
if get_option('gdm-xsession') and have_x11_support
|
||||||
|
configure_file(
|
||||||
|
input: 'Xsession.in',
|
||||||
|
- output: '@BASENAME@',
|
||||||
|
+ output: 'Xsession.sample',
|
||||||
|
configuration: {
|
||||||
|
'libexecdir': gdm_prefix / get_option('libexecdir'),
|
||||||
|
'XSESSION_SHELL': get_option('solaris')? '/bin/ksh' : '/bin/sh',
|
||||||
|
|||||||
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
|
+++ meson.build
|
||||||
@@ -37,8 +37,14 @@ config_h_dir = include_directories('.')
|
@@ -48,9 +48,15 @@ endif
|
||||||
config_h_dir = include_directories('.')
|
endif
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
-udev_dep = dependency('udev')
|
-udev_dep = dependency('udev')
|
||||||
-gudev_dep = dependency('gudev-1.0', version: '>= 232')
|
-gudev_dep = dependency('gudev-1.0', version: '>= 232')
|
||||||
+if host_machine.system() == 'linux'
|
+if host_machine.system() == 'linux'
|
||||||
+ udev_dep = dependency('udev')
|
+ udev_dep = dependency('udev')
|
||||||
+ gudev_dep = dependency('gudev-1.0', version: '>= 232')
|
|
||||||
+else
|
+else
|
||||||
+ udev_dep = declare_dependency()
|
+ udev_dep = declare_dependency()
|
||||||
+ gudev_dep = declare_dependency()
|
+ gudev_dep = declare_dependency()
|
||||||
+ udev_dir = '/usr/local/lib/udev/rules.d'
|
|
||||||
+endif
|
+endif
|
||||||
|
|
||||||
glib_min_version = '2.56.0'
|
+gudev_dep = dependency('gudev-1.0', version: '>= 232', required: false)
|
||||||
|
+
|
||||||
@@ -89,17 +95,22 @@ else
|
# PAM
|
||||||
else
|
libpam_dep = cc.find_library('pam')
|
||||||
# what to do, what to do, this is wrong, but this just sets the
|
pam_extensions_supported = cc.has_header_symbol(
|
||||||
# defaults, perhaps this user is cross compiling or some such
|
@@ -123,23 +129,29 @@ endif
|
||||||
- x_path = '/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin'
|
have_xdmcp = false
|
||||||
- x_bin = '/usr/bin/X'
|
|
||||||
+ x_path = '/usr/local/bin/X11:/usr/local/bin:/opt/X11R6/bin'
|
|
||||||
+ x_bin = '/usr/local/bin/X'
|
|
||||||
endif
|
|
||||||
xdmcp_dep = cc.find_library('Xdmcp', required: get_option('xdmcp'))
|
|
||||||
if xdmcp_dep.found() and get_option('tcp-wrappers')
|
|
||||||
libwrap_dep = cc.find_library('wrap')
|
|
||||||
endif
|
endif
|
||||||
# systemd
|
# systemd
|
||||||
-systemd_dep = dependency('systemd')
|
-logind_provider = get_option('logind-provider')
|
||||||
-libsystemd_dep = dependency('libsystemd')
|
-systemd_dep = dependency('systemd', required: false)
|
||||||
-if meson.version().version_compare('>= 0.53')
|
-if logind_provider == 'systemd'
|
||||||
|
- libsystemd_dep = dependency('libsystemd')
|
||||||
|
- logind_dep = libsystemd_dep
|
||||||
|
- systemd_multiseat_x = find_program('systemd-multi-seat-x',
|
||||||
|
- required: false,
|
||||||
|
- dirs: [
|
||||||
|
- systemd_dep.get_variable(pkgconfig: 'systemdutildir'),
|
||||||
|
- '/lib/systemd',
|
||||||
|
- '/usr/lib/systemd',
|
||||||
|
- ])
|
||||||
|
- systemd_x_server = systemd_multiseat_x.found()? systemd_multiseat_x.path() : '/lib/systemd/systemd-multi-seat-x'
|
||||||
+if host_machine.system() == 'linux'
|
+if host_machine.system() == 'linux'
|
||||||
+ systemd_dep = dependency('systemd')
|
+ logind_provider = get_option('logind-provider')
|
||||||
+ libsystemd_dep = dependency('libsystemd')
|
+ systemd_dep = dependency('systemd', required: false)
|
||||||
+else
|
+ if logind_provider == 'systemd'
|
||||||
+ systemd_dep = declare_dependency()
|
+ libsystemd_dep = dependency('libsystemd')
|
||||||
+ libsystemd_dep = declare_dependency()
|
+ logind_dep = libsystemd_dep
|
||||||
|
+ systemd_multiseat_x = find_program('systemd-multi-seat-x',
|
||||||
|
+ required: false,
|
||||||
|
+ dirs: [
|
||||||
|
+ systemd_dep.get_variable(pkgconfig: 'systemdutildir'),
|
||||||
|
+ '/lib/systemd',
|
||||||
|
+ '/usr/lib/systemd',
|
||||||
|
+ ])
|
||||||
|
+ systemd_x_server = systemd_multiseat_x.found()? systemd_multiseat_x.path() : '/lib/systemd/systemd-multi-seat-x'
|
||||||
|
+ else
|
||||||
|
+ elogind_dep = dependency('libelogind')
|
||||||
|
+ logind_dep = elogind_dep
|
||||||
|
+ systemd_x_server = 'disabled'
|
||||||
|
+ endif
|
||||||
|
else
|
||||||
|
- elogind_dep = dependency('libelogind')
|
||||||
|
- logind_dep = elogind_dep
|
||||||
|
- systemd_x_server = 'disabled'
|
||||||
|
+ systemd_dep = dependency('libconsolekit')
|
||||||
|
+ logind_dep = dependency('libconsolekit')
|
||||||
|
+ systemd_x_server = '/lib/systemd/systemd-multi-seat-x'
|
||||||
|
endif
|
||||||
|
# Plymouth
|
||||||
|
plymouth_dep = dependency('ply-boot-client', required: get_option('plymouth'))
|
||||||
|
@@ -292,7 +304,10 @@ conf.set_quoted('X_PATH', x_path)
|
||||||
|
conf.set('WITH_PLYMOUTH', plymouth_dep.found())
|
||||||
|
conf.set_quoted('X_SERVER', x_bin)
|
||||||
|
conf.set_quoted('X_PATH', x_path)
|
||||||
|
-conf.set('HAVE_UDEV', gudev_dep.found())
|
||||||
|
+# Avoid build failure when libgudev is installed
|
||||||
|
+if host_machine.system() == 'linux'
|
||||||
|
+ conf.set('HAVE_UDEV', gudev_dep.found())
|
||||||
+endif
|
+endif
|
||||||
+if host_machine.system() == 'linux'
|
conf.set('HAVE_UT_UT_HOST', utmp_has_host_field)
|
||||||
systemd_multiseat_x = find_program('systemd-multi-seat-x',
|
conf.set('HAVE_UT_UT_PID', utmp_has_pid_field)
|
||||||
required: false,
|
conf.set('HAVE_UT_UT_ID', utmp_has_id_field)
|
||||||
dirs: [
|
@@ -304,6 +319,7 @@ conf.set('ENABLE_IPV6', get_option('ipv6'))
|
||||||
@@ -257,6 +268,7 @@ conf.set('ENABLE_IPV6', get_option('ipv6'))
|
|
||||||
conf.set('HAVE_UT_UT_TV', utmp_has_tv_field)
|
conf.set('HAVE_UT_UT_TV', utmp_has_tv_field)
|
||||||
conf.set('HAVE_UT_UT_SYSLEN', utmp_has_syslen_field)
|
conf.set('HAVE_UT_UT_SYSLEN', utmp_has_syslen_field)
|
||||||
conf.set('ENABLE_IPV6', get_option('ipv6'))
|
conf.set('ENABLE_IPV6', get_option('ipv6'))
|
||||||
|
|||||||
@ -26,8 +26,6 @@ POST-INSTALL)
|
|||||||
${MKDIR} -p ${PKG_PREFIX}/etc/gdm/Sessions
|
${MKDIR} -p ${PKG_PREFIX}/etc/gdm/Sessions
|
||||||
${MKDIR} -p ${PKG_PREFIX}/etc/dm/Sessions
|
${MKDIR} -p ${PKG_PREFIX}/etc/dm/Sessions
|
||||||
|
|
||||||
${CHOWN} -R ${USER}:${GROUP} ${PKG_PREFIX}/etc/gdm/home
|
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
@ -14,7 +14,7 @@ EOM
|
|||||||
To really remove the gdm port, please remove the following
|
To really remove the gdm port, please remove the following
|
||||||
directories manualy:
|
directories manualy:
|
||||||
|
|
||||||
/var/cache/gdm /var/gdm /var/log/gdm and /var/run/gdm
|
/var/cache/gdm /var/log/gdm and /var/run/gdm
|
||||||
|
|
||||||
EOM
|
EOM
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
bin/gdm-screenshot
|
bin/gdm-config
|
||||||
bin/gdmflexiserver
|
bin/gdmflexiserver
|
||||||
@sample etc/dbus-1/system.d/gdm.conf.sample
|
@sample etc/dbus-1/system.d/gdm.conf.sample
|
||||||
@sample %%ETCDIR%%/Init/Default.sample
|
@sample %%ETCDIR%%/Init/Default.sample
|
||||||
@ -7,7 +7,6 @@ bin/gdmflexiserver
|
|||||||
@sample %%ETCDIR%%/PreSession/Default.sample
|
@sample %%ETCDIR%%/PreSession/Default.sample
|
||||||
@sample %%ETCDIR%%/Xsession.sample
|
@sample %%ETCDIR%%/Xsession.sample
|
||||||
@sample %%ETCDIR%%/custom.conf.sample
|
@sample %%ETCDIR%%/custom.conf.sample
|
||||||
@sample %%ETCDIR%%/home/.pulse/client.conf.sample
|
|
||||||
@sample %%ETCDIR%%/locale.conf.sample
|
@sample %%ETCDIR%%/locale.conf.sample
|
||||||
@sample etc/pam.d/gdm-autologin.sample
|
@sample etc/pam.d/gdm-autologin.sample
|
||||||
@sample etc/pam.d/gdm-launch-environment.sample
|
@sample etc/pam.d/gdm-launch-environment.sample
|
||||||
@ -21,6 +20,7 @@ lib/libgdm.so
|
|||||||
lib/libgdm.so.1
|
lib/libgdm.so.1
|
||||||
lib/libgdm.so.1.0.0
|
lib/libgdm.so.1.0.0
|
||||||
lib/security/pam_gdm.so
|
lib/security/pam_gdm.so
|
||||||
|
lib/udev/rules.d/61-gdm.rules
|
||||||
libdata/pkgconfig/gdm.pc
|
libdata/pkgconfig/gdm.pc
|
||||||
libexec/gdm-host-chooser
|
libexec/gdm-host-chooser
|
||||||
libexec/gdm-runtime-config
|
libexec/gdm-runtime-config
|
||||||
@ -59,14 +59,20 @@ share/help/fr/gdm/index.docbook
|
|||||||
share/help/fr/gdm/legal.xml
|
share/help/fr/gdm/legal.xml
|
||||||
share/help/gl/gdm/index.docbook
|
share/help/gl/gdm/index.docbook
|
||||||
share/help/gl/gdm/legal.xml
|
share/help/gl/gdm/legal.xml
|
||||||
|
share/help/hr/gdm/index.docbook
|
||||||
|
share/help/hr/gdm/legal.xml
|
||||||
share/help/hu/gdm/index.docbook
|
share/help/hu/gdm/index.docbook
|
||||||
share/help/hu/gdm/legal.xml
|
share/help/hu/gdm/legal.xml
|
||||||
share/help/id/gdm/index.docbook
|
share/help/id/gdm/index.docbook
|
||||||
share/help/id/gdm/legal.xml
|
share/help/id/gdm/legal.xml
|
||||||
share/help/it/gdm/index.docbook
|
share/help/it/gdm/index.docbook
|
||||||
share/help/it/gdm/legal.xml
|
share/help/it/gdm/legal.xml
|
||||||
|
share/help/ka/gdm/index.docbook
|
||||||
|
share/help/ka/gdm/legal.xml
|
||||||
share/help/ko/gdm/index.docbook
|
share/help/ko/gdm/index.docbook
|
||||||
share/help/ko/gdm/legal.xml
|
share/help/ko/gdm/legal.xml
|
||||||
|
share/help/nl/gdm/index.docbook
|
||||||
|
share/help/nl/gdm/legal.xml
|
||||||
share/help/oc/gdm/index.docbook
|
share/help/oc/gdm/index.docbook
|
||||||
share/help/oc/gdm/legal.xml
|
share/help/oc/gdm/legal.xml
|
||||||
share/help/pt_BR/gdm/index.docbook
|
share/help/pt_BR/gdm/index.docbook
|
||||||
@ -87,6 +93,7 @@ share/help/uk/gdm/index.docbook
|
|||||||
share/help/uk/gdm/legal.xml
|
share/help/uk/gdm/legal.xml
|
||||||
share/help/zh_CN/gdm/index.docbook
|
share/help/zh_CN/gdm/index.docbook
|
||||||
share/help/zh_CN/gdm/legal.xml
|
share/help/zh_CN/gdm/legal.xml
|
||||||
|
share/locale/ab/LC_MESSAGES/gdm.mo
|
||||||
share/locale/af/LC_MESSAGES/gdm.mo
|
share/locale/af/LC_MESSAGES/gdm.mo
|
||||||
share/locale/am/LC_MESSAGES/gdm.mo
|
share/locale/am/LC_MESSAGES/gdm.mo
|
||||||
share/locale/an/LC_MESSAGES/gdm.mo
|
share/locale/an/LC_MESSAGES/gdm.mo
|
||||||
@ -200,15 +207,7 @@ share/locale/zu/LC_MESSAGES/gdm.mo
|
|||||||
@postexec mkdir -p %D/share/xsessions
|
@postexec mkdir -p %D/share/xsessions
|
||||||
@postexec dconf update
|
@postexec dconf update
|
||||||
@postunexec dconf update
|
@postunexec dconf update
|
||||||
@mode 1775
|
@dir /var/cache/gdm
|
||||||
@dir etc/gdm/home
|
|
||||||
@mode
|
|
||||||
@dir %%ETCDIR%%/Sessions
|
|
||||||
@dir etc/dm
|
|
||||||
@dir etc/dm/Sessions
|
|
||||||
@dir share/xsessions
|
|
||||||
@dir /var/cache/gdm/
|
|
||||||
@dir /var/run/gdm/greeter
|
@dir /var/run/gdm/greeter
|
||||||
@dir /var/run/gdm/
|
@dir /var/run/gdm
|
||||||
@dir /var/log/gdm/
|
@dir /var/log/gdm
|
||||||
@postunexec rm -fr /var/gdm
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user