diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2009-07-16 19:44:30 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2009-07-16 19:44:30 +0000 |
commit | 95cb6b291e5e60abb8c8e68da3a11ecfd8895281 (patch) | |
tree | ada6e1a9434e8fb244dd362c2ee54f0128fe5894 | |
parent | 5854d484bf40181ba262673fbe7b70fc29024928 (diff) | |
download | alpine_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/APKBUILD | 30 | ||||
-rw-r--r-- | x11/slim/slim-restart.patch | 141 | ||||
-rwxr-xr-x | x11/slim/slim.initd | 18 | ||||
-rw-r--r-- | x11/slim/slim.install | 7 | ||||
-rw-r--r-- | x11/slim/slim.logrotate | 9 |
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> | ||
2 | pkgname=slim | ||
3 | pkgver=1.3.1 | ||
4 | pkgrel=0 | ||
5 | pkgdesc="Desktop-independent graphical login manager for X11" | ||
6 | url="http://slim.berlios.de/" | ||
7 | license="GPL-2" | ||
8 | subpackages="$pkgname-doc" | ||
9 | makedepends="libxmu-dev libpng-dev jpeg-dev libxft-dev" | ||
10 | depends="" | ||
11 | install= | ||
12 | source="http://download.berlios.de/$pkgname/$pkgname-$pkgver.tar.gz | ||
13 | $pkgname.logrotate | ||
14 | $pkgname-restart.patch" | ||
15 | |||
16 | build () | ||
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 | } | ||
28 | md5sums="727d0acb24c0fbf0751134c37a9c895f slim-1.3.1.tar.gz | ||
29 | 43da096480bf72c3ccec8ad8400f34f0 slim.logrotate | ||
30 | 648d871fe7d2a97b7d7b928019e2feee 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 @@ | |||
1 | diff -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); | ||
123 | diff -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 | |||
3 | depends() { | ||
4 | needs localmount | ||
5 | } | ||
6 | |||
7 | start() { | ||
8 | ebegin "Starting slim" | ||
9 | start-stop-daemon --start --quiet --exec /usr/bin/slim -- -d | ||
10 | eend $? | ||
11 | } | ||
12 | |||
13 | stop() { | ||
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 @@ | |||
1 | post_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 | } | ||