public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gnome:gnome-next commit in: gnome-base/gdm/, gnome-base/gdm/files/, gnome-base/gdm/files/3.1.91-pam.d/
@ 2011-09-15  5:46 Alexandre Restovtsev
  0 siblings, 0 replies; only message in thread
From: Alexandre Restovtsev @ 2011-09-15  5:46 UTC (permalink / raw
  To: gentoo-commits

commit:     ebc81295567d6f164dc604bfb7ad92ab18e5e699
Author:     Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
AuthorDate: Thu Sep 15 02:38:09 2011 +0000
Commit:     Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
CommitDate: Thu Sep 15 05:21:28 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=ebc81295

gnome-base/gdm: 3.0.4 → 3.1.91

Version bump with numerous changes. Now with optional gnome-shell-based
chooser support. Added gentoo-appropriate PAM files for logging in using
fingerprint or smartcard, but due to lack of hardware, this functionality
is completely untested.

---
 gnome-base/gdm/files/3.1.91-pam.d/gdm-fingerprint  |   14 +++
 gnome-base/gdm/files/3.1.91-pam.d/gdm-password     |   11 ++
 gnome-base/gdm/files/3.1.91-pam.d/gdm-smartcard    |   15 +++
 gnome-base/gdm/files/gdm-3.0.4-disable-a11y.patch  |   21 ----
 .../gdm/files/gdm-3.1.91-daemon-autologin.patch    |  103 ++++++++++++++++++++
 .../files/gdm-3.1.91-disable-accessibility.patch   |   60 +++++++++++
 .../gdm-3.1.91-gdm-slave-dbus_error_init.patch     |   22 ++++
 .../files/gdm-3.1.91-gdm-slave-memory-leak.patch   |   21 ++++
 ...-3.1.91-hardcoded-gnome-session-path-env.patch} |   57 ++++++-----
 .../gdm/{gdm-3.0.4-r2.ebuild => gdm-3.1.91.ebuild} |   67 +++++++++++---
 10 files changed, 332 insertions(+), 59 deletions(-)

diff --git a/gnome-base/gdm/files/3.1.91-pam.d/gdm-fingerprint b/gnome-base/gdm/files/3.1.91-pam.d/gdm-fingerprint
new file mode 100644
index 0000000..7d38de9
--- /dev/null
+++ b/gnome-base/gdm/files/3.1.91-pam.d/gdm-fingerprint
@@ -0,0 +1,14 @@
+#%PAM-1.0
+# Note: no pam_gnome_keyring.so support since the login password is not used
+auth       optional		pam_env.so
+auth       required             pam_tally2.so onerr=succeed
+auth       required             pam_shells.so
+auth       required		pam_nologin.so
+auth       required             pam_fprintd.so
+auth       optional             pam_permit.so
+
+account    include		system-login
+
+password   required             pam_deny.so
+
+session    include		system-auth

diff --git a/gnome-base/gdm/files/3.1.91-pam.d/gdm-password b/gnome-base/gdm/files/3.1.91-pam.d/gdm-password
new file mode 100644
index 0000000..d965eca
--- /dev/null
+++ b/gnome-base/gdm/files/3.1.91-pam.d/gdm-password
@@ -0,0 +1,11 @@
+#%PAM-1.0
+auth       optional		pam_env.so
+auth       include		system-login
+auth       required		pam_nologin.so
+
+account    include		system-login
+
+password   include		system-login
+
+session    include		system-auth
+#Keyring=session    optional		pam_gnome_keyring.so auto_start

diff --git a/gnome-base/gdm/files/3.1.91-pam.d/gdm-smartcard b/gnome-base/gdm/files/3.1.91-pam.d/gdm-smartcard
new file mode 100644
index 0000000..5cf884d
--- /dev/null
+++ b/gnome-base/gdm/files/3.1.91-pam.d/gdm-smartcard
@@ -0,0 +1,15 @@
+#%PAM-1.0
+auth       optional		pam_env.so
+auth       required             pam_tally2.so onerr=succeed
+auth       required             pam_shells.so
+auth       required		pam_nologin.so
+auth       [success=done ignore=ignore default=die] pam_pkcs11.so wait_for_card card_only
+auth       optional             pam_permit.so
+
+account    include		system-login
+
+password   optional             pam_pkcs11.so
+password   required             pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
+password   optional             pam_permit.so
+
+session    include		system-auth

diff --git a/gnome-base/gdm/files/gdm-3.0.4-disable-a11y.patch b/gnome-base/gdm/files/gdm-3.0.4-disable-a11y.patch
deleted file mode 100644
index 94d83af..0000000
--- a/gnome-base/gdm/files/gdm-3.0.4-disable-a11y.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff --git a/data/session-setup.entries b/data/session-setup.entries
-index b84e16f..a47d761 100644
---- a/data/session-setup.entries
-+++ b/data/session-setup.entries
-@@ -406,14 +406,14 @@
-     <entry>
-       <key>/desktop/gnome/interface/accessibility</key>
-       <value>
--        <bool>true</bool>
-+        <bool>false</bool>
-       </value>
-     </entry>
- 
-     <entry>
-       <key>/desktop/gnome/accessibility/keyboard/enable</key>
-       <value>
--        <bool>true</bool>
-+        <bool>false</bool>
-       </value>
-     </entry>
- 

diff --git a/gnome-base/gdm/files/gdm-3.1.91-daemon-autologin.patch b/gnome-base/gdm/files/gdm-3.1.91-daemon-autologin.patch
new file mode 100644
index 0000000..71a4546
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.1.91-daemon-autologin.patch
@@ -0,0 +1,103 @@
+From aad28c8bce222e9d5461c3b35dbf5f9eb4a86e82 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Tue, 13 Sep 2011 14:26:59 +0000
+Subject: daemon: fix autologin
+
+In commit 6849f6f3b8a199bed5427b8d6f1e2dedbe035d6c
+the code was changed to stop the greeter asynchronously
+and start the session following its completion.
+
+Autologin doesn't have a greeter though, so this broke
+it.
+
+This commit fixes autologin.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=658899
+---
+diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
+index 2f38bf6..ab69194 100644
+--- a/daemon/gdm-simple-slave.c
++++ b/daemon/gdm-simple-slave.c
+@@ -108,6 +108,7 @@ G_DEFINE_TYPE (GdmSimpleSlave, gdm_simple_slave, GDM_TYPE_SLAVE)
+ static void create_new_session (GdmSimpleSlave *slave);
+ static void destroy_session    (GdmSimpleSlave *slave);
+ static void start_greeter      (GdmSimpleSlave *slave);
++static void start_session      (GdmSimpleSlave *slave);
+ static void queue_start_session (GdmSimpleSlave *slave,
+                                  const char     *service_name);
+ 
+@@ -449,6 +450,29 @@ stop_greeter (GdmSimpleSlave *slave)
+         gdm_welcome_session_stop (GDM_WELCOME_SESSION (slave->priv->greeter));
+ }
+ 
++static void
++start_session (GdmSimpleSlave *slave)
++{
++        char    *auth_file;
++        auth_file = NULL;
++        add_user_authorization (slave, &auth_file);
++
++        g_assert (auth_file != NULL);
++
++        g_object_set (slave->priv->session,
++                      "user-x11-authority-file", auth_file,
++                      NULL);
++
++        g_free (auth_file);
++
++        gdm_session_start_session (GDM_SESSION (slave->priv->session),
++                                   slave->priv->start_session_service_name);
++
++        slave->priv->start_session_id = 0;
++        g_free (slave->priv->start_session_service_name);
++        slave->priv->start_session_service_name = NULL;
++}
++
+ static gboolean
+ start_session_timeout (GdmSimpleSlave *slave)
+ {
+@@ -472,8 +496,13 @@ start_session_timeout (GdmSimpleSlave *slave)
+                 g_free (slave->priv->start_session_service_name);
+                 slave->priv->start_session_service_name = NULL;
+         } else {
+-                /* Session actually gets started from on_greeter_session_stopped */
+-                stop_greeter (slave);
++                if (slave->priv->greeter == NULL) {
++                        /* auto login */
++                        start_session (slave);
++                } else {
++                        /* Session actually gets started from on_greeter_session_stop */
++                        stop_greeter (slave);
++                }
+         }
+ 
+         return FALSE;
+@@ -972,25 +1001,7 @@ on_greeter_session_stop (GdmGreeterSession *greeter,
+                 gdm_slave_stopped (GDM_SLAVE (slave));
+         } else {
+                 gdm_greeter_server_stop (slave->priv->greeter_server);
+-
+-                char    *auth_file;
+-                auth_file = NULL;
+-                add_user_authorization (slave, &auth_file);
+-
+-                g_assert (auth_file != NULL);
+-
+-                g_object_set (slave->priv->session,
+-                              "user-x11-authority-file", auth_file,
+-                              NULL);
+-
+-                g_free (auth_file);
+-
+-                gdm_session_start_session (GDM_SESSION (slave->priv->session),
+-                                           slave->priv->start_session_service_name);
+-
+-                slave->priv->start_session_id = 0;
+-                g_free (slave->priv->start_session_service_name);
+-                slave->priv->start_session_service_name = NULL;
++                start_session (slave);
+         }
+ 
+         g_object_unref (slave->priv->greeter);
+--
+cgit v0.9.0.2

diff --git a/gnome-base/gdm/files/gdm-3.1.91-disable-accessibility.patch b/gnome-base/gdm/files/gdm-3.1.91-disable-accessibility.patch
new file mode 100644
index 0000000..54bc4a7
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.1.91-disable-accessibility.patch
@@ -0,0 +1,60 @@
+From 947f39a9de41495eadd58f92a84d350d4e6e6580 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gmail.com>
+Date: Wed, 14 Sep 2011 22:09:56 -0400
+Subject: [PATCH 2/2] Disable a11y in gconf and gsettings defaults
+
+---
+ data/make-dconf-override-db.sh |    6 +++---
+ data/session-setup.entries     |    4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/data/make-dconf-override-db.sh b/data/make-dconf-override-db.sh
+index 638fe1d..af8fa9c 100755
+--- a/data/make-dconf-override-db.sh
++++ b/data/make-dconf-override-db.sh
+@@ -13,10 +13,10 @@ trap 'rm -rf $TMPDIR; kill $DBUS_SESSION_BUS_PID' ERR
+ 
+ gsettings set org.gnome.power-manager show-actions false || :
+ 
+-gsettings set org.gnome.desktop.a11y.keyboard enable true
++gsettings set org.gnome.desktop.a11y.keyboard enable false
+ gsettings set org.gnome.desktop.background show-desktop-icons false
+ gsettings set org.gnome.desktop.default-applications.terminal exec '"/bin/true"'
+-gsettings set org.gnome.desktop.interface toolkit-accessibility true
++gsettings set org.gnome.desktop.interface toolkit-accessibility false
+ 
+ gsettings set org.gnome.desktop.lockdown disable-application-handlers true
+ gsettings set org.gnome.desktop.lockdown disable-command-line true
+@@ -48,7 +48,7 @@ gsettings list-schemas | egrep '^org\.gnome\.settings-daemon\.plugins\.' | while
+     gsettings set $schema active false
+ done
+ 
+-gsettings set org.gnome.settings-daemon.plugins.a11y-keyboard active true
++gsettings set org.gnome.settings-daemon.plugins.a11y-keyboard active false
+ gsettings set org.gnome.settings-daemon.plugins.background active true
+ gsettings set org.gnome.settings-daemon.plugins.cursor active true
+ gsettings set org.gnome.settings-daemon.plugins.media-keys active true
+diff --git a/data/session-setup.entries b/data/session-setup.entries
+index b84e16f..a47d761 100644
+--- a/data/session-setup.entries
++++ b/data/session-setup.entries
+@@ -406,14 +406,14 @@
+     <entry>
+       <key>/desktop/gnome/interface/accessibility</key>
+       <value>
+-        <bool>true</bool>
++        <bool>false</bool>
+       </value>
+     </entry>
+ 
+     <entry>
+       <key>/desktop/gnome/accessibility/keyboard/enable</key>
+       <value>
+-        <bool>true</bool>
++        <bool>false</bool>
+       </value>
+     </entry>
+ 
+-- 
+1.7.6.1
+

diff --git a/gnome-base/gdm/files/gdm-3.1.91-gdm-slave-dbus_error_init.patch b/gnome-base/gdm/files/gdm-3.1.91-gdm-slave-dbus_error_init.patch
new file mode 100644
index 0000000..201359b
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.1.91-gdm-slave-dbus_error_init.patch
@@ -0,0 +1,22 @@
+From b8f1c67f7db3f86f631420b057ae08fc5f053819 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 26 Jul 2011 01:11:20 +0000
+Subject: gdm-slave: fix double dbus_error_init()
+
+https://bugzilla.gnome.org/show_bug.cgi?id=655380
+---
+diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c
+index fad7c96..e7553ad 100644
+--- a/daemon/gdm-slave.c
++++ b/daemon/gdm-slave.c
+@@ -1376,8 +1376,6 @@ activate_session_id (GdmSlave   *slave,
+                 goto out;
+         }
+ 
+-
+-        dbus_error_init (&local_error);
+         reply = dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection (slave->priv->connection),
+                                                            message,
+                                                            -1,
+--
+cgit v0.9.0.2

diff --git a/gnome-base/gdm/files/gdm-3.1.91-gdm-slave-memory-leak.patch b/gnome-base/gdm/files/gdm-3.1.91-gdm-slave-memory-leak.patch
new file mode 100644
index 0000000..a61f4f9
--- /dev/null
+++ b/gnome-base/gdm/files/gdm-3.1.91-gdm-slave-memory-leak.patch
@@ -0,0 +1,21 @@
+From b669aa14d85a0d011fd25093f8e4f4da531ee679 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 26 Jul 2011 01:10:36 +0000
+Subject: gdm-slave: fix memory leak
+
+https://bugzilla.gnome.org/show_bug.cgi?id=655380
+---
+diff --git a/daemon/gdm-slave.c b/daemon/gdm-slave.c
+index 2dc0323..fad7c96 100644
+--- a/daemon/gdm-slave.c
++++ b/daemon/gdm-slave.c
+@@ -1432,6 +1432,7 @@ session_unlock (GdmSlave   *slave,
+ 
+         if (dbus_error_is_set (&error)) {
+                 g_debug ("GdmSlave: ConsoleKit %s raised:\n %s\n\n", error.name, error.message);
++                dbus_error_free (&error);
+                 return FALSE;
+         }
+ 
+--
+cgit v0.9.0.2

diff --git a/gnome-base/gdm/files/gdm-3.0.4-hardcoded-gnome-session-path-env.patch b/gnome-base/gdm/files/gdm-3.1.91-hardcoded-gnome-session-path-env.patch
similarity index 80%
rename from gnome-base/gdm/files/gdm-3.0.4-hardcoded-gnome-session-path-env.patch
rename to gnome-base/gdm/files/gdm-3.1.91-hardcoded-gnome-session-path-env.patch
index 50564de..6e2054b 100644
--- a/gnome-base/gdm/files/gdm-3.0.4-hardcoded-gnome-session-path-env.patch
+++ b/gnome-base/gdm/files/gdm-3.1.91-hardcoded-gnome-session-path-env.patch
@@ -1,8 +1,8 @@
-From ece7e78e3ef5278382acbf8258950c8607a5d7df Mon Sep 17 00:00:00 2001
+From 791fb64fbf7d4752c4e607708739f627f09b71e2 Mon Sep 17 00:00:00 2001
 From: Alexandre Rostovtsev <tetromino@gmail.com>
 Date: Sun, 7 Aug 2011 02:15:11 -0400
-Subject: [PATCH] Don't hardcode gnome-session path, don't drop harmless env
- variables
+Subject: [PATCH 1/2] Don't hardcode gnome-session path, don't drop harmless
+ env variables
 
 Don't hardcode the location of the gnome-session executable to /usr/bin.
 The system administrator may want have installed a custom wrapper in
@@ -23,28 +23,28 @@ driver bugs.
 Addresses https://bugzilla.gnome.org/show_bug.cgi?id=656094
 ---
  daemon/gdm-greeter-session.c |    2 +-
- daemon/gdm-welcome-session.c |   43 ++++++++++++++++++++++++++---------------
- 2 files changed, 28 insertions(+), 17 deletions(-)
+ daemon/gdm-welcome-session.c |   44 ++++++++++++++++++++++++++---------------
+ 2 files changed, 29 insertions(+), 17 deletions(-)
 
 diff --git a/daemon/gdm-greeter-session.c b/daemon/gdm-greeter-session.c
-index a401508..7429314 100644
+index 8032065..73653b9 100644
 --- a/daemon/gdm-greeter-session.c
 +++ b/daemon/gdm-greeter-session.c
-@@ -148,7 +148,7 @@ gdm_greeter_session_new (const char *display_name,
+@@ -78,7 +78,7 @@ gdm_greeter_session_new (const char *display_name,
          GObject *object;
  
          object = g_object_new (GDM_TYPE_GREETER_SESSION,
--                               "command", BINDIR "/gnome-session --session gdm --autostart="DATADIR"/gdm/autostart/LoginWindow/",
-+                               "command", "gnome-session --session gdm --autostart="DATADIR"/gdm/autostart/LoginWindow/",
+-                               "command", BINDIR "/gnome-session -f --debug",
++                               "command", "gnome-session -f --debug",
                                 "server-dbus-path", GDM_GREETER_SERVER_DBUS_PATH,
                                 "server-dbus-interface", GDM_GREETER_SERVER_DBUS_INTERFACE,
                                 "server-env-var-name", "GDM_GREETER_DBUS_ADDRESS",
 diff --git a/daemon/gdm-welcome-session.c b/daemon/gdm-welcome-session.c
-index b8ec8d7..d0e6030 100644
+index 41144a8..ff11da9 100644
 --- a/daemon/gdm-welcome-session.c
 +++ b/daemon/gdm-welcome-session.c
-@@ -350,32 +350,28 @@ get_welcome_environment (GdmWelcomeSession *welcome_session,
-         GPtrArray     *env;
+@@ -238,32 +238,28 @@ build_welcome_environment (GdmWelcomeSession *welcome_session,
+ {
          GHashTable    *hash;
          struct passwd *pwent;
 -        static const char * const optional_environment[] = {
@@ -52,20 +52,20 @@ index b8ec8d7..d0e6030 100644
                  "LANG", "LANGUAGE", "LC_CTYPE", "LC_NUMERIC", "LC_TIME",
                  "LC_COLLATE", "LC_MONETARY", "LC_MESSAGES", "LC_PAPER",
                  "LC_NAME", "LC_ADDRESS", "LC_TELEPHONE", "LC_MEASUREMENT",
-                 "LC_IDENTIFICATION", "LC_ALL",
+                 "LC_IDENTIFICATION", "LC_ALL", "WINDOWPATH",
                  NULL
          };
 +        static const char * const drop_environment[] = {
 +                "MAIL", NULL
 +        };
 +        char **curr_environment;
+         char *system_data_dirs;
          int i;
  
          load_lang_config_file (LANG_CONFIG_FILE,
 -                               (const char **) optional_environment);
 +                               (const char **) lang_environment);
 +        curr_environment = g_listenv ();
-         env = g_ptr_array_new ();
  
 -        /* create a hash table of current environment, then update keys has necessary */
 +        /* Create a hash table for environment variables.
@@ -82,10 +82,10 @@ index b8ec8d7..d0e6030 100644
 -                                     g_strdup (g_getenv (optional_environment[i])));
 -        }
 -
-         if (welcome_session->priv->dbus_bus_address != NULL) {
-                 g_hash_table_insert (hash,
-                                      g_strdup ("DBUS_SESSION_BUS_ADDRESS"),
-@@ -409,7 +405,6 @@ get_welcome_environment (GdmWelcomeSession *welcome_session,
+         system_data_dirs = g_strjoinv (":", (char **) g_get_system_data_dirs ());
+ 
+         g_hash_table_insert (hash,
+@@ -292,7 +288,6 @@ build_welcome_environment (GdmWelcomeSession *welcome_session,
          g_hash_table_insert (hash, g_strdup ("USERNAME"), g_strdup (welcome_session->priv->user_name));
  
          g_hash_table_insert (hash, g_strdup ("GDM_VERSION"), g_strdup (VERSION));
@@ -93,12 +93,12 @@ index b8ec8d7..d0e6030 100644
  
          g_hash_table_insert (hash, g_strdup ("HOME"), g_strdup ("/"));
          g_hash_table_insert (hash, g_strdup ("PWD"), g_strdup ("/"));
-@@ -435,15 +430,31 @@ get_welcome_environment (GdmWelcomeSession *welcome_session,
+@@ -318,12 +313,28 @@ build_welcome_environment (GdmWelcomeSession *welcome_session,
                  g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id));
          }
  
 -        g_hash_table_insert (hash, g_strdup ("PATH"), g_strdup (g_getenv ("PATH")));
--        g_hash_table_insert (hash, g_strdup ("WINDOWPATH"), g_strdup (g_getenv ("WINDOWPATH")));
+-
          g_hash_table_insert (hash, g_strdup ("RUNNING_UNDER_GDM"), g_strdup ("true"));
          g_hash_table_insert (hash, g_strdup ("GVFS_DISABLE_FUSE"), g_strdup ("1"));
          g_hash_table_insert (hash, g_strdup ("DCONF_PROFILE"), g_strdup ("gdm"));
@@ -119,14 +119,19 @@ index b8ec8d7..d0e6030 100644
 +        for (i = 0; drop_environment[i] != NULL; i++)
 +                g_hash_table_remove (hash, drop_environment[i]);
 +
-         g_hash_table_foreach (hash, (GHFunc)listify_hash, env);
-         g_hash_table_destroy (hash);
- 
 +        g_strfreev (curr_environment);
 +
-         g_ptr_array_add (env, NULL);
+         return hash;
+ }
+ 
+@@ -337,6 +348,7 @@ get_welcome_environment (GdmWelcomeSession *welcome_session,
+         hash = build_welcome_environment (welcome_session, start_session);
+ 
+         env = g_ptr_array_new ();
++
+         g_hash_table_foreach (hash, (GHFunc)listify_hash, env);
+         g_hash_table_destroy (hash);
  
-         return env;
 -- 
-1.7.6
+1.7.6.1
 

diff --git a/gnome-base/gdm/gdm-3.0.4-r2.ebuild b/gnome-base/gdm/gdm-3.1.91.ebuild
similarity index 74%
rename from gnome-base/gdm/gdm-3.0.4-r2.ebuild
rename to gnome-base/gdm/gdm-3.1.91.ebuild
index 4fabce8..8d692ea 100644
--- a/gnome-base/gdm/gdm-3.0.4-r2.ebuild
+++ b/gnome-base/gdm/gdm-3.1.91.ebuild
@@ -15,7 +15,7 @@ SLOT="0"
 KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~sh ~sparc ~x86"
 
 IUSE_LIBC="elibc_glibc"
-IUSE="accessibility +consolekit ipv6 gnome-keyring selinux tcpd test xinerama +xklavier $IUSE_LIBC"
+IUSE="accessibility +consolekit fprint +gnome-shell ipv6 gnome-keyring +introspection selinux smartcard tcpd test xinerama +xklavier $IUSE_LIBC"
 
 # Name of the tarball with gentoo specific files
 GDM_EXTRA="${PN}-2.20.9-gentoo-files-r1"
@@ -24,11 +24,15 @@ SRC_URI="${SRC_URI}
 	mirror://gentoo/${GDM_EXTRA}.tar.bz2"
 
 # NOTE: x11-base/xorg-server dep is for X_SERVER_PATH etc, bug #295686
+# nspr used by smartcard extension
+# dconf, dbus and g-s-d are needed at build time for make-dconf-override-db.sh
 COMMON_DEPEND="
 	>=dev-libs/dbus-glib-0.74
-	>=dev-libs/glib-2.27.4:2
+	>=dev-libs/glib-2.29.3:2
 	>=x11-libs/gtk+-2.91.1:3
 	>=x11-libs/pango-1.3
+	dev-libs/nspr
+	>=dev-libs/nss-3.11.1
 	>=media-libs/fontconfig-2.5.0
 	>=media-libs/libcanberra-0.4[gtk3]
 	>=gnome-base/gconf-2.31.3
@@ -36,6 +40,11 @@ COMMON_DEPEND="
 	>=sys-power/upower-0.9
 	>=sys-apps/accountsservice-0.6.12
 
+	gnome-base/dconf
+	>=gnome-base/gnome-settings-daemon-3.1.4
+	gnome-base/gsettings-desktop-schemas
+	sys-apps/dbus
+
 	app-text/iso-codes
 
 	x11-base/xorg-server
@@ -53,6 +62,7 @@ COMMON_DEPEND="
 
 	accessibility? ( x11-libs/libXevie )
 	gnome-keyring? ( >=gnome-base/gnome-keyring-2.22[pam] )
+	introspection? ( >=dev-libs/gobject-introspection-0.9.12 )
 	selinux? ( sys-libs/libselinux )
 	tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
 	xinerama? ( x11-libs/libXinerama )
@@ -68,15 +78,26 @@ DEPEND="${COMMON_DEPEND}
 	>=dev-util/pkgconfig-0.19
 	>=app-text/scrollkeeper-0.1.4
 	>=app-text/gnome-doc-utils-0.3.2"
-# XXX: These deps are from the gnome-session gdm.session file
-# at-spi is needed for at-spi-registryd-wrapper.desktop
+# XXX: These deps are from session and desktop files in data/ directory
+# at-spi:1 is needed for at-spi-registryd (spawned by simple-chooser)
+# fprintd is used via dbus by gdm-fingerprint-extension
 RDEPEND="${COMMON_DEPEND}
 	>=gnome-base/gnome-session-2.91.92
-	>=gnome-base/gnome-settings-daemon-2.91
-	x11-wm/metacity
 
-	accessibility? ( gnome-extra/at-spi:1 )
+	accessibility? (
+		app-accessibility/gnome-mag
+		app-accessibility/gok
+		app-accessibility/orca
+		gnome-extra/at-spi:1 )
 	consolekit? ( gnome-extra/polkit-gnome )
+	fprint? (
+		sys-auth/fprintd
+		sys-auth/pam_fprint )
+	gnome-shell? ( >=gnome-base/gnome-shell-3.1.90 )
+	!gnome-shell? ( x11-wm/metacity )
+	smartcard? (
+		app-crypt/coolkey
+		sys-auth/pam_pkcs11 )
 
 	!gnome-extra/fast-user-switch-applet"
 
@@ -85,11 +106,13 @@ pkg_setup() {
 
 	# PAM is the only auth scheme supported
 	# even though configure lists shadow and crypt
-	# they don't have any corresponding code
+	# they don't have any corresponding code.
 	# --with-at-spi-registryd-directory= needs to be passed explicitly because
 	# of https://bugzilla.gnome.org/show_bug.cgi?id=607643#c4
 	G2CONF="${G2CONF}
 		--disable-schemas-install
+		--disable-maintainer-mode
+		--disable-static
 		--localstatedir=${EPREFIX}/var
 		--with-xdmcp=yes
 		--enable-authentication-scheme=pam
@@ -129,10 +152,26 @@ src_prepare() {
 	epatch "${FILESDIR}/${PN}-2.32.0-automagic-libxklavier-support.patch"
 
 	# don't ignore all non-i18n environment variables, gnome bug 656094
-	epatch "${FILESDIR}/${PN}-3.0.4-hardcoded-gnome-session-path-env.patch"
+	epatch "${FILESDIR}/${PN}-3.1.91-hardcoded-gnome-session-path-env.patch"
 
 	# don't load accessibility support at runtime when USE=-accessibility
-	use accessibility || epatch "${FILESDIR}/${PN}-3.0.4-disable-a11y.patch"
+	if ! use accessibility; then
+		epatch "${FILESDIR}/${PN}-3.1.91-disable-accessibility.patch"
+		# force gsettings override db to be regenerated
+		rm -f data/dconf-override-db
+	fi
+
+	# make gdm-fallback session the default if USE=-gnome-shell
+	if ! use gnome-shell; then
+		sed -e 's:"gdm-shell":"gdm-fallback":' \
+			-i data/make-dconf-override-db.sh || die "sed failed"
+		rm -f data/dconf-override-db
+	fi
+
+	# Useful upstream patches, will be in next release
+	epatch "${FILESDIR}/${P}-gdm-slave-memory-leak.patch"
+	epatch "${FILESDIR}/${P}-gdm-slave-dbus_error_init.patch"
+	epatch "${FILESDIR}/${P}-daemon-autologin.patch"
 
 	mkdir -p "${S}"/m4
 	intltoolize --force --copy --automake || die "intltoolize failed"
@@ -147,7 +186,6 @@ src_install() {
 	# Install the systemd unit file
 	systemd_dounit "${FILESDIR}/gdm@.service"
 
-	# FIXME: Remove dosym usage, gone in EAPI 4
 	# gdm-binary should be gdm to work with our init (#5598)
 	rm -f "${ED}/usr/sbin/gdm"
 	ln -sfn /usr/sbin/gdm-binary "${ED}/usr/sbin/gdm"
@@ -166,9 +204,14 @@ src_install() {
 	echo 'XDG_DATA_DIRS="/usr/share/gdm"' > 99xdg-gdm
 	doenvd 99xdg-gdm || die "doenvd failed"
 
+	# install PAM files
+	cp "${FILESDIR}"/3.1.91-pam.d/gdm-{password,fingerprint,smartcard} \
+		"${gentoodir}"/pam.d/
 	use gnome-keyring && sed -i "s:#Keyring=::g" "${gentoodir}"/pam.d/*
 
-	dopamd "${gentoodir}"/pam.d/gdm{,-autologin}
+	dopamd "${gentoodir}"/pam.d/gdm{,-autologin,-password,-fingerprint,-smartcard}
+	# gdm-welcome is the PAM file for the gdm greeter itself
+	pamd_mimic system-services gdm-welcome auth account session
 }
 
 pkg_postinst() {



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2011-09-15  5:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-15  5:46 [gentoo-commits] proj/gnome:gnome-next commit in: gnome-base/gdm/, gnome-base/gdm/files/, gnome-base/gdm/files/3.1.91-pam.d/ Alexandre Restovtsev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox