diff options
author | Parabola <dev@list.parabolagnulinux.org> | 2011-04-05 14:26:38 +0000 |
---|---|---|
committer | Parabola <dev@list.parabolagnulinux.org> | 2011-04-05 14:26:38 +0000 |
commit | 415856bdd4f48ab4f2732996f0bae58595092bbe (patch) | |
tree | ede2018b591f6dfb477fe9341ba17b9bc000fab9 /extra/slim |
Tue Apr 5 14:26:38 UTC 2011
Diffstat (limited to 'extra/slim')
-rw-r--r-- | extra/slim/PKGBUILD | 58 | ||||
-rw-r--r-- | extra/slim/gcc44.patch | 11 | ||||
-rw-r--r-- | extra/slim/no-host.patch | 29 | ||||
-rw-r--r-- | extra/slim/restart.patch | 144 | ||||
-rwxr-xr-x | extra/slim/slim | 36 | ||||
-rw-r--r-- | extra/slim/slim.install | 7 | ||||
-rw-r--r-- | extra/slim/slim.logrotate | 9 | ||||
-rw-r--r-- | extra/slim/slim.pam | 10 | ||||
-rw-r--r-- | extra/slim/tty-slowness.patch | 30 |
9 files changed, 334 insertions, 0 deletions
diff --git a/extra/slim/PKGBUILD b/extra/slim/PKGBUILD new file mode 100644 index 000000000..c468d578f --- /dev/null +++ b/extra/slim/PKGBUILD @@ -0,0 +1,58 @@ +# $Id: PKGBUILD 108522 2011-01-31 22:56:10Z bisson $ +# Maintainer: Thayer Williams <thayer@archlinux.org> +# Contributor: Alexander Fehr <pizzapunk gmail com> +# Contributor: Hugo Ideler <hugoideler@dse.nl> + +pkgname=slim +pkgver=1.3.2 +pkgrel=3 +pkgdesc='Desktop-independent graphical login manager for X11' +arch=('i686' 'x86_64') +url='http://slim.berlios.de/' +license=('GPL2') +depends=('pam' 'libxmu' 'libpng' 'libjpeg' 'libxft') +backup=('etc/slim.conf' 'etc/logrotate.d/slim' 'etc/pam.d/slim') +install=slim.install +source=("http://download.berlios.de/${pkgname}/${pkgname}-${pkgver}.tar.gz" + 'slim' + 'slim.logrotate' + 'slim.pam' + 'gcc44.patch' + 'tty-slowness.patch' + 'restart.patch' + 'no-host.patch') +sha1sums=('e421d5487732c8317f8f591906661e014b036358' + '6fe0ba83509af634bce47be34e30995965bffc79' + 'b969cc902c1d9915a5609141a652c77b2732407b' + 'a0e991ef0ac5120465a3be014a26e70ba073b6ae' + '51121d451116c768d0fc027ff1ea70aaaef036e7' + '213fefe8533c845ea8c40585b6a8097820d5e5d2' + '2d526bc0c498bf307ee50e2d22b4f53ffa0c4435' + 'b86eddd083fb9f6259e46c735f55ebe76c655bd3') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + + sed -i -e 's/png12/png14/g' Makefile + patch -p1 -i ../gcc44.patch + + patch -p1 -i ../tty-slowness.patch # fix sluggish tty after slim start + patch -p1 -i ../restart.patch # restart X server if killed + patch -p1 -i ../no-host.patch # do not set PAM host + + make USE_PAM=1 +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + + make DESTDIR="${pkgdir}" MANDIR=/usr/share/man install + + install -D -m755 ../slim "${pkgdir}/etc/rc.d/slim" + install -D -m644 ../slim.logrotate "${pkgdir}/etc/logrotate.d/slim" + install -D -m644 ../slim.pam "${pkgdir}/etc/pam.d/slim" + + # Provide sane defaults + sed -i 's|#xserver_arguments.*|xserver_arguments -nolisten tcp vt07|' "${pkgdir}/etc/slim.conf" + sed -i 's|/var/run/slim.lock|/var/lock/slim.lock|' "${pkgdir}/etc/slim.conf" +} diff --git a/extra/slim/gcc44.patch b/extra/slim/gcc44.patch new file mode 100644 index 000000000..390ea8a86 --- /dev/null +++ b/extra/slim/gcc44.patch @@ -0,0 +1,11 @@ +diff -aur slim-1.3.2/switchuser.h slim-1.3.2.a/switchuser.h +--- slim-1.3.2/switchuser.h 2010-07-08 07:04:10.000000000 +0200 ++++ slim-1.3.2.a/switchuser.h 2010-08-21 15:10:34.306212393 +0200 +@@ -13,6 +13,7 @@ + #define _SWITCHUSER_H_ + + #include <stdlib.h> ++#include <stdio.h> /* remove */ + #include <unistd.h> + #include <string.h> + #include <pwd.h> diff --git a/extra/slim/no-host.patch b/extra/slim/no-host.patch new file mode 100644 index 000000000..c40f25bca --- /dev/null +++ b/extra/slim/no-host.patch @@ -0,0 +1,29 @@ +Datum: Sun, 30 Jan 2011 12:49:00 +0200 +Von: Samuli Suominen <ssuominen@gentoo.org> +An: jgc@archlinux.org, andyrtr@archlinux.org, thayer@archlinux.org +Betreff: SLIM and ConsoleKit 0.4.2 (and up) + +People have been coming to #xfce after Arch's ConsoleKit 0.4.3 upgrade +to ask for help why Suspend / Hibernate / and such doesn't work. + +It's because SLIM is using pam_ck_connector.so and SLIM sets Host to localhost +and makes pam_ck_connector.so believe it's actually a *remote host* called +localhost and will refuse access. + +http://bugs.gentoo.org/346037 +https://developer.berlios.de/bugs/?func=detailbug&bug_id=17757&group_id=2663 +http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/x11-misc/slim/files/346037-stop_setting_host_for_pam_ck_connector_so.patch?view=log + + +diff -aur old/app.cpp new/app.cpp +--- old/app.cpp 2011-01-30 12:39:34.033337944 +0100 ++++ new/app.cpp 2011-01-30 12:40:25.843337943 +0100 +@@ -228,8 +228,6 @@ + pam.start("slim"); + pam.set_item(PAM::Authenticator::TTY, DisplayName); + pam.set_item(PAM::Authenticator::Requestor, "root"); +- pam.set_item(PAM::Authenticator::Host, "localhost"); +- + } + catch(PAM::Exception& e){ + cerr << APPNAME << ": " << e << endl; diff --git a/extra/slim/restart.patch b/extra/slim/restart.patch new file mode 100644 index 000000000..4e5049000 --- /dev/null +++ b/extra/slim/restart.patch @@ -0,0 +1,144 @@ +http://developer.berlios.de/patch/?func=detailpatch&patch_id=2378&group_id=2663 + + +diff -aur slim-1.3.2.b/app.cpp slim-1.3.2.c/app.cpp +--- slim-1.3.2.b/app.cpp 2010-08-21 15:10:48.579631179 +0200 ++++ slim-1.3.2.c/app.cpp 2010-08-21 15:11:03.946389843 +0200 +@@ -104,6 +104,11 @@ + + extern App* LoginApp; + ++int xioerror(Display *disp) { ++ LoginApp->RestartServer(); ++ return 0; ++} ++ + void CatchSignal(int sig) { + cerr << APPNAME << ": unexpected signal " << sig << endl; + +@@ -114,19 +119,6 @@ + exit(ERR_EXIT); + } + +- +-void AlarmSignal(int sig) { +- int pid = LoginApp->GetServerPID(); +- if(waitpid(pid, NULL, WNOHANG) == pid) { +- LoginApp->StopServer(); +- LoginApp->RemoveLock(); +- exit(OK_EXIT); +- } +- signal(sig, AlarmSignal); +- alarm(2); +-} +- +- + void User1Signal(int sig) { + signal(sig, User1Signal); + } +@@ -277,7 +269,6 @@ + signal(SIGHUP, CatchSignal); + signal(SIGPIPE, CatchSignal); + signal(SIGUSR1, User1Signal); +- signal(SIGALRM, AlarmSignal); + + #ifndef XNEST_DEBUG + if (!force_nodaemon && cfg->getOption("daemon") == "yes") { +@@ -298,7 +289,6 @@ + + CreateServerAuth(); + StartServer(); +- alarm(2); + #endif + + } +@@ -614,6 +604,8 @@ + int status; + while (wpid != pid) { + wpid = wait(&status); ++ if (wpid == ServerPID) ++ xioerror(Dpy); // Server died, simulate IO error + } + if (WIFEXITED(status) && WEXITSTATUS(status)) { + LoginPanel->Message("Failed to execute login command"); +@@ -659,9 +651,6 @@ + + + void App::Reboot() { +- // Stop alarm clock +- alarm(0); +- + #ifdef USE_PAM + try{ + pam.end(); +@@ -684,9 +673,6 @@ + + + void App::Halt() { +- // Stop alarm clock +- alarm(0); +- + #ifdef USE_PAM + try{ + pam.end(); +@@ -772,6 +758,7 @@ + + StopServer(); + RemoveLock(); ++ while (waitpid(-1, NULL, WNOHANG) > 0); // Collects all dead childrens + Run(); + } + +@@ -842,6 +829,7 @@ + + for(cycles = 0; cycles < ncycles; cycles++) { + if((Dpy = XOpenDisplay(DisplayName))) { ++ XSetIOErrorHandler(xioerror); + return 1; + } else { + if(!ServerTimeout(1, (char *) "X server to begin accepting connections")) +@@ -926,9 +914,6 @@ + ServerPID = -1; + break; + } +- alarm(15); +- pause(); +- alarm(0); + + // Wait for server to start up + if(WaitForServer() == 0) { +@@ -963,15 +948,12 @@ + + + void App::StopServer() { +- // Stop alars clock and ignore signals +- alarm(0); + signal(SIGQUIT, SIG_IGN); + signal(SIGINT, SIG_IGN); + signal(SIGHUP, SIG_IGN); + signal(SIGPIPE, SIG_IGN); + signal(SIGTERM, SIG_DFL); + signal(SIGKILL, SIG_DFL); +- signal(SIGALRM, SIG_DFL); + + // Catch X error + XSetIOErrorHandler(IgnoreXIO); +diff -aur slim-1.3.2.b/app.h slim-1.3.2.c/app.h +--- slim-1.3.2.b/app.h 2010-08-21 15:10:40.499582804 +0200 ++++ slim-1.3.2.c/app.h 2010-08-21 15:11:03.946389843 +0200 +@@ -34,6 +34,7 @@ + ~App(); + void Run(); + int GetServerPID(); ++ void RestartServer(); + void StopServer(); + + bool serverStarted; +@@ -49,7 +50,6 @@ + void Console(); + void Exit(); + void KillAllClients(Bool top); +- void RestartServer(); + void ReadConfig(); + void OpenLog(); + void CloseLog(); diff --git a/extra/slim/slim b/extra/slim/slim new file mode 100755 index 000000000..b0be7ffc5 --- /dev/null +++ b/extra/slim/slim @@ -0,0 +1,36 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/bin/slim` +case "$1" in + start) + stat_busy "Starting Simple Login Manager" + [ -z "$PID" ] && /usr/bin/slim -d &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + add_daemon slim + stat_done + fi + ;; + stop) + stat_busy "Stopping Simple Login Manager" + [ ! -z "$PID" ] && kill $PID &> /dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon slim + stat_done + fi + ;; + restart) + $0 stop + sleep 3 + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/extra/slim/slim.install b/extra/slim/slim.install new file mode 100644 index 000000000..65aa77d72 --- /dev/null +++ b/extra/slim/slim.install @@ -0,0 +1,7 @@ +post_install() { + cat <<EOF + +==> Add slim to the DAEMONS array in /etc/rc.conf or update /etc/inittab. + +EOF +} diff --git a/extra/slim/slim.logrotate b/extra/slim/slim.logrotate new file mode 100644 index 000000000..26ec3b0f4 --- /dev/null +++ b/extra/slim/slim.logrotate @@ -0,0 +1,9 @@ +/var/log/slim.log { + compress + rotate 1 + size 1024k + notifempty + missingok + copytruncate + noolddir +} diff --git a/extra/slim/slim.pam b/extra/slim/slim.pam new file mode 100644 index 000000000..78a981f74 --- /dev/null +++ b/extra/slim/slim.pam @@ -0,0 +1,10 @@ +#%PAM-1.0 +auth requisite pam_nologin.so +auth required pam_env.so +auth required pam_unix.so +account required pam_unix.so +password required pam_unix.so +session required pam_limits.so +session required pam_unix.so +session optional pam_loginuid.so +session optional pam_ck_connector.so diff --git a/extra/slim/tty-slowness.patch b/extra/slim/tty-slowness.patch new file mode 100644 index 000000000..c590fbed8 --- /dev/null +++ b/extra/slim/tty-slowness.patch @@ -0,0 +1,30 @@ +diff -aur slim-1.3.2.a/app.cpp slim-1.3.2.b/app.cpp +--- slim-1.3.2.a/app.cpp 2010-08-21 15:10:13.702755711 +0200 ++++ slim-1.3.2.b/app.cpp 2010-08-21 15:10:48.579631179 +0200 +@@ -280,21 +280,22 @@ + signal(SIGALRM, AlarmSignal); + + #ifndef XNEST_DEBUG +- OpenLog(); +- + if (!force_nodaemon && cfg->getOption("daemon") == "yes") { + daemonmode = true; + } + + // Daemonize + if (daemonmode) { +- if (daemon(0, 1) == -1) { ++ if (daemon(0, 0) == -1) { + cerr << APPNAME << ": " << strerror(errno) << endl; + exit(ERR_EXIT); + } +- UpdatePid(); + } + ++ OpenLog(); ++ ++ if (daemonmode) UpdatePid(); ++ + CreateServerAuth(); + StartServer(); + alarm(2); |