Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=ae555f91fe8a42e9225140af9d8e3188c8b61540
commit ae555f91fe8a42e9225140af9d8e3188c8b61540 Author: Devil505 <devil505li...@gmail.com> Date: Mon Mar 19 18:09:15 2012 +0100 slim-1.3.2-5-i686 * added several patch for pam and logrotate support and to fix some bugs diff --git a/source/xfce4/slim/FrugalBuild b/source/xfce4/slim/FrugalBuild index cc5a767..405e395 100644 --- a/source/xfce4/slim/FrugalBuild +++ b/source/xfce4/slim/FrugalBuild @@ -3,7 +3,7 @@ pkgname=slim pkgver=1.3.2 -pkgrel=4 +pkgrel=5 pkgdesc="SLiM is a lightweight, Desktop-independent graphical login manager for X11." depends=('libxml2>=2.7.8' 'libpng' 'libjpeg') makedepends=('libx11>=1.2.2-1' 'libxft' 'libxmu') @@ -17,17 +17,38 @@ source=(${source[@]} \ slim.conf \ slim.install \ slim-1.3.2-cflags.patch \ + pam.d \ + logrotate \ + ptr_pam.patch \ + no-host.patch \ + restart.patch \ + sigterm.patch \ + session-name.patch \ + tty-slowness.patch \ http://ftp.frugalware.org/pub/other/artwork/slim-theme/frugalware-1.6.tar.bz2) sha1sums=('e421d5487732c8317f8f591906661e014b036358' \ - '98dcec8ae2d52ae9c9b5abcfa3d145882a0848bd' \ + 'cc9ac1f2beddc9c1559a14c029790cc0bf7fb8ae' \ 'a17849f628f4f74cf1bd48eea21a144f2f1a274d' \ '55bba5f18fde0f93114c6e8428c48706c05dd0ff' \ + 'a0e991ef0ac5120465a3be014a26e70ba073b6ae' \ + 'b969cc902c1d9915a5609141a652c77b2732407b' \ + '640668c984a13593a1bfba8d3b503c005d5f401e' \ + 'b86eddd083fb9f6259e46c735f55ebe76c655bd3' \ + '2d526bc0c498bf307ee50e2d22b4f53ffa0c4435' \ + '0b35048723c527fb824c5e0f9b9064f751871785' \ + '4d0328a707fbc8c5155d6ebf4623ba4f50dd66ea' \ + '213fefe8533c845ea8c40585b6a8097820d5e5d2' \ '644712d038ef637ceab7e158e3f8fae98561bf31') build() { - Fbuild + Fcd + Fpatchall + make USE_PAM=1 || Fdie + Fmakeinstall + Finstall 644 pam.d etc/pam.d/slim + Finstall 644 logrotate etc/logrotate.d/slim Fcpr frugalware /usr/share/slim/themes/frugalware Fcpr slim.conf /etc/slim.conf } diff --git a/source/xfce4/slim/logrotate b/source/xfce4/slim/logrotate new file mode 100644 index 0000000..26ec3b0 --- /dev/null +++ b/source/xfce4/slim/logrotate @@ -0,0 +1,9 @@ +/var/log/slim.log { + compress + rotate 1 + size 1024k + notifempty + missingok + copytruncate + noolddir +} diff --git a/source/xfce4/slim/no-host.patch b/source/xfce4/slim/no-host.patch new file mode 100644 index 0000000..c40f25b --- /dev/null +++ b/source/xfce4/slim/no-host.patch @@ -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; diff --git a/source/xfce4/slim/pam.d b/source/xfce4/slim/pam.d new file mode 100644 index 0000000..78a981f --- /dev/null +++ b/source/xfce4/slim/pam.d @@ -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/source/xfce4/slim/ptr_pam.patch b/source/xfce4/slim/ptr_pam.patch new file mode 100644 index 0000000..3a3fbcd --- /dev/null +++ b/source/xfce4/slim/ptr_pam.patch @@ -0,0 +1,52 @@ +diff -aur old/app.cpp new/app.cpp +--- old/app.cpp 2010-07-08 07:04:10.000000000 +0200 ++++ new/app.cpp 2011-05-01 18:30:52.933844872 +0200 +@@ -43,8 +43,8 @@ + Panel* panel = *static_cast<Panel**>(appdata_ptr); + int result = PAM_SUCCESS; + for (int i=0; i<num_msg; i++){ +- resp[i]->resp=0; +- resp[i]->resp_retcode=0; ++ (*resp)[i].resp=0; ++ (*resp)[i].resp_retcode=0; + switch(msg[i]->msg_style){ + case PAM_PROMPT_ECHO_ON: + // We assume PAM is asking for the username +@@ -53,13 +53,13 @@ + case Panel::Suspend: + case Panel::Halt: + case Panel::Reboot: +- resp[i]->resp=strdup("root"); ++ (*resp)[i].resp=strdup("root"); + break; + + case Panel::Console: + case Panel::Exit: + case Panel::Login: +- resp[i]->resp=strdup(panel->GetName().c_str()); ++ (*resp)[i].resp=strdup(panel->GetName().c_str()); + break; + } + break; +@@ -75,7 +75,7 @@ + + default: + panel->EventHandler(Panel::Get_Passwd); +- resp[i]->resp=strdup(panel->GetPasswd().c_str()); ++ (*resp)[i].resp=strdup(panel->GetPasswd().c_str()); + break; + } + break; +@@ -91,9 +91,9 @@ + } + if (result!=PAM_SUCCESS){ + for (int i=0; i<num_msg; i++){ +- if (resp[i]->resp==0) continue; +- free(resp[i]->resp); +- resp[i]->resp=0; ++ if ((*resp)[i].resp==0) continue; ++ free((*resp)[i].resp); ++ (*resp)[i].resp=0; + }; + free(*resp); + *resp=0; diff --git a/source/xfce4/slim/restart.patch b/source/xfce4/slim/restart.patch new file mode 100644 index 0000000..4e50490 --- /dev/null +++ b/source/xfce4/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/source/xfce4/slim/session-name.patch b/source/xfce4/slim/session-name.patch new file mode 100644 index 0000000..64b0e98 --- /dev/null +++ b/source/xfce4/slim/session-name.patch @@ -0,0 +1,21 @@ +diff -Naur slim-1.3.2.old/panel.cpp slim-1.3.2.new/panel.cpp +--- slim-1.3.2.old/panel.cpp 2010-10-24 06:01:15.117000019 +0000 ++++ slim-1.3.2.new/panel.cpp 2010-10-24 17:26:30.987999967 +0000 +@@ -23,7 +23,7 @@ + Root = root; + cfg = config; + +- session = ""; ++ session = cfg->nextSession(session); + + // Init GC + XGCValues gcv; +@@ -188,7 +188,7 @@ + } + + void Panel::ClearPanel() { +- session = ""; ++ session = cfg->nextSession(session); + Reset(); + XClearWindow(Dpy, Root); + XClearWindow(Dpy, Win); diff --git a/source/xfce4/slim/sigterm.patch b/source/xfce4/slim/sigterm.patch new file mode 100644 index 0000000..fbaeb71 --- /dev/null +++ b/source/xfce4/slim/sigterm.patch @@ -0,0 +1,45 @@ +diff -aur old/panel.cpp new/panel.cpp +--- old/panel.cpp 2011-04-29 15:15:57.210134850 +0200 ++++ new/panel.cpp 2011-04-29 15:16:17.260285407 +0200 +@@ -10,6 +10,7 @@ + */ + + #include <sstream> ++#include <poll.h> + #include "panel.h" + + using namespace std; +@@ -288,16 +289,24 @@ + field=curfield; + bool loop = true; + OnExpose(); ++ ++ struct pollfd x11_pfd = {0}; ++ x11_pfd.fd = ConnectionNumber(Dpy); ++ x11_pfd.events = POLLIN; + while(loop) { +- XNextEvent(Dpy, &event); +- switch(event.type) { +- case Expose: +- OnExpose(); +- break; +- +- case KeyPress: +- loop=OnKeyPress(event); +- break; ++ if(XPending(Dpy) || poll(&x11_pfd, 1, -1) > 0) { ++ while(XPending(Dpy)) { ++ XNextEvent(Dpy, &event); ++ switch(event.type) { ++ case Expose: ++ OnExpose(); ++ break; ++ ++ case KeyPress: ++ loop=OnKeyPress(event); ++ break; ++ } ++ } + } + } + diff --git a/source/xfce4/slim/slim.conf b/source/xfce4/slim/slim.conf index 4431534..dd24e59 100644 --- a/source/xfce4/slim/slim.conf +++ b/source/xfce4/slim/slim.conf @@ -2,7 +2,7 @@ # Note: -xauth $authfile is automatically appended default_path ./:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin default_xserver /usr/bin/X -xserver_arguments vt12 -dpi 72 +xserver_arguments -dpi 72 -nolisten tcp vt07 # Commands for halt, login, etc. halt_cmd /sbin/shutdown -h now @@ -72,7 +72,7 @@ reboot_msg The system is rebooting... current_theme frugalware # Lock file -lockfile /var/run/slim.lock +lockfile /var/lock/slim.lock # Log file logfile /var/log/slim.log diff --git a/source/xfce4/slim/tty-slowness.patch b/source/xfce4/slim/tty-slowness.patch new file mode 100644 index 0000000..c590fbe --- /dev/null +++ b/source/xfce4/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); _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git