public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: gnome-base/gdm/, gnome-base/gdm/files/
@ 2019-03-19 22:40 Mart Raudsepp
  0 siblings, 0 replies; 6+ messages in thread
From: Mart Raudsepp @ 2019-03-19 22:40 UTC (permalink / raw
  To: gentoo-commits

commit:     003b0f462810dfbeee0edda88243d19983dc3333
Author:     Mart Raudsepp <leio <AT> gentoo <DOT> org>
AuthorDate: Tue Mar 19 21:39:51 2019 +0000
Commit:     Mart Raudsepp <leio <AT> gentoo <DOT> org>
CommitDate: Tue Mar 19 22:39:20 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=003b0f46

gnome-base/gdm: add elogind support

Include a patch from 3.32 that removes long gone legacy argument
to pam_systemd.so, as to make it uniform with the added elogind
support (and not add that legacy arg there too) and be able to
reuse the pam-elogind.patch bits for 3.32 without changes, just
dropping the argument patch.

The elogind support is achieved without configure.ac patches by
making use of the standard PKG_CHECK_MODULES builtin AC_ARG_VAR
provided variable override support and passing elogind values
there as a drop-in replacement. So we don't need an eautoreconf
and maintaing an autotools patch until upstream moves to meson.

Initial VT is put back to 7 for elogind for the time being until
there is more clarity what will happen with startDM.sh and how
things interact with agetty out of the box (potential keyboard
stealing, etc).

Closes: https://bugs.gentoo.org/645348
Package-Manager: Portage-2.3.52, Repoman-2.3.12
Signed-off-by: Mart Raudsepp <leio <AT> gentoo.org>

 .../gdm/files/3.30.3-pam-drop-legacy-arg.patch     |  29 +++
 gnome-base/gdm/files/pam-elogind.patch             |  24 +++
 gnome-base/gdm/gdm-3.30.3-r1.ebuild                | 222 +++++++++++++++++++++
 gnome-base/gdm/metadata.xml                        |   1 +
 4 files changed, 276 insertions(+)

diff --git a/gnome-base/gdm/files/3.30.3-pam-drop-legacy-arg.patch b/gnome-base/gdm/files/3.30.3-pam-drop-legacy-arg.patch
new file mode 100644
index 00000000000..8d82a284bf5
--- /dev/null
+++ b/gnome-base/gdm/files/3.30.3-pam-drop-legacy-arg.patch
@@ -0,0 +1,29 @@
+From a26ed5502622c22daa175861fa9d651a32131cf5 Mon Sep 17 00:00:00 2001
+From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
+Date: Sat, 16 Feb 2019 08:47:45 +0100
+Subject: [PATCH 1/2] pam-exherbo: drop legacy pam_systemd argument
+
+kill-session-processes=1 is long gone
+
+Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
+(cherry picked from commit 13e6666b1e1000d757ac5621a83105110f55e3e3)
+---
+ data/pam-exherbo/gdm-launch-environment.pam | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/data/pam-exherbo/gdm-launch-environment.pam b/data/pam-exherbo/gdm-launch-environment.pam
+index 8c13b3bc..51a8e003 100644
+--- a/data/pam-exherbo/gdm-launch-environment.pam
++++ b/data/pam-exherbo/gdm-launch-environment.pam
+@@ -8,7 +8,7 @@ auth        required    pam_permit.so
+ 
+ password    required    pam_deny.so
+ 
+--session    optional    pam_systemd.so kill-session-processes=1
++-session    optional    pam_systemd.so
+ session     optional    pam_keyinit.so force revoke
+ session     required    pam_succeed_if.so audit quiet_success user = gdm
+ session     required    pam_permit.so
+-- 
+2.17.0
+

diff --git a/gnome-base/gdm/files/pam-elogind.patch b/gnome-base/gdm/files/pam-elogind.patch
new file mode 100644
index 00000000000..e17bed395b5
--- /dev/null
+++ b/gnome-base/gdm/files/pam-elogind.patch
@@ -0,0 +1,24 @@
+From 96e605d6bd832a89f022872492a9c9cb1eb62f66 Mon Sep 17 00:00:00 2001
+From: Mart Raudsepp <leio@gentoo.org>
+Date: Tue, 19 Mar 2019 23:13:29 +0200
+Subject: [PATCH 2/2] pam-exherbo: Support elogind
+
+---
+ data/pam-exherbo/gdm-launch-environment.pam | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/data/pam-exherbo/gdm-launch-environment.pam b/data/pam-exherbo/gdm-launch-environment.pam
+index 51a8e003..c697a528 100644
+--- a/data/pam-exherbo/gdm-launch-environment.pam
++++ b/data/pam-exherbo/gdm-launch-environment.pam
+@@ -8,6 +8,7 @@ auth        required    pam_permit.so
+ 
+ password    required    pam_deny.so
+ 
++-session    optional    pam_elogind.so
+ -session    optional    pam_systemd.so
+ session     optional    pam_keyinit.so force revoke
+ session     required    pam_succeed_if.so audit quiet_success user = gdm
+-- 
+2.17.0
+

diff --git a/gnome-base/gdm/gdm-3.30.3-r1.ebuild b/gnome-base/gdm/gdm-3.30.3-r1.ebuild
new file mode 100644
index 00000000000..fe94fdcdbc4
--- /dev/null
+++ b/gnome-base/gdm/gdm-3.30.3-r1.ebuild
@@ -0,0 +1,222 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+GNOME2_LA_PUNT="yes"
+
+inherit eutils gnome2 pam readme.gentoo-r1 systemd udev user
+
+DESCRIPTION="GNOME Display Manager for managing graphical display servers and user logins"
+HOMEPAGE="https://wiki.gnome.org/Projects/GDM"
+
+SRC_URI="${SRC_URI}
+	branding? ( https://www.mail-archive.com/tango-artists@lists.freedesktop.org/msg00043/tango-gentoo-v1.1.tar.gz )
+"
+
+LICENSE="
+	GPL-2+
+	branding? ( CC-BY-SA-4.0 )
+"
+
+SLOT="0"
+
+IUSE="accessibility audit branding elogind fprint +introspection ipv6 plymouth selinux smartcard systemd tcpd test wayland xinerama"
+REQUIRED_USE="^^ ( elogind systemd )"
+
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sh ~x86"
+
+# NOTE: x11-base/xorg-server dep is for X_SERVER_PATH etc, bug #295686
+# nspr used by smartcard extension
+# dconf, dbus and g-s-d are needed at install time for dconf update
+# We need either systemd or >=openrc-0.12 to restart gdm properly, bug #463784
+COMMON_DEPEND="
+	app-text/iso-codes
+	>=dev-libs/glib-2.44:2
+	>=x11-libs/gtk+-2.91.1:3
+	>=gnome-base/dconf-0.20
+	>=gnome-base/gnome-settings-daemon-3.1.4
+	gnome-base/gsettings-desktop-schemas
+	>=media-libs/fontconfig-2.5.0:1.0
+	>=media-libs/libcanberra-0.4[gtk3]
+	sys-apps/dbus
+	>=sys-apps/accountsservice-0.6.35
+
+	x11-base/xorg-server
+	x11-libs/libXau
+	x11-libs/libX11
+	x11-libs/libXdmcp
+	x11-libs/libXext
+	x11-libs/libxcb
+	>=x11-misc/xdg-utils-1.0.2-r3
+
+	virtual/pam
+	elogind? ( >=sys-auth/elogind-239.3[pam] )
+	systemd? ( >=sys-apps/systemd-186:0=[pam] )
+
+	sys-auth/pambase[elogind?,systemd?]
+
+	audit? ( sys-process/audit )
+	introspection? ( >=dev-libs/gobject-introspection-0.9.12:= )
+	plymouth? ( sys-boot/plymouth )
+	selinux? ( sys-libs/libselinux )
+	tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
+	xinerama? ( x11-libs/libXinerama )
+"
+# XXX: These deps are from session and desktop files in data/ directory
+# fprintd is used via dbus by gdm-fingerprint-extension
+# gnome-session-3.6 needed to avoid freezing with orca
+RDEPEND="${COMMON_DEPEND}
+	>=gnome-base/gnome-session-3.6
+	>=gnome-base/gnome-shell-3.1.90
+	x11-apps/xhost
+
+	accessibility? (
+		>=app-accessibility/orca-3.10
+		gnome-extra/mousetweaks )
+	fprint? (
+		sys-auth/fprintd
+		sys-auth/pam_fprint )
+
+	!gnome-extra/fast-user-switch-applet
+"
+DEPEND="${COMMON_DEPEND}
+	app-text/docbook-xml-dtd:4.1.2
+	dev-util/gdbus-codegen
+	dev-util/glib-utils
+	dev-util/itstool
+	>=sys-devel/gettext-0.19.8
+	virtual/pkgconfig
+	x11-base/xorg-proto
+	test? ( >=dev-libs/check-0.9.4 )
+"
+
+DOC_CONTENTS="
+	To make GDM start at boot with systemd, run:\n
+	# systemctl enable gdm.service\n
+	\n
+	To make GDM start at boot with OpenRC, edit /etc/conf.d to have
+	DISPLAYMANAGER=\"gdm\" and enable the xdm service:\n
+	# rc-update add xdm
+	\n
+	For passwordless login to unlock your keyring, you need to install
+	sys-auth/pambase with USE=gnome-keyring and set an empty password
+	on your keyring. Use app-crypt/seahorse for that.\n
+	\n
+	You may need to install app-crypt/coolkey and sys-auth/pam_pkcs11
+	for smartcard support
+"
+
+pkg_setup() {
+	enewgroup gdm
+	enewgroup video # Just in case it hasn't been created yet
+	enewuser gdm -1 -1 /var/lib/gdm gdm,video
+
+	# For compatibility with certain versions of nvidia-drivers, etc., need to
+	# ensure that gdm user is in the video group
+	if ! egetent group video | grep -q gdm; then
+		# FIXME XXX: is this at all portable, ldap-safe, etc.?
+		# XXX: egetent does not have a 1-argument form, so we can't use it to
+		# get the list of gdm's groups
+		local g=$(groups gdm)
+		elog "Adding user gdm to video group"
+		usermod -G video,${g// /,} gdm || die "Adding user gdm to video group failed"
+	fi
+}
+
+src_prepare() {
+	# ssh-agent handling must be done at xinitrc.d, bug #220603
+	eapply "${FILESDIR}/${PN}-2.32.0-xinitrc-ssh-agent.patch"
+
+	# Gentoo does not have a fingerprint-auth pam stack
+	eapply "${FILESDIR}/${PN}-3.8.4-fingerprint-auth.patch"
+
+	# Drop legacy argument to pam_systemd.so, included in 3.32
+	eapply "${FILESDIR}/${PV}-pam-drop-legacy-arg.patch"
+	# Support pam_elogind.so in gdm-launch-environment.pam
+	eapply "${FILESDIR}/pam-elogind.patch"
+
+	# Show logo when branding is enabled
+	use branding && eapply "${FILESDIR}/${PN}-3.30.3-logo.patch"
+
+	gnome2_src_prepare
+}
+
+src_configure() {
+	# PAM is the only auth scheme supported
+	# even though configure lists shadow and crypt
+	# they don't have any corresponding code.
+	# --with-at-spi-registryd-directory= needs to be passed explicitly because
+	# of https://bugzilla.gnome.org/show_bug.cgi?id=607643#c4
+	# Xevie is obsolete, bug #482304
+
+	# --with-initial-vt=7 conflicts with plymouth, bug #453392
+	# gdm-3.30 now reaps (stops) the login screen when the login VT isn't active, which
+	# saves on memory. However this means if we don't start on VT1, gdm doesn't start up
+	# before user manually goes to VT7. Thus as-is we can not keep gdm away from VT1,
+	# so lets try always having it in VT1 and see if that is an issue for people before
+	# hacking up workarounds for the initial start case.
+	# ! use plymouth && myconf="${myconf} --with-initial-vt=7"
+	local myconf=(
+		--enable-gdm-xsession
+		--enable-user-display-server
+		--with-run-dir=/run/gdm
+		--localstatedir="${EPREFIX}"/var
+		--disable-static
+		--with-xdmcp=yes
+		--enable-authentication-scheme=pam
+		--with-default-pam-config=exherbo
+		--with-pam-mod-dir=$(getpam_mod_dir)
+		--with-udevdir=$(get_udevdir)
+		--with-at-spi-registryd-directory="${EPREFIX}"/usr/libexec
+		--without-xevie
+		$(use_enable systemd systemd-journal)
+		--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+		$(use_with audit libaudit)
+		$(use_enable ipv6)
+		$(use_with plymouth)
+		$(use_with selinux)
+		$(use_with tcpd tcp-wrappers)
+		$(use_enable wayland wayland-support)
+		$(use_with xinerama)
+	)
+
+	if use elogind; then
+		myconf+=(
+			--with-initial-vt=7 # TODO: Revisit together with startDM.sh and other xinit talks; also ignores plymouth possibility
+			SYSTEMD_CFLAGS=`pkg-config --cflags "libelogind" 2>/dev/null`
+			SYSTEMD_LIBS=`pkg-config --libs "libelogind" 2>/dev/null`
+		)
+	fi
+
+	gnome2_src_configure "${myconf[@]}"
+}
+
+src_install() {
+	gnome2_src_install
+
+	if ! use accessibility ; then
+		rm "${ED}"/usr/share/gdm/greeter/autostart/orca-autostart.desktop || die
+	fi
+
+	exeinto /etc/X11/xinit/xinitrc.d
+	newexe "${FILESDIR}/49-keychain-r1" 49-keychain
+	newexe "${FILESDIR}/50-ssh-agent-r1" 50-ssh-agent
+
+	# gdm user's home directory
+	keepdir /var/lib/gdm
+	fowners gdm:gdm /var/lib/gdm
+
+	# install XDG_DATA_DIRS gdm changes
+	echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
+	doenvd 99xdg-gdm
+
+	use branding && newicon "${WORKDIR}/tango-gentoo-v1.1/scalable/gentoo.svg" gentoo-gdm.svg
+
+	readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+	gnome2_pkg_postinst
+	systemd_reenable gdm.service
+	readme.gentoo_print_elog
+}

diff --git a/gnome-base/gdm/metadata.xml b/gnome-base/gdm/metadata.xml
index 747420ed8b5..ac51d07ebe2 100644
--- a/gnome-base/gdm/metadata.xml
+++ b/gnome-base/gdm/metadata.xml
@@ -6,6 +6,7 @@
 	<name>Gentoo GNOME Desktop</name>
 </maintainer>
 <use>
+	<flag name="elogind">Use <pkg>sys-auth/elogind</pkg> for session management</flag>
 	<flag name="fprint">Enables experimental fingerprint authentication using
 		<pkg>sys-auth/fprintd</pkg></flag>
 	<flag name="plymouth">Enable support for smooth transition from


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: gnome-base/gdm/, gnome-base/gdm/files/
@ 2019-05-05 11:55 Mart Raudsepp
  0 siblings, 0 replies; 6+ messages in thread
From: Mart Raudsepp @ 2019-05-05 11:55 UTC (permalink / raw
  To: gentoo-commits

commit:     f2394513fd33929540f0fe6c5500b41094038d29
Author:     Mart Raudsepp <leio <AT> gentoo <DOT> org>
AuthorDate: Sun May  5 11:31:53 2019 +0000
Commit:     Mart Raudsepp <leio <AT> gentoo <DOT> org>
CommitDate: Sun May  5 11:53:57 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f2394513

gnome-base/gdm: workaround file perm and bluetooth sound issues

Install a pulseaudio default config file which unloads bluetooth modules,
to avoid logged in users failing to load these modules upon log-in due to
device locks. As bluetooth sound may be important for a11y screen reader
over bluetooth sound, a USE flag is provided to keep loading bluetooth
modules; as this shouldn't be a common case (especially as normal sound
still works, it's just about sound over bluetooth), this USE flag is
default disabled.

Add back file ownership tweaks, as users still somehow end up with
wrong permissions. At least if the path where Xorg sessions log file
gets written has wrong permissions, Xorg fails to start and gdm with it.

Bug: https://bugs.gentoo.org/679526
Closes: https://bugs.gentoo.org/669146
Package-Manager: Portage-2.3.62, Repoman-2.3.12
Signed-off-by: Mart Raudsepp <leio <AT> gentoo.org>

 gnome-base/gdm/files/default.pa     |  18 +++
 gnome-base/gdm/gdm-3.30.3-r3.ebuild | 246 ++++++++++++++++++++++++++++++++++++
 gnome-base/gdm/metadata.xml         |   3 +
 3 files changed, 267 insertions(+)

diff --git a/gnome-base/gdm/files/default.pa b/gnome-base/gdm/files/default.pa
new file mode 100644
index 00000000000..0922c37a7f9
--- /dev/null
+++ b/gnome-base/gdm/files/default.pa
@@ -0,0 +1,18 @@
+#!/usr/bin/pulseaudio -nF
+#
+
+# load system wide configuration
+.include /etc/pulse/default.pa
+
+### unload driver modules for Bluetooth hardware
+.nofail
+
+.ifexists module-bluetooth-policy.so
+unload-module module-bluetooth-policy
+.endif
+
+.ifexists module-bluetooth-discover.so
+unload-module module-bluetooth-discover
+.endif
+
+.fail

diff --git a/gnome-base/gdm/gdm-3.30.3-r3.ebuild b/gnome-base/gdm/gdm-3.30.3-r3.ebuild
new file mode 100644
index 00000000000..85fce600274
--- /dev/null
+++ b/gnome-base/gdm/gdm-3.30.3-r3.ebuild
@@ -0,0 +1,246 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+GNOME2_LA_PUNT="yes"
+GNOME2_EAUTORECONF="yes"
+
+inherit eutils gnome2 pam readme.gentoo-r1 systemd udev user
+
+DESCRIPTION="GNOME Display Manager for managing graphical display servers and user logins"
+HOMEPAGE="https://wiki.gnome.org/Projects/GDM"
+
+SRC_URI="${SRC_URI}
+	branding? ( https://www.mail-archive.com/tango-artists@lists.freedesktop.org/msg00043/tango-gentoo-v1.1.tar.gz )
+"
+
+LICENSE="
+	GPL-2+
+	branding? ( CC-BY-SA-4.0 )
+"
+
+SLOT="0"
+
+IUSE="accessibility audit bluetooth-sound branding elogind fprint +introspection ipv6 plymouth selinux smartcard systemd tcpd test wayland xinerama"
+REQUIRED_USE="^^ ( elogind systemd )"
+
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sh ~x86"
+
+# NOTE: x11-base/xorg-server dep is for X_SERVER_PATH etc, bug #295686
+# nspr used by smartcard extension
+# dconf, dbus and g-s-d are needed at install time for dconf update
+# We need either systemd or >=openrc-0.12 to restart gdm properly, bug #463784
+COMMON_DEPEND="
+	app-text/iso-codes
+	>=dev-libs/glib-2.44:2
+	dev-libs/libgudev
+	>=x11-libs/gtk+-2.91.1:3
+	>=gnome-base/dconf-0.20
+	>=gnome-base/gnome-settings-daemon-3.1.4
+	gnome-base/gsettings-desktop-schemas
+	>=media-libs/fontconfig-2.5.0:1.0
+	>=media-libs/libcanberra-0.4[gtk3]
+	sys-apps/dbus
+	>=sys-apps/accountsservice-0.6.35
+
+	x11-base/xorg-server
+	x11-libs/libXau
+	x11-libs/libX11
+	x11-libs/libXdmcp
+	x11-libs/libXext
+	x11-libs/libxcb
+	>=x11-misc/xdg-utils-1.0.2-r3
+
+	virtual/pam
+	elogind? ( >=sys-auth/elogind-239.3[pam] )
+	systemd? ( >=sys-apps/systemd-186:0=[pam] )
+
+	sys-auth/pambase[elogind?,systemd?]
+
+	audit? ( sys-process/audit )
+	introspection? ( >=dev-libs/gobject-introspection-0.9.12:= )
+	plymouth? ( sys-boot/plymouth )
+	selinux? ( sys-libs/libselinux )
+	tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
+	xinerama? ( x11-libs/libXinerama )
+"
+# XXX: These deps are from session and desktop files in data/ directory
+# fprintd is used via dbus by gdm-fingerprint-extension
+# gnome-session-3.6 needed to avoid freezing with orca
+RDEPEND="${COMMON_DEPEND}
+	>=gnome-base/gnome-session-3.6
+	>=gnome-base/gnome-shell-3.1.90
+	x11-apps/xhost
+
+	accessibility? (
+		>=app-accessibility/orca-3.10
+		gnome-extra/mousetweaks )
+	fprint? (
+		sys-auth/fprintd
+		sys-auth/pam_fprint )
+
+	!gnome-extra/fast-user-switch-applet
+"
+DEPEND="${COMMON_DEPEND}
+	app-text/docbook-xml-dtd:4.1.2
+	dev-util/gdbus-codegen
+	dev-util/glib-utils
+	dev-util/itstool
+	>=sys-devel/gettext-0.19.8
+	virtual/pkgconfig
+	x11-base/xorg-proto
+	test? ( >=dev-libs/check-0.9.4 )
+	app-text/yelp-tools
+" # yelp-tools needed for eautoreconf to not lose help docs (m4_ifdeffed YELP_HELP_INIT call and setup)
+
+DOC_CONTENTS="
+	To make GDM start at boot with systemd, run:\n
+	# systemctl enable gdm.service\n
+	\n
+	To make GDM start at boot with OpenRC, edit /etc/conf.d to have
+	DISPLAYMANAGER=\"gdm\" and enable the xdm service:\n
+	# rc-update add xdm
+	\n
+	For passwordless login to unlock your keyring, you need to install
+	sys-auth/pambase with USE=gnome-keyring and set an empty password
+	on your keyring. Use app-crypt/seahorse for that.\n
+	\n
+	You may need to install app-crypt/coolkey and sys-auth/pam_pkcs11
+	for smartcard support
+"
+
+pkg_setup() {
+	enewgroup gdm
+	enewgroup video # Just in case it hasn't been created yet
+	enewuser gdm -1 -1 /var/lib/gdm gdm,video
+
+	# For compatibility with certain versions of nvidia-drivers, etc., need to
+	# ensure that gdm user is in the video group
+	if ! egetent group video | grep -q gdm; then
+		# FIXME XXX: is this at all portable, ldap-safe, etc.?
+		# XXX: egetent does not have a 1-argument form, so we can't use it to
+		# get the list of gdm's groups
+		local g=$(groups gdm)
+		elog "Adding user gdm to video group"
+		usermod -G video,${g// /,} gdm || die "Adding user gdm to video group failed"
+	fi
+}
+
+src_prepare() {
+	# ssh-agent handling must be done at xinitrc.d, bug #220603
+	eapply "${FILESDIR}/${PN}-2.32.0-xinitrc-ssh-agent.patch"
+
+	# Gentoo does not have a fingerprint-auth pam stack
+	eapply "${FILESDIR}/${PN}-3.8.4-fingerprint-auth.patch"
+
+	# Drop legacy argument to pam_systemd.so, included in 3.32
+	eapply "${FILESDIR}/${PV}-pam-drop-legacy-arg.patch"
+	# Support pam_elogind.so in gdm-launch-environment.pam
+	eapply "${FILESDIR}/pam-elogind.patch"
+
+	# Wait 10 seconds for a DRM master with systemd. Workaround for gdm not waiting for CanGraphical=yes property on the seat. Bug #613222
+	eapply "${FILESDIR}/gdm-CanGraphical-wait.patch" # needs eautoreconf
+
+	# Show logo when branding is enabled
+	use branding && eapply "${FILESDIR}/${PN}-3.30.3-logo.patch"
+
+	gnome2_src_prepare
+}
+
+src_configure() {
+	# PAM is the only auth scheme supported
+	# even though configure lists shadow and crypt
+	# they don't have any corresponding code.
+	# --with-at-spi-registryd-directory= needs to be passed explicitly because
+	# of https://bugzilla.gnome.org/show_bug.cgi?id=607643#c4
+	# Xevie is obsolete, bug #482304
+
+	# --with-initial-vt=7 conflicts with plymouth, bug #453392
+	# gdm-3.30 now reaps (stops) the login screen when the login VT isn't active, which
+	# saves on memory. However this means if we don't start on VT1, gdm doesn't start up
+	# before user manually goes to VT7. Thus as-is we can not keep gdm away from VT1,
+	# so lets try always having it in VT1 and see if that is an issue for people before
+	# hacking up workarounds for the initial start case.
+	# ! use plymouth && myconf="${myconf} --with-initial-vt=7"
+	local myconf=(
+		--enable-gdm-xsession
+		--enable-user-display-server
+		--with-run-dir=/run/gdm
+		--localstatedir="${EPREFIX}"/var
+		--disable-static
+		--with-xdmcp=yes
+		--enable-authentication-scheme=pam
+		--with-default-pam-config=exherbo
+		--with-pam-mod-dir=$(getpam_mod_dir)
+		--with-udevdir=$(get_udevdir)
+		--with-at-spi-registryd-directory="${EPREFIX}"/usr/libexec
+		--without-xevie
+		$(use_enable systemd systemd-journal)
+		--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+		$(use_with audit libaudit)
+		$(use_enable ipv6)
+		$(use_with plymouth)
+		$(use_with selinux)
+		$(use_with tcpd tcp-wrappers)
+		$(use_enable wayland wayland-support)
+		$(use_with xinerama)
+	)
+
+	if use elogind; then
+		myconf+=(
+			--with-initial-vt=7 # TODO: Revisit together with startDM.sh and other xinit talks; also ignores plymouth possibility
+			SYSTEMD_CFLAGS=`pkg-config --cflags "libelogind" 2>/dev/null`
+			SYSTEMD_LIBS=`pkg-config --libs "libelogind" 2>/dev/null`
+		)
+	fi
+
+	gnome2_src_configure "${myconf[@]}"
+}
+
+src_install() {
+	gnome2_src_install
+
+	if ! use accessibility ; then
+		rm "${ED}"/usr/share/gdm/greeter/autostart/orca-autostart.desktop || die
+	fi
+
+	exeinto /etc/X11/xinit/xinitrc.d
+	newexe "${FILESDIR}/49-keychain-r1" 49-keychain
+	newexe "${FILESDIR}/50-ssh-agent-r1" 50-ssh-agent
+
+	# gdm user's home directory
+	keepdir /var/lib/gdm
+	fowners gdm:gdm /var/lib/gdm
+
+	if ! use bluetooth-sound ; then
+		# Workaround https://gitlab.freedesktop.org/pulseaudio/pulseaudio/merge_requests/10
+		# bug #679526
+		insinto /var/lib/gdm/.config/pulse
+		doins "${FILESDIR}"/default.pa
+	fi
+
+	# install XDG_DATA_DIRS gdm changes
+	echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
+	doenvd 99xdg-gdm
+
+	use branding && newicon "${WORKDIR}/tango-gentoo-v1.1/scalable/gentoo.svg" gentoo-gdm.svg
+
+	readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+	gnome2_pkg_postinst
+	local d ret
+
+	# bug #669146; gdm may crash if /var/lib/gdm subdirs are not owned by gdm:gdm
+	ret=0
+	ebegin "Fixing "${EROOT}"var/lib/gdm ownership"
+	chown --no-dereference gdm:gdm "${EROOT}var/lib/gdm" || ret=1
+	for d in "${EROOT}var/lib/gdm/"{.cache,.color,.config,.dbus,.local}; do
+		[[ ! -e "${d}" ]] || chown --no-dereference -R gdm:gdm "${d}" || ret=1
+	done
+	eend ${ret}
+
+	systemd_reenable gdm.service
+	readme.gentoo_print_elog
+}

diff --git a/gnome-base/gdm/metadata.xml b/gnome-base/gdm/metadata.xml
index ac51d07ebe2..905cfca7884 100644
--- a/gnome-base/gdm/metadata.xml
+++ b/gnome-base/gdm/metadata.xml
@@ -6,6 +6,9 @@
 	<name>Gentoo GNOME Desktop</name>
 </maintainer>
 <use>
+	<flag name="bluetooth-sound">Allow loading of bluetooth sound modules.
+		This may be necessary for accessibility screen readers, but may cause bluetooth
+		sound issues for users logging in.</flag>
 	<flag name="elogind">Use <pkg>sys-auth/elogind</pkg> for session management</flag>
 	<flag name="fprint">Enables experimental fingerprint authentication using
 		<pkg>sys-auth/fprintd</pkg></flag>


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: gnome-base/gdm/, gnome-base/gdm/files/
@ 2019-12-23 21:26 Mart Raudsepp
  0 siblings, 0 replies; 6+ messages in thread
From: Mart Raudsepp @ 2019-12-23 21:26 UTC (permalink / raw
  To: gentoo-commits

commit:     58c32f1f8df9537dc18a0bbd9c97106e9482d7f4
Author:     Mart Raudsepp <leio <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 23 21:13:36 2019 +0000
Commit:     Mart Raudsepp <leio <AT> gentoo <DOT> org>
CommitDate: Mon Dec 23 21:25:46 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=58c32f1f

gnome-base/gdm: remove old

Package-Manager: Portage-2.3.79, Repoman-2.3.12
Signed-off-by: Mart Raudsepp <leio <AT> gentoo.org>

 gnome-base/gdm/Manifest                            |   1 -
 .../gdm/files/3.30.3-pam-drop-legacy-arg.patch     |  29 ---
 gnome-base/gdm/gdm-3.30.3-r3.ebuild                | 247 ---------------------
 3 files changed, 277 deletions(-)

diff --git a/gnome-base/gdm/Manifest b/gnome-base/gdm/Manifest
index 00246602fc6..08c57f90871 100644
--- a/gnome-base/gdm/Manifest
+++ b/gnome-base/gdm/Manifest
@@ -1,3 +1,2 @@
-DIST gdm-3.30.3.tar.xz 1261224 BLAKE2B 338f946a24d2a7e4b3cf34ac6accff01f8e7ce5032ee4ce79a96b1a755693e09788c6225e45de9a91ae4afea595a0562511104a467e561ec179c3ad61810468f SHA512 17aed5bf7d27b07553703873cda28a711d6135497d36e4c241bcf1ab3552b31007cc241dab394dccf8a4f1daccf7d55ba39edf91f4b22bdea5c2aa1ea17404b8
 DIST gdm-3.32.0.tar.xz 1262344 BLAKE2B bbc580f788fe2ce8783f044eb8109ce0086b1bb078bafaeb6efd833689848ef6570bb0fd0e6e260a388e7c1a6d3cdccb36264a640151e9b6e5d81ca9c35f3be3 SHA512 88016d0f800030a561e0360c63fdcb8499a605126f99a5a9f89606e086d7a934afc091843b2acd9091c1c643e7468ee31ae9a5b6264ae38064618ad577ef7ac0
 DIST tango-gentoo-v1.1.tar.gz 29322 BLAKE2B 83fa2bf37727e60851dd679054fe1b153ebfea58c9a9a40f891f7d68d3b047b02e8effa1d1b4e08d64500a2072ce7200f159c92a352da7124de27e1b05bb6027 SHA512 87d47ddab68361db6d99866c51705dcb3e198f8345a1096859acf2c6cca5099dd23c7fb30d124f52c4933ea38fd45fadffbbe6ecbdfa84f5b60938a4824f9045

diff --git a/gnome-base/gdm/files/3.30.3-pam-drop-legacy-arg.patch b/gnome-base/gdm/files/3.30.3-pam-drop-legacy-arg.patch
deleted file mode 100644
index 8d82a284bf5..00000000000
--- a/gnome-base/gdm/files/3.30.3-pam-drop-legacy-arg.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From a26ed5502622c22daa175861fa9d651a32131cf5 Mon Sep 17 00:00:00 2001
-From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
-Date: Sat, 16 Feb 2019 08:47:45 +0100
-Subject: [PATCH 1/2] pam-exherbo: drop legacy pam_systemd argument
-
-kill-session-processes=1 is long gone
-
-Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
-(cherry picked from commit 13e6666b1e1000d757ac5621a83105110f55e3e3)
----
- data/pam-exherbo/gdm-launch-environment.pam | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/data/pam-exherbo/gdm-launch-environment.pam b/data/pam-exherbo/gdm-launch-environment.pam
-index 8c13b3bc..51a8e003 100644
---- a/data/pam-exherbo/gdm-launch-environment.pam
-+++ b/data/pam-exherbo/gdm-launch-environment.pam
-@@ -8,7 +8,7 @@ auth        required    pam_permit.so
- 
- password    required    pam_deny.so
- 
---session    optional    pam_systemd.so kill-session-processes=1
-+-session    optional    pam_systemd.so
- session     optional    pam_keyinit.so force revoke
- session     required    pam_succeed_if.so audit quiet_success user = gdm
- session     required    pam_permit.so
--- 
-2.17.0
-

diff --git a/gnome-base/gdm/gdm-3.30.3-r3.ebuild b/gnome-base/gdm/gdm-3.30.3-r3.ebuild
deleted file mode 100644
index 2f4a5cbe291..00000000000
--- a/gnome-base/gdm/gdm-3.30.3-r3.ebuild
+++ /dev/null
@@ -1,247 +0,0 @@
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-GNOME2_LA_PUNT="yes"
-GNOME2_EAUTORECONF="yes"
-
-inherit eutils gnome2 pam readme.gentoo-r1 systemd udev user
-
-DESCRIPTION="GNOME Display Manager for managing graphical display servers and user logins"
-HOMEPAGE="https://wiki.gnome.org/Projects/GDM"
-
-SRC_URI="${SRC_URI}
-	branding? ( https://www.mail-archive.com/tango-artists@lists.freedesktop.org/msg00043/tango-gentoo-v1.1.tar.gz )
-"
-
-LICENSE="
-	GPL-2+
-	branding? ( CC-BY-SA-4.0 )
-"
-
-SLOT="0"
-
-IUSE="accessibility audit bluetooth-sound branding elogind fprint +introspection ipv6 plymouth selinux smartcard systemd tcpd test wayland xinerama"
-RESTRICT="!test? ( test )"
-REQUIRED_USE="^^ ( elogind systemd )"
-
-KEYWORDS="~alpha amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~sh x86"
-
-# NOTE: x11-base/xorg-server dep is for X_SERVER_PATH etc, bug #295686
-# nspr used by smartcard extension
-# dconf, dbus and g-s-d are needed at install time for dconf update
-# We need either systemd or >=openrc-0.12 to restart gdm properly, bug #463784
-COMMON_DEPEND="
-	app-text/iso-codes
-	>=dev-libs/glib-2.44:2
-	dev-libs/libgudev
-	>=x11-libs/gtk+-2.91.1:3
-	>=gnome-base/dconf-0.20
-	>=gnome-base/gnome-settings-daemon-3.1.4
-	gnome-base/gsettings-desktop-schemas
-	>=media-libs/fontconfig-2.5.0:1.0
-	>=media-libs/libcanberra-0.4[gtk3]
-	sys-apps/dbus
-	>=sys-apps/accountsservice-0.6.35
-
-	x11-base/xorg-server
-	x11-libs/libXau
-	x11-libs/libX11
-	x11-libs/libXdmcp
-	x11-libs/libXext
-	x11-libs/libxcb
-	>=x11-misc/xdg-utils-1.0.2-r3
-
-	sys-libs/pam
-	elogind? ( >=sys-auth/elogind-239.3[pam] )
-	systemd? ( >=sys-apps/systemd-186:0=[pam] )
-
-	sys-auth/pambase[elogind?,systemd?]
-
-	audit? ( sys-process/audit )
-	introspection? ( >=dev-libs/gobject-introspection-0.9.12:= )
-	plymouth? ( sys-boot/plymouth )
-	selinux? ( sys-libs/libselinux )
-	tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
-	xinerama? ( x11-libs/libXinerama )
-"
-# XXX: These deps are from session and desktop files in data/ directory
-# fprintd is used via dbus by gdm-fingerprint-extension
-# gnome-session-3.6 needed to avoid freezing with orca
-RDEPEND="${COMMON_DEPEND}
-	>=gnome-base/gnome-session-3.6
-	>=gnome-base/gnome-shell-3.1.90
-	x11-apps/xhost
-
-	accessibility? (
-		>=app-accessibility/orca-3.10
-		gnome-extra/mousetweaks )
-	fprint? (
-		sys-auth/fprintd
-		sys-auth/pam_fprint )
-
-	!gnome-extra/fast-user-switch-applet
-"
-DEPEND="${COMMON_DEPEND}
-	app-text/docbook-xml-dtd:4.1.2
-	dev-util/gdbus-codegen
-	dev-util/glib-utils
-	dev-util/itstool
-	>=sys-devel/gettext-0.19.8
-	virtual/pkgconfig
-	x11-base/xorg-proto
-	test? ( >=dev-libs/check-0.9.4 )
-	app-text/yelp-tools
-" # yelp-tools needed for eautoreconf to not lose help docs (m4_ifdeffed YELP_HELP_INIT call and setup)
-
-DOC_CONTENTS="
-	To make GDM start at boot with systemd, run:\n
-	# systemctl enable gdm.service\n
-	\n
-	To make GDM start at boot with OpenRC, edit /etc/conf.d to have
-	DISPLAYMANAGER=\"gdm\" and enable the xdm service:\n
-	# rc-update add xdm
-	\n
-	For passwordless login to unlock your keyring, you need to install
-	sys-auth/pambase with USE=gnome-keyring and set an empty password
-	on your keyring. Use app-crypt/seahorse for that.\n
-	\n
-	You may need to install app-crypt/coolkey and sys-auth/pam_pkcs11
-	for smartcard support
-"
-
-pkg_setup() {
-	enewgroup gdm
-	enewgroup video # Just in case it hasn't been created yet
-	enewuser gdm -1 -1 /var/lib/gdm gdm,video
-
-	# For compatibility with certain versions of nvidia-drivers, etc., need to
-	# ensure that gdm user is in the video group
-	if ! egetent group video | grep -q gdm; then
-		# FIXME XXX: is this at all portable, ldap-safe, etc.?
-		# XXX: egetent does not have a 1-argument form, so we can't use it to
-		# get the list of gdm's groups
-		local g=$(groups gdm)
-		elog "Adding user gdm to video group"
-		usermod -G video,${g// /,} gdm || die "Adding user gdm to video group failed"
-	fi
-}
-
-src_prepare() {
-	# ssh-agent handling must be done at xinitrc.d, bug #220603
-	eapply "${FILESDIR}/${PN}-2.32.0-xinitrc-ssh-agent.patch"
-
-	# Gentoo does not have a fingerprint-auth pam stack
-	eapply "${FILESDIR}/${PN}-3.8.4-fingerprint-auth.patch"
-
-	# Drop legacy argument to pam_systemd.so, included in 3.32
-	eapply "${FILESDIR}/${PV}-pam-drop-legacy-arg.patch"
-	# Support pam_elogind.so in gdm-launch-environment.pam
-	eapply "${FILESDIR}/pam-elogind.patch"
-
-	# Wait 10 seconds for a DRM master with systemd. Workaround for gdm not waiting for CanGraphical=yes property on the seat. Bug #613222
-	eapply "${FILESDIR}/gdm-CanGraphical-wait.patch" # needs eautoreconf
-
-	# Show logo when branding is enabled
-	use branding && eapply "${FILESDIR}/${PN}-3.30.3-logo.patch"
-
-	gnome2_src_prepare
-}
-
-src_configure() {
-	# PAM is the only auth scheme supported
-	# even though configure lists shadow and crypt
-	# they don't have any corresponding code.
-	# --with-at-spi-registryd-directory= needs to be passed explicitly because
-	# of https://bugzilla.gnome.org/show_bug.cgi?id=607643#c4
-	# Xevie is obsolete, bug #482304
-
-	# --with-initial-vt=7 conflicts with plymouth, bug #453392
-	# gdm-3.30 now reaps (stops) the login screen when the login VT isn't active, which
-	# saves on memory. However this means if we don't start on VT1, gdm doesn't start up
-	# before user manually goes to VT7. Thus as-is we can not keep gdm away from VT1,
-	# so lets try always having it in VT1 and see if that is an issue for people before
-	# hacking up workarounds for the initial start case.
-	# ! use plymouth && myconf="${myconf} --with-initial-vt=7"
-	local myconf=(
-		--enable-gdm-xsession
-		--enable-user-display-server
-		--with-run-dir=/run/gdm
-		--localstatedir="${EPREFIX}"/var
-		--disable-static
-		--with-xdmcp=yes
-		--enable-authentication-scheme=pam
-		--with-default-pam-config=exherbo
-		--with-pam-mod-dir=$(getpam_mod_dir)
-		--with-udevdir=$(get_udevdir)
-		--with-at-spi-registryd-directory="${EPREFIX}"/usr/libexec
-		--without-xevie
-		$(use_enable systemd systemd-journal)
-		--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
-		$(use_with audit libaudit)
-		$(use_enable ipv6)
-		$(use_with plymouth)
-		$(use_with selinux)
-		$(use_with tcpd tcp-wrappers)
-		$(use_enable wayland wayland-support)
-		$(use_with xinerama)
-	)
-
-	if use elogind; then
-		myconf+=(
-			--with-initial-vt=7 # TODO: Revisit together with startDM.sh and other xinit talks; also ignores plymouth possibility
-			SYSTEMD_CFLAGS=`pkg-config --cflags "libelogind" 2>/dev/null`
-			SYSTEMD_LIBS=`pkg-config --libs "libelogind" 2>/dev/null`
-		)
-	fi
-
-	gnome2_src_configure "${myconf[@]}"
-}
-
-src_install() {
-	gnome2_src_install
-
-	if ! use accessibility ; then
-		rm "${ED}"/usr/share/gdm/greeter/autostart/orca-autostart.desktop || die
-	fi
-
-	exeinto /etc/X11/xinit/xinitrc.d
-	newexe "${FILESDIR}/49-keychain-r1" 49-keychain
-	newexe "${FILESDIR}/50-ssh-agent-r1" 50-ssh-agent
-
-	# gdm user's home directory
-	keepdir /var/lib/gdm
-	fowners gdm:gdm /var/lib/gdm
-
-	if ! use bluetooth-sound ; then
-		# Workaround https://gitlab.freedesktop.org/pulseaudio/pulseaudio/merge_requests/10
-		# bug #679526
-		insinto /var/lib/gdm/.config/pulse
-		doins "${FILESDIR}"/default.pa
-	fi
-
-	# install XDG_DATA_DIRS gdm changes
-	echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
-	doenvd 99xdg-gdm
-
-	use branding && newicon "${WORKDIR}/tango-gentoo-v1.1/scalable/gentoo.svg" gentoo-gdm.svg
-
-	readme.gentoo_create_doc
-}
-
-pkg_postinst() {
-	gnome2_pkg_postinst
-	local d ret
-
-	# bug #669146; gdm may crash if /var/lib/gdm subdirs are not owned by gdm:gdm
-	ret=0
-	ebegin "Fixing "${EROOT}"var/lib/gdm ownership"
-	chown --no-dereference gdm:gdm "${EROOT}var/lib/gdm" || ret=1
-	for d in "${EROOT}var/lib/gdm/"{.cache,.color,.config,.dbus,.local}; do
-		[[ ! -e "${d}" ]] || chown --no-dereference -R gdm:gdm "${d}" || ret=1
-	done
-	eend ${ret}
-
-	systemd_reenable gdm.service
-	readme.gentoo_print_elog
-}


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: gnome-base/gdm/, gnome-base/gdm/files/
@ 2021-04-30 16:08 Matt Turner
  0 siblings, 0 replies; 6+ messages in thread
From: Matt Turner @ 2021-04-30 16:08 UTC (permalink / raw
  To: gentoo-commits

commit:     b7cbef6cf8bcca85cbb0594e62226c8a6a262b69
Author:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Fri Apr 30 02:27:41 2021 +0000
Commit:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Fri Apr 30 16:08:16 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b7cbef6c

gnome-base/gdm: Version bump to 40.0

* Drop 49-keychain and 50-ssh-agent files (bugs #549102, #692648)
* Switch to Meson (resolves bug #585976)
** Remove unnecessary fontconfig, libXext, iso-codes, libgudev,
   libXinerama dependencies
* Remove unused introspection, smartcard, xinerama USE flags
* Depend on xorg-server[-minimal] (bug #660546)
* Resolve bug #613222, resolved upstream in v40.0
* Resolve bug #733708, resolved upstream in v3.38

Bug: https://bugs.gentoo.org/762460
Closes: https://bugs.gentoo.org/549102
Closes: https://bugs.gentoo.org/585976
Closes: https://bugs.gentoo.org/613222
Closes: https://bugs.gentoo.org/660546
Closes: https://bugs.gentoo.org/692648
Closes: https://bugs.gentoo.org/733708
Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>

 gnome-base/gdm/Manifest                            |   1 +
 ...dm-40.0-meson-allow-building-with-elogind.patch | 211 +++++++++++++++++++++
 gnome-base/gdm/gdm-40.0.ebuild                     | 207 ++++++++++++++++++++
 3 files changed, 419 insertions(+)

diff --git a/gnome-base/gdm/Manifest b/gnome-base/gdm/Manifest
index 155c24931fb..d8fd955b063 100644
--- a/gnome-base/gdm/Manifest
+++ b/gnome-base/gdm/Manifest
@@ -1,2 +1,3 @@
 DIST gdm-3.36.4.tar.xz 1235796 BLAKE2B eeac6c3c95993d7a75eecd03b51f0519b2f899eaecce8767dbab01eead68bddde21edc999eaf6b7ce747084ac9f88ab71cd7bf602e3bdc5bfe09038e3b01ad3a SHA512 ee8a4ae4a1c4846e4d52fda0b115dfc79ef76b78a2349977767e4212910b5ad331b908601f252292a8a944973372d1dce3124d9ccb8a2519a98d0e4813a6ec61
+DIST gdm-40.0.tar.xz 800296 BLAKE2B 9c2038758cec09f13c18bd79d431e82a29fb1a2b8ab099498a0b8d920cb93896abceab9157edae8cc15312e03d21eb36b649c2cc8761f9af5fec387c5f28a261 SHA512 b20d02f8a80f6aff8909a69c6c621c20c5aa1b25cfedd68bf95faaaa56d5f7cd5d607d1a7388b97aa06510684f1e9e474248042a00203f496c39930e001bb64c
 DIST tango-gentoo-v1.1.tar.gz 29322 BLAKE2B 83fa2bf37727e60851dd679054fe1b153ebfea58c9a9a40f891f7d68d3b047b02e8effa1d1b4e08d64500a2072ce7200f159c92a352da7124de27e1b05bb6027 SHA512 87d47ddab68361db6d99866c51705dcb3e198f8345a1096859acf2c6cca5099dd23c7fb30d124f52c4933ea38fd45fadffbbe6ecbdfa84f5b60938a4824f9045

diff --git a/gnome-base/gdm/files/gdm-40.0-meson-allow-building-with-elogind.patch b/gnome-base/gdm/files/gdm-40.0-meson-allow-building-with-elogind.patch
new file mode 100644
index 00000000000..39cd12dd227
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-40.0-meson-allow-building-with-elogind.patch
@@ -0,0 +1,211 @@
+https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/113
+
+From 462cc0f5346f5913cf7151044f1c232c5d21c1c3 Mon Sep 17 00:00:00 2001
+From: Dudemanguy <random342@airmail.cc>
+Date: Mon, 5 Oct 2020 18:41:55 -0500
+Subject: [PATCH] meson: allow building with elogind
+
+Currently, the GDM meson build has a hard dependency on systemd.
+However, GDM can function just fine if one is using elogind. This allows
+a user to build GDM against libelogind and also disable the systemd
+system and user units.
+---
+ common/meson.build                       |  2 +-
+ data/meson.build                         | 62 ++++++++++++++----------
+ data/pam-arch/gdm-launch-environment.pam |  1 +
+ libgdm/meson.build                       |  2 +-
+ meson.build                              | 36 +++++++++-----
+ meson_options.txt                        |  5 +-
+ 6 files changed, 66 insertions(+), 42 deletions(-)
+
+diff --git a/common/meson.build b/common/meson.build
+index 074dd92e1..bca58f7c4 100644
+--- a/common/meson.build
++++ b/common/meson.build
+@@ -11,7 +11,7 @@ libgdmcommon_src = files(
+ )
+ 
+ libgdmcommon_deps = [
+-  libsystemd_dep,
++  logind_dep,
+   gobject_dep,
+   gio_dep,
+   gio_unix_dep,
+diff --git a/data/meson.build b/data/meson.build
+index 7c5222eaf..403336c31 100644
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -168,41 +168,53 @@ else
+   service_config.set('PLYMOUTH_QUIT_SERVICE', '')
+ endif
+ 
+-if get_option('systemdsystemunitdir') != ''
+-  systemd_systemunitdir = get_option('systemdsystemunitdir')
+-else
+-  systemd_systemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
++systemdsystemunitdir = get_option('systemdsystemunitdir')
++if systemdsystemunitdir != 'no'
++  assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd system unit dir or disable it')
++  if get_option('systemdsystemunitdir') != ''
++    systemd_systemunitdir = get_option('systemdsystemunitdir')
++  else
++    systemd_systemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
++  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')])
++systemduserunitdir = get_option('systemduserunitdir')
++if systemduserunitdir != 'no'
++  assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd user unit dir or disable it')
++  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
+ endif
+ 
+-configure_file(
+-  input: 'gdm.service.in',
+-  output: '@BASENAME@',
+-  configuration: service_config,
+-  install_dir: systemd_systemunitdir,
+-  format: 'cmake'
+-)
++if systemdsystemunitdir != 'no'
++  configure_file(
++    input: 'gdm.service.in',
++    output: '@BASENAME@',
++    configuration: service_config,
++    install_dir: systemd_systemunitdir,
++    format: 'cmake'
++  )
++endif
+ 
+ gdm_gnome_session_wanted_targets = []
+ foreach component: gdm_gnome_user_session_wanted_components
+   gdm_gnome_session_wanted_targets += 'Wants=@0@.target'.format(component)
+ endforeach
+ 
+-configure_file(
+-  input: 'session.conf.in',
+-  output: 'session.conf',
+-  configuration: {
+-    'requires_component': gdm_gnome_shell_component,
+-    'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets),
+-  },
+-  install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d',
+-)
++if systemduserunitdir != 'no'
++  configure_file(
++    input: 'session.conf.in',
++    output: 'session.conf',
++    configuration: {
++      'requires_component': gdm_gnome_shell_component,
++      'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets),
++    },
++    install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d',
++  )
++endif
+ 
+ # XSession
+ if get_option('gdm-xsession')
+diff --git a/libgdm/meson.build b/libgdm/meson.build
+index 3f8cafbb7..83e95151b 100644
+--- a/libgdm/meson.build
++++ b/libgdm/meson.build
+@@ -56,7 +56,7 @@ libgdm_deps = [
+   glib_dep,
+   gio_dep,
+   gio_unix_dep,
+-  libsystemd_dep,
++  logind_dep,
+   libgdmcommon_dep,
+ ]
+ 
+diff --git a/meson.build b/meson.build
+index e6fcf4b8b..a86a486b7 100644
+--- a/meson.build
++++ b/meson.build
+@@ -92,21 +92,30 @@ xdmcp_dep = cc.find_library('Xdmcp', required: get_option('xdmcp'))
+ if xdmcp_dep.found() and get_option('tcp-wrappers')
+   libwrap_dep = cc.find_library('libwrap')
+ endif
+-# systemd
+-systemd_dep = dependency('systemd')
+-libsystemd_dep = dependency('libsystemd')
+-if meson.version().version_compare('>= 0.53')
+-  systemd_multiseat_x = find_program('systemd-multi-seat-x',
+-    required: false,
+-    dirs: [
+-      systemd_dep.get_pkgconfig_variable('systemdutildir'),
+-      '/lib/systemd',
+-      '/usr/lib/systemd',
+-    ])
++
++logind_provider = get_option('logind-provider')
++systemd_dep = dependency('systemd', required: false)
++if logind_provider == 'systemd'
++  libsystemd_dep = dependency('libsystemd')
++  logind_dep = libsystemd_dep
++  if meson.version().version_compare('>= 0.53')
++    systemd_multiseat_x = find_program('systemd-multi-seat-x',
++      required: false,
++      dirs: [
++        systemd_dep.get_pkgconfig_variable('systemdutildir'),
++        '/lib/systemd',
++        '/usr/lib/systemd',
++      ])
++  else
++    systemd_multiseat_x = find_program('systemd-multi-seat-x', required: false)
++  endif
++  systemd_x_server = systemd_multiseat_x.found()? systemd_multiseat_x.path() : '/lib/systemd/systemd-multi-seat-x'
+ else
+-  systemd_multiseat_x = find_program('systemd-multi-seat-x', required: false)
++  elogind_dep = dependency('libelogind')
++  logind_dep = elogind_dep
++  systemd_x_server = 'disabled'
+ endif
+-systemd_x_server = systemd_multiseat_x.found()? systemd_multiseat_x.path() : '/lib/systemd/systemd-multi-seat-x'
++
+ # Plymouth
+ plymouth_dep = dependency('ply-boot-client', required: get_option('plymouth'))
+ # Check for Solaris auditing API (ADT)
+@@ -313,6 +322,7 @@ summary({
+     'PAM Syslog': have_pam_syslog,
+     'Supports PAM Extensions': pam_extensions_supported,
+     'SeLinux': libselinux_dep.found(),
++    'Logind Provider': get_option('logind-provider'),
+     'Use GDM Xsession': get_option('gdm-xsession'),
+     'Use UserDisplayServer': get_option('user-display-server'),
+     'Use SystemdJournal': get_option('systemd-journal'),
+diff --git a/meson_options.txt b/meson_options.txt
+index 14e0b908b..5135d7d66 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -12,6 +12,7 @@ option('initial-vt', type: 'integer', value: 1, description: 'Initial virtual te
+ option('ipv6', type: 'boolean', value: false, description: 'Enables compilation of IPv6 code.')
+ option('lang-file', type: 'string', value: '', description: 'File containing default language settings.')
+ option('libaudit', type: 'feature', value: 'auto', description: 'Add Linux audit support.')
++option('logind-provider', type: 'combo', choices: ['systemd', 'elogind'], value: 'systemd', description: 'Which logind library to use.')
+ option('log-dir', type: 'string', value: '/var/log/gdm', description: 'Log directory.')
+ option('pam-mod-dir', type: 'string', value: '', description: 'Directory to install PAM modules in.')
+ option('pam-prefix', type: 'string', value: '', description: 'Specify where PAM files go.')
+@@ -27,8 +28,8 @@ option('solaris', type: 'boolean', value: false, description: 'Build for Solaris
+ option('split-authentication', type: 'boolean', value: true, description: 'Enable multiple simultaneous PAM conversations during login.')
+ option('sysconfsubdir', type: 'string', value: 'gdm', description: 'Directory name used under sysconfdir.')
+ option('systemd-journal', type: 'boolean', value: true, description: 'Use journald support.')
+-option('systemdsystemunitdir', type: 'string', value: '', description: 'Directory for systemd service files.')
+-option('systemduserunitdir', type: 'string', value: '', description: 'Directory for systemd user service files.')
++option('systemdsystemunitdir', type: 'string', value: '', description: 'Directory for systemd service files, or \'no\' to disable.')
++option('systemduserunitdir', type: 'string', value: '', description: 'Directory for systemd user service files, or \'no\' to disable.')
+ option('tcp-wrappers', type: 'boolean', value: false, description: 'Use TCP wrappers.')
+ option('udev-dir', type: 'string', value: '', description: 'Directory for udev rules file.')
+ option('user', type: 'string', value: 'gdm', description: 'GDM\'s username.')
+-- 
+GitLab
+

diff --git a/gnome-base/gdm/gdm-40.0.ebuild b/gnome-base/gdm/gdm-40.0.ebuild
new file mode 100644
index 00000000000..fdfbc1526ef
--- /dev/null
+++ b/gnome-base/gdm/gdm-40.0.ebuild
@@ -0,0 +1,207 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit desktop gnome2 meson pam readme.gentoo-r1 systemd toolchain-funcs udev
+
+DESCRIPTION="GNOME Display Manager for managing graphical display servers and user logins"
+HOMEPAGE="https://wiki.gnome.org/Projects/GDM"
+
+SRC_URI="${SRC_URI}
+	branding? ( https://www.mail-archive.com/tango-artists@lists.freedesktop.org/msg00043/tango-gentoo-v1.1.tar.gz )
+"
+
+LICENSE="
+	GPL-2+
+	branding? ( CC-BY-SA-4.0 )
+"
+
+SLOT="0"
+
+IUSE="accessibility audit bluetooth-sound branding elogind fprint ipv6 plymouth selinux systemd tcpd test wayland"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="^^ ( elogind systemd )"
+
+KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~x86"
+
+# dconf, dbus and g-s-d are needed at install time for dconf update
+# keyutils is automagic dep that makes autologin unlock login keyring when all the passwords match (disk encryption, user pw and login keyring)
+# dbus-run-session used at runtime
+COMMON_DEPEND="
+	virtual/udev
+	>=dev-libs/glib-2.56:2
+	>=x11-libs/gtk+-2.91.1:3
+	>=media-libs/libcanberra-0.4[gtk3]
+	>=sys-apps/accountsservice-0.6.35
+	x11-libs/libxcb
+	sys-apps/keyutils:=
+	selinux? ( sys-libs/libselinux )
+
+	x11-libs/libX11
+	x11-libs/libXau
+	x11-base/xorg-server[-minimal]
+	x11-libs/libXdmcp
+	tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
+
+	systemd? ( >=sys-apps/systemd-186:0=[pam] )
+	elogind? ( >=sys-auth/elogind-239.3[pam] )
+
+	plymouth? ( sys-boot/plymouth )
+	audit? ( sys-process/audit )
+
+	sys-libs/pam
+	sys-auth/pambase[elogind?,systemd?]
+
+	>=gnome-base/dconf-0.20
+	>=gnome-base/gnome-settings-daemon-3.1.4
+	gnome-base/gsettings-desktop-schemas
+	sys-apps/dbus
+
+	>=x11-misc/xdg-utils-1.0.2-r3
+
+	>=dev-libs/gobject-introspection-0.9.12:=
+"
+# XXX: These deps are from session and desktop files in data/ directory
+# fprintd is used via dbus by gdm-fingerprint-extension
+RDEPEND="${COMMON_DEPEND}
+	acct-group/gdm
+	acct-user/gdm
+	>=gnome-base/gnome-session-3.6
+	>=gnome-base/gnome-shell-3.1.90
+	x11-apps/xhost
+
+	accessibility? (
+		>=app-accessibility/orca-3.10
+		gnome-extra/mousetweaks
+	)
+	fprint? ( sys-auth/fprintd[pam] )
+"
+DEPEND="${COMMON_DEPEND}
+	x11-base/xorg-proto
+"
+BDEPEND="
+	app-text/docbook-xml-dtd:4.1.2
+	dev-util/gdbus-codegen
+	dev-util/glib-utils
+	dev-util/itstool
+	>=gnome-base/dconf-0.20
+	>=sys-devel/gettext-0.19.8
+	virtual/pkgconfig
+	test? ( >=dev-libs/check-0.9.4 )
+	app-text/yelp-tools
+"
+
+DOC_CONTENTS="
+	To make GDM start at boot with systemd, run:\n
+	# systemctl enable gdm.service\n
+	\n
+	To make GDM start at boot with OpenRC, edit /etc/conf.d to have
+	DISPLAYMANAGER=\"gdm\" and enable the xdm service:\n
+	# rc-update add xdm
+	\n
+	For passwordless login to unlock your keyring, you need to install
+	sys-auth/pambase with USE=gnome-keyring and set an empty password
+	on your keyring. Use app-crypt/seahorse for that.\n
+	\n
+	You may need to install app-crypt/coolkey and sys-auth/pam_pkcs11
+	for smartcard support
+"
+
+PATCHES=(
+	# Gentoo does not have a fingerprint-auth pam stack
+	"${FILESDIR}/${PN}-3.8.4-fingerprint-auth.patch"
+
+	# Add elogind support
+	"${FILESDIR}/${P}-meson-allow-building-with-elogind.patch"
+
+	# Support pam_elogind.so in gdm-launch-environment.pam
+	"${FILESDIR}/pam-elogind.patch"
+)
+
+src_prepare() {
+	default
+
+	# Show logo when branding is enabled
+	use branding && eapply "${FILESDIR}/${PN}-3.30.3-logo.patch"
+}
+
+src_configure() {
+	# --with-initial-vt=7 conflicts with plymouth, bug #453392
+	# gdm-3.30 now reaps (stops) the login screen when the login VT isn't active, which
+	# saves on memory. However this means if we don't start on VT1, gdm doesn't start up
+	# before user manually goes to VT7. Thus as-is we can not keep gdm away from VT1,
+	# so lets try always having it in VT1 and see if that is an issue for people before
+	# hacking up workarounds for the initial start case.
+	local emesonargs=(
+		--localstatedir /var
+
+		-Ddefault-pam-config=exherbo
+		-Dgdm-xsession=true
+		-Dgroup=gdm
+		$(meson_use ipv6)
+		$(meson_feature audit libaudit)
+		-Dlogind-provider=$(usex systemd systemd elogind)
+		-Dpam-mod-dir=$(getpam_mod_dir)
+		$(meson_feature plymouth)
+		-Drun-dir=/run/gdm
+		$(meson_feature selinux)
+		$(meson_use systemd systemd-journal)
+		-Dsystemdsystemunitdir="$(systemd_get_systemunitdir)"
+		-Dsystemduserunitdir="$(systemd_get_userunitdir)"
+		$(meson_use tcpd tcp-wrappers)
+		-Dudev-dir=$(get_udevdir)
+		-Duser=gdm
+		-Duser-display-server=true
+		$(meson_use wayland wayland-support)
+		-Dxdmcp=enabled
+	)
+
+	if use elogind; then
+		emesonargs+=(
+			-Dinitial-vt=7 # TODO: Revisit together with startDM.sh and other xinit talks; also ignores plymouth possibility
+		)
+	fi
+
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+
+	if ! use accessibility ; then
+		rm "${ED}"/usr/share/gdm/greeter/autostart/orca-autostart.desktop || die
+	fi
+
+	if ! use bluetooth-sound ; then
+		# Workaround https://gitlab.freedesktop.org/pulseaudio/pulseaudio/merge_requests/10
+		# bug #679526
+		insinto /var/lib/gdm/.config/pulse
+		doins "${FILESDIR}"/default.pa
+	fi
+
+	# install XDG_DATA_DIRS gdm changes
+	echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
+	doenvd 99xdg-gdm
+
+	use branding && newicon "${WORKDIR}/tango-gentoo-v1.1/scalable/gentoo.svg" gentoo-gdm.svg
+
+	readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+	gnome2_pkg_postinst
+	local d ret
+
+	# bug #669146; gdm may crash if /var/lib/gdm subdirs are not owned by gdm:gdm
+	ret=0
+	ebegin "Fixing "${EROOT}"/var/lib/gdm ownership"
+	chown --no-dereference gdm:gdm "${EROOT}/var/lib/gdm" || ret=1
+	for d in "${EROOT}/var/lib/gdm/"{.cache,.color,.config,.dbus,.local}; do
+		[[ ! -e "${d}" ]] || chown --no-dereference -R gdm:gdm "${d}" || ret=1
+	done
+	eend ${ret}
+
+	systemd_reenable gdm.service
+	readme.gentoo_print_elog
+}


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: gnome-base/gdm/, gnome-base/gdm/files/
@ 2023-03-22 17:06 Matt Turner
  0 siblings, 0 replies; 6+ messages in thread
From: Matt Turner @ 2023-03-22 17:06 UTC (permalink / raw
  To: gentoo-commits

commit:     00182d44052ad19b2ba2cb18cbf9ecc94f37eaa1
Author:     Guillermo Joandet <gjoandet <AT> gmail <DOT> com>
AuthorDate: Sat Mar 11 23:26:45 2023 +0000
Commit:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Wed Mar 22 17:05:37 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=00182d44

gnome-base/gdm: Version bump to 44.0

Closes: https://github.com/gentoo/gentoo/pull/30301
Signed-off-by: Pascal Jäger <pascal.jaeger <AT> leimstift.de>
Signed-off-by: Guillermo Joandet <gjoandet <AT> gmail.com>
Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>

 gnome-base/gdm/Manifest                            |   1 +
 ...dm-44.0-meson-allow-building-with-elogind.patch | 208 ++++++++++++++++++++
 gnome-base/gdm/gdm-44.0.ebuild                     | 215 +++++++++++++++++++++
 gnome-base/gdm/metadata.xml                        |   1 -
 4 files changed, 424 insertions(+), 1 deletion(-)

diff --git a/gnome-base/gdm/Manifest b/gnome-base/gdm/Manifest
index a9cb79bf2bc0..12ea64d01997 100644
--- a/gnome-base/gdm/Manifest
+++ b/gnome-base/gdm/Manifest
@@ -1,2 +1,3 @@
 DIST gdm-43.0.tar.xz 830668 BLAKE2B cd9fa9864ba075a85d16128ce2faba9c360357d900719c8e7cbb6c638f91750ff80ef0d970b24d0d858aa56f8ab95b8cac0d93624bcced8e6f98ca2d1f06fbc3 SHA512 e3eaa7a50e224939b6e535963171a800bb175ed9480a88ce14034929760dd579b91c4f3117be6a4404b2de13afdee881dafe09695eebf42872d4a13fbc5fb8ba
+DIST gdm-44.0.tar.xz 846848 BLAKE2B ce81771b119c912be0557e21db666aa99e61eb34bbbbd03a5c341a68eb060e7a956b95eeff5450a9bb879dbb177b11db65596e7cc3e8627e09d1fccd6cfe5c30 SHA512 eab556d0cab43ce4fe04b918f22281831f1dd8de836866de009884a637f11c83a626cdedb46cee5efb53cf1ad8139aa6e9568fd90a4d01704605347deca7bc2c
 DIST tango-gentoo-v1.1.tar.gz 29322 BLAKE2B 83fa2bf37727e60851dd679054fe1b153ebfea58c9a9a40f891f7d68d3b047b02e8effa1d1b4e08d64500a2072ce7200f159c92a352da7124de27e1b05bb6027 SHA512 87d47ddab68361db6d99866c51705dcb3e198f8345a1096859acf2c6cca5099dd23c7fb30d124f52c4933ea38fd45fadffbbe6ecbdfa84f5b60938a4824f9045

diff --git a/gnome-base/gdm/files/gdm-44.0-meson-allow-building-with-elogind.patch b/gnome-base/gdm/files/gdm-44.0-meson-allow-building-with-elogind.patch
new file mode 100644
index 000000000000..930352a9c32a
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-44.0-meson-allow-building-with-elogind.patch
@@ -0,0 +1,208 @@
+https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/113
+
+From e4e96e9ac55481bd2cae2c7ca33a1d516ad1b879 Mon Sep 17 00:00:00 2001
+From: Dudemanguy <random342@airmail.cc>
+Date: Mon, 5 Oct 2020 18:41:55 -0500
+Subject: [PATCH] meson: allow building with elogind
+
+Currently, the GDM meson build has a hard dependency on systemd.
+However, GDM can function just fine if one is using elogind. This allows
+a user to build GDM against libelogind and also disable the systemd
+system and user units.
+---
+ common/meson.build |  2 +-
+ data/meson.build   | 62 +++++++++++++++++++++++++++-------------------
+ libgdm/meson.build |  2 +-
+ meson.build        | 36 +++++++++++++++++++--------
+ meson_options.txt  |  5 ++--
+ 5 files changed, 67 insertions(+), 40 deletions(-)
+
+diff --git a/common/meson.build b/common/meson.build
+index 074dd92e..bca58f7c 100644
+--- a/common/meson.build
++++ b/common/meson.build
+@@ -11,7 +11,7 @@ libgdmcommon_src = files(
+ )
+ 
+ libgdmcommon_deps = [
+-  libsystemd_dep,
++  logind_dep,
+   gobject_dep,
+   gio_dep,
+   gio_unix_dep,
+diff --git a/data/meson.build b/data/meson.build
+index 2dec4c23..c3452e1c 100644
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -164,41 +164,53 @@ else
+   service_config.set('PLYMOUTH_QUIT_SERVICE', '')
+ endif
+ 
+-if get_option('systemdsystemunitdir') != ''
+-  systemd_systemunitdir = get_option('systemdsystemunitdir')
+-else
+-  systemd_systemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
++systemdsystemunitdir = get_option('systemdsystemunitdir')
++if systemdsystemunitdir != 'no'
++  assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd system unit dir or disable it')
++  if get_option('systemdsystemunitdir') != ''
++    systemd_systemunitdir = get_option('systemdsystemunitdir')
++  else
++    systemd_systemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
++  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')])
++systemduserunitdir = get_option('systemduserunitdir')
++if systemduserunitdir != 'no'
++  assert(systemd_dep.found(), 'systemd required but not found, please provide a valid systemd user unit dir or disable it')
++  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
+ endif
+ 
+-configure_file(
+-  input: 'gdm.service.in',
+-  output: '@BASENAME@',
+-  configuration: service_config,
+-  install_dir: systemd_systemunitdir,
+-  format: 'cmake'
+-)
++if systemdsystemunitdir != 'no'
++  configure_file(
++    input: 'gdm.service.in',
++    output: '@BASENAME@',
++    configuration: service_config,
++    install_dir: systemd_systemunitdir,
++    format: 'cmake'
++  )
++endif
+ 
+ gdm_gnome_session_wanted_targets = []
+ foreach component: gdm_gnome_user_session_wanted_components
+   gdm_gnome_session_wanted_targets += 'Wants=@0@.target'.format(component)
+ endforeach
+ 
+-configure_file(
+-  input: 'session.conf.in',
+-  output: 'session.conf',
+-  configuration: {
+-    'requires_component': gdm_gnome_shell_component,
+-    'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets),
+-  },
+-  install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d',
+-)
++if systemduserunitdir != 'no'
++  configure_file(
++    input: 'session.conf.in',
++    output: 'session.conf',
++    configuration: {
++      'requires_component': gdm_gnome_shell_component,
++      'wants_required_components': '\n'.join(gdm_gnome_session_wanted_targets),
++    },
++    install_dir: systemd_userunitdir / 'gnome-session@gnome-login.target.d',
++  )
++endif
+ 
+ # XSession
+ if get_option('gdm-xsession')
+diff --git a/libgdm/meson.build b/libgdm/meson.build
+index 3f8cafbb..83e95151 100644
+--- a/libgdm/meson.build
++++ b/libgdm/meson.build
+@@ -56,7 +56,7 @@ libgdm_deps = [
+   glib_dep,
+   gio_dep,
+   gio_unix_dep,
+-  libsystemd_dep,
++  logind_dep,
+   libgdmcommon_dep,
+ ]
+ 
+diff --git a/meson.build b/meson.build
+index 57116f2a..db4ecfd6 100644
+--- a/meson.build
++++ b/meson.build
+@@ -99,17 +99,30 @@ 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
+-# systemd
+-systemd_dep = dependency('systemd')
+-libsystemd_dep = dependency('libsystemd')
+-systemd_multiseat_x = find_program('systemd-multi-seat-x',
+-  required: false,
+-  dirs: [
+-    systemd_dep.get_pkgconfig_variable('systemdutildir'),
+-    '/lib/systemd',
+-    '/usr/lib/systemd',
+-  ])
+-systemd_x_server = systemd_multiseat_x.found()? systemd_multiseat_x.path() : '/lib/systemd/systemd-multi-seat-x'
++
++logind_provider = get_option('logind-provider')
++systemd_dep = dependency('systemd', required: false)
++if logind_provider == 'systemd'
++  libsystemd_dep = dependency('libsystemd')
++  logind_dep = libsystemd_dep
++  if meson.version().version_compare('>= 0.53')
++    systemd_multiseat_x = find_program('systemd-multi-seat-x',
++      required: false,
++      dirs: [
++        systemd_dep.get_pkgconfig_variable('systemdutildir'),
++        '/lib/systemd',
++        '/usr/lib/systemd',
++      ])
++  else
++    systemd_multiseat_x = find_program('systemd-multi-seat-x', required: false)
++  endif
++  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
++
+ # Plymouth
+ plymouth_dep = dependency('ply-boot-client', required: get_option('plymouth'))
+ # Check for Solaris auditing API (ADT)
+@@ -319,6 +332,7 @@ summary({
+     'PAM Syslog': have_pam_syslog,
+     'Supports PAM Extensions': pam_extensions_supported,
+     'SeLinux': libselinux_dep.found(),
++    'Logind Provider': get_option('logind-provider'),
+     'Use GDM Xsession': get_option('gdm-xsession'),
+     'Use UserDisplayServer': get_option('user-display-server'),
+     'Use SystemdJournal': get_option('systemd-journal'),
+diff --git a/meson_options.txt b/meson_options.txt
+index 14e0b908..5135d7d6 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -12,6 +12,7 @@ option('initial-vt', type: 'integer', value: 1, description: 'Initial virtual te
+ option('ipv6', type: 'boolean', value: false, description: 'Enables compilation of IPv6 code.')
+ option('lang-file', type: 'string', value: '', description: 'File containing default language settings.')
+ option('libaudit', type: 'feature', value: 'auto', description: 'Add Linux audit support.')
++option('logind-provider', type: 'combo', choices: ['systemd', 'elogind'], value: 'systemd', description: 'Which logind library to use.')
+ option('log-dir', type: 'string', value: '/var/log/gdm', description: 'Log directory.')
+ option('pam-mod-dir', type: 'string', value: '', description: 'Directory to install PAM modules in.')
+ option('pam-prefix', type: 'string', value: '', description: 'Specify where PAM files go.')
+@@ -27,8 +28,8 @@ option('solaris', type: 'boolean', value: false, description: 'Build for Solaris
+ option('split-authentication', type: 'boolean', value: true, description: 'Enable multiple simultaneous PAM conversations during login.')
+ option('sysconfsubdir', type: 'string', value: 'gdm', description: 'Directory name used under sysconfdir.')
+ option('systemd-journal', type: 'boolean', value: true, description: 'Use journald support.')
+-option('systemdsystemunitdir', type: 'string', value: '', description: 'Directory for systemd service files.')
+-option('systemduserunitdir', type: 'string', value: '', description: 'Directory for systemd user service files.')
++option('systemdsystemunitdir', type: 'string', value: '', description: 'Directory for systemd service files, or \'no\' to disable.')
++option('systemduserunitdir', type: 'string', value: '', description: 'Directory for systemd user service files, or \'no\' to disable.')
+ option('tcp-wrappers', type: 'boolean', value: false, description: 'Use TCP wrappers.')
+ option('udev-dir', type: 'string', value: '', description: 'Directory for udev rules file.')
+ option('user', type: 'string', value: 'gdm', description: 'GDM\'s username.')
+-- 
+2.39.2
+

diff --git a/gnome-base/gdm/gdm-44.0.ebuild b/gnome-base/gdm/gdm-44.0.ebuild
new file mode 100644
index 000000000000..be6bdc9ecea6
--- /dev/null
+++ b/gnome-base/gdm/gdm-44.0.ebuild
@@ -0,0 +1,215 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop gnome2 meson pam readme.gentoo-r1 systemd udev
+
+DESCRIPTION="GNOME Display Manager for managing graphical display servers and user logins"
+HOMEPAGE="https://wiki.gnome.org/Projects/GDM https://gitlab.gnome.org/GNOME/gdm"
+
+SRC_URI="${SRC_URI}
+	branding? ( https://www.mail-archive.com/tango-artists@lists.freedesktop.org/msg00043/tango-gentoo-v1.1.tar.gz )
+"
+
+LICENSE="
+	GPL-2+
+	branding? ( CC-BY-SA-4.0 )
+"
+
+SLOT="0"
+
+IUSE="accessibility audit bluetooth-sound branding elogind fprint plymouth selinux systemd tcpd test wayland"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="^^ ( elogind systemd )"
+
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+
+# dconf, dbus and g-s-d are needed at install time for dconf update
+# keyutils is automagic dep that makes autologin unlock login keyring
+# when all the passwords match (disk encryption, user pw and login keyring)
+# dbus-run-session used at runtime
+COMMON_DEPEND="
+	virtual/udev
+	>=dev-libs/libgudev-232:=
+	>=dev-libs/glib-2.56:2
+	>=x11-libs/gtk+-2.91.1:3
+	>=media-libs/libcanberra-0.4[gtk3]
+	>=sys-apps/accountsservice-0.6.35
+	x11-libs/libxcb
+	sys-apps/keyutils:=
+	selinux? ( sys-libs/libselinux )
+
+	x11-libs/libX11
+	x11-libs/libXau
+	x11-base/xorg-server[-minimal]
+	x11-libs/libXdmcp
+	tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
+
+	systemd? ( >=sys-apps/systemd-186:0=[pam] )
+	elogind? ( >=sys-auth/elogind-239.3[pam] )
+
+	plymouth? ( sys-boot/plymouth )
+	audit? ( sys-process/audit )
+
+	sys-libs/pam
+	sys-auth/pambase[elogind?,systemd?]
+
+	>=gnome-base/dconf-0.20
+	>=gnome-base/gnome-settings-daemon-3.1.4
+	gnome-base/gsettings-desktop-schemas
+	sys-apps/dbus
+
+	>=x11-misc/xdg-utils-1.0.2-r3
+
+	>=dev-libs/gobject-introspection-0.9.12:=
+"
+# XXX: These deps are from session and desktop files in data/ directory
+# fprintd is used via dbus by gdm-fingerprint-extension
+RDEPEND="${COMMON_DEPEND}
+	acct-group/gdm
+	acct-user/gdm
+	>=gnome-base/gnome-session-3.6
+	>=gnome-base/gnome-shell-3.1.90
+	x11-apps/xhost
+
+	accessibility? (
+		>=app-accessibility/orca-3.10
+		gnome-extra/mousetweaks
+	)
+	fprint? ( sys-auth/fprintd[pam] )
+"
+DEPEND="${COMMON_DEPEND}
+	x11-base/xorg-proto
+"
+BDEPEND="
+	app-text/docbook-xml-dtd:4.1.2
+	dev-util/gdbus-codegen
+	dev-util/glib-utils
+	dev-util/itstool
+	>=gnome-base/dconf-0.20
+	>=sys-devel/gettext-0.19.8
+	virtual/pkgconfig
+	test? ( >=dev-libs/check-0.9.4 )
+	app-text/yelp-tools
+"
+
+DOC_CONTENTS="
+	To start GDM at boot with systemd, run:\n
+	# systemctl enable gdm.service\n
+	\n
+	To start GDM at boot with OpenRC, set DISPLAYMANAGER=\"gdm\"\n
+	in /etc/conf.d/display-manager and enable the display-manager service:\n
+	# rc-update add display-manager\n
+	\n
+	For passwordless login to unlock your keyring, you need to install
+	sys-auth/pambase with USE=gnome-keyring and set an empty password
+	on your keyring. Use app-crypt/seahorse for that.\n
+	\n
+	You may need to install app-crypt/coolkey and sys-auth/pam_pkcs11
+	for smartcard support
+"
+
+PATCHES=(
+	# Add elogind support
+	"${FILESDIR}/${PN}-44.0-meson-allow-building-with-elogind.patch"
+)
+
+src_prepare() {
+	default
+
+	# Show logo when branding is enabled
+	use branding && eapply "${FILESDIR}/${PN}-3.30.3-logo.patch"
+}
+
+src_configure() {
+	# --with-initial-vt=7 conflicts with plymouth, bug #453392
+	# gdm-3.30 now reaps (stops) the login screen when the login VT isn't active, which
+	# saves on memory. However this means if we don't start on VT1, gdm doesn't start up
+	# before user manually goes to VT7. Thus as-is we can not keep gdm away from VT1,
+	# so lets try always having it in VT1 and see if that is an issue for people before
+	# hacking up workarounds for the initial start case.
+	local emesonargs=(
+		--localstatedir /var
+
+		-Ddefault-pam-config=exherbo
+		-Dgdm-xsession=true
+		-Dgroup=gdm
+		-Dipv6=true
+		$(meson_feature audit libaudit)
+		-Dlogind-provider=$(usex systemd systemd elogind)
+		-Dpam-mod-dir=$(getpam_mod_dir)
+		$(meson_feature plymouth)
+		-Drun-dir=/run/gdm
+		$(meson_feature selinux)
+		$(meson_use systemd systemd-journal)
+		$(meson_use tcpd tcp-wrappers)
+		-Dudev-dir=$(get_udevdir)/rules.d
+		-Duser=gdm
+		-Duser-display-server=true
+		$(meson_use wayland wayland-support)
+		-Dxdmcp=enabled
+	)
+
+	if use elogind; then
+		emesonargs+=(
+			-Dinitial-vt=7 # TODO: Revisit together with startDM.sh and other xinit talks; also ignores plymouth possibility
+			-Dsystemdsystemunitdir=no
+			-Dsystemduserunitdir=no
+		)
+	else
+		emesonargs+=(
+			-Dinitial-vt=1
+			-Dsystemdsystemunitdir="$(systemd_get_systemunitdir)"
+			-Dsystemduserunitdir="$(systemd_get_userunitdir)"
+		)
+	fi
+
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+
+	if ! use accessibility ; then
+		rm "${ED}"/usr/share/gdm/greeter/autostart/orca-autostart.desktop || die
+	fi
+
+	if ! use bluetooth-sound ; then
+		# Workaround https://gitlab.freedesktop.org/pulseaudio/pulseaudio/merge_requests/10
+		# bug #679526
+		insinto /var/lib/gdm/.config/pulse
+		doins "${FILESDIR}"/default.pa
+	fi
+
+	# install XDG_DATA_DIRS gdm changes
+	echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
+	doenvd 99xdg-gdm
+
+	use branding && newicon "${WORKDIR}/tango-gentoo-v1.1/scalable/gentoo.svg" gentoo-gdm.svg
+
+	readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+	gnome2_pkg_postinst
+	local d ret
+
+	# bug #669146; gdm may crash if /var/lib/gdm subdirs are not owned by gdm:gdm
+	ret=0
+	ebegin "Fixing ${EROOT}/var/lib/gdm ownership"
+	chown --no-dereference gdm:gdm "${EROOT}/var/lib/gdm" || ret=1
+	for d in "${EROOT}/var/lib/gdm/"{.cache,.color,.config,.dbus,.local}; do
+		[[ ! -e "${d}" ]] || chown --no-dereference -R gdm:gdm "${d}" || ret=1
+	done
+	eend ${ret}
+
+	systemd_reenable gdm.service
+	readme.gentoo_print_elog
+
+	udev_reload
+}
+
+pkg_postrm() {
+	udev_reload
+}

diff --git a/gnome-base/gdm/metadata.xml b/gnome-base/gdm/metadata.xml
index f3e676ca32ba..badb7ce5e45a 100644
--- a/gnome-base/gdm/metadata.xml
+++ b/gnome-base/gdm/metadata.xml
@@ -7,7 +7,6 @@
   </maintainer>
   <use>
     <flag name="bluetooth-sound">Allow loading of bluetooth sound modules. This may be necessary for accessibility screen readers, but may cause bluetooth sound issues for users logging in.</flag>
-    <flag name="elogind">Use <pkg>sys-auth/elogind</pkg> for session management</flag>
     <flag name="fprint">Enables experimental fingerprint authentication using <pkg>sys-auth/fprintd</pkg></flag>
     <flag name="plymouth">Enable support for smooth transition from <pkg>sys-boot/plymouth</pkg></flag>
   </use>


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: gnome-base/gdm/, gnome-base/gdm/files/
@ 2023-12-04 11:13 Sam James
  0 siblings, 0 replies; 6+ messages in thread
From: Sam James @ 2023-12-04 11:13 UTC (permalink / raw
  To: gentoo-commits

commit:     f52916b6c16eded9c8f1aa918df20ff5063b158a
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Dec  4 11:13:15 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Dec  4 11:13:16 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f52916b6

gnome-base/gdm: backport modern c ptr fix

Closes: https://bugs.gentoo.org/919081
Signed-off-by: Sam James <sam <AT> gentoo.org>

 gnome-base/gdm/files/gdm-45.0.1-c99.patch |  22 +++
 gnome-base/gdm/gdm-45.0.1-r1.ebuild       | 214 ++++++++++++++++++++++++++++++
 2 files changed, 236 insertions(+)

diff --git a/gnome-base/gdm/files/gdm-45.0.1-c99.patch b/gnome-base/gdm/files/gdm-45.0.1-c99.patch
new file mode 100644
index 000000000000..2d0f5b9cc0eb
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-45.0.1-c99.patch
@@ -0,0 +1,22 @@
+https://bugs.gentoo.org/919081
+https://gitlab.gnome.org/GNOME/gdm/-/issues/893
+https://gitlab.gnome.org/GNOME/gdm/-/commit/08ef19e848176e58511f1a66992b5a26cb3c51a2
+
+From 08ef19e848176e58511f1a66992b5a26cb3c51a2 Mon Sep 17 00:00:00 2001
+From: Alessandro Bono <alessandro.bono369@gmail.com>
+Date: Wed, 1 Nov 2023 12:35:44 +0100
+Subject: [PATCH] gdm-session: Pass the correct pointer type
+
+--- a/daemon/gdm-session.c
++++ b/daemon/gdm-session.c
+@@ -3045,7 +3045,7 @@ free_pending_worker_connection (GdmSession      *self,
+         worker_manager_interface = g_object_get_data (G_OBJECT (connection),
+                                                       "gdm-dbus-worker-manager-interface");
+         if (worker_manager_interface != NULL) {
+-                g_dbus_interface_skeleton_unexport (worker_manager_interface);
++                g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (worker_manager_interface));
+                 g_object_set_data (G_OBJECT (connection),
+                                    "gdm-dbus-worker-manager-interface",
+                                    NULL);
+-- 
+GitLab

diff --git a/gnome-base/gdm/gdm-45.0.1-r1.ebuild b/gnome-base/gdm/gdm-45.0.1-r1.ebuild
new file mode 100644
index 000000000000..5a4287d0838d
--- /dev/null
+++ b/gnome-base/gdm/gdm-45.0.1-r1.ebuild
@@ -0,0 +1,214 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit desktop gnome2 meson pam readme.gentoo-r1 systemd udev
+
+DESCRIPTION="GNOME Display Manager for managing graphical display servers and user logins"
+HOMEPAGE="https://wiki.gnome.org/Projects/GDM https://gitlab.gnome.org/GNOME/gdm"
+
+SRC_URI="${SRC_URI}
+	branding? ( https://www.mail-archive.com/tango-artists@lists.freedesktop.org/msg00043/tango-gentoo-v1.1.tar.gz )
+"
+
+LICENSE="
+	GPL-2+
+	branding? ( CC-BY-SA-4.0 )
+"
+
+SLOT="0"
+
+IUSE="accessibility audit bluetooth-sound branding elogind fprint plymouth selinux systemd tcpd test wayland"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="^^ ( elogind systemd )"
+
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+# dconf, dbus and g-s-d are needed at install time for dconf update
+# keyutils is automagic dep that makes autologin unlock login keyring
+# when all the passwords match (disk encryption, user pw and login keyring)
+# dbus-run-session used at runtime
+COMMON_DEPEND="
+	virtual/udev
+	>=dev-libs/libgudev-232:=
+	>=dev-libs/glib-2.56:2
+	>=x11-libs/gtk+-2.91.1:3
+	>=media-libs/libcanberra-0.4[gtk3]
+	>=sys-apps/accountsservice-0.6.35
+	x11-libs/libxcb
+	sys-apps/keyutils:=
+	selinux? ( sys-libs/libselinux )
+
+	x11-libs/libX11
+	x11-libs/libXau
+	x11-base/xorg-server[-minimal]
+	x11-libs/libXdmcp
+	tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
+
+	systemd? ( >=sys-apps/systemd-186:0=[pam] )
+	elogind? ( >=sys-auth/elogind-239.3[pam] )
+
+	plymouth? ( sys-boot/plymouth )
+	audit? ( sys-process/audit )
+
+	sys-libs/pam
+	sys-auth/pambase[elogind?,systemd?]
+
+	>=gnome-base/dconf-0.20
+	>=gnome-base/gnome-settings-daemon-3.1.4
+	gnome-base/gsettings-desktop-schemas
+	sys-apps/dbus
+
+	>=x11-misc/xdg-utils-1.0.2-r3
+
+	>=dev-libs/gobject-introspection-0.9.12:=
+"
+# XXX: These deps are from session and desktop files in data/ directory
+# fprintd is used via dbus by gdm-fingerprint-extension
+RDEPEND="${COMMON_DEPEND}
+	acct-group/gdm
+	acct-user/gdm
+	>=gnome-base/gnome-session-3.6
+	>=gnome-base/gnome-shell-3.1.90
+	x11-apps/xhost
+
+	accessibility? (
+		>=app-accessibility/orca-3.10
+		gnome-extra/mousetweaks
+	)
+	fprint? ( sys-auth/fprintd[pam] )
+"
+DEPEND="${COMMON_DEPEND}
+	x11-base/xorg-proto
+"
+BDEPEND="
+	app-text/docbook-xml-dtd:4.1.2
+	dev-util/gdbus-codegen
+	dev-util/glib-utils
+	dev-util/itstool
+	>=gnome-base/dconf-0.20
+	>=sys-devel/gettext-0.19.8
+	virtual/pkgconfig
+	test? ( >=dev-libs/check-0.9.4 )
+	app-text/yelp-tools
+"
+
+DOC_CONTENTS="
+	To start GDM at boot with systemd, run:\n
+	# systemctl enable gdm.service\n
+	\n
+	To start GDM at boot with OpenRC, set DISPLAYMANAGER=\"gdm\"\n
+	in /etc/conf.d/display-manager and enable the display-manager service:\n
+	# rc-update add display-manager\n
+	\n
+	For passwordless login to unlock your keyring, you need to install
+	sys-auth/pambase with USE=gnome-keyring and set an empty password
+	on your keyring. Use app-crypt/seahorse for that.\n
+	\n
+	You may need to install app-crypt/coolkey and sys-auth/pam_pkcs11
+	for smartcard support
+"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-45.0.1-c99.patch
+)
+
+src_prepare() {
+	default
+
+	# Show logo when branding is enabled
+	use branding && eapply "${FILESDIR}/${PN}-3.30.3-logo.patch"
+}
+
+src_configure() {
+	# --with-initial-vt=7 conflicts with plymouth, bug #453392
+	# gdm-3.30 now reaps (stops) the login screen when the login VT isn't active, which
+	# saves on memory. However this means if we don't start on VT1, gdm doesn't start up
+	# before user manually goes to VT7. Thus as-is we can not keep gdm away from VT1,
+	# so lets try always having it in VT1 and see if that is an issue for people before
+	# hacking up workarounds for the initial start case.
+	local emesonargs=(
+		--localstatedir /var
+
+		-Ddefault-pam-config=exherbo
+		-Dgdm-xsession=true
+		-Dgroup=gdm
+		-Dipv6=true
+		$(meson_feature audit libaudit)
+		-Dlogind-provider=$(usex systemd systemd elogind)
+		-Dpam-mod-dir=$(getpam_mod_dir)
+		$(meson_feature plymouth)
+		-Drun-dir=/run/gdm
+		$(meson_feature selinux)
+		$(meson_use systemd systemd-journal)
+		$(meson_use tcpd tcp-wrappers)
+		-Dudev-dir=$(get_udevdir)/rules.d
+		-Duser=gdm
+		-Duser-display-server=true
+		$(meson_use wayland wayland-support)
+		-Dxdmcp=enabled
+	)
+
+	if use elogind; then
+		emesonargs+=(
+			-Dinitial-vt=7 # TODO: Revisit together with startDM.sh and other xinit talks; also ignores plymouth possibility
+			-Dsystemdsystemunitdir=no
+			-Dsystemduserunitdir=no
+		)
+	else
+		emesonargs+=(
+			-Dinitial-vt=1
+			-Dsystemdsystemunitdir="$(systemd_get_systemunitdir)"
+			-Dsystemduserunitdir="$(systemd_get_userunitdir)"
+		)
+	fi
+
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+
+	if ! use accessibility ; then
+		rm "${ED}"/usr/share/gdm/greeter/autostart/orca-autostart.desktop || die
+	fi
+
+	if ! use bluetooth-sound ; then
+		# Workaround https://gitlab.freedesktop.org/pulseaudio/pulseaudio/merge_requests/10
+		# bug #679526
+		insinto /var/lib/gdm/.config/pulse
+		doins "${FILESDIR}"/default.pa
+	fi
+
+	# install XDG_DATA_DIRS gdm changes
+	echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
+	doenvd 99xdg-gdm
+
+	use branding && newicon "${WORKDIR}/tango-gentoo-v1.1/scalable/gentoo.svg" gentoo-gdm.svg
+
+	readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+	gnome2_pkg_postinst
+	local d ret
+
+	# bug #669146; gdm may crash if /var/lib/gdm subdirs are not owned by gdm:gdm
+	ret=0
+	ebegin "Fixing ${EROOT}/var/lib/gdm ownership"
+	chown --no-dereference gdm:gdm "${EROOT}/var/lib/gdm" || ret=1
+	for d in "${EROOT}/var/lib/gdm/"{.cache,.color,.config,.dbus,.local}; do
+		[[ ! -e "${d}" ]] || chown --no-dereference -R gdm:gdm "${d}" || ret=1
+	done
+	eend ${ret}
+
+	systemd_reenable gdm.service
+	readme.gentoo_print_elog
+
+	udev_reload
+}
+
+pkg_postrm() {
+	udev_reload
+}


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-12-04 11:13 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-04 11:13 [gentoo-commits] repo/gentoo:master commit in: gnome-base/gdm/, gnome-base/gdm/files/ Sam James
  -- strict thread matches above, loose matches on Subject: below --
2023-03-22 17:06 Matt Turner
2021-04-30 16:08 Matt Turner
2019-12-23 21:26 Mart Raudsepp
2019-05-05 11:55 Mart Raudsepp
2019-03-19 22:40 Mart Raudsepp

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox