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

Reply via email to