summaryrefslogtreecommitdiff
path: root/testing/slim
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-05-28 17:43:57 +0000
committerroot <root@rshg054.dnsready.net>2012-05-28 17:43:57 +0000
commit483f7de4ab6a706517279a24d2efc969f4a1996d (patch)
tree128a7513d3e42c4d8812b5fd11a4afb116399762 /testing/slim
parent89dd7b5f30d48c708092a71b1c8285090fe91505 (diff)
Mon May 28 17:43:57 UTC 2012
Diffstat (limited to 'testing/slim')
-rw-r--r--testing/slim/PKGBUILD65
-rw-r--r--testing/slim/fix-numlock-1.3.3.patch46
-rw-r--r--testing/slim/install7
-rw-r--r--testing/slim/logrotate9
-rw-r--r--testing/slim/pam.d9
-rw-r--r--testing/slim/ptr_pam.patch52
-rwxr-xr-xtesting/slim/rc.d36
-rw-r--r--testing/slim/session-name.patch21
-rw-r--r--testing/slim/slim.service9
-rw-r--r--testing/slim/tty-slowness.patch30
10 files changed, 284 insertions, 0 deletions
diff --git a/testing/slim/PKGBUILD b/testing/slim/PKGBUILD
new file mode 100644
index 000000000..7237c3a47
--- /dev/null
+++ b/testing/slim/PKGBUILD
@@ -0,0 +1,65 @@
+# $Id: PKGBUILD 160004 2012-05-27 19:50:08Z tpowa $
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: Thayer Williams <thayer@archlinux.org>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+# Contributor: Hugo Ideler <hugoideler@dse.nl>
+
+pkgname=slim
+pkgver=1.3.3
+pkgrel=4
+pkgdesc='Desktop-independent graphical login manager for X11'
+arch=('i686' 'x86_64')
+url='http://slim.berlios.de/'
+license=('GPL2')
+depends=('consolekit' 'pam' 'libxmu' 'libpng' 'libjpeg' 'libxft')
+makedepends=('cmake' 'freeglut')
+backup=('etc/slim.conf' 'etc/logrotate.d/slim' 'etc/pam.d/slim')
+source=("http://download.berlios.de/${pkgname}/${pkgname}-${pkgver}.tar.gz"
+ 'rc.d'
+ 'pam.d'
+ 'logrotate'
+ 'slim.service'
+ 'ptr_pam.patch'
+ 'session-name.patch'
+ 'fix-numlock-1.3.3.patch')
+
+install=install
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p1 -i ../ptr_pam.patch # FS#23995: pointer mishandling confuses PAM
+ patch -p1 -i ../session-name.patch # FS#26693: fix default session name
+ patch -p1 -i ../fix-numlock-1.3.3.patch # FS#29818: fix numlock handling
+ cd ${srcdir}
+ mkdir build
+ cd build
+ cmake ../${pkgbase}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DUSE_PAM=yes -DUSE_CONSOLEKIT=yes
+ make
+}
+
+package() {
+ cd ${srcdir}/build/
+ make DESTDIR="${pkgdir}" install
+
+ install -D -m755 ../rc.d "${pkgdir}"/etc/rc.d/slim
+ install -D -m644 ../pam.d "${pkgdir}"/etc/pam.d/slim
+ install -D -m644 ../logrotate "${pkgdir}"/etc/logrotate.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
+ # install systemd files
+ install -D -m644 ${srcdir}/slim.service ${pkgdir}/usr/lib/systemd/system/slim.service
+}
+md5sums=('ce53e44c1e4a2eacf5bb7688ee2a5de8'
+ 'd8ea9c4dee2811524b67f4f666311a1f'
+ 'ebfff3417058619a1328284ae0e2f48e'
+ '43da096480bf72c3ccec8ad8400f34f0'
+ '7c0bf1fb6292537e2c63ec04f8532079'
+ 'ae4b237d472ec5d373e30080aa0ff804'
+ 'ebcb6829028615686de7b64ceeaaf8ed'
+ '6c29c93370e44ed310ff30132424b619')
diff --git a/testing/slim/fix-numlock-1.3.3.patch b/testing/slim/fix-numlock-1.3.3.patch
new file mode 100644
index 000000000..179fffcbf
--- /dev/null
+++ b/testing/slim/fix-numlock-1.3.3.patch
@@ -0,0 +1,46 @@
+--- trunk/app.cpp 2012/02/21 23:57:28 211
++++ trunk/app.cpp 2012/04/16 23:28:34 212
+@@ -332,6 +332,15 @@
+ Login();
+ }
+ }
++
++ // Set NumLock
++ string numlock = cfg->getOption("numlock");
++ if (numlock == "on") {
++ NumLock::setOn(Dpy);
++ } else if (numlock == "off") {
++ NumLock::setOff(Dpy);
++ }
++
+ // Start looping
+ int panelclosed = 1;
+ Panel::ActionType Action;
+@@ -971,13 +980,6 @@
+ break;
+ }
+
+- string numlock = cfg->getOption("numlock");
+- if (numlock == "on") {
+- NumLock::setOn(Dpy);
+- } else if (numlock == "off") {
+- NumLock::setOff(Dpy);
+- }
+-
+ delete args;
+
+ serverStarted = true;
+--- trunk/numlock.cpp 2012/02/21 23:57:28 211
++++ trunk/numlock.cpp 2012/04/16 23:28:34 212
+@@ -68,9 +68,9 @@
+ return;
+
+ if( flag == true )
+- XkbLockModifiers ( dpy, XkbUseCoreKbd, mask, 0);
+- else
+ XkbLockModifiers ( dpy, XkbUseCoreKbd, mask, mask);
++ else
++ XkbLockModifiers ( dpy, XkbUseCoreKbd, mask, 0);
+ }
+
+ void NumLock::setOn(Display *dpy) {
diff --git a/testing/slim/install b/testing/slim/install
new file mode 100644
index 000000000..65aa77d72
--- /dev/null
+++ b/testing/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/testing/slim/logrotate b/testing/slim/logrotate
new file mode 100644
index 000000000..26ec3b0f4
--- /dev/null
+++ b/testing/slim/logrotate
@@ -0,0 +1,9 @@
+/var/log/slim.log {
+ compress
+ rotate 1
+ size 1024k
+ notifempty
+ missingok
+ copytruncate
+ noolddir
+}
diff --git a/testing/slim/pam.d b/testing/slim/pam.d
new file mode 100644
index 000000000..4a6b53d0f
--- /dev/null
+++ b/testing/slim/pam.d
@@ -0,0 +1,9 @@
+#%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
diff --git a/testing/slim/ptr_pam.patch b/testing/slim/ptr_pam.patch
new file mode 100644
index 000000000..3a3fbcdb7
--- /dev/null
+++ b/testing/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/testing/slim/rc.d b/testing/slim/rc.d
new file mode 100755
index 000000000..b0be7ffc5
--- /dev/null
+++ b/testing/slim/rc.d
@@ -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/testing/slim/session-name.patch b/testing/slim/session-name.patch
new file mode 100644
index 000000000..8211c4f72
--- /dev/null
+++ b/testing/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/testing/slim/slim.service b/testing/slim/slim.service
new file mode 100644
index 000000000..18d8c99be
--- /dev/null
+++ b/testing/slim/slim.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=SLiM Simple Login Manager
+After=systemd-user-sessions.service
+
+[Service]
+ExecStart=/usr/bin/slim -nodaemon
+
+[Install]
+WantedBy=graphical.target
diff --git a/testing/slim/tty-slowness.patch b/testing/slim/tty-slowness.patch
new file mode 100644
index 000000000..c590fbed8
--- /dev/null
+++ b/testing/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);