Date: Sunday, January 30, 2011 @ 07:14:12 Author: bisson Revision: 108150
Make slim not set PAM Host, so suspend/hibernate hopefully works (see patch). Also, minor cosmetic changes. Added: slim/trunk/gcc44.patch (from rev 108149, slim/trunk/slim-gcc44.patch) slim/trunk/no-host.patch slim/trunk/restart.patch (from rev 108149, slim/trunk/slim-restart.patch) slim/trunk/tty-slowness.patch (from rev 108149, slim/trunk/slim-tty-slowness.patch) Modified: slim/trunk/PKGBUILD Deleted: slim/trunk/slim-gcc44.patch slim/trunk/slim-restart.patch slim/trunk/slim-tty-slowness.patch -------------------------+ PKGBUILD | 45 +++++++------- gcc44.patch | 11 +++ no-host.patch | 29 +++++++++ restart.patch | 144 ++++++++++++++++++++++++++++++++++++++++++++++ slim-gcc44.patch | 11 --- slim-restart.patch | 141 --------------------------------------------- slim-tty-slowness.patch | 30 --------- tty-slowness.patch | 30 +++++++++ 8 files changed, 238 insertions(+), 203 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2011-01-30 11:17:24 UTC (rev 108149) +++ PKGBUILD 2011-01-30 12:14:12 UTC (rev 108150) @@ -5,51 +5,54 @@ pkgname=slim pkgver=1.3.2 -pkgrel=1 +pkgrel=2 pkgdesc='Desktop-independent graphical login manager for X11' arch=('i686' 'x86_64') url='http://slim.berlios.de/' license=('GPL2') -depends=('pam' 'libxmu' 'libpng' 'libjpeg>=8' 'libxft') +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" +source=("http://download.berlios.de/${pkgname}/${pkgname}-${pkgver}.tar.gz" 'slim' 'slim.logrotate' 'slim.pam' - 'slim-restart.patch' - 'slim-tty-slowness.patch' - 'slim-gcc44.patch') + 'gcc44.patch' + 'tty-slowness.patch' + 'restart.patch' + 'no-host.patch') sha1sums=('e421d5487732c8317f8f591906661e014b036358' '6fe0ba83509af634bce47be34e30995965bffc79' 'b969cc902c1d9915a5609141a652c77b2732407b' 'aff213af9ade7fe05db54fcd9a193e3dcb002aa9' - 'e9b5b624da2063d4e0cbc68de44a3eae22d509cb' + '51121d451116c768d0fc027ff1ea70aaaef036e7' '213fefe8533c845ea8c40585b6a8097820d5e5d2' - '51121d451116c768d0fc027ff1ea70aaaef036e7') + '2d526bc0c498bf307ee50e2d22b4f53ffa0c4435' + 'b86eddd083fb9f6259e46c735f55ebe76c655bd3') build() { - cd "$srcdir/${pkgname}-$pkgver" + cd "${srcdir}/${pkgname}-${pkgver}" - sed -i -e 's/png12/png14/g' Makefile # libpng 1.4.0 - patch -p1 < ../slim-gcc44.patch - patch -p1 < ../slim-tty-slowness.patch # fix sluggish tty after slim start - patch -p1 < ../slim-restart.patch # restart X server if killed - # See http://developer.berlios.de/patch/?func=detailpatch&patch_id=2378&group_id=2663 + 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" + cd "${srcdir}/${pkgname}-${pkgver}" - make DESTDIR="$pkgdir" MANDIR=/usr/share/man install + 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" + 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" + 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" } Copied: slim/trunk/gcc44.patch (from rev 108149, slim/trunk/slim-gcc44.patch) =================================================================== --- gcc44.patch (rev 0) +++ gcc44.patch 2011-01-30 12:14:12 UTC (rev 108150) @@ -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> Added: no-host.patch =================================================================== --- no-host.patch (rev 0) +++ no-host.patch 2011-01-30 12:14:12 UTC (rev 108150) @@ -0,0 +1,29 @@ +Datum: Sun, 30 Jan 2011 12:49:00 +0200 +Von: Samuli Suominen <ssuomi...@gentoo.org> +An: j...@archlinux.org, andy...@archlinux.org, tha...@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; Copied: slim/trunk/restart.patch (from rev 108149, slim/trunk/slim-restart.patch) =================================================================== --- restart.patch (rev 0) +++ restart.patch 2011-01-30 12:14:12 UTC (rev 108150) @@ -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(); Deleted: slim-gcc44.patch =================================================================== --- slim-gcc44.patch 2011-01-30 11:17:24 UTC (rev 108149) +++ slim-gcc44.patch 2011-01-30 12:14:12 UTC (rev 108150) @@ -1,11 +0,0 @@ -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> Deleted: slim-restart.patch =================================================================== --- slim-restart.patch 2011-01-30 11:17:24 UTC (rev 108149) +++ slim-restart.patch 2011-01-30 12:14:12 UTC (rev 108150) @@ -1,141 +0,0 @@ -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(); Deleted: slim-tty-slowness.patch =================================================================== --- slim-tty-slowness.patch 2011-01-30 11:17:24 UTC (rev 108149) +++ slim-tty-slowness.patch 2011-01-30 12:14:12 UTC (rev 108150) @@ -1,30 +0,0 @@ -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); Copied: slim/trunk/tty-slowness.patch (from rev 108149, slim/trunk/slim-tty-slowness.patch) =================================================================== --- tty-slowness.patch (rev 0) +++ tty-slowness.patch 2011-01-30 12:14:12 UTC (rev 108150) @@ -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);