diff options
-rw-r--r-- | .SRCINFO | 96 | ||||
-rw-r--r-- | 0001-guest-account-Add-default-GSettings-support.patch | 33 | ||||
-rw-r--r-- | 0002-Fix-separator-error.patch | 8 | ||||
-rw-r--r-- | 0002-guest-account-Add-default-GSettings-support.patch | 33 | ||||
-rw-r--r-- | PKGBUILD | 178 | ||||
-rw-r--r-- | Xsession | 64 | ||||
-rw-r--r-- | lightdm-autologin.pam | 13 | ||||
-rw-r--r-- | lightdm-default-config.patch | 40 | ||||
-rw-r--r-- | lightdm.pam | 7 | ||||
-rw-r--r-- | lightdm.rules | 15 | ||||
-rw-r--r-- | lightdm.service | 14 | ||||
-rw-r--r-- | lightdm.sysusers | 3 | ||||
-rw-r--r-- | lightdm.tmpfiles | 1 |
13 files changed, 505 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..e3a788199306 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,96 @@ +pkgbase = lightdm-guest + pkgdesc = A lightweight display manager. With guest-session enabled + pkgver = 1.26.0 + pkgrel = 1 + epoch = 1 + url = https://www.freedesktop.org/wiki/Software/LightDM/ + arch = i686 + arch = x86_64 + license = GPL3 + license = LGPL3 + makedepends = gcc-libs + makedepends = glib2 + makedepends = glibc + makedepends = gobject-introspection + makedepends = gtk-doc + makedepends = intltool + makedepends = itstool + makedepends = libgcrypt + makedepends = libx11 + makedepends = libxcb + makedepends = libxdmcp + makedepends = libxklavier + makedepends = pam + makedepends = polkit + makedepends = qt4 + makedepends = qt5-base + makedepends = vala + source = lightdm-1.26.0.tar.gz::https://github.com/CanonicalLtd/lightdm/archive/1.26.0.tar.gz + source = lightdm.service + source = lightdm.sysusers + source = lightdm.tmpfiles + source = lightdm.pam + source = lightdm-autologin.pam + source = lightdm.rules + source = lightdm-default-config.patch + source = Xsession + source = 0001-guest-account-Add-default-GSettings-support.patch + source = 0002-Fix-separator-error.patch + sha256sums = 831c61b598b2b27fa1ee89ae162382cb122ab7f9d865b9e8475895631dd8018a + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + sha256sums = SKIP + +pkgname = lightdm-guest + depends = glib2 + depends = glibc + depends = libgcrypt + depends = libx11 + depends = libxcb + depends = libxdmcp + depends = libxklavier + depends = pam + depends = polkit + optdepends = accountsservice: Enhanced user accounts handling + optdepends = lightdm-gtk-greeter: GTK greeter + optdepends = lightdm-kde-greeter: Qt greeter + optdepends = xorg-server-xephyr: LightDM test mode + optdepends = bindfs: Used for guest session to avoid copying skeleton dotfiles + provides = lightdm + conflicts = lightdm + backup = etc/apparmor.d/lightdm-guest-session + backup = etc/lightdm/keys.conf + backup = etc/lightdm/lightdm.conf + backup = etc/lightdm/users.conf + backup = etc/lightdm/Xsession + backup = etc/pam.d/lightdm + backup = etc/pam.d/lightdm-autologin + backup = etc/pam.d/lightdm-greeter + +pkgname = liblightdm-qt4-guest + pkgdesc = LightDM Qt client library + depends = gcc-libs + depends = glibc + depends = lightdm + depends = qt4 + provides = liblightdm-qt4 + conflicts = liblightdm-qt4 + options = !emptydirs + +pkgname = liblightdm-qt5-guest + pkgdesc = LightDM Qt client library + depends = gcc-libs + depends = glibc + depends = lightdm + depends = qt5-base + provides = liblightdm-qt5 + conflicts = liblightdm-qt5 + options = !emptydirs + diff --git a/0001-guest-account-Add-default-GSettings-support.patch b/0001-guest-account-Add-default-GSettings-support.patch new file mode 100644 index 000000000000..18b8d62c60b0 --- /dev/null +++ b/0001-guest-account-Add-default-GSettings-support.patch @@ -0,0 +1,33 @@ +From 225320fe7d992e5452a3342ed36b9beca36395ec Mon Sep 17 00:00:00 2001 +From: Xiao-Long Chen <chenxiaolong@cxl.epac.to> +Date: Sun, 13 Apr 2014 01:02:42 -0400 +Subject: [PATCH] guest-account: Add default GSettings support + +--- + debian/guest-account.sh | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/debian/guest-account.sh b/debian/guest-account.sh +index 675eb77..f5552bc 100644 +--- a/debian/guest-account.sh ++++ b/debian/guest-account.sh +@@ -132,6 +132,16 @@ add_account () + chown -R ${GUEST_USER}:${GUEST_USER} ${GUEST_HOME} + fi + ++ # Load default dconf settings ++ mkdir -p "${GUEST_HOME}/.config/" "${GUEST_HOME}/.cache/" ++ chown -R ${GUEST_USER}:${GUEST_USER} "${GUEST_HOME}/.config/" "${GUEST_HOME}/.cache/" ++ if [ -d /etc/guest-session/gsettings/ ]; then ++ for i in /etc/guest-session/gsettings/*; do ++ cat "${i}" | sed '/^\[.*\]$/ s/\./\//g' | \ ++ su - ${GUEST_USER} -c 'dbus-launch dconf load /' ++ done ++ fi ++ + # setup session + su ${GUEST_USER} -c "env HOME=${GUEST_HOME} site_gs=${site_gs} ${dist_gs}/setup.sh" + +-- +2.7.0 + diff --git a/0002-Fix-separator-error.patch b/0002-Fix-separator-error.patch new file mode 100644 index 000000000000..7cec52b96881 --- /dev/null +++ b/0002-Fix-separator-error.patch @@ -0,0 +1,8 @@ +--- a/help/Makefile.am 2016-12-16 20:45:09.453675407 -0800 ++++ b/help/Makefile.am 2016-12-16 20:45:25.577489985 -0800 +@@ -1,5 +1,3 @@ +-@YELP_HELP_RULES@ +- + HELP_ID = lightdm + HELP_POT = lightdm-help.pot + HELP_FILES = autologin.page \ diff --git a/0002-guest-account-Add-default-GSettings-support.patch b/0002-guest-account-Add-default-GSettings-support.patch new file mode 100644 index 000000000000..6970c8139310 --- /dev/null +++ b/0002-guest-account-Add-default-GSettings-support.patch @@ -0,0 +1,33 @@ +From 44e3fe3f4fe5c22b78dfe36c6affa9d42c1fb395 Mon Sep 17 00:00:00 2001 +From: Xiao-Long Chen <chenxiaolong@cxl.epac.to> +Date: Sun, 13 Apr 2014 01:02:42 -0400 +Subject: [PATCH 2/2] guest-account: Add default GSettings support + +--- + debian/guest-account.sh | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/debian/guest-account.sh b/debian/guest-account.sh +index 0fc3daa..38e849c 100644 +--- a/debian/guest-account.sh ++++ b/debian/guest-account.sh +@@ -131,6 +131,16 @@ add_account () + . /etc/guest-session/prefs.sh + fi + ++ # Load default dconf settings ++ mkdir -p "$HOME/.config/" "$HOME/.cache/" ++ chown -R $USER:$USER "$HOME/.config/" "$HOME/.cache/" ++ if [ -d /etc/guest-session/gsettings/ ]; then ++ for i in /etc/guest-session/gsettings/*; do ++ cat "${i}" | sed '/^\[.*\]$/ s/\./\//g' | \ ++ su - $USER -c 'dbus-launch dconf load /' ++ done ++ fi ++ + chown -R $USER:$USER "$HOME" + + echo $USER +-- +2.3.3 + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..dd882ccccba1 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,178 @@ +# Maintainer: Sam Burgos < sam dot burgos1089 at gmail dot + +pkgbase=lightdm-guest +pkgname=('lightdm-guest' 'liblightdm-qt4-guest' 'liblightdm-qt5-guest') +pkgver=1.26.0 +pkgrel=1 +epoch=1 +pkgdesc='A lightweight display manager. With guest-session enabled' +arch=('i686' 'x86_64') +url='https://www.freedesktop.org/wiki/Software/LightDM/' +license=('GPL3' 'LGPL3') +makedepends=('gcc-libs' 'glib2' 'glibc' 'gobject-introspection' 'gtk-doc' + 'intltool' 'itstool' 'libgcrypt' 'libx11' 'libxcb' 'libxdmcp' + 'libxklavier' 'pam' 'polkit' 'qt4' 'qt5-base' 'vala') +source=("lightdm-${pkgver}.tar.gz::https://github.com/CanonicalLtd/lightdm/archive/${pkgver}.tar.gz" + 'lightdm.service' + 'lightdm.sysusers' + 'lightdm.tmpfiles' + 'lightdm.pam' + 'lightdm-autologin.pam' + 'lightdm.rules' + 'lightdm-default-config.patch' + 'Xsession' + 0001-guest-account-Add-default-GSettings-support.patch + 0002-Fix-separator-error.patch) +sha256sums=('831c61b598b2b27fa1ee89ae162382cb122ab7f9d865b9e8475895631dd8018a' + SKIP + SKIP + SKIP + SKIP + SKIP + SKIP + SKIP + SKIP + SKIP + SKIP) + +prepare() { + cd "lightdm-${pkgver}" + + patch -p1 -i "${srcdir}"/lightdm-default-config.patch + patch -p1 -i "${srcdir}"/0002-Fix-separator-error.patch + + # Do not use Ubuntu's language-tools + #sed -i '/04_language_handling.patch/d' debian/patches/series + + #for i in $(grep -v '#' debian/patches/series); do + # patch -p1 -i "debian/patches/${i}" + #done + + # Add support for settings GSettings/dconf defaults in the guest session. Just + # put the files in /etc/guest-session/gsettings/. The file format is the same + # as the regular GSettings override files. + #patch -p1 -i ../0001-guest-account-Add-default-GSettings-support.patch +} + +build() { + cd lightdm-${pkgver} + #cd ${pkgver} + + export MOC4='moc-qt4' + export MOC5='moc-qt5' + + ./configure \ + --prefix='/usr' \ + --libexecdir='/usr/lib/lightdm' \ + --localstatedir='/var' \ + --sbindir='/usr/bin' \ + --sysconfdir='/etc' \ + --disable-static \ + --disable-tests \ + --with-greeter-user='lightdm' \ + --with-greeter-session='lightdm-gtk-greeter' + make +} + +package_lightdm-guest() { + depends=('glib2' 'glibc' 'libgcrypt' 'libx11' 'libxcb' 'libxdmcp' + 'libxklavier' 'pam' 'polkit') + optdepends=('accountsservice: Enhanced user accounts handling' + 'lightdm-gtk-greeter: GTK greeter' + 'lightdm-kde-greeter: Qt greeter' + 'xorg-server-xephyr: LightDM test mode' + 'bindfs: Used for guest session to avoid copying skeleton dotfiles') + provides=(lightdm) + conflicts=(lightdm) + backup=('etc/apparmor.d/lightdm-guest-session' + 'etc/lightdm/keys.conf' + 'etc/lightdm/lightdm.conf' + 'etc/lightdm/users.conf' + 'etc/lightdm/Xsession' + 'etc/pam.d/lightdm' + 'etc/pam.d/lightdm-autologin' + 'etc/pam.d/lightdm-greeter') + + cd lightdm-${pkgver} + + make DESTDIR="${pkgdir}" install + make DESTDIR="${pkgdir}" -C liblightdm-qt uninstall + install -m 755 ../Xsession "${pkgdir}"/etc/lightdm/Xsession + rm -rf "${pkgdir}"/etc/init + rm -rf "${pkgdir}"/usr/include/lightdm-qt{,5}-* + + # PAM + install -m 644 ../lightdm.pam "${pkgdir}"/etc/pam.d/lightdm + install -m 644 ../lightdm-autologin.pam "${pkgdir}"/etc/pam.d/lightdm-autologin + + # PolicyKit + install -dm 750 -g 102 "${pkgdir}"/usr/share/polkit-1/rules.d + install -m 644 ../lightdm.rules "${pkgdir}"/usr/share/polkit-1/rules.d/lightdm.rules + + # Systemd + install -dm 755 "${pkgdir}"/usr/lib/{systemd/system,sysusers.d,tmpfiles.d} + install -m 644 ../lightdm.service "${pkgdir}"/usr/lib/systemd/system/lightdm.service + install -m 644 ../lightdm.sysusers "${pkgdir}"/usr/lib/sysusers.d/lightdm.conf + install -m 644 ../lightdm.tmpfiles "${pkgdir}"/usr/lib/tmpfiles.d/lightdm.conf + + # Additional LightDM configuration files + install -dm755 "${pkgdir}"/etc/lightdm/lightdm.conf.d/ + install -m644 debian/50-{xserver-command,greeter-wrapper,guest-wrapper,disable-log-backup}.conf \ + "${pkgdir}"/etc/lightdm/lightdm.conf.d/ + + # Install binaries and scripts + install -dm755 "${pkgdir}"/usr/bin/ + install -m755 debian/guest-account.sh "${pkgdir}"/usr/bin/guest-account + install -m755 debian/guest-session-auto.sh "${pkgdir}"/usr/lib/lightdm/ + install -m755 debian/lightdm-session "${pkgdir}"/usr/bin/ + install -m755 debian/lightdm-greeter-session "${pkgdir}"/usr/lib/lightdm/ + install -m755 debian/config-error-dialog.sh "${pkgdir}"/usr/lib/lightdm/ + + # Skeleton files for guest account + install -dm755 "${pkgdir}"/usr/share/lightdm/guest-session/skel/.config/autostart/ + install -m644 debian/guest-session-startup.desktop \ + "${pkgdir}"/usr/share/lightdm/guest-session/skel/.config/autostart/ + install -m755 debian/guest-session-setup.sh \ + "${pkgdir}"/usr/share/lightdm/guest-session/setup.sh + + # Create GSettings defaults directory + install -dm755 "${pkgdir}"/etc/guest-session/gsettings/ + + # Remove apparmor stuff + rm -rvf "${pkgdir}"/etc/apparmor.d/ +} + +package_liblightdm-qt4-guest() { + pkgdesc='LightDM Qt client library' + depends=('gcc-libs' 'glibc' 'lightdm' 'qt4') + options=('!emptydirs') + provides=(liblightdm-qt4) + conflicts=(liblightdm-qt4) + + cd lightdm-${pkgver} + + make DESTDIR="${pkgdir}" -C liblightdm-gobject install + make DESTDIR="${pkgdir}" -C liblightdm-qt install + make DESTDIR="${pkgdir}" -C liblightdm-gobject uninstall + find "${pkgdir}" -type d -name *qt5* -exec rm -rf {} + + find "${pkgdir}" -type f -name *qt5* -exec rm {} + + find "${pkgdir}" -type l -name *qt5* -exec rm {} + +} + +package_liblightdm-qt5-guest() { + pkgdesc='LightDM Qt client library' + depends=('gcc-libs' 'glibc' 'lightdm' 'qt5-base') + options=('!emptydirs') + provides=(liblightdm-qt5) + conflicts=(liblightdm-qt5) + + cd lightdm-${pkgver} + + make DESTDIR="${pkgdir}" -C liblightdm-gobject install + make DESTDIR="${pkgdir}" -C liblightdm-qt install + make DESTDIR="${pkgdir}" -C liblightdm-gobject uninstall + find "${pkgdir}" -type d -name *qt[!5]* -exec rm -rf {} + + find "${pkgdir}" -type f -name *qt[!5]* -exec rm {} + + find "${pkgdir}" -type l -name *qt[!5]* -exec rm {} + +} + diff --git a/Xsession b/Xsession new file mode 100644 index 000000000000..4a2a25ea118d --- /dev/null +++ b/Xsession @@ -0,0 +1,64 @@ +#!/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 -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 + +# Run all system xinitrc shell scripts +xinitdir="/etc/X11/xinit/xinitrc.d" +if [ -d "$xinitdir" ]; then + for script in $xinitdir/*; do + echo "Loading xinit script $script" + if [ -x "$script" -a ! -d "$script" ]; then + . "$script" + fi + done +fi + +# Run user xsession shell script +script="$HOME/.xsession" +if [ -x "$script" -a ! -d "$script" ]; then + echo "Loading xsession script $script" + . "$script" +fi + +echo "X session wrapper complete, running session $@" + +exec $@ diff --git a/lightdm-autologin.pam b/lightdm-autologin.pam new file mode 100644 index 000000000000..0b1f79e3e665 --- /dev/null +++ b/lightdm-autologin.pam @@ -0,0 +1,13 @@ +#%PAM-1.0 +auth required pam_env.so +auth required pam_tally.so file=/var/log/faillog onerr=succeed +auth required pam_shells.so +auth required pam_nologin.so +auth [success=1 default=ignore] pam_succeed_if.so user ingroup autologin +auth required pam_unix.so +auth required pam_permit.so +-auth optional pam_gnome_keyring.so +account include system-local-login +password include system-local-login +session include system-local-login +-session optional pam_gnome_keyring.so auto_start diff --git a/lightdm-default-config.patch b/lightdm-default-config.patch new file mode 100644 index 000000000000..a92e56c41926 --- /dev/null +++ b/lightdm-default-config.patch @@ -0,0 +1,40 @@ +diff -rupN lightdm-1.16.7.orig/data/lightdm.conf lightdm-1.16.7/data/lightdm.conf +--- lightdm-1.16.7.orig/data/lightdm.conf 2016-02-07 10:44:47.229197400 +0100 ++++ lightdm-1.16.7/data/lightdm.conf 2016-02-07 10:47:36.011855600 +0100 +@@ -21,13 +21,13 @@ + #start-default-seat=true + #greeter-user=lightdm + #minimum-display-number=0 +-#minimum-vt=7 ++#minimum-vt=7 # Setting this to a value < 7 implies security issues, see FS#46799 + #lock-memory=true + #user-authority-in-system-dir=false + #guest-account-script=guest-account + #logind-check-graphical=false + #log-directory=/var/log/lightdm +-#run-directory=/var/run/lightdm ++run-directory=/run/lightdm + #cache-directory=/var/cache/lightdm + #sessions-directory=/usr/share/lightdm/sessions:/usr/share/xsessions:/usr/share/wayland-sessions + #remote-sessions-directory=/usr/share/lightdm/remote-sessions +@@ -110,7 +110,7 @@ + #allow-user-switching=true + #allow-guest=true + #guest-session= +-#session-wrapper=lightdm-session ++session-wrapper=/etc/lightdm/Xsession + #greeter-wrapper= + #guest-wrapper= + #display-setup-script= +diff -rupN lightdm-1.16.7.orig/data/users.conf lightdm-1.16.7/data/users.conf +--- lightdm-1.16.7.orig/data/users.conf 2016-02-07 10:44:47.224423000 +0100 ++++ lightdm-1.16.7/data/users.conf 2016-02-07 10:44:53.660216200 +0100 +@@ -9,6 +9,6 @@ + # hidden-shells = Shells that indicate a user cannot login + # + [UserList] +-minimum-uid=500 ++minimum-uid=1000 + hidden-users=nobody nobody4 noaccess +-hidden-shells=/bin/false /usr/sbin/nologin ++hidden-shells=/bin/false /usr/bin/nologin diff --git a/lightdm.pam b/lightdm.pam new file mode 100644 index 000000000000..76b8869a2515 --- /dev/null +++ b/lightdm.pam @@ -0,0 +1,7 @@ +#%PAM-1.0 +auth include system-login +-auth optional pam_gnome_keyring.so +account include system-login +password include system-login +session include system-login +-session optional pam_gnome_keyring.so auto_start diff --git a/lightdm.rules b/lightdm.rules new file mode 100644 index 000000000000..eda155bf304e --- /dev/null +++ b/lightdm.rules @@ -0,0 +1,15 @@ +polkit.addRule(function(action, subject) { + if (subject.user == "lightdm") { + polkit.log("action=" + action); + polkit.log("subject=" + subject); + if (action.id.indexOf("org.freedesktop.login1.") == 0) { + return polkit.Result.YES; + } + if (action.id.indexOf("org.freedesktop.consolekit.system.") == 0) { + return polkit.Result.YES; + } + if (action.id.indexOf("org.freedesktop.upower.") == 0) { + return polkit.Result.YES; + } + } +}); diff --git a/lightdm.service b/lightdm.service new file mode 100644 index 000000000000..4a793031be3a --- /dev/null +++ b/lightdm.service @@ -0,0 +1,14 @@ +[Unit] +Description=Light Display Manager +Documentation=man:lightdm(1) +Conflicts=getty@tty1.service +After=getty@tty1.service systemd-user-sessions.service plymouth-quit.service acpid.service + +[Service] +ExecStart=/usr/bin/lightdm +Restart=always +IgnoreSIGPIPE=no +BusName=org.freedesktop.DisplayManager + +[Install] +Alias=display-manager.service diff --git a/lightdm.sysusers b/lightdm.sysusers new file mode 100644 index 000000000000..2113ade07eac --- /dev/null +++ b/lightdm.sysusers @@ -0,0 +1,3 @@ +g lightdm 620 - +u lightdm 620 "Light Display Manager" /var/lib/lightdm + diff --git a/lightdm.tmpfiles b/lightdm.tmpfiles new file mode 100644 index 000000000000..d8ef132d3daa --- /dev/null +++ b/lightdm.tmpfiles @@ -0,0 +1 @@ +d /run/lightdm 0711 lightdm lightdm |