aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2009-07-16 19:44:30 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2009-07-16 19:44:30 +0000
commit95cb6b291e5e60abb8c8e68da3a11ecfd8895281 (patch)
treeada6e1a9434e8fb244dd362c2ee54f0128fe5894
parent5854d484bf40181ba262673fbe7b70fc29024928 (diff)
downloadalpine_aports-95cb6b291e5e60abb8c8e68da3a11ecfd8895281.tar.bz2
alpine_aports-95cb6b291e5e60abb8c8e68da3a11ecfd8895281.tar.xz
alpine_aports-95cb6b291e5e60abb8c8e68da3a11ecfd8895281.zip
x11/slim: new aport
Desktop-independent graphical login manager for X11 http://slim.berlios.de/
-rw-r--r--x11/slim/APKBUILD30
-rw-r--r--x11/slim/slim-restart.patch141
-rwxr-xr-xx11/slim/slim.initd18
-rw-r--r--x11/slim/slim.install7
-rw-r--r--x11/slim/slim.logrotate9
5 files changed, 205 insertions, 0 deletions
diff --git a/x11/slim/APKBUILD b/x11/slim/APKBUILD
new file mode 100644
index 0000000000..b6f193f404
--- /dev/null
+++ b/x11/slim/APKBUILD
@@ -0,0 +1,30 @@
1# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
2pkgname=slim
3pkgver=1.3.1
4pkgrel=0
5pkgdesc="Desktop-independent graphical login manager for X11"
6url="http://slim.berlios.de/"
7license="GPL-2"
8subpackages="$pkgname-doc"
9makedepends="libxmu-dev libpng-dev jpeg-dev libxft-dev"
10depends=""
11install=
12source="http://download.berlios.de/$pkgname/$pkgname-$pkgver.tar.gz
13 $pkgname.logrotate
14 $pkgname-restart.patch"
15
16build ()
17{
18 cd "$srcdir/slim-$pkgver"
19 patch -Np1 -i "$srcdir/slim-restart.patch" || return 1
20 make CXX="${CXX:-g++}" CC="${CC:-gcc}" || return 1
21 make DESTDIR="$pkgdir" MANDIR=/usr/share/man install || return 1
22
23 install -D -m644 "$srcdir/slim.logrotate" "$pkgdir/etc/logrotate.d/slim" || return 1
24 sed -i 's|#xserver_arguments.*|xserver_arguments -nolisten tcp vt07|' "$pkgdir/etc/slim.conf" || return 1
25 sed -i 's|/var/run/slim.lock|/var/lock/slim.lock|' "$pkgdir/etc/slim.conf" || return 1
26
27}
28md5sums="727d0acb24c0fbf0751134c37a9c895f slim-1.3.1.tar.gz
2943da096480bf72c3ccec8ad8400f34f0 slim.logrotate
30648d871fe7d2a97b7d7b928019e2feee slim-restart.patch"
diff --git a/x11/slim/slim-restart.patch b/x11/slim/slim-restart.patch
new file mode 100644
index 0000000000..1f9c02dfff
--- /dev/null
+++ b/x11/slim/slim-restart.patch
@@ -0,0 +1,141 @@
1diff -ur slim-1.3.1.orig/app.cpp slim-1.3.1/app.cpp
2--- slim-1.3.1.orig/app.cpp 2008-09-26 02:54:15.000000000 +0200
3+++ slim-1.3.1/app.cpp 2008-11-21 20:38:48.000000000 +0100
4@@ -102,6 +102,11 @@
5
6 extern App* LoginApp;
7
8+int xioerror(Display *disp) {
9+ LoginApp->RestartServer();
10+ return 0;
11+}
12+
13 void CatchSignal(int sig) {
14 cerr << APPNAME << ": unexpected signal " << sig << endl;
15 LoginApp->StopServer();
16@@ -109,19 +114,6 @@
17 exit(ERR_EXIT);
18 }
19
20-
21-void AlarmSignal(int sig) {
22- int pid = LoginApp->GetServerPID();
23- if(waitpid(pid, NULL, WNOHANG) == pid) {
24- LoginApp->StopServer();
25- LoginApp->RemoveLock();
26- exit(OK_EXIT);
27- }
28- signal(sig, AlarmSignal);
29- alarm(2);
30-}
31-
32-
33 void User1Signal(int sig) {
34 signal(sig, User1Signal);
35 }
36@@ -267,7 +259,6 @@
37 signal(SIGHUP, CatchSignal);
38 signal(SIGPIPE, CatchSignal);
39 signal(SIGUSR1, User1Signal);
40- signal(SIGALRM, AlarmSignal);
41
42 #ifndef XNEST_DEBUG
43 OpenLog();
44@@ -287,7 +278,6 @@
45
46 CreateServerAuth();
47 StartServer();
48- alarm(2);
49 #endif
50
51 }
52@@ -603,6 +593,8 @@
53 int status;
54 while (wpid != pid) {
55 wpid = wait(&status);
56+ if (wpid == ServerPID)
57+ xioerror(Dpy); // Server died, simulate IO error
58 }
59 if (WIFEXITED(status) && WEXITSTATUS(status)) {
60 LoginPanel->Message("Failed to execute login command");
61@@ -648,9 +640,6 @@
62
63
64 void App::Reboot() {
65- // Stop alarm clock
66- alarm(0);
67-
68 #ifdef USE_PAM
69 try{
70 pam.end();
71@@ -673,9 +662,6 @@
72
73
74 void App::Halt() {
75- // Stop alarm clock
76- alarm(0);
77-
78 #ifdef USE_PAM
79 try{
80 pam.end();
81@@ -761,6 +747,7 @@
82
83 StopServer();
84 RemoveLock();
85+ while (waitpid(-1, NULL, WNOHANG) > 0); // Collects all dead childrens
86 Run();
87 }
88
89@@ -831,6 +818,7 @@
90
91 for(cycles = 0; cycles < ncycles; cycles++) {
92 if((Dpy = XOpenDisplay(DisplayName))) {
93+ XSetIOErrorHandler(xioerror);
94 return 1;
95 } else {
96 if(!ServerTimeout(1, (char *) "X server to begin accepting connections"))
97@@ -913,9 +901,6 @@
98 ServerPID = -1;
99 break;
100 }
101- alarm(15);
102- pause();
103- alarm(0);
104
105 // Wait for server to start up
106 if(WaitForServer() == 0) {
107@@ -948,15 +933,12 @@
108
109
110 void App::StopServer() {
111- // Stop alars clock and ignore signals
112- alarm(0);
113 signal(SIGQUIT, SIG_IGN);
114 signal(SIGINT, SIG_IGN);
115 signal(SIGHUP, SIG_IGN);
116 signal(SIGPIPE, SIG_IGN);
117 signal(SIGTERM, SIG_DFL);
118 signal(SIGKILL, SIG_DFL);
119- signal(SIGALRM, SIG_DFL);
120
121 // Catch X error
122 XSetIOErrorHandler(IgnoreXIO);
123diff -ur slim-1.3.1.orig/app.h slim-1.3.1/app.h
124--- slim-1.3.1.orig/app.h 2008-09-26 02:54:15.000000000 +0200
125+++ slim-1.3.1/app.h 2008-11-21 20:38:48.000000000 +0100
126@@ -34,6 +34,7 @@
127 ~App();
128 void Run();
129 int GetServerPID();
130+ void RestartServer();
131 void StopServer();
132
133 // Lock functions
134@@ -48,7 +49,6 @@
135 void Console();
136 void Exit();
137 void KillAllClients(Bool top);
138- void RestartServer();
139 void ReadConfig();
140 void OpenLog();
141 void CloseLog();
diff --git a/x11/slim/slim.initd b/x11/slim/slim.initd
new file mode 100755
index 0000000000..4ab113b6b0
--- /dev/null
+++ b/x11/slim/slim.initd
@@ -0,0 +1,18 @@
1#!/sbin/runscript
2
3depends() {
4 needs localmount
5}
6
7start() {
8 ebegin "Starting slim"
9 start-stop-daemon --start --quiet --exec /usr/bin/slim -- -d
10 eend $?
11}
12
13stop() {
14 ebegin "Stopping slim"
15 start-stop-daemon --stop --quiet --exec /usr/bin/slim
16 eend $?
17}
18
diff --git a/x11/slim/slim.install b/x11/slim/slim.install
new file mode 100644
index 0000000000..45eb02fa13
--- /dev/null
+++ b/x11/slim/slim.install
@@ -0,0 +1,7 @@
1post_install() {
2 cat << _EOF
3
4 Add slim to the DAEMONS array in /etc/rc.conf or update /etc/inittab.
5
6_EOF
7}
diff --git a/x11/slim/slim.logrotate b/x11/slim/slim.logrotate
new file mode 100644
index 0000000000..26ec3b0f42
--- /dev/null
+++ b/x11/slim/slim.logrotate
@@ -0,0 +1,9 @@
1/var/log/slim.log {
2 compress
3 rotate 1
4 size 1024k
5 notifempty
6 missingok
7 copytruncate
8 noolddir
9}