1 |
commit: 7cfe0a72d50b95281121707d00818866ac015f16 |
2 |
Author: Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Sep 27 07:40:20 2012 +0000 |
4 |
Commit: Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Sep 27 07:52:01 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=7cfe0a72 |
7 |
|
8 |
gnome-base/gdm: 3.5.92.1 → 3.6.0 with daemonization |
9 |
|
10 |
Rewrite daemonization patch so it really works (and use libdaemon to get |
11 |
it right). Ensure that "/etc/init.d/xdm stop" works by starting a new |
12 |
process group if gdm is in daemon mode, and killing it in the signal |
13 |
handler callback. Rewrite pam.d files to hopefully address some of the |
14 |
problems that systemd users have been having (see bug #435042). And ship |
15 |
the pam.d files and other auxilliary stuff in a separate tarball (which |
16 |
will be shared with 3.4.x) to keep FILESDIR a bit cleaner. |
17 |
|
18 |
--- |
19 |
gnome-base/gdm/files/3.4.1/gdm | 12 - |
20 |
gnome-base/gdm/files/3.4.1/gdm-autologin | 11 - |
21 |
gnome-base/gdm/files/3.4.1/gdm-fingerprint | 15 - |
22 |
gnome-base/gdm/files/3.4.1/gdm-password | 12 - |
23 |
gnome-base/gdm/files/3.4.1/gdm-smartcard | 16 - |
24 |
gnome-base/gdm/files/3.4.1/gdm-welcome | 11 - |
25 |
gnome-base/gdm/files/3.4.1/gdm.service | 11 - |
26 |
gnome-base/gdm/files/49-keychain-r1 | 9 - |
27 |
gnome-base/gdm/files/50-ssh-agent-r1 | 10 - |
28 |
gnome-base/gdm/files/gdm-3.4.1-plymouth.patch | 338 -------------------- |
29 |
.../gdm/files/gdm-3.4.1-save-root-window.patch | 141 -------- |
30 |
.../files/gdm-3.6.0-fix-daemonize-regression.patch | 192 +++++++++++ |
31 |
.../gdm/files/gdm-3.6.0-selinux-automagic.patch | 31 ++ |
32 |
.../gdm/{gdm-3.5.92.1.ebuild => gdm-3.6.0.ebuild} | 64 ++-- |
33 |
gnome-base/gdm/gdm-9999.ebuild | 64 ++-- |
34 |
15 files changed, 289 insertions(+), 648 deletions(-) |
35 |
|
36 |
diff --git a/gnome-base/gdm/files/3.4.1/gdm b/gnome-base/gdm/files/3.4.1/gdm |
37 |
deleted file mode 100644 |
38 |
index bdce065..0000000 |
39 |
--- a/gnome-base/gdm/files/3.4.1/gdm |
40 |
+++ /dev/null |
41 |
@@ -1,12 +0,0 @@ |
42 |
-#%PAM-1.0 |
43 |
-auth optional pam_env.so |
44 |
-auth include system-login |
45 |
-auth required pam_nologin.so |
46 |
- |
47 |
-account include system-login |
48 |
- |
49 |
-password include system-login |
50 |
- |
51 |
-session include system-auth |
52 |
-#Systemd=-session optional pam_systemd.so |
53 |
-#Keyring=session optional pam_gnome_keyring.so auto_start |
54 |
|
55 |
diff --git a/gnome-base/gdm/files/3.4.1/gdm-autologin b/gnome-base/gdm/files/3.4.1/gdm-autologin |
56 |
deleted file mode 100644 |
57 |
index 26e3193..0000000 |
58 |
--- a/gnome-base/gdm/files/3.4.1/gdm-autologin |
59 |
+++ /dev/null |
60 |
@@ -1,11 +0,0 @@ |
61 |
-#%PAM-1.0 |
62 |
-auth optional pam_env.so |
63 |
-auth required pam_nologin.so |
64 |
-auth required pam_permit.so |
65 |
-account include system-login |
66 |
-password include system-login |
67 |
-session include system-auth |
68 |
-#Systemd=-session optional pam_systemd.so |
69 |
-# For the keyring to unlock with autologin, you need to set an empty |
70 |
-# password on the keyring. |
71 |
-#Keyring=session optional pam_gnome_keyring.so auto_start |
72 |
|
73 |
diff --git a/gnome-base/gdm/files/3.4.1/gdm-fingerprint b/gnome-base/gdm/files/3.4.1/gdm-fingerprint |
74 |
deleted file mode 100644 |
75 |
index 635fdd9..0000000 |
76 |
--- a/gnome-base/gdm/files/3.4.1/gdm-fingerprint |
77 |
+++ /dev/null |
78 |
@@ -1,15 +0,0 @@ |
79 |
-#%PAM-1.0 |
80 |
-# Note: no pam_gnome_keyring.so support since the login password is not used |
81 |
-auth optional pam_env.so |
82 |
-auth required pam_tally2.so onerr=succeed |
83 |
-auth required pam_shells.so |
84 |
-auth required pam_nologin.so |
85 |
-auth required pam_fprintd.so |
86 |
-auth optional pam_permit.so |
87 |
- |
88 |
-account include system-login |
89 |
- |
90 |
-password required pam_deny.so |
91 |
- |
92 |
-session include system-auth |
93 |
-#Systemd=-session optional pam_systemd.so |
94 |
|
95 |
diff --git a/gnome-base/gdm/files/3.4.1/gdm-password b/gnome-base/gdm/files/3.4.1/gdm-password |
96 |
deleted file mode 100644 |
97 |
index bdce065..0000000 |
98 |
--- a/gnome-base/gdm/files/3.4.1/gdm-password |
99 |
+++ /dev/null |
100 |
@@ -1,12 +0,0 @@ |
101 |
-#%PAM-1.0 |
102 |
-auth optional pam_env.so |
103 |
-auth include system-login |
104 |
-auth required pam_nologin.so |
105 |
- |
106 |
-account include system-login |
107 |
- |
108 |
-password include system-login |
109 |
- |
110 |
-session include system-auth |
111 |
-#Systemd=-session optional pam_systemd.so |
112 |
-#Keyring=session optional pam_gnome_keyring.so auto_start |
113 |
|
114 |
diff --git a/gnome-base/gdm/files/3.4.1/gdm-smartcard b/gnome-base/gdm/files/3.4.1/gdm-smartcard |
115 |
deleted file mode 100644 |
116 |
index 64e960e..0000000 |
117 |
--- a/gnome-base/gdm/files/3.4.1/gdm-smartcard |
118 |
+++ /dev/null |
119 |
@@ -1,16 +0,0 @@ |
120 |
-#%PAM-1.0 |
121 |
-auth optional pam_env.so |
122 |
-auth required pam_tally2.so onerr=succeed |
123 |
-auth required pam_shells.so |
124 |
-auth required pam_nologin.so |
125 |
-auth [success=done ignore=ignore default=die] pam_pkcs11.so wait_for_card card_only |
126 |
-auth optional pam_permit.so |
127 |
- |
128 |
-account include system-login |
129 |
- |
130 |
-password optional pam_pkcs11.so |
131 |
-password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 |
132 |
-password optional pam_permit.so |
133 |
- |
134 |
-session include system-auth |
135 |
-#Systemd=-session optional pam_systemd.so |
136 |
|
137 |
diff --git a/gnome-base/gdm/files/3.4.1/gdm-welcome b/gnome-base/gdm/files/3.4.1/gdm-welcome |
138 |
deleted file mode 100644 |
139 |
index a409a63..0000000 |
140 |
--- a/gnome-base/gdm/files/3.4.1/gdm-welcome |
141 |
+++ /dev/null |
142 |
@@ -1,11 +0,0 @@ |
143 |
-#%PAM-1.0 |
144 |
-auth required pam_env.so |
145 |
-# Allows greeter to list ldap users; bug #430740 |
146 |
-#LDAP=-auth sufficient pam_ldap.so try_first_pass ignore_authinfo_unavail |
147 |
-auth required pam_permit.so |
148 |
-account required pam_nologin.so |
149 |
-account include system-services |
150 |
-password include system-services |
151 |
-session required pam_loginuid.so |
152 |
-session optional pam_keyinit.so force revoke |
153 |
-session include system-services |
154 |
|
155 |
diff --git a/gnome-base/gdm/files/3.4.1/gdm.service b/gnome-base/gdm/files/3.4.1/gdm.service |
156 |
deleted file mode 100644 |
157 |
index 63bb08e..0000000 |
158 |
--- a/gnome-base/gdm/files/3.4.1/gdm.service |
159 |
+++ /dev/null |
160 |
@@ -1,11 +0,0 @@ |
161 |
-[Unit] |
162 |
-Description=GNOME Display Manager |
163 |
-After=systemd-user-sessions.service |
164 |
- |
165 |
-[Service] |
166 |
-ExecStart=/usr/bin/gdm --nodaemon |
167 |
-Type=dbus |
168 |
-BusName=org.gnome.DisplayManager |
169 |
- |
170 |
-[Install] |
171 |
-WantedBy=graphical.target |
172 |
|
173 |
diff --git a/gnome-base/gdm/files/49-keychain-r1 b/gnome-base/gdm/files/49-keychain-r1 |
174 |
deleted file mode 100644 |
175 |
index 51a1ca8..0000000 |
176 |
--- a/gnome-base/gdm/files/49-keychain-r1 |
177 |
+++ /dev/null |
178 |
@@ -1,9 +0,0 @@ |
179 |
-#!/bin/bash |
180 |
- |
181 |
-# source keychain variables |
182 |
- |
183 |
-keychain="`which keychain 2>/dev/null`" |
184 |
-if [ -n "$keychain" ] && [ -x "$keychain" ] && [ -f "$HOME/.bash_profile" ] |
185 |
-then |
186 |
- . "${HOME}/.bash_profile" |
187 |
-fi |
188 |
|
189 |
diff --git a/gnome-base/gdm/files/50-ssh-agent-r1 b/gnome-base/gdm/files/50-ssh-agent-r1 |
190 |
deleted file mode 100644 |
191 |
index 4d94fb0..0000000 |
192 |
--- a/gnome-base/gdm/files/50-ssh-agent-r1 |
193 |
+++ /dev/null |
194 |
@@ -1,10 +0,0 @@ |
195 |
-#!/bin/sh |
196 |
- |
197 |
-# add ssh-agent if found |
198 |
- |
199 |
-sshagent="`which ssh-agent 2>/dev/null`" |
200 |
-if [ -n "$sshagent" ] && [ -x "$sshagent" ] && [ -z "$SSH_AUTH_SOCK" ]; then |
201 |
- command="$sshagent -- $command" |
202 |
-elif [ -z "$sshagent" ] ; then |
203 |
- echo "$0: ssh-agent not found!" |
204 |
-fi |
205 |
|
206 |
diff --git a/gnome-base/gdm/files/gdm-3.4.1-plymouth.patch b/gnome-base/gdm/files/gdm-3.4.1-plymouth.patch |
207 |
deleted file mode 100644 |
208 |
index edd6220..0000000 |
209 |
--- a/gnome-base/gdm/files/gdm-3.4.1-plymouth.patch |
210 |
+++ /dev/null |
211 |
@@ -1,338 +0,0 @@ |
212 |
-From c56fbb65277e8a17db5e0939f0b02e41c4ec784c Mon Sep 17 00:00:00 2001 |
213 |
-From: Ray Strode <rstrode@××××××.com> |
214 |
-Date: Fri, 27 Nov 2009 18:52:54 -0500 |
215 |
-Subject: [PATCH] daemon: enable smooth transition between plymouth and X |
216 |
- |
217 |
-This commit adds optional support for interacting with plymouth |
218 |
-from gdm. This feature can be enabled by passing --with-plymouth |
219 |
-to configure. |
220 |
- |
221 |
-Hopefully, this will enable the various distributions that use |
222 |
-plymouth to drop a patch. |
223 |
- |
224 |
-https://bugzilla.gnome.org/show_bug.cgi?id=572173 |
225 |
---- |
226 |
- configure.ac | 32 +++++++++++++ |
227 |
- daemon/gdm-server.c | 60 +++++++++++++++++++++++++ |
228 |
- daemon/gdm-server.h | 3 + |
229 |
- daemon/gdm-simple-slave.c | 106 ++++++++++++++++++++++++++++++++++++++++++++- |
230 |
- 4 files changed, 200 insertions(+), 1 deletions(-) |
231 |
- |
232 |
-diff --git a/configure.ac b/configure.ac |
233 |
-index 35e6e04..81ea23e 100644 |
234 |
---- a/configure.ac |
235 |
-+++ b/configure.ac |
236 |
-@@ -264,6 +264,10 @@ AC_ARG_WITH(systemd, |
237 |
- AS_HELP_STRING([--with-systemd], |
238 |
- [Add systemd support @<:@default=auto@:>@]), |
239 |
- [with_systemd=$withval], [with_systemd=auto]) |
240 |
-+AC_ARG_WITH(plymouth, |
241 |
-+ AS_HELP_STRING([--with-plymouth], |
242 |
-+ [Add plymouth support @<:@default=auto@:>@]), |
243 |
-+ [with_plymouth=$withval], [with_plymouth=auto]) |
244 |
- |
245 |
- AC_ARG_WITH(at-spi-registryd-directory, |
246 |
- AS_HELP_STRING([--with-at-spi-registryd-directory], |
247 |
-@@ -952,6 +956,33 @@ AC_SUBST(SYSTEMD_X_SERVER) |
248 |
- AC_DEFINE_UNQUOTED(SYSTEMD_X_SERVER,"$SYSTEMD_X_SERVER",[Path to systemd X server wrapper]) |
249 |
- |
250 |
- dnl --------------------------------------------------------------------------- |
251 |
-+dnl - Check for plymouth support |
252 |
-+dnl --------------------------------------------------------------------------- |
253 |
-+PKG_CHECK_MODULES(PLYMOUTH, |
254 |
-+ [ply-boot-client], |
255 |
-+ [have_plymouth=yes], [have_plymouth=no]) |
256 |
-+ |
257 |
-+if test "x$with_plymouth" = "xauto" ; then |
258 |
-+ if test x$have_plymouth = xno ; then |
259 |
-+ use_plymouth=no |
260 |
-+ else |
261 |
-+ use_plymouth=yes |
262 |
-+ fi |
263 |
-+else |
264 |
-+ use_plymouth="$with_plymouth" |
265 |
-+fi |
266 |
-+ |
267 |
-+if test "x$use_plymouth" != "xno" ; then |
268 |
-+ if test "x$have_plymouth" = "xno"; then |
269 |
-+ AC_MSG_ERROR([Plymouth support explicitly required, but plymouth not found]) |
270 |
-+ fi |
271 |
-+ |
272 |
-+ AC_DEFINE(WITH_PLYMOUTH, 1, [Define to enable plymouth support]) |
273 |
-+fi |
274 |
-+AC_SUBST(PLYMOUTH_CFLAGS) |
275 |
-+AC_SUBST(PLYMOUTH_LIBS) |
276 |
-+ |
277 |
-+dnl --------------------------------------------------------------------------- |
278 |
- dnl - Check for D-Bus |
279 |
- dnl --------------------------------------------------------------------------- |
280 |
- |
281 |
-@@ -1537,6 +1568,7 @@ echo \ |
282 |
- SELinux support: ${with_selinux} |
283 |
- ConsoleKit support: ${use_console_kit} |
284 |
- systemd support: ${use_systemd} |
285 |
-+ plymouth support: ${use_plymouth} |
286 |
- UPower support: ${have_upower} |
287 |
- Build with RBAC: ${msg_rbac_shutdown} |
288 |
- " |
289 |
-diff --git a/daemon/gdm-server.c b/daemon/gdm-server.c |
290 |
-index d0d8ff9..6f2a939 100644 |
291 |
---- a/daemon/gdm-server.c |
292 |
-+++ b/daemon/gdm-server.c |
293 |
-@@ -32,6 +32,7 @@ |
294 |
- #include <pwd.h> |
295 |
- #include <grp.h> |
296 |
- #include <signal.h> |
297 |
-+#include <sys/ioctl.h> |
298 |
- #include <sys/resource.h> |
299 |
- |
300 |
- #ifdef HAVE_SYS_PRCTL_H |
301 |
-@@ -42,6 +43,10 @@ |
302 |
- #include <systemd/sd-daemon.h> |
303 |
- #endif |
304 |
- |
305 |
-+#ifdef WITH_PLYMOUTH |
306 |
-+#include <linux/vt.h> |
307 |
-+#endif |
308 |
-+ |
309 |
- #include <glib.h> |
310 |
- #include <glib/gi18n.h> |
311 |
- #include <glib/gstdio.h> |
312 |
-@@ -751,6 +756,61 @@ gdm_server_spawn (GdmServer *server, |
313 |
- return ret; |
314 |
- } |
315 |
- |
316 |
-+#ifdef WITH_PLYMOUTH |
317 |
-+static int |
318 |
-+get_active_vt (void) |
319 |
-+{ |
320 |
-+ int console_fd; |
321 |
-+ struct vt_stat console_state = { 0 }; |
322 |
-+ |
323 |
-+ console_fd = open ("/dev/tty0", O_RDONLY | O_NOCTTY); |
324 |
-+ |
325 |
-+ if (console_fd < 0) { |
326 |
-+ goto out; |
327 |
-+ } |
328 |
-+ |
329 |
-+ if (ioctl (console_fd, VT_GETSTATE, &console_state) < 0) { |
330 |
-+ goto out; |
331 |
-+ } |
332 |
-+ |
333 |
-+out: |
334 |
-+ if (console_fd >= 0) { |
335 |
-+ close (console_fd); |
336 |
-+ } |
337 |
-+ |
338 |
-+ return console_state.v_active; |
339 |
-+} |
340 |
-+ |
341 |
-+static char * |
342 |
-+get_active_vt_as_string (void) |
343 |
-+{ |
344 |
-+ int vt; |
345 |
-+ |
346 |
-+ vt = get_active_vt (); |
347 |
-+ |
348 |
-+ if (vt <= 0) { |
349 |
-+ return NULL; |
350 |
-+ } |
351 |
-+ |
352 |
-+ return g_strdup_printf ("vt%d", vt); |
353 |
-+} |
354 |
-+ |
355 |
-+gboolean |
356 |
-+gdm_server_start_on_active_vt (GdmServer *server) |
357 |
-+{ |
358 |
-+ gboolean res; |
359 |
-+ char *vt; |
360 |
-+ |
361 |
-+ g_free (server->priv->command); |
362 |
-+ server->priv->command = g_strdup (X_SERVER " -background none -logverbose 7"); |
363 |
-+ vt = get_active_vt_as_string (); |
364 |
-+ res = gdm_server_spawn (server, vt); |
365 |
-+ g_free (vt); |
366 |
-+ |
367 |
-+ return res; |
368 |
-+} |
369 |
-+#endif |
370 |
-+ |
371 |
- /** |
372 |
- * gdm_server_start: |
373 |
- * @disp: Pointer to a GdmDisplay structure |
374 |
-diff --git a/daemon/gdm-server.h b/daemon/gdm-server.h |
375 |
-index b53d68e..827f7fa 100644 |
376 |
---- a/daemon/gdm-server.h |
377 |
-+++ b/daemon/gdm-server.h |
378 |
-@@ -57,6 +57,9 @@ GdmServer * gdm_server_new (const char *display_id, |
379 |
- const char *seat_id, |
380 |
- const char *auth_file); |
381 |
- gboolean gdm_server_start (GdmServer *server); |
382 |
-+#ifdef HAVE_PLYMOUTH |
383 |
-+gboolean gdm_server_start_on_active_vt (GdmServer *server); |
384 |
-+#endif |
385 |
- gboolean gdm_server_stop (GdmServer *server); |
386 |
- char * gdm_server_get_display_device (GdmServer *server); |
387 |
- |
388 |
-diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c |
389 |
-index fc8649c..7c709a6 100644 |
390 |
---- a/daemon/gdm-simple-slave.c |
391 |
-+++ b/daemon/gdm-simple-slave.c |
392 |
-@@ -93,6 +93,9 @@ struct GdmSimpleSlavePrivate |
393 |
- #ifdef HAVE_LOGINDEVPERM |
394 |
- gboolean use_logindevperm; |
395 |
- #endif |
396 |
-+#ifdef WITH_PLYMOUTH |
397 |
-+ guint plymouth_is_running : 1; |
398 |
-+#endif |
399 |
- }; |
400 |
- |
401 |
- enum { |
402 |
-@@ -1204,6 +1207,74 @@ on_start_session_later (GdmGreeterServer *session, |
403 |
- slave->priv->start_session_when_ready = FALSE; |
404 |
- } |
405 |
- |
406 |
-+#ifdef WITH_PLYMOUTH |
407 |
-+static gboolean |
408 |
-+plymouth_is_running (void) |
409 |
-+{ |
410 |
-+ int status; |
411 |
-+ gboolean res; |
412 |
-+ GError *error; |
413 |
-+ |
414 |
-+ error = NULL; |
415 |
-+ res = g_spawn_command_line_sync ("/bin/plymouth --ping", |
416 |
-+ NULL, NULL, &status, &error); |
417 |
-+ if (! res) { |
418 |
-+ g_debug ("Could not ping plymouth: %s", error->message); |
419 |
-+ g_error_free (error); |
420 |
-+ return FALSE; |
421 |
-+ } |
422 |
-+ |
423 |
-+ return WIFEXITED (status) && WEXITSTATUS (status) == 0; |
424 |
-+} |
425 |
-+ |
426 |
-+static void |
427 |
-+plymouth_prepare_for_transition (GdmSimpleSlave *slave) |
428 |
-+{ |
429 |
-+ gboolean res; |
430 |
-+ GError *error; |
431 |
-+ |
432 |
-+ error = NULL; |
433 |
-+ res = g_spawn_command_line_sync ("/bin/plymouth deactivate", |
434 |
-+ NULL, NULL, NULL, &error); |
435 |
-+ if (! res) { |
436 |
-+ g_warning ("Could not deactivate plymouth: %s", error->message); |
437 |
-+ g_error_free (error); |
438 |
-+ } |
439 |
-+} |
440 |
-+ |
441 |
-+static void |
442 |
-+plymouth_quit_with_transition (GdmSimpleSlave *slave) |
443 |
-+{ |
444 |
-+ gboolean res; |
445 |
-+ GError *error; |
446 |
-+ |
447 |
-+ error = NULL; |
448 |
-+ res = g_spawn_command_line_sync ("/bin/plymouth quit --retain-splash", |
449 |
-+ NULL, NULL, NULL, &error); |
450 |
-+ if (! res) { |
451 |
-+ g_warning ("Could not quit plymouth: %s", error->message); |
452 |
-+ g_error_free (error); |
453 |
-+ } |
454 |
-+ slave->priv->plymouth_is_running = FALSE; |
455 |
-+} |
456 |
-+ |
457 |
-+static void |
458 |
-+plymouth_quit_without_transition (GdmSimpleSlave *slave) |
459 |
-+{ |
460 |
-+ gboolean res; |
461 |
-+ GError *error; |
462 |
-+ |
463 |
-+ error = NULL; |
464 |
-+ res = g_spawn_command_line_sync ("/bin/plymouth quit", |
465 |
-+ NULL, NULL, NULL, &error); |
466 |
-+ if (! res) { |
467 |
-+ g_warning ("Could not quit plymouth: %s", error->message); |
468 |
-+ g_error_free (error); |
469 |
-+ } |
470 |
-+ slave->priv->plymouth_is_running = FALSE; |
471 |
-+} |
472 |
-+#endif |
473 |
-+ |
474 |
- static void |
475 |
- setup_server (GdmSimpleSlave *slave) |
476 |
- { |
477 |
-@@ -1223,6 +1294,12 @@ setup_server (GdmSimpleSlave *slave) |
478 |
- */ |
479 |
- gdm_slave_save_root_windows (GDM_SLAVE (slave)); |
480 |
- |
481 |
-+#ifdef WITH_PLYMOUTH |
482 |
-+ /* Plymouth is waiting for the go-ahead to exit */ |
483 |
-+ if (slave->priv->plymouth_is_running) { |
484 |
-+ plymouth_quit_with_transition (slave); |
485 |
-+ } |
486 |
-+#endif |
487 |
- } |
488 |
- |
489 |
- static void |
490 |
-@@ -1426,6 +1503,12 @@ on_server_exited (GdmServer *server, |
491 |
- g_debug ("GdmSimpleSlave: server exited with code %d\n", exit_code); |
492 |
- |
493 |
- gdm_slave_stopped (GDM_SLAVE (slave)); |
494 |
-+ |
495 |
-+#ifdef WITH_PLYMOUTH |
496 |
-+ if (slave->priv->plymouth_is_running) { |
497 |
-+ plymouth_quit_without_transition (slave); |
498 |
-+ } |
499 |
-+#endif |
500 |
- } |
501 |
- |
502 |
- static void |
503 |
-@@ -1438,6 +1521,12 @@ on_server_died (GdmServer *server, |
504 |
- g_strsignal (signal_number)); |
505 |
- |
506 |
- gdm_slave_stopped (GDM_SLAVE (slave)); |
507 |
-+ |
508 |
-+#ifdef WITH_PLYMOUTH |
509 |
-+ if (slave->priv->plymouth_is_running) { |
510 |
-+ plymouth_quit_without_transition (slave); |
511 |
-+ } |
512 |
-+#endif |
513 |
- } |
514 |
- |
515 |
- static gboolean |
516 |
-@@ -1484,7 +1573,17 @@ gdm_simple_slave_run (GdmSimpleSlave *slave) |
517 |
- G_CALLBACK (on_server_ready), |
518 |
- slave); |
519 |
- |
520 |
-- res = gdm_server_start (slave->priv->server); |
521 |
-+#ifdef WITH_PLYMOUTH |
522 |
-+ slave->priv->plymouth_is_running = plymouth_is_running (); |
523 |
-+ |
524 |
-+ if (slave->priv->plymouth_is_running) { |
525 |
-+ plymouth_prepare_for_transition (slave); |
526 |
-+ res = gdm_server_start_on_active_vt (slave->priv->server); |
527 |
-+ } else |
528 |
-+#endif |
529 |
-+ { |
530 |
-+ res = gdm_server_start (slave->priv->server); |
531 |
-+ } |
532 |
- if (! res) { |
533 |
- g_warning (_("Could not start the X " |
534 |
- "server (your graphical environment) " |
535 |
-@@ -1494,6 +1593,11 @@ gdm_simple_slave_run (GdmSimpleSlave *slave) |
536 |
- "In the meantime this display will be " |
537 |
- "disabled. Please restart GDM when " |
538 |
- "the problem is corrected.")); |
539 |
-+#ifdef WITH_PLYMOUTH |
540 |
-+ if (slave->priv->plymouth_is_running) { |
541 |
-+ plymouth_quit_without_transition (slave); |
542 |
-+ } |
543 |
-+#endif |
544 |
- exit (1); |
545 |
- } |
546 |
- |
547 |
--- |
548 |
-1.7.8.6 |
549 |
- |
550 |
|
551 |
diff --git a/gnome-base/gdm/files/gdm-3.4.1-save-root-window.patch b/gnome-base/gdm/files/gdm-3.4.1-save-root-window.patch |
552 |
deleted file mode 100644 |
553 |
index 2d9c314..0000000 |
554 |
--- a/gnome-base/gdm/files/gdm-3.4.1-save-root-window.patch |
555 |
+++ /dev/null |
556 |
@@ -1,141 +0,0 @@ |
557 |
-From c93d98b646a9a4fce3052260a1f08808d62d7155 Mon Sep 17 00:00:00 2001 |
558 |
-From: Ray Strode <rstrode@××××××.com> |
559 |
-Date: Fri, 27 Nov 2009 18:27:53 -0500 |
560 |
-Subject: [PATCH] daemon: save root window to pixmap at _XROOTPMAP_ID |
561 |
- |
562 |
-This combined with starting the X server with |
563 |
--background none will give distros using plymouth |
564 |
-(or potentially other boot splashes) a a nice fade |
565 |
-transition when g-s-d starts. |
566 |
- |
567 |
-https://bugzilla.gnome.org/show_bug.cgi?id=572173 |
568 |
---- |
569 |
- daemon/gdm-simple-slave.c | 8 +++++ |
570 |
- daemon/gdm-slave.c | 72 +++++++++++++++++++++++++++++++++++++++++++++ |
571 |
- daemon/gdm-slave.h | 1 + |
572 |
- 3 files changed, 81 insertions(+), 0 deletions(-) |
573 |
- |
574 |
-diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c |
575 |
-index 9d1347a..fc8649c 100644 |
576 |
---- a/daemon/gdm-simple-slave.c |
577 |
-+++ b/daemon/gdm-simple-slave.c |
578 |
-@@ -1215,6 +1215,14 @@ setup_server (GdmSimpleSlave *slave) |
579 |
- |
580 |
- /* Set the initial keyboard layout to something reasonable */ |
581 |
- gdm_slave_set_initial_keyboard_layout (GDM_SLAVE (slave)); |
582 |
-+ /* The root window has a background that may be useful |
583 |
-+ * to cross fade or transition from when setting the |
584 |
-+ * login screen background. We read it here, and stuff |
585 |
-+ * it into the standard _XROOTPMAP_ID root window property, |
586 |
-+ * so gnome-settings-daemon can get at it. |
587 |
-+ */ |
588 |
-+ gdm_slave_save_root_windows (GDM_SLAVE (slave)); |
589 |
-+ |
590 |
- } |
591 |
- |
592 |
- static void |
593 |
-diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c |
594 |
-index a5ce62f..53633c0 100644 |
595 |
---- a/daemon/gdm-slave.c |
596 |
-+++ b/daemon/gdm-slave.c |
597 |
-@@ -43,6 +43,7 @@ |
598 |
- #include <dbus/dbus-glib-lowlevel.h> |
599 |
- |
600 |
- #include <X11/Xlib.h> /* for Display */ |
601 |
-+#include <X11/Xatom.h> /* for XA_PIXMAP */ |
602 |
- #include <X11/cursorfont.h> /* for watch cursor */ |
603 |
- #include <X11/extensions/Xrandr.h> |
604 |
- #include <X11/Xatom.h> |
605 |
-@@ -364,6 +365,77 @@ gdm_slave_run_script (GdmSlave *slave, |
606 |
- return ret; |
607 |
- } |
608 |
- |
609 |
-+static void |
610 |
-+gdm_slave_save_root_window_of_screen (GdmSlave *slave, |
611 |
-+ Atom id_atom, |
612 |
-+ int screen_number) |
613 |
-+{ |
614 |
-+ Window root_window; |
615 |
-+ GC gc; |
616 |
-+ XGCValues values; |
617 |
-+ Pixmap pixmap; |
618 |
-+ int width, height, depth; |
619 |
-+ |
620 |
-+ root_window = RootWindow (slave->priv->server_display, |
621 |
-+ screen_number); |
622 |
-+ |
623 |
-+ width = DisplayWidth (slave->priv->server_display, screen_number); |
624 |
-+ height = DisplayHeight (slave->priv->server_display, screen_number); |
625 |
-+ depth = DefaultDepth (slave->priv->server_display, screen_number); |
626 |
-+ pixmap = XCreatePixmap (slave->priv->server_display, |
627 |
-+ root_window, |
628 |
-+ width, height, depth); |
629 |
-+ |
630 |
-+ values.function = GXcopy; |
631 |
-+ values.plane_mask = AllPlanes; |
632 |
-+ values.fill_style = FillSolid; |
633 |
-+ values.subwindow_mode = IncludeInferiors; |
634 |
-+ |
635 |
-+ gc = XCreateGC (slave->priv->server_display, |
636 |
-+ root_window, |
637 |
-+ GCFunction | GCPlaneMask | GCFillStyle | GCSubwindowMode, |
638 |
-+ &values); |
639 |
-+ |
640 |
-+ if (XCopyArea (slave->priv->server_display, |
641 |
-+ root_window, pixmap, gc, 0, 0, |
642 |
-+ width, height, 0, 0)) { |
643 |
-+ |
644 |
-+ long pixmap_as_long; |
645 |
-+ |
646 |
-+ pixmap_as_long = (long) pixmap; |
647 |
-+ |
648 |
-+ XChangeProperty (slave->priv->server_display, |
649 |
-+ root_window, id_atom, XA_PIXMAP, |
650 |
-+ 32, PropModeReplace, (guchar *) &pixmap_as_long, |
651 |
-+ 1); |
652 |
-+ |
653 |
-+ } |
654 |
-+ |
655 |
-+ XFreeGC (slave->priv->server_display, gc); |
656 |
-+} |
657 |
-+ |
658 |
-+void |
659 |
-+gdm_slave_save_root_windows (GdmSlave *slave) |
660 |
-+{ |
661 |
-+ int i, number_of_screens; |
662 |
-+ Atom atom; |
663 |
-+ |
664 |
-+ number_of_screens = ScreenCount (slave->priv->server_display); |
665 |
-+ |
666 |
-+ atom = XInternAtom (slave->priv->server_display, |
667 |
-+ "_XROOTPMAP_ID", False); |
668 |
-+ |
669 |
-+ if (atom == 0) { |
670 |
-+ return; |
671 |
-+ } |
672 |
-+ |
673 |
-+ for (i = 0; i < number_of_screens; i++) { |
674 |
-+ gdm_slave_save_root_window_of_screen (slave, atom, i); |
675 |
-+ } |
676 |
-+ |
677 |
-+ XSync (slave->priv->server_display, False); |
678 |
-+} |
679 |
-+ |
680 |
- void |
681 |
- gdm_slave_set_initial_keyboard_layout (GdmSlave *slave) |
682 |
- { |
683 |
-diff --git a/daemon/gdm-slave.h b/daemon/gdm-slave.h |
684 |
-index 7af20ed..aaaa8f2 100644 |
685 |
---- a/daemon/gdm-slave.h |
686 |
-+++ b/daemon/gdm-slave.h |
687 |
-@@ -78,6 +78,7 @@ void gdm_slave_set_initial_keyboard_layout (GdmSlave *slave); |
688 |
- void gdm_slave_set_initial_cursor_position (GdmSlave *slave); |
689 |
- |
690 |
- void gdm_slave_set_busy_cursor (GdmSlave *slave); |
691 |
-+void gdm_slave_save_root_windows (GdmSlave *slave); |
692 |
- gboolean gdm_slave_run_script (GdmSlave *slave, |
693 |
- const char *dir, |
694 |
- const char *username); |
695 |
--- |
696 |
-1.7.8.6 |
697 |
- |
698 |
|
699 |
diff --git a/gnome-base/gdm/files/gdm-3.6.0-fix-daemonize-regression.patch b/gnome-base/gdm/files/gdm-3.6.0-fix-daemonize-regression.patch |
700 |
new file mode 100644 |
701 |
index 0000000..27f2079 |
702 |
--- /dev/null |
703 |
+++ b/gnome-base/gdm/files/gdm-3.6.0-fix-daemonize-regression.patch |
704 |
@@ -0,0 +1,192 @@ |
705 |
+From 722d31dc8823090b651b103f0194b6380f2d458e Mon Sep 17 00:00:00 2001 |
706 |
+From: Alexandre Rostovtsev <tetromino@g.o> |
707 |
+Date: Tue, 25 Sep 2012 22:30:29 -0400 |
708 |
+Subject: [PATCH] daemonize so that the boot process can continue |
709 |
+ |
710 |
+Gentoo bug: #236701 |
711 |
+ |
712 |
+Based on original patch by Dan Nicholson <dbn.lists@×××××.com> and |
713 |
+Gilles Dartiguelongue <eva@g.o>. |
714 |
+ |
715 |
+Fork gdm-binary, except when -nodaemon is used |
716 |
+ |
717 |
+Makes the gdm main binary fork and daemonize unless the -nodaemon or |
718 |
+--nodaemon options are used. Provides compatibility with xdm. Fixes |
719 |
+bug #550170. |
720 |
+ |
721 |
+In daemonized mode, start a new process group, and kill it in our signal |
722 |
+handlers, so that killing gdm kills its spawned processes, and so that |
723 |
+"/etc/init.d/xdm stop" actually works. |
724 |
+--- |
725 |
+ configure.ac | 4 ++++ |
726 |
+ daemon/Makefile.am | 1 + |
727 |
+ daemon/main.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
728 |
+ 3 files changed, 65 insertions(+) |
729 |
+ |
730 |
+diff --git a/configure.ac b/configure.ac |
731 |
+index 61a43d6..a851ba5 100644 |
732 |
+--- a/configure.ac |
733 |
++++ b/configure.ac |
734 |
+@@ -99,6 +99,10 @@ PKG_CHECK_MODULES(DAEMON, |
735 |
+ AC_SUBST(DAEMON_CFLAGS) |
736 |
+ AC_SUBST(DAEMON_LIBS) |
737 |
+ |
738 |
++PKG_CHECK_MODULES(LIBDAEMON, libdaemon) |
739 |
++AC_SUBST(LIBDAEMON_CFLAGS) |
740 |
++AC_SUBST(LIBDAEMON_LIBS) |
741 |
++ |
742 |
+ GLIB_GSETTINGS |
743 |
+ |
744 |
+ PKG_CHECK_MODULES(NSS, |
745 |
+diff --git a/daemon/Makefile.am b/daemon/Makefile.am |
746 |
+index bb84765..cf89b47 100644 |
747 |
+--- a/daemon/Makefile.am |
748 |
++++ b/daemon/Makefile.am |
749 |
+@@ -380,6 +380,7 @@ gdm_binary_LDADD = \ |
750 |
+ $(top_builddir)/common/libgdmcommon.la \ |
751 |
+ $(XLIB_LIBS) \ |
752 |
+ $(DAEMON_LIBS) \ |
753 |
++ $(LIBDAEMON_LIBS) \ |
754 |
+ $(XDMCP_LIBS) \ |
755 |
+ $(LIBWRAP_LIBS) \ |
756 |
+ $(SYSTEMD_LIBS) \ |
757 |
+diff --git a/daemon/main.c b/daemon/main.c |
758 |
+index 3b8572c..c2fe4fe 100644 |
759 |
+--- a/daemon/main.c |
760 |
++++ b/daemon/main.c |
761 |
+@@ -34,6 +34,8 @@ |
762 |
+ #include <locale.h> |
763 |
+ #include <signal.h> |
764 |
+ |
765 |
++#include <libdaemon/dfork.h> |
766 |
++ |
767 |
+ #include <glib.h> |
768 |
+ #include <glib/gi18n.h> |
769 |
+ #include <glib/gstdio.h> |
770 |
+@@ -336,16 +338,26 @@ signal_cb (int signo, |
771 |
+ gpointer data) |
772 |
+ { |
773 |
+ int ret; |
774 |
++ static gboolean ignore_signals = FALSE; |
775 |
+ |
776 |
+ g_debug ("Got callback for signal %d", signo); |
777 |
+ |
778 |
+ ret = TRUE; |
779 |
+ |
780 |
++ /* don't commit suicide before killing everyone in our process group */ |
781 |
++ if (ignore_signals) |
782 |
++ return ret; |
783 |
++ |
784 |
+ switch (signo) { |
785 |
+ case SIGFPE: |
786 |
+ case SIGPIPE: |
787 |
+ /* let the fatal signals interrupt us */ |
788 |
+ g_debug ("Caught signal %d, shutting down abnormally.", signo); |
789 |
++ /* if we daemonized, kill all the processes we spawned */ |
790 |
++ ignore_signals = TRUE; |
791 |
++ kill (-getpid (), signo); |
792 |
++ ignore_signals = FALSE; |
793 |
++ |
794 |
+ ret = FALSE; |
795 |
+ |
796 |
+ break; |
797 |
+@@ -354,6 +366,11 @@ signal_cb (int signo, |
798 |
+ case SIGTERM: |
799 |
+ /* let the fatal signals interrupt us */ |
800 |
+ g_debug ("Caught signal %d, shutting down normally.", signo); |
801 |
++ /* if we daemonized, kill all the processes we spawned */ |
802 |
++ ignore_signals = TRUE; |
803 |
++ kill (-getpid (), signo); |
804 |
++ ignore_signals = FALSE; |
805 |
++ |
806 |
+ ret = FALSE; |
807 |
+ |
808 |
+ break; |
809 |
+@@ -418,13 +435,16 @@ main (int argc, |
810 |
+ GOptionContext *context; |
811 |
+ GError *error; |
812 |
+ int ret; |
813 |
++ int i; |
814 |
+ gboolean res; |
815 |
+ GdmSignalHandler *signal_handler; |
816 |
+ static gboolean do_timed_exit = FALSE; |
817 |
+ static gboolean print_version = FALSE; |
818 |
+ static gboolean fatal_warnings = FALSE; |
819 |
++ static gboolean no_daemon = FALSE; |
820 |
+ static GOptionEntry entries [] = { |
821 |
+ { "fatal-warnings", 0, 0, G_OPTION_ARG_NONE, &fatal_warnings, N_("Make all warnings fatal"), NULL }, |
822 |
++ { "nodaemon", 0, 0, G_OPTION_ARG_NONE, &no_daemon, N_("Do not fork into the background"), NULL }, |
823 |
+ { "timed-exit", 0, 0, G_OPTION_ARG_NONE, &do_timed_exit, N_("Exit after a time (for debugging)"), NULL }, |
824 |
+ { "version", 0, 0, G_OPTION_ARG_NONE, &print_version, N_("Print GDM version"), NULL }, |
825 |
+ |
826 |
+@@ -439,6 +459,14 @@ main (int argc, |
827 |
+ |
828 |
+ g_type_init (); |
829 |
+ |
830 |
++ /* preprocess the arguments to support the xdm style |
831 |
++ * -nodaemon option |
832 |
++ */ |
833 |
++ for (i = 0; i < argc; i++) { |
834 |
++ if (strcmp (argv[i], "-nodaemon") == 0) |
835 |
++ argv[i] = "--nodaemon"; |
836 |
++ } |
837 |
++ |
838 |
+ context = g_option_context_new (_("GNOME Display Manager")); |
839 |
+ g_option_context_add_main_entries (context, entries, NULL); |
840 |
+ g_option_context_set_ignore_unknown_options (context, TRUE); |
841 |
+@@ -465,6 +493,33 @@ main (int argc, |
842 |
+ g_log_set_always_fatal (fatal_mask); |
843 |
+ } |
844 |
+ |
845 |
++ if (!no_daemon) { |
846 |
++ pid_t pid; |
847 |
++ if (daemon_retval_init () < 0) { |
848 |
++ g_warning ("Failed to create pipe"); |
849 |
++ exit (-1); |
850 |
++ } |
851 |
++ if ((pid = daemon_fork ()) < 0) { |
852 |
++ /* Fork failed */ |
853 |
++ daemon_retval_done (); |
854 |
++ exit (1); |
855 |
++ } else if (pid) { |
856 |
++ /* Parent process: wait 20s for daemon_retval_send() in the daemon process */ |
857 |
++ if ((ret = daemon_retval_wait (20)) < 0) { |
858 |
++ g_warning ("Timed out waiting for daemon process: %s", strerror(errno)); |
859 |
++ exit (255); |
860 |
++ } else if (ret > 0) { |
861 |
++ g_warning ("Daemon process returned error code %d", ret); |
862 |
++ exit (ret); |
863 |
++ } |
864 |
++ exit (0); |
865 |
++ } |
866 |
++ /* Daemon process */ |
867 |
++ daemon_close_all (-1); |
868 |
++ /* Start a new process group so that killing the daemon will kill the processes that it spawned */ |
869 |
++ setsid (); |
870 |
++ } |
871 |
++ |
872 |
+ gdm_log_init (); |
873 |
+ |
874 |
+ settings = gdm_settings_new (); |
875 |
+@@ -519,6 +574,9 @@ main (int argc, |
876 |
+ g_timeout_add_seconds (30, (GSourceFunc) timed_exit_cb, main_loop); |
877 |
+ } |
878 |
+ |
879 |
++ if (!no_daemon) |
880 |
++ daemon_retval_send (0); |
881 |
++ |
882 |
+ g_main_loop_run (main_loop); |
883 |
+ |
884 |
+ g_debug ("GDM finished, cleaning up..."); |
885 |
+@@ -535,6 +593,8 @@ main (int argc, |
886 |
+ ret = 0; |
887 |
+ |
888 |
+ out: |
889 |
++ if (!no_daemon) |
890 |
++ daemon_retval_send (ret); |
891 |
+ |
892 |
+ return ret; |
893 |
+ } |
894 |
+-- |
895 |
+1.7.12 |
896 |
+ |
897 |
|
898 |
diff --git a/gnome-base/gdm/files/gdm-3.6.0-selinux-automagic.patch b/gnome-base/gdm/files/gdm-3.6.0-selinux-automagic.patch |
899 |
new file mode 100644 |
900 |
index 0000000..035d0fa |
901 |
--- /dev/null |
902 |
+++ b/gnome-base/gdm/files/gdm-3.6.0-selinux-automagic.patch |
903 |
@@ -0,0 +1,31 @@ |
904 |
+From 8f9bf7b053fc7a6c2e5b33fc43c168ba7250cb98 Mon Sep 17 00:00:00 2001 |
905 |
+From: Alexandre Rostovtsev <tetromino@g.o> |
906 |
+Date: Tue, 25 Sep 2012 17:38:37 -0400 |
907 |
+Subject: [PATCH] configure: Make selinux check non-automagic |
908 |
+ |
909 |
+--- |
910 |
+ configure.ac | 6 +++++- |
911 |
+ 1 file changed, 5 insertions(+), 1 deletion(-) |
912 |
+ |
913 |
+diff --git a/configure.ac b/configure.ac |
914 |
+index 80a1fd4..61a43d6 100644 |
915 |
+--- a/configure.ac |
916 |
++++ b/configure.ac |
917 |
+@@ -142,9 +142,13 @@ AC_SUBST(UPOWER) |
918 |
+ AC_SUBST(UPOWER_CFLAGS) |
919 |
+ AC_SUBST(UPOWER_LIBS) |
920 |
+ |
921 |
++AC_ARG_WITH(selinux, |
922 |
++ AS_HELP_STRING([--with-selinux], |
923 |
++ [Add SELinux support])) |
924 |
++ |
925 |
+ PKG_CHECK_MODULES(LIBSELINUX, libselinux, have_selinux=yes, have_selinux=no) |
926 |
+ |
927 |
+-if test "x$have_selinux" = "xyes" ; then |
928 |
++if test "x$have_selinux" = "xyes" && test "x$with_selinux" != "xno" ; then |
929 |
+ AC_DEFINE(HAVE_SELINUX, 1, [Define if have selinux]) |
930 |
+ fi |
931 |
+ AC_SUBST(LIBSELINUX_CFLAGS) |
932 |
+-- |
933 |
+1.7.12 |
934 |
+ |
935 |
|
936 |
diff --git a/gnome-base/gdm/gdm-3.5.92.1.ebuild b/gnome-base/gdm/gdm-3.6.0.ebuild |
937 |
similarity index 84% |
938 |
rename from gnome-base/gdm/gdm-3.5.92.1.ebuild |
939 |
rename to gnome-base/gdm/gdm-3.6.0.ebuild |
940 |
index 1aa6515..8beba36 100644 |
941 |
--- a/gnome-base/gdm/gdm-3.5.92.1.ebuild |
942 |
+++ b/gnome-base/gdm/gdm-3.6.0.ebuild |
943 |
@@ -10,12 +10,16 @@ if [[ ${PV} = 9999 ]]; then |
944 |
inherit gnome2-live |
945 |
fi |
946 |
|
947 |
+G_PV="2012.09.25" |
948 |
+G_P="gdm-gentoo-${G_PV}" |
949 |
DESCRIPTION="GNOME Display Manager" |
950 |
HOMEPAGE="https://live.gnome.org/GDM" |
951 |
+SRC_URI="${SRC_URI} |
952 |
+ http://dev.gentoo.org/~tetromino/distfiles/${PN}/${G_P}.tar.xz" |
953 |
|
954 |
LICENSE="GPL-2" |
955 |
SLOT="0" |
956 |
-IUSE="accessibility audit +consolekit +fallback fprint +gnome-shell gnome-keyring +introspection ipv6 ldap plymouth smartcard systemd tcpd test xinerama" |
957 |
+IUSE="accessibility audit +consolekit +fallback fprint +gnome-shell +introspection ipv6 ldap plymouth selinux smartcard systemd tcpd test xinerama" |
958 |
if [[ ${PV} = 9999 ]]; then |
959 |
KEYWORDS="" |
960 |
else |
961 |
@@ -26,6 +30,7 @@ fi |
962 |
# nspr used by smartcard extension |
963 |
# dconf, dbus and g-s-d are needed at install time for dconf update |
964 |
# selinux support is now automagic. Not sure if that really matters. |
965 |
+# libdaemon needed for our fix-daemonize-regression.patch |
966 |
COMMON_DEPEND=" |
967 |
>=dev-libs/glib-2.33.2:2 |
968 |
>=x11-libs/gtk+-2.91.1:3 |
969 |
@@ -56,21 +61,25 @@ COMMON_DEPEND=" |
970 |
x11-apps/sessreg |
971 |
|
972 |
virtual/pam |
973 |
- consolekit? ( sys-auth/consolekit ) |
974 |
+ sys-auth/pambase[consolekit?,systemd?] |
975 |
+ |
976 |
+ dev-libs/libdaemon |
977 |
|
978 |
accessibility? ( x11-libs/libXevie ) |
979 |
audit? ( sys-process/audit ) |
980 |
- gnome-keyring? ( >=gnome-base/gnome-keyring-2.22[pam] ) |
981 |
+ consolekit? ( sys-auth/consolekit[pam] ) |
982 |
introspection? ( >=dev-libs/gobject-introspection-0.9.12 ) |
983 |
plymouth? ( sys-boot/plymouth ) |
984 |
- systemd? ( >=sys-apps/systemd-39 ) |
985 |
+ selinux? ( sys-libs/libselinux ) |
986 |
+ systemd? ( >=sys-apps/systemd-39[pam] ) |
987 |
tcpd? ( >=sys-apps/tcp-wrappers-7.6 ) |
988 |
xinerama? ( x11-libs/libXinerama )" |
989 |
# XXX: These deps are from session and desktop files in data/ directory |
990 |
# at-spi:1 is needed for at-spi-registryd (spawned by simple-chooser) |
991 |
# fprintd is used via dbus by gdm-fingerprint-extension |
992 |
+# gnome-session-3.6 needed to avoid freezing with orca |
993 |
RDEPEND="${COMMON_DEPEND} |
994 |
- >=gnome-base/gnome-session-2.91.92 |
995 |
+ >=gnome-base/gnome-session-3.6 |
996 |
x11-apps/xhost |
997 |
x11-themes/gnome-icon-theme-symbolic |
998 |
|
999 |
@@ -109,8 +118,6 @@ fi |
1000 |
pkg_setup() { |
1001 |
DOCS="AUTHORS ChangeLog NEWS README TODO" |
1002 |
|
1003 |
- # SELinux support is automagic for some reason |
1004 |
- # |
1005 |
# PAM is the only auth scheme supported |
1006 |
# even though configure lists shadow and crypt |
1007 |
# they don't have any corresponding code. |
1008 |
@@ -130,6 +137,7 @@ pkg_setup() { |
1009 |
$(use_enable ipv6) |
1010 |
$(use_with consolekit console-kit) |
1011 |
$(use_with plymouth) |
1012 |
+ $(use_with selinux) |
1013 |
$(use_with systemd) |
1014 |
$(use_with tcpd tcp-wrappers) |
1015 |
$(use_with xinerama)" |
1016 |
@@ -156,12 +164,18 @@ src_prepare() { |
1017 |
# XXX: We can now pass a hard-coded initial value; temporary fix |
1018 |
#epatch "${FILESDIR}/${PN}-2.32.0-fix-vt-problems.patch" |
1019 |
|
1020 |
+ # daemonize so that the boot process can continue, bug #236701 |
1021 |
+ epatch "${FILESDIR}/${PN}-3.6.0-fix-daemonize-regression.patch" |
1022 |
+ |
1023 |
# make custom session work, bug #216984 |
1024 |
epatch "${FILESDIR}/${PN}-3.2.1.1-custom-session.patch" |
1025 |
|
1026 |
# ssh-agent handling must be done at xinitrc.d, bug #220603 |
1027 |
epatch "${FILESDIR}/${PN}-2.32.0-xinitrc-ssh-agent.patch" |
1028 |
|
1029 |
+ # automagic selinux :/ |
1030 |
+ epatch "${FILESDIR}/${PN}-3.6.0-selinux-automagic.patch" |
1031 |
+ |
1032 |
# don't load accessibility support at runtime when USE=-accessibility |
1033 |
use accessibility || epatch "${FILESDIR}/${PN}-3.3.92.1-disable-accessibility.patch" |
1034 |
|
1035 |
@@ -183,36 +197,21 @@ src_prepare() { |
1036 |
src_install() { |
1037 |
gnome2_src_install |
1038 |
|
1039 |
- # Install the systemd unit file |
1040 |
- systemd_dounit "${FILESDIR}/3.4.1/gdm.service" |
1041 |
- |
1042 |
- # Install a shell script that runs gdm-binary in the background |
1043 |
- cp "${FILESDIR}/gdm.sh" "${ED}/usr/sbin/gdm" |
1044 |
- chmod 755 "${ED}/usr/sbin/gdm" |
1045 |
# our x11's scripts point to /usr/bin/gdm |
1046 |
- ln -sfn /usr/sbin/gdm "${ED}/usr/bin/gdm" |
1047 |
+ dosym /usr/sbin/gdm-binary /usr/bin/gdm |
1048 |
|
1049 |
# log, etc. |
1050 |
keepdir /var/log/gdm |
1051 |
|
1052 |
- # add xinitrc.d scripts |
1053 |
- exeinto /etc/X11/xinit/xinitrc.d |
1054 |
- newexe "${FILESDIR}/49-keychain-r1" 49-keychain |
1055 |
- newexe "${FILESDIR}/50-ssh-agent-r1" 50-ssh-agent |
1056 |
- |
1057 |
# install XDG_DATA_DIRS gdm changes |
1058 |
echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm |
1059 |
doenvd 99xdg-gdm |
1060 |
|
1061 |
- # install PAM files |
1062 |
- mkdir "${T}/pam.d" || die "mkdir failed" |
1063 |
- cp "${FILESDIR}/3.4.1"/gdm{,-autologin,-password,-fingerprint,-smartcard} \ |
1064 |
- "${T}/pam.d" || die "cp failed" |
1065 |
- cp "${FILESDIR}/3.4.1/gdm-welcome" "${T}/pam.d/gdm-launch-environment" || die "cp failed" |
1066 |
- use gnome-keyring && sed -i "s:#Keyring=::g" "${T}/pam.d"/* |
1067 |
- use ldap && sed -i "s:#LDAP=::g" "${T}/pam.d"/* |
1068 |
- use systemd && sed -i "s:#Systemd=::g" "${T}/pam.d"/* |
1069 |
- dopamd "${T}/pam.d"/* |
1070 |
+ cd "${WORKDIR}/${G_P}" |
1071 |
+ local LDAP |
1072 |
+ use ldap && LDAP=yes |
1073 |
+ emake GDM_WELCOME="gdm-launch-environment" LDAP=${LDAP} EPREFIX="${EPREFIX}" \ |
1074 |
+ SYSTEMD_UNITDIR="$(systemd_get_unitdir)" DESTDIR="${D}" install |
1075 |
} |
1076 |
|
1077 |
pkg_postinst() { |
1078 |
@@ -236,9 +235,12 @@ pkg_postinst() { |
1079 |
elog "the pam_env man page for more information." |
1080 |
elog |
1081 |
|
1082 |
- if use gnome-keyring; then |
1083 |
- elog "For autologin to unlock your keyring, you need to set an empty" |
1084 |
- elog "password on your keyring. Use app-crypt/seahorse for that." |
1085 |
+ if has_version sys-auth/pambase[gnome-keyring]; then |
1086 |
+ elog "For passwordless login to unlock your keyring, you need to set an" |
1087 |
+ elog "empty password on your keyring. Use app-crypt/seahorse for that." |
1088 |
+ else |
1089 |
+ elog "To unlock your keyring on login, install sys-auth/pambase" |
1090 |
+ elog "with USE=gnome-keyring" |
1091 |
fi |
1092 |
|
1093 |
if [[ -f "/etc/X11/gdm/gdm.conf" ]]; then |
1094 |
|
1095 |
diff --git a/gnome-base/gdm/gdm-9999.ebuild b/gnome-base/gdm/gdm-9999.ebuild |
1096 |
index 1aa6515..8beba36 100644 |
1097 |
--- a/gnome-base/gdm/gdm-9999.ebuild |
1098 |
+++ b/gnome-base/gdm/gdm-9999.ebuild |
1099 |
@@ -10,12 +10,16 @@ if [[ ${PV} = 9999 ]]; then |
1100 |
inherit gnome2-live |
1101 |
fi |
1102 |
|
1103 |
+G_PV="2012.09.25" |
1104 |
+G_P="gdm-gentoo-${G_PV}" |
1105 |
DESCRIPTION="GNOME Display Manager" |
1106 |
HOMEPAGE="https://live.gnome.org/GDM" |
1107 |
+SRC_URI="${SRC_URI} |
1108 |
+ http://dev.gentoo.org/~tetromino/distfiles/${PN}/${G_P}.tar.xz" |
1109 |
|
1110 |
LICENSE="GPL-2" |
1111 |
SLOT="0" |
1112 |
-IUSE="accessibility audit +consolekit +fallback fprint +gnome-shell gnome-keyring +introspection ipv6 ldap plymouth smartcard systemd tcpd test xinerama" |
1113 |
+IUSE="accessibility audit +consolekit +fallback fprint +gnome-shell +introspection ipv6 ldap plymouth selinux smartcard systemd tcpd test xinerama" |
1114 |
if [[ ${PV} = 9999 ]]; then |
1115 |
KEYWORDS="" |
1116 |
else |
1117 |
@@ -26,6 +30,7 @@ fi |
1118 |
# nspr used by smartcard extension |
1119 |
# dconf, dbus and g-s-d are needed at install time for dconf update |
1120 |
# selinux support is now automagic. Not sure if that really matters. |
1121 |
+# libdaemon needed for our fix-daemonize-regression.patch |
1122 |
COMMON_DEPEND=" |
1123 |
>=dev-libs/glib-2.33.2:2 |
1124 |
>=x11-libs/gtk+-2.91.1:3 |
1125 |
@@ -56,21 +61,25 @@ COMMON_DEPEND=" |
1126 |
x11-apps/sessreg |
1127 |
|
1128 |
virtual/pam |
1129 |
- consolekit? ( sys-auth/consolekit ) |
1130 |
+ sys-auth/pambase[consolekit?,systemd?] |
1131 |
+ |
1132 |
+ dev-libs/libdaemon |
1133 |
|
1134 |
accessibility? ( x11-libs/libXevie ) |
1135 |
audit? ( sys-process/audit ) |
1136 |
- gnome-keyring? ( >=gnome-base/gnome-keyring-2.22[pam] ) |
1137 |
+ consolekit? ( sys-auth/consolekit[pam] ) |
1138 |
introspection? ( >=dev-libs/gobject-introspection-0.9.12 ) |
1139 |
plymouth? ( sys-boot/plymouth ) |
1140 |
- systemd? ( >=sys-apps/systemd-39 ) |
1141 |
+ selinux? ( sys-libs/libselinux ) |
1142 |
+ systemd? ( >=sys-apps/systemd-39[pam] ) |
1143 |
tcpd? ( >=sys-apps/tcp-wrappers-7.6 ) |
1144 |
xinerama? ( x11-libs/libXinerama )" |
1145 |
# XXX: These deps are from session and desktop files in data/ directory |
1146 |
# at-spi:1 is needed for at-spi-registryd (spawned by simple-chooser) |
1147 |
# fprintd is used via dbus by gdm-fingerprint-extension |
1148 |
+# gnome-session-3.6 needed to avoid freezing with orca |
1149 |
RDEPEND="${COMMON_DEPEND} |
1150 |
- >=gnome-base/gnome-session-2.91.92 |
1151 |
+ >=gnome-base/gnome-session-3.6 |
1152 |
x11-apps/xhost |
1153 |
x11-themes/gnome-icon-theme-symbolic |
1154 |
|
1155 |
@@ -109,8 +118,6 @@ fi |
1156 |
pkg_setup() { |
1157 |
DOCS="AUTHORS ChangeLog NEWS README TODO" |
1158 |
|
1159 |
- # SELinux support is automagic for some reason |
1160 |
- # |
1161 |
# PAM is the only auth scheme supported |
1162 |
# even though configure lists shadow and crypt |
1163 |
# they don't have any corresponding code. |
1164 |
@@ -130,6 +137,7 @@ pkg_setup() { |
1165 |
$(use_enable ipv6) |
1166 |
$(use_with consolekit console-kit) |
1167 |
$(use_with plymouth) |
1168 |
+ $(use_with selinux) |
1169 |
$(use_with systemd) |
1170 |
$(use_with tcpd tcp-wrappers) |
1171 |
$(use_with xinerama)" |
1172 |
@@ -156,12 +164,18 @@ src_prepare() { |
1173 |
# XXX: We can now pass a hard-coded initial value; temporary fix |
1174 |
#epatch "${FILESDIR}/${PN}-2.32.0-fix-vt-problems.patch" |
1175 |
|
1176 |
+ # daemonize so that the boot process can continue, bug #236701 |
1177 |
+ epatch "${FILESDIR}/${PN}-3.6.0-fix-daemonize-regression.patch" |
1178 |
+ |
1179 |
# make custom session work, bug #216984 |
1180 |
epatch "${FILESDIR}/${PN}-3.2.1.1-custom-session.patch" |
1181 |
|
1182 |
# ssh-agent handling must be done at xinitrc.d, bug #220603 |
1183 |
epatch "${FILESDIR}/${PN}-2.32.0-xinitrc-ssh-agent.patch" |
1184 |
|
1185 |
+ # automagic selinux :/ |
1186 |
+ epatch "${FILESDIR}/${PN}-3.6.0-selinux-automagic.patch" |
1187 |
+ |
1188 |
# don't load accessibility support at runtime when USE=-accessibility |
1189 |
use accessibility || epatch "${FILESDIR}/${PN}-3.3.92.1-disable-accessibility.patch" |
1190 |
|
1191 |
@@ -183,36 +197,21 @@ src_prepare() { |
1192 |
src_install() { |
1193 |
gnome2_src_install |
1194 |
|
1195 |
- # Install the systemd unit file |
1196 |
- systemd_dounit "${FILESDIR}/3.4.1/gdm.service" |
1197 |
- |
1198 |
- # Install a shell script that runs gdm-binary in the background |
1199 |
- cp "${FILESDIR}/gdm.sh" "${ED}/usr/sbin/gdm" |
1200 |
- chmod 755 "${ED}/usr/sbin/gdm" |
1201 |
# our x11's scripts point to /usr/bin/gdm |
1202 |
- ln -sfn /usr/sbin/gdm "${ED}/usr/bin/gdm" |
1203 |
+ dosym /usr/sbin/gdm-binary /usr/bin/gdm |
1204 |
|
1205 |
# log, etc. |
1206 |
keepdir /var/log/gdm |
1207 |
|
1208 |
- # add xinitrc.d scripts |
1209 |
- exeinto /etc/X11/xinit/xinitrc.d |
1210 |
- newexe "${FILESDIR}/49-keychain-r1" 49-keychain |
1211 |
- newexe "${FILESDIR}/50-ssh-agent-r1" 50-ssh-agent |
1212 |
- |
1213 |
# install XDG_DATA_DIRS gdm changes |
1214 |
echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm |
1215 |
doenvd 99xdg-gdm |
1216 |
|
1217 |
- # install PAM files |
1218 |
- mkdir "${T}/pam.d" || die "mkdir failed" |
1219 |
- cp "${FILESDIR}/3.4.1"/gdm{,-autologin,-password,-fingerprint,-smartcard} \ |
1220 |
- "${T}/pam.d" || die "cp failed" |
1221 |
- cp "${FILESDIR}/3.4.1/gdm-welcome" "${T}/pam.d/gdm-launch-environment" || die "cp failed" |
1222 |
- use gnome-keyring && sed -i "s:#Keyring=::g" "${T}/pam.d"/* |
1223 |
- use ldap && sed -i "s:#LDAP=::g" "${T}/pam.d"/* |
1224 |
- use systemd && sed -i "s:#Systemd=::g" "${T}/pam.d"/* |
1225 |
- dopamd "${T}/pam.d"/* |
1226 |
+ cd "${WORKDIR}/${G_P}" |
1227 |
+ local LDAP |
1228 |
+ use ldap && LDAP=yes |
1229 |
+ emake GDM_WELCOME="gdm-launch-environment" LDAP=${LDAP} EPREFIX="${EPREFIX}" \ |
1230 |
+ SYSTEMD_UNITDIR="$(systemd_get_unitdir)" DESTDIR="${D}" install |
1231 |
} |
1232 |
|
1233 |
pkg_postinst() { |
1234 |
@@ -236,9 +235,12 @@ pkg_postinst() { |
1235 |
elog "the pam_env man page for more information." |
1236 |
elog |
1237 |
|
1238 |
- if use gnome-keyring; then |
1239 |
- elog "For autologin to unlock your keyring, you need to set an empty" |
1240 |
- elog "password on your keyring. Use app-crypt/seahorse for that." |
1241 |
+ if has_version sys-auth/pambase[gnome-keyring]; then |
1242 |
+ elog "For passwordless login to unlock your keyring, you need to set an" |
1243 |
+ elog "empty password on your keyring. Use app-crypt/seahorse for that." |
1244 |
+ else |
1245 |
+ elog "To unlock your keyring on login, install sys-auth/pambase" |
1246 |
+ elog "with USE=gnome-keyring" |
1247 |
fi |
1248 |
|
1249 |
if [[ -f "/etc/X11/gdm/gdm.conf" ]]; then |