summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO96
-rw-r--r--0001-guest-account-Add-default-GSettings-support.patch33
-rw-r--r--0002-Fix-separator-error.patch8
-rw-r--r--0002-guest-account-Add-default-GSettings-support.patch33
-rw-r--r--PKGBUILD178
-rw-r--r--Xsession64
-rw-r--r--lightdm-autologin.pam13
-rw-r--r--lightdm-default-config.patch40
-rw-r--r--lightdm.pam7
-rw-r--r--lightdm.rules15
-rw-r--r--lightdm.service14
-rw-r--r--lightdm.sysusers3
-rw-r--r--lightdm.tmpfiles1
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