diff options
author | Marek Szuba <marecki@gentoo.org> | 2022-09-27 12:31:03 +0100 |
---|---|---|
committer | Marek Szuba <marecki@gentoo.org> | 2022-09-27 13:22:30 +0100 |
commit | 002eaccdcc97f77c60eef6588dbeb92fee7a2ada (patch) | |
tree | f2ba6023f1b6efe1645ce53e2f43ea401203a9ce /x11-misc | |
parent | sys-apps/fwupd: add 1.8.5 (diff) | |
download | gentoo-002eaccdcc97f77c60eef6588dbeb92fee7a2ada.tar.gz gentoo-002eaccdcc97f77c60eef6588dbeb92fee7a2ada.tar.bz2 gentoo-002eaccdcc97f77c60eef6588dbeb92fee7a2ada.zip |
x11-misc/lightdm: some tweaks to start-up scripts
Closes: https://github.com/gentoo/gentoo/pull/20597
Closes: https://bugs.gentoo.org/839231
Signed-off-by: Marek Szuba <marecki@gentoo.org>
Diffstat (limited to 'x11-misc')
-rw-r--r-- | x11-misc/lightdm/files/Xsession-r1 | 75 | ||||
-rw-r--r-- | x11-misc/lightdm/files/lightdm.service-r1 | 13 | ||||
-rw-r--r-- | x11-misc/lightdm/lightdm-1.32.0-r1.ebuild | 155 |
3 files changed, 243 insertions, 0 deletions
diff --git a/x11-misc/lightdm/files/Xsession-r1 b/x11-misc/lightdm/files/Xsession-r1 new file mode 100644 index 000000000000..c0968ea2803f --- /dev/null +++ b/x11-misc/lightdm/files/Xsession-r1 @@ -0,0 +1,75 @@ +#!/bin/sh +# +# LightDM wrapper to run around X sessions. + +echo "Running X session wrapper" + +# Load profile +for file in "/etc/profile" "${HOME}/.profile" "/etc/xprofile" "${HOME}/.xprofile" ; do + if [ -f "${file}" ] ; then + echo "Loading profile from ${file}"; + . "${file}" + fi +done + +# Load resources +for file in "/etc/X11/Xresources" "${HOME}/.Xresources" ; do + if [ -f "${file}" ] ; then + echo "Loading resource: ${file}" + xrdb -nocpp -merge "${file}" + fi +done + +# Load keymaps +for file in "/etc/X11/Xkbmap" "${HOME}/.Xkbmap" ; do + if [ -f "${file}" ] ; then + echo "Loading keymap: ${file}" + setxkbmap $(cat "${file}") + XKB_IN_USE=yes + fi +done + +# Load xmodmap if not using XKB +if [ -z "${XKB_IN_USE}" ] ; then + for file in "/etc/X11/Xmodmap" "${HOME}/.Xmodmap" ; do + if [ -f "${file}" ] ; then + echo "Loading modmap: ${file}" + xmodmap "${file}" + fi + done +fi + +unset XKB_IN_USE + +# /etc/X11/xinit/xinitrc.d/80-dbus expects $command to be +# set to the Xsession arguments. So make it happy. See +# https://bugs.gentoo.org/show_bug.cgi?id=533456 +command="$@" + +# Run all system xinitrc shell scripts. +xinitdir="/etc/X11/xinit/xinitrc.d" +if [ -d "${xinitdir}" ] ; then + for script in ${xinitdir}/* ; do + if [ -x "${script}" ] && [ ! -d "${script}" ] ; then + echo "Loading xinit script ${script}" + . "${script}" + fi + done +fi + +# Load Xsession scripts +xsessionddir="/etc/X11/Xsession.d" +if [ -d "${xsessionddir}" ] ; then + for script in "${xsessionddir}"/* ; do + local i=$(basename ${script}) + script="${xsessionddir}/${i}" + if [ -r "${script}" ] && [ -f "${script}" ] && expr "${i}" : '^[[:alnum:]_-]\+$' > /dev/null ; then + echo "Loading X session script ${script}" + . "${script}" + fi + done +fi + +echo "X session wrapper complete, running session ${@}" + +exec ${command} diff --git a/x11-misc/lightdm/files/lightdm.service-r1 b/x11-misc/lightdm/files/lightdm.service-r1 new file mode 100644 index 000000000000..d843cac90a7f --- /dev/null +++ b/x11-misc/lightdm/files/lightdm.service-r1 @@ -0,0 +1,13 @@ +[Unit] +Description=Light Display Manager +Documentation=man:lightdm(1) +After=systemd-user-sessions.service + +[Service] +ExecStart=/usr/sbin/lightdm +Restart=always +IgnoreSIGPIPE=no +BusName=org.freedesktop.DisplayManager + +[Install] +Alias=display-manager.service diff --git a/x11-misc/lightdm/lightdm-1.32.0-r1.ebuild b/x11-misc/lightdm/lightdm-1.32.0-r1.ebuild new file mode 100644 index 000000000000..774f64b22d1c --- /dev/null +++ b/x11-misc/lightdm/lightdm-1.32.0-r1.ebuild @@ -0,0 +1,155 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools pam qmake-utils readme.gentoo-r1 systemd vala xdg-utils + +DESCRIPTION="A lightweight display manager" +HOMEPAGE="https://github.com/canonical/lightdm" +SRC_URI="https://github.com/canonical/lightdm/releases/download/${PV}/${P}.tar.xz + mirror://gentoo/introspection-20110205.m4.tar.bz2" + +LICENSE="GPL-3 LGPL-3" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86" +IUSE="audit +gnome +gtk +introspection non-root qt5 vala" + +REQUIRED_USE="vala? ( introspection )" + +RESTRICT="test" + +COMMON_DEPEND=" + >=dev-libs/glib-2.44.0:2 + dev-libs/libxml2 + sys-libs/pam + x11-libs/libX11 + >=x11-libs/libxklavier-5 + audit? ( sys-process/audit ) + gnome? ( sys-apps/accountsservice ) + introspection? ( >=dev-libs/gobject-introspection-1 ) + qt5? ( + dev-qt/qtcore:5 + dev-qt/qtdbus:5 + dev-qt/qtgui:5 + ) +" +RDEPEND="${COMMON_DEPEND} + acct-group/lightdm + acct-group/video + acct-user/lightdm + >=sys-auth/pambase-20101024-r2" +DEPEND="${COMMON_DEPEND} + gnome? ( gnome-base/gnome-common ) +" +BDEPEND=" + dev-util/gtk-doc-am + dev-util/intltool + sys-devel/gettext + virtual/pkgconfig + vala? ( $(vala_depend) ) +" +PDEPEND="gtk? ( x11-misc/lightdm-gtk-greeter )" + +PATCHES=( + "${FILESDIR}"/${PN}-1.32.0-musl-locale.patch + "${FILESDIR}"/${PN}-1.32.0-musl-updwtmpx.patch +) + +DOCS=( NEWS ) + +pkg_setup() { + export LIGHTDM_USER=${LIGHTDM_USER:-lightdm} + vala_setup +} + +src_prepare() { + xdg_environment_reset + + sed -i -e 's:getgroups:lightdm_&:' tests/src/libsystem.c || die #412369 + sed -i -e '/minimum-uid/s:500:1000:' data/users.conf || die + + einfo "Fixing the session-wrapper variable in lightdm.conf" + sed -i -e \ + "/^#session-wrapper/s@^.*@session-wrapper=/etc/${PN}/Xsession@" \ + data/lightdm.conf || die "Failed to fix lightdm.conf" + + # use correct version of qmake. bug #566950 + sed \ + -e "/AC_CHECK_TOOLS(MOC5/a AC_SUBST(MOC5,$(qt5_get_bindir)/moc)" \ + -i configure.ac || die + + default + + # Remove bogus Makefile statement. This needs to go upstream + sed -i /"@YELP_HELP_RULES@"/d help/Makefile.am || die + if has_version dev-libs/gobject-introspection; then + eautoreconf + else + AT_M4DIR=${WORKDIR} eautoreconf + fi +} + +src_configure() { + # Set default values if global vars unset + local _greeter _session _user + _greeter=${LIGHTDM_GREETER:=lightdm-gtk-greeter} + _session=${LIGHTDM_SESSION:=gnome} + _user="$(usex non-root "${LIGHTDM_USER}" root)" + # Let user know how lightdm is configured + einfo "Gentoo configuration" + einfo "Default greeter: ${_greeter}" + einfo "Default session: ${_session}" + einfo "Greeter user: ${_user}" + + # also disable tests because libsystem.c does not build. Tests are + # restricted so it does not matter anyway. + local myeconfargs=( + --localstatedir=/var + --disable-static + --disable-tests + $(use_enable audit libaudit) + $(use_enable introspection) + $(use_enable qt5 liblightdm-qt5) + $(use_enable vala) + --with-user-session=${_session} + --with-greeter-session=${_greeter} + --with-greeter-user=${_user} + ) + econf "${myeconfargs[@]}" +} + +src_install() { + default + + # Delete apparmor profiles because they only work with Ubuntu's + # apparmor package. Bug #494426 + if [[ -d ${ED}/etc/apparmor.d ]]; then + rm -r "${ED}/etc/apparmor.d" || die \ + "Failed to remove apparmor profiles" + fi + + insinto /etc/${PN} + doins data/{${PN},keys}.conf + newins "${FILESDIR}"/Xsession-r1 Xsession + fperms +x /etc/${PN}/Xsession + # /var/lib/lightdm-data could be useful. Bug #522228 + keepdir /var/lib/${PN}-data + + find "${ED}" -type f \( -name '*.a' -o -name "*.la" \) -delete || die + rm -r "${ED}"/etc/init || die + + # Remove existing pam file. We will build a new one. Bug #524792 + rm -r "${ED}"/etc/pam.d/${PN}{,-greeter} || die + pamd_mimic system-local-login ${PN} auth account password session #372229 + pamd_mimic system-local-login ${PN}-greeter auth account password session #372229 + dopamd "${FILESDIR}"/${PN}-autologin #390863, #423163 + + readme.gentoo_create_doc + + systemd_newunit "${FILESDIR}"/${PN}.service-r1 ${PN}.service +} + +pkg_postinst() { + systemd_reenable "${PN}.service" +} |