public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-02-18  6:10 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-02-18  6:10 UTC (permalink / raw
  To: gentoo-commits

commit:     b1406e645c3349be2653592ecc600962f7581493
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Fri Feb 18 06:00:06 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Fri Feb 18 06:05:44 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=b1406e64

gnome-base/gnome-shell: fix startup problems, bug 352466

* Also add a missing dep, and fix the gnome-bluetooth dependency

---
 .../files/gnome-shell-2.91.6-as-needed.patch       |   34 ++++++++++++++++++++
 ...-2.91.6.ebuild => gnome-shell-2.91.6-r1.ebuild} |   12 ++++++-
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |    3 +-
 3 files changed, 46 insertions(+), 3 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-2.91.6-as-needed.patch b/gnome-base/gnome-shell/files/gnome-shell-2.91.6-as-needed.patch
new file mode 100644
index 0000000..085baa2
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-2.91.6-as-needed.patch
@@ -0,0 +1,34 @@
+From b6749f4b606470bec455b4d0bd1f15d8667dea3c Mon Sep 17 00:00:00 2001
+From: Giovanni Campagna <gcampagna@src.gnome.org>
+Date: Mon, 24 Jan 2011 17:39:45 +0000
+Subject: BluetoothStatus: depend more on libgnome-bluetooth-applet
+
+Ensure that a dependency is generated even when using --as-needed,
+by adding a fake function that calls into the library.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=639324
+---
+diff --git a/src/gnome-shell-plugin.c b/src/gnome-shell-plugin.c
+index 96075f4..8d85fa2 100644
+--- a/src/gnome-shell-plugin.c
++++ b/src/gnome-shell-plugin.c
+@@ -670,3 +670,17 @@ MetaPluginInfo *gnome_shell_plugin_plugin_info (MetaPlugin *plugin)
+ 
+   return &info;
+ }
++
++#if HAVE_BLUETOOTH
++/* HACK:
++   Add a non-static function that calls into libgnome-bluetooth-applet.so,
++   to avoid the linker being too smart and removing the dependency.
++   This function is never actually called.
++*/
++extern GType bluetooth_applet_get_type(void);
++void _shell_link_to_bluetooth(void);
++
++void _shell_link_to_bluetooth(void) {
++  bluetooth_applet_get_type();
++}
++#endif
+--
+cgit v0.8.3.4

diff --git a/gnome-base/gnome-shell/gnome-shell-2.91.6.ebuild b/gnome-base/gnome-shell/gnome-shell-2.91.6-r1.ebuild
similarity index 87%
rename from gnome-base/gnome-shell/gnome-shell-2.91.6.ebuild
rename to gnome-base/gnome-shell/gnome-shell-2.91.6-r1.ebuild
index a48267b..d4028f9 100644
--- a/gnome-base/gnome-shell/gnome-shell-2.91.6.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-2.91.6-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2010 Gentoo Foundation
+# Copyright 1999-2011 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: $
 
@@ -26,6 +26,7 @@ fi
 # FIXME: Automagic gnome-bluetooth[introspection] support. Also gnome bug 637935
 # gtk+-2.99.3 is needed for gtk/gtkx.h
 COMMON_DEPEND=">=dev-libs/glib-2.25.9
+	x11-libs/gdk-pixbuf:2[introspection]
 	>=x11-libs/gtk+-2.99.3:3[introspection]
 	>=media-libs/clutter-1.5.15[introspection]
 	>=gnome-base/gnome-desktop-2.91.2:3
@@ -45,7 +46,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9
 	>=media-libs/gst-plugins-base-0.10.16
 	media-libs/libcanberra
 	media-sound/pulseaudio
-	net-wireless/gnome-bluetooth[introspection]
+	>=net-wireless/gnome-bluetooth-2.90.0[introspection]
 
 	x11-libs/startup-notification
 	x11-libs/libXfixes
@@ -70,3 +71,10 @@ DOCS="AUTHORS README"
 # Don't error out on warnings
 G2CONF="--enable-compile-warnings=maximum
 --disable-schemas-compile"
+
+src_prepare() {
+	gnome2_src_prepare
+
+	# Taken from upstream, remove for next release, bug 352466
+	epatch "${FILESDIR}/${P}-as-needed.patch"
+}

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 292abc4..8a0a717 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2010 Gentoo Foundation
+# Copyright 1999-2011 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: $
 
@@ -25,6 +25,7 @@ fi
 # gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
 # FIXME: Automagic gnome-bluetooth[introspection] support. Also gnome bug 637935
 COMMON_DEPEND=">=dev-libs/glib-2.25.9
+	x11-libs/gdk-pixbuf:2[introspection]
 	>=x11-libs/gtk+-3.0.0:3[introspection]
 	>=media-libs/clutter-1.5.15[introspection]
 	>=gnome-base/gnome-desktop-2.91.2:3



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-02-22 19:44 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-02-22 19:44 UTC (permalink / raw
  To: gentoo-commits

commit:     edcbc1475ed116e96ff6becb3bf9a67d07247df4
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 22 19:41:56 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Tue Feb 22 19:44:10 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=edcbc147

gnome-base/gnome-shell: remove old, broken version

* Sorry guys, you'll have to use the live version till the shell guys release 2.91.90
* gnome-shell-2.91.6 won't run with gsettings-desktop-schemas-0.1.7

---
 .../files/gnome-shell-2.91.6-as-needed.patch       |   34 --------
 .../gnome-shell/gnome-shell-2.91.6-r1.ebuild       |   80 --------------------
 2 files changed, 0 insertions(+), 114 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-2.91.6-as-needed.patch b/gnome-base/gnome-shell/files/gnome-shell-2.91.6-as-needed.patch
deleted file mode 100644
index 085baa2..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-2.91.6-as-needed.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From b6749f4b606470bec455b4d0bd1f15d8667dea3c Mon Sep 17 00:00:00 2001
-From: Giovanni Campagna <gcampagna@src.gnome.org>
-Date: Mon, 24 Jan 2011 17:39:45 +0000
-Subject: BluetoothStatus: depend more on libgnome-bluetooth-applet
-
-Ensure that a dependency is generated even when using --as-needed,
-by adding a fake function that calls into the library.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=639324
----
-diff --git a/src/gnome-shell-plugin.c b/src/gnome-shell-plugin.c
-index 96075f4..8d85fa2 100644
---- a/src/gnome-shell-plugin.c
-+++ b/src/gnome-shell-plugin.c
-@@ -670,3 +670,17 @@ MetaPluginInfo *gnome_shell_plugin_plugin_info (MetaPlugin *plugin)
- 
-   return &info;
- }
-+
-+#if HAVE_BLUETOOTH
-+/* HACK:
-+   Add a non-static function that calls into libgnome-bluetooth-applet.so,
-+   to avoid the linker being too smart and removing the dependency.
-+   This function is never actually called.
-+*/
-+extern GType bluetooth_applet_get_type(void);
-+void _shell_link_to_bluetooth(void);
-+
-+void _shell_link_to_bluetooth(void) {
-+  bluetooth_applet_get_type();
-+}
-+#endif
---
-cgit v0.8.3.4

diff --git a/gnome-base/gnome-shell/gnome-shell-2.91.6-r1.ebuild b/gnome-base/gnome-shell/gnome-shell-2.91.6-r1.ebuild
deleted file mode 100644
index e3db9b7..0000000
--- a/gnome-base/gnome-shell/gnome-shell-2.91.6-r1.ebuild
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright 1999-2011 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-EAPI="2"
-GCONF_DEBUG="no"
-GNOME2_LA_PUNT="yes"
-PYTHON_DEPEND="2:2.5"
-
-inherit eutils gnome2 python
-
-DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
-HOMEPAGE="http://live.gnome.org/GnomeShell"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE=""
-if [[ ${PV} = 9999 ]]; then
-	inherit gnome2-live
-	KEYWORDS=""
-else
-	KEYWORDS="~amd64 ~x86"
-fi
-
-# gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
-# FIXME: Automagic gnome-bluetooth[introspection] support. Also gnome bug 637935
-# gtk+-2.99.3 is needed for gtk/gtkx.h
-COMMON_DEPEND=">=dev-libs/glib-2.25.9
-	x11-libs/gdk-pixbuf:2[introspection]
-	>=x11-libs/gtk+-2.99.3:3[introspection]
-	>=media-libs/clutter-1.5.15[introspection]
-	>=gnome-base/gnome-desktop-2.91.2:3
-	>=dev-libs/gobject-introspection-0.10.1
-	>=gnome-extra/evolution-data-server-2.91.6
-
-	dev-libs/dbus-glib
-	>=dev-libs/gjs-0.7.8
-	dev-libs/libxml2:2
-	x11-libs/pango[introspection]
-	dev-libs/libcroco:0.6
-
-	gnome-base/gconf[introspection]
-	gnome-base/gnome-menus
-	gnome-base/librsvg
-	>=media-libs/gstreamer-0.10.16
-	>=media-libs/gst-plugins-base-0.10.16
-	media-libs/libcanberra
-	media-sound/pulseaudio
-	>=net-wireless/gnome-bluetooth-2.90.0[introspection]
-
-	x11-libs/startup-notification
-	x11-libs/libXfixes
-	>=x11-wm/mutter-2.91.4[introspection]
-	x11-apps/mesa-progs
-
-	dev-python/dbus-python
-	dev-python/gconf-python"
-# Runtime-only deps are probably incomplete and approximate
-RDEPEND="${COMMON_DEPEND}
-	x11-libs/gdk-pixbuf[introspection]
-	>=gnome-base/dconf-0.4.1
-	>=gnome-base/gnome-settings-daemon-2.91
-	>=gnome-base/gnome-control-center-2.91
-	>=gnome-base/libgnomekbd-2.91.4[introspection]"
-DEPEND="${COMMON_DEPEND}
-	sys-devel/gettext
-	>=dev-util/pkgconfig-0.22
-	>=dev-util/intltool-0.26
-	gnome-base/gnome-common"
-DOCS="AUTHORS README"
-# Don't error out on warnings
-G2CONF="--enable-compile-warnings=maximum
---disable-schemas-compile"
-
-src_prepare() {
-	gnome2_src_prepare
-
-	# Taken from upstream, remove for next release, bug 352466
-	epatch "${FILESDIR}/${P}-as-needed.patch"
-}



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-02-28 20:25 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-02-28 20:25 UTC (permalink / raw
  To: gentoo-commits

commit:     144f8928be9bc1283eaca0e190da45f8ead1cddd
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 28 20:18:46 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Mon Feb 28 20:18:46 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=144f8928

gnome-base/gnome-shell: update patch and shell recorder elog

---
 ...> gnome-shell-experimental-nm-applet-1.1.patch} |  182 +++++++++++---------
 gnome-base/gnome-shell/gnome-shell-2.91.90.ebuild  |    2 +-
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |    7 +-
 3 files changed, 109 insertions(+), 82 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.0.patch b/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.1.patch
similarity index 93%
rename from gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.0.patch
rename to gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.1.patch
index 15a560b..546a539 100644
--- a/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.0.patch
+++ b/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.1.patch
@@ -1,4 +1,4 @@
-From f8a4fa0646aa4ab620331c0bbcae4334173b614d Mon Sep 17 00:00:00 2001
+From 9fb864ff75921974ad1f09ae75dcd6cc94ac90ef Mon Sep 17 00:00:00 2001
 From: Giovanni Campagna <gcampagna@src.gnome.org>
 Date: Tue, 25 Jan 2011 22:08:12 +0100
 Subject: [PATCH] Status area: add NetworkManager indicator
@@ -14,17 +14,17 @@ https://bugzilla.gnome.org/show_bug.cgi?id=621707
  js/Makefile.am                  |    2 +
  js/misc/modemManager.js         |  103 +++
  js/ui/panel.js                  |    3 +-
- js/ui/status/network.js         | 1754 +++++++++++++++++++++++++++++++++++++++
+ js/ui/status/network.js         | 1780 +++++++++++++++++++++++++++++++++++++++
  tools/build/gnome-shell.modules |   17 +
- 6 files changed, 1886 insertions(+), 1 deletions(-)
+ 6 files changed, 1912 insertions(+), 1 deletions(-)
  create mode 100644 js/misc/modemManager.js
  create mode 100644 js/ui/status/network.js
 
 diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
-index 1da6619..8f0fb52 100644
+index c7d875a..78f1361 100644
 --- a/data/theme/gnome-shell.css
 +++ b/data/theme/gnome-shell.css
-@@ -154,6 +154,14 @@ StTooltip StLabel {
+@@ -158,6 +158,14 @@ StTooltip StLabel {
      spacing: .5em;
  }
  
@@ -40,7 +40,7 @@ index 1da6619..8f0fb52 100644
      icon-size: 1.14em;
  }
 diff --git a/js/Makefile.am b/js/Makefile.am
-index e4a4145..53f80d4 100644
+index 55bb111..a085bfc 100644
 --- a/js/Makefile.am
 +++ b/js/Makefile.am
 @@ -8,6 +8,7 @@ nobase_dist_js_DATA = 	\
@@ -51,7 +51,7 @@ index e4a4145..53f80d4 100644
  	misc/params.js		\
  	misc/util.js		\
  	perf/core.js		\
-@@ -49,6 +50,7 @@ nobase_dist_js_DATA = 	\
+@@ -50,6 +51,7 @@ nobase_dist_js_DATA = 	\
  	ui/statusMenu.js	\
  	ui/status/accessibility.js	\
  	ui/status/keyboard.js	\
@@ -169,7 +169,7 @@ index 0000000..b368511
 +};
 +Signals.addSignalMethods(ModemCdma.prototype);
 diff --git a/js/ui/panel.js b/js/ui/panel.js
-index 1c23ae8..ab7a656 100644
+index d1bf3fd..76c10f1 100644
 --- a/js/ui/panel.js
 +++ b/js/ui/panel.js
 @@ -38,7 +38,8 @@ const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
@@ -184,10 +184,10 @@ index 1c23ae8..ab7a656 100644
  if (Config.HAVE_BLUETOOTH)
 diff --git a/js/ui/status/network.js b/js/ui/status/network.js
 new file mode 100644
-index 0000000..04e9c87
+index 0000000..ecc80cc
 --- /dev/null
 +++ b/js/ui/status/network.js
-@@ -0,0 +1,1754 @@
+@@ -0,0 +1,1780 @@
 +// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
 +const ByteArray = imports.byteArray;
 +const DBus = imports.dbus;
@@ -282,7 +282,7 @@ index 0000000..04e9c87
 +        this.bestAP = accessPoints[0];
 +
 +        let ssid = this.bestAP.get_ssid();
-+        title = title || NetworkManager.utils_ssid_to_utf8(ssid, ssid.length) || _("<unknown>");
++        title = title || NetworkManager.utils_ssid_to_utf8(ssid) || _("<unknown>");
 +
 +        PopupMenu.PopupImageMenuItem.prototype._init.call(this, title, this._getIcon(), params);
 +
@@ -697,40 +697,59 @@ index 0000000..04e9c87
 +    }
 +};
 +
-+function NMDeviceWWAN() {
++function NMDeviceModem() {
 +    this._init.apply(this, arguments);
 +}
 +
-+NMDeviceWWAN.prototype = {
++NMDeviceModem.prototype = {
 +    __proto__: NMDevice.prototype,
 +
 +    _init: function(client, device, connections) {
-+        this._autoConnectionName = _("New Mobile Broadband connection...");
-+        this.category = NMConnectionCategory.WWAN;
++        let is_wwan = false;
++
++        this.mobileDevice = null;
++        this._connecitonType = 'ppp';
 +
-+        if (device instanceof NMClient.GsmDevice) {
++        // FIXME: listen for this property changing and recreate modem stuff
++        this._capabilities = device.current_capabilites;
++        if (this._capabilities & NetworkManager.DeviceModemCapabilities.GSM_UMTS) {
++            is_wwan = true;
 +            this.mobileDevice = new ModemManager.ModemGsm(device.udi);
 +            this._connectionType = NetworkManager.SETTING_GSM_SETTING_NAME;
-+        } else if (device instanceof NMClient.CdmaDevice) {
++        } else if (this._capabilities & NetworkManager.DeviceModemCapabilities.CDMA_EVDO) {
++            is_wwan = true;
 +            this.mobileDevice = new ModemManager.ModemCdma(device.udi);
 +            this._connectionType = NetworkManager.SETTING_CDMA_SETTING_NAME;
++        } else if (this._capabilites & NetworkManager.DeviceModemCapabilites.LTE) {
++            is_wwan = true;
++            // FIXME: support signal quality
 +        }
 +
-+        this.mobileDevice.connect('notify::operator-name', Lang.bind(this, function() {
-+            if (this._operatorItem) {
-+                let name = this.mobileDevice.operator_name;
-+                if (name) {
-+                    this._operatorItem.label.text = name;
-+                    this._operatorItem.actor.show();
-+                } else
-+                    this._operatorItem.actor.hide();
-+            }
-+        }));
-+        this.mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() {
-+            if (this._operatorItem) {
-+                this._operatorItem.setIcon(this._getSignalIcon());
-+            }
-+        }));
++        if (is_wwan) {
++            this.category = NMConnectionCategory.WWAN;
++            this._autoConnectionName = _("New Mobile Broadband connection...");
++        } else {
++            this.category = NMConnectionCategory.WIRED;
++            this._autoConnectionName = _("Auto dial-up");
++        }
++
++        if (this.mobileDevice) {
++            this.mobileDevice.connect('notify::operator-name', Lang.bind(this, function() {
++                if (this._operatorItem) {
++                    let name = this.mobileDevice.operator_name;
++                    if (name) {
++                        this._operatorItem.label.text = name;
++                        this._operatorItem.actor.show();
++                    } else
++                        this._operatorItem.actor.hide();
++                }
++            }));
++            this.mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() {
++                if (this._operatorItem) {
++                    this._operatorItem.setIcon(this._getSignalIcon());
++                }
++            }));
++        }
 +
 +        NMDevice.prototype._init.call(this, client, device, connections, 1);
 +    },
@@ -740,12 +759,14 @@ index 0000000..04e9c87
 +    },
 +
 +    _createSection: function() {
-+        NMDevice.prototype._createSection.call(this);
++        if (this.mobileDevice) {
++            this._operatorItem = new PopupMenu.PopupImageMenuItem(this.mobileDevice.operator_name || '',
++                                                                  this._getSignalIcon(),
++                                                                  { reactive: false });
++            this.section.addMenuItem(this._operatorItem);
++        }
 +
-+        this._operatorItem = new PopupMenu.PopupImageMenuItem(this.mobileDevice.operator_name || '',
-+                                                              this._getSignalIcon(),
-+                                                              { reactive: false });
-+        this.section.addMenuItem(this._operatorItem, 0);
++        NMDevice.prototype._createSection.call(this);
 +    },
 +
 +    clearSection: function() {
@@ -762,6 +783,7 @@ index 0000000..04e9c87
 +        // FIXME: we need to summon the mobile wizard here
 +        // or NM will not have the necessary parameters to complete the connection
 +        // (the same FIXME is currently in nm-applet, actually)
++        // (this does not apply to dial-up)
 +
 +        let connection = new NetworkManager.Connection;
 +        connection._uuid = NetworkManager.utils_uuid_generate();
@@ -1218,7 +1240,7 @@ index 0000000..04e9c87
 +                if (apObj.connections.length == 1)
 +                    apObj.item = this._createAPItem(apObj.connections[0], apObj, false);
 +                else {
-+                    let title = NetworkManager.utils_ssid_to_utf8(apObj.ssid, apObj.ssid.length) || _("<unknown>");
++                    let title = NetworkManager.utils_ssid_to_utf8(apObj.ssid) || _("<unknown>");
 +                    apObj.item = new PopupMenu.PopupSubMenuMenuItem(title);
 +                    apObj.item._apObj = apObj;
 +                    for (let i = 0; i < apObj.connections.length; i++)
@@ -1229,7 +1251,7 @@ index 0000000..04e9c87
 +                apObj.item._apObj = apObj;
 +                apObj.item.connect('activate', Lang.bind(this, function() {
 +                    let name;
-+                    let ssid = NetworkManager.utils_ssid_to_utf8(apObj.ssid, apObj.ssid.length);
++                    let ssid = NetworkManager.utils_ssid_to_utf8(apObj.ssid);
 +                    if (ssid) {
 +                        /* TRANSLATORS: this the automatic wireless connection name (including the network name) */
 +                        name = _("Auto %s").format(ssid);
@@ -1356,16 +1378,16 @@ index 0000000..04e9c87
 +        this._dtypes = { };
 +        this._dtypes[NetworkManager.DeviceType.ETHERNET] = NMDeviceWired;
 +        this._dtypes[NetworkManager.DeviceType.WIFI] = NMDeviceWireless;
-+        this._dtypes[NetworkManager.DeviceType.GSM] = NMDeviceWWAN;
-+        this._dtypes[NetworkManager.DeviceType.CDMA] = NMDeviceWWAN;
++        this._dtypes[NetworkManager.DeviceType.MODEM] = NMDeviceModem;
 +        this._dtypes[NetworkManager.DeviceType.BT] = NMDeviceBluetooth;
-+        // FIXME: WWAN support (if enabled)
++        // FIXME: WiMax support (if enabled)
 +
 +        // Connection types
 +        this._ctypes = { };
 +        this._ctypes[NetworkManager.SETTING_WIRELESS_SETTING_NAME] = NMConnectionCategory.WIRELESS;
 +        this._ctypes[NetworkManager.SETTING_WIRED_SETTING_NAME] = NMConnectionCategory.WIRED;
 +        this._ctypes[NetworkManager.SETTING_PPPOE_SETTING_NAME] = NMConnectionCategory.WIRED;
++        this._ctypes[NetworkManager.SETTING_PPP_SETTING_NAME] = NMConnectionCategory.WIRED;
 +        this._ctypes[NetworkManager.SETTING_BLUETOOTH_SETTING_NAME] = NMConnectionCategory.WWAN;
 +        this._ctypes[NetworkManager.SETTING_CDMA_SETTING_NAME] = NMConnectionCategory.WWAN;
 +        this._ctypes[NetworkManager.SETTING_GSM_SETTING_NAME] = NMConnectionCategory.WWAN;
@@ -1631,42 +1653,46 @@ index 0000000..04e9c87
 +
 +    _notifyActiveConnection: function(active) {
 +        if (active.state == NetworkManager.ActiveConnectionState.ACTIVATED) {
-+            this._ensureSource();
 +
-+            let icon;
-+            let banner;
-+            switch (active._section) {
-+            case NMConnectionCategory.WWAN:
-+                icon = 'network-cellular-signal-excellent';
-+                banner = _("You're now connected to mobile broadband connection '%s'").format(active._connection._name);
-+                break;
-+            case NMConnectionCategory.WIRELESS:
-+                icon = 'network-wireless-signal-excellent';
-+                banner = _("You're now connected to wireless network '%s'").format(active._connection._name);
-+                break;
-+            case NMConnectionCategory.WIRED:
-+                icon = 'network-wired';
-+                banner = _("You're now connected to wired network '%s'").format(active._connection._name);
-+                break;
-+            case NMConnectionCategory.VPN:
-+                icon = 'network-vpn';
-+                banner = _("You're now connected to VPN network '%s'").format(active._connection._name);
-+                break;
-+            default:
-+                // a fallback for a generic 'connected' icon
-+                icon = 'network-transmit-receive';
-+                banner = _("You're now connected to '%s'").format(active._connection._name);
-+            }
++            // notify only connections that are visible
++            if (active._connection) {
++                this._ensureSource();
 +
-+            let iconActor = new St.Icon({ icon_name: icon,
-+                                          icon_type: St.IconType.SYMBOLIC,
-+                                          icon_size: this._source.ICON_SIZE
-+                                        });
-+            let notification = new MessageTray.Notification(this._source,
-+                                                            _("Connection estabilished"),
-+                                                            banner,
-+                                                            { icon: iconActor });
-+            this._source.notify(notification);
++                let icon;
++                let banner;
++                switch (active._section) {
++                case NMConnectionCategory.WWAN:
++                    icon = 'network-cellular-signal-excellent';
++                    banner = _("You're now connected to mobile broadband connection '%s'").format(active._connection._name);
++                    break;
++                case NMConnectionCategory.WIRELESS:
++                    icon = 'network-wireless-signal-excellent';
++                    banner = _("You're now connected to wireless network '%s'").format(active._connection._name);
++                    break;
++                case NMConnectionCategory.WIRED:
++                    icon = 'network-wired';
++                    banner = _("You're now connected to wired network '%s'").format(active._connection._name);
++                    break;
++                case NMConnectionCategory.VPN:
++                    icon = 'network-vpn';
++                    banner = _("You're now connected to VPN network '%s'").format(active._connection._name);
++                    break;
++                default:
++                    // a fallback for a generic 'connected' icon
++                    icon = 'network-transmit-receive';
++                    banner = _("You're now connected to '%s'").format(active._connection._name);
++                }
++
++                let iconActor = new St.Icon({ icon_name: icon,
++                                              icon_type: St.IconType.SYMBOLIC,
++                                              icon_size: this._source.ICON_SIZE
++                                            });
++                let notification = new MessageTray.Notification(this._source,
++                                                                _("Connection estabilished"),
++                                                                banner,
++                                                                { icon: iconActor });
++                this._source.notify(notification);
++            }
 +
 +            if (active._stateChangeId) {
 +                active.disconnect(active._stateChangeId);
@@ -1943,7 +1969,7 @@ index 0000000..04e9c87
 +    }
 +};
 diff --git a/tools/build/gnome-shell.modules b/tools/build/gnome-shell.modules
-index e8b5493..2f44c5d 100644
+index 778db20..6ad230d 100644
 --- a/tools/build/gnome-shell.modules
 +++ b/tools/build/gnome-shell.modules
 @@ -9,6 +9,8 @@
@@ -1955,7 +1981,7 @@ index e8b5493..2f44c5d 100644
    <repository type="tarball" name="cairo.org"
        href="http://cairographics.org/"/>
    <repository type="tarball" name="0pointer.de"
-@@ -315,4 +317,19 @@
+@@ -329,4 +331,19 @@
      </dependencies>
  </autotools>
  

diff --git a/gnome-base/gnome-shell/gnome-shell-2.91.90.ebuild b/gnome-base/gnome-shell/gnome-shell-2.91.90.ebuild
index 19872b0..242e352 100644
--- a/gnome-base/gnome-shell/gnome-shell-2.91.90.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-2.91.90.ebuild
@@ -93,6 +93,6 @@ pkg_postinst() {
 		ewarn "To make use of GNOME Shell's built-in screen recording utility,"
 		ewarn "you need to either install >=media-libs/gst-plugins-good-0.10.23"
 		ewarn "and media-plugins/gst-plugins-vp8, or use dconf-editor to change"
-		ewarn "/apps/gnome-shell/recorder/pipeline to what you want to use."
+		ewarn "apps.gnome-shell.recorder/pipeline to what you want to use."
 	fi
 }

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 8411da8..399a7ec 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -24,6 +24,7 @@ fi
 
 # gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
 # FIXME: Automagic gnome-bluetooth[introspection] support.
+# latest mutter is needed due to commit 474ff2e997
 COMMON_DEPEND=">=dev-libs/glib-2.25.9
 	>=dev-libs/gjs-0.7.11
 	>=dev-libs/gobject-introspection-0.10.1
@@ -38,7 +39,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9
 	>=net-libs/telepathy-glib-0.13.12[introspection]
 	>=net-wireless/gnome-bluetooth-2.90.0[introspection]
 	>=sys-auth/polkit-0.100[introspection]
-	>=x11-wm/mutter-2.91.90[introspection]
+	>=x11-wm/mutter-2.91.90.1[introspection]
 
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2
@@ -97,7 +98,7 @@ src_prepare() {
 		ewarn "Adding support for the experimental NetworkManager applet."
 		ewarn "This needs the latest NetworkManager & nm-applet trunk."
 		ewarn "Report bugs about this to 'nirbheek' on #gentoo-desktop @ FreeNode."
-		epatch "${FILESDIR}/${PN}-experimental-nm-applet-1.0.patch"
+		epatch "${FILESDIR}/${PN}-experimental-nm-applet-1.1.patch"
 	fi
 
 	gnome2_src_prepare
@@ -114,6 +115,6 @@ pkg_postinst() {
 		ewarn "To make use of GNOME Shell's built-in screen recording utility,"
 		ewarn "you need to either install >=media-libs/gst-plugins-good-0.10.23"
 		ewarn "and media-plugins/gst-plugins-vp8, or use dconf-editor to change"
-		ewarn "/apps/gnome-shell/recorder/pipeline to what you want to use."
+		ewarn "apps.gnome-shell.recorder/pipeline to what you want to use."
 	fi
 }



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-03-04 10:23 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-03-04 10:23 UTC (permalink / raw
  To: gentoo-commits

commit:     faffb51f8b8bc477d4e47b910042912be6a81aad
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Thu Mar  3 09:01:33 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Thu Mar  3 09:15:44 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=faffb51f

gnome-base/gnome-shell: update live ebuild, and nm-applet patch

---
 ...> gnome-shell-experimental-nm-applet-1.2.patch} |    8 ++++----
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |    5 +++--
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.1.patch b/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.2.patch
similarity index 99%
rename from gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.1.patch
rename to gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.2.patch
index 546a539..a1af852 100644
--- a/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.1.patch
+++ b/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.2.patch
@@ -218,10 +218,10 @@ index 0000000..ecc80cc
 +};
 +
 +const NMAppletIface = {
-+    name: 'org.freedesktop.NetworkManager.Applet',
++    name: 'org.gnome.network-manager-applet',
 +    methods: [
 +        { name: 'ConnectToHiddenNetwork', outSignature: '', inSignature: '' },
-+        { name: 'CreateWirelessNetwork', outSignature: '', inSignature: '' },
++        { name: 'CreateWifiNetwork', outSignature: '', inSignature: '' },
 +    ]
 +};
 +const NMAppletProxy = DBus.makeProxyClass(NMAppletIface);
@@ -1295,7 +1295,7 @@ index 0000000..ecc80cc
 +        PanelMenu.SystemStatusButton.prototype._init.call(this, 'network-error');
 +
 +        this._client = NMClient.Client.new();
-+        this._nmApplet = new NMAppletProxy(DBus.session, 'org.freedesktop.NetworkManager.Applet', '/org/freedesktop/NetworkManager/Applet');
++        this._nmApplet = new NMAppletProxy(DBus.session, 'org.gnome.network-manager-applet', '/org/gnome/network-manager-applet');
 +
 +        this._statusSection = new PopupMenu.PopupMenuSection();
 +        this._statusItem = new PopupMenu.PopupMenuItem('', { style_class: 'popup-inactive-menu-item', reactive: false });
@@ -2002,4 +2002,4 @@ index 778db20..6ad230d 100644
 +  </autotools>
  </moduleset>
 -- 
-1.7.4
\ No newline at end of file
+1.7.4

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 399a7ec..33cc7f1 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -86,7 +86,8 @@ DEPEND="${COMMON_DEPEND}
 DOCS="AUTHORS README"
 # Don't error out on warnings
 G2CONF="--enable-compile-warnings=maximum
---disable-schemas-compile"
+--disable-schemas-compile
+--disable-jhbuild-wrapper-script"
 
 pkg_setup() {
 	python_set_active_version 2
@@ -98,7 +99,7 @@ src_prepare() {
 		ewarn "Adding support for the experimental NetworkManager applet."
 		ewarn "This needs the latest NetworkManager & nm-applet trunk."
 		ewarn "Report bugs about this to 'nirbheek' on #gentoo-desktop @ FreeNode."
-		epatch "${FILESDIR}/${PN}-experimental-nm-applet-1.1.patch"
+		epatch "${FILESDIR}/${PN}-experimental-nm-applet-1.2.patch"
 	fi
 
 	gnome2_src_prepare



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-03-09 11:34 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-03-09 11:34 UTC (permalink / raw
  To: gentoo-commits

commit:     ef397a4902ffd41ba4e6258257a48f31fcb997aa
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Wed Mar  9 06:06:29 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Wed Mar  9 11:21:36 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=ef397a49

gnome-base/gnome-shell: 2.91.90 → 2.91.91

* Python is no longer needed, gnome-shell is now a binary

---
 .../files/gnome-shell-2.91.91-fix-build.patch      |   23 ++++++++++++
 .../gnome-shell-2.91.91-fix-gnome-bluetooth.patch  |   20 ++++++++++
 ...l-2.91.90.ebuild => gnome-shell-2.91.91.ebuild} |   39 ++++++++++----------
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |   16 ++------
 4 files changed, 67 insertions(+), 31 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-2.91.91-fix-build.patch b/gnome-base/gnome-shell/files/gnome-shell-2.91.91-fix-build.patch
new file mode 100644
index 0000000..c54eb10
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-2.91.91-fix-build.patch
@@ -0,0 +1,23 @@
+From 49f6280645cdad7fa7f53633ce67ed5f7079a8dd Mon Sep 17 00:00:00 2001
+From: Dan Winship <danw@gnome.org>
+Date: Tue, 08 Mar 2011 16:47:14 +0000
+Subject: src: add more stuff to gnome_shell_real_LDADD
+
+to work with libtools that are more strict about not allowing
+transitive dependencies
+---
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 40ce5de..1c3e1b6 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -140,7 +140,7 @@ libgnome_shell_la_gir_sources = \
+ gnome_shell_real_SOURCES =		\
+ 	main.c
+ gnome_shell_real_CPPFLAGS = $(gnome_shell_cflags)
+-gnome_shell_real_LDADD = libgnome-shell.la
++gnome_shell_real_LDADD = libgnome-shell.la $(libgnome_shell_la_LIBADD)
+ gnome_shell_real_DEPENDENCIES = libgnome-shell.la
+ 
+ ########################################
+--
+cgit v0.8.3.4

diff --git a/gnome-base/gnome-shell/files/gnome-shell-2.91.91-fix-gnome-bluetooth.patch b/gnome-base/gnome-shell/files/gnome-shell-2.91.91-fix-gnome-bluetooth.patch
new file mode 100644
index 0000000..3a6e994
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-2.91.91-fix-gnome-bluetooth.patch
@@ -0,0 +1,20 @@
+--- src/main.c
++++ src/main.c
+@@ -458,3 +458,17 @@ main (int argc, char **argv)
+ 
+   return meta_run ();
+ }
++
++#if HAVE_BLUETOOTH
++/* HACK:
++   Add a non-static function that calls into libgnome-bluetooth-applet.so,
++   to avoid the linker being too smart and removing the dependency.
++   This function is never actually called.
++*/
++extern GType bluetooth_applet_get_type(void);
++void _shell_link_to_bluetooth(void);
++
++void _shell_link_to_bluetooth(void) {
++  bluetooth_applet_get_type();
++}
++#endif

diff --git a/gnome-base/gnome-shell/gnome-shell-2.91.90.ebuild b/gnome-base/gnome-shell/gnome-shell-2.91.91.ebuild
similarity index 76%
rename from gnome-base/gnome-shell/gnome-shell-2.91.90.ebuild
rename to gnome-base/gnome-shell/gnome-shell-2.91.91.ebuild
index 242e352..f1ad0a0 100644
--- a/gnome-base/gnome-shell/gnome-shell-2.91.90.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-2.91.91.ebuild
@@ -5,9 +5,8 @@
 EAPI="2"
 GCONF_DEBUG="no"
 GNOME2_LA_PUNT="yes"
-PYTHON_DEPEND="2:2.5"
 
-inherit gnome2 python
+inherit autotools eutils gnome2
 
 DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
 HOMEPAGE="http://live.gnome.org/GnomeShell"
@@ -24,6 +23,7 @@ fi
 
 # gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
 # FIXME: Automagic gnome-bluetooth[introspection] support.
+# latest gsettings-desktop-schemas is needed due to commit 602fa1c6
 COMMON_DEPEND=">=dev-libs/glib-2.25.9
 	>=dev-libs/gjs-0.7.11
 	>=dev-libs/gobject-introspection-0.10.1
@@ -31,14 +31,14 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9
 	>=x11-libs/gtk+-3.0.0:3[introspection]
 	>=media-libs/clutter-1.5.15[introspection]
 	>=gnome-base/gnome-desktop-2.91.2:3
-	>=gnome-base/gsettings-desktop-schemas-0.1.7
+	>=gnome-base/gsettings-desktop-schemas-0.1.7.1
 	>=gnome-extra/evolution-data-server-2.91.6
 	>=media-libs/gstreamer-0.10.16
 	>=media-libs/gst-plugins-base-0.10.16
 	>=net-libs/telepathy-glib-0.13.12[introspection]
 	>=net-wireless/gnome-bluetooth-2.90.0[introspection]
 	>=sys-auth/polkit-0.100[introspection]
-	>=x11-wm/mutter-2.91.90[introspection]
+	>=x11-wm/mutter-2.91.91[introspection]
 
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2
@@ -55,15 +55,21 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9
 	x11-libs/libXfixes
 	x11-apps/mesa-progs"
 # Runtime-only deps are probably incomplete and approximate.
+# Each block:
+# 1. Introspection stuff + dconf needed via imports.gi.*
+# 2. gnome-session is needed for gnome-session-quit
+# 3. Don't remember
+# 4. nm-applet is needed for auth prompting and the wireless connection dialog
 RDEPEND="${COMMON_DEPEND}
-	dev-python/dbus-python
-	dev-python/gconf-python
 
 	>=gnome-base/dconf-0.4.1
-	>=gnome-base/gnome-settings-daemon-2.91
-	>=gnome-base/gnome-control-center-2.91
 	>=gnome-base/libgnomekbd-2.91.4[introspection]
-	sys-power/upower[introspection]"
+	sys-power/upower[introspection]
+	
+	>=gnome-base/gnome-session-2.91.91
+
+	>=gnome-base/gnome-settings-daemon-2.91
+	>=gnome-base/gnome-control-center-2.91"
 DEPEND="${COMMON_DEPEND}
 	sys-devel/gettext
 	>=dev-util/pkgconfig-0.22
@@ -72,21 +78,16 @@ DEPEND="${COMMON_DEPEND}
 DOCS="AUTHORS README"
 # Don't error out on warnings
 G2CONF="--enable-compile-warnings=maximum
---disable-schemas-compile"
-
-pkg_setup() {
-	python_set_active_version 2
-}
+--disable-schemas-compile
+--disable-jhbuild-wrapper-script"
 
 src_prepare() {
+	epatch "${FILESDIR}/${PN}-fix-gnome-bluetooth.patch"
+	epatch "${FILESDIR}/${P}-fix-build.patch"
+	eautoreconf
 	gnome2_src_prepare
 }
 
-src_install() {
-	python_convert_shebangs 2 tools/check-for-missing.py src/gnome-shell
-	gnome2_src_install
-}
-
 pkg_postinst() {
 	if ! has_version '>=media-libs/gst-plugins-good-0.10.23' || \
 	   ! has_version 'media-plugins/gst-plugins-vp8'; then

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index e911002..5708018 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -5,9 +5,8 @@
 EAPI="2"
 GCONF_DEBUG="no"
 GNOME2_LA_PUNT="yes"
-PYTHON_DEPEND="2:2.5"
 
-inherit eutils gnome2 python
+inherit gnome2
 
 DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
 HOMEPAGE="http://live.gnome.org/GnomeShell"
@@ -40,7 +39,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9
 	>=net-libs/telepathy-glib-0.13.12[introspection]
 	>=net-wireless/gnome-bluetooth-2.90.0[introspection]
 	>=sys-auth/polkit-0.100[introspection]
-	>=x11-wm/mutter-2.91.90.1[introspection]
+	>=x11-wm/mutter-2.91.91[introspection]
 
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2
@@ -87,10 +86,6 @@ G2CONF="--enable-compile-warnings=maximum
 --disable-schemas-compile
 --disable-jhbuild-wrapper-script"
 
-pkg_setup() {
-	python_set_active_version 2
-}
-
 src_prepare() {
 	if use nm-applet; then
 		# See https://bugzilla.gnome.org/show_bug.cgi?id=621707"
@@ -100,12 +95,9 @@ src_prepare() {
 		epatch "${FILESDIR}/${PN}-experimental-nm-applet-1.2.patch"
 	fi
 
-	gnome2_src_prepare
-}
+	epatch "${FILESDIR}/${PN}-fix-gnome-bluetooth.patch"
 
-src_install() {
-	python_convert_shebangs 2 tools/check-for-missing.py src/gnome-shell
-	gnome2_src_install
+	gnome2_src_prepare
 }
 
 pkg_postinst() {



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-03-10 15:41 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-03-10 15:41 UTC (permalink / raw
  To: gentoo-commits

commit:     3abc7ceb725f2eb28fbda1681f0c905c51587ae2
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 10 14:18:03 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Thu Mar 10 14:18:06 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=3abc7ceb

gnome-base/gnome-shell: update nm-applet patch

---
 ...> gnome-shell-experimental-nm-applet-1.3.patch} |  167 +++++++++++++------
 gnome-base/gnome-shell/gnome-shell-2.91.91.ebuild  |    4 +-
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |   12 +-
 3 files changed, 122 insertions(+), 61 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.2.patch b/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.3.patch
similarity index 93%
rename from gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.2.patch
rename to gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.3.patch
index a1af852..34190c3 100644
--- a/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.2.patch
+++ b/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.3.patch
@@ -1,4 +1,4 @@
-From 9fb864ff75921974ad1f09ae75dcd6cc94ac90ef Mon Sep 17 00:00:00 2001
+From a4a93f5d68ea9ce6347125eaaf9640ed98654980 Mon Sep 17 00:00:00 2001
 From: Giovanni Campagna <gcampagna@src.gnome.org>
 Date: Tue, 25 Jan 2011 22:08:12 +0100
 Subject: [PATCH] Status area: add NetworkManager indicator
@@ -14,14 +14,14 @@ https://bugzilla.gnome.org/show_bug.cgi?id=621707
  js/Makefile.am                  |    2 +
  js/misc/modemManager.js         |  103 +++
  js/ui/panel.js                  |    3 +-
- js/ui/status/network.js         | 1780 +++++++++++++++++++++++++++++++++++++++
+ js/ui/status/network.js         | 1841 +++++++++++++++++++++++++++++++++++++++
  tools/build/gnome-shell.modules |   17 +
- 6 files changed, 1912 insertions(+), 1 deletions(-)
+ 6 files changed, 1973 insertions(+), 1 deletions(-)
  create mode 100644 js/misc/modemManager.js
  create mode 100644 js/ui/status/network.js
 
 diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
-index c7d875a..78f1361 100644
+index 22670bd..39bb7ab 100644
 --- a/data/theme/gnome-shell.css
 +++ b/data/theme/gnome-shell.css
 @@ -158,6 +158,14 @@ StTooltip StLabel {
@@ -169,10 +169,10 @@ index 0000000..b368511
 +};
 +Signals.addSignalMethods(ModemCdma.prototype);
 diff --git a/js/ui/panel.js b/js/ui/panel.js
-index d1bf3fd..76c10f1 100644
+index c08c3e8..abe0fe2 100644
 --- a/js/ui/panel.js
 +++ b/js/ui/panel.js
-@@ -38,7 +38,8 @@ const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
+@@ -41,7 +41,8 @@ const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
      'a11y': imports.ui.status.accessibility.ATIndicator,
      'volume': imports.ui.status.volume.Indicator,
      'battery': imports.ui.status.power.Indicator,
@@ -184,14 +184,15 @@ index d1bf3fd..76c10f1 100644
  if (Config.HAVE_BLUETOOTH)
 diff --git a/js/ui/status/network.js b/js/ui/status/network.js
 new file mode 100644
-index 0000000..ecc80cc
+index 0000000..9700896
 --- /dev/null
 +++ b/js/ui/status/network.js
-@@ -0,0 +1,1780 @@
+@@ -0,0 +1,1841 @@
 +// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
 +const ByteArray = imports.byteArray;
 +const DBus = imports.dbus;
 +const GLib = imports.gi.GLib;
++const GObject = imports.gi.GObject;
 +const Lang = imports.lang;
 +const Mainloop = imports.mainloop;
 +const NetworkManager = imports.gi.NetworkManager;
@@ -300,7 +301,7 @@ index 0000000..ecc80cc
 +    },
 +
 +    _updated: function(ap, strength) {
-+        if (strength > this._bestAP.strength)
++        if (strength > this.bestAP.strength)
 +            this.bestAP = ap;
 +
 +        this.setIcon(this._getIcon());
@@ -350,8 +351,9 @@ index 0000000..ecc80cc
 +        this.device = device;
 +        if (device) {
 +            this.device._delegate = this;
-+            this.device.connect('state-changed', Lang.bind(this, this.deviceStateChanged));
-+        }
++            this._stateChangedId = this.device.connect('state-changed', Lang.bind(this, this.deviceStateChanged));
++        } else
++            this._stateChangedId = 0;
 +
 +        // protected
 +        this._client = client;
@@ -385,6 +387,22 @@ index 0000000..ecc80cc
 +        this._createSection();
 +    },
 +
++    destroy: function() {
++        if (this.device)
++            this.device._delegate = null;
++
++        if (this._stateChangedId) {
++            // Need to go through GObject.Object.prototype because
++            // nm_device_disconnect conflicts with g_signal_disconnect
++            GObject.Object.prototype.disconnect.call(this.device, this._stateChangedId);
++            this._stateChangedId = 0;
++        }
++
++        if (this.titleItem)
++            this.titleItem.destroy();
++        this.section.destroy();
++    },
++
 +    setActiveConnection: function(activeConnection) {
 +        if (activeConnection == this._activeConnection)
 +            // nothing to do
@@ -577,7 +595,7 @@ index 0000000..ecc80cc
 +                   this.client.deactivate_connection(this._activeConnection);
 +                   but with this, NM insists in restarting the connection immediately
 +                */
-+                this.device.disconnect(function() { });
++                this.device.disconnect(null);
 +            }));
 +        } else {
 +            /* TRANSLATORS: this is the indication that a connection for another logged in user is active,
@@ -642,9 +660,7 @@ index 0000000..ecc80cc
 +
 +        if (newstate != NetworkManager.DeviceState.DISCONNECTED &&
 +            newstate != NetworkManager.DeviceState.ACTIVATED &&
-+            oldstate != NetworkManager.DeviceState.DISCONNECTED &&
-+            oldstate != NetworkManager.DeviceState.ACTIVATED &&
-+            oldstate != NetworkManager.DeviceState.UNMANAGED) {
++            this._statusItem) {
 +            // a transition between states that show the status label
 +            this._statusItem.label.text = this._getStatusLabel();
 +            return;
@@ -720,7 +736,7 @@ index 0000000..ecc80cc
 +            is_wwan = true;
 +            this.mobileDevice = new ModemManager.ModemCdma(device.udi);
 +            this._connectionType = NetworkManager.SETTING_CDMA_SETTING_NAME;
-+        } else if (this._capabilites & NetworkManager.DeviceModemCapabilites.LTE) {
++        } else if (this._capabilites & NetworkManager.DeviceModemCapabilities.LTE) {
 +            is_wwan = true;
 +            // FIXME: support signal quality
 +        }
@@ -734,7 +750,7 @@ index 0000000..ecc80cc
 +        }
 +
 +        if (this.mobileDevice) {
-+            this.mobileDevice.connect('notify::operator-name', Lang.bind(this, function() {
++            this._operatorNameId = this.mobileDevice.connect('notify::operator-name', Lang.bind(this, function() {
 +                if (this._operatorItem) {
 +                    let name = this.mobileDevice.operator_name;
 +                    if (name) {
@@ -744,7 +760,7 @@ index 0000000..ecc80cc
 +                        this._operatorItem.actor.hide();
 +                }
 +            }));
-+            this.mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() {
++            this._signalQualityId = this.mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() {
 +                if (this._operatorItem) {
 +                    this._operatorItem.setIcon(this._getSignalIcon());
 +                }
@@ -754,6 +770,13 @@ index 0000000..ecc80cc
 +        NMDevice.prototype._init.call(this, client, device, connections, 1);
 +    },
 +
++    destroy: function() {
++        if (this.mobileDevice)
++            this.mobileDevice.disconnectAll();
++
++        NMDevice.prototype.destroy.call(this);
++    },
++
 +    _getSignalIcon: function() {
 +        return 'network-cellular-signal-' + signalToIcon(this.mobileDevice.signal_quality);
 +    },
@@ -913,12 +936,27 @@ index 0000000..ecc80cc
 +                }
 +            }
 +        }
-+        device.connect('access-point-added', Lang.bind(this, this._accessPointAdded));
-+        device.connect('access-point-removed', Lang.bind(this, this._accessPointRemoved));
++        this._apAddedId = device.connect('access-point-added', Lang.bind(this, this._accessPointAdded));
++        this._apRemovedId = device.connect('access-point-removed', Lang.bind(this, this._accessPointRemoved));
 +
 +        NMDevice.prototype._init.call(this, client, device, validConnections);
 +    },
 +
++    destroy: function() {
++        if (this._apAddedId) {
++            // see above for this HACK
++            GObject.Object.prototype.disconnect.call(this.device, this._apAddedId);
++            this._apAddedId = 0;
++        }
++
++        if (this._apRemovedId) {
++            GObject.Object.prototype.disconnect.call(this.device, this._apRemovedId);
++            this._apRemovedId = 0;
++        }
++
++        NMDevice.prototype.destroy.call(this);
++    },
++
 +    _findNetwork: function(ssid) {
 +        for (let i = 0; i < this._networks.length; i++) {
 +            if (ssidCompare(this._networks[i].ssid, ssid))
@@ -932,7 +970,7 @@ index 0000000..ecc80cc
 +        let pos = this._findNetwork(ssid);
 +        let apObj;
 +        if (pos != -1) {
-+            apObj = this._network[pos];
++            apObj = this._networks[pos];
 +            if (apObj.accessPoints.indexOf(accessPoint) != -1) {
 +                log('Access point was already seen, not adding again');
 +                return;
@@ -945,7 +983,7 @@ index 0000000..ecc80cc
 +                      item: null,
 +                      accessPoints: [ accessPoint ]
 +                    };
-+            this._accessPoints.push(apObj);
++            this._networks.push(apObj);
 +        }
 +
 +        // check if this enables new connections for this group
@@ -1182,9 +1220,10 @@ index 0000000..ecc80cc
 +        if (fixedChannel && fixedChannel != NetworkManager.utils_wifi_freq_to_channel(ap.frequency))
 +            return false;
 +
-+        if (!wirelessSettings.ap_security_compatible(wirelessSecuritySettings, ap.flags, ap.wpa_flags, ap.rsn_flags, ap.mode))
-+            return false;
-+        return true;
++        if (!wirelessSecuritySettings)
++            return true;
++
++        return wirelessSettings.ap_security_compatible(wirelessSecuritySettings, ap.flags, ap.wpa_flags, ap.rsn_flags, ap.mode);
 +    },
 +
 +    _createActiveConnectionItems: function() {
@@ -1201,7 +1240,7 @@ index 0000000..ecc80cc
 +                                                                              { reactive: false });
 +            this._disconnectItem = new PopupMenu.PopupMenuItem(_("Disconnect"));
 +            this._disconnectItem.connect('activate', Lang.bind(this, function() {
-+                this.device.disconnect(function() { });
++                this.device.disconnect(null);
 +            }));
 +        } else {
 +            // We cannot read the connection (due to ACL, or API incompatibility), but we still show signal if we have it
@@ -1267,7 +1306,7 @@ index 0000000..ecc80cc
 +                        type: NetworkManager.SETTING_WIRELESS_SETTING_NAME
 +                    }));
 +
-+                    accessPoints = sortAccessPoints(apObj.accessPoints);
++                    let accessPoints = sortAccessPoints(apObj.accessPoints);
 +                    this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null)
 +                }));
 +            }
@@ -1279,7 +1318,7 @@ index 0000000..ecc80cc
 +                    this._overflowItem = new PopupMenu.PopupSubMenuMenuItem(_("More..."));
 +                    this.section.addMenuItem(this._overflowItem);
 +                }
-+                this._overflowItem.menu.addMenuItem(menuItem);
++                this._overflowItem.menu.addMenuItem(apObj.item);
 +            }
 +        }
 +    },
@@ -1394,19 +1433,23 @@ index 0000000..ecc80cc
 +        this._ctypes[NetworkManager.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN;
 +
 +        this._settings = NMClient.RemoteSettings.new(null);
-+        this._settings.connect('connections-read', Lang.bind(this, function() {
++        this._connectionsReadId = this._settings.connect('connections-read', Lang.bind(this, function() {
 +            this._readConnections();
 +            this._readDevices();
 +            this._syncNMState();
 +
 +            // Connect to signals late so that early signals don't find in inconsistent state
-+            this._client.connect('notify::manager-running', Lang.bind(this, this._syncNMState));
-+            this._client.connect('notify::networking-enabled', Lang.bind(this, this._syncNMState));
-+            this._client.connect('notify::state', Lang.bind(this, this._syncNMState));
-+            this._client.connect('notify::active-connections', Lang.bind(this, this._updateIcon));
-+            this._client.connect('device-added', Lang.bind(this, this._deviceAdded));
-+            this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved));
-+            this._settings.connect('new-connection', Lang.bind(this, this._newConnection));
++            // and connect only once (this signal handler can be called again if NetworkManager goes up and down)
++            if (!this._inited) {
++                this._inited = true;
++                this._client.connect('notify::manager-running', Lang.bind(this, this._syncNMState));
++                this._client.connect('notify::networking-enabled', Lang.bind(this, this._syncNMState));
++                this._client.connect('notify::state', Lang.bind(this, this._syncNMState));
++                this._client.connect('notify::active-connections', Lang.bind(this, this._updateIcon));
++                this._client.connect('device-added', Lang.bind(this, this._deviceAdded));
++                this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved));
++                this._settings.connect('new-connection', Lang.bind(this, this._newConnection));
++            }
 +        }));
 +    },
 +
@@ -1463,19 +1506,26 @@ index 0000000..ecc80cc
 +    },
 +
 +    _readDevices: function() {
-+        let devices = this._client.get_devices();
++        let devices = this._client.get_devices() || [ ];
 +        for (let i = 0; i < devices.length; ++i) {
 +            this._deviceAdded(this._client, devices[i]);
 +        }
 +    },
 +
 +    _deviceAdded: function(client, device) {
++        if (device._delegate) {
++            // already seen, not adding again
++            return;
++        }
 +        let wrapperClass = this._dtypes[device.get_device_type()];
 +        if (wrapperClass) {
 +            // XXX: check what nm-applet does here
 +            device._description = device.get_product();
 +
 +            let wrapper = new wrapperClass(this._client, device, this._connections);
++            // FIXME: these notifications are duplicate with those exposed by nm-applet
++            // uncomment this code in 3.2, when we'll conflict with and kill nm-applet
++            /*
 +            wrapper._networkLostId = wrapper.connect('network-lost', Lang.bind(this, function() {
 +                this._ensureSource();
 +                let icon = new St.Icon({ icon_name: 'network-offline',
@@ -1506,7 +1556,7 @@ index 0000000..ecc80cc
 +            wrapper._destroyId = wrapper.connect('destroy', function(wrapper) {
 +                wrapper.disconnect(wrapper._networkLostId);
 +                wrapper.disconnect(wrapper._activationFailedId);
-+            });
++            }); */
 +            let section = this['_' + wrapper.category + 'Section'];
 +            let devices = this['_' + wrapper.category + 'Devices'];
 +
@@ -1527,13 +1577,12 @@ index 0000000..ecc80cc
 +
 +    _deviceRemoved: function(client, device) {
 +        if (!device._delegate) {
-+            log('Removing a network device that was not added (race condition?)');
++            log('Removing a network device that was not added');
 +            return;
 +        }
 +
 +        let wrapper = device._delegate;
-+        wrapper.titleItem.destroy();
-+        wrapper.section.destroy();
++        wrapper.destroy();
 +
 +        let section = this['_' + wrapper.category + 'Section'];
 +        let devices = this['_' + wrapper.category + 'Devices'];
@@ -1652,6 +1701,10 @@ index 0000000..ecc80cc
 +    },
 +
 +    _notifyActiveConnection: function(active) {
++        // FIXME: duplicate notifications when nm-applet is running
++        // This code will come back when nm-applet is killed
++        return;
++
 +        if (active.state == NetworkManager.ActiveConnectionState.ACTIVATED) {
 +
 +            // notify only connections that are visible
@@ -1708,11 +1761,11 @@ index 0000000..ecc80cc
 +        for (let i = 0; i < connections.length; i++) {
 +            let connection = connections[i];
 +            if (connection._uuid) {
-+                log('Connection was already seen, when reading the connections for the first time (race condition?)');
++                // connection was already seen (for example because NetworkManager was restarted)
 +                continue;
 +            }
-+            connection.connect('removed', Lang.bind(this, this._connectionRemoved));
-+            connection.connect('updated', Lang.bind(this, this._updateConnection));
++            connection._removedId = connection.connect('removed', Lang.bind(this, this._connectionRemoved));
++            connection._updatedId = connection.connect('updated', Lang.bind(this, this._updateConnection));
 +
 +            this._updateConnection(connection);
 +            this._connections.push(connection);
@@ -1721,12 +1774,12 @@ index 0000000..ecc80cc
 +
 +    _newConnection: function(settings, connection) {
 +        if (connection._uuid) {
-+            log('Connection was already seen, not adding again...');
++            // connection was already seen
 +            return;
 +        }
 +
-+        connection.connect('removed', Lang.bind(this, this._connectionRemoved));
-+        connection.connect('updated', Lang.bind(this, this._updateConnection));
++        connection._removedId = connection.connect('removed', Lang.bind(this, this._connectionRemoved));
++        connection._updatedId = connection.connect('updated', Lang.bind(this, this._updateConnection));
 +
 +        this._updateConnection(connection);
 +        this._connections.push(connection);
@@ -1739,9 +1792,15 @@ index 0000000..ecc80cc
 +        if (pos != -1)
 +            this._connections.splice(connection);
 +
-+        if (!connection._everAdded)
-+            return;
++        connection._uuid = null;
++        connection.disconnect(connection._removedId);
++        connection.disconnect(connection._updatedId);
++
++        if (connection._everAdded)
++            this._hideConnection(connection);
++    },
 +
++    _hideConnection: function(connection) {
 +        let section = connection._section;
 +        if (section == NMConnectionCategory.VPN) {
 +            this._vpnDevice.removeConnection(connection);
@@ -1752,10 +1811,12 @@ index 0000000..ecc80cc
 +            for (let i = 0; i < devices.length; i++)
 +                devices[i].removeConnection(connection);
 +        }
++        connection._everAdded = false;
 +    },
 +
 +    _updateConnection: function(connection) {
-+        this._connectionRemoved(connection);
++        if (connection._everAdded)
++            this._hideConnection(connection);
 +
 +        let connectionSettings = connection.get_setting_by_name(NetworkManager.SETTING_CONNECTION_SETTING_NAME);
 +        connection._type = connectionSettings.type;
@@ -1969,7 +2030,7 @@ index 0000000..ecc80cc
 +    }
 +};
 diff --git a/tools/build/gnome-shell.modules b/tools/build/gnome-shell.modules
-index 778db20..6ad230d 100644
+index 3f51fa2..73332b8 100644
 --- a/tools/build/gnome-shell.modules
 +++ b/tools/build/gnome-shell.modules
 @@ -9,6 +9,8 @@
@@ -1981,7 +2042,7 @@ index 778db20..6ad230d 100644
    <repository type="tarball" name="cairo.org"
        href="http://cairographics.org/"/>
    <repository type="tarball" name="0pointer.de"
-@@ -329,4 +331,19 @@
+@@ -367,4 +369,19 @@
      </dependencies>
  </autotools>
  
@@ -2002,4 +2063,4 @@ index 778db20..6ad230d 100644
 +  </autotools>
  </moduleset>
 -- 
-1.7.4
+1.7.4
\ No newline at end of file

diff --git a/gnome-base/gnome-shell/gnome-shell-2.91.91.ebuild b/gnome-base/gnome-shell/gnome-shell-2.91.91.ebuild
index f1ad0a0..4a3c9cf 100644
--- a/gnome-base/gnome-shell/gnome-shell-2.91.91.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-2.91.91.ebuild
@@ -31,7 +31,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9
 	>=x11-libs/gtk+-3.0.0:3[introspection]
 	>=media-libs/clutter-1.5.15[introspection]
 	>=gnome-base/gnome-desktop-2.91.2:3
-	>=gnome-base/gsettings-desktop-schemas-0.1.7.1
+	>=gnome-base/gsettings-desktop-schemas-2.91.91
 	>=gnome-extra/evolution-data-server-2.91.6
 	>=media-libs/gstreamer-0.10.16
 	>=media-libs/gst-plugins-base-0.10.16
@@ -65,7 +65,7 @@ RDEPEND="${COMMON_DEPEND}
 	>=gnome-base/dconf-0.4.1
 	>=gnome-base/libgnomekbd-2.91.4[introspection]
 	sys-power/upower[introspection]
-	
+
 	>=gnome-base/gnome-session-2.91.91
 
 	>=gnome-base/gnome-settings-daemon-2.91

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 5708018..f44e67b 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -32,7 +32,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9
 	>=x11-libs/gtk+-3.0.0:3[introspection]
 	>=media-libs/clutter-1.5.15[introspection]
 	>=gnome-base/gnome-desktop-2.91.2:3
-	>=gnome-base/gsettings-desktop-schemas-0.1.7.1
+	>=gnome-base/gsettings-desktop-schemas-2.91.91
 	>=gnome-extra/evolution-data-server-2.91.6
 	>=media-libs/gstreamer-0.10.16
 	>=media-libs/gst-plugins-base-0.10.16
@@ -55,8 +55,8 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9
 	x11-libs/startup-notification
 	x11-libs/libXfixes
 	x11-apps/mesa-progs
-	
-	nm-applet? ( >=net-misc/networkmanager-9999[introspection] )"
+
+	nm-applet? ( >=net-misc/networkmanager-0.8.996[introspection] )"
 # Runtime-only deps are probably incomplete and approximate.
 # Each block:
 # 1. Introspection stuff + dconf needed via imports.gi.*
@@ -68,13 +68,13 @@ RDEPEND="${COMMON_DEPEND}
 	>=gnome-base/dconf-0.4.1
 	>=gnome-base/libgnomekbd-2.91.4[introspection]
 	sys-power/upower[introspection]
-	
+
 	>=gnome-base/gnome-session-2.91.91
 
 	>=gnome-base/gnome-settings-daemon-2.91
 	>=gnome-base/gnome-control-center-2.91
 
-	nm-applet? ( >=gnome-extra/nm-applet-9999 )"
+	nm-applet? ( >=gnome-extra/nm-applet-0.8.996 )"
 DEPEND="${COMMON_DEPEND}
 	sys-devel/gettext
 	>=dev-util/pkgconfig-0.22
@@ -92,7 +92,7 @@ src_prepare() {
 		ewarn "Adding support for the experimental NetworkManager applet."
 		ewarn "This needs the latest NetworkManager & nm-applet trunk."
 		ewarn "Report bugs about this to 'nirbheek' on #gentoo-desktop @ FreeNode."
-		epatch "${FILESDIR}/${PN}-experimental-nm-applet-1.2.patch"
+		epatch "${FILESDIR}/${PN}-experimental-nm-applet-1.3.patch"
 	fi
 
 	epatch "${FILESDIR}/${PN}-fix-gnome-bluetooth.patch"



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-03-13 20:44 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-03-13 20:44 UTC (permalink / raw
  To: gentoo-commits

commit:     ad3be0a0c805e47a6e586d63e22cf45abd5fbac7
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Sun Mar 13 20:44:48 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Sun Mar 13 20:44:48 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=ad3be0a0

gnome-base/gnome-shell: update NMApplet patch

---
 ...> gnome-shell-experimental-nm-applet-1.4.patch} |  883 ++++++++++++--------
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |    2 +-
 2 files changed, 550 insertions(+), 335 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.3.patch b/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.4.patch
similarity index 77%
rename from gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.3.patch
rename to gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.4.patch
index 34190c3..35891ab 100644
--- a/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.3.patch
+++ b/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.4.patch
@@ -1,27 +1,31 @@
-From a4a93f5d68ea9ce6347125eaaf9640ed98654980 Mon Sep 17 00:00:00 2001
+From 8a361b46917b8a371c79e9ea0d9ce2520110c5a3 Mon Sep 17 00:00:00 2001
 From: Giovanni Campagna <gcampagna@src.gnome.org>
 Date: Tue, 25 Jan 2011 22:08:12 +0100
 Subject: [PATCH] Status area: add NetworkManager indicator
 
 Adds an implementation of nm-applet in javascript. Uses the new
 introspection from NetworkManager, and temporarily requires
-nm-applet to be running for the secret service and for wireless
-dialogs.
+nm-applet to be running for the secret service.
+Features a renewed interface, with each device controllable through
+a switch, which if toggled off disconnects, and if toggled on
+connects to the most recently used valid connection. More esoteric
+features like creation of ad-hoc networks have been moved to the
+control center panel.
 
 https://bugzilla.gnome.org/show_bug.cgi?id=621707
 ---
  data/theme/gnome-shell.css      |    8 +
  js/Makefile.am                  |    2 +
- js/misc/modemManager.js         |  103 +++
+ js/misc/modemManager.js         |  127 +++
  js/ui/panel.js                  |    3 +-
- js/ui/status/network.js         | 1841 +++++++++++++++++++++++++++++++++++++++
+ js/ui/status/network.js         | 2028 +++++++++++++++++++++++++++++++++++++++
  tools/build/gnome-shell.modules |   17 +
- 6 files changed, 1973 insertions(+), 1 deletions(-)
+ 6 files changed, 2184 insertions(+), 1 deletions(-)
  create mode 100644 js/misc/modemManager.js
  create mode 100644 js/ui/status/network.js
 
 diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
-index 22670bd..39bb7ab 100644
+index 4fd303a..06ef4b2 100644
 --- a/data/theme/gnome-shell.css
 +++ b/data/theme/gnome-shell.css
 @@ -158,6 +158,14 @@ StTooltip StLabel {
@@ -61,10 +65,10 @@ index 55bb111..a085bfc 100644
  	ui/status/bluetooth.js	\
 diff --git a/js/misc/modemManager.js b/js/misc/modemManager.js
 new file mode 100644
-index 0000000..b368511
+index 0000000..d019d50
 --- /dev/null
 +++ b/js/misc/modemManager.js
-@@ -0,0 +1,103 @@
+@@ -0,0 +1,127 @@
 +// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
 +const DBus = imports.dbus;
 +const Lang = imports.lang;
@@ -77,7 +81,7 @@ index 0000000..b368511
 +    name: 'org.freedesktop.ModemManager.Modem.Gsm.Network',
 +    methods: [
 +        { name: 'GetRegistrationInfo', inSignature: '', outSignature: 'uss' },
-+        { name: 'GetSignalQuality', inSignature: '', outSignature: 'u' },
++        { name: 'GetSignalQuality', inSignature: '', outSignature: 'u' }
 +    ],
 +    properties: [
 +        { name: 'AccessTechnology', signature: 'u', access: 'read' }
@@ -93,7 +97,7 @@ index 0000000..b368511
 +    name: 'org.freedesktop.ModemManager.Modem.Cdma',
 +    methods: [
 +        { name: 'GetSignalQuality', inSignature: '', outSignature: 'u' },
-+        { name: 'GetServingSystem', inSignature: '', outSignature: 'usu' },
++        { name: 'GetServingSystem', inSignature: '', outSignature: 'usu' }
 +    ],
 +    signals: [
 +        { name: 'SignalQuality', inSignature: 'u' }
@@ -125,14 +129,26 @@ index 0000000..b368511
 +                this.operator_name = null;
 +            this.emit('notify::operator-name');
 +        }));
-+        this._proxy.GetRegistrationInfoRemote(Lang.bind(this, function(status, code, name) {
++        this._proxy.GetRegistrationInfoRemote(Lang.bind(this, function(result, err) {
++            if (err) {
++                log(err);
++                return;
++            }
++
++            let [status, code, name] = result;
 +            if (name.length > 0)
 +                this.operator_name = name;
 +            else
 +                this.operator_name = null;
 +            this.emit('notify::operator-name');
 +        }));
-+        this._proxy.GetSignalQualityRemote(Lang.bind(this, function(quality) {
++        this._proxy.GetSignalQualityRemote(Lang.bind(this, function(result, err) {
++            if (err) {
++                // it will return an error if the device is not connected
++                return;
++            }
++
++            let [quality] = result;
 +            this.signal_quality = quality;
 +            this.emit('notify::signal-quality');
 +        }));
@@ -154,13 +170,25 @@ index 0000000..b368511
 +            this.signal_quality = quality;
 +            this.emit('notify::signal-quality');
 +        }));
-+        this._proxy.GetSignalQualityRemote(Lang.bind(this, function(proxy, quality) {
++        this._proxy.GetSignalQualityRemote(Lang.bind(this, function(result, err) {
++            if (err) {
++                // it will return an error if the device is not connected
++                return;
++            }
++            let [quality] = result;
 +            this.signal_quality = quality;
 +            this.emit('notify::signal-quality');
 +        }));
-+        this._proxy.GetServingSystemRemote(Lang.bind(this, function(proxy, status, name, code) {
++        this._proxy.GetServingSystemRemote(Lang.bind(this, function(result, err) {
++            if (err) {
++                // it will return an error if the device is not connected
++                return;
++            }
++
++            let [bandClass, band, id] = result;
 +            if (name.length > 0)
-+                this.operator_name = name;
++                // FIXME: the applet has a mapping of ids to names
++                this.operator_name = 'Mystery CDMA Provider ' + id;
 +            else
 +                this.operator_name = null;
 +            this.emit('notify::operator-name');
@@ -184,10 +212,10 @@ index c08c3e8..abe0fe2 100644
  if (Config.HAVE_BLUETOOTH)
 diff --git a/js/ui/status/network.js b/js/ui/status/network.js
 new file mode 100644
-index 0000000..9700896
+index 0000000..0e2d483
 --- /dev/null
 +++ b/js/ui/status/network.js
-@@ -0,0 +1,1841 @@
+@@ -0,0 +1,2028 @@
 +// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
 +const ByteArray = imports.byteArray;
 +const DBus = imports.dbus;
@@ -218,15 +246,6 @@ index 0000000..9700896
 +    VPN: 'vpn'
 +};
 +
-+const NMAppletIface = {
-+    name: 'org.gnome.network-manager-applet',
-+    methods: [
-+        { name: 'ConnectToHiddenNetwork', outSignature: '', inSignature: '' },
-+        { name: 'CreateWifiNetwork', outSignature: '', inSignature: '' },
-+    ]
-+};
-+const NMAppletProxy = DBus.makeProxyClass(NMAppletIface);
-+
 +function macToArray(string) {
 +    return string.split(':').map(function(el) {
 +        return parseInt(el, 16);
@@ -267,6 +286,10 @@ index 0000000..9700896
 +// shared between NMNetworkMenuItem and NMDeviceWireless
 +function sortAccessPoints(accessPoints) {
 +    return accessPoints.sort(function (one, two) {
++        if (one.flags != two.flags) {
++            // sort secure access point before open ones
++            return one.flags & NetworkManager['80211ApFlags'].PRIVACY ? -1 : 1;
++        }
 +        return two.strength - one.strength;
 +    });
 +}
@@ -342,6 +365,147 @@ index 0000000..9700896
 +    }
 +};
 +
++function NMDeviceTitleMenuItem() {
++    this._init.apply(this, arguments);
++}
++
++NMDeviceTitleMenuItem.prototype = {
++    __proto__: PopupMenu.PopupBaseMenuItem.prototype,
++
++    _init: function(description, params) {
++        PopupMenu.PopupBaseMenuItem.prototype._init.call(this, params);
++
++        this._descriptionLabel = new St.Label({ text: description,
++                                                style_class: 'popup-subtitle-menu-item'
++                                              });
++        this.addActor(this._descriptionLabel);
++
++        this._statusBin = new St.Bin();
++        this.addActor(this._statusBin, { align: St.Align.END });
++
++        this._statusLabel = new St.Label({ text: '',
++                                           style_class: 'popup-inactive-menu-item'
++                                         });
++        this._switch = new PopupMenu.Switch(false);
++        this._statusBin.child = this._switch.actor;
++    },
++
++    setStatus: function(text) {
++        if (text) {
++            this._statusLabel.text = text;
++            this._statusBin.child = this._statusLabel;
++            this.actor.reactive = false;
++            this.actor.can_focus = false;
++        } else {
++            this._statusBin.child = this._switch.actor;
++            this.actor.reactive = true;
++            this.actor.can_focus = true;
++        }
++    },
++
++    activate: function(event) {
++        if (this._switch.actor.mapped) {
++            this._switch.toggle();
++            this.emit('toggled', this._switch.state);
++        }
++
++        PopupMenu.PopupBaseMenuItem.prototype.activate.call(this, event);
++    },
++
++    get state() {
++        return this._switch.state;
++    },
++
++    setToggleState: function(newval) {
++        this._switch.setToggleState(newval);
++    }
++};
++
++function NMWiredSectionTitleMenuItem() {
++    this._init.apply(this, arguments);
++}
++
++NMWiredSectionTitleMenuItem.prototype = {
++    __proto__: NMDeviceTitleMenuItem.prototype,
++
++    updateForDevice: function(device) {
++        if (device) {
++            this._device = device;
++            this.setStatus(device.getStatusLabel());
++            this.setToggleState(device.connected);
++        } else
++            this.setStatus('');
++    },
++
++    activate: function(event) {
++        NMDeviceTitleMenuItem.prototype.activate.call(this, event);
++
++        if (!this._device) {
++            log ('Section title activated when there is more than one device, should be non reactive');
++            return;
++        }
++
++        if (this._switch.state)
++            this._device.activate();
++        else
++            this._device.deactivate();
++    }
++};
++
++function NMWirelessSectionTitleMenuItem() {
++    this._init.apply(this, arguments);
++}
++
++NMWirelessSectionTitleMenuItem.prototype = {
++    __proto__: NMDeviceTitleMenuItem.prototype,
++
++    _init: function(client, property, title, params) {
++        NMDeviceTitleMenuItem.prototype._init.call(this, title, params);
++
++        this._client = client;
++        this._property = property + '_enabled';
++        this._propertyHardware = property + '_hardware_enabled';
++        this._setEnabledFunc = property + '_set_enabled';
++
++        this._client.connect('notify::' + property + '-enabled', Lang.bind(this, this._propertyChanged));
++        this._client.connect('notify::' + property + '-hardware-enabled', Lang.bind(this, this._propertyChanged));
++
++        this._propertyChanged();
++    },
++
++    updateForDevice: function(device) {
++        // we show the switch
++        // - if there not just one device
++        // - if the switch is off
++        // - if the device is activated or disconnected
++        if (device && this._softwareEnabled && this._hardwareEnabled) {
++            let text = device.getStatusLabel();
++            this.setStatus(text);
++        } else
++            this.setStatus(null);
++    },
++
++    activate: function(event) {
++        NMDeviceTitleMenuItem.prototype.activate.call(this, event);
++
++        log ('setting enabled property, is ' + this._switch.state);
++        this._client[this._setEnabledFunc](this._switch.state);
++    },
++
++    _propertyChanged: function() {
++        this._softwareEnabled = this._client[this._property];
++        this._hardwareEnabled = this._client[this._propertyHardware];
++
++        let enabled = this._softwareEnabled && this._hardwareEnabled;
++        this.setToggleState(enabled);
++        if (!this._hardwareEnabled)
++            /* Translators: this indicates that wireless or wwan is disabled by hardware killswitch */
++            this.setStatus(_("disabled"));
++
++        this.emit('enabled-changed', enabled);
++    }
++};
++
 +function NMDevice() {
 +    throw new TypeError('Instantanting abstract class NMDevice');
 +}
@@ -368,20 +532,31 @@ index 0000000..9700896
 +                connection: connections[i],
 +                name: connections[i]._name,
 +                uuid: connections[i]._uuid,
++                timestamp: connections[i]._timestamp,
 +            };
 +            this._connections.push(obj);
 +        }
++        this._connections.sort(function(one, two) {
++            return two.timestamp - one.timestamp;
++        });
 +        this._activeConnection = null;
 +        this._activeConnectionItem = null;
-+        this._disconnectItem = null;
 +        this._autoConnectionItem = null;
-+        this._statusItem = null;
++        this._onlyOfCategory = false;
 +
 +        // private
 +        this._activeConnectionPosition = activeConnectionPosition || 0;
 +
-+        if (this.device)
-+            this.titleItem = new PopupMenu.PopupMenuItem(this.device._description, { reactive: false, style_class: 'popup-subtitle-menu-item' });
++        if (this.device) {
++            this.statusItem = new NMDeviceTitleMenuItem(this.device._description);
++            this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) {
++                if (state)
++                    this.activate();
++                else
++                    this.deactivate();
++                this.emit('enabled-changed');
++            }));
++        }
 +        this.section = new PopupMenu.PopupMenuSection();
 +
 +        this._createSection();
@@ -398,11 +573,35 @@ index 0000000..9700896
 +            this._stateChangedId = 0;
 +        }
 +
++        this._clearSection();
 +        if (this.titleItem)
 +            this.titleItem.destroy();
 +        this.section.destroy();
 +    },
 +
++    deactivate: function() {
++        this.device.disconnect(null);
++    },
++
++    activate: function() {
++        if (this._activeConnection)
++            // nothing to do
++            return;
++
++        // pick the most recently used connection and connect to that
++        // or if no connections ever set, create an automatic one
++        if (this._connections.length > 0) {
++            this._client.activate_connection(this._connections[0].connection.path, this.device, null, null);
++        } else if (this._autoConnectionName) {
++            let connection = this._createAutomaticConnection();
++            this._client.add_and_activate_connection(connection, this.device, null, null);
++        }
++    },
++
++    get connected() {
++        return this.device.state == NetworkManager.DeviceState.ACTIVATED;
++    },
++
 +    setActiveConnection: function(activeConnection) {
 +        if (activeConnection == this._activeConnection)
 +            // nothing to do
@@ -414,13 +613,8 @@ index 0000000..9700896
 +            this._activeConnectionItem = null;
 +        }
 +
-+        if (this._disconnectItem)  {
-+            this._disconnectItem.destroy();
-+            this._disconnectItem = null;
-+        }
-+
 +        let previousActive = this._activeConnection;
-+        this._activeConnection == null;
++        this._activeConnection = null;
 +
 +        if (previousActive && previousActive._connection) {
 +            // add the connection back as a normal one, by removing and adding it
@@ -441,9 +635,7 @@ index 0000000..9700896
 +            }
 +
 +            this._activeConnection = activeConnection;
-+            this._createActiveConnectionItems();
-+            if (this._disconnectItem)
-+                this.section.addMenuItem(this._disconnectItem, this._activeConnectionPosition);
++            this._createActiveConnectionItem();
 +            this.section.addMenuItem(this._activeConnectionItem, this._activeConnectionPosition);
 +        }
 +    },
@@ -459,26 +651,20 @@ index 0000000..9700896
 +            connection: connection,
 +            name: connection._name,
 +            uuid: connection._uuid,
++            timestamp: connection._timestamp,
 +        };
 +        this._connections.push(obj);
++        this._connections.sort(function(one, two) {
++            return two.timestamp - one.timestamp;
++        });
 +
-+        if (!this.device ||
-+            (this.device.state == NetworkManager.DeviceState.DISCONNECTED ||
-+             this.device.state == NetworkManager.DeviceState.ACTIVATED)) {
-+            // we're showing a connection list, so we need to append this one
-+            if (this._connections.length > 1) {
-+                // already showing real connections
-+                obj.item = this._createConnectionItem(obj);
-+                this.section.addMenuItem(obj.item);
-+            } else {
-+                // first connection in the list, destroy the automatic one
-+                this._clearSection();
-+                this._createSection();
-+            }
++        if (this._shouldShowConnectionList()) {
++            this._clearSection();
++            this._createSection();
 +        }
 +    },
 +
-+    removeConnection: function(connection, skipCreateAuto) {
++    removeConnection: function(connection, skipCreateMenu) {
 +        if (!connection._uuid) {
 +            log('Cannot remove a connection without an UUID');
 +            return;
@@ -494,7 +680,7 @@ index 0000000..9700896
 +            obj.item.destroy();
 +        this._connections.splice(pos, 1);
 +
-+        if (this._connections.length == 0 && !skipCreateAuto) {
++        if (this._connections.length == 0 && !skipCreateMenu) {
 +            // We need to show the automatic connection again
 +            this._clearSection();
 +            this._createSection();
@@ -505,6 +691,40 @@ index 0000000..9700896
 +        throw new TypeError('Invoking pure virtual function NMDevice.connectionValid');
 +    },
 +
++    setEnabled: function(enabled) {
++        // do nothing by default, we want to keep the conneciton list visible
++        // in the majority of cases (wired, wwan, vpn)
++    },
++
++    getStatusLabel: function() {
++        switch(this.device.state) {
++        case NetworkManager.DeviceState.DISCONNECTED:
++        case NetworkManager.DeviceState.ACTIVATED:
++            return null;
++        case NetworkManager.DeviceState.PREPARE:
++        case NetworkManager.DeviceState.CONFIG:
++        case NetworkManager.DeviceState.IP_CONFIG:
++            return _("connecting...");
++        case NetworkManager.DeviceState.NEED_AUTH:
++            /* Translators: this is for network connections that require some kind of key or password */
++            return _("authentication required");
++        case NetworkManager.DeviceState.UNAVAILABLE:
++            if ((this.device.capabilities & NetworkManager.DeviceCapabilities.CARRIER_DETECT) &&
++                !this.device.carrier)
++                /* Translators: this is for wired network devices that are physically disconnected */
++                return _("cable unplugged");
++            else
++                /* Translators: this is for a network device that cannot be activated (for example it
++                   is disabled by rfkill, or it has no coverage */
++                return _("unavailable");
++        case NetworkManager.DeviceState.FAILED:
++            return _("connection failed");
++        default:
++            log('Device state invalid, is %d'.format(this.device.state));
++            return 'invalid';
++        }
++    },
++
 +    // protected
 +    _createAutomaticConnection: function() {
 +        throw new TypeError('Invoking pure virtual function NMDevice.createAutomaticConnection');
@@ -524,36 +744,23 @@ index 0000000..9700896
 +        this.section.removeAll();
 +        this._autoConnectionItem = null;
 +        this._activeConnectionItem = null;
-+        this._disconnectItem = null;
-+        this._statusItem = null;
 +        for (let i = 0; i < this._connections.length; i++) {
 +            this._connections[i].item = null;
 +        }
 +    },
 +
++    _shouldShowConnectionList: function() {
++        return (this.device.state == NetworkManager.DeviceState.DISCONNECTED ||
++                this.device.state == NetworkManager.DeviceState.ACTIVATED);
++    },
++
 +    _createSection: function() {
-+        let status;
-+        if (!this.device ||
-+            (this.device.state == NetworkManager.DeviceState.DISCONNECTED ||
-+             this.device.state == NetworkManager.DeviceState.ACTIVATED))
-+            this._createConnectionList();
-+        else if (this.device.state != NetworkManager.DeviceState.UNMANAGED) {
-+            let title = this._getStatusLabel();
-+            this._statusItem = new PopupMenu.PopupMenuItem(title,
-+                                                           { reactive: false,
-+                                                             style_class: 'popup-inactive-menu-item'
-+                                                           });
-+            this.section.addMenuItem(this._statusItem);
-+        }
-+        // else do nothing, the menu should remain empty
-+    },
-+
-+    _createConnectionList: function() {
++        if (!this._shouldShowConnectionList())
++            return;
++
 +        if (this._activeConnection) {
-+            this._createActiveConnectionItems();
++            this._createActiveConnectionItem();
 +            this.section.addMenuItem(this._activeConnectionItem);
-+            if (this._disconnectItem)
-+                this.section.addMenuItem(this._disconnectItem);
 +        }
 +        if (this._connections.length > 0) {
 +            for(let j = 0; j < this._connections.length; ++j) {
@@ -583,20 +790,11 @@ index 0000000..9700896
 +        return item;
 +    },
 +
-+    _createActiveConnectionItems: function() {
++    _createActiveConnectionItem: function() {
 +        let title;
 +        let active = this._activeConnection._connection;
-+        this._disconnectItem = null;
 +        if (active) {
 +            title = active._name;
-+            this._disconnectItem = new PopupMenu.PopupMenuItem(_("Disconnect"));
-+            this._disconnectItem.connect('activate', Lang.bind(this, function() {
-+                /* The correct approach would be
-+                   this.client.deactivate_connection(this._activeConnection);
-+                   but with this, NM insists in restarting the connection immediately
-+                */
-+                this.device.disconnect(null);
-+            }));
 +        } else {
 +            /* TRANSLATORS: this is the indication that a connection for another logged in user is active,
 +               and we cannot access its settings (including the name) */
@@ -606,33 +804,6 @@ index 0000000..9700896
 +        this._activeConnectionItem.setShowDot(true);
 +    },
 +
-+    // private
-+    _getStatusLabel: function() {
-+        switch(this.device.state) {
-+        case NetworkManager.DeviceState.DISCONNECTED:
-+        case NetworkManager.DeviceState.ACTIVATED:
-+            log('Attempt to show status for a disconnected / activate device, should be showing connection list instead');
-+            return 'invalid';
-+        case NetworkManager.DeviceState.PREPARE:
-+        case NetworkManager.DeviceState.CONFIG:
-+        case NetworkManager.DeviceState.IP_CONFIG:
-+            return _("connecting...");
-+        case NetworkManager.DeviceState.NEED_AUTH:
-+            return _("authentication required");
-+        case NetworkManager.DeviceState.UNAVAILABLE:
-+            if ((this.device.capabilities & NetworkManager.DeviceCapabilities.CARRIER_DETECT) &&
-+                !this.device.carrier)
-+                return _("network cable unplugged");
-+            else
-+                return _("network unavailable");
-+        case NetworkManager.DeviceState.FAILED:
-+            return _("connection failed");
-+        default:
-+            log('Device state invalid, is %d'.format(this.device.state));
-+            return 'invalid';
-+        }
-+    },
-+
 +    deviceStateChanged: function(device, newstate, oldstate, reason) {
 +        if (newstate == oldstate) {
 +            log('device emitted state-changed without actually changing state');
@@ -644,10 +815,6 @@ index 0000000..9700896
 +        }
 +
 +        switch(newstate) {
-+        case NetworkManager.DeviceState.UNMANAGED:
-+            // clear everything and be quiet
-+            this._clearSection();
-+            return;
 +        case NetworkManager.DeviceState.NEED_AUTH:
 +            // FIXME: make this have a real effect
 +            // (currently we rely on a running nm-applet)
@@ -658,17 +825,12 @@ index 0000000..9700896
 +            break;
 +        }
 +
-+        if (newstate != NetworkManager.DeviceState.DISCONNECTED &&
-+            newstate != NetworkManager.DeviceState.ACTIVATED &&
-+            this._statusItem) {
-+            // a transition between states that show the status label
-+            this._statusItem.label.text = this._getStatusLabel();
-+            return;
-+        }
++        this.statusItem.setStatus(this.getStatusLabel());
++        this.statusItem.setToggleState(this.connected);
 +
-+        // just refresh everything
 +        this._clearSection();
 +        this._createSection();
++        this.emit('state-changed');
 +    }
 +};
 +Signals.addSignalMethods(NMDevice.prototype);
@@ -710,6 +872,15 @@ index 0000000..9700896
 +            autoconnect: true
 +        }));
 +        return connection;
++    },
++
++    _updateStatusItem: function() {
++        // ignore device state here, when there's only one device
++        // it will be taken care by NMApplet
++        if (this._onlyOfCategory)
++            this.statusItem.actor.hide();
++        else
++            this.statusItem.actor.show();
 +    }
 +};
 +
@@ -723,11 +894,12 @@ index 0000000..9700896
 +    _init: function(client, device, connections) {
 +        let is_wwan = false;
 +
++        this._enabled = true;
 +        this.mobileDevice = null;
-+        this._connecitonType = 'ppp';
++        this._connectionType = 'ppp';
 +
 +        // FIXME: listen for this property changing and recreate modem stuff
-+        this._capabilities = device.current_capabilites;
++        this._capabilities = device.current_capabilities;
 +        if (this._capabilities & NetworkManager.DeviceModemCapabilities.GSM_UMTS) {
 +            is_wwan = true;
 +            this.mobileDevice = new ModemManager.ModemGsm(device.udi);
@@ -736,7 +908,7 @@ index 0000000..9700896
 +            is_wwan = true;
 +            this.mobileDevice = new ModemManager.ModemCdma(device.udi);
 +            this._connectionType = NetworkManager.SETTING_CDMA_SETTING_NAME;
-+        } else if (this._capabilites & NetworkManager.DeviceModemCapabilities.LTE) {
++        } else if (this._capabilities & NetworkManager.DeviceModemCapabilities.LTE) {
 +            is_wwan = true;
 +            // FIXME: support signal quality
 +        }
@@ -770,9 +942,32 @@ index 0000000..9700896
 +        NMDevice.prototype._init.call(this, client, device, connections, 1);
 +    },
 +
++    setEnabled: function(enabled) {
++        this._enabled = enabled;
++        if (this.category == NMConnectionCategory.WWAN) {
++            if (enabled) {
++                // prevent "network unavailable" statuses
++                this.statusItem.setStatus(null);
++            } else
++                this.statusItem.setStatus(this.getStatusLabel());
++        }
++
++        NMDevice.prototype.setEnabled.call(this, enabled);
++    },
++
++    get connected() {
++        return this._enabled && this.device.state == NetworkManager.DeviceState.CONNECTED;
++    },
++
 +    destroy: function() {
-+        if (this.mobileDevice)
-+            this.mobileDevice.disconnectAll();
++        if (this._operatorNameId) {
++            this.mobileDevice.disconnect(this._operatorNameId);
++            this._operatorNameId = 0;
++        }
++        if (this._signalQualityId) {
++            this.mobileDevice.disconnect(this._signalQualityId);
++            this._signalQualityId = 0;
++        }
 +
 +        NMDevice.prototype.destroy.call(this);
 +    },
@@ -885,6 +1080,23 @@ index 0000000..9700896
 +
 +    get empty() {
 +        return this._connections.length == 0;
++    },
++
++    get connected() {
++        return true;
++    },
++
++    _shouldShowConnectionList: function() {
++        return true;
++    },
++
++    deactivate: function() {
++        if (this._activeConnection)
++            this._client.deactivate_connection(this._activeConnection);
++    },
++
++    getStatusLabel: function() {
++        return null;
 +    }
 +};
 +
@@ -957,6 +1169,59 @@ index 0000000..9700896
 +        NMDevice.prototype.destroy.call(this);
 +    },
 +
++    setEnabled: function(enabled) {
++        if (enabled) {
++            this.statusItem.actor.show();
++            this.section.actor.show();
++        } else {
++            this.statusItem.actor.hide();
++            this.section.actor.hide();
++        }
++    },
++
++    activate: function() {
++        if (this._activeConnection)
++            // nothing to do
++            return;
++
++        // among all visible networks, pick the last recently used connection
++        let best = null;
++        let bestApObj = null;
++        let bestTime = 0;
++        for (let i = 0; i < this._networks.length; i++) {
++            let apObj = this._networks[i];
++            for (let j = 0; j < apObj.connections.length; j++) {
++                let connection = apObj.connections[j];
++                if (connection._timestamp > bestTime) {
++                    best = connection;
++                    bestTime = connection._timestamp;
++                    bestApObj = apObj;
++                }
++            }
++        }
++
++        if (best) {
++            for (let i = 0; i < bestApObj.accessPoints.length; i++) {
++                let ap = bestApObj.accessPoints[i];
++                if (this._connectionValidForAP(best, ap)) {
++                    this._client.activate_connection(best.path, this.device, ap.dbus_path, null);
++                    break;
++                }
++            }
++            return;
++        }
++
++        // XXX: what else to do?
++        // for now, just pick a random network
++        // (this function is called in a corner case anyway, that is, only when
++        // the user toggles the switch and has more than one wireless device)
++        if (this._networks.length > 0) {
++            let connection = this._createAutomaticConnection(this._networks[0]);
++            let accessPoints = sortAccessPoints(this._networks[0].accessPoints);
++            this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null);
++        }
++    },
++
 +    _findNetwork: function(ssid) {
 +        for (let i = 0; i < this._networks.length; i++) {
 +            if (ssidCompare(this._networks[i].ssid, ssid))
@@ -995,12 +1260,9 @@ index 0000000..9700896
 +            }
 +        }
 +
-+        if (this.device.state == NetworkManager.DeviceState.DISCONNECTED ||
-+            this.device.state == NetworkManager.DeviceState.ACTIVATED) {
-+            // update everything (it would be too complicated to update just what has changed)
-+            this._clearSection();
-+            this._createConnectionList();
-+        }
++        // update everything
++        this._clearSection();
++        this._createSection();
 +    },
 +
 +    _accessPointRemoved: function(device, accessPoint) {
@@ -1133,7 +1395,7 @@ index 0000000..9700896
 +
 +        if (forceupdate || (anyauto && !skipCreateAuto)) {
 +            this._clearSection();
-+            this._createConnectionList();
++            this._createSection();
 +        }
 +    },
 +
@@ -1226,7 +1488,7 @@ index 0000000..9700896
 +        return wirelessSettings.ap_security_compatible(wirelessSecuritySettings, ap.flags, ap.wpa_flags, ap.rsn_flags, ap.mode);
 +    },
 +
-+    _createActiveConnectionItems: function() {
++    _createActiveConnectionItem: function() {
 +        let activeAp = this.device.active_access_point;
 +        let icon, title;
 +        if (this._activeConnection._connection) {
@@ -1238,10 +1500,6 @@ index 0000000..9700896
 +                this._activeConnectionItem = new PopupMenu.PopupImageMenuItem(connection._name,
 +                                                                              'network-wireless-connected',
 +                                                                              { reactive: false });
-+            this._disconnectItem = new PopupMenu.PopupMenuItem(_("Disconnect"));
-+            this._disconnectItem.connect('activate', Lang.bind(this, function() {
-+                this.device.disconnect(null);
-+            }));
 +        } else {
 +            // We cannot read the connection (due to ACL, or API incompatibility), but we still show signal if we have it
 +            let menuItem;
@@ -1256,12 +1514,33 @@ index 0000000..9700896
 +        this._activeConnectionItem.setShowDot(true);
 +    },
 +
-+    _createConnectionList: function() {
++    _createAutomaticConnection: function(apObj) {
++        let name;
++        let ssid = NetworkManager.utils_ssid_to_utf8(apObj.ssid);
++        if (ssid) {
++            /* TRANSLATORS: this the automatic wireless connection name (including the network name) */
++            name = _("Auto %s").format(ssid);
++        } else
++            name = _("Auto wireless");
++
++        let connection = new NetworkManager.Connection();
++        connection.add_setting(new NetworkManager.SettingWireless());
++        connection.add_setting(new NetworkManager.SettingConnection({
++            id: name,
++            autoconnect: true, // NetworkManager will know to ignore this if appropriate
++            uuid: NetworkManager.utils_uuid_generate(),
++            type: NetworkManager.SETTING_WIRELESS_SETTING_NAME
++        }));
++        return connection;
++    },
++
++    _createSection: function() {
++        if (!this._shouldShowConnectionList())
++            return;
++
 +        if(this._activeConnection) {
-+            this._createActiveConnectionItems();
++            this._createActiveConnectionItem();
 +            this.section.addMenuItem(this._activeConnectionItem);
-+            if (this._disconnectItem)
-+                this.section.addMenuItem(this._disconnectItem);
 +        }
 +
 +        let activeAp = this.device.active_access_point;
@@ -1269,6 +1548,9 @@ index 0000000..9700896
 +        // that comes from NetworkManager
 +        let activeApSsid = activeAp ? activeAp.get_ssid() : null;
 +
++        // we want five access points in the menu, including the active one
++        let numItems = this._activeConnection ? 4 : 5;
++
 +        for(let j = 0; j < this._networks.length; j++) {
 +            let apObj = this._networks[j];
 +            if(activeAp && ssidCompare(apObj.ssid, activeApSsid))
@@ -1289,29 +1571,13 @@ index 0000000..9700896
 +                apObj.item = new NMNetworkMenuItem(apObj.accessPoints);
 +                apObj.item._apObj = apObj;
 +                apObj.item.connect('activate', Lang.bind(this, function() {
-+                    let name;
-+                    let ssid = NetworkManager.utils_ssid_to_utf8(apObj.ssid);
-+                    if (ssid) {
-+                        /* TRANSLATORS: this the automatic wireless connection name (including the network name) */
-+                        name = _("Auto %s").format(ssid);
-+                    } else
-+                        name = _("Auto wireless");
-+
-+                    let connection = new NetworkManager.Connection();
-+                    connection.add_setting(new NetworkManager.SettingWireless());
-+                    connection.add_setting(new NetworkManager.SettingConnection({
-+                        id: name,
-+                        autoconnect: true, // NetworkManager will know to ignore this if appropriate
-+                        uuid: NetworkManager.utils_uuid_generate(),
-+                        type: NetworkManager.SETTING_WIRELESS_SETTING_NAME
-+                    }));
-+
++                    let connection = this._createAutomaticConnection(apObj);
 +                    let accessPoints = sortAccessPoints(apObj.accessPoints);
 +                    this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null)
 +                }));
 +            }
 +
-+            if (j <= 5)
++            if (j < numItems)
 +                this.section.addMenuItem(apObj.item);
 +            else {
 +                if (!this._overflowItem) {
@@ -1334,7 +1600,6 @@ index 0000000..9700896
 +        PanelMenu.SystemStatusButton.prototype._init.call(this, 'network-error');
 +
 +        this._client = NMClient.Client.new();
-+        this._nmApplet = new NMAppletProxy(DBus.session, 'org.gnome.network-manager-applet', '/org/gnome/network-manager-applet');
 +
 +        this._statusSection = new PopupMenu.PopupMenuSection();
 +        this._statusItem = new PopupMenu.PopupMenuItem('', { style_class: 'popup-inactive-menu-item', reactive: false });
@@ -1343,62 +1608,53 @@ index 0000000..9700896
 +            this._client.networking_enabled = true;
 +        }));
 +        this._statusSection.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
++        this._statusSection.actor.hide();
 +        this.menu.addMenuItem(this._statusSection);
 +
-+        this._deviceSections = [ ];
++        this._devices = { };
 +
-+        this._wiredSection = new PopupMenu.PopupMenuSection();
-+        this._wiredItem = new PopupMenu.PopupMenuItem(_("Wired networks"),
-+                                                      { style_class: 'popup-subtitle-menu-item', reactive: false });
-+        this._wiredDevices = [ ];
-+
-+        this._wiredSection.addMenuItem(this._wiredItem);
-+        this._wiredSection.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
-+        this._wiredSection.actor.hide();
-+        this._deviceSections.push(this._wiredSection);
-+        this.menu.addMenuItem(this._wiredSection);
-+
-+        this._wirelessSection = new PopupMenu.PopupMenuSection();
-+        this._wirelessDevices = [ ];
-+        this._makeToggleItem('wireless', _("Wireless networks"));
-+        this._wirelessSection.addMenuItem(this._wirelessItem);
++        this._devices.wired = {
++            section: new PopupMenu.PopupMenuSection(),
++            devices: [ ],
++            item: new NMWiredSectionTitleMenuItem(_("Wired"))
++        };
 +
-+        let newAdhocWireless = new PopupMenu.PopupMenuItem(_("Create new wireless network..."));
-+        newAdhocWireless.connect('activate', Lang.bind(this, function() {
-+            this._nmApplet.CreateWirelessNetworkRemote();
-+        }));
-+        this._wirelessSection.addMenuItem(newAdhocWireless);
++        this._devices.wired.section.addMenuItem(this._devices.wired.item);
++        this._devices.wired.section.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
++        this._devices.wired.section.actor.hide();
++        this.menu.addMenuItem(this._devices.wired.section);
 +
-+        let newHiddenWireless = new PopupMenu.PopupMenuItem(_("Other networks..."));
-+        newHiddenWireless.connect('activate', Lang.bind(this, function() {
-+            this._nmApplet.ConnectToHiddenNetworkRemote();
-+        }));
-+        this._wirelessSection.addMenuItem(newHiddenWireless);
-+
-+        this._wirelessSection.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
-+        this._wirelessSection.actor.hide();
-+        this._deviceSections.push(this._wirelessSection);
-+        this.menu.addMenuItem(this._wirelessSection);
-+
-+        this._wwanSection = new PopupMenu.PopupMenuSection();
-+        this._wwanDevices = [ ];
-+        this._makeToggleItem('wwan', _("Mobile broadband"));
-+        this._wwanSection.addMenuItem(this._wwanItem);
-+        this._wwanSection.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
-+
-+        this._wwanSection.actor.hide();
-+        this._deviceSections.push(this._wwanSection);
-+        this.menu.addMenuItem(this._wwanSection);
-+
-+        this._vpnDevice = new NMDeviceVPN();
-+        this._vpnItem = new PopupMenu.PopupMenuItem(_("VPN Connections"),
-+                                                    { style_class: 'popup-subtitle-menu-item', reactive: false });
-+        this._vpnSection = new PopupMenu.PopupMenuSection();
-+        this._vpnSection.addMenuItem(this._vpnItem);
-+        this._vpnSection.addMenuItem(this._vpnDevice.section);
-+        this._vpnSection.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
-+        this._deviceSections.push(this._vpnSection);
-+        this.menu.addMenuItem(this._vpnSection);
++        this._devices.wireless = {
++            section: new PopupMenu.PopupMenuSection(),
++            devices: [ ],
++            item: this._makeToggleItem('wireless', _("Wireless"))
++        };
++        this._devices.wireless.section.addMenuItem(this._devices.wireless.item);
++        this._devices.wireless.section.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
++        this._devices.wireless.section.actor.hide();
++        this.menu.addMenuItem(this._devices.wireless.section);
++
++        this._devices.wwan = {
++            section: new PopupMenu.PopupMenuSection(),
++            devices: [ ],
++            item: this._makeToggleItem('wwan', _("Mobile broadband"))
++        };
++        this._devices.wwan.section.addMenuItem(this._devices.wwan.item);
++        this._devices.wwan.section.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
++        this._devices.wwan.section.actor.hide();
++        this.menu.addMenuItem(this._devices.wwan.section);
++
++        this._devices.vpn = {
++            section: new PopupMenu.PopupMenuSection(),
++            device: new NMDeviceVPN(this._client),
++            item: new NMWiredSectionTitleMenuItem(_("VPN Connections"))
++        };
++        this._devices.vpn.item.updateForDevice(this._devices.vpn.device);
++        this._devices.vpn.section.addMenuItem(this._devices.vpn.item);
++        this._devices.vpn.section.addMenuItem(this._devices.vpn.device.section);
++        this._devices.vpn.section.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
++        this._devices.vpn.section.actor.hide();
++        this.menu.addMenuItem(this._devices.vpn.section);
 +
 +        this.menu.addAction(_("Network Settings"), function() {
 +            Util.spawnDesktop('gnome-network-panel');
@@ -1465,44 +1721,38 @@ index 0000000..9700896
 +    },
 +
 +    _makeToggleItem: function(type, title) {
-+        let enabledKey = type + '_enabled';
-+        let hardwareKey = type + '_hardware_enabled';
-+        let devicesKey = '_' + type + 'Devices';
-+        let setEnabledFunc = type + '_set_enabled';
-+
-+        let item = new PopupMenu.PopupSwitchMenuItem(title, false, { style_class: 'popup-subtitle-menu-item' });
-+        item.connect('toggled', Lang.bind(this, function(item, state) {
-+            this._client[setEnabledFunc](state);
++        let item = new NMWirelessSectionTitleMenuItem(this._client, type, title);
++        item.connect('enabled-changed', Lang.bind(this, function(item, enabled) {
++            let devices = this._devices[type].devices;
++            devices.forEach(function(dev) {
++                dev.setEnabled(enabled);
++            });
++            this._syncSectionTitle(type);
 +        }));
++        return item;
++    },
 +
-+        let handler = Lang.bind(this, function() {
-+            let software = this._client[enabledKey];
-+            let hardware = this._client[hardwareKey];
-+
-+            let enabled = software && hardware;
-+            item.setToggleState(enabled);
-+            item.actor.reactive = hardware;
-+            item.actor.can_focus = hardware;
-+
-+            let devices = this[devicesKey];
-+            for (let i = 0; i < devices.length; i++) {
-+                if (enabled) {
-+                    if (devices.length > 1)
-+                        devices[i].titleItem.actor.show();
-+                    else
-+                        devices[i].titleItem.actor.hide();
-+                    devices[i].section.actor.show();
-+                } else {
-+                    devices[i].titleItem.actor.hide();
-+                    devices[i].section.actor.hide();
-+                }
-+            }
++    _syncSectionTitle: function(category) {
++        let devices = this._devices[category].devices;
++        let managedDevices = devices.filter(function(dev) {
++            return dev.device.state != NetworkManager.DeviceState.UNMANAGED;
 +        });
-+
-+        this._client.connect('notify::' + type + '-enabled', handler);
-+        this._client.connect('notify::' + type + '-hardware-enabled', handler);
-+        this['_' + type + 'Item'] = item;
-+        handler();
++        let item = this._devices[category].item;
++        let section = this._devices[category].section;
++        if (managedDevices.length == 0)
++            section.actor.hide();
++        else {
++            section.actor.show();
++            if (managedDevices.length == 1) {
++                let dev = managedDevices[0];
++                dev.statusItem.actor.hide();
++                item.updateForDevice(dev);
++            } else {
++                managedDevices.forEach(function(dev) {
++                    dev.statusItem.actor.show();
++                });
++            }
++        }
 +    },
 +
 +    _readDevices: function() {
@@ -1525,8 +1775,7 @@ index 0000000..9700896
 +            let wrapper = new wrapperClass(this._client, device, this._connections);
 +            // FIXME: these notifications are duplicate with those exposed by nm-applet
 +            // uncomment this code in 3.2, when we'll conflict with and kill nm-applet
-+            /*
-+            wrapper._networkLostId = wrapper.connect('network-lost', Lang.bind(this, function() {
++            /* wrapper._networkLostId = wrapper.connect('network-lost', Lang.bind(this, function(emitter) {
 +                this._ensureSource();
 +                let icon = new St.Icon({ icon_name: 'network-offline',
 +                                         icon_type: St.IconType.SYMBOLIC,
@@ -1552,25 +1801,23 @@ index 0000000..9700896
 +                                                                _("Activation of network connection failed"),
 +                                                                { icon: icon });
 +                this._source.notify(notification);
++            })); */
++            wrapper._stateChangedId = wrapper.connect('state-changed', Lang.bind(this, function(dev) {
++                this._syncSectionTitle(dev.category);
 +            }));
 +            wrapper._destroyId = wrapper.connect('destroy', function(wrapper) {
-+                wrapper.disconnect(wrapper._networkLostId);
-+                wrapper.disconnect(wrapper._activationFailedId);
-+            }); */
-+            let section = this['_' + wrapper.category + 'Section'];
-+            let devices = this['_' + wrapper.category + 'Devices'];
++                //wrapper.disconnect(wrapper._networkLostId);
++                //wrapper.disconnect(wrapper._activationFailedId);
++                wrapper.disconnect(wrapper._stateChangedId);
++            }); 
++            let section = this._devices[wrapper.category].section;
++            let devices = this._devices[wrapper.category].devices;
 +
 +            section.addMenuItem(wrapper.section, 1);
-+            section.addMenuItem(wrapper.titleItem, 1);
++            section.addMenuItem(wrapper.statusItem, 1);
 +            devices.push(wrapper);
 +
-+            // sync the visibility of titleItems
-+            for (let i = 0; i < devices.length; i++) {
-+                if (devices.length > 1)
-+                    devices[i].titleItem.actor.show();
-+                else
-+                    devices[i].titleItem.actor.hide();
-+            }
++            this._syncSectionTitle(wrapper.category);
 +        } else
 +            log('Invalid network device type, is ' + device.get_device_type());
 +    },
@@ -1584,19 +1831,11 @@ index 0000000..9700896
 +        let wrapper = device._delegate;
 +        wrapper.destroy();
 +
-+        let section = this['_' + wrapper.category + 'Section'];
-+        let devices = this['_' + wrapper.category + 'Devices'];
-+
++        let devices = this._devices[wrapper.category].devices;
 +        let pos = devices.indexOf(wrapper);
 +        devices.splice(pos, 1);
 +
-+        // sync the visibility of titleItems
-+        for (let i = 0; i < devices.length; i++) {
-+            if (devices.length > 1)
-+                devices[i].titleItem.show();
-+            else
-+                devices[i].titleItem.hide();
-+        }
++        this._syncSectionTitle(wrapper.category)
 +    },
 +
 +    _syncActiveConnections: function() {
@@ -1610,8 +1849,6 @@ index 0000000..9700896
 +
 +        for (let i = 0; i < closedConnections.length; i++) {
 +            let active = closedConnections[i];
-+            if (active._connection)
-+                active._connection._active = null;
 +            if (active._primaryDevice)
 +                active._primaryDevice.setActiveConnection(null);
 +            if (active._notifyStateId)
@@ -1660,9 +1897,6 @@ index 0000000..9700896
 +                }
 +            }
 +
-+            if (a._connection)
-+                a._connection._active = this;
-+
 +            if (a['default'])
 +                default_ip4 = a;
 +            if (a.default6)
@@ -1703,6 +1937,7 @@ index 0000000..9700896
 +    _notifyActiveConnection: function(active) {
 +        // FIXME: duplicate notifications when nm-applet is running
 +        // This code will come back when nm-applet is killed
++        this._syncNMState();
 +        return;
 +
 +        if (active.state == NetworkManager.ActiveConnectionState.ACTIVATED) {
@@ -1792,22 +2027,22 @@ index 0000000..9700896
 +        if (pos != -1)
 +            this._connections.splice(connection);
 +
++        if (connection._everAdded)
++            this._hideConnection(connection);
++
 +        connection._uuid = null;
 +        connection.disconnect(connection._removedId);
 +        connection.disconnect(connection._updatedId);
-+
-+        if (connection._everAdded)
-+            this._hideConnection(connection);
 +    },
 +
 +    _hideConnection: function(connection) {
 +        let section = connection._section;
 +        if (section == NMConnectionCategory.VPN) {
-+            this._vpnDevice.removeConnection(connection);
-+            if (this._vpnDevice.empty)
-+                this._vpnSection.actor.hide();
++            this._devices.vpn.device.removeConnection(connection);
++            if (this._devices.vpn.device.empty)
++                this._devices.vpn.section.actor.hide();
 +        } else {
-+            let devices = this['_' + section + 'Devices'];
++            let devices = this._devices[section].devices;
 +            for (let i = 0; i < devices.length; i++)
 +                devices[i].removeConnection(connection);
 +        }
@@ -1823,14 +2058,15 @@ index 0000000..9700896
 +        connection._section = this._ctypes[connection._type];
 +        connection._name = connectionSettings.id;
 +        connection._uuid = connectionSettings.uuid;
++        connection._timestamp = connectionSettings.timestamp;
 +
 +        let section = connection._section;
 +        if (section == NMConnectionCategory.VPN) {
-+            this._vpnDevice.addConnection(connection);
-+            this._vpnSection.actor.show();
++            this._devices.vpn.device.addConnection(connection);
++            this._devices.vpn.section.actor.show();
 +            connection._everAdded = true;
 +        } else {
-+            let devices = this['_' + section + 'Devices'];
++            let devices = this._devices[section].devices;
 +            for (let i = 0; i < devices.length; i++) {
 +                if (devices[i].connectionValid(connection)) {
 +                    devices[i].addConnection(connection);
@@ -1841,34 +2077,25 @@ index 0000000..9700896
 +    },
 +
 +    _hideDevices: function() {
-+        for (let i = 0; i < this._deviceSections.length; i++) {
-+            let item = this._deviceSections[i];
-+            item.actor.hide();
-+        }
++        this._devicesHidden = true;
++
++        for (let category in this._devices)
++            this._devices[category].section.actor.hide();
 +    },
 +
 +    _showNormal: function() {
-+        this._statusSection.actor.hide();
-+
-+        if (this._wiredDevices.length > 0)
-+            this._wiredSection.actor.show();
-+        else
-+            this._wiredSection.actor.hide();
++        if (!this._devicesHidden) // nothing to do
++            return;
++        this._devicesHidden = false;
 +
-+        if (this._wirelessDevices.length > 0)
-+            this._wirelessSection.actor.show();
-+        else
-+            this._wirelessSection.actor.hide();
++        this._statusSection.actor.hide();
 +
-+        if (this._wwanDevices.length > 0)
-+            this._wwanSection.actor.show();
-+        else
-+            this._wwanSection.actor.hide();
++        this._syncSectionTitle('wired');
++        this._syncSectionTitle('wireless');
++        this._syncSectionTitle('wwan');
 +
-+        if (!this._vpnDevice.empty)
-+            this._vpnSection.actor.show();
-+        else
-+            this._vpnSection.actor.hide();
++        if (!this._devices.vpn.device.empty)
++            this._devices.vpn.section.actor.show();
 +    },
 +
 +    _syncNMState: function() {
@@ -1898,15 +2125,9 @@ index 0000000..9700896
 +        let hasApIcon = false;
 +        let hasMobileIcon = false;
 +
-+        switch (this._client.state) {
-+        case NetworkManager.State.DISCONNECTED:
++        if (!mc) {
 +            this.setIcon('network-offline');
-+            break;
-+        case NetworkManager.State.CONNECTING:
-+            if (!mc || mc.state != NetworkManager.ActiveConnectionState.ACTIVATING) {
-+                log('NetworkManager is connecting, but we have no ActiveConnection activating');
-+                break;
-+            }
++        } else if (mc.state == NetworkManager.ActiveConnectionState.ACTIVATING) {
 +            switch (mc._section) {
 +            case NMConnectionCategory.WWAN:
 +                this.setIcon('network-cellular-acquiring');
@@ -1925,14 +2146,7 @@ index 0000000..9700896
 +                this.setIcon('network-error');
 +                log('Invalid active connection type ' + mc._section);
 +            }
-+            break;
-+        case NetworkManager.State.CONNECTED_LOCAL:
-+        case NetworkManager.State.CONNECTED_SITE:
-+        case NetworkManager.State.CONNECTED_GLOBAL:
-+            if (!mc) {
-+                log('NetworkManager is connected, but reports no active connection');
-+                break;
-+            }
++        } else {
 +            let dev;
 +            switch (mc._section) {
 +            case NMConnectionCategory.WIRELESS:
@@ -1964,7 +2178,7 @@ index 0000000..9700896
 +                    break;
 +                }
 +            case NMConnectionCategory.WIRED:
-+                this.setIcon('network-wired-symbolic');
++                this.setIcon('network-wired');
 +                break;
 +            case NMConnectionCategory.WWAN:
 +                if (mc._type == NetworkManager.SETTING_BLUETOOTH_SETTING_NAME) {
@@ -1974,6 +2188,10 @@ index 0000000..9700896
 +                }
 +
 +                dev = mc._primaryDevice;
++                if (!dev) {
++                    log('Active connection with no primary device?');
++                    break;
++                }
 +                if (this._mobileUpdateId && this._mobileUpdateDevice != dev) {
 +                    this._mobileUpdateDevice.disconnect(this._mobileUpdateId);
 +                    this._mobileUpdateDevice = dev.mobileDevice;
@@ -1992,9 +2210,6 @@ index 0000000..9700896
 +                this.setIcon('network-error');
 +                break;
 +            }
-+            break;
-+        default:
-+            log('NetworkManager is in an invalid state: ' + this._client.state);
 +        }
 +
 +        // cleanup stale signal connections

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index f44e67b..56f0b5b 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -92,7 +92,7 @@ src_prepare() {
 		ewarn "Adding support for the experimental NetworkManager applet."
 		ewarn "This needs the latest NetworkManager & nm-applet trunk."
 		ewarn "Report bugs about this to 'nirbheek' on #gentoo-desktop @ FreeNode."
-		epatch "${FILESDIR}/${PN}-experimental-nm-applet-1.3.patch"
+		epatch "${FILESDIR}/${PN}-experimental-nm-applet-1.4.patch"
 	fi
 
 	epatch "${FILESDIR}/${PN}-fix-gnome-bluetooth.patch"



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-03-15 13:08 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-03-15 13:08 UTC (permalink / raw
  To: gentoo-commits

commit:     cea097bc38229ab72bfd32fd6ea8b2161304c63f
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Tue Mar 15 12:03:41 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Tue Mar 15 12:03:41 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=cea097bc

gnome-base/gnome-shell: update nm-applet patch

---
 ...> gnome-shell-experimental-nm-applet-1.5.patch} | 1489 +++++++++++++++++---
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |    9 +-
 2 files changed, 1332 insertions(+), 166 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.4.patch b/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.5.patch
similarity index 65%
rename from gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.4.patch
rename to gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.5.patch
index 35891ab..d32aca4 100644
--- a/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.4.patch
+++ b/gnome-base/gnome-shell/files/gnome-shell-experimental-nm-applet-1.5.patch
@@ -1,4 +1,4 @@
-From 8a361b46917b8a371c79e9ea0d9ce2520110c5a3 Mon Sep 17 00:00:00 2001
+From 1bf9b9694338ba917db07d2bf75146dba6a80054 Mon Sep 17 00:00:00 2001
 From: Giovanni Campagna <gcampagna@src.gnome.org>
 Date: Tue, 25 Jan 2011 22:08:12 +0100
 Subject: [PATCH] Status area: add NetworkManager indicator
@@ -16,19 +16,25 @@ https://bugzilla.gnome.org/show_bug.cgi?id=621707
 ---
  data/theme/gnome-shell.css      |    8 +
  js/Makefile.am                  |    2 +
- js/misc/modemManager.js         |  127 +++
- js/ui/panel.js                  |    3 +-
- js/ui/status/network.js         | 2028 +++++++++++++++++++++++++++++++++++++++
+ js/misc/modemManager.js         |  219 +++++
+ js/misc/util.js                 |   80 ++
+ js/ui/panel.js                  |    7 +
+ js/ui/status/network.js         | 2048 +++++++++++++++++++++++++++++++++++++++
+ src/Makefile.am                 |    5 +-
+ src/shell-mobile-providers.c    |  816 ++++++++++++++++
+ src/shell-mobile-providers.h    |   96 ++
  tools/build/gnome-shell.modules |   17 +
- 6 files changed, 2184 insertions(+), 1 deletions(-)
+ 10 files changed, 3297 insertions(+), 1 deletions(-)
  create mode 100644 js/misc/modemManager.js
  create mode 100644 js/ui/status/network.js
+ create mode 100644 src/shell-mobile-providers.c
+ create mode 100644 src/shell-mobile-providers.h
 
 diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
-index 4fd303a..06ef4b2 100644
+index 7d9f011..5d7eea2 100644
 --- a/data/theme/gnome-shell.css
 +++ b/data/theme/gnome-shell.css
-@@ -158,6 +158,14 @@ StTooltip StLabel {
+@@ -160,6 +160,14 @@ StTooltip StLabel {
      spacing: .5em;
  }
  
@@ -65,13 +71,15 @@ index 55bb111..a085bfc 100644
  	ui/status/bluetooth.js	\
 diff --git a/js/misc/modemManager.js b/js/misc/modemManager.js
 new file mode 100644
-index 0000000..d019d50
+index 0000000..5b2754b
 --- /dev/null
 +++ b/js/misc/modemManager.js
-@@ -0,0 +1,127 @@
+@@ -0,0 +1,219 @@
 +// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
++
 +const DBus = imports.dbus;
 +const Lang = imports.lang;
++const Shell = imports.gi.Shell;
 +const Signals = imports.signals;
 +
 +// The following are not the complete interfaces, just the methods we need
@@ -105,6 +113,78 @@ index 0000000..d019d50
 +};
 +const ModemCdmaProxy = DBus.makeProxyClass(ModemCdmaInterface);
 +
++let _providersTable;
++function _getProvidersTable() {
++    if (_providersTable)
++        return _providersTable;
++    let [providers, countryCodes] = Shell.mobile_providers_parse();
++    return _providersTable = providers;
++}
++
++function _findProviderForMCCMNC(needle) {
++    let table = _getProvidersTable();
++    let needlemcc = needle.substring(0, 3);
++    let needlemnc = needle.substring(3, needle.length);
++
++    let name2, name3;
++    for (let iter in table) {
++        let providers = table[value];
++
++	/* Search through each country's providers */
++        for (let i = 0; i < providers.length; i++) {
++	    let provider = providers[i];
++
++	    /* Search through MCC/MNC list */
++            let list = provider.get_gsm_mcc_mnc();
++            for (let j = 0; j < list.length; j++) {
++		let mccmnc = list[j];
++
++		/* Match both 2-digit and 3-digit MNC; prefer a
++		 * 3-digit match if found, otherwise a 2-digit one.
++		 */
++                if (mccmnc.mcc != needlemcc)
++		    continue;  /* MCC was wrong */
++
++		if (!name3 && needle.length == 6 && needlemnc == mccmnc.mnc)
++		    name3 = provider.name;
++
++		if (!name2 && needlemnc.substring(0, 2) == mcc.mnc.substring(0, 2))
++		    name2 = provider.name;
++
++		if (name2 && name3)
++		    break;
++	    }
++	}
++    }
++
++    return name3 || name2 || null;
++}
++
++function _findProviderForSid(sid) {
++    if (sid == 0)
++	return null;
++
++    let table = _getProvidersTable();
++
++    /* Search through each country */
++    for (let iter in table) {
++        let providers = table[iter];
++
++	/* Search through each country's providers */
++        for (let i = 0; i < providers.length; i++) {
++	    let provider = providers[i];
++            let cdma_sid = provider.get_cdma_sid();
++
++	    /* Search through CDMA SID list */
++            for (let j = 0; j < cdma_sid.length; j++) {
++                if (cmda_sid[j] == sid)
++                    return provider.name;
++	    }
++	}
++    }
++
++    return null;
++}
 +
 +function ModemGsm() {
 +    this._init.apply(this, arguments);
@@ -123,10 +203,7 @@ index 0000000..d019d50
 +            this.emit('notify::signal-quality');
 +        }));
 +        this._proxy.connect('RegistrationInfo', Lang.bind(this, function(proxy, status, code, name) {
-+            if (name.length > 0)
-+                this.operator_name = name;
-+            else
-+                this.operator_name = null;
++            this.operator_name = this._findOperatorName(name, code);
 +            this.emit('notify::operator-name');
 +        }));
 +        this._proxy.GetRegistrationInfoRemote(Lang.bind(this, function(result, err) {
@@ -136,22 +213,36 @@ index 0000000..d019d50
 +            }
 +
 +            let [status, code, name] = result;
-+            if (name.length > 0)
-+                this.operator_name = name;
-+            else
-+                this.operator_name = null;
++            this.operator_name = this._findOperatorName(name, code);
 +            this.emit('notify::operator-name');
 +        }));
 +        this._proxy.GetSignalQualityRemote(Lang.bind(this, function(result, err) {
 +            if (err) {
 +                // it will return an error if the device is not connected
-+                return;
++                this.signal_quality = 0;
++            } else {
++                let [quality] = result;
++                this.signal_quality = quality;
 +            }
-+
-+            let [quality] = result;
-+            this.signal_quality = quality;
 +            this.emit('notify::signal-quality');
 +        }));
++    },
++
++    _findOperatorName: function(name, opCode) {
++        if (name.length != 0 && (name.length > 6 || name.length < 5)) {
++            // this looks like a valid name, i.e. not an MCCMNC (that some
++            // devices return when not yet connected
++            return name;
++        }
++        let needle;
++        if (name.length == 0 && opCode)
++            needle = opCode;
++        else if (name.length == 6 || name.length == 5)
++            needle = name;
++        else // nothing to search
++            return null;
++
++        return _findProviderForMCCMNC(needle);
 +    }
 +}
 +Signals.addSignalMethods(ModemGsm.prototype);
@@ -169,53 +260,153 @@ index 0000000..d019d50
 +        this._proxy.connect('SignalQuality', Lang.bind(this, function(quality) {
 +            this.signal_quality = quality;
 +            this.emit('notify::signal-quality');
++
++            // receiving this signal means the device got activated
++            // and we can finally call GetServingSystem
++            if (this.operator_name == null)
++                this._refreshServingSystem();
 +        }));
 +        this._proxy.GetSignalQualityRemote(Lang.bind(this, function(result, err) {
 +            if (err) {
 +                // it will return an error if the device is not connected
-+                return;
++                this.signal_quality = 0;
++            } else {
++                let [quality] = result;
++                this.signal_quality = quality;
 +            }
-+            let [quality] = result;
-+            this.signal_quality = quality;
 +            this.emit('notify::signal-quality');
 +        }));
++    },
++    _refreshServingSystem: function() {
 +        this._proxy.GetServingSystemRemote(Lang.bind(this, function(result, err) {
 +            if (err) {
 +                // it will return an error if the device is not connected
-+                return;
-+            }
-+
-+            let [bandClass, band, id] = result;
-+            if (name.length > 0)
-+                // FIXME: the applet has a mapping of ids to names
-+                this.operator_name = 'Mystery CDMA Provider ' + id;
-+            else
 +                this.operator_name = null;
++            } else {
++                let [bandClass, band, id] = result;
++                if (name.length > 0)
++                    this.operator_name = _findProviderForSid(id);
++                else
++                    this.operator_name = null;
++            }
 +            this.emit('notify::operator-name');
 +        }));
 +    }
 +};
 +Signals.addSignalMethods(ModemCdma.prototype);
+diff --git a/js/misc/util.js b/js/misc/util.js
+index e2ec2c1..ab430c8 100644
+--- a/js/misc/util.js
++++ b/js/misc/util.js
+@@ -178,3 +178,83 @@ function killall(processName) {
+         logError(e, 'Failed to kill ' + processName);
+     }
+ }
++
++// This was ported from network-manager-applet
++// Copyright 2007 - 2011 Red Hat, Inc.
++// Author: Dan Williams <dcbw@redhat.com>
++
++const _IGNORED_WORDS = [
++	'Semiconductor',
++	'Components',
++	'Corporation',
++	'Communications',
++	'Company',
++	'Corp.',
++	'Corp',
++	'Co.',
++	'Inc.',
++	'Inc',
++	'Incorporated',
++	'Ltd.',
++	'Limited.',
++	'Intel?',
++	'chipset',
++	'adapter',
++	'[hex]',
++	'NDIS',
++	'Module'
++];
++
++const _IGNORED_PHRASES = [
++	'Multiprotocol MAC/baseband processor',
++	'Wireless LAN Controller',
++	'Wireless LAN Adapter',
++	'Wireless Adapter',
++	'Network Connection',
++	'Wireless Cardbus Adapter',
++	'Wireless CardBus Adapter',
++	'54 Mbps Wireless PC Card',
++	'Wireless PC Card',
++	'Wireless PC',
++	'PC Card with XJACK(r) Antenna',
++	'Wireless cardbus',
++	'Wireless LAN PC Card',
++	'Technology Group Ltd.',
++	'Communication S.p.A.',
++	'Business Mobile Networks BV',
++	'Mobile Broadband Minicard Composite Device',
++	'Mobile Communications AB',
++	'(PC-Suite Mode)'
++];
++
++function fixupPCIDescription(desc) {
++    desc.replace('[_,]', ' ');
++
++    /* Attempt to shorten ID by ignoring certain phrases */
++    for (let i = 0; i < _IGNORED_PHRASES.length; i++) {
++        let item = _IGNORED_PHRASES[i];
++        let pos = desc.indexOf(item);
++	if (pos != -1) {
++            let before = desc.substring(0, pos);
++            let after = desc.substring(pos + item.length, desc.length);
++	    desc = before + after;
++	}
++    }
++
++    /* Attmept to shorten ID by ignoring certain individual words */
++    let words = desc.split(' ');
++    let out = '';
++    for (let i = 0; i < words; i++) {
++        let item = words[i];
++
++        // skip empty items (that come out from consecutive spaces)
++	if (item.length == 0)
++	    continue;
++
++        if (_IGNORED_WORDS.indexOf(item) == -1) {
++            out += ' ' + item;
++	}
++    }
++
++    return out;
++}
+\ No newline at end of file
 diff --git a/js/ui/panel.js b/js/ui/panel.js
-index c08c3e8..abe0fe2 100644
+index c08c3e8..adcd148 100644
 --- a/js/ui/panel.js
 +++ b/js/ui/panel.js
-@@ -41,7 +41,8 @@ const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
-     'a11y': imports.ui.status.accessibility.ATIndicator,
-     'volume': imports.ui.status.volume.Indicator,
-     'battery': imports.ui.status.power.Indicator,
--    'keyboard': imports.ui.status.keyboard.XKBIndicator
-+    'keyboard': imports.ui.status.keyboard.XKBIndicator,
-+    'network': imports.ui.status.network.NMApplet
- };
- 
+@@ -47,6 +47,13 @@ const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
  if (Config.HAVE_BLUETOOTH)
+     STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator;
+ 
++try {
++    STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['network'] = imports.ui.status.network.NMApplet;
++} catch(e) {
++    STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['network'] = undefined;
++    log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
++}
++
+ // To make sure the panel corners blend nicely with the panel,
+ // we draw background and borders the same way, e.g. drawing
+ // them as filled shapes from the outside inwards instead of
 diff --git a/js/ui/status/network.js b/js/ui/status/network.js
 new file mode 100644
-index 0000000..0e2d483
+index 0000000..ac8e3d0
 --- /dev/null
 +++ b/js/ui/status/network.js
-@@ -0,0 +1,2028 @@
+@@ -0,0 +1,2048 @@
 +// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
 +const ByteArray = imports.byteArray;
 +const DBus = imports.dbus;
@@ -246,6 +437,10 @@ index 0000000..0e2d483
 +    VPN: 'vpn'
 +};
 +
++// small optimization, to avoid using [] all the time
++const NM80211Mode = NetworkManager['80211Mode'];
++const NM80211ApFlags = NetworkManager['80211ApFlags'];
++
 +function macToArray(string) {
 +    return string.split(':').map(function(el) {
 +        return parseInt(el, 16);
@@ -261,6 +456,8 @@ index 0000000..0e2d483
 +}
 +
 +function ssidCompare(one, two) {
++    if (!one || !two)
++        return false;
 +    if (one.length != two.length)
 +        return false;
 +    for (let i = 0; i < one.length; i++) {
@@ -284,16 +481,54 @@ index 0000000..0e2d483
 +}
 +
 +// shared between NMNetworkMenuItem and NMDeviceWireless
++function getApSecurityType(accessPoint) {
++    // XXX: have this checked by someone familiar with IEEE 802.1x
++
++    let flags = accessPoint.flags;
++    let wpa_flags = accessPoint.wpa_flags;
++    let rsn_flags = accessPoint.rsn_flags;
++    if (  !(flags & NM80211ApFlags.PRIVACY)
++	  && (wpa_flags == NM80211ApSecurityFlags.NONE)
++	  && (rsn_flags == NM80211ApSecurityFlags.NONE))
++	return 0;
++    else if (   (flags & NM80211ApFlags.PRIVACY)
++	        && (wpa_flags == NM80211ApSecurityFlags.NONE)
++	        && (rsn_flags == NM80211ApSecurityFlags.NONE))
++	return 1;
++    else if (   !(flags & NM80211ApFlags.PRIVACY)
++	        &&  (wpa_flags != NM80211ApSecurity.NONE)
++	        &&  (rsn_flags != NM80211ApSecurity.NONE))
++	return 2;
++    else
++        return 3;
++}
++
 +function sortAccessPoints(accessPoints) {
 +    return accessPoints.sort(function (one, two) {
-+        if (one.flags != two.flags) {
-+            // sort secure access point before open ones
-+            return one.flags & NetworkManager['80211ApFlags'].PRIVACY ? -1 : 1;
-+        }
 +        return two.strength - one.strength;
 +    });
 +}
 +
++function getDeviceDescription(device) {
++    let dev_product = device.get_product();
++    let dev_vendor = device.get_vendor();
++    if (!dev_product || !dev_vendor)
++	return null;
++
++    let product = Util.fixupPCIDescription(dev_product);
++    let vendor = Util.fixupPCIDescription(dev_vendor);
++    let out = '';
++
++    /* Another quick hack; if all of the fixed up vendor string
++     * is found in product, ignore the vendor.
++     */
++    if (product.indexOf(vendor) == -1)
++        out += vendor + ' ';
++    out += product;
++
++    return out;
++}
++
 +function NMNetworkMenuItem() {
 +    this._init.apply(this, arguments);
 +}
@@ -380,7 +615,7 @@ index 0000000..0e2d483
 +                                              });
 +        this.addActor(this._descriptionLabel);
 +
-+        this._statusBin = new St.Bin();
++        this._statusBin = new St.Bin({ x_align: St.Align.END });
 +        this.addActor(this._statusBin, { align: St.Align.END });
 +
 +        this._statusLabel = new St.Label({ text: '',
@@ -441,7 +676,7 @@ index 0000000..0e2d483
 +        NMDeviceTitleMenuItem.prototype.activate.call(this, event);
 +
 +        if (!this._device) {
-+            log ('Section title activated when there is more than one device, should be non reactive');
++            log('Section title activated when there is more than one device, should be non reactive');
 +            return;
 +        }
 +
@@ -488,7 +723,6 @@ index 0000000..0e2d483
 +    activate: function(event) {
 +        NMDeviceTitleMenuItem.prototype.activate.call(this, event);
 +
-+        log ('setting enabled property, is ' + this._switch.state);
 +        this._client[this._setEnabledFunc](this._switch.state);
 +    },
 +
@@ -511,7 +745,7 @@ index 0000000..0e2d483
 +}
 +
 +NMDevice.prototype = {
-+    _init: function(client, device, connections, activeConnectionPosition) {
++    _init: function(client, device, connections) {
 +        this.device = device;
 +        if (device) {
 +            this.device._delegate = this;
@@ -544,9 +778,6 @@ index 0000000..0e2d483
 +        this._autoConnectionItem = null;
 +        this._onlyOfCategory = false;
 +
-+        // private
-+        this._activeConnectionPosition = activeConnectionPosition || 0;
-+
 +        if (this.device) {
 +            this.statusItem = new NMDeviceTitleMenuItem(this.device._description);
 +            this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) {
@@ -613,39 +844,22 @@ index 0000000..0e2d483
 +            this._activeConnectionItem = null;
 +        }
 +
-+        let previousActive = this._activeConnection;
-+        this._activeConnection = null;
++        this._activeConnection = activeConnection;
 +
-+        if (previousActive && previousActive._connection) {
-+            // add the connection back as a normal one, by removing and adding it
-+            this.removeConnection(previousActive._connection, true);
-+            this.addConnection(previousActive._connection);
-+        }
-+
-+        if (activeConnection) {
-+            if (activeConnection._connection) {
-+                // remove the connection if it was already seen
-+                let pos = this._findConnection(activeConnection._connection._uuid);
-+                if (pos != -1) {
-+                    let obj = this._connections[pos];
-+                    if (obj.item)
-+                        obj.item.destroy();
-+                    obj.item = null;
-+                }
-+            }
++        this._clearSection();
++        this._createSection();
++    },
 +
-+            this._activeConnection = activeConnection;
-+            this._createActiveConnectionItem();
-+            this.section.addMenuItem(this._activeConnectionItem, this._activeConnectionPosition);
-+        }
++    checkConnection: function(connection) {
++        let exists = this._findConnection(connection) != -1;
++        let valid = this.connectionValid(connection);
++        if (exists && !valid)
++            this.removeConnection(connection);
++        else if (!exists && valid)
++            this.addConnection(connection);
 +    },
 +
 +    addConnection: function(connection) {
-+        if (this._findConnection(connection._uuid) != -1) {
-+            log('Connection already added to menu, not adding again');
-+            return;
-+        }
-+
 +        // record the connection
 +        let obj = {
 +            connection: connection,
@@ -658,20 +872,18 @@ index 0000000..0e2d483
 +            return two.timestamp - one.timestamp;
 +        });
 +
-+        if (this._shouldShowConnectionList()) {
-+            this._clearSection();
-+            this._createSection();
-+        }
++        this._clearSection();
++        this._createSection();
 +    },
 +
-+    removeConnection: function(connection, skipCreateMenu) {
++    removeConnection: function(connection) {
 +        if (!connection._uuid) {
 +            log('Cannot remove a connection without an UUID');
 +            return;
 +        }
 +        let pos = this._findConnection(connection._uuid);
 +        if (pos == -1) {
-+            log('Connection was never added, cannot remove');
++            // this connection was never added, nothing to do here
 +            return;
 +        }
 +
@@ -680,7 +892,7 @@ index 0000000..0e2d483
 +            obj.item.destroy();
 +        this._connections.splice(pos, 1);
 +
-+        if (this._connections.length == 0 && !skipCreateMenu) {
++        if (this._connections.length == 0) {
 +            // We need to show the automatic connection again
 +            this._clearSection();
 +            this._createSection();
@@ -709,8 +921,9 @@ index 0000000..0e2d483
 +            /* Translators: this is for network connections that require some kind of key or password */
 +            return _("authentication required");
 +        case NetworkManager.DeviceState.UNAVAILABLE:
-+            if ((this.device.capabilities & NetworkManager.DeviceCapabilities.CARRIER_DETECT) &&
-+                !this.device.carrier)
++            // we don't check if the carrier property is actually false, as that causes race
++            // conditions if state is changed before the new carrier value is picked by libnm-glib
++            if (this.device.capabilities & NetworkManager.DeviceCapabilities.CARRIER_DETECT)
 +                /* Translators: this is for wired network devices that are physically disconnected */
 +                return _("cable unplugged");
 +            else
@@ -872,15 +1085,6 @@ index 0000000..0e2d483
 +            autoconnect: true
 +        }));
 +        return connection;
-+    },
-+
-+    _updateStatusItem: function() {
-+        // ignore device state here, when there's only one device
-+        // it will be taken care by NMApplet
-+        if (this._onlyOfCategory)
-+            this.statusItem.actor.hide();
-+        else
-+            this.statusItem.actor.show();
 +    }
 +};
 +
@@ -898,7 +1102,6 @@ index 0000000..0e2d483
 +        this.mobileDevice = null;
 +        this._connectionType = 'ppp';
 +
-+        // FIXME: listen for this property changing and recreate modem stuff
 +        this._capabilities = device.current_capabilities;
 +        if (this._capabilities & NetworkManager.DeviceModemCapabilities.GSM_UMTS) {
 +            is_wwan = true;
@@ -915,7 +1118,7 @@ index 0000000..0e2d483
 +
 +        if (is_wwan) {
 +            this.category = NMConnectionCategory.WWAN;
-+            this._autoConnectionName = _("New Mobile Broadband connection...");
++            this._autoConnectionName = _("Auto broadband");
 +        } else {
 +            this.category = NMConnectionCategory.WIRED;
 +            this._autoConnectionName = _("Auto dial-up");
@@ -978,9 +1181,12 @@ index 0000000..0e2d483
 +
 +    _createSection: function() {
 +        if (this.mobileDevice) {
++            // If operator_name is null, just pass the empty string, as the item is hidden anyway
 +            this._operatorItem = new PopupMenu.PopupImageMenuItem(this.mobileDevice.operator_name || '',
 +                                                                  this._getSignalIcon(),
 +                                                                  { reactive: false });
++            if (this.mobileDevice.operator_name)
++                this._operatorItem.actor.hide();
 +            this.section.addMenuItem(this._operatorItem);
 +        }
 +
@@ -1000,8 +1206,7 @@ index 0000000..0e2d483
 +    _createAutomaticConnection: function() {
 +        // FIXME: we need to summon the mobile wizard here
 +        // or NM will not have the necessary parameters to complete the connection
-+        // (the same FIXME is currently in nm-applet, actually)
-+        // (this does not apply to dial-up)
++        // pending a DBus method on nm-applet
 +
 +        let connection = new NetworkManager.Connection;
 +        connection._uuid = NetworkManager.utils_uuid_generate();
@@ -1023,7 +1228,9 @@ index 0000000..0e2d483
 +    __proto__: NMDevice.prototype,
 +
 +    _init: function(client, device, connections) {
-+        this._autoConnectionName = _("New Mobile Broadband connection...");
++        this._autoConnectionName = this._makeConnectionName(device);
++        device.connect('notify::name', Lang.bind(this, this._updateAutoConnectionName));
++
 +        this.category = NMConnectionCategory.WWAN;
 +
 +        NMDevice.prototype._init.call(this, client, device, connections);
@@ -1042,8 +1249,6 @@ index 0000000..0e2d483
 +    },
 +
 +    _createAutomaticConnection: function() {
-+        // XXX: is this enough? or do we need other stuff from bluetoothd?
-+
 +        let connection = new NetworkManager.Connection;
 +        connection._uuid = NetworkManager.utils_uuid_generate();
 +        connection.add_setting(new NetworkManager.SettingBluetooth);
@@ -1054,6 +1259,21 @@ index 0000000..0e2d483
 +            autoconnect: false
 +        }));
 +        return connection;
++    },
++
++    _makeConnectionName: function(device) {
++        let name = device.name;
++        if (name)
++            return _("Auto %s").format(name);
++        else
++            return _("Auto bluetooth");
++    },
++
++    _updateAutoConnectionName: function() {
++        this._autoConnectionName = this._makeConnectioName(this.device);
++
++        this._clearSection();
++        this._createSection();
 +    }
 +};
 +
@@ -1122,16 +1342,17 @@ index 0000000..0e2d483
 +        }));
 +        let accessPoints = device.get_access_points() || [ ];
 +        for (let i = 0; i < accessPoints.length; i++) {
-+            // Access points are grouped by network name
++            // Access points are grouped by network
 +            let ap = accessPoints[i];
-+            let ssid = ap.get_ssid();
-+            let pos = this._findNetwork(ssid);
++            let pos = this._findNetwork(ap);
 +            let obj;
 +            if (pos != -1) {
 +                obj = this._networks[pos];
 +                obj.accessPoints.push(ap);
 +            } else {
 +                obj = { ssid: ssid,
++                        mode: ap.mode,
++                        security: getApSecurityType(ap),
 +                        connections: [ ],
 +                        item: null,
 +                        accessPoints: [ ap ]
@@ -1222,17 +1443,27 @@ index 0000000..0e2d483
 +        }
 +    },
 +
-+    _findNetwork: function(ssid) {
++    _networkCompare: function(network, accessPoint) {
++        if (!ssidCompare(network.ssid, accessPoint.get_ssid()))
++            return false;
++        if (network.mode != accessPoint.mode)
++            return false;
++        if (network.security != getApSecurityType(accessPoint))
++            return false;
++
++        return true;
++    },
++
++    _findNetwork: function(accessPoint) {
 +        for (let i = 0; i < this._networks.length; i++) {
-+            if (ssidCompare(this._networks[i].ssid, ssid))
++            if (this._networkCompare(this._networks[i], accessPoint))
 +                return i;
 +        }
 +        return -1;
 +    },
 +
 +    _accessPointAdded: function(device, accessPoint) {
-+        let ssid = accessPoint.get_ssid();
-+        let pos = this._findNetwork(ssid);
++        let pos = this._findNetwork(accessPoint);
 +        let apObj;
 +        if (pos != -1) {
 +            apObj = this._networks[pos];
@@ -1244,6 +1475,8 @@ index 0000000..0e2d483
 +            apObj.accessPoints.push(accessPoint);
 +        } else {
 +            apObj = { ssid: ssid,
++                      mode: accessPoint.mode,
++                      security: getApSecurityType(accessPoint),
 +                      connections: [ ],
 +                      item: null,
 +                      accessPoints: [ accessPoint ]
@@ -1266,8 +1499,7 @@ index 0000000..0e2d483
 +    },
 +
 +    _accessPointRemoved: function(device, accessPoint) {
-+        let ssid = accessPoint.get_ssid();
-+        let pos = this._findNetwork(ssid);
++        let pos = this._findNetwork(accessPoint);
 +
 +        if (pos == -1) {
 +            log('Removing an access point that was never added');
@@ -1349,12 +1581,12 @@ index 0000000..0e2d483
 +        this._overflowItem = null;
 +    },
 +
-+    removeConnection: function(connection, skipCreateAuto) {
++    removeConnection: function(connection) {
 +        if (!connection._uuid)
 +            return;
 +        let pos = this._findConnection(connection._uuid);
 +        if (pos == -1) {
-+            log('Removing connection that was never added');
++            // removing connection that was never added
 +            return;
 +        }
 +
@@ -1369,7 +1601,7 @@ index 0000000..0e2d483
 +                if (connections[k]._uuid == connection._uuid) {
 +                    // remove the connection from the access point group
 +                    connections.splice(k);
-+                    anyauto = true;
++                    anyauto = connections.length == 0;
 +                    if (apObj.item) {
 +                        if (apObj.item instanceof PopupMenu.PopupSubMenuMenuItem) {
 +                            let items = apObj.item.menu.getMenuItems();
@@ -1389,22 +1621,18 @@ index 0000000..0e2d483
 +                            apObj.item = null;
 +                        }
 +                    }
++                    break;
 +                }
 +            }
 +        }
 +
-+        if (forceupdate || (anyauto && !skipCreateAuto)) {
++        if (forceupdate || anyauto) {
 +            this._clearSection();
 +            this._createSection();
 +        }
 +    },
 +
 +    addConnection: function(connection) {
-+        if (this._findConnection(connection._uuid) != -1) {
-+            log('Connection already added to menu, not adding again');
-+            return;
-+        }
-+
 +        // record the connection
 +        let obj = {
 +            connection: connection,
@@ -1429,9 +1657,7 @@ index 0000000..0e2d483
 +                }
 +            }
 +
-+            if (any &&
-+                (this.device.state == NetworkManager.DeviceState.DISCONNECTED ||
-+                 this.device.state == NetworkManager.DeviceState.ACTIVATED)) {
++            if (any && this._shouldShowConnectionList() && !skipCreateMenu) { 
 +                // we need to show this connection
 +                if (apObj.item && apObj.item.menu) {
 +                    // We're already showing the submenu for this access point
@@ -1544,8 +1770,6 @@ index 0000000..0e2d483
 +        }
 +
 +        let activeAp = this.device.active_access_point;
-+        // Use undefined instead of null, so we're sure not to match anything
-+        // that comes from NetworkManager
 +        let activeApSsid = activeAp ? activeAp.get_ssid() : null;
 +
 +        // we want five access points in the menu, including the active one
@@ -1675,7 +1899,7 @@ index 0000000..0e2d483
 +        this._dtypes[NetworkManager.DeviceType.WIFI] = NMDeviceWireless;
 +        this._dtypes[NetworkManager.DeviceType.MODEM] = NMDeviceModem;
 +        this._dtypes[NetworkManager.DeviceType.BT] = NMDeviceBluetooth;
-+        // FIXME: WiMax support (if enabled)
++        // TODO: WiMax support
 +
 +        // Connection types
 +        this._ctypes = { };
@@ -1769,8 +1993,7 @@ index 0000000..0e2d483
 +        }
 +        let wrapperClass = this._dtypes[device.get_device_type()];
 +        if (wrapperClass) {
-+            // XXX: check what nm-applet does here
-+            device._description = device.get_product();
++            device._description = getDeviceDescription(device);
 +
 +            let wrapper = new wrapperClass(this._client, device, this._connections);
 +            // FIXME: these notifications are duplicate with those exposed by nm-applet
@@ -1874,7 +2097,7 @@ index 0000000..0e2d483
 +                if (a.state == NetworkManager.ActiveConnectionState.ACTIVATING) // prepare to notify to the user
 +                    a._notifyStateId = a.connect('notify::state', Lang.bind(this, this._notifyActiveConnection));
 +                else {
-+                    // notify immediately
++                    // notify as soon as possible
 +                    Mainloop.idle_add(Lang.bind(this, function() {
 +                        this._notifyActiveConnection(a);
 +                    }));
@@ -1913,7 +2136,6 @@ index 0000000..0e2d483
 +            if (!a._primaryDevice) {
 +                if (a._type != NetworkManager.SETTING_VPN_SETTING_NAME) {
 +                    // find a good device to be considered primary
-+                    // XXX: check what nm-applet does here
 +                    a._primaryDevice = null;
 +                    let devices = a.get_devices();
 +                    for (let j = 0; j < devices.length; j++) {
@@ -2027,15 +2249,6 @@ index 0000000..0e2d483
 +        if (pos != -1)
 +            this._connections.splice(connection);
 +
-+        if (connection._everAdded)
-+            this._hideConnection(connection);
-+
-+        connection._uuid = null;
-+        connection.disconnect(connection._removedId);
-+        connection.disconnect(connection._updatedId);
-+    },
-+
-+    _hideConnection: function(connection) {
 +        let section = connection._section;
 +        if (section == NMConnectionCategory.VPN) {
 +            this._devices.vpn.device.removeConnection(connection);
@@ -2046,13 +2259,13 @@ index 0000000..0e2d483
 +            for (let i = 0; i < devices.length; i++)
 +                devices[i].removeConnection(connection);
 +        }
-+        connection._everAdded = false;
++
++        connection._uuid = null;
++        connection.disconnect(connection._removedId);
++        connection.disconnect(connection._updatedId);
 +    },
 +
 +    _updateConnection: function(connection) {
-+        if (connection._everAdded)
-+            this._hideConnection(connection);
-+
 +        let connectionSettings = connection.get_setting_by_name(NetworkManager.SETTING_CONNECTION_SETTING_NAME);
 +        connection._type = connectionSettings.type;
 +        connection._section = this._ctypes[connection._type];
@@ -2062,16 +2275,13 @@ index 0000000..0e2d483
 +
 +        let section = connection._section;
 +        if (section == NMConnectionCategory.VPN) {
-+            this._devices.vpn.device.addConnection(connection);
++            this._devices.vpn.device.checkConnection(connection);
 +            this._devices.vpn.section.actor.show();
 +            connection._everAdded = true;
 +        } else {
 +            let devices = this._devices[section].devices;
 +            for (let i = 0; i < devices.length; i++) {
-+                if (devices[i].connectionValid(connection)) {
-+                    devices[i].addConnection(connection);
-+                    connection._everAdded = true;
-+                }
++                devices[i].checkConnection(connection);
 +            }
 +        }
 +    },
@@ -2181,17 +2391,18 @@ index 0000000..0e2d483
 +                this.setIcon('network-wired');
 +                break;
 +            case NMConnectionCategory.WWAN:
-+                if (mc._type == NetworkManager.SETTING_BLUETOOTH_SETTING_NAME) {
-+                    // XXX: NetworkManager does not give us signal for bluetooth
-+                    this.setIcon('network-cellular-signal-excellent');
-+                    break;
-+                }
-+
 +                dev = mc._primaryDevice;
 +                if (!dev) {
 +                    log('Active connection with no primary device?');
 +                    break;
 +                }
++                if (!dev.mobileDevice) {
++                    // this can happen for bluetooth in PAN mode
++                    // XXX: need network-cellular-connected icon
++                    this.setIcon('network-cellular-signal-excellent');
++                    break;
++                }   
++
 +                if (this._mobileUpdateId && this._mobileUpdateDevice != dev) {
 +                    this._mobileUpdateDevice.disconnect(this._mobileUpdateId);
 +                    this._mobileUpdateDevice = dev.mobileDevice;
@@ -2244,8 +2455,962 @@ index 0000000..0e2d483
 +        this._setSummaryIcon(icon);
 +    }
 +};
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 7c251de..0c440ae 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -62,7 +62,8 @@ gnome_shell_cflags =				\
+ 	$(GNOME_SHELL_CFLAGS)			\
+ 	-I$(srcdir)/tray			\
+ 	-DVERSION=\"$(VERSION)\"		\
+-	-DLOCALEDIR=\"$(datadir)/locale\" \
++	-DLOCALEDIR=\"$(datadir)/locale\" 	\
++	-DDATADIR=\"$(datadir)\"		\
+ 	-DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\"	\
+ 	-DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\"	\
+ 	-DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" \
+@@ -90,6 +91,7 @@ shell_public_headers_h =		\
+ 	shell-generic-container.h	\
+ 	shell-gtk-embed.h		\
+ 	shell-global.h			\
++	shell-mobile-providers.h	\
+ 	shell-perf-log.h		\
+ 	shell-slicer.h			\
+ 	shell-stack.h			\
+@@ -121,6 +123,7 @@ libgnome_shell_la_SOURCES =		\
+ 	shell-generic-container.c	\
+ 	shell-gtk-embed.c		\
+ 	shell-global.c			\
++	shell-mobile-providers.c	\
+ 	shell-perf-log.c		\
+ 	shell-polkit-authentication-agent.h	\
+ 	shell-polkit-authentication-agent.c	\
+diff --git a/src/shell-mobile-providers.c b/src/shell-mobile-providers.c
+new file mode 100644
+index 0000000..ca6a41f
+--- /dev/null
++++ b/src/shell-mobile-providers.c
+@@ -0,0 +1,816 @@
++/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/*
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++ * Boston, MA 02110-1301 USA.
++ *
++ * Copyright (C) 2009 Novell, Inc.
++ * Author: Tambet Ingo (tambet@gmail.com).
++ *
++ * Copyright (C) 2009 - 2010 Red Hat, Inc.
++ */
++
++#include "config.h"
++
++#include <string.h>
++#include <errno.h>
++#include <stdlib.h>
++
++#include <glib/gi18n.h>
++
++#include "shell-mobile-providers.h"
++
++#ifndef MOBILE_BROADBAND_PROVIDER_INFO
++#define MOBILE_BROADBAND_PROVIDER_INFO DATADIR "/mobile-broadband-provider-info/serviceproviders.xml"
++#endif
++
++#define ISO_3166_COUNTRY_CODES DATADIR "/zoneinfo/iso3166.tab"
++
++
++
++static GHashTable *
++read_country_codes (void)
++{
++    GHashTable *table;
++    GIOChannel *channel;
++    GString *buffer;
++    GError *error = NULL;
++    GIOStatus status;
++
++    channel = g_io_channel_new_file (ISO_3166_COUNTRY_CODES, "r", &error);
++    if (!channel) {
++        if (error) {
++            g_warning ("Could not read " ISO_3166_COUNTRY_CODES ": %s", error->message);
++            g_error_free (error);
++        } else
++            g_warning ("Could not read " ISO_3166_COUNTRY_CODES ": Unknown error");
++
++        return NULL;
++    }
++
++    table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
++    buffer = g_string_sized_new (32);
++
++    status = G_IO_STATUS_NORMAL;
++    while (status == G_IO_STATUS_NORMAL) {
++        status = g_io_channel_read_line_string (channel, buffer, NULL, &error);
++
++        switch (status) {
++        case G_IO_STATUS_NORMAL:
++            if (buffer->str[0] != '#') {
++                char **pieces;
++
++                pieces = g_strsplit (buffer->str, "\t", 2);
++
++                /* Hack for rh#556292; iso3166.tab is just wrong */
++                pieces[1] = pieces[1] ? g_strchomp (pieces[1]) : NULL;
++                if (pieces[1] && !strcmp (pieces[1], "Britain (UK)")) {
++                    g_free (pieces[1]);
++                    pieces[1] = g_strdup (_("United Kingdom"));
++                }
++
++                g_hash_table_insert (table, pieces[0], pieces[1]);
++                g_free (pieces);
++            }
++
++            g_string_truncate (buffer, 0);
++            break;
++        case G_IO_STATUS_EOF:
++            break;
++        case G_IO_STATUS_ERROR:
++            g_warning ("Error while reading: %s", error->message);
++            g_error_free (error);
++            break;
++        case G_IO_STATUS_AGAIN:
++            /* FIXME: Try again a few times, but really, it never happes, right? */
++            break;
++        }
++    }
++
++    g_string_free (buffer, TRUE);
++    g_io_channel_unref (channel);
++
++    return table;
++}
++
++/* XML Parser */
++
++typedef enum {
++    PARSER_TOPLEVEL = 0,
++    PARSER_COUNTRY,
++    PARSER_PROVIDER,
++    PARSER_METHOD_GSM,
++    PARSER_METHOD_GSM_APN,
++    PARSER_METHOD_CDMA,
++    PARSER_ERROR
++} MobileContextState;
++
++typedef struct {
++    GHashTable *country_codes;
++    GHashTable *table;
++
++    char *current_country;
++    GSList *current_providers;
++    ShellMobileProvider *current_provider;
++    ShellMobileAccessMethod *current_method;
++
++    char *text_buffer;
++    MobileContextState state;
++} MobileParser;
++
++static ShellGsmMccMnc *
++mcc_mnc_new (const char *mcc, const char *mnc)
++{
++    ShellGsmMccMnc *m;
++
++    m = g_slice_new (ShellGsmMccMnc);
++    m->mcc = g_strstrip (g_strdup (mcc));
++    m->mnc = g_strstrip (g_strdup (mnc));
++    return m;
++}
++
++/* added in porting */
++static ShellGsmMccMnc *
++mcc_mnc_copy (const ShellGsmMccMnc *other) {
++    ShellGsmMccMnc *ret;
++
++    ret = g_slice_new (ShellGsmMccMnc);
++    ret->mcc = g_strdup (other->mcc);
++    ret->mnc = g_strdup (other->mnc);
++    return ret;
++}
++
++static void
++mcc_mnc_free (ShellGsmMccMnc *m)
++{
++    g_return_if_fail (m != NULL);
++    g_free (m->mcc);
++    g_free (m->mnc);
++    g_slice_free (ShellGsmMccMnc, m);
++}
++
++/* added in porting */
++G_DEFINE_BOXED_TYPE (ShellGsmMccMnc, shell_gsm_mcc_mnc, mcc_mnc_copy, mcc_mnc_free)
++
++static ShellMobileAccessMethod *
++access_method_new (void)
++{
++    ShellMobileAccessMethod *method;
++
++    method = g_slice_new0 (ShellMobileAccessMethod);
++    method->refs = 1;
++    method->lcl_names = g_hash_table_new_full (g_str_hash, g_str_equal,
++                                               (GDestroyNotify) g_free,
++                                               (GDestroyNotify) g_free);
++
++    return method;
++}
++
++ShellMobileAccessMethod *
++shell_mobile_access_method_ref (ShellMobileAccessMethod *method)
++{
++    g_return_val_if_fail (method != NULL, NULL);
++    g_return_val_if_fail (method->refs > 0, NULL);
++ 
++    method->refs++;
++
++    return method;
++}
++
++void
++shell_mobile_access_method_unref (ShellMobileAccessMethod *method)
++{
++    g_return_if_fail (method != NULL);
++    g_return_if_fail (method->refs > 0);
++
++    if (--method->refs == 0) {
++        g_free (method->name);
++        g_hash_table_destroy (method->lcl_names);
++        g_free (method->username);
++        g_free (method->password);
++        g_free (method->gateway);
++        g_free (method->gsm_apn);
++        g_slist_foreach (method->dns, (GFunc) g_free, NULL);
++        g_slist_free (method->dns);
++
++        g_slice_free (ShellMobileAccessMethod, method);
++    }
++}
++
++GType
++shell_mobile_access_method_get_type (void)
++{
++    static GType type = 0;
++
++    if (G_UNLIKELY (type == 0)) {
++        type = g_boxed_type_register_static ("ShellMobileAccessMethod",
++                                             (GBoxedCopyFunc) shell_mobile_access_method_ref,
++                                             (GBoxedFreeFunc) shell_mobile_access_method_unref);
++    }
++    return type;
++}
++
++
++static ShellMobileProvider *
++provider_new (void)
++{
++    ShellMobileProvider *provider;
++
++    provider = g_slice_new0 (ShellMobileProvider);
++    provider->refs = 1;
++    provider->lcl_names = g_hash_table_new_full (g_str_hash, g_str_equal,
++                                                 (GDestroyNotify) g_free,
++                                                 (GDestroyNotify) g_free);
++
++    return provider;
++}
++
++ShellMobileProvider *
++shell_mobile_provider_ref (ShellMobileProvider *provider)
++{
++    provider->refs++;
++
++    return provider;
++}
++
++void
++shell_mobile_provider_unref (ShellMobileProvider *provider)
++{
++    if (--provider->refs == 0) {
++        g_free (provider->name);
++        g_hash_table_destroy (provider->lcl_names);
++
++        g_slist_foreach (provider->methods, (GFunc) shell_mobile_access_method_unref, NULL);
++        g_slist_free (provider->methods);
++
++        g_slist_foreach (provider->gsm_mcc_mnc, (GFunc) mcc_mnc_free, NULL);
++        g_slist_free (provider->gsm_mcc_mnc);
++
++        g_slist_free (provider->cdma_sid);
++
++        g_slice_free (ShellMobileProvider, provider);
++    }
++}
++
++GType
++shell_mobile_provider_get_type (void)
++{
++    static GType type = 0;
++
++    if (G_UNLIKELY (type == 0)) {
++        type = g_boxed_type_register_static ("ShellMobileProvider",
++                                             (GBoxedCopyFunc) shell_mobile_provider_ref,
++                                             (GBoxedFreeFunc) shell_mobile_provider_unref);
++    }
++    return type;
++}
++
++static void
++provider_list_free (gpointer data)
++{
++    GSList *list = (GSList *) data;
++
++    while (list) {
++        shell_mobile_provider_unref ((ShellMobileProvider *) list->data);
++        list = g_slist_delete_link (list, list);
++    }
++}
++
++static void
++parser_toplevel_start (MobileParser *parser,
++                       const char *name,
++                       const char **attribute_names,
++                       const char **attribute_values)
++{
++    int i;
++
++    if (!strcmp (name, "serviceproviders")) {
++        for (i = 0; attribute_names && attribute_names[i]; i++) {
++            if (!strcmp (attribute_names[i], "format")) {
++                if (strcmp (attribute_values[i], "2.0")) {
++                    g_warning ("%s: mobile broadband provider database format '%s'"
++                               " not supported.", __func__, attribute_values[i]);
++                    parser->state = PARSER_ERROR;
++                    break;
++                }
++            }
++        }
++    } else if (!strcmp (name, "country")) {
++        for (i = 0; attribute_names && attribute_names[i]; i++) {
++            if (!strcmp (attribute_names[i], "code")) {
++                char *country_code;
++                char *country;
++
++                country_code = g_ascii_strup (attribute_values[i], -1);
++                country = g_hash_table_lookup (parser->country_codes, country_code);
++                if (country) {
++                    parser->current_country = g_strdup (country);
++                    g_free (country_code);
++                } else
++                    parser->current_country = country_code;
++
++                parser->state = PARSER_COUNTRY;
++                break;
++            }
++        }
++    }
++}
++
++static void
++parser_country_start (MobileParser *parser,
++                      const char *name,
++                      const char **attribute_names,
++                      const char **attribute_values)
++{
++    if (!strcmp (name, "provider")) {
++        parser->state = PARSER_PROVIDER;
++        parser->current_provider = provider_new ();
++    }
++}
++
++static void
++parser_provider_start (MobileParser *parser,
++                       const char *name,
++                       const char **attribute_names,
++                       const char **attribute_values)
++{
++    if (!strcmp (name, "gsm"))
++        parser->state = PARSER_METHOD_GSM;
++    else if (!strcmp (name, "cdma")) {
++        parser->state = PARSER_METHOD_CDMA;
++        parser->current_method = access_method_new ();
++    }
++}
++
++static void
++parser_gsm_start (MobileParser *parser,
++                  const char *name,
++                  const char **attribute_names,
++                  const char **attribute_values)
++{
++    if (!strcmp (name, "network-id")) {
++        const char *mcc = NULL, *mnc = NULL;
++        int i;
++
++        for (i = 0; attribute_names && attribute_names[i]; i++) {
++            if (!strcmp (attribute_names[i], "mcc"))
++                mcc = attribute_values[i];
++            else if (!strcmp (attribute_names[i], "mnc"))
++                mnc = attribute_values[i];
++
++            if (mcc && strlen (mcc) && mnc && strlen (mnc)) {
++                parser->current_provider->gsm_mcc_mnc = g_slist_prepend (parser->current_provider->gsm_mcc_mnc,
++                                                                         mcc_mnc_new (mcc, mnc));
++                break;
++            }
++        }
++    } else if (!strcmp (name, "apn")) {
++        int i;
++
++        for (i = 0; attribute_names && attribute_names[i]; i++) {
++            if (!strcmp (attribute_names[i], "value")) {
++
++                parser->state = PARSER_METHOD_GSM_APN;
++                parser->current_method = access_method_new ();
++                parser->current_method->gsm_apn = g_strstrip (g_strdup (attribute_values[i]));
++                break;
++            }
++        }
++    }
++}
++
++static void
++parser_cdma_start (MobileParser *parser,
++                   const char *name,
++                   const char **attribute_names,
++                   const char **attribute_values)
++{
++    if (!strcmp (name, "sid")) {
++        int i;
++
++        for (i = 0; attribute_names && attribute_names[i]; i++) {
++            if (!strcmp (attribute_names[i], "value")) {
++                unsigned long tmp;
++
++                errno = 0;
++                tmp = strtoul (attribute_values[i], NULL, 10);
++                if (errno == 0 && tmp > 0)
++                    parser->current_provider->cdma_sid = g_slist_prepend (parser->current_provider->cdma_sid,
++                                                                          GUINT_TO_POINTER ((guint32) tmp));
++                break;
++            }
++        }
++    }
++}
++
++static void
++mobile_parser_start_element (GMarkupParseContext *context,
++                             const gchar *element_name,
++                             const gchar **attribute_names,
++                             const gchar **attribute_values,
++                             gpointer data,
++                             GError **error)
++{
++    MobileParser *parser = (MobileParser *) data;
++
++    if (parser->text_buffer) {
++        g_free (parser->text_buffer);
++        parser->text_buffer = NULL;
++    }
++
++    switch (parser->state) {
++    case PARSER_TOPLEVEL:
++        parser_toplevel_start (parser, element_name, attribute_names, attribute_values);
++        break;
++    case PARSER_COUNTRY:
++        parser_country_start (parser, element_name, attribute_names, attribute_values);
++        break;
++    case PARSER_PROVIDER:
++        parser_provider_start (parser, element_name, attribute_names, attribute_values);
++        break;
++    case PARSER_METHOD_GSM:
++        parser_gsm_start (parser, element_name, attribute_names, attribute_values);
++        break;
++    case PARSER_METHOD_CDMA:
++        parser_cdma_start (parser, element_name, attribute_names, attribute_values);
++        break;
++    default:
++        break;
++    }
++}
++
++static void
++parser_country_end (MobileParser *parser,
++                    const char *name)
++{
++    if (!strcmp (name, "country")) {
++        g_hash_table_insert (parser->table, parser->current_country, parser->current_providers);
++        parser->current_country = NULL;
++        parser->current_providers = NULL;
++        parser->text_buffer = NULL;
++        parser->state = PARSER_TOPLEVEL;
++    }
++}
++
++static void
++parser_provider_end (MobileParser *parser,
++                     const char *name)
++{
++    if (!strcmp (name, "name")) {
++        if (!parser->current_provider->name) {
++            /* Use the first one. */
++            parser->current_provider->name = parser->text_buffer;
++            parser->text_buffer = NULL;
++        }
++    } else if (!strcmp (name, "provider")) {
++        parser->current_provider->methods = g_slist_reverse (parser->current_provider->methods);
++
++        parser->current_provider->gsm_mcc_mnc = g_slist_reverse (parser->current_provider->gsm_mcc_mnc);
++        parser->current_provider->cdma_sid = g_slist_reverse (parser->current_provider->cdma_sid);
++
++        parser->current_providers = g_slist_prepend (parser->current_providers, parser->current_provider);
++        parser->current_provider = NULL;
++        parser->text_buffer = NULL;
++        parser->state = PARSER_COUNTRY;
++    }
++}
++
++static void
++parser_gsm_end (MobileParser *parser,
++                 const char *name)
++{
++    if (!strcmp (name, "gsm")) {
++        parser->text_buffer = NULL;
++        parser->state = PARSER_PROVIDER;
++    }
++}
++
++static void
++parser_gsm_apn_end (MobileParser *parser,
++                    const char *name)
++{
++    if (!strcmp (name, "name")) {
++        if (!parser->current_method->name) {
++            /* Use the first one. */
++            parser->current_method->name = parser->text_buffer;
++            parser->text_buffer = NULL;
++        }
++    } else if (!strcmp (name, "username")) {
++        parser->current_method->username = parser->text_buffer;
++        parser->text_buffer = NULL;
++    } else if (!strcmp (name, "password")) {
++        parser->current_method->password = parser->text_buffer;
++        parser->text_buffer = NULL;
++    } else if (!strcmp (name, "dns")) {
++        parser->current_method->dns = g_slist_prepend (parser->current_method->dns, parser->text_buffer);
++        parser->text_buffer = NULL;
++    } else if (!strcmp (name, "gateway")) {
++        parser->current_method->gateway = parser->text_buffer;
++        parser->text_buffer = NULL;
++    } else if (!strcmp (name, "apn")) {
++        parser->current_method->type = SHELL_MOBILE_ACCESS_METHOD_TYPE_GSM;
++        parser->current_method->dns = g_slist_reverse (parser->current_method->dns);
++
++        if (!parser->current_method->name)
++            parser->current_method->name = g_strdup (_("Default"));
++
++        parser->current_provider->methods = g_slist_prepend (parser->current_provider->methods,
++                                                             parser->current_method);
++        parser->current_method = NULL;
++        parser->text_buffer = NULL;
++        parser->state = PARSER_METHOD_GSM;
++    }
++}
++
++static void
++parser_cdma_end (MobileParser *parser,
++                 const char *name)
++{
++    if (!strcmp (name, "username")) {
++        parser->current_method->username = parser->text_buffer;
++        parser->text_buffer = NULL;
++    } else if (!strcmp (name, "password")) {
++        parser->current_method->password = parser->text_buffer;
++        parser->text_buffer = NULL;
++    } else if (!strcmp (name, "dns")) {
++        parser->current_method->dns = g_slist_prepend (parser->current_method->dns, parser->text_buffer);
++        parser->text_buffer = NULL;
++    } else if (!strcmp (name, "gateway")) {
++        parser->current_method->gateway = parser->text_buffer;
++        parser->text_buffer = NULL;
++    } else if (!strcmp (name, "cdma")) {
++        parser->current_method->type = SHELL_MOBILE_ACCESS_METHOD_TYPE_CDMA;
++        parser->current_method->dns = g_slist_reverse (parser->current_method->dns);
++
++        if (!parser->current_method->name)
++            parser->current_method->name = g_strdup (parser->current_provider->name);
++
++        parser->current_provider->methods = g_slist_prepend (parser->current_provider->methods,
++                                                             parser->current_method);
++        parser->current_method = NULL;
++        parser->text_buffer = NULL;
++        parser->state = PARSER_PROVIDER;
++    }
++}
++
++static void
++mobile_parser_end_element (GMarkupParseContext *context,
++                           const gchar *element_name,
++                           gpointer data,
++                           GError **error)
++{
++    MobileParser *parser = (MobileParser *) data;
++
++    switch (parser->state) {
++    case PARSER_COUNTRY:
++        parser_country_end (parser, element_name);
++        break;
++    case PARSER_PROVIDER:
++        parser_provider_end (parser, element_name);
++        break;
++    case PARSER_METHOD_GSM:
++        parser_gsm_end (parser, element_name);
++        break;
++    case PARSER_METHOD_GSM_APN:
++        parser_gsm_apn_end (parser, element_name);
++        break;
++    case PARSER_METHOD_CDMA:
++        parser_cdma_end (parser, element_name);
++        break;
++    default:
++        break;
++    }
++}
++
++static void
++mobile_parser_characters (GMarkupParseContext *context,
++                          const gchar *text,
++                          gsize text_len,
++                          gpointer data,
++                          GError **error)
++{
++    MobileParser *parser = (MobileParser *) data;
++
++    g_free (parser->text_buffer);
++    parser->text_buffer = g_strdup (text);
++}
++
++static const GMarkupParser mobile_parser = {
++    mobile_parser_start_element,
++    mobile_parser_end_element,
++    mobile_parser_characters,
++    NULL, /* passthrough */
++    NULL /* error */
++};
++
++/**
++ * shell_mobile_providers_parse:
++ * @out_ccs: (out) (allow-none): (element-type utf8 utf8): a #GHashTable containing
++ *   country codes
++ *
++ * Returns: (element-type utf8 GList<Shell.MobileProvider>) (transfer container): a
++ *   hash table where keys are country names 'char *', values are a 'GSList *'
++ *   of 'ShellMobileProvider *'. Everything is destroyed with g_hash_table_destroy ().
++*/
++GHashTable *
++shell_mobile_providers_parse (GHashTable **out_ccs)
++{
++    GMarkupParseContext *ctx;
++    GIOChannel *channel;
++    MobileParser parser;
++    GError *error = NULL;
++    char buffer[4096];
++    GIOStatus status;
++    gsize len = 0;
++
++    memset (&parser, 0, sizeof (MobileParser));
++
++    parser.country_codes = read_country_codes ();
++    if (!parser.country_codes)
++        goto out;
++
++    channel = g_io_channel_new_file (MOBILE_BROADBAND_PROVIDER_INFO, "r", &error);
++    if (!channel) {
++        if (error) {
++            g_warning ("Could not read " MOBILE_BROADBAND_PROVIDER_INFO ": %s", error->message);
++            g_error_free (error);
++        } else
++            g_warning ("Could not read " MOBILE_BROADBAND_PROVIDER_INFO ": Unknown error");
++
++        goto out;
++    }
++
++    parser.table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, provider_list_free);
++    parser.state = PARSER_TOPLEVEL;
++
++    ctx = g_markup_parse_context_new (&mobile_parser, 0, &parser, NULL);
++
++    status = G_IO_STATUS_NORMAL;
++    while (status == G_IO_STATUS_NORMAL) {
++        status = g_io_channel_read_chars (channel, buffer, sizeof (buffer), &len, &error);
++
++        switch (status) {
++        case G_IO_STATUS_NORMAL:
++            if (!g_markup_parse_context_parse (ctx, buffer, len, &error)) {
++                status = G_IO_STATUS_ERROR;
++                g_warning ("Error while parsing XML: %s", error->message);
++                g_error_free (error);;
++            }
++            break;
++        case G_IO_STATUS_EOF:
++            break;
++        case G_IO_STATUS_ERROR:
++            g_warning ("Error while reading: %s", error->message);
++            g_error_free (error);
++            break;
++        case G_IO_STATUS_AGAIN:
++            /* FIXME: Try again a few times, but really, it never happes, right? */
++            break;
++        }
++    }
++
++    g_io_channel_unref (channel);
++    g_markup_parse_context_free (ctx);
++
++    if (parser.current_provider) {
++        g_warning ("pending current provider");
++        shell_mobile_provider_unref (parser.current_provider);
++    }
++
++    if (parser.current_providers) {
++        g_warning ("pending current providers");
++        provider_list_free (parser.current_providers);
++    }
++
++    g_free (parser.current_country);
++    g_free (parser.text_buffer);
++
++ out:
++    if (parser.country_codes) {
++        if (out_ccs)
++            *out_ccs = parser.country_codes;
++        else
++            g_hash_table_destroy (parser.country_codes);
++    }
++
++    return parser.table;
++}
++
++static void
++dump_generic (ShellMobileAccessMethod *method)
++{
++    GSList *iter;
++    GString *dns;
++
++    g_print ("        username: %s\n", method->username ? method->username : "");
++    g_print ("        password: %s\n", method->password ? method->password : "");
++
++    dns = g_string_new (NULL);
++    for (iter = method->dns; iter; iter = g_slist_next (iter))
++        g_string_append_printf (dns, "%s%s", dns->len ? ", " : "", (char *) iter->data);
++    g_print ("        dns     : %s\n", dns->str);
++    g_string_free (dns, TRUE);
++
++    g_print ("        gateway : %s\n", method->gateway ? method->gateway : "");
++}
++
++static void
++dump_cdma (ShellMobileAccessMethod *method)
++{
++    g_print ("     CDMA: %s\n", method->name);
++
++    dump_generic (method);
++}
++
++static void
++dump_gsm (ShellMobileAccessMethod *method)
++{
++    g_print ("     APN: %s (%s)\n", method->name, method->gsm_apn);
++
++    dump_generic (method);
++}
++
++static void
++dump_country (gpointer key, gpointer value, gpointer user_data)
++{
++    GSList *citer, *miter;
++
++    for (citer = value; citer; citer = g_slist_next (citer)) {
++        ShellMobileProvider *provider = citer->data;
++
++        g_print ("Provider: %s (%s)\n", provider->name, (const char *) key);
++        for (miter = provider->methods; miter; miter = g_slist_next (miter)) {
++            ShellMobileAccessMethod *method = miter->data;
++            GSList *liter;
++
++
++            for (liter = provider->gsm_mcc_mnc; liter; liter = g_slist_next (liter)) {
++                ShellGsmMccMnc *m = liter->data;
++                g_print ("        MCC/MNC: %s-%s\n", m->mcc, m->mnc);
++            }
++
++            for (liter = provider->cdma_sid; liter; liter = g_slist_next (liter))
++                g_print ("        SID: %d\n", GPOINTER_TO_UINT (liter->data));
++
++            switch (method->type) {
++            case SHELL_MOBILE_ACCESS_METHOD_TYPE_CDMA:
++                dump_cdma (method);
++                break;
++            case SHELL_MOBILE_ACCESS_METHOD_TYPE_GSM:
++                dump_gsm (method);
++                break;
++            default:
++                break;
++            }
++            g_print ("\n");
++        }
++    }
++}
++
++void
++shell_mobile_providers_dump (GHashTable *providers)
++{
++    g_return_if_fail (providers != NULL);
++    g_hash_table_foreach (providers, dump_country, NULL);
++}
++
++/* All the following don't exist in nm-applet, because C doesn't need
++   those. They're only needed for the introspection annotations
++*/
++
++/**
++ * shell_mobile_provider_get_gsm_mcc_mnc:
++ * @provider: a #ShellMobileProvider
++ *
++ * Returns: (element-type Shell.GsmMccMnc) (transfer none): the
++ *   list of #ShellGsmMccMnc this provider exposes
++ */
++GSList *
++shell_mobile_provider_get_gsm_mcc_mnc (ShellMobileProvider *provider)
++{
++    return provider->gsm_mcc_mnc;
++}
++
++/**
++ * shell_mobile_provider_get_cdma_sid:
++ * @provider: a #ShellMobileProvider
++ *
++ * Returns: (element-type guint32) (transfer none): the
++ *   list of CDMA sids this provider exposes
++ */
++GSList *
++shell_mobile_provider_get_cdma_sid (ShellMobileProvider *provider)
++{
++    return provider->cdma_sid;
++}
+diff --git a/src/shell-mobile-providers.h b/src/shell-mobile-providers.h
+new file mode 100644
+index 0000000..d70b8e2
+--- /dev/null
++++ b/src/shell-mobile-providers.h
+@@ -0,0 +1,96 @@
++/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
++/*
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the
++ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
++ * Boston, MA 02110-1301 USA.
++ *
++ * Copyright (C) 2009 Novell, Inc.
++ * Author: Tambet Ingo (tambet@gmail.com).
++ *
++ * Copyright (C) 2009 - 2010 Red Hat, Inc.
++ *
++ * Ported to GNOME Shell by Giovanni Campagna <scampa.giovanni@gmail.com>
++ * Porting consisted only in replacing nmn with shell, to be compatible with
++ * GObject Introspection namespacing
++ */
++
++#ifndef SHELL_MOBILE_PROVIDERS_H
++#define SHELL_MOBILE_PROVIDERS_H
++
++#include <glib.h>
++#include <glib-object.h>
++
++#define SHELL_TYPE_MOBILE_PROVIDER (shell_mobile_provider_get_type ())
++#define SHELL_TYPE_MOBILE_ACCESS_METHOD (shell_mobile_access_method_get_type ())
++
++typedef enum {
++    SHELL_MOBILE_ACCESS_METHOD_TYPE_UNKNOWN = 0,
++    SHELL_MOBILE_ACCESS_METHOD_TYPE_GSM,
++    SHELL_MOBILE_ACCESS_METHOD_TYPE_CDMA
++} ShellMobileAccessMethodType;
++
++typedef struct {
++    char *mcc;
++    char *mnc;
++} ShellGsmMccMnc;
++
++typedef struct {
++    char *name;
++    /* maps lang (char *) -> name (char *) */
++    GHashTable *lcl_names;
++
++    char *username;
++    char *password;
++    char *gateway;
++    GSList *dns; /* GSList of 'char *' */
++
++    /* Only used with SHELL_PROVIDER_TYPE_GSM */
++    char *gsm_apn;
++
++    ShellMobileAccessMethodType type;
++
++    gint refs;
++} ShellMobileAccessMethod;
++
++typedef struct {
++    char *name;
++    /* maps lang (char *) -> name (char *) */
++    GHashTable *lcl_names;
++
++    GSList *methods; /* GSList of ShellMobileAccessMethod */
++
++    GSList *gsm_mcc_mnc; /* GSList of ShellGsmMccMnc */
++    GSList *cdma_sid; /* GSList of guint32 */
++
++    gint refs;
++} ShellMobileProvider;
++
++
++GType shell_gsm_mcc_mnc_get_type (void); /* added in porting */
++GType shell_mobile_provider_get_type (void);
++GType shell_mobile_access_method_get_type (void);
++
++ShellMobileProvider *shell_mobile_provider_ref   (ShellMobileProvider *provider);
++void                 shell_mobile_provider_unref (ShellMobileProvider *provider);
++GSList *             shell_mobile_provider_get_gsm_mcc_mnc (ShellMobileProvider *provider);
++GSList *             shell_mobile_provider_get_cdma_sid (ShellMobileProvider *provider);
++
++ShellMobileAccessMethod *shell_mobile_access_method_ref   (ShellMobileAccessMethod *method);
++void                     shell_mobile_access_method_unref (ShellMobileAccessMethod *method);
++
++GHashTable *shell_mobile_providers_parse (GHashTable **out_ccs);
++
++void shell_mobile_providers_dump (GHashTable *providers);
++
++#endif /* SHELL_MOBILE_PROVIDERS_H */
 diff --git a/tools/build/gnome-shell.modules b/tools/build/gnome-shell.modules
-index 3f51fa2..73332b8 100644
+index 6c8db09..837cb22 100644
 --- a/tools/build/gnome-shell.modules
 +++ b/tools/build/gnome-shell.modules
 @@ -9,6 +9,8 @@
@@ -2257,7 +3422,7 @@ index 3f51fa2..73332b8 100644
    <repository type="tarball" name="cairo.org"
        href="http://cairographics.org/"/>
    <repository type="tarball" name="0pointer.de"
-@@ -367,4 +369,19 @@
+@@ -369,4 +371,19 @@
      </dependencies>
  </autotools>
  

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 56f0b5b..39a2127 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -25,17 +25,18 @@ fi
 # FIXME: Automagic gnome-bluetooth[introspection] support.
 # latest mutter is needed due to commit 474ff2e997
 # latest gsettings-desktop-schemas is needed due to commit 602fa1c6
-COMMON_DEPEND=">=dev-libs/glib-2.25.9
+COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
 	>=dev-libs/gjs-0.7.11
 	>=dev-libs/gobject-introspection-0.10.1
 	x11-libs/gdk-pixbuf:2[introspection]
 	>=x11-libs/gtk+-3.0.0:3[introspection]
-	>=media-libs/clutter-1.5.15[introspection]
+	>=media-libs/clutter-1.5.15:1.0[introspection]
 	>=gnome-base/gnome-desktop-2.91.2:3
 	>=gnome-base/gsettings-desktop-schemas-2.91.91
 	>=gnome-extra/evolution-data-server-2.91.6
 	>=media-libs/gstreamer-0.10.16
 	>=media-libs/gst-plugins-base-0.10.16
+	>=net-im/telepathy-logger-0.2.4[introspection]
 	>=net-libs/telepathy-glib-0.13.12[introspection]
 	>=net-wireless/gnome-bluetooth-2.90.0[introspection]
 	>=sys-auth/polkit-0.100[introspection]
@@ -61,7 +62,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9
 # Each block:
 # 1. Introspection stuff + dconf needed via imports.gi.*
 # 2. gnome-session is needed for gnome-session-quit
-# 3. Don't remember
+# 3. Control shell settings
 # 4. nm-applet is needed for auth prompting and the wireless connection dialog
 RDEPEND="${COMMON_DEPEND}
 
@@ -92,7 +93,7 @@ src_prepare() {
 		ewarn "Adding support for the experimental NetworkManager applet."
 		ewarn "This needs the latest NetworkManager & nm-applet trunk."
 		ewarn "Report bugs about this to 'nirbheek' on #gentoo-desktop @ FreeNode."
-		epatch "${FILESDIR}/${PN}-experimental-nm-applet-1.4.patch"
+		epatch "${FILESDIR}/${PN}-experimental-nm-applet-1.5.patch"
 	fi
 
 	epatch "${FILESDIR}/${PN}-fix-gnome-bluetooth.patch"



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-03-23  5:20 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-03-23  5:20 UTC (permalink / raw
  To: gentoo-commits

commit:     94507d969053ae386770a097cc9b149dd910d3b7
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 23 04:08:34 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Wed Mar 23 04:59:57 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=94507d96

gnome-base/gnome-shell: 2.91.91 → 2.91.92

---
 .../files/gnome-shell-2.91.91-fix-build.patch      |   23 -------------
 ....91.91-r1.ebuild => gnome-shell-2.91.92.ebuild} |   35 +++++++++++++-------
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |    3 +-
 3 files changed, 25 insertions(+), 36 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-2.91.91-fix-build.patch b/gnome-base/gnome-shell/files/gnome-shell-2.91.91-fix-build.patch
deleted file mode 100644
index c54eb10..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-2.91.91-fix-build.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 49f6280645cdad7fa7f53633ce67ed5f7079a8dd Mon Sep 17 00:00:00 2001
-From: Dan Winship <danw@gnome.org>
-Date: Tue, 08 Mar 2011 16:47:14 +0000
-Subject: src: add more stuff to gnome_shell_real_LDADD
-
-to work with libtools that are more strict about not allowing
-transitive dependencies
----
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 40ce5de..1c3e1b6 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -140,7 +140,7 @@ libgnome_shell_la_gir_sources = \
- gnome_shell_real_SOURCES =		\
- 	main.c
- gnome_shell_real_CPPFLAGS = $(gnome_shell_cflags)
--gnome_shell_real_LDADD = libgnome-shell.la
-+gnome_shell_real_LDADD = libgnome-shell.la $(libgnome_shell_la_LIBADD)
- gnome_shell_real_DEPENDENCIES = libgnome-shell.la
- 
- ########################################
---
-cgit v0.8.3.4

diff --git a/gnome-base/gnome-shell/gnome-shell-2.91.91-r1.ebuild b/gnome-base/gnome-shell/gnome-shell-2.91.92.ebuild
similarity index 72%
rename from gnome-base/gnome-shell/gnome-shell-2.91.91-r1.ebuild
rename to gnome-base/gnome-shell/gnome-shell-2.91.92.ebuild
index a83050c..7e7c889 100644
--- a/gnome-base/gnome-shell/gnome-shell-2.91.91-r1.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-2.91.92.ebuild
@@ -6,14 +6,14 @@ EAPI="2"
 GCONF_DEBUG="no"
 GNOME2_LA_PUNT="yes"
 
-inherit autotools eutils gnome2
+inherit gnome2
 
 DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
 HOMEPAGE="http://live.gnome.org/GnomeShell"
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE=""
+IUSE="+nm-applet"
 if [[ ${PV} = 9999 ]]; then
 	inherit gnome2-live
 	KEYWORDS=""
@@ -23,22 +23,25 @@ fi
 
 # gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
 # FIXME: Automagic gnome-bluetooth[introspection] support.
+# latest mutter is needed due to commit 474ff2e9 and commit 079953c3
 # latest gsettings-desktop-schemas is needed due to commit 602fa1c6
-COMMON_DEPEND=">=dev-libs/glib-2.25.9
+# latest gnome-menus is needed due to https://bugzilla.gnome.org/show_bug.cgi?id=645063#c4
+COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
 	>=dev-libs/gjs-0.7.11
 	>=dev-libs/gobject-introspection-0.10.1
 	x11-libs/gdk-pixbuf:2[introspection]
 	>=x11-libs/gtk+-3.0.0:3[introspection]
-	>=media-libs/clutter-1.5.15[introspection]
+	>=media-libs/clutter-1.5.15:1.0[introspection]
 	>=gnome-base/gnome-desktop-2.91.2:3
 	>=gnome-base/gsettings-desktop-schemas-2.91.91
 	>=gnome-extra/evolution-data-server-2.91.6
 	>=media-libs/gstreamer-0.10.16
 	>=media-libs/gst-plugins-base-0.10.16
+	>=net-im/telepathy-logger-0.2.4[introspection]
 	>=net-libs/telepathy-glib-0.13.12[introspection]
 	>=net-wireless/gnome-bluetooth-2.90.0[introspection]
 	>=sys-auth/polkit-0.100[introspection]
-	>=x11-wm/mutter-2.91.91[introspection]
+	>=x11-wm/mutter-2.91.91.1[introspection]
 
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2
@@ -56,11 +59,13 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9
 	x11-apps/mesa-progs"
 # Runtime-only deps are probably incomplete and approximate.
 # Each block:
-# 1. Introspection stuff + dconf needed via imports.gi.*
-# 2. gnome-session is needed for gnome-session-quit
-# 3. Don't remember
-# 4. nm-applet is needed for auth prompting and the wireless connection dialog
+# 1. Pull in polkit-0.101 for pretty authorization dialogs
+# 2. Introspection stuff + dconf needed via imports.gi.*
+# 3. gnome-session is needed for gnome-session-quit
+# 4. Control shell settings
+# 5. nm-applet is needed for auth prompting and the wireless connection dialog
 RDEPEND="${COMMON_DEPEND}
+	>=sys-auth/polkit-0.101[introspection]
 
 	>=gnome-base/dconf-0.4.1
 	>=gnome-base/libgnomekbd-2.91.4[introspection]
@@ -69,7 +74,11 @@ RDEPEND="${COMMON_DEPEND}
 	>=gnome-base/gnome-session-2.91.91
 
 	>=gnome-base/gnome-settings-daemon-2.91
-	>=gnome-base/gnome-control-center-2.91"
+	>=gnome-base/gnome-control-center-2.91
+
+	nm-applet? (
+		>=gnome-extra/nm-applet-0.8.996
+		>=net-misc/networkmanager-0.8.996-r1[introspection] )"
 DEPEND="${COMMON_DEPEND}
 	sys-devel/gettext
 	>=dev-util/pkgconfig-0.22
@@ -83,8 +92,10 @@ G2CONF="--enable-compile-warnings=maximum
 
 src_prepare() {
 	epatch "${FILESDIR}/${PN}-fix-gnome-bluetooth.patch"
-	epatch "${FILESDIR}/${P}-fix-build.patch"
-	eautoreconf
+
+	# https://bugzilla.gnome.org/show_bug.cgi?id=645063
+	sed -e 's/settings.menu/gnomecc.menu/g' -i src/shell-app-system.c || die
+
 	gnome2_src_prepare
 }
 

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 6ba5622..746de21 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -25,6 +25,7 @@ fi
 # FIXME: Automagic gnome-bluetooth[introspection] support.
 # latest mutter is needed due to commit 474ff2e9 and commit 079953c3
 # latest gsettings-desktop-schemas is needed due to commit 602fa1c6
+# latest gnome-menus is needed due to https://bugzilla.gnome.org/show_bug.cgi?id=645063#c4
 COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
 	>=dev-libs/gjs-0.7.11
 	>=dev-libs/gobject-introspection-0.10.1
@@ -32,6 +33,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
 	>=x11-libs/gtk+-3.0.0:3[introspection]
 	>=media-libs/clutter-1.5.15:1.0[introspection]
 	>=gnome-base/gnome-desktop-2.91.2:3
+	>=gnome-base/gnome-menus-2.91.91-r1
 	>=gnome-base/gsettings-desktop-schemas-2.91.91
 	>=gnome-extra/evolution-data-server-2.91.6
 	>=media-libs/gstreamer-0.10.16
@@ -48,7 +50,6 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
 	dev-libs/libcroco:0.6
 
 	gnome-base/gconf[introspection]
-	gnome-base/gnome-menus
 	gnome-base/librsvg
 	media-libs/libcanberra
 	media-sound/pulseaudio



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-03-29  8:36 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-03-29  8:36 UTC (permalink / raw
  To: gentoo-commits

commit:     ca6673d0fbbcf9053b251f5618d9904d335171ec
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Tue Mar 29 08:00:21 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Tue Mar 29 08:35:25 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=ca6673d0

gnome-base/gnome-shell: 2.91.92 → 2.91.93

---
 .../files/gnome-shell-fix-gnome-bluetooth.patch    |   20 --------------------
 ...l-2.91.92.ebuild => gnome-shell-2.91.93.ebuild} |   12 +-----------
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |   12 +-----------
 3 files changed, 2 insertions(+), 42 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-fix-gnome-bluetooth.patch b/gnome-base/gnome-shell/files/gnome-shell-fix-gnome-bluetooth.patch
deleted file mode 100644
index 3a6e994..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-fix-gnome-bluetooth.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- src/main.c
-+++ src/main.c
-@@ -458,3 +458,17 @@ main (int argc, char **argv)
- 
-   return meta_run ();
- }
-+
-+#if HAVE_BLUETOOTH
-+/* HACK:
-+   Add a non-static function that calls into libgnome-bluetooth-applet.so,
-+   to avoid the linker being too smart and removing the dependency.
-+   This function is never actually called.
-+*/
-+extern GType bluetooth_applet_get_type(void);
-+void _shell_link_to_bluetooth(void);
-+
-+void _shell_link_to_bluetooth(void) {
-+  bluetooth_applet_get_type();
-+}
-+#endif

diff --git a/gnome-base/gnome-shell/gnome-shell-2.91.92.ebuild b/gnome-base/gnome-shell/gnome-shell-2.91.93.ebuild
similarity index 90%
rename from gnome-base/gnome-shell/gnome-shell-2.91.92.ebuild
rename to gnome-base/gnome-shell/gnome-shell-2.91.93.ebuild
index ca39314..b31d84a 100644
--- a/gnome-base/gnome-shell/gnome-shell-2.91.92.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-2.91.93.ebuild
@@ -23,7 +23,6 @@ fi
 
 # gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
 # FIXME: Automagic gnome-bluetooth[introspection] support.
-# latest mutter is needed due to commit 474ff2e9 and commit 079953c3
 # latest gsettings-desktop-schemas is needed due to commit 602fa1c6
 # latest g-c-c is needed due to https://bugs.gentoo.org/show_bug.cgi?id=360057
 COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
@@ -41,7 +40,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
 	>=net-libs/telepathy-glib-0.13.12[introspection]
 	>=net-wireless/gnome-bluetooth-2.90.0[introspection]
 	>=sys-auth/polkit-0.100[introspection]
-	>=x11-wm/mutter-2.91.91.1[introspection]
+	>=x11-wm/mutter-2.91.93[introspection]
 
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2
@@ -93,15 +92,6 @@ G2CONF="--enable-compile-warnings=maximum
 --disable-schemas-compile
 --disable-jhbuild-wrapper-script"
 
-src_prepare() {
-	epatch "${FILESDIR}/${PN}-fix-gnome-bluetooth.patch"
-
-	# https://bugzilla.gnome.org/show_bug.cgi?id=645063
-	sed -e 's/settings.menu/gnomecc.menu/g' -i src/shell-app-system.c || die
-
-	gnome2_src_prepare
-}
-
 pkg_postinst() {
 	gnome2_pkg_postinst
 	if ! has_version '>=media-libs/gst-plugins-good-0.10.23' || \

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index ca39314..b31d84a 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -23,7 +23,6 @@ fi
 
 # gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
 # FIXME: Automagic gnome-bluetooth[introspection] support.
-# latest mutter is needed due to commit 474ff2e9 and commit 079953c3
 # latest gsettings-desktop-schemas is needed due to commit 602fa1c6
 # latest g-c-c is needed due to https://bugs.gentoo.org/show_bug.cgi?id=360057
 COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
@@ -41,7 +40,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
 	>=net-libs/telepathy-glib-0.13.12[introspection]
 	>=net-wireless/gnome-bluetooth-2.90.0[introspection]
 	>=sys-auth/polkit-0.100[introspection]
-	>=x11-wm/mutter-2.91.91.1[introspection]
+	>=x11-wm/mutter-2.91.93[introspection]
 
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2
@@ -93,15 +92,6 @@ G2CONF="--enable-compile-warnings=maximum
 --disable-schemas-compile
 --disable-jhbuild-wrapper-script"
 
-src_prepare() {
-	epatch "${FILESDIR}/${PN}-fix-gnome-bluetooth.patch"
-
-	# https://bugzilla.gnome.org/show_bug.cgi?id=645063
-	sed -e 's/settings.menu/gnomecc.menu/g' -i src/shell-app-system.c || die
-
-	gnome2_src_prepare
-}
-
 pkg_postinst() {
 	gnome2_pkg_postinst
 	if ! has_version '>=media-libs/gst-plugins-good-0.10.23' || \



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-06-02 14:43 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-06-02 14:43 UTC (permalink / raw
  To: gentoo-commits

commit:     ae871665493d7dbd965a703d3958ffc786c8e17f
Author:     Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
AuthorDate: Sun May 29 21:17:35 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Thu Jun  2 14:07:45 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=ae871665

gnome-base/gnome-shell: 3.0.1-r2 → 3.0.2

Version bump with lots of bugs fixed, memory leaks plugged, and
networkmanager support improved. Tarball of patches no longer needed
(0001-0006 were applied upstream; 0007 replaced with updated
gnome-shell-3.0.2-user-removed-signals.patch). Update networkmanager
dependencies to 0.8.999. Add accountsservice runtime dependency (needed
for GdmUserManager).

Signed-off-by: Nirbheek Chauhan <nirbheek <AT> gentoo.org>

---
 .../gnome-shell-3.0.2-user-removed-signals.patch   |   33 ++++++++++++++++++++
 ...ll-3.0.1-r2.ebuild => gnome-shell-3.0.2.ebuild} |   17 ++++++----
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |    9 +++--
 3 files changed, 49 insertions(+), 10 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.0.2-user-removed-signals.patch b/gnome-base/gnome-shell/files/gnome-shell-3.0.2-user-removed-signals.patch
new file mode 100644
index 0000000..adae1f0
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.0.2-user-removed-signals.patch
@@ -0,0 +1,33 @@
+From 9a7f3dbd2030a5e1b54297f1aa7cf228eccafb27 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Tue, 24 May 2011 22:15:10 -0400
+Subject: [PATCH] gdm: ignore user-removed signals for untracked users
+
+If we don't know about a user, we don't care if it goes away,
+and we shouldn't try to remove it from the book keeping.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=647893
+---
+ src/gdmuser/gdm-user-manager.c |    7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/src/gdmuser/gdm-user-manager.c b/src/gdmuser/gdm-user-manager.c
+index e7ca833..561be32 100644
+--- a/src/gdmuser/gdm-user-manager.c
++++ b/src/gdmuser/gdm-user-manager.c
+@@ -887,6 +887,13 @@ on_user_removed_in_accounts_service (DBusGProxy *proxy,
+ 
+         user = g_hash_table_lookup (manager->priv->users_by_object_path, object_path);
+ 
++        if (user == NULL) {
++                g_debug ("GdmUserManager: ignoring untracked user %s", object_path);
++                return;
++        } else {
++                g_debug ("GdmUserManager: tracked user %s removed from accounts service", object_path);
++        }
++
+         manager->priv->new_users = g_slist_remove (manager->priv->new_users, user);
+ 
+         remove_user (manager, user);
+-- 
+1.7.5.1
\ No newline at end of file

diff --git a/gnome-base/gnome-shell/gnome-shell-3.0.1-r2.ebuild b/gnome-base/gnome-shell/gnome-shell-3.0.2.ebuild
similarity index 88%
rename from gnome-base/gnome-shell/gnome-shell-3.0.1-r2.ebuild
rename to gnome-base/gnome-shell/gnome-shell-3.0.2.ebuild
index 195ff41..c442b19 100644
--- a/gnome-base/gnome-shell/gnome-shell-3.0.1-r2.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.0.2.ebuild
@@ -7,15 +7,13 @@ GCONF_DEBUG="no"
 GNOME2_LA_PUNT="yes"
 PYTHON_DEPEND="2:2.5"
 
-inherit gnome2
+inherit eutils gnome2
 if [[ ${PV} = 9999 ]]; then
 	inherit gnome2-live
 fi
 
 DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
 HOMEPAGE="http://live.gnome.org/GnomeShell"
-SRC_URI="${SRC_URI}
-	mirror://gentoo/${P}-patches-0.1.tar.xz"
 
 LICENSE="GPL-2"
 SLOT="0"
@@ -68,7 +66,8 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
 # 2. Introspection stuff + dconf needed via imports.gi.*
 # 3. gnome-session is needed for gnome-session-quit
 # 4. Control shell settings
-# 5. nm-applet is needed for auth prompting and the wireless connection dialog
+# 5. accountsservice is needed for GdmUserManager
+# 6. nm-applet is needed for auth prompting and the wireless connection dialog
 RDEPEND="${COMMON_DEPEND}
 	>=sys-auth/polkit-0.101[introspection]
 
@@ -81,9 +80,11 @@ RDEPEND="${COMMON_DEPEND}
 	>=gnome-base/gnome-settings-daemon-2.91
 	>=gnome-base/gnome-control-center-2.91.92-r1
 
+	>=sys-apps/accountsservice-0.6.12
+
 	nm-applet? (
-		>=gnome-extra/nm-applet-0.8.997
-		>=net-misc/networkmanager-0.8.997[introspection] )"
+		>=gnome-extra/nm-applet-0.8.999
+		>=net-misc/networkmanager-0.8.999[introspection] )"
 DEPEND="${COMMON_DEPEND}
 	sys-devel/gettext
 	>=dev-util/pkgconfig-0.22
@@ -103,7 +104,9 @@ pkg_setup() {
 }
 
 src_prepare() {
-	EPATCH_SUFFIX="patch" epatch "${WORKDIR}"
+	# https://bugzilla.gnome.org/show_bug.cgi?id=647893
+	# can trigger the crash even with accountsservice-0.6.12
+	epatch "${FILESDIR}/${PN}-3.0.2-user-removed-signals.patch"
 	gnome2_src_prepare
 }
 

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index ba5b1b5..10ac892 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -66,7 +66,8 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
 # 2. Introspection stuff + dconf needed via imports.gi.*
 # 3. gnome-session is needed for gnome-session-quit
 # 4. Control shell settings
-# 5. nm-applet is needed for auth prompting and the wireless connection dialog
+# 5. accountsservice is needed for GdmUserManager
+# 6. nm-applet is needed for auth prompting and the wireless connection dialog
 RDEPEND="${COMMON_DEPEND}
 	>=sys-auth/polkit-0.101[introspection]
 
@@ -79,9 +80,11 @@ RDEPEND="${COMMON_DEPEND}
 	>=gnome-base/gnome-settings-daemon-2.91
 	>=gnome-base/gnome-control-center-2.91.92-r1
 
+	>=sys-apps/accountsservice-0.6.12
+
 	nm-applet? (
-		>=gnome-extra/nm-applet-0.8.997
-		>=net-misc/networkmanager-0.8.997[introspection] )"
+		>=gnome-extra/nm-applet-0.8.999
+		>=net-misc/networkmanager-0.8.999[introspection] )"
 DEPEND="${COMMON_DEPEND}
 	sys-devel/gettext
 	>=dev-util/pkgconfig-0.22



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-08-27  2:08 Alexandre Restovtsev
  0 siblings, 0 replies; 25+ messages in thread
From: Alexandre Restovtsev @ 2011-08-27  2:08 UTC (permalink / raw
  To: gentoo-commits

commit:     0bcd359b6b83516c55bf14a0d8ae2ffecf04f935
Author:     Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
AuthorDate: Sat Aug 27 02:04:28 2011 +0000
Commit:     Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
CommitDate: Sat Aug 27 02:07:48 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=0bcd359b

gnome-base/gnome-shell: 3.0.2 → 3.0.2-r1

Add a patch from upstream git master that prevents gnome-shell from
clobbering extensions' styles. Makes shell extensions look tremendously
better. See https://bugzilla.gnome.org/show_bug.cgi?id=650971

---
 .../gnome-shell-3.0.2-unbreak-extension-css.patch  |   93 ++++++++++++++++++++
 ...ll-3.0.2.ebuild => gnome-shell-3.0.2-r1.ebuild} |    4 +
 2 files changed, 97 insertions(+), 0 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.0.2-unbreak-extension-css.patch b/gnome-base/gnome-shell/files/gnome-shell-3.0.2-unbreak-extension-css.patch
new file mode 100644
index 0000000..75c6aee
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.0.2-unbreak-extension-css.patch
@@ -0,0 +1,93 @@
+From 2674d96e547b27ed5c377804c1059bdfd926086e Mon Sep 17 00:00:00 2001
+From: Giovanni Campagna <gcampagna@src.gnome.org>
+Date: Thu, 02 Jun 2011 15:05:08 +0000
+Subject: StTheme: retrive the list of custom stylesheets and use it in loadTheme()
+
+Using the list of stylesheets loaded with st_theme_load_stylesheet(),
+one can build an StTheme that is completely identical to the previous
+one, except for one property (application-stylesheet).
+This allows rt and the user-theme extension to work while respecting
+the theming of other extensions.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=650971
+---
+diff --git a/js/ui/main.js b/js/ui/main.js
+index 1d27b4c..c0f4845 100644
+--- a/js/ui/main.js
++++ b/js/ui/main.js
+@@ -393,12 +393,21 @@ function setThemeStylesheet(cssStylesheet)
+  */
+ function loadTheme() {
+     let themeContext = St.ThemeContext.get_for_stage (global.stage);
++    let previousTheme = themeContext.get_theme();
+ 
+     let cssStylesheet = _defaultCssStylesheet;
+     if (_cssStylesheet != null)
+         cssStylesheet = _cssStylesheet;
+ 
+     let theme = new St.Theme ({ application_stylesheet: cssStylesheet });
++
++    if (previousTheme) {
++        let customStylesheets = previousTheme.get_custom_stylesheets();
++
++        for (let i = 0; i < customStylesheets.length; i++)
++            theme.load_stylesheet(customStylesheets[i]);
++    }
++
+     themeContext.set_theme (theme);
+ }
+ 
+diff --git a/src/st/st-theme.c b/src/st/st-theme.c
+index 326d9de..2058e32 100644
+--- a/src/st/st-theme.c
++++ b/src/st/st-theme.c
+@@ -256,6 +256,30 @@ st_theme_unload_stylesheet (StTheme    *theme,
+   cr_stylesheet_unref (stylesheet);
+ }
+ 
++/**
++ * st_theme_get_custom_stylesheets:
++ * @theme: an #StTheme
++ *
++ * Returns: (transfer full) (element-type utf8): the list of stylesheet filenames
++ *          that were loaded with st_theme_load_stylesheet()
++ */
++GSList*
++st_theme_get_custom_stylesheets (StTheme *theme)
++{
++  GSList *result = NULL;
++  GSList *iter;
++
++  for (iter = theme->custom_stylesheets; iter; iter = iter->next)
++    {
++      CRStyleSheet *stylesheet = iter->data;
++      gchar *filename = g_hash_table_lookup (theme->filenames_by_stylesheet, stylesheet);
++
++      result = g_slist_prepend (result, g_strdup (filename));
++    }
++
++  return result;
++}
++
+ static GObject *
+ st_theme_constructor (GType                  type,
+                       guint                  n_construct_properties,
+diff --git a/src/st/st-theme.h b/src/st/st-theme.h
+index 003c2a7..0a044bf 100644
+--- a/src/st/st-theme.h
++++ b/src/st/st-theme.h
+@@ -51,9 +51,9 @@ StTheme *st_theme_new (const char *application_stylesheet,
+                        const char *theme_stylesheet,
+                        const char *default_stylesheet);
+ 
+-gboolean st_theme_load_stylesheet (StTheme *theme, const char *path, GError **error);
+-
+-void st_theme_unload_stylesheet (StTheme *theme, const char *path);
++gboolean  st_theme_load_stylesheet        (StTheme *theme, const char *path, GError **error);
++void      st_theme_unload_stylesheet      (StTheme *theme, const char *path);
++GSList   *st_theme_get_custom_stylesheets (StTheme *theme);
+ 
+ G_END_DECLS
+ 
+--
+cgit v0.9.0.2

diff --git a/gnome-base/gnome-shell/gnome-shell-3.0.2.ebuild b/gnome-base/gnome-shell/gnome-shell-3.0.2-r1.ebuild
similarity index 96%
rename from gnome-base/gnome-shell/gnome-shell-3.0.2.ebuild
rename to gnome-base/gnome-shell/gnome-shell-3.0.2-r1.ebuild
index 63532c6..d14bd64 100644
--- a/gnome-base/gnome-shell/gnome-shell-3.0.2.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.0.2-r1.ebuild
@@ -108,6 +108,10 @@ src_prepare() {
 	# https://bugzilla.gnome.org/show_bug.cgi?id=647893
 	# can trigger the crash even with accountsservice-0.6.12
 	epatch "${FILESDIR}/${PN}-3.0.2-user-removed-signals.patch"
+
+	# https://bugzilla.gnome.org/show_bug.cgi?id=650971
+	# Don't clobber extensions' styles
+	epatch "${FILESDIR}/${PN}-3.0.2-unbreak-extension-css.patch"
 	gnome2_src_prepare
 }
 



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-10-18  7:37 Alexandre Restovtsev
  0 siblings, 0 replies; 25+ messages in thread
From: Alexandre Restovtsev @ 2011-10-18  7:37 UTC (permalink / raw
  To: gentoo-commits

commit:     f9b47fc92d247f68563922453aa33409b36eb927
Author:     Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
AuthorDate: Tue Oct 18 05:24:18 2011 +0000
Commit:     Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
CommitDate: Tue Oct 18 05:24:18 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=f9b47fc9

gnome-base/gnome-shell: 3.2.0 → 3.2.1

Bump with numerous fixes and improvements. Patches were applied
upstream. Update mutter dependency.

Also, drop gnome-shell-3.1.4 since it is compatible neither with
gnome-3.0 nor with 3.2, and since gnome-shell-extensions-3.2 have been
released.

---
 .../files/gnome-shell-3.1.4-gi-1.29.17.patch       |   82 -------------
 ...gnome-shell-3.2.0-boxpointer-multimonitor.patch |   81 ------------
 .../gnome-shell-3.2.0-recorder-coglhandle.patch    |   41 ------
 ...2.0-st-texture-cache-non-serialized-icons.patch |   47 -------
 gnome-base/gnome-shell/gnome-shell-3.1.4.ebuild    |  129 --------------------
 ...ll-3.2.0-r1.ebuild => gnome-shell-3.2.1.ebuild} |   15 +--
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |    2 +-
 7 files changed, 3 insertions(+), 394 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.1.4-gi-1.29.17.patch b/gnome-base/gnome-shell/files/gnome-shell-3.1.4-gi-1.29.17.patch
deleted file mode 100644
index 6aebc44..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-3.1.4-gi-1.29.17.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 92d0cce50c9baac2a24d840b1db39f2627a02480 Mon Sep 17 00:00:00 2001
-From: Dan Winship <danw@gnome.org>
-Date: Tue, 30 Aug 2011 12:07:11 -0400
-Subject: [PATCH] Add some (element-type) annotations to appease g-i master
-
-[Alexandre Rostovtsev <tetromino@gmail.com>: backport to 3.1.4]
----
- src/gvc/gvc-mixer-card.c   |    9 +++++++++
- src/gvc/gvc-mixer-stream.c |    9 +++++++++
- src/shell-app-system.c     |    2 +-
- 3 files changed, 19 insertions(+), 1 deletions(-)
-
-diff --git a/src/gvc/gvc-mixer-card.c b/src/gvc/gvc-mixer-card.c
-index 56502e3..168bc79 100644
---- a/src/gvc/gvc-mixer-card.c
-+++ b/src/gvc/gvc-mixer-card.c
-@@ -263,6 +263,11 @@ gvc_mixer_card_change_profile (GvcMixerCard *card,
-         return TRUE;
- }
- 
-+/**
-+ * gvc_mixer_card_get_profiles:
-+ *
-+ * Return value: (transfer none) (element-type GvcMixerCardProfile):
-+ */
- const GList *
- gvc_mixer_card_get_profiles (GvcMixerCard *card)
- {
-@@ -281,6 +286,10 @@ sort_profiles (GvcMixerCardProfile *a,
-         return -1;
- }
- 
-+/**
-+ * gvc_mixer_card_set_profiles:
-+ * @profiles: (transfer full) (element-type GvcMixerCardProfile):
-+ */
- gboolean
- gvc_mixer_card_set_profiles (GvcMixerCard *card,
-                              GList        *profiles)
-diff --git a/src/gvc/gvc-mixer-stream.c b/src/gvc/gvc-mixer-stream.c
-index 78de6b3..f35954a 100644
---- a/src/gvc/gvc-mixer-stream.c
-+++ b/src/gvc/gvc-mixer-stream.c
-@@ -508,6 +508,11 @@ gvc_mixer_stream_change_port (GvcMixerStream *stream,
-         return GVC_MIXER_STREAM_GET_CLASS (stream)->change_port (stream, port);
- }
- 
-+/**
-+ * gvc_mixer_stream_get_ports:
-+ *
-+ * Return value: (transfer none) (element-type GvcMixerStreamPort):
-+ */
- const GList *
- gvc_mixer_stream_get_ports (GvcMixerStream *stream)
- {
-@@ -526,6 +531,10 @@ sort_ports (GvcMixerStreamPort *a,
-         return -1;
- }
- 
-+/**
-+ * gvc_mixer_stream_set_ports:
-+ * @ports: (transfer full) (element-type GvcMixerStreamPort):
-+ */
- gboolean
- gvc_mixer_stream_set_ports (GvcMixerStream *stream,
-                             GList          *ports)
-diff --git a/src/shell-app-system.c b/src/shell-app-system.c
-index b52625a..a578e69 100644
---- a/src/shell-app-system.c
-+++ b/src/shell-app-system.c
-@@ -1399,7 +1399,7 @@ _gather_pid_callback (GDesktopAppInfo   *gapp,
- /**
-  * shell_app_info_launch_full:
-  * @timestamp: Event timestamp, or 0 for current event timestamp
-- * @uris: List of uris to pass to application
-+ * @uris: (element-type utf8): List of uris to pass to application
-  * @workspace: Start on this workspace, or -1 for default
-  * @startup_id: (out): Returned startup notification ID, or %NULL if none
-  * @error: A #GError
--- 
-1.7.6.1
-

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.2.0-boxpointer-multimonitor.patch b/gnome-base/gnome-shell/files/gnome-shell-3.2.0-boxpointer-multimonitor.patch
deleted file mode 100644
index 4d8497c..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-3.2.0-boxpointer-multimonitor.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 7a8a189c483b48de581c490a44d69030ba7a6923 Mon Sep 17 00:00:00 2001
-From: Jasper St. Pierre <jstpierre@mecheye.net>
-Date: Thu, 22 Sep 2011 19:52:58 +0000
-Subject: boxpointer: Don't constrain box pointer to primary monitor
-
-A boxPointer should be able to be attached to any actor, not just ones on the
-primary monitor. Assume that the sourceActor doesn't straddle monitors, and
-constrain the boxPointer to the monitor the sourceActor is on.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=659861
----
-diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js
-index 1523ef6..979e2d1 100644
---- a/js/ui/boxpointer.js
-+++ b/js/ui/boxpointer.js
-@@ -329,7 +329,7 @@ BoxPointer.prototype = {
-         // We also want to keep it onscreen, and separated from the
-         // edge by the same distance as the main part of the box is
-         // separated from its sourceActor
--        let primary = Main.layoutManager.primaryMonitor;
-+        let monitor = Main.layoutManager.findMonitorForActor(sourceActor);
-         let themeNode = this.actor.get_theme_node();
-         let borderWidth = themeNode.get_length('-arrow-border-width');
-         let arrowBase = themeNode.get_length('-arrow-base');
-@@ -364,8 +364,8 @@ BoxPointer.prototype = {
-         case St.Side.BOTTOM:
-             resX = sourceCenterX - (halfMargin + (natWidth - margin) * alignment);
- 
--            resX = Math.max(resX, primary.x + 10);
--            resX = Math.min(resX, primary.x + primary.width - (10 + natWidth));
-+            resX = Math.max(resX, monitor.x + 10);
-+            resX = Math.min(resX, monitor.x + monitor.width - (10 + natWidth));
-             this.setArrowOrigin(sourceCenterX - resX);
-             break;
- 
-@@ -373,8 +373,8 @@ BoxPointer.prototype = {
-         case St.Side.RIGHT:
-             resY = sourceCenterY - (halfMargin + (natHeight - margin) * alignment);
- 
--            resY = Math.max(resY, primary.y + 10);
--            resY = Math.min(resY, primary.y + primary.height - (10 + natHeight));
-+            resY = Math.max(resY, monitor.y + 10);
-+            resY = Math.min(resY, monitor.y + monitor.height - (10 + natHeight));
- 
-             this.setArrowOrigin(sourceCenterY - resY);
-             break;
-diff --git a/js/ui/layout.js b/js/ui/layout.js
-index d473ae0..f21fcca 100644
---- a/js/ui/layout.js
-+++ b/js/ui/layout.js
-@@ -369,6 +369,10 @@ LayoutManager.prototype = {
-     // Removes @actor from the chrome
-     removeChrome: function(actor) {
-         this._chrome.removeActor(actor);
-+    },
-+
-+    findMonitorForActor: function(actor) {
-+        return this._chrome.findMonitorForActor(actor);
-     }
- };
- Signals.addSignalMethods(LayoutManager.prototype);
-@@ -700,7 +704,7 @@ Chrome.prototype = {
-             else if (this._inOverview)
-                 visible = true;
-             else if (!actorData.visibleInFullscreen &&
--                     this._findMonitorForActor(actorData.actor).inFullscreen)
-+                     this.findMonitorForActor(actorData.actor).inFullscreen)
-                 visible = false;
-             else
-                 visible = true;
-@@ -762,7 +766,7 @@ Chrome.prototype = {
- 
-     // This call guarantees that we return some monitor to simplify usage of it
-     // In practice all tracked actors should be visible on some monitor anyway
--    _findMonitorForActor: function(actor) {
-+    findMonitorForActor: function(actor) {
-         let [x, y] = actor.get_transformed_position();
-         let [w, h] = actor.get_transformed_size();
-         let monitor = this._findMonitorForRect(x, y, w, h);
---
-cgit v0.9.0.2

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.2.0-recorder-coglhandle.patch b/gnome-base/gnome-shell/files/gnome-shell-3.2.0-recorder-coglhandle.patch
deleted file mode 100644
index c9d3f41..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-3.2.0-recorder-coglhandle.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 4e9e91fdce7b887bc2fea99b36b6fad4a5cea2c6 Mon Sep 17 00:00:00 2001
-From: Florian Müllner <fmuellner@gnome.org>
-Date: Wed, 21 Sep 2011 22:58:08 +0000
-Subject: recorder: Use CoglHandle instead of CoglHandle*
-
-The latter has always been wrong and should have been fixed a
-while ago, but somehow we overlooked shell-recorder.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=659822
----
-diff --git a/src/shell-recorder.c b/src/shell-recorder.c
-index 9df14d3..a624389 100644
---- a/src/shell-recorder.c
-+++ b/src/shell-recorder.c
-@@ -54,7 +54,7 @@ struct _ShellRecorder {
-   gboolean have_xfixes;
-   int xfixes_event_base;
- 
--  CoglHandle *recording_icon; /* icon shown while playing */
-+  CoglHandle recording_icon; /* icon shown while playing */
- 
-   cairo_surface_t *cursor_image;
-   int cursor_hot_x;
-@@ -160,13 +160,13 @@ G_DEFINE_TYPE(ShellRecorder, shell_recorder, G_TYPE_OBJECT);
-  * recording. The emblem is drawn *after* we record the frame so doesn't
-  * show up in the frame.
-  */
--static CoglHandle *
-+static CoglHandle
- create_recording_icon (void)
- {
-   cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 32, 32);
-   cairo_t *cr;
-   cairo_pattern_t *pat;
--  CoglHandle *texture;
-+  CoglHandle texture;
- 
-   cr = cairo_create (surface);
- 
---
-cgit v0.9.0.2

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.2.0-st-texture-cache-non-serialized-icons.patch b/gnome-base/gnome-shell/files/gnome-shell-3.2.0-st-texture-cache-non-serialized-icons.patch
deleted file mode 100644
index 73b51da..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-3.2.0-st-texture-cache-non-serialized-icons.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From e49a595f54b14d681ad01c8da1886ff659080e10 Mon Sep 17 00:00:00 2001
-From: Florian Müllner <fmuellner@gnome.org>
-Date: Fri, 30 Sep 2011 17:57:09 +0000
-Subject: st-texture-cache: Don't cache GIcons which cannot be serialized
-
-For GIcons we use g_icon_to_string() in the key, but the function
-will return NULL if the icon cannot be serialized. As a result,
-all non-serializable GIcons of the same size end up with the same
-cache key - an example for this are contacts with avatars, which
-currently all end up with the same image.
-To fix, opt out of caching for GIcons which cannot be serialized.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=660585
----
-diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c
-index 24471bc..1e83a0d 100644
---- a/src/st/st-texture-cache.c
-+++ b/src/st/st-texture-cache.c
-@@ -1177,8 +1177,15 @@ load_gicon_with_colors (StTextureCache    *cache,
-   char *key;
-   GtkIconTheme *theme;
-   GtkIconInfo *info;
-+  StTextureCachePolicy policy;
- 
-   gicon_string = g_icon_to_string (icon);
-+  /* A return value of NULL indicates that the icon can not be serialized,
-+   * so don't have a unique identifier for it as a cache key, and thus can't
-+   * be cached. If it is cachable, we hardcode a policy of FOREVER here for
-+   * now; we should actually blow this away on icon theme changes probably */
-+  policy = gicon_string != NULL ? ST_TEXTURE_CACHE_POLICY_FOREVER
-+                                : ST_TEXTURE_CACHE_POLICY_NONE;
-   if (colors)
-     {
-       /* This raises some doubts about the practice of using string keys */
-@@ -1210,9 +1217,7 @@ load_gicon_with_colors (StTextureCache    *cache,
-     {
-       /* Transfer ownership of key */
-       request->key = key;
--      /* hardcoded here for now; we should actually blow this away on
--       * icon theme changes probably */
--      request->policy = ST_TEXTURE_CACHE_POLICY_FOREVER;
-+      request->policy = policy;
-       request->icon = g_object_ref (icon);
-       request->icon_info = info;
-       request->width = request->height = size;
---
-cgit v0.9.0.2

diff --git a/gnome-base/gnome-shell/gnome-shell-3.1.4.ebuild b/gnome-base/gnome-shell/gnome-shell-3.1.4.ebuild
deleted file mode 100644
index d0c4ba3..0000000
--- a/gnome-base/gnome-shell/gnome-shell-3.1.4.ebuild
+++ /dev/null
@@ -1,129 +0,0 @@
-# Copyright 1999-2011 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-EAPI="3"
-GNOME_TARBALL_SUFFIX="xz"
-GCONF_DEBUG="no"
-GNOME2_LA_PUNT="yes"
-PYTHON_DEPEND="2:2.5"
-
-inherit gnome2 python
-if [[ ${PV} = 9999 ]]; then
-	inherit gnome2-live
-fi
-
-DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
-HOMEPAGE="http://live.gnome.org/GnomeShell"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="+nm-applet"
-if [[ ${PV} = 9999 ]]; then
-	KEYWORDS=""
-else
-	KEYWORDS="~amd64 ~x86"
-fi
-
-# gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
-# FIXME: Automagic gnome-bluetooth[introspection] support.
-# latest gsettings-desktop-schemas is needed due to commit 602fa1c6
-# latest g-c-c is needed due to https://bugs.gentoo.org/show_bug.cgi?id=360057
-# libXfixes-5.0 needed for pointer barriers
-COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
-	>=dev-libs/gjs-1.29.15
-	>=dev-libs/gobject-introspection-0.10.1
-	x11-libs/gdk-pixbuf:2[introspection]
-	>=x11-libs/gtk+-3.0.0:3[introspection]
-	>=media-libs/clutter-1.7.5:1.0[introspection]
-	>=gnome-base/gnome-desktop-2.91.2:3
-	>=gnome-base/gsettings-desktop-schemas-2.91.91
-	>=gnome-extra/evolution-data-server-2.91.6
-	>=media-libs/gstreamer-0.10.16:0.10
-	>=media-libs/gst-plugins-base-0.10.16:0.10
-	>=net-im/telepathy-logger-0.2.4[introspection]
-	net-libs/libsoup:2.4[introspection]
-	>=net-libs/telepathy-glib-0.15.3[introspection]
-	>=net-wireless/gnome-bluetooth-3.1.0[introspection]
-	>=sys-auth/polkit-0.100[introspection]
-	>=x11-wm/mutter-3.0.0[introspection]
-
-	dev-libs/dbus-glib
-	dev-libs/libxml2:2
-	x11-libs/pango[introspection]
-	>=dev-libs/libcroco-0.6.2:0.6
-
-	gnome-base/gconf:2[introspection]
-	gnome-base/gnome-menus
-	gnome-base/librsvg
-	media-libs/libcanberra
-	media-sound/pulseaudio
-
-	>=x11-libs/startup-notification-0.11
-	x11-libs/libX11
-	>=x11-libs/libXfixes-5.0
-	x11-apps/mesa-progs"
-# Runtime-only deps are probably incomplete and approximate.
-# Each block:
-# 1. Pull in polkit-0.101 for pretty authorization dialogs
-# 2. Introspection stuff + dconf needed via imports.gi.*
-# 3. gnome-session is needed for gnome-session-quit
-# 4. Control shell settings
-# 5. accountsservice is needed for GdmUserManager
-# 6. nm-applet is needed for auth prompting and the wireless connection dialog
-RDEPEND="${COMMON_DEPEND}
-	>=sys-auth/polkit-0.101[introspection]
-
-	>=gnome-base/dconf-0.4.1
-	>=gnome-base/libgnomekbd-2.91.4[introspection]
-	sys-power/upower[introspection]
-
-	>=gnome-base/gnome-session-2.91.91
-
-	>=gnome-base/gnome-settings-daemon-2.91
-	>=gnome-base/gnome-control-center-2.91.92-r1
-
-	>=sys-apps/accountsservice-0.6.12
-
-	nm-applet? (
-		>=gnome-extra/nm-applet-0.8.999
-		>=net-misc/networkmanager-0.8.999[introspection] )"
-DEPEND="${COMMON_DEPEND}
-	>=sys-devel/gettext-0.17
-	>=dev-util/pkgconfig-0.22
-	>=dev-util/intltool-0.40
-	gnome-base/gnome-common
-	!!=dev-lang/spidermonkey-1.8.2*"
-# libmozjs.so is picked up from /usr/lib while compiling, so block at build-time
-# https://bugs.gentoo.org/show_bug.cgi?id=360413
-
-pkg_setup() {
-	DOCS="AUTHORS README"
-	# Don't error out on warnings
-	G2CONF="${G2CONF}
-		--enable-compile-warnings=maximum
-		--disable-schemas-compile
-		--disable-jhbuild-wrapper-script"
-}
-
-src_prepare() {
-	gnome2_src_prepare
-	# gobject-introspection-1.29.17 compat, backported to gnome-shell-3.1.4
-	epatch "${FILESDIR}/${P}-gi-1.29.17.patch"
-}
-
-src_install() {
-	gnome2_src_install
-	python_convert_shebangs 2 "${D}"/usr/bin/gnome-shell-extension-tool
-}
-
-pkg_postinst() {
-	gnome2_pkg_postinst
-	if ! has_version '>=media-libs/gst-plugins-good-0.10.23' || \
-	   ! has_version 'media-plugins/gst-plugins-vp8'; then
-		ewarn "To make use of GNOME Shell's built-in screen recording utility,"
-		ewarn "you need to either install >=media-libs/gst-plugins-good-0.10.23"
-		ewarn "and media-plugins/gst-plugins-vp8, or use dconf-editor to change"
-		ewarn "apps.gnome-shell.recorder/pipeline to what you want to use."
-	fi
-}

diff --git a/gnome-base/gnome-shell/gnome-shell-3.2.0-r1.ebuild b/gnome-base/gnome-shell/gnome-shell-3.2.1.ebuild
similarity index 89%
rename from gnome-base/gnome-shell/gnome-shell-3.2.0-r1.ebuild
rename to gnome-base/gnome-shell/gnome-shell-3.2.1.ebuild
index 186d8e6..1fe076b 100644
--- a/gnome-base/gnome-shell/gnome-shell-3.2.0-r1.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.2.1.ebuild
@@ -8,7 +8,7 @@ GCONF_DEBUG="no"
 GNOME2_LA_PUNT="yes"
 PYTHON_DEPEND="2:2.5"
 
-inherit eutils gnome2 python
+inherit gnome2 python
 if [[ ${PV} = 9999 ]]; then
 	inherit gnome2-live
 fi
@@ -51,7 +51,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
 	>=net-misc/networkmanager-0.8.999[introspection]
 	>=net-wireless/gnome-bluetooth-3.1.0[introspection]
 	>=sys-auth/polkit-0.100[introspection]
-	>=x11-wm/mutter-3.0.0[introspection]
+	>=x11-wm/mutter-3.2.1[introspection]
 
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2
@@ -113,20 +113,9 @@ pkg_setup() {
 		BROWSER_PLUGIN_DIR=${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins"
 }
 
-src_prepare() {
-	gnome2_src_prepare
-	# Fix recording; will be in next release
-	epatch "${FILESDIR}/${P}-recorder-coglhandle.patch"
-	# Fix multimonitor behavior; will be in next release
-	epatch "${FILESDIR}/${P}-boxpointer-multimonitor.patch"
-	# Fix different icons being cached identically; will be in next release
-	epatch "${FILESDIR}/${P}-st-texture-cache-non-serialized-icons.patch"
-}
-
 src_install() {
 	gnome2_src_install
 	python_convert_shebangs 2 "${D}"/usr/bin/gnome-shell-extension-tool
-
 }
 
 pkg_postinst() {

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 3aaed7a..1fe076b 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -51,7 +51,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.25.9:2
 	>=net-misc/networkmanager-0.8.999[introspection]
 	>=net-wireless/gnome-bluetooth-3.1.0[introspection]
 	>=sys-auth/polkit-0.100[introspection]
-	>=x11-wm/mutter-3.0.0[introspection]
+	>=x11-wm/mutter-3.2.1[introspection]
 
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2011-11-02  2:36 Nirbheek Chauhan
  0 siblings, 0 replies; 25+ messages in thread
From: Nirbheek Chauhan @ 2011-11-02  2:36 UTC (permalink / raw
  To: gentoo-commits

commit:     be703172149a11b0c17f77676171bfb3d58301f4
Author:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
AuthorDate: Wed Nov  2 02:35:55 2011 +0000
Commit:     Nirbheek Chauhan <nirbheek <AT> gentoo <DOT> org>
CommitDate: Wed Nov  2 02:35:55 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=be703172

gnome-base/gnome-shell: theme fixes for message tray chat bubbles

---
 ...ighten-up-the-sent-message-color-clean-up.patch |   49 ++++++++++++++++++++
 ...2-messageTray-Reduce-the-scroll-view-fade.patch |   40 ++++++++++++++++
 ...ll-3.2.1.ebuild => gnome-shell-3.2.1-r1.ebuild} |    4 ++
 3 files changed, 93 insertions(+), 0 deletions(-)

diff --git a/gnome-base/gnome-shell/files/0001-theme-Lighten-up-the-sent-message-color-clean-up.patch b/gnome-base/gnome-shell/files/0001-theme-Lighten-up-the-sent-message-color-clean-up.patch
new file mode 100644
index 0000000..55052b7
--- /dev/null
+++ b/gnome-base/gnome-shell/files/0001-theme-Lighten-up-the-sent-message-color-clean-up.patch
@@ -0,0 +1,49 @@
+From 3294a6e1a7d7a6bea1cb02ec671aaa0d350b57f5 Mon Sep 17 00:00:00 2001
+From: Jasper St. Pierre <jstpierre@mecheye.net>
+Date: Fri, 2 Sep 2011 16:01:24 -0400
+Subject: [PATCH 1/2] theme: Lighten up the sent message color, clean up
+
+Properly apply "received" style and drop unused border-radius styles
+now that the messages have no background color
+
+https://bugzilla.gnome.org/show_bug.cgi?id=658096
+---
+ data/theme/gnome-shell.css |    7 ++-----
+ 1 files changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
+index 4487159..0e09866 100644
+--- a/data/theme/gnome-shell.css
++++ b/data/theme/gnome-shell.css
+@@ -1329,9 +1329,8 @@ StTooltip StLabel {
+     padding: 8px 0;
+ }
+ 
+-.chat-sent {
++.chat-received {
+     padding-left: 4px;
+-    border-radius: 4px;
+ }
+ 
+ .chat-received:rtl {
+@@ -1341,8 +1340,7 @@ StTooltip StLabel {
+ 
+ .chat-sent {
+     padding-left: 18pt;
+-    border-radius: 4px;
+-    color: #7E7E7E;
++    color: #959595;
+ }
+ 
+ .chat-sent:rtl {
+@@ -1352,7 +1350,6 @@ StTooltip StLabel {
+ 
+ .chat-meta-message {
+     padding-left: 4px;
+-    border-radius: 4px;
+     font-size: 9pt;
+     color: #bbbbbb;
+ }
+-- 
+1.7.3.4
+

diff --git a/gnome-base/gnome-shell/files/0002-messageTray-Reduce-the-scroll-view-fade.patch b/gnome-base/gnome-shell/files/0002-messageTray-Reduce-the-scroll-view-fade.patch
new file mode 100644
index 0000000..22a4ce3
--- /dev/null
+++ b/gnome-base/gnome-shell/files/0002-messageTray-Reduce-the-scroll-view-fade.patch
@@ -0,0 +1,40 @@
+From 18541c447e30154e7bd5806e11e3fe70fb9d5887 Mon Sep 17 00:00:00 2001
+From: Jasper St. Pierre <jstpierre@mecheye.net>
+Date: Thu, 27 Oct 2011 13:52:17 -0400
+Subject: [PATCH 2/2] messageTray: Reduce the scroll view fade
+
+https://bugzilla.gnome.org/show_bug.cgi?id=662226
+---
+ data/theme/gnome-shell.css |    1 +
+ js/ui/messageTray.js       |    3 +--
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
+index 0e09866..ea81870 100644
+--- a/data/theme/gnome-shell.css
++++ b/data/theme/gnome-shell.css
+@@ -1217,6 +1217,7 @@ StTooltip StLabel {
+ 
+ #notification-scrollview {
+     max-height: 10em;
++    -st-vfade-offset: 24px;
+ }
+ 
+ #notification-scrollview > .top-shadow, #notification-scrollview > .bottom-shadow {
+diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
+index 75eb9f9..ca12fb1 100644
+--- a/js/ui/messageTray.js
++++ b/js/ui/messageTray.js
+@@ -597,8 +597,7 @@ Notification.prototype = {
+         this._table.add_style_class_name('multi-line-notification');
+         this._scrollArea = new St.ScrollView({ name: 'notification-scrollview',
+                                                vscrollbar_policy: this._scrollPolicy,
+-                                               hscrollbar_policy: Gtk.PolicyType.NEVER,
+-                                               style_class: 'vfade' });
++                                               hscrollbar_policy: Gtk.PolicyType.NEVER });
+         this._table.add(this._scrollArea, { row: 1,
+                                             col: 2 });
+         this._updateLastColumnSettings();
+-- 
+1.7.3.4
+

diff --git a/gnome-base/gnome-shell/gnome-shell-3.2.1.ebuild b/gnome-base/gnome-shell/gnome-shell-3.2.1-r1.ebuild
similarity index 95%
rename from gnome-base/gnome-shell/gnome-shell-3.2.1.ebuild
rename to gnome-base/gnome-shell/gnome-shell-3.2.1-r1.ebuild
index d264034..603e49f 100644
--- a/gnome-base/gnome-shell/gnome-shell-3.2.1.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.2.1-r1.ebuild
@@ -119,6 +119,10 @@ src_prepare() {
 	# Note: sed Makefile.in because it is generated from several Makefile.ams
 	sed -e 's/-DG_DISABLE_DEPRECATED//g' \
 		-i src/Makefile.in browser-plugin/Makefile.in || die "sed failed"
+
+	# Two chat messageTray fixes taken from git master, not in gnome-3-2 yet
+	epatch "${FILESDIR}"/0001-theme-Lighten-up-the-sent-message-color-clean-up.patch
+	epatch "${FILESDIR}"/0002-messageTray-Reduce-the-scroll-view-fade.patch
 }
 
 src_install() {



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2012-04-03  6:36 Alexandre Restovtsev
  0 siblings, 0 replies; 25+ messages in thread
From: Alexandre Restovtsev @ 2012-04-03  6:36 UTC (permalink / raw
  To: gentoo-commits

commit:     28ca58306aa5a5b22e860e93d46fcef1326adc72
Author:     Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org>
AuthorDate: Tue Apr  3 06:09:08 2012 +0000
Commit:     Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
CommitDate: Tue Apr  3 06:34:59 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=28ca5830

gnome-base/gnome-shell: 3.3.92 → 3.4.0 + optional bt and nm patches

---
 ...ome-shell-3.2.1-automagic-gnome-bluetooth.patch |   44 ++++
 ...gnome-shell-3.4.0-optional-networkmanager.patch |  220 ++++++++++++++++++++
 ...hell-3.3.92.ebuild => gnome-shell-3.4.0.ebuild} |   30 +--
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |   30 +--
 4 files changed, 288 insertions(+), 36 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.2.1-automagic-gnome-bluetooth.patch b/gnome-base/gnome-shell/files/gnome-shell-3.2.1-automagic-gnome-bluetooth.patch
new file mode 100644
index 0000000..ae23a6c
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.2.1-automagic-gnome-bluetooth.patch
@@ -0,0 +1,44 @@
+From 84568fa9454f279ff519a2a11174e112786e46db Mon Sep 17 00:00:00 2001
+From: root <admin@catmur.co.uk>
+Date: Sun, 8 Jan 2012 13:55:05 +0000
+Subject: [PATCH] Fix automagic gnome-bluetooth dependency
+
+https://bugs.gentoo.org/show_bug.cgi?id=398145
+
+Ed Catmur 2012-01-08 13:46:22 UTC
+libgnome-bluetooth-applet is a private library so they shouldn't be linking
+against it anyway.  I tried to work out how to tell libtool to add it to rpath
+but got totally lost.
+
+I'll see if I can work out how to fix the automagic gnome-bluetooth dependency
+so I can at least merge USE=-bluetooth.
+---
+ configure.ac |    5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 1c64122..a699838 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -127,6 +127,8 @@ PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
+ PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 0.1.7)
+ 
+ AC_MSG_CHECKING([for bluetooth support])
++AC_ARG_WITH([bluetooth], AS_HELP_STRING([--without-bluetooth], [Build without gnome-bluetooth library (default: auto)]))
++AS_IF([test "x$with_bluetooth" != "xno"], [
+ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
+         [BLUETOOTH_DIR=`$PKG_CONFIG --variable=applet_libdir gnome-bluetooth-1.0`
+ 	 BLUETOOTH_LIBS=`$PKG_CONFIG --variable=applet_libs gnome-bluetooth-1.0`
+@@ -138,6 +140,9 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
+ 	[AC_DEFINE([HAVE_BLUETOOTH],[0])
+ 	 AC_SUBST([HAVE_BLUETOOTH],[0])
+ 	 AC_MSG_RESULT([no])])
++], [AC_DEFINE([HAVE_BLUETOOTH],[0])
++	 AC_SUBST([HAVE_BLUETOOTH],[0])
++	 AC_MSG_RESULT([no])])
+ 
+ PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION libedataserverui-3.0 >= $LIBEDATASERVERUI_MIN_VERSION gio-2.0)
+ AC_SUBST(CALENDAR_SERVER_CFLAGS)
+-- 
+1.7.8.2
+

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.4.0-optional-networkmanager.patch b/gnome-base/gnome-shell/files/gnome-shell-3.4.0-optional-networkmanager.patch
new file mode 100644
index 0000000..ee9d0af
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.4.0-optional-networkmanager.patch
@@ -0,0 +1,220 @@
+From 411d751935c9bdc485b113678284edf0cc9e545e Mon Sep 17 00:00:00 2001
+From: Michael Biebl <biebl@debian.org>
+Date: Thu, 22 Dec 2011 22:04:12 +0100
+Subject: [PATCH] Make NM optional
+
+[ Alexandre Rostovtsev <tetromino@gentoo.org> :
+  * use config.js (and AC_SUBST HAVE_NETWORKMANAGER appropriately);
+  * take care to not import ui.status.network if nm is disabled;
+  * do not try to reassign to const variables;
+  * no point really in fiddling with the list of installed js files;
+  * don't build shell-mobile-providers if nm is disabled;
+  * use "networkmanager" instead of "network_manager" because THE
+    BIKESHED SHOULD BE BLUE, also because the upstream package name is
+    NetworkManager, not Network_Manager. ]
+---
+ configure.ac         |   47 ++++++++++++++++++++++++++++++++++++++++++++++-
+ js/Makefile.am       |    1 +
+ js/misc/config.js.in |    2 ++
+ js/ui/main.js        |    8 ++++++--
+ js/ui/panel.js       |    3 ++-
+ src/Makefile.am      |   17 ++++++++++++-----
+ 6 files changed, 69 insertions(+), 9 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index c6ad636..f228ebd 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -94,9 +94,42 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
+                                telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
+                                telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
+                                polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
+-                               libnm-glib libnm-util gnome-keyring-1
++                               gnome-keyring-1
+                                gcr-3 >= $GCR_MIN_VERSION)
+ 
++##########################
++# Check for NetworkManager
++##########################
++NM_MIN_VERSION=0.9
++AC_ARG_ENABLE(networkmanager,
++              AS_HELP_STRING([--disable-networkmanager],
++                             [disable NetworkManager support @<:@default=auto@:>@]),,
++              [enable_networkmanager=auto])
++
++if test "x$enable_networkmanager" != "xno"; then
++   PKG_CHECK_MODULES(NETWORKMANAGER,
++                     [libnm-glib libnm-util gnome-keyring-1],
++                     [have_networkmanager=yes],
++                     [have_networkmanager=no])
++
++   GNOME_SHELL_CFLAGS="$GNOME_SHELL_CFLAGS $NETWORKMANAGER_CFLAGS"
++   GNOME_SHELL_LIBS="$GNOME_SHELL_LIBS $NETWORKMANAGER_LIBS"
++else
++   have_networkmanager="no  (disabled)"
++fi
++
++if test "x$have_networkmanager" = "xyes"; then
++   AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager])
++   AC_SUBST([HAVE_NETWORKMANAGER], [1])
++else
++   if test "x$enable_networkmanager" = "xyes"; then
++      AC_MSG_ERROR([Couldn't find NetworkManager.])
++   fi
++   AC_SUBST([HAVE_NETWORKMANAGER], [0])
++fi
++
++AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes")
++
+ PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
+ 
+ PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
+@@ -289,3 +322,15 @@ AC_CONFIG_FILES([
+   man/Makefile
+ ])
+ AC_OUTPUT
++
++echo "
++Build configuration:
++
++	Prefix:                                 ${prefix}
++	Source code location:                   ${srcdir}
++	Compiler:                               ${CC}
++	Compiler Warnings:                      $enable_compile_warnings
++
++	Support for NetworkManager:             $have_networkmanager
++	Support for GStreamer recording:        $build_recorder
++"
+diff --git a/js/Makefile.am b/js/Makefile.am
+index e7751cc..5eb4c18 100644
+--- a/js/Makefile.am
++++ b/js/Makefile.am
+@@ -8,6 +8,7 @@ misc/config.js: misc/config.js.in Makefile
+ 	    -e "s|[@]PACKAGE_VERSION@|$(PACKAGE_VERSION)|g" \
+ 	    -e "s|[@]GJS_VERSION@|$(GJS_VERSION)|g" \
+ 	    -e "s|[@]HAVE_BLUETOOTH@|$(HAVE_BLUETOOTH)|g" \
++	    -e "s|[@]HAVE_NETWORKMANAGER@|$(HAVE_NETWORKMANAGER)|g" \
+ 	    -e "s|[@]SHELL_SYSTEM_CA_FILE@|$(SHELL_SYSTEM_CA_FILE)|g" \
+ 	    -e "s|[@]GETTEXT_PACKAGE@|$(GETTEXT_PACKAGE)|g" \
+ 	    -e "s|[@]datadir@|$(datadir)|g" \
+diff --git a/js/misc/config.js.in b/js/misc/config.js.in
+index 4a0db16..3df3394 100644
+--- a/js/misc/config.js.in
++++ b/js/misc/config.js.in
+@@ -8,6 +8,8 @@ const PACKAGE_VERSION = '@PACKAGE_VERSION@';
+ const GJS_VERSION = '@GJS_VERSION@';
+ /* 1 if gnome-bluetooth is available, 0 otherwise */
+ const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
++/* 1 if networkmanager is available, 0 otherwise */
++const HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@;
+ /* The system TLS CA list */
+ const SHELL_SYSTEM_CA_FILE = '@SHELL_SYSTEM_CA_FILE@';
+ /* gettext package */
+diff --git a/js/ui/main.js b/js/ui/main.js
+index ac9330c..7ca91ee 100644
+--- a/js/ui/main.js
++++ b/js/ui/main.js
+@@ -12,6 +12,7 @@ const St = imports.gi.St;
+ 
+ const AutomountManager = imports.ui.automountManager;
+ const AutorunManager = imports.ui.autorunManager;
++const Config = imports.misc.config;
+ const CtrlAltTab = imports.ui.ctrlAltTab;
+ const EndSessionDialog = imports.ui.endSessionDialog;
+ const PolkitAuthenticationAgent = imports.ui.polkitAuthenticationAgent;
+@@ -26,7 +27,7 @@ const PlaceDisplay = imports.ui.placeDisplay;
+ const RunDialog = imports.ui.runDialog;
+ const Layout = imports.ui.layout;
+ const LookingGlass = imports.ui.lookingGlass;
+-const NetworkAgent = imports.ui.networkAgent;
++const NetworkAgent = Config.HAVE_NETWORKMANAGER ? imports.ui.networkAgent : null;
+ const NotificationDaemon = imports.ui.notificationDaemon;
+ const WindowAttentionHandler = imports.ui.windowAttentionHandler;
+ const Scripting = imports.ui.scripting;
+@@ -85,7 +86,10 @@ function _createUserSession() {
+     telepathyClient = new TelepathyClient.Client();
+     automountManager = new AutomountManager.AutomountManager();
+     autorunManager = new AutorunManager.AutorunManager();
+-    networkAgent = new NetworkAgent.NetworkAgent();
++    if (Config.HAVE_NETWORKMANAGER) {
++        networkAgent = new NetworkAgent.NetworkAgent();
++    }
++
+ }
+ 
+ function _createGDMSession() {
+diff --git a/js/ui/panel.js b/js/ui/panel.js
+index 329f118..865ce05 100644
+--- a/js/ui/panel.js
++++ b/js/ui/panel.js
+@@ -45,7 +45,8 @@ if (Config.HAVE_BLUETOOTH)
+     STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator;
+ 
+ try {
+-    STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['network'] = imports.ui.status.network.NMApplet;
++    if (Config.HAVE_NETWORKMANAGER)
++        STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['network'] = imports.ui.status.network.NMApplet;
+ } catch(e) {
+     log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
+ }
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 95f1a41..637455e 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -110,9 +110,7 @@ shell_public_headers_h =		\
+ 	shell-gtk-embed.h		\
+ 	shell-global.h			\
+ 	shell-idle-monitor.h		\
+-	shell-mobile-providers.h	\
+ 	shell-mount-operation.h		\
+-	shell-network-agent.h		\
+ 	shell-perf-log.h		\
+ 	shell-screenshot.h		\
+ 	shell-screen-grabber.h		\
+@@ -134,6 +132,10 @@ shell_private_sources = \
+ 	gactionobserver.h		\
+ 	gactionobserver.c
+ 
++if HAVE_NETWORKMANAGER
++shell_public_headers_h += shell-mobile-providers.h shell-network-agent.h
++endif
++
+ libgnome_shell_la_SOURCES =		\
+ 	$(shell_built_sources)		\
+ 	$(shell_public_headers_h)	\
+@@ -159,9 +161,7 @@ libgnome_shell_la_SOURCES =		\
+ 	shell-idle-monitor.c		\
+ 	shell-keyring-prompt.h		\
+ 	shell-keyring-prompt.c		\
+-	shell-mobile-providers.c	\
+ 	shell-mount-operation.c		\
+-	shell-network-agent.c		\
+ 	shell-perf-log.c		\
+ 	shell-polkit-authentication-agent.h	\
+ 	shell-polkit-authentication-agent.c	\
+@@ -181,6 +181,10 @@ libgnome_shell_la_SOURCES =		\
+ 	$(NULL)
+ 
+ 
++if HAVE_NETWORKMANAGER
++libgnome_shell_la_SOURCES += shell-mobile-providers.c shell-network-agent.c
++endif
++
+ libgnome_shell_la_gir_sources = \
+ 	$(filter-out %-private.h $(shell_private_sources), $(shell_public_headers_h) $(libgnome_shell_la_SOURCES))
+ 
+@@ -296,7 +300,10 @@ libgnome_shell_la_LIBADD =		\
+ libgnome_shell_la_CPPFLAGS = $(gnome_shell_cflags)
+ 
+ Shell-0.1.gir: libgnome-shell.la St-1.0.gir
+-Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 TelepathyLogger-0.2 Soup-2.4 GMenu-3.0 NetworkManager-1.0 NMClient-1.0 Folks-0.6
++Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 TelepathyLogger-0.2 Soup-2.4 GMenu-3.0 Folks-0.6
++if HAVE_NETWORKMANAGER
++Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
++endif
+ Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir)
+ Shell_0_1_gir_LIBS = libgnome-shell.la
+ Shell_0_1_gir_FILES = $(libgnome_shell_la_gir_sources)
+-- 
+1.7.8.5
+

diff --git a/gnome-base/gnome-shell/gnome-shell-3.3.92.ebuild b/gnome-base/gnome-shell/gnome-shell-3.4.0.ebuild
similarity index 89%
rename from gnome-base/gnome-shell/gnome-shell-3.3.92.ebuild
rename to gnome-base/gnome-shell/gnome-shell-3.4.0.ebuild
index 1fc49c6..e653998 100644
--- a/gnome-base/gnome-shell/gnome-shell-3.3.92.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.4.0.ebuild
@@ -17,9 +17,7 @@ HOMEPAGE="http://live.gnome.org/GnomeShell"
 
 LICENSE="GPL-2"
 SLOT="0"
-# TODO: reinstate this
-#IUSE="+bluetooth +networkmanager"
-IUSE=""
+IUSE="+bluetooth +networkmanager"
 if [[ ${PV} = 9999 ]]; then
 	KEYWORDS=""
 else
@@ -41,6 +39,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.31.6:2
 	>=gnome-base/gsettings-desktop-schemas-2.91.91
 	>=gnome-base/gnome-keyring-3.3.90
 	>=gnome-base/gnome-menus-2.29.10:3[introspection]
+	gnome-base/libgnome-keyring
 	>=gnome-extra/evolution-data-server-2.91.6
 	>=media-libs/gstreamer-0.10.16:0.10
 	>=media-libs/gst-plugins-base-0.10.16:0.10
@@ -64,14 +63,9 @@ COMMON_DEPEND=">=dev-libs/glib-2.31.6:2
 	x11-libs/pango[introspection]
 	x11-apps/mesa-progs
 
-	>=net-wireless/gnome-bluetooth-3.1.0[introspection]
-	gnome-base/libgnome-keyring
-	>=net-misc/networkmanager-0.8.999[introspection]
+	bluetooth? ( >=net-wireless/gnome-bluetooth-3.1.0[introspection] )
+	networkmanager? ( >=net-misc/networkmanager-0.8.999[introspection] )
 "
-#	bluetooth? ( >=net-wireless/gnome-bluetooth-3.1.0[introspection] )
-#	networkmanager? (
-#		gnome-base/libgnome-keyring
-#		>=net-misc/networkmanager-0.8.999[introspection] )"
 # Runtime-only deps are probably incomplete and approximate.
 # Each block:
 # 1. Pull in polkit-0.101 for pretty authorization dialogs
@@ -104,12 +98,10 @@ RDEPEND="${COMMON_DEPEND}
 
 	x11-themes/gnome-icon-theme-symbolic
 
-	net-misc/mobile-broadband-provider-info
-	sys-libs/timezone-data
+	networkmanager? (
+		net-misc/mobile-broadband-provider-info
+		sys-libs/timezone-data )
 "
-#	networkmanager? (
-#		net-misc/mobile-broadband-provider-info
-#		sys-libs/timezone-data )"
 DEPEND="${COMMON_DEPEND}
 	>=sys-devel/gettext-0.17
 	>=dev-util/pkgconfig-0.22
@@ -126,6 +118,8 @@ pkg_setup() {
 		--enable-compile-warnings=maximum
 		--disable-schemas-compile
 		--disable-jhbuild-wrapper-script
+		$(use_with bluetooth)
+		$(use_enable networkmanager)
 		--with-ca-certificates=${EPREFIX}/etc/ssl/certs/ca-certificates.crt
 		BROWSER_PLUGIN_DIR=${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins
 		--without-systemd"
@@ -136,12 +130,12 @@ pkg_setup() {
 
 src_prepare() {
 	# Fix automagic gnome-bluetooth dep, bug #398145
-	#epatch "${FILESDIR}/${PN}-3.4.0-automagic-gnome-bluetooth.patch"
+	epatch "${FILESDIR}/${PN}-3.2.1-automagic-gnome-bluetooth.patch"
 
 	# Make networkmanager optional, bug #398593
-	#epatch "${FILESDIR}/${PN}-3.4.0-optional-networkmanager.patch"
+	epatch "${FILESDIR}/${PN}-3.4.0-optional-networkmanager.patch"
 
-	#[[ ${PV} != 9999 ]] && eautoreconf
+	[[ ${PV} != 9999 ]] && eautoreconf
 	gnome2_src_prepare
 
 	# Drop G_DISABLE_DEPRECATED for sanity on glib upgrades; bug #384765

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 1fc49c6..e653998 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -17,9 +17,7 @@ HOMEPAGE="http://live.gnome.org/GnomeShell"
 
 LICENSE="GPL-2"
 SLOT="0"
-# TODO: reinstate this
-#IUSE="+bluetooth +networkmanager"
-IUSE=""
+IUSE="+bluetooth +networkmanager"
 if [[ ${PV} = 9999 ]]; then
 	KEYWORDS=""
 else
@@ -41,6 +39,7 @@ COMMON_DEPEND=">=dev-libs/glib-2.31.6:2
 	>=gnome-base/gsettings-desktop-schemas-2.91.91
 	>=gnome-base/gnome-keyring-3.3.90
 	>=gnome-base/gnome-menus-2.29.10:3[introspection]
+	gnome-base/libgnome-keyring
 	>=gnome-extra/evolution-data-server-2.91.6
 	>=media-libs/gstreamer-0.10.16:0.10
 	>=media-libs/gst-plugins-base-0.10.16:0.10
@@ -64,14 +63,9 @@ COMMON_DEPEND=">=dev-libs/glib-2.31.6:2
 	x11-libs/pango[introspection]
 	x11-apps/mesa-progs
 
-	>=net-wireless/gnome-bluetooth-3.1.0[introspection]
-	gnome-base/libgnome-keyring
-	>=net-misc/networkmanager-0.8.999[introspection]
+	bluetooth? ( >=net-wireless/gnome-bluetooth-3.1.0[introspection] )
+	networkmanager? ( >=net-misc/networkmanager-0.8.999[introspection] )
 "
-#	bluetooth? ( >=net-wireless/gnome-bluetooth-3.1.0[introspection] )
-#	networkmanager? (
-#		gnome-base/libgnome-keyring
-#		>=net-misc/networkmanager-0.8.999[introspection] )"
 # Runtime-only deps are probably incomplete and approximate.
 # Each block:
 # 1. Pull in polkit-0.101 for pretty authorization dialogs
@@ -104,12 +98,10 @@ RDEPEND="${COMMON_DEPEND}
 
 	x11-themes/gnome-icon-theme-symbolic
 
-	net-misc/mobile-broadband-provider-info
-	sys-libs/timezone-data
+	networkmanager? (
+		net-misc/mobile-broadband-provider-info
+		sys-libs/timezone-data )
 "
-#	networkmanager? (
-#		net-misc/mobile-broadband-provider-info
-#		sys-libs/timezone-data )"
 DEPEND="${COMMON_DEPEND}
 	>=sys-devel/gettext-0.17
 	>=dev-util/pkgconfig-0.22
@@ -126,6 +118,8 @@ pkg_setup() {
 		--enable-compile-warnings=maximum
 		--disable-schemas-compile
 		--disable-jhbuild-wrapper-script
+		$(use_with bluetooth)
+		$(use_enable networkmanager)
 		--with-ca-certificates=${EPREFIX}/etc/ssl/certs/ca-certificates.crt
 		BROWSER_PLUGIN_DIR=${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins
 		--without-systemd"
@@ -136,12 +130,12 @@ pkg_setup() {
 
 src_prepare() {
 	# Fix automagic gnome-bluetooth dep, bug #398145
-	#epatch "${FILESDIR}/${PN}-3.4.0-automagic-gnome-bluetooth.patch"
+	epatch "${FILESDIR}/${PN}-3.2.1-automagic-gnome-bluetooth.patch"
 
 	# Make networkmanager optional, bug #398593
-	#epatch "${FILESDIR}/${PN}-3.4.0-optional-networkmanager.patch"
+	epatch "${FILESDIR}/${PN}-3.4.0-optional-networkmanager.patch"
 
-	#[[ ${PV} != 9999 ]] && eautoreconf
+	[[ ${PV} != 9999 ]] && eautoreconf
 	gnome2_src_prepare
 
 	# Drop G_DISABLE_DEPRECATED for sanity on glib upgrades; bug #384765



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2012-04-06 18:22 Alexandre Restovtsev
  0 siblings, 0 replies; 25+ messages in thread
From: Alexandre Restovtsev @ 2012-04-06 18:22 UTC (permalink / raw
  To: gentoo-commits

commit:     7761a59e3e4995c132b0fd59c0e024eb89b9fc24
Author:     Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org>
AuthorDate: Fri Apr  6 18:16:01 2012 +0000
Commit:     Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
CommitDate: Fri Apr  6 18:16:01 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=7761a59e

gnome-base/gnome-shell: fix extension loading

Force /usr/bin/gnome-shell to link to libgnome-shell-js.so to fix
extensions; see https://bugzilla.gnome.org/show_bug.cgi?id=670477

---
 ...e-shell-3.4.0-libgnome-shell-js.so-link-1.patch |   30 ++++++++++++++
 ...e-shell-3.4.0-libgnome-shell-js.so-link-2.patch |   43 ++++++++++++++++++++
 ...ll-3.4.0.ebuild => gnome-shell-3.4.0-r1.ebuild} |    4 ++
 3 files changed, 77 insertions(+), 0 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-1.patch b/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-1.patch
new file mode 100644
index 0000000..9f07884
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-1.patch
@@ -0,0 +1,30 @@
+From 73f565d27166420bbf4a7bb49a30ea5bf5d98566 Mon Sep 17 00:00:00 2001
+From: "Owen W. Taylor" <otaylor@fishsoup.net>
+Date: Wed, 4 Apr 2012 17:48:47 -0400
+Subject: [PATCH] Link the gnome-shell binary to libgnome-shell-js.so
+
+Depending on the exact linker options and versions, rpath's written
+into the binary may, or may not, be honored by dlopen(). Work around
+this by simply linking the gnome-shell binary to gnome-shell-js, since
+then dlopen() doesn't need to search paths.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=670477
+---
+ src/Makefile.am |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 95f1a41..7bafb6a 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -187,7 +187,7 @@ libgnome_shell_la_gir_sources = \
+ gnome_shell_real_SOURCES =		\
+ 	main.c
+ gnome_shell_real_CPPFLAGS = $(gnome_shell_cflags)
+-gnome_shell_real_LDADD = libgnome-shell.la $(libgnome_shell_la_LIBADD)
++gnome_shell_real_LDADD = libgnome-shell.la libgnome-shell-js.la $(libgnome_shell_la_LIBADD)
+ gnome_shell_real_DEPENDENCIES = libgnome-shell.la
+ 
+ EXTRA_DIST += test-gapplication.js
+-- 
+1.7.9.3
\ No newline at end of file

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-2.patch b/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-2.patch
new file mode 100644
index 0000000..718eb30
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-2.patch
@@ -0,0 +1,43 @@
+From 6fa762baaee77c9d1a8aacc758ab5c3c3c33df43 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Fri, 6 Apr 2012 14:00:48 -0400
+Subject: [PATCH] Prevent the link to libgnome-shell-js.so from being removed
+
+Add a dummy call to shell_js_add_extension_importer() to ensure that the
+link to libgnome-shell-js.so is not removed when using -Wl,--as-needed,
+which is the default on many distros.
+---
+ src/main.c |   13 +++++++++++++
+ 1 files changed, 13 insertions(+), 0 deletions(-)
+
+diff --git a/src/main.c b/src/main.c
+index bac9524..c11c8d7 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -24,6 +24,7 @@
+ #include "shell-a11y.h"
+ #include "shell-global.h"
+ #include "shell-global-private.h"
++#include "shell-js.h"
+ #include "shell-perf-log.h"
+ #include "st.h"
+ 
+@@ -342,3 +343,15 @@ main (int argc, char **argv)
+ 
+   return ecode;
+ }
++
++/* HACK:
++   Add a dummy function that calls into libgnome-shell-js.so to ensure it's
++   linked to /usr/bin/gnome-shell even when linking with --as-needed.
++   This function is never actually called.
++   https://bugzilla.gnome.org/show_bug.cgi?id=670477
++*/
++
++void _shell_link_to_shell_js(void) {
++  shell_js_add_extension_importer (NULL, NULL, NULL, NULL);
++}
++
+-- 
+1.7.8.5
+

diff --git a/gnome-base/gnome-shell/gnome-shell-3.4.0.ebuild b/gnome-base/gnome-shell/gnome-shell-3.4.0-r1.ebuild
similarity index 96%
rename from gnome-base/gnome-shell/gnome-shell-3.4.0.ebuild
rename to gnome-base/gnome-shell/gnome-shell-3.4.0-r1.ebuild
index e653998..666e6b7 100644
--- a/gnome-base/gnome-shell/gnome-shell-3.4.0.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.4.0-r1.ebuild
@@ -135,6 +135,10 @@ src_prepare() {
 	# Make networkmanager optional, bug #398593
 	epatch "${FILESDIR}/${PN}-3.4.0-optional-networkmanager.patch"
 
+	# Force /usr/bin/gnome-shell to link to libgnome-shell-js; fixes extensions
+	# https://bugzilla.gnome.org/show_bug.cgi?id=670477
+	epatch "${FILESDIR}/${PN}-3.4.0-libgnome-shell-js.so-link"-{1,2}.patch
+
 	[[ ${PV} != 9999 ]] && eautoreconf
 	gnome2_src_prepare
 



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2012-05-21  6:49 Alexandre Restovtsev
  0 siblings, 0 replies; 25+ messages in thread
From: Alexandre Restovtsev @ 2012-05-21  6:49 UTC (permalink / raw
  To: gentoo-commits

commit:     314eec5e8cf58b7a84ca715088cbc6e119029c49
Author:     Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org>
AuthorDate: Mon May 21 06:47:58 2012 +0000
Commit:     Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
CommitDate: Mon May 21 06:48:50 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=314eec5e

gnome-base/gnome-shell: moved to gx86, sync 9999 with gx86

---
 ...e-shell-3.4.0-libgnome-shell-js.so-link-1.patch |   30 ---
 ...e-shell-3.4.0-libgnome-shell-js.so-link-2.patch |   43 -----
 gnome-base/gnome-shell/gnome-shell-3.4.1.ebuild    |  200 --------------------
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |   18 +-
 4 files changed, 10 insertions(+), 281 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-1.patch b/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-1.patch
deleted file mode 100644
index 9f07884..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-1.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 73f565d27166420bbf4a7bb49a30ea5bf5d98566 Mon Sep 17 00:00:00 2001
-From: "Owen W. Taylor" <otaylor@fishsoup.net>
-Date: Wed, 4 Apr 2012 17:48:47 -0400
-Subject: [PATCH] Link the gnome-shell binary to libgnome-shell-js.so
-
-Depending on the exact linker options and versions, rpath's written
-into the binary may, or may not, be honored by dlopen(). Work around
-this by simply linking the gnome-shell binary to gnome-shell-js, since
-then dlopen() doesn't need to search paths.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=670477
----
- src/Makefile.am |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 95f1a41..7bafb6a 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -187,7 +187,7 @@ libgnome_shell_la_gir_sources = \
- gnome_shell_real_SOURCES =		\
- 	main.c
- gnome_shell_real_CPPFLAGS = $(gnome_shell_cflags)
--gnome_shell_real_LDADD = libgnome-shell.la $(libgnome_shell_la_LIBADD)
-+gnome_shell_real_LDADD = libgnome-shell.la libgnome-shell-js.la $(libgnome_shell_la_LIBADD)
- gnome_shell_real_DEPENDENCIES = libgnome-shell.la
- 
- EXTRA_DIST += test-gapplication.js
--- 
-1.7.9.3
\ No newline at end of file

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-2.patch b/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-2.patch
deleted file mode 100644
index 718eb30..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-3.4.0-libgnome-shell-js.so-link-2.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 6fa762baaee77c9d1a8aacc758ab5c3c3c33df43 Mon Sep 17 00:00:00 2001
-From: Alexandre Rostovtsev <tetromino@gentoo.org>
-Date: Fri, 6 Apr 2012 14:00:48 -0400
-Subject: [PATCH] Prevent the link to libgnome-shell-js.so from being removed
-
-Add a dummy call to shell_js_add_extension_importer() to ensure that the
-link to libgnome-shell-js.so is not removed when using -Wl,--as-needed,
-which is the default on many distros.
----
- src/main.c |   13 +++++++++++++
- 1 files changed, 13 insertions(+), 0 deletions(-)
-
-diff --git a/src/main.c b/src/main.c
-index bac9524..c11c8d7 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -24,6 +24,7 @@
- #include "shell-a11y.h"
- #include "shell-global.h"
- #include "shell-global-private.h"
-+#include "shell-js.h"
- #include "shell-perf-log.h"
- #include "st.h"
- 
-@@ -342,3 +343,15 @@ main (int argc, char **argv)
- 
-   return ecode;
- }
-+
-+/* HACK:
-+   Add a dummy function that calls into libgnome-shell-js.so to ensure it's
-+   linked to /usr/bin/gnome-shell even when linking with --as-needed.
-+   This function is never actually called.
-+   https://bugzilla.gnome.org/show_bug.cgi?id=670477
-+*/
-+
-+void _shell_link_to_shell_js(void) {
-+  shell_js_add_extension_importer (NULL, NULL, NULL, NULL);
-+}
-+
--- 
-1.7.8.5
-

diff --git a/gnome-base/gnome-shell/gnome-shell-3.4.1.ebuild b/gnome-base/gnome-shell/gnome-shell-3.4.1.ebuild
deleted file mode 100644
index 8924168..0000000
--- a/gnome-base/gnome-shell/gnome-shell-3.4.1.ebuild
+++ /dev/null
@@ -1,200 +0,0 @@
-# Copyright 1999-2011 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-EAPI="4"
-GCONF_DEBUG="no"
-GNOME2_LA_PUNT="yes"
-PYTHON_DEPEND="2:2.5"
-
-inherit autotools eutils gnome2 multilib pax-utils python
-if [[ ${PV} = 9999 ]]; then
-	inherit gnome2-live
-fi
-
-DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
-HOMEPAGE="http://live.gnome.org/GnomeShell"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="+bluetooth +networkmanager"
-if [[ ${PV} = 9999 ]]; then
-	KEYWORDS=""
-else
-	KEYWORDS="~amd64 ~x86"
-fi
-
-# gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
-# latest g-c-c is needed due to https://bugs.gentoo.org/show_bug.cgi?id=360057
-# libXfixes-5.0 needed for pointer barriers
-COMMON_DEPEND=">=app-crypt/gcr-3.3.90
-	>=dev-libs/glib-2.31.6:2
-	>=dev-libs/gjs-1.31.22
-	>=dev-libs/gobject-introspection-0.10.1
-	>=x11-libs/gtk+-3.3.9:3[introspection]
-	>=media-libs/clutter-1.9.16:1.0[introspection]
-	>=dev-libs/folks-0.5.2
-	>=dev-libs/json-glib-0.13.2
-	>=dev-libs/libcroco-0.6.2:0.6
-	>=gnome-base/gnome-desktop-2.91.2:3
-	>=gnome-base/gsettings-desktop-schemas-2.91.91
-	>=gnome-base/gnome-keyring-3.3.90
-	>=gnome-base/gnome-menus-2.29.10:3[introspection]
-	gnome-base/libgnome-keyring
-	>=gnome-extra/evolution-data-server-2.91.6
-	>=media-libs/gstreamer-0.10.16:0.10
-	>=media-libs/gst-plugins-base-0.10.16:0.10
-	>=net-im/telepathy-logger-0.2.4[introspection]
-	>=net-libs/telepathy-glib-0.17.5[introspection]
-	>=sys-auth/polkit-0.100[introspection]
-	>=x11-libs/libXfixes-5.0
-	>=x11-wm/mutter-3.4.1[introspection]
-	>=x11-libs/startup-notification-0.11
-
-	app-misc/ca-certificates
-	dev-libs/dbus-glib
-	dev-libs/libxml2:2
-	gnome-base/librsvg
-	media-libs/libcanberra
-	media-libs/mesa
-	media-sound/pulseaudio
-	net-libs/libsoup:2.4[introspection]
-	x11-libs/libX11
-	x11-libs/gdk-pixbuf:2[introspection]
-	x11-libs/pango[introspection]
-	x11-apps/mesa-progs
-
-	bluetooth? ( >=net-wireless/gnome-bluetooth-3.1.0[introspection] )
-	networkmanager? ( >=net-misc/networkmanager-0.8.999[introspection] )
-"
-# Runtime-only deps are probably incomplete and approximate.
-# Each block:
-# 1. Pull in polkit-0.101 for pretty authorization dialogs
-# 2. Introspection stuff + dconf needed via imports.gi.*
-# 3. gnome-session is needed for gnome-session-quit
-# 4. Control shell settings
-# 5. accountsservice is needed for GdmUserManager (0.6.14 needed for fast
-#    user switching with gdm-3.1.x)
-# 6. caribou needed for on-screen keyboard
-# 7. xdg-utils needed for xdg-open, used by extension tool
-# 8. gnome-icon-theme-symbolic neeed for various icons
-# 9. mobile-broadband-provider-info, timezone-data for shell-mobile-providers.c
-RDEPEND="${COMMON_DEPEND}
-	>=sys-auth/polkit-0.101[introspection]
-
-	>=gnome-base/dconf-0.4.1
-	>=gnome-base/libgnomekbd-2.91.4[introspection]
-	sys-power/upower[introspection]
-
-	>=gnome-base/gnome-session-2.91.91
-
-	>=gnome-base/gnome-settings-daemon-2.91
-	>=gnome-base/gnome-control-center-2.91.92-r1
-
-	>=sys-apps/accountsservice-0.6.14
-
-	>=app-accessibility/caribou-0.3
-
-	x11-misc/xdg-utils
-
-	x11-themes/gnome-icon-theme-symbolic
-
-	networkmanager? (
-		net-misc/mobile-broadband-provider-info
-		sys-libs/timezone-data )
-"
-DEPEND="${COMMON_DEPEND}
-	>=sys-devel/gettext-0.17
-	>=dev-util/intltool-0.40
-	gnome-base/gnome-common
-	virtual/pkgconfig
-	!!=dev-lang/spidermonkey-1.8.2*"
-# libmozjs.so is picked up from /usr/lib while compiling, so block at build-time
-# https://bugs.gentoo.org/show_bug.cgi?id=360413
-
-pkg_setup() {
-	DOCS="AUTHORS NEWS README"
-	# Don't error out on warnings
-	G2CONF="${G2CONF}
-		--enable-compile-warnings=maximum
-		--disable-schemas-compile
-		--disable-jhbuild-wrapper-script
-		$(use_with bluetooth)
-		$(use_enable networkmanager)
-		--with-ca-certificates=${EPREFIX}/etc/ssl/certs/ca-certificates.crt
-		BROWSER_PLUGIN_DIR=${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins
-		--without-systemd"
-	# TODO: systemd support
-	python_set_active_version 2
-	python_pkg_setup
-}
-
-src_prepare() {
-	# Fix automagic gnome-bluetooth dep, bug #398145
-	epatch "${FILESDIR}/${PN}-3.2.1-automagic-gnome-bluetooth.patch"
-
-	# Make networkmanager optional, bug #398593
-	epatch "${FILESDIR}/${PN}-3.4.0-optional-networkmanager.patch"
-
-	# Force /usr/bin/gnome-shell to link to libgnome-shell-js; fixes extensions
-	# https://bugzilla.gnome.org/show_bug.cgi?id=670477
-	epatch "${FILESDIR}/${PN}-3.4.0-libgnome-shell-js.so-link"-{1,2}.patch
-
-	[[ ${PV} != 9999 ]] && eautoreconf
-	gnome2_src_prepare
-
-	# Drop G_DISABLE_DEPRECATED for sanity on glib upgrades; bug #384765
-	# Note: sed Makefile.in because it is generated from several Makefile.ams
-	sed -e 's/-DG_DISABLE_DEPRECATED//g' \
-		-i src/Makefile.in browser-plugin/Makefile.in || die "sed failed"
-}
-
-src_install() {
-	gnome2_src_install
-	python_convert_shebangs 2 "${D}"/usr/bin/gnome-shell-extension-tool
-
-	# Required for gnome-shell on hardened/PaX, bug #398941
-	pax-mark mr "${ED}usr/bin/gnome-shell"
-}
-
-pkg_postinst() {
-	gnome2_pkg_postinst
-
-	if ! has_version '>=media-libs/gst-plugins-good-0.10.23' || \
-	   ! has_version 'media-plugins/gst-plugins-vp8'; then
-		ewarn "To make use of GNOME Shell's built-in screen recording utility,"
-		ewarn "you need to either install >=media-libs/gst-plugins-good-0.10.23"
-		ewarn "and media-plugins/gst-plugins-vp8, or use dconf-editor to change"
-		ewarn "apps.gnome-shell.recorder/pipeline to what you want to use."
-	fi
-
-	if ! has_version ">=x11-base/xorg-server-1.11"; then
-		ewarn "If you use multiple screens, it is highly recommended that you"
-		ewarn "upgrade to >=x11-base/xorg-server-1.11 to be able to make use of"
-		ewarn "pointer barriers which will make it easier to use hot corners."
-	fi
-
-	if has_version "<x11-drivers/ati-drivers-12"; then
-		ewarn "GNOME Shell has been reported to show graphical corruption under"
-		ewarn "x11-drivers/ati-drivers-11.*; you may want to use GNOME in"
-		ewarn "fallback mode, or switch to open-source drivers."
-	fi
-
-	if has_version "media-libs/mesa[video_cards_radeon]"; then
-		elog "GNOME Shell is unstable under classic-mode r300/r600 mesa drivers."
-		elog "Make sure that gallium architecture for r300 and r600 drivers is"
-		elog "selected using 'eselect mesa'."
-		if ! has_version "media-libs/mesa[gallium]"; then
-			ewarn "You will need to emerge media-libs/mesa with USE=gallium."
-		fi
-	fi
-
-	if has_version "media-libs/mesa[video_cards_intel]"; then
-		elog "GNOME Shell is unstable under gallium-mode i915/i965 mesa drivers."
-		elog "Make sure that classic architecture for i915 and i965 drivers is"
-		elog "selected using 'eselect mesa'."
-		if ! has_version "media-libs/mesa[classic]"; then
-			ewarn "You will need to emerge media-libs/mesa with USE=classic."
-		fi
-	fi
-}

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 809c7f5..9a7b302 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2011 Gentoo Foundation
+# Copyright 1999-2012 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: $
 
@@ -17,7 +17,7 @@ HOMEPAGE="http://live.gnome.org/GnomeShell"
 
 LICENSE="GPL-2"
 SLOT="0"
-IUSE="+bluetooth +networkmanager"
+IUSE="+bluetooth +networkmanager systemd"
 if [[ ${PV} = 9999 ]]; then
 	KEYWORDS=""
 else
@@ -66,6 +66,7 @@ COMMON_DEPEND=">=app-crypt/gcr-3.3.90
 
 	bluetooth? ( >=net-wireless/gnome-bluetooth-3.1.0[introspection] )
 	networkmanager? ( >=net-misc/networkmanager-0.8.999[introspection] )
+	systemd? ( >=sys-apps/systemd-31 )
 "
 # Runtime-only deps are probably incomplete and approximate.
 # Each block:
@@ -89,9 +90,9 @@ RDEPEND="${COMMON_DEPEND}
 	>=gnome-base/gnome-session-2.91.91
 
 	>=gnome-base/gnome-settings-daemon-2.91
-	>=gnome-base/gnome-control-center-2.91.92-r1
+	>=gnome-base/gnome-control-center-2.91.92-r1[bluetooth(+)?]
 
-	>=sys-apps/accountsservice-0.6.14
+	>=sys-apps/accountsservice-0.6.14[introspection]
 
 	>=app-accessibility/caribou-0.3
 
@@ -102,6 +103,8 @@ RDEPEND="${COMMON_DEPEND}
 	networkmanager? (
 		net-misc/mobile-broadband-provider-info
 		sys-libs/timezone-data )
+
+	!systemd? ( sys-auth/consolekit )
 "
 DEPEND="${COMMON_DEPEND}
 	>=sys-devel/gettext-0.17
@@ -121,10 +124,9 @@ pkg_setup() {
 		--disable-jhbuild-wrapper-script
 		$(use_with bluetooth)
 		$(use_enable networkmanager)
+		$(use_with systemd)
 		--with-ca-certificates=${EPREFIX}/etc/ssl/certs/ca-certificates.crt
-		BROWSER_PLUGIN_DIR=${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins
-		--without-systemd"
-	# TODO: systemd support
+		BROWSER_PLUGIN_DIR=${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins"
 	python_set_active_version 2
 	python_pkg_setup
 }
@@ -147,7 +149,7 @@ src_prepare() {
 
 src_install() {
 	gnome2_src_install
-	python_convert_shebangs 2 "${D}"/usr/bin/gnome-shell-extension-tool
+	python_convert_shebangs 2 "${ED}/usr/bin/gnome-shell-extension-tool"
 
 	# Required for gnome-shell on hardened/PaX, bug #398941
 	pax-mark mr "${ED}usr/bin/gnome-shell"



^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2012-08-18 15:41 Priit Laes
  0 siblings, 0 replies; 25+ messages in thread
From: Priit Laes @ 2012-08-18 15:41 UTC (permalink / raw
  To: gentoo-commits

commit:     27fc358400bef7f044b67c9b8c9ce24e0bb67c78
Author:     Priit Laes <plaes <AT> plaes <DOT> org>
AuthorDate: Sat Aug 18 15:40:59 2012 +0000
Commit:     Priit Laes <plaes <AT> plaes <DOT> org>
CommitDate: Sat Aug 18 15:40:59 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=27fc3584

gnome-base/gnome-shell: Add 3.5.5 to overlay

---
 ...atch => gnome-shell-3.5.x-bluetooth-flag.patch} |   14 ++--
 ...=> gnome-shell-3.5.x-networkmanager-flag.patch} |   88 ++++++++-----------
 ...-shell-9999.ebuild => gnome-shell-3.5.5.ebuild} |   27 +++---
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |   27 +++---
 4 files changed, 70 insertions(+), 86 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.2.1-automagic-gnome-bluetooth.patch b/gnome-base/gnome-shell/files/gnome-shell-3.5.x-bluetooth-flag.patch
similarity index 83%
rename from gnome-base/gnome-shell/files/gnome-shell-3.2.1-automagic-gnome-bluetooth.patch
rename to gnome-base/gnome-shell/files/gnome-shell-3.5.x-bluetooth-flag.patch
index ae23a6c..b571754 100644
--- a/gnome-base/gnome-shell/files/gnome-shell-3.2.1-automagic-gnome-bluetooth.patch
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.5.x-bluetooth-flag.patch
@@ -1,7 +1,7 @@
-From 84568fa9454f279ff519a2a11174e112786e46db Mon Sep 17 00:00:00 2001
+From fbc509635dd60d548945636bb4f1cfec5dc7fb49 Mon Sep 17 00:00:00 2001
 From: root <admin@catmur.co.uk>
 Date: Sun, 8 Jan 2012 13:55:05 +0000
-Subject: [PATCH] Fix automagic gnome-bluetooth dependency
+Subject: [PATCH 1/2] Fix automagic gnome-bluetooth dependency
 
 https://bugs.gentoo.org/show_bug.cgi?id=398145
 
@@ -17,11 +17,11 @@ so I can at least merge USE=-bluetooth.
  1 files changed, 5 insertions(+), 0 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index 1c64122..a699838 100644
+index 7ab5c59..f3dbdcc 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -127,6 +127,8 @@ PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
- PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 0.1.7)
+@@ -123,6 +123,8 @@ PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
+ PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.5.4)
  
  AC_MSG_CHECKING([for bluetooth support])
 +AC_ARG_WITH([bluetooth], AS_HELP_STRING([--without-bluetooth], [Build without gnome-bluetooth library (default: auto)]))
@@ -29,7 +29,7 @@ index 1c64122..a699838 100644
  PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
          [BLUETOOTH_DIR=`$PKG_CONFIG --variable=applet_libdir gnome-bluetooth-1.0`
  	 BLUETOOTH_LIBS=`$PKG_CONFIG --variable=applet_libs gnome-bluetooth-1.0`
-@@ -138,6 +140,9 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
+@@ -135,6 +137,9 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
  	[AC_DEFINE([HAVE_BLUETOOTH],[0])
  	 AC_SUBST([HAVE_BLUETOOTH],[0])
  	 AC_MSG_RESULT([no])])
@@ -40,5 +40,5 @@ index 1c64122..a699838 100644
  PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION libedataserverui-3.0 >= $LIBEDATASERVERUI_MIN_VERSION gio-2.0)
  AC_SUBST(CALENDAR_SERVER_CFLAGS)
 -- 
-1.7.8.2
+1.7.8.6
 

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.4.0-optional-networkmanager.patch b/gnome-base/gnome-shell/files/gnome-shell-3.5.x-networkmanager-flag.patch
similarity index 74%
rename from gnome-base/gnome-shell/files/gnome-shell-3.4.0-optional-networkmanager.patch
rename to gnome-base/gnome-shell/files/gnome-shell-3.5.x-networkmanager-flag.patch
index ee9d0af..bf43644 100644
--- a/gnome-base/gnome-shell/files/gnome-shell-3.4.0-optional-networkmanager.patch
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.5.x-networkmanager-flag.patch
@@ -1,7 +1,7 @@
-From 411d751935c9bdc485b113678284edf0cc9e545e Mon Sep 17 00:00:00 2001
+From 98c765809541b373e487eb4b449362a35d7bcb6c Mon Sep 17 00:00:00 2001
 From: Michael Biebl <biebl@debian.org>
 Date: Thu, 22 Dec 2011 22:04:12 +0100
-Subject: [PATCH] Make NM optional
+Subject: [PATCH 2/2] Make NM optional
 
 [ Alexandre Rostovtsev <tetromino@gentoo.org> :
   * use config.js (and AC_SUBST HAVE_NETWORKMANAGER appropriately);
@@ -16,22 +16,22 @@ Subject: [PATCH] Make NM optional
  configure.ac         |   47 ++++++++++++++++++++++++++++++++++++++++++++++-
  js/Makefile.am       |    1 +
  js/misc/config.js.in |    2 ++
- js/ui/main.js        |    8 ++++++--
- js/ui/panel.js       |    3 ++-
- src/Makefile.am      |   17 ++++++++++++-----
- 6 files changed, 69 insertions(+), 9 deletions(-)
+ js/ui/main.js        |    7 +++++--
+ src/Makefile.am      |   18 +++++++++++++-----
+ 5 files changed, 67 insertions(+), 8 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index c6ad636..f228ebd 100644
+index f3dbdcc..566a78c 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -94,9 +94,42 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
+@@ -96,10 +96,43 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
                                 telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
                                 telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
                                 polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
 -                               libnm-glib libnm-util gnome-keyring-1
 +                               gnome-keyring-1
-                                gcr-3 >= $GCR_MIN_VERSION)
+                                gcr-3 >= $GCR_MIN_VERSION
+                                gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION)
  
 +##########################
 +# Check for NetworkManager
@@ -69,7 +69,7 @@ index c6ad636..f228ebd 100644
  PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
  
  PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
-@@ -289,3 +322,15 @@ AC_CONFIG_FILES([
+@@ -262,3 +295,15 @@ AC_CONFIG_FILES([
    man/Makefile
  ])
  AC_OUTPUT
@@ -86,32 +86,32 @@ index c6ad636..f228ebd 100644
 +	Support for GStreamer recording:        $build_recorder
 +"
 diff --git a/js/Makefile.am b/js/Makefile.am
-index e7751cc..5eb4c18 100644
+index 37c4a92..a1b1408 100644
 --- a/js/Makefile.am
 +++ b/js/Makefile.am
-@@ -8,6 +8,7 @@ misc/config.js: misc/config.js.in Makefile
+@@ -7,6 +7,7 @@ misc/config.js: misc/config.js.in Makefile
+ 	sed -e "s|[@]PACKAGE_NAME@|$(PACKAGE_NAME)|g" \
  	    -e "s|[@]PACKAGE_VERSION@|$(PACKAGE_VERSION)|g" \
- 	    -e "s|[@]GJS_VERSION@|$(GJS_VERSION)|g" \
  	    -e "s|[@]HAVE_BLUETOOTH@|$(HAVE_BLUETOOTH)|g" \
 +	    -e "s|[@]HAVE_NETWORKMANAGER@|$(HAVE_NETWORKMANAGER)|g" \
- 	    -e "s|[@]SHELL_SYSTEM_CA_FILE@|$(SHELL_SYSTEM_CA_FILE)|g" \
  	    -e "s|[@]GETTEXT_PACKAGE@|$(GETTEXT_PACKAGE)|g" \
  	    -e "s|[@]datadir@|$(datadir)|g" \
+ 	    -e "s|[@]libexecdir@|$(libexecdir)|g" \
 diff --git a/js/misc/config.js.in b/js/misc/config.js.in
-index 4a0db16..3df3394 100644
+index 9769104..9c4795d 100644
 --- a/js/misc/config.js.in
 +++ b/js/misc/config.js.in
-@@ -8,6 +8,8 @@ const PACKAGE_VERSION = '@PACKAGE_VERSION@';
- const GJS_VERSION = '@GJS_VERSION@';
+@@ -6,6 +6,8 @@ const PACKAGE_NAME = '@PACKAGE_NAME@';
+ const PACKAGE_VERSION = '@PACKAGE_VERSION@';
  /* 1 if gnome-bluetooth is available, 0 otherwise */
  const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
 +/* 1 if networkmanager is available, 0 otherwise */
 +const HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@;
- /* The system TLS CA list */
- const SHELL_SYSTEM_CA_FILE = '@SHELL_SYSTEM_CA_FILE@';
  /* gettext package */
+ const GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@';
+ /* locale dir */
 diff --git a/js/ui/main.js b/js/ui/main.js
-index ac9330c..7ca91ee 100644
+index adfaae2..182623c 100644
 --- a/js/ui/main.js
 +++ b/js/ui/main.js
 @@ -12,6 +12,7 @@ const St = imports.gi.St;
@@ -122,7 +122,7 @@ index ac9330c..7ca91ee 100644
  const CtrlAltTab = imports.ui.ctrlAltTab;
  const EndSessionDialog = imports.ui.endSessionDialog;
  const PolkitAuthenticationAgent = imports.ui.polkitAuthenticationAgent;
-@@ -26,7 +27,7 @@ const PlaceDisplay = imports.ui.placeDisplay;
+@@ -27,7 +28,7 @@ const PlaceDisplay = imports.ui.placeDisplay;
  const RunDialog = imports.ui.runDialog;
  const Layout = imports.ui.layout;
  const LookingGlass = imports.ui.lookingGlass;
@@ -130,8 +130,8 @@ index ac9330c..7ca91ee 100644
 +const NetworkAgent = Config.HAVE_NETWORKMANAGER ? imports.ui.networkAgent : null;
  const NotificationDaemon = imports.ui.notificationDaemon;
  const WindowAttentionHandler = imports.ui.windowAttentionHandler;
- const Scripting = imports.ui.scripting;
-@@ -85,7 +86,10 @@ function _createUserSession() {
+ const ScreenShield = imports.ui.screenShield;
+@@ -88,7 +89,9 @@ function createUserSession() {
      telepathyClient = new TelepathyClient.Client();
      automountManager = new AutomountManager.AutomountManager();
      autorunManager = new AutorunManager.AutorunManager();
@@ -139,39 +139,24 @@ index ac9330c..7ca91ee 100644
 +    if (Config.HAVE_NETWORKMANAGER) {
 +        networkAgent = new NetworkAgent.NetworkAgent();
 +    }
-+
- }
- 
- function _createGDMSession() {
-diff --git a/js/ui/panel.js b/js/ui/panel.js
-index 329f118..865ce05 100644
---- a/js/ui/panel.js
-+++ b/js/ui/panel.js
-@@ -45,7 +45,8 @@ if (Config.HAVE_BLUETOOTH)
-     STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator;
  
- try {
--    STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['network'] = imports.ui.status.network.NMApplet;
-+    if (Config.HAVE_NETWORKMANAGER)
-+        STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['network'] = imports.ui.status.network.NMApplet;
- } catch(e) {
-     log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
+     _initRecorder();
  }
 diff --git a/src/Makefile.am b/src/Makefile.am
-index 95f1a41..637455e 100644
+index a390691..a6279ae 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
-@@ -110,9 +110,7 @@ shell_public_headers_h =		\
- 	shell-gtk-embed.h		\
+@@ -115,9 +115,7 @@ shell_public_headers_h =		\
  	shell-global.h			\
  	shell-idle-monitor.h		\
+ 	shell-invert-lightness-effect.h	\
 -	shell-mobile-providers.h	\
  	shell-mount-operation.h		\
 -	shell-network-agent.h		\
  	shell-perf-log.h		\
  	shell-screenshot.h		\
  	shell-screen-grabber.h		\
-@@ -134,6 +132,10 @@ shell_private_sources = \
+@@ -139,6 +137,10 @@ shell_private_sources = \
  	gactionobserver.h		\
  	gactionobserver.c
  
@@ -182,8 +167,8 @@ index 95f1a41..637455e 100644
  libgnome_shell_la_SOURCES =		\
  	$(shell_built_sources)		\
  	$(shell_public_headers_h)	\
-@@ -159,9 +161,7 @@ libgnome_shell_la_SOURCES =		\
- 	shell-idle-monitor.c		\
+@@ -162,9 +164,7 @@ libgnome_shell_la_SOURCES =		\
+ 	shell-invert-lightness-effect.c	\
  	shell-keyring-prompt.h		\
  	shell-keyring-prompt.c		\
 -	shell-mobile-providers.c	\
@@ -192,10 +177,11 @@ index 95f1a41..637455e 100644
  	shell-perf-log.c		\
  	shell-polkit-authentication-agent.h	\
  	shell-polkit-authentication-agent.c	\
-@@ -181,6 +181,10 @@ libgnome_shell_la_SOURCES =		\
+@@ -183,6 +183,11 @@ libgnome_shell_la_SOURCES =		\
+ 	shell-xfixes-cursor.c		\
  	$(NULL)
  
- 
++
 +if HAVE_NETWORKMANAGER
 +libgnome_shell_la_SOURCES += shell-mobile-providers.c shell-network-agent.c
 +endif
@@ -203,12 +189,12 @@ index 95f1a41..637455e 100644
  libgnome_shell_la_gir_sources = \
  	$(filter-out %-private.h $(shell_private_sources), $(shell_public_headers_h) $(libgnome_shell_la_SOURCES))
  
-@@ -296,7 +300,10 @@ libgnome_shell_la_LIBADD =		\
+@@ -296,7 +301,10 @@ libgnome_shell_la_LIBADD =		\
  libgnome_shell_la_CPPFLAGS = $(gnome_shell_cflags)
  
  Shell-0.1.gir: libgnome-shell.la St-1.0.gir
--Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 TelepathyLogger-0.2 Soup-2.4 GMenu-3.0 NetworkManager-1.0 NMClient-1.0 Folks-0.6
-+Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 TelepathyLogger-0.2 Soup-2.4 GMenu-3.0 Folks-0.6
+-Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 TelepathyLogger-0.2 Soup-2.4 GMenu-3.0 NetworkManager-1.0 NMClient-1.0
++Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 TelepathyLogger-0.2 Soup-2.4 GMenu-3.0
 +if HAVE_NETWORKMANAGER
 +Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
 +endif
@@ -216,5 +202,5 @@ index 95f1a41..637455e 100644
  Shell_0_1_gir_LIBS = libgnome-shell.la
  Shell_0_1_gir_FILES = $(libgnome_shell_la_gir_sources)
 -- 
-1.7.8.5
+1.7.8.6
 

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-3.5.5.ebuild
similarity index 90%
copy from gnome-base/gnome-shell/gnome-shell-9999.ebuild
copy to gnome-base/gnome-shell/gnome-shell-3.5.5.ebuild
index c31aca0..91f6214 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.5.5.ebuild
@@ -24,34 +24,34 @@ else
 	KEYWORDS="~amd64 ~x86"
 fi
 
-# gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
 # latest g-c-c is needed due to https://bugs.gentoo.org/show_bug.cgi?id=360057
 # libXfixes-5.0 needed for pointer barriers
-COMMON_DEPEND=">=app-crypt/gcr-3.3.90[introspection]
+# TODO: gstreamer support is currently automagical:
+# gstreamer? ( >=media-libs/gstreamer-0.11.92 )
+COMMON_DEPEND="
+	>=app-accessibility/at-spi2-atk-2.5.3
+	>=app-crypt/gcr-3.3.90[introspection]
 	>=dev-libs/glib-2.31.6:2
-	>=dev-libs/gjs-1.31.22
+	>=dev-libs/gjs-1.33.2
 	>=dev-libs/gobject-introspection-0.10.1
 	>=x11-libs/gtk+-3.3.9:3[introspection]
 	>=media-libs/clutter-1.9.16:1.0[introspection]
-	>=dev-libs/folks-0.5.2
 	>=dev-libs/json-glib-0.13.2
 	>=dev-libs/libcroco-0.6.2:0.6
-	>=gnome-base/gnome-desktop-2.91.2:3
-	>=gnome-base/gsettings-desktop-schemas-2.91.91
+	>=gnome-base/gnome-desktop-3.5.1:3
+	>=gnome-base/gsettings-desktop-schemas-3.5.4
 	>=gnome-base/gnome-keyring-3.3.90
-	>=gnome-base/gnome-menus-2.29.10:3[introspection]
+	>=gnome-base/gnome-menus-3.5.3:3[introspection]
 	gnome-base/libgnome-keyring
-	>=gnome-extra/evolution-data-server-2.91.6
-	>=media-libs/gstreamer-0.10.16:0.10
+	>=gnome-extra/evolution-data-server-3.5.3
 	>=media-libs/gst-plugins-base-0.10.16:0.10
 	>=net-im/telepathy-logger-0.2.4[introspection]
 	>=net-libs/telepathy-glib-0.17.5[introspection]
 	>=sys-auth/polkit-0.100[introspection]
 	>=x11-libs/libXfixes-5.0
-	>=x11-wm/mutter-3.4.1[introspection]
+	>=x11-wm/mutter-3.5.5[introspection]
 	>=x11-libs/startup-notification-0.11
 
-	app-misc/ca-certificates
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2
 	gnome-base/librsvg
@@ -125,7 +125,6 @@ pkg_setup() {
 		$(use_with bluetooth)
 		$(use_enable networkmanager)
 		$(use_with systemd)
-		--with-ca-certificates=${EPREFIX}/etc/ssl/certs/ca-certificates.crt
 		BROWSER_PLUGIN_DIR=${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins"
 	python_set_active_version 2
 	python_pkg_setup
@@ -133,10 +132,10 @@ pkg_setup() {
 
 src_prepare() {
 	# Fix automagic gnome-bluetooth dep, bug #398145
-	epatch "${FILESDIR}/${PN}-3.2.1-automagic-gnome-bluetooth.patch"
+	epatch "${FILESDIR}/${PN}-3.5.x-bluetooth-flag.patch"
 
 	# Make networkmanager optional, bug #398593
-	epatch "${FILESDIR}/${PN}-3.4.0-optional-networkmanager.patch"
+	epatch "${FILESDIR}/${PN}-3.5.x-networkmanager-flag.patch"
 
 	[[ ${PV} != 9999 ]] && eautoreconf
 	gnome2_src_prepare

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index c31aca0..91f6214 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -24,34 +24,34 @@ else
 	KEYWORDS="~amd64 ~x86"
 fi
 
-# gnome-desktop-2.91.2 is needed due to header changes, db82a33 in gnome-desktop
 # latest g-c-c is needed due to https://bugs.gentoo.org/show_bug.cgi?id=360057
 # libXfixes-5.0 needed for pointer barriers
-COMMON_DEPEND=">=app-crypt/gcr-3.3.90[introspection]
+# TODO: gstreamer support is currently automagical:
+# gstreamer? ( >=media-libs/gstreamer-0.11.92 )
+COMMON_DEPEND="
+	>=app-accessibility/at-spi2-atk-2.5.3
+	>=app-crypt/gcr-3.3.90[introspection]
 	>=dev-libs/glib-2.31.6:2
-	>=dev-libs/gjs-1.31.22
+	>=dev-libs/gjs-1.33.2
 	>=dev-libs/gobject-introspection-0.10.1
 	>=x11-libs/gtk+-3.3.9:3[introspection]
 	>=media-libs/clutter-1.9.16:1.0[introspection]
-	>=dev-libs/folks-0.5.2
 	>=dev-libs/json-glib-0.13.2
 	>=dev-libs/libcroco-0.6.2:0.6
-	>=gnome-base/gnome-desktop-2.91.2:3
-	>=gnome-base/gsettings-desktop-schemas-2.91.91
+	>=gnome-base/gnome-desktop-3.5.1:3
+	>=gnome-base/gsettings-desktop-schemas-3.5.4
 	>=gnome-base/gnome-keyring-3.3.90
-	>=gnome-base/gnome-menus-2.29.10:3[introspection]
+	>=gnome-base/gnome-menus-3.5.3:3[introspection]
 	gnome-base/libgnome-keyring
-	>=gnome-extra/evolution-data-server-2.91.6
-	>=media-libs/gstreamer-0.10.16:0.10
+	>=gnome-extra/evolution-data-server-3.5.3
 	>=media-libs/gst-plugins-base-0.10.16:0.10
 	>=net-im/telepathy-logger-0.2.4[introspection]
 	>=net-libs/telepathy-glib-0.17.5[introspection]
 	>=sys-auth/polkit-0.100[introspection]
 	>=x11-libs/libXfixes-5.0
-	>=x11-wm/mutter-3.4.1[introspection]
+	>=x11-wm/mutter-3.5.5[introspection]
 	>=x11-libs/startup-notification-0.11
 
-	app-misc/ca-certificates
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2
 	gnome-base/librsvg
@@ -125,7 +125,6 @@ pkg_setup() {
 		$(use_with bluetooth)
 		$(use_enable networkmanager)
 		$(use_with systemd)
-		--with-ca-certificates=${EPREFIX}/etc/ssl/certs/ca-certificates.crt
 		BROWSER_PLUGIN_DIR=${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins"
 	python_set_active_version 2
 	python_pkg_setup
@@ -133,10 +132,10 @@ pkg_setup() {
 
 src_prepare() {
 	# Fix automagic gnome-bluetooth dep, bug #398145
-	epatch "${FILESDIR}/${PN}-3.2.1-automagic-gnome-bluetooth.patch"
+	epatch "${FILESDIR}/${PN}-3.5.x-bluetooth-flag.patch"
 
 	# Make networkmanager optional, bug #398593
-	epatch "${FILESDIR}/${PN}-3.4.0-optional-networkmanager.patch"
+	epatch "${FILESDIR}/${PN}-3.5.x-networkmanager-flag.patch"
 
 	[[ ${PV} != 9999 ]] && eautoreconf
 	gnome2_src_prepare


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2012-10-02  1:51 Alexandre Rostovtsev
  0 siblings, 0 replies; 25+ messages in thread
From: Alexandre Rostovtsev @ 2012-10-02  1:51 UTC (permalink / raw
  To: gentoo-commits

commit:     ce790b3bac45f85cb49715815d26757b83470ae5
Author:     Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org>
AuthorDate: Tue Oct  2 01:50:12 2012 +0000
Commit:     Alexandre Rostovtsev <tetromino <AT> gentoo <DOT> org>
CommitDate: Tue Oct  2 01:50:12 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=ce790b3b

gnome-base/gnome-shell: make networkmanager optional, once again

Thanks to zchs for the reminder.

---
 ...=> gnome-shell-3.6.0-networkmanager-flag.patch} |  120 +++++++++++---------
 gnome-base/gnome-shell/gnome-shell-3.6.0.ebuild    |    3 +-
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |    3 +-
 3 files changed, 70 insertions(+), 56 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.5.x-networkmanager-flag.patch b/gnome-base/gnome-shell/files/gnome-shell-3.6.0-networkmanager-flag.patch
similarity index 69%
rename from gnome-base/gnome-shell/files/gnome-shell-3.5.x-networkmanager-flag.patch
rename to gnome-base/gnome-shell/files/gnome-shell-3.6.0-networkmanager-flag.patch
index bf43644..c996cc0 100644
--- a/gnome-base/gnome-shell/files/gnome-shell-3.5.x-networkmanager-flag.patch
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.6.0-networkmanager-flag.patch
@@ -1,7 +1,7 @@
-From 98c765809541b373e487eb4b449362a35d7bcb6c Mon Sep 17 00:00:00 2001
+From da0912a522f80a72db5b73504dc82941067880b2 Mon Sep 17 00:00:00 2001
 From: Michael Biebl <biebl@debian.org>
 Date: Thu, 22 Dec 2011 22:04:12 +0100
-Subject: [PATCH 2/2] Make NM optional
+Subject: [PATCH] Make NM optional
 
 [ Alexandre Rostovtsev <tetromino@gentoo.org> :
   * use config.js (and AC_SUBST HAVE_NETWORKMANAGER appropriately);
@@ -13,15 +13,16 @@ Subject: [PATCH 2/2] Make NM optional
     BIKESHED SHOULD BE BLUE, also because the upstream package name is
     NetworkManager, not Network_Manager. ]
 ---
- configure.ac         |   47 ++++++++++++++++++++++++++++++++++++++++++++++-
- js/Makefile.am       |    1 +
- js/misc/config.js.in |    2 ++
- js/ui/main.js        |    7 +++++--
- src/Makefile.am      |   18 +++++++++++++-----
- 5 files changed, 67 insertions(+), 8 deletions(-)
+ configure.ac         | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
+ js/Makefile.am       |  1 +
+ js/misc/config.js.in |  2 ++
+ js/ui/panel.js       | 12 +++++++-----
+ js/ui/sessionMode.js |  7 ++++++-
+ src/Makefile.am      | 17 ++++++++++++-----
+ 6 files changed, 74 insertions(+), 12 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index f3dbdcc..566a78c 100644
+index e6ac88c..3ff8777 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -96,10 +96,43 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
@@ -69,7 +70,7 @@ index f3dbdcc..566a78c 100644
  PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
  
  PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
-@@ -262,3 +295,15 @@ AC_CONFIG_FILES([
+@@ -260,3 +293,15 @@ AC_CONFIG_FILES([
    man/Makefile
  ])
  AC_OUTPUT
@@ -86,10 +87,10 @@ index f3dbdcc..566a78c 100644
 +	Support for GStreamer recording:        $build_recorder
 +"
 diff --git a/js/Makefile.am b/js/Makefile.am
-index 37c4a92..a1b1408 100644
+index a3e4917..4b00193 100644
 --- a/js/Makefile.am
 +++ b/js/Makefile.am
-@@ -7,6 +7,7 @@ misc/config.js: misc/config.js.in Makefile
+@@ -8,6 +8,7 @@ misc/config.js: misc/config.js.in Makefile
  	sed -e "s|[@]PACKAGE_NAME@|$(PACKAGE_NAME)|g" \
  	    -e "s|[@]PACKAGE_VERSION@|$(PACKAGE_VERSION)|g" \
  	    -e "s|[@]HAVE_BLUETOOTH@|$(HAVE_BLUETOOTH)|g" \
@@ -110,40 +111,56 @@ index 9769104..9c4795d 100644
  /* gettext package */
  const GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@';
  /* locale dir */
-diff --git a/js/ui/main.js b/js/ui/main.js
-index adfaae2..182623c 100644
---- a/js/ui/main.js
-+++ b/js/ui/main.js
-@@ -12,6 +12,7 @@ const St = imports.gi.St;
+diff --git a/js/ui/panel.js b/js/ui/panel.js
+index bcbaafb..40c6ff9 100644
+--- a/js/ui/panel.js
++++ b/js/ui/panel.js
+@@ -910,11 +910,13 @@ if (Config.HAVE_BLUETOOTH)
+     PANEL_ITEM_IMPLEMENTATIONS['bluetooth'] =
+         imports.ui.status.bluetooth.Indicator;
  
- const AutomountManager = imports.ui.automountManager;
- const AutorunManager = imports.ui.autorunManager;
-+const Config = imports.misc.config;
- const CtrlAltTab = imports.ui.ctrlAltTab;
- const EndSessionDialog = imports.ui.endSessionDialog;
- const PolkitAuthenticationAgent = imports.ui.polkitAuthenticationAgent;
-@@ -27,7 +28,7 @@ const PlaceDisplay = imports.ui.placeDisplay;
- const RunDialog = imports.ui.runDialog;
- const Layout = imports.ui.layout;
- const LookingGlass = imports.ui.lookingGlass;
--const NetworkAgent = imports.ui.networkAgent;
-+const NetworkAgent = Config.HAVE_NETWORKMANAGER ? imports.ui.networkAgent : null;
- const NotificationDaemon = imports.ui.notificationDaemon;
- const WindowAttentionHandler = imports.ui.windowAttentionHandler;
- const ScreenShield = imports.ui.screenShield;
-@@ -88,7 +89,9 @@ function createUserSession() {
-     telepathyClient = new TelepathyClient.Client();
-     automountManager = new AutomountManager.AutomountManager();
-     autorunManager = new AutorunManager.AutorunManager();
--    networkAgent = new NetworkAgent.NetworkAgent();
-+    if (Config.HAVE_NETWORKMANAGER) {
-+        networkAgent = new NetworkAgent.NetworkAgent();
+-try {
+-    PANEL_ITEM_IMPLEMENTATIONS['network'] =
+-        imports.ui.status.network.NMApplet;
+-} catch(e) {
+-    log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
++if (Config.HAVE_NETWORKMANAGER) {
++    try {
++        PANEL_ITEM_IMPLEMENTATIONS['network'] =
++            imports.ui.status.network.NMApplet;
++    } catch(e) {
++        log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
 +    }
- 
-     _initRecorder();
  }
+ 
+ const Panel = new Lang.Class({
+diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
+index 808109a..7ee6b1e 100644
+--- a/js/ui/sessionMode.js
++++ b/js/ui/sessionMode.js
+@@ -6,6 +6,8 @@ const Signals = imports.signals;
+ const Main = imports.ui.main;
+ const Params = imports.misc.params;
+ 
++const Config = imports.misc.config;
++
+ const DEFAULT_MODE = 'restrictive';
+ 
+ const _modes = {
+@@ -91,7 +93,10 @@ const _modes = {
+         isLocked: false,
+         isPrimary: true,
+         unlockDialog: imports.ui.unlockDialog.UnlockDialog,
+-        components: ['networkAgent', 'polkitAgent', 'telepathyClient',
++        components: Config.HAVE_NETWORKMANAGER ?
++                    ['networkAgent', 'polkitAgent', 'telepathyClient',
++                     'keyring', 'recorder', 'autorunManager', 'automountManager'] :
++                    ['polkitAgent', 'telepathyClient',
+                      'keyring', 'recorder', 'autorunManager', 'automountManager'],
+         panel: {
+             left: ['activities', 'appMenu'],
 diff --git a/src/Makefile.am b/src/Makefile.am
-index a390691..a6279ae 100644
+index a390691..552b640 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
 @@ -115,9 +115,7 @@ shell_public_headers_h =		\
@@ -156,17 +173,17 @@ index a390691..a6279ae 100644
  	shell-perf-log.h		\
  	shell-screenshot.h		\
  	shell-screen-grabber.h		\
-@@ -139,6 +137,10 @@ shell_private_sources = \
- 	gactionobserver.h		\
- 	gactionobserver.c
+@@ -131,6 +129,10 @@ shell_public_headers_h =		\
+ 	shell-wm.h			\
+ 	shell-xfixes-cursor.h
  
 +if HAVE_NETWORKMANAGER
 +shell_public_headers_h += shell-mobile-providers.h shell-network-agent.h
 +endif
 +
- libgnome_shell_la_SOURCES =		\
- 	$(shell_built_sources)		\
- 	$(shell_public_headers_h)	\
+ shell_private_sources = \
+ 	gactionmuxer.h			\
+ 	gactionmuxer.c			\
 @@ -162,9 +164,7 @@ libgnome_shell_la_SOURCES =		\
  	shell-invert-lightness-effect.c	\
  	shell-keyring-prompt.h		\
@@ -177,11 +194,10 @@ index a390691..a6279ae 100644
  	shell-perf-log.c		\
  	shell-polkit-authentication-agent.h	\
  	shell-polkit-authentication-agent.c	\
-@@ -183,6 +183,11 @@ libgnome_shell_la_SOURCES =		\
+@@ -183,6 +183,10 @@ libgnome_shell_la_SOURCES =		\
  	shell-xfixes-cursor.c		\
  	$(NULL)
  
-+
 +if HAVE_NETWORKMANAGER
 +libgnome_shell_la_SOURCES += shell-mobile-providers.c shell-network-agent.c
 +endif
@@ -189,7 +205,7 @@ index a390691..a6279ae 100644
  libgnome_shell_la_gir_sources = \
  	$(filter-out %-private.h $(shell_private_sources), $(shell_public_headers_h) $(libgnome_shell_la_SOURCES))
  
-@@ -296,7 +301,10 @@ libgnome_shell_la_LIBADD =		\
+@@ -296,7 +300,10 @@ libgnome_shell_la_LIBADD =		\
  libgnome_shell_la_CPPFLAGS = $(gnome_shell_cflags)
  
  Shell-0.1.gir: libgnome-shell.la St-1.0.gir
@@ -202,5 +218,5 @@ index a390691..a6279ae 100644
  Shell_0_1_gir_LIBS = libgnome-shell.la
  Shell_0_1_gir_FILES = $(libgnome_shell_la_gir_sources)
 -- 
-1.7.8.6
+1.7.12
 

diff --git a/gnome-base/gnome-shell/gnome-shell-3.6.0.ebuild b/gnome-base/gnome-shell/gnome-shell-3.6.0.ebuild
index 5315f2b..f01a19c 100644
--- a/gnome-base/gnome-shell/gnome-shell-3.6.0.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.6.0.ebuild
@@ -135,8 +135,7 @@ src_prepare() {
 	epatch "${FILESDIR}/${PN}-3.5.x-bluetooth-flag.patch"
 
 	# Make networkmanager optional, bug #398593
-	# FIXME: fails to apply, massive source changes
-	#epatch "${FILESDIR}/${PN}-3.5.x-networkmanager-flag.patch"
+	epatch "${FILESDIR}/${PN}-3.6.0-networkmanager-flag.patch"
 
 	[[ ${PV} != 9999 ]] && eautoreconf
 	gnome2_src_prepare

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 5315f2b..f01a19c 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -135,8 +135,7 @@ src_prepare() {
 	epatch "${FILESDIR}/${PN}-3.5.x-bluetooth-flag.patch"
 
 	# Make networkmanager optional, bug #398593
-	# FIXME: fails to apply, massive source changes
-	#epatch "${FILESDIR}/${PN}-3.5.x-networkmanager-flag.patch"
+	epatch "${FILESDIR}/${PN}-3.6.0-networkmanager-flag.patch"
 
 	[[ ${PV} != 9999 ]] && eautoreconf
 	gnome2_src_prepare


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2013-12-10 23:31 Gilles Dartiguelongue
  0 siblings, 0 replies; 25+ messages in thread
From: Gilles Dartiguelongue @ 2013-12-10 23:31 UTC (permalink / raw
  To: gentoo-commits

commit:     87f1430f36606631d915cccccb2ef6cff34edf03
Author:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
AuthorDate: Mon Dec  2 23:56:46 2013 +0000
Commit:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
CommitDate: Tue Dec 10 23:30:33 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=87f1430f

gnome-base/gnome-shell: 3.8.4-r1 → 3.10.2.1

---
 ...patch => gnome-shell-3.10-bluetooth-flag.patch} |  30 +--
 .../gnome-shell-3.10-networkmanager-flag.patch     | 228 +++++++++++++++++++++
 .../gnome-shell-3.6.0-networkmanager-flag.patch    | 222 --------------------
 .../gnome-shell/files/gnome-shell-defaults.patch   |  25 +++
 ...ell-9999.ebuild => gnome-shell-3.10.2.1.ebuild} | 142 +++++++------
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     | 133 +++++++-----
 gnome-base/gnome-shell/metadata.xml                |   8 +-
 7 files changed, 431 insertions(+), 357 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.5.x-bluetooth-flag.patch b/gnome-base/gnome-shell/files/gnome-shell-3.10-bluetooth-flag.patch
similarity index 55%
rename from gnome-base/gnome-shell/files/gnome-shell-3.5.x-bluetooth-flag.patch
rename to gnome-base/gnome-shell/files/gnome-shell-3.10-bluetooth-flag.patch
index b571754..e74e18f 100644
--- a/gnome-base/gnome-shell/files/gnome-shell-3.5.x-bluetooth-flag.patch
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.10-bluetooth-flag.patch
@@ -1,7 +1,7 @@
-From fbc509635dd60d548945636bb4f1cfec5dc7fb49 Mon Sep 17 00:00:00 2001
-From: root <admin@catmur.co.uk>
-Date: Sun, 8 Jan 2012 13:55:05 +0000
-Subject: [PATCH 1/2] Fix automagic gnome-bluetooth dependency
+From d15e9df8903c05fa0e355b3b1b133171c706d3ac Mon Sep 17 00:00:00 2001
+From: Sobhan Mohammadpour <sobhanmohammadpour1@yahoo.fr>
+Date: Thu, 28 Feb 2013 18:48:32 +0330
+Subject: [PATCH 2/3] Make bluetooth support optional
 
 https://bugs.gentoo.org/show_bug.cgi?id=398145
 
@@ -13,23 +13,25 @@ but got totally lost.
 I'll see if I can work out how to fix the automagic gnome-bluetooth dependency
 so I can at least merge USE=-bluetooth.
 ---
- configure.ac |    5 +++++
- 1 files changed, 5 insertions(+), 0 deletions(-)
+ configure.ac | 7 +++++++
+ 1 file changed, 7 insertions(+)
 
 diff --git a/configure.ac b/configure.ac
-index 7ab5c59..f3dbdcc 100644
+index 334323a..e749ca6 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -123,6 +123,8 @@ PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
- PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.5.4)
+@@ -116,6 +116,10 @@ PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.7.4)
+ PKG_CHECK_MODULES(CARIBOU, caribou-1.0 >= 0.4.8)
  
  AC_MSG_CHECKING([for bluetooth support])
-+AC_ARG_WITH([bluetooth], AS_HELP_STRING([--without-bluetooth], [Build without gnome-bluetooth library (default: auto)]))
++AC_ARG_WITH([bluetooth],
++	AS_HELP_STRING([--without-bluetooth],
++		[Build without gnome-bluetooth library (default: auto)]))
 +AS_IF([test "x$with_bluetooth" != "xno"], [
- PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
+ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.9.0],
          [BLUETOOTH_DIR=`$PKG_CONFIG --variable=applet_libdir gnome-bluetooth-1.0`
  	 BLUETOOTH_LIBS=`$PKG_CONFIG --variable=applet_libs gnome-bluetooth-1.0`
-@@ -135,6 +137,9 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
+@@ -128,6 +132,9 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.9.0],
  	[AC_DEFINE([HAVE_BLUETOOTH],[0])
  	 AC_SUBST([HAVE_BLUETOOTH],[0])
  	 AC_MSG_RESULT([no])])
@@ -37,8 +39,8 @@ index 7ab5c59..f3dbdcc 100644
 +	 AC_SUBST([HAVE_BLUETOOTH],[0])
 +	 AC_MSG_RESULT([no])])
  
- PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION libedataserverui-3.0 >= $LIBEDATASERVERUI_MIN_VERSION gio-2.0)
+ PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION gio-2.0)
  AC_SUBST(CALENDAR_SERVER_CFLAGS)
 -- 
-1.7.8.6
+1.8.5.1
 

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.10-networkmanager-flag.patch b/gnome-base/gnome-shell/files/gnome-shell-3.10-networkmanager-flag.patch
new file mode 100644
index 0000000..4e28835
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.10-networkmanager-flag.patch
@@ -0,0 +1,228 @@
+From 2ca59eb6e8ca9ba76757ede04e734c743aa21769 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Tue, 10 Dec 2013 23:37:08 +0100
+Subject: [PATCH 3/3] Make networkmanager support optional
+
+  * use config.js (and AC_SUBST HAVE_NETWORKMANAGER appropriately);
+  * take care to not import ui.status.network if nm is disabled;
+  * do not try to reassign to const variables;
+  * no point really in fiddling with the list of installed js
+  * files;
+  * don't build shell-mobile-providers if nm is disabled;
+  * use "networkmanager" instead of "network_manager" because THE
+    BIKESHED SHOULD BE BLUE, also because the upstream package name is
+    NetworkManager, not Network_Manager.
+---
+ configure.ac         | 46 ++++++++++++++++++++++++++++++++++++++++++++--
+ js/Makefile.am       |  1 +
+ js/misc/config.js.in |  2 ++
+ js/ui/panel.js       | 15 ++++++++++++---
+ js/ui/sessionMode.js |  7 ++++++-
+ src/Makefile.am      | 12 +++++++++---
+ 6 files changed, 74 insertions(+), 9 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index e749ca6..5044302 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -91,8 +91,6 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
+             libcanberra libcanberra-gtk3
+             telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
+             polkit-agent-1 >= $POLKIT_MIN_VERSION
+-            libnm-glib libnm-util >= $NETWORKMANAGER_MIN_VERSION
+-            libnm-gtk >= $NETWORKMANAGER_MIN_VERSION
+             libsecret-unstable gcr-base-3 >= $GCR_MIN_VERSION"
+ 
+ PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
+@@ -169,6 +167,38 @@ if test "$langinfo_ok" = "yes"; then
+             [Define if _NL_TIME_FIRST_WEEKDAY is available])
+ fi
+ 
++AC_ARG_ENABLE(networkmanager,
++             AS_HELP_STRING([--disable-networkmanager],
++                            [disable NetworkManager support  @<:@default=auto@:>@]),,
++              [enable_networkmanager=auto])
++
++if test "x$enable_networkmanager" != "xno"; then
++   PKG_CHECK_MODULES(NETWORKMANAGER,
++                     [libnm-glib
++                      libnm-util >= $NETWORKMANAGER_MIN_VERSION
++                      libnm-gtk >= $NETWORKMANAGER_MIN_VERSION
++                      gnome-keyring-1],
++                     [have_networkmanager=yes],
++                     [have_networkmanager=no])
++
++   GNOME_SHELL_CFLAGS="$GNOME_SHELL_CFLAGS $NETWORKMANAGER_CFLAGS"
++   GNOME_SHELL_LIBS="$GNOME_SHELL_LIBS $NETWORKMANAGER_LIBS"
++else
++   have_networkmanager="no  (disabled)"
++fi
++
++if test "x$have_networkmanager" = "xyes"; then
++   AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager])
++   AC_SUBST([HAVE_NETWORKMANAGER], [1])
++else
++   if test "x$enable_networkmanager" = "xyes"; then
++      AC_MSG_ERROR([Couldn't find NetworkManager.])
++   fi
++   AC_SUBST([HAVE_NETWORKMANAGER], [0])
++fi
++
++AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes")
++
+ # Sets GLIB_GENMARSHAL and GLIB_MKENUMS
+ AM_PATH_GLIB_2_0()
+ 
+@@ -210,3 +240,15 @@ AC_CONFIG_FILES([
+   man/Makefile
+ ])
+ AC_OUTPUT
++
++echo "
++Build configuration:
++
++       Prefix:                                 ${prefix}
++       Source code location:                   ${srcdir}
++       Compiler:                               ${CC}
++       Compiler Warnings:                      $enable_compile_warnings
++
++       Support for NetworkManager:             $have_networkmanager
++       Support for GStreamer recording:        $build_recorder
++"
+diff --git a/js/Makefile.am b/js/Makefile.am
+index d614f4f..88a3887 100644
+--- a/js/Makefile.am
++++ b/js/Makefile.am
+@@ -8,6 +8,7 @@ misc/config.js: misc/config.js.in Makefile
+ 	sed -e "s|[@]PACKAGE_NAME@|$(PACKAGE_NAME)|g" \
+ 	    -e "s|[@]PACKAGE_VERSION@|$(PACKAGE_VERSION)|g" \
+ 	    -e "s|[@]HAVE_BLUETOOTH@|$(HAVE_BLUETOOTH)|g" \
++	    -e "s|[@]HAVE_NETWORKMANAGER@|$(HAVE_NETWORKMANAGER)|g" \
+ 	    -e "s|[@]GETTEXT_PACKAGE@|$(GETTEXT_PACKAGE)|g" \
+ 	    -e "s|[@]datadir@|$(datadir)|g" \
+ 	    -e "s|[@]libexecdir@|$(libexecdir)|g" \
+diff --git a/js/misc/config.js.in b/js/misc/config.js.in
+index 9769104..9c4795d 100644
+--- a/js/misc/config.js.in
++++ b/js/misc/config.js.in
+@@ -6,6 +6,8 @@ const PACKAGE_NAME = '@PACKAGE_NAME@';
+ const PACKAGE_VERSION = '@PACKAGE_VERSION@';
+ /* 1 if gnome-bluetooth is available, 0 otherwise */
+ const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
++/* 1 if networkmanager is available, 0 otherwise */
++const HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@;
+ /* gettext package */
+ const GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@';
+ /* locale dir */
+diff --git a/js/ui/panel.js b/js/ui/panel.js
+index 2337a63..17e4f10 100644
+--- a/js/ui/panel.js
++++ b/js/ui/panel.js
+@@ -809,7 +809,12 @@ const AggregateMenu = new Lang.Class({
+         this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
+         this.actor.add_child(this._indicators);
+ 
+-        this._network = new imports.ui.status.network.NMApplet();
++        if (Config.HAVE_NETWORKMANAGER) {
++            this._network = new imports.ui.status.network.NMApplet();
++        } else {
++            this._network = null;
++        }
++
+         if (Config.HAVE_BLUETOOTH) {
+             this._bluetooth = new imports.ui.status.bluetooth.Indicator();
+         } else {
+@@ -824,7 +829,9 @@ const AggregateMenu = new Lang.Class({
+         this._screencast = new imports.ui.status.screencast.Indicator();
+ 
+         this._indicators.add_child(this._screencast.indicators);
+-        this._indicators.add_child(this._network.indicators);
++        if (this._network) {
++            this._indicators.add_child(this._network.indicators);
++        }
+         if (this._bluetooth) {
+             this._indicators.add_child(this._bluetooth.indicators);
+         }
+@@ -836,7 +843,9 @@ const AggregateMenu = new Lang.Class({
+         this.menu.addMenuItem(this._volume.menu);
+         this.menu.addMenuItem(this._brightness.menu);
+         this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+-        this.menu.addMenuItem(this._network.menu);
++        if (this._network) {
++            this.menu.addMenuItem(this._network.menu);
++        }
+         if (this._bluetooth) {
+             this.menu.addMenuItem(this._bluetooth.menu);
+         }
+diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
+index eb04c62..b882364 100644
+--- a/js/ui/sessionMode.js
++++ b/js/ui/sessionMode.js
+@@ -10,6 +10,8 @@ const FileUtils = imports.misc.fileUtils;
+ const Main = imports.ui.main;
+ const Params = imports.misc.params;
+ 
++const Config = imports.misc.config;
++
+ const DEFAULT_MODE = 'restrictive';
+ 
+ const _modes = {
+@@ -92,7 +94,10 @@ const _modes = {
+         isLocked: false,
+         isPrimary: true,
+         unlockDialog: imports.ui.unlockDialog.UnlockDialog,
+-        components: ['networkAgent', 'polkitAgent', 'telepathyClient',
++        components: Config.HAVE_NETWORKMANAGER ?
++                    ['networkAgent', 'polkitAgent', 'telepathyClient',
++                     'keyring', 'autorunManager', 'automountManager'] :
++                    ['polkitAgent', 'telepathyClient',
+                      'keyring', 'autorunManager', 'automountManager'],
+         panel: {
+             left: ['activities', 'appMenu'],
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 8041052..b5da6aa 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -103,7 +103,6 @@ shell_public_headers_h =		\
+ 	shell-invert-lightness-effect.h	\
+ 	shell-keybinding-modes.h	\
+ 	shell-mount-operation.h		\
+-	shell-network-agent.h		\
+ 	shell-perf-log.h		\
+ 	shell-screenshot.h		\
+ 	shell-slicer.h			\
+@@ -140,7 +139,6 @@ libgnome_shell_base_la_SOURCES = 	\
+ 	shell-menu-tracker.c		\
+ 	shell-menu-tracker.h		\
+ 	shell-mount-operation.c		\
+-	shell-network-agent.c		\
+ 	shell-perf-log.c		\
+ 	shell-polkit-authentication-agent.h	\
+ 	shell-polkit-authentication-agent.c	\
+@@ -175,6 +173,11 @@ libgnome_shell_sources =		\
+ 
+ libgnome_shell_la_SOURCES = $(libgnome_shell_sources)
+ 
++if HAVE_NETWORKMANAGER
++libgnome_shell_la_SOURCES +=  shell-network-agent.c
++shell_public_headers_h +=  shell-network-agent.h
++endif
++
+ libgnome_shell_la_gir_sources = \
+ 	$(filter-out %-private.h $(shell_private_sources), $(shell_public_headers_h) $(libgnome_shell_base_la_SOURCES) $(libgnome_shell_sources))
+ 
+@@ -331,7 +334,10 @@ INTROSPECTION_GIRS += ShellMenu-0.1.gir
+ CLEANFILES += ShellMenu-0.1.gir
+ 
+ Shell-0.1.gir: gnome-shell St-1.0.gir ShellMenu-0.1.gir
+-Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4 GMenu-3.0 NetworkManager-1.0 NMClient-1.0
++Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4 GMenu-3.0
++if HAVE_NETWORKMANAGER
++Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
++endif HAVE_NETWORKMANAGER
+ Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir)
+ # Hack! we use PROGRAM instead of LIBS so that the soname is not included
+ # in the typelib. This way the symbols will be resolved with the libgnome-shell
+-- 
+1.8.5.1
+

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.6.0-networkmanager-flag.patch b/gnome-base/gnome-shell/files/gnome-shell-3.6.0-networkmanager-flag.patch
deleted file mode 100644
index c996cc0..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-3.6.0-networkmanager-flag.patch
+++ /dev/null
@@ -1,222 +0,0 @@
-From da0912a522f80a72db5b73504dc82941067880b2 Mon Sep 17 00:00:00 2001
-From: Michael Biebl <biebl@debian.org>
-Date: Thu, 22 Dec 2011 22:04:12 +0100
-Subject: [PATCH] Make NM optional
-
-[ Alexandre Rostovtsev <tetromino@gentoo.org> :
-  * use config.js (and AC_SUBST HAVE_NETWORKMANAGER appropriately);
-  * take care to not import ui.status.network if nm is disabled;
-  * do not try to reassign to const variables;
-  * no point really in fiddling with the list of installed js files;
-  * don't build shell-mobile-providers if nm is disabled;
-  * use "networkmanager" instead of "network_manager" because THE
-    BIKESHED SHOULD BE BLUE, also because the upstream package name is
-    NetworkManager, not Network_Manager. ]
----
- configure.ac         | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
- js/Makefile.am       |  1 +
- js/misc/config.js.in |  2 ++
- js/ui/panel.js       | 12 +++++++-----
- js/ui/sessionMode.js |  7 ++++++-
- src/Makefile.am      | 17 ++++++++++++-----
- 6 files changed, 74 insertions(+), 12 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index e6ac88c..3ff8777 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -96,10 +96,43 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
-                                telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
-                                telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
-                                polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
--                               libnm-glib libnm-util gnome-keyring-1
-+                               gnome-keyring-1
-                                gcr-3 >= $GCR_MIN_VERSION
-                                gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION)
- 
-+##########################
-+# Check for NetworkManager
-+##########################
-+NM_MIN_VERSION=0.9
-+AC_ARG_ENABLE(networkmanager,
-+              AS_HELP_STRING([--disable-networkmanager],
-+                             [disable NetworkManager support @<:@default=auto@:>@]),,
-+              [enable_networkmanager=auto])
-+
-+if test "x$enable_networkmanager" != "xno"; then
-+   PKG_CHECK_MODULES(NETWORKMANAGER,
-+                     [libnm-glib libnm-util gnome-keyring-1],
-+                     [have_networkmanager=yes],
-+                     [have_networkmanager=no])
-+
-+   GNOME_SHELL_CFLAGS="$GNOME_SHELL_CFLAGS $NETWORKMANAGER_CFLAGS"
-+   GNOME_SHELL_LIBS="$GNOME_SHELL_LIBS $NETWORKMANAGER_LIBS"
-+else
-+   have_networkmanager="no  (disabled)"
-+fi
-+
-+if test "x$have_networkmanager" = "xyes"; then
-+   AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager])
-+   AC_SUBST([HAVE_NETWORKMANAGER], [1])
-+else
-+   if test "x$enable_networkmanager" = "xyes"; then
-+      AC_MSG_ERROR([Couldn't find NetworkManager.])
-+   fi
-+   AC_SUBST([HAVE_NETWORKMANAGER], [0])
-+fi
-+
-+AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes")
-+
- PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
- 
- PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0)
-@@ -260,3 +293,15 @@ AC_CONFIG_FILES([
-   man/Makefile
- ])
- AC_OUTPUT
-+
-+echo "
-+Build configuration:
-+
-+	Prefix:                                 ${prefix}
-+	Source code location:                   ${srcdir}
-+	Compiler:                               ${CC}
-+	Compiler Warnings:                      $enable_compile_warnings
-+
-+	Support for NetworkManager:             $have_networkmanager
-+	Support for GStreamer recording:        $build_recorder
-+"
-diff --git a/js/Makefile.am b/js/Makefile.am
-index a3e4917..4b00193 100644
---- a/js/Makefile.am
-+++ b/js/Makefile.am
-@@ -8,6 +8,7 @@ misc/config.js: misc/config.js.in Makefile
- 	sed -e "s|[@]PACKAGE_NAME@|$(PACKAGE_NAME)|g" \
- 	    -e "s|[@]PACKAGE_VERSION@|$(PACKAGE_VERSION)|g" \
- 	    -e "s|[@]HAVE_BLUETOOTH@|$(HAVE_BLUETOOTH)|g" \
-+	    -e "s|[@]HAVE_NETWORKMANAGER@|$(HAVE_NETWORKMANAGER)|g" \
- 	    -e "s|[@]GETTEXT_PACKAGE@|$(GETTEXT_PACKAGE)|g" \
- 	    -e "s|[@]datadir@|$(datadir)|g" \
- 	    -e "s|[@]libexecdir@|$(libexecdir)|g" \
-diff --git a/js/misc/config.js.in b/js/misc/config.js.in
-index 9769104..9c4795d 100644
---- a/js/misc/config.js.in
-+++ b/js/misc/config.js.in
-@@ -6,6 +6,8 @@ const PACKAGE_NAME = '@PACKAGE_NAME@';
- const PACKAGE_VERSION = '@PACKAGE_VERSION@';
- /* 1 if gnome-bluetooth is available, 0 otherwise */
- const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
-+/* 1 if networkmanager is available, 0 otherwise */
-+const HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@;
- /* gettext package */
- const GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@';
- /* locale dir */
-diff --git a/js/ui/panel.js b/js/ui/panel.js
-index bcbaafb..40c6ff9 100644
---- a/js/ui/panel.js
-+++ b/js/ui/panel.js
-@@ -910,11 +910,13 @@ if (Config.HAVE_BLUETOOTH)
-     PANEL_ITEM_IMPLEMENTATIONS['bluetooth'] =
-         imports.ui.status.bluetooth.Indicator;
- 
--try {
--    PANEL_ITEM_IMPLEMENTATIONS['network'] =
--        imports.ui.status.network.NMApplet;
--} catch(e) {
--    log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
-+if (Config.HAVE_NETWORKMANAGER) {
-+    try {
-+        PANEL_ITEM_IMPLEMENTATIONS['network'] =
-+            imports.ui.status.network.NMApplet;
-+    } catch(e) {
-+        log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
-+    }
- }
- 
- const Panel = new Lang.Class({
-diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
-index 808109a..7ee6b1e 100644
---- a/js/ui/sessionMode.js
-+++ b/js/ui/sessionMode.js
-@@ -6,6 +6,8 @@ const Signals = imports.signals;
- const Main = imports.ui.main;
- const Params = imports.misc.params;
- 
-+const Config = imports.misc.config;
-+
- const DEFAULT_MODE = 'restrictive';
- 
- const _modes = {
-@@ -91,7 +93,10 @@ const _modes = {
-         isLocked: false,
-         isPrimary: true,
-         unlockDialog: imports.ui.unlockDialog.UnlockDialog,
--        components: ['networkAgent', 'polkitAgent', 'telepathyClient',
-+        components: Config.HAVE_NETWORKMANAGER ?
-+                    ['networkAgent', 'polkitAgent', 'telepathyClient',
-+                     'keyring', 'recorder', 'autorunManager', 'automountManager'] :
-+                    ['polkitAgent', 'telepathyClient',
-                      'keyring', 'recorder', 'autorunManager', 'automountManager'],
-         panel: {
-             left: ['activities', 'appMenu'],
-diff --git a/src/Makefile.am b/src/Makefile.am
-index a390691..552b640 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -115,9 +115,7 @@ shell_public_headers_h =		\
- 	shell-global.h			\
- 	shell-idle-monitor.h		\
- 	shell-invert-lightness-effect.h	\
--	shell-mobile-providers.h	\
- 	shell-mount-operation.h		\
--	shell-network-agent.h		\
- 	shell-perf-log.h		\
- 	shell-screenshot.h		\
- 	shell-screen-grabber.h		\
-@@ -131,6 +129,10 @@ shell_public_headers_h =		\
- 	shell-wm.h			\
- 	shell-xfixes-cursor.h
- 
-+if HAVE_NETWORKMANAGER
-+shell_public_headers_h += shell-mobile-providers.h shell-network-agent.h
-+endif
-+
- shell_private_sources = \
- 	gactionmuxer.h			\
- 	gactionmuxer.c			\
-@@ -162,9 +164,7 @@ libgnome_shell_la_SOURCES =		\
- 	shell-invert-lightness-effect.c	\
- 	shell-keyring-prompt.h		\
- 	shell-keyring-prompt.c		\
--	shell-mobile-providers.c	\
- 	shell-mount-operation.c		\
--	shell-network-agent.c		\
- 	shell-perf-log.c		\
- 	shell-polkit-authentication-agent.h	\
- 	shell-polkit-authentication-agent.c	\
-@@ -183,6 +183,10 @@ libgnome_shell_la_SOURCES =		\
- 	shell-xfixes-cursor.c		\
- 	$(NULL)
- 
-+if HAVE_NETWORKMANAGER
-+libgnome_shell_la_SOURCES += shell-mobile-providers.c shell-network-agent.c
-+endif
-+
- libgnome_shell_la_gir_sources = \
- 	$(filter-out %-private.h $(shell_private_sources), $(shell_public_headers_h) $(libgnome_shell_la_SOURCES))
- 
-@@ -296,7 +300,10 @@ libgnome_shell_la_LIBADD =		\
- libgnome_shell_la_CPPFLAGS = $(gnome_shell_cflags)
- 
- Shell-0.1.gir: libgnome-shell.la St-1.0.gir
--Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 TelepathyLogger-0.2 Soup-2.4 GMenu-3.0 NetworkManager-1.0 NMClient-1.0
-+Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 TelepathyLogger-0.2 Soup-2.4 GMenu-3.0
-+if HAVE_NETWORKMANAGER
-+Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
-+endif
- Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir)
- Shell_0_1_gir_LIBS = libgnome-shell.la
- Shell_0_1_gir_FILES = $(libgnome_shell_la_gir_sources)
--- 
-1.7.12
-

diff --git a/gnome-base/gnome-shell/files/gnome-shell-defaults.patch b/gnome-base/gnome-shell/files/gnome-shell-defaults.patch
new file mode 100644
index 0000000..80634c1
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-defaults.patch
@@ -0,0 +1,25 @@
+From 4fd7696fc9f392a11b91fa3fc7fe14ac7734ee62 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Tue, 10 Dec 2013 23:33:51 +0100
+Subject: [PATCH 1/3] Alter list of default applications
+
+---
+ data/org.gnome.shell.gschema.xml.in.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/data/org.gnome.shell.gschema.xml.in.in b/data/org.gnome.shell.gschema.xml.in.in
+index dc27e47..e8de0ed 100644
+--- a/data/org.gnome.shell.gschema.xml.in.in
++++ b/data/org.gnome.shell.gschema.xml.in.in
+@@ -22,7 +22,7 @@
+       </_description>
+     </key>
+     <key name="favorite-apps" type="as">
+-      <default>[ 'epiphany.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ]</default>
++      <default>[ 'chromium-browser-chromium.desktop', 'firefox.desktop', 'firefox-bin.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'libreoffice-writer.desktop', 'nautilus.desktop', 'gnome-documents.desktop' ]</default>
+       <_summary>List of desktop file IDs for favorite applications</_summary>
+       <_description>
+         The applications corresponding to these identifiers
+-- 
+1.8.5.1
+

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild
similarity index 57%
copy from gnome-base/gnome-shell/gnome-shell-9999.ebuild
copy to gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild
index 43a9571..a86ab1f 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2012 Gentoo Foundation
+# Copyright 1999-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: $
 
@@ -7,39 +7,38 @@ GCONF_DEBUG="no"
 GNOME2_LA_PUNT="yes"
 PYTHON_COMPAT=( python2_{6,7} )
 
-inherit autotools eutils gnome2 multilib pax-utils python-r1
-if [[ ${PV} = 9999 ]]; then
-	inherit gnome2-live
-fi
+inherit autotools eutils gnome2 multilib pax-utils python-r1 systemd
 
 DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
 HOMEPAGE="http://live.gnome.org/GnomeShell"
 
 LICENSE="GPL-2+ LGPL-2+"
 SLOT="0"
-IUSE="+bluetooth +i18n +networkmanager systemd"
-if [[ ${PV} = 9999 ]]; then
-	KEYWORDS=""
-else
-	KEYWORDS="~amd64 ~x86"
-fi
+IUSE="+bluetooth +i18n +networkmanager -openrc-force"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~x86"
 
 # libXfixes-5.0 needed for pointer barriers
-# TODO: gstreamer support is currently automagical:
-# gstreamer? ( >=media-libs/gstreamer-0.11.92 )
+# FIXME:
+#  * gstreamer support is currently automagic
+#  * mutter/mutter-wayland support is automagic
+#
+# gnome-shell/gnome-control-center/mutter/gnome-settings-daemon better to be in sync for 3.8.3
+# https://mail.gnome.org/archives/gnome-announce-list/2013-June/msg00005.html
 COMMON_DEPEND="
+	app-crypt/libsecret
 	>=app-accessibility/at-spi2-atk-2.5.3
 	>=dev-libs/atk-2[introspection]
-	>=app-crypt/gcr-3.3.90[introspection]
-	>=dev-libs/glib-2.31.6:2
-	>=dev-libs/gjs-1.33.2
+	>=app-crypt/gcr-3.7.5[introspection]
+	>=dev-libs/glib-2.37:2
+	>=dev-libs/gjs-1.38.1
 	>=dev-libs/gobject-introspection-0.10.1
-	>=x11-libs/gtk+-3.3.9:3[introspection]
-	>=media-libs/clutter-1.11.11:1.0[introspection]
+	>=x11-libs/gtk+-3.7.9:3[introspection]
+	>=media-libs/clutter-1.13.4:1.0[introspection]
 	>=dev-libs/json-glib-0.13.2
-	>=dev-libs/libcroco-0.6.2:0.6
-	>=gnome-base/gnome-desktop-3.5.1:3=[introspection]
-	>=gnome-base/gsettings-desktop-schemas-3.5.4
+	>=dev-libs/libcroco-0.6.8:0.6
+	>=gnome-base/gnome-desktop-3.7.90:3=[introspection]
+	>=gnome-base/gsettings-desktop-schemas-3.7.4
 	>=gnome-base/gnome-keyring-3.3.90
 	>=gnome-base/gnome-menus-3.5.3:3[introspection]
 	gnome-base/libgnome-keyring
@@ -49,7 +48,8 @@ COMMON_DEPEND="
 	>=net-libs/telepathy-glib-0.19[introspection]
 	>=sys-auth/polkit-0.100[introspection]
 	>=x11-libs/libXfixes-5.0
-	>=x11-wm/mutter-${PV}[introspection]
+	x11-libs/libXtst
+	>=x11-wm/mutter-3.10.1[introspection]
 	>=x11-libs/startup-notification-0.11
 
 	${PYTHON_DEPS}
@@ -58,18 +58,17 @@ COMMON_DEPEND="
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2
 	gnome-base/librsvg
-	media-libs/libcanberra
+	media-libs/libcanberra[gtk3]
 	media-libs/mesa
-	media-sound/pulseaudio
-	net-libs/libsoup:2.4[introspection]
+	>=media-sound/pulseaudio-2
+	>=net-libs/libsoup-2.40:2.4[introspection]
 	x11-libs/libX11
 	x11-libs/gdk-pixbuf:2[introspection]
 	x11-libs/pango[introspection]
 	x11-apps/mesa-progs
 
-	bluetooth? ( >=net-wireless/gnome-bluetooth-3.5[introspection] )
-	networkmanager? ( >=net-misc/networkmanager-0.8.999[introspection] )
-	systemd? ( >=sys-apps/systemd-31 )
+	bluetooth? ( >=net-wireless/gnome-bluetooth-3.9[introspection] )
+	networkmanager? ( >=net-misc/networkmanager-0.9.8[introspection] )
 "
 # Runtime-only deps are probably incomplete and approximate.
 # Introspection deps generated using:
@@ -79,14 +78,15 @@ COMMON_DEPEND="
 # 2. Introspection stuff needed via imports.gi.*
 # 3. gnome-session is needed for gnome-session-quit
 # 4. Control shell settings
-# 5. xdg-utils needed for xdg-open, used by extension tool
-# 6. gnome-icon-theme-symbolic and dejavu font neeed for various icons & arrows
-# 7. IBus is needed for i18n integration
-# 8. mobile-broadband-provider-info, timezone-data for shell-mobile-providers.c
+# 5. Systemd needed for suspending support
+# 6. xdg-utils needed for xdg-open, used by extension tool
+# 7. gnome-icon-theme-symbolic and dejavu font neeed for various icons & arrows
+# 8. IBus is needed for i18n integration
+# 9. mobile-broadband-provider-info, timezone-data for shell-mobile-providers.c
 RDEPEND="${COMMON_DEPEND}
 	>=sys-auth/polkit-0.101[introspection]
 
-	>=app-accessibility/caribou-0.3
+	>=app-accessibility/caribou-0.4.8
 	>=gnome-base/gdm-3.5[introspection]
 	>=gnome-base/libgnomekbd-2.91.4[introspection]
 	media-libs/cogl[introspection]
@@ -94,54 +94,56 @@ RDEPEND="${COMMON_DEPEND}
 	sys-power/upower[introspection]
 
 	>=gnome-base/gnome-session-2.91.91
-	>=gnome-base/gnome-settings-daemon-2.91
-	>=gnome-base/gnome-control-center-2.91.92-r1[bluetooth(+)?]
+	>=gnome-base/gnome-settings-daemon-3.8.3
+	>=gnome-base/gnome-control-center-3.8.3[bluetooth(+)?]
+
+	!openrc-force? ( >=sys-apps/systemd-31 )
 
 	x11-misc/xdg-utils
 
 	media-fonts/dejavu
 	x11-themes/gnome-icon-theme-symbolic
 
-	i18n? ( >=app-i18n/ibus-1.4.99[dconf,gtk3,introspection] )
+	i18n? ( >=app-i18n/ibus-1.4.99[dconf(+),gtk3,introspection] )
 	networkmanager? (
 		net-misc/mobile-broadband-provider-info
 		sys-libs/timezone-data )
-
-	!systemd? ( sys-auth/consolekit )
 "
 DEPEND="${COMMON_DEPEND}
 	dev-libs/libxslt
 	>=dev-util/gtk-doc-am-1.17
 	>=dev-util/intltool-0.40
 	gnome-base/gnome-common
-	>=sys-devel/gettext-0.17
 	virtual/pkgconfig
-	!!=dev-lang/spidermonkey-1.8.2*"
+	!!=dev-lang/spidermonkey-1.8.2*
+"
 # libmozjs.so is picked up from /usr/lib while compiling, so block at build-time
 # https://bugs.gentoo.org/show_bug.cgi?id=360413
 
 src_prepare() {
+	# Change favorites defaults, bug #479918
+	epatch "${FILESDIR}/${PN}-defaults.patch"
+
 	# Fix automagic gnome-bluetooth dep, bug #398145
-	epatch "${FILESDIR}/${PN}-3.5.x-bluetooth-flag.patch"
+	epatch "${FILESDIR}/${PN}-3.10-bluetooth-flag.patch"
 
 	# Make networkmanager optional, bug #398593
-	epatch "${FILESDIR}/${PN}-3.6.0-networkmanager-flag.patch"
+	epatch "${FILESDIR}/${PN}-3.10-networkmanager-flag.patch"
+
+	epatch_user
 
-	[[ ${PV} != 9999 ]] && eautoreconf
+	eautoreconf
 	gnome2_src_prepare
 }
 
 src_configure() {
 	# Do not error out on warnings
-	G2CONF="${G2CONF}
-		--enable-man
-		--enable-compile-warnings=maximum
-		--disable-jhbuild-wrapper-script
-		$(use_with bluetooth)
-		$(use_enable networkmanager)
-		$(use_with systemd)
-		BROWSER_PLUGIN_DIR=${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins"
-	gnome2_src_configure
+	gnome2_src_configure \
+		--enable-man \
+		--disable-jhbuild-wrapper-script \
+		$(use_with bluetooth) \
+		$(use_enable networkmanager) \
+		BROWSER_PLUGIN_DIR="${EPREFIX}"/usr/$(get_libdir)/nsbrowser/plugins
 }
 
 src_install() {
@@ -156,6 +158,11 @@ src_install() {
 	elif has_version '>=dev-lang/spidermonkey-1.8.7[jit]'; then
 		pax-mark m "${ED}usr/bin/gnome-shell"
 	fi
+	# Required for gnome-shell on hardened/PaX #457146 and #457194
+	# PaX EMUTRAMP need to be on
+	if has_version '>=dev-libs/libffi-3.0.13[pax_kernel]'; then
+		pax-mark E "${ED}usr/bin/gnome-shell"
+	fi
 }
 
 pkg_postinst() {
@@ -177,8 +184,8 @@ pkg_postinst() {
 
 	if has_version "<x11-drivers/ati-drivers-12"; then
 		ewarn "GNOME Shell has been reported to show graphical corruption under"
-		ewarn "x11-drivers/ati-drivers-11.*; you may want to use GNOME in"
-		ewarn "fallback mode, or switch to open-source drivers."
+		ewarn "x11-drivers/ati-drivers-11.*; you may want to switch to open-source"
+		ewarn "drivers."
 	fi
 
 	if has_version "media-libs/mesa[video_cards_radeon]" ||
@@ -192,14 +199,23 @@ pkg_postinst() {
 		fi
 	fi
 
-	if has_version "media-libs/mesa[video_cards_intel]" ||
-	   has_version "media-libs/mesa[video_cards_i915]" ||
-	   has_version "media-libs/mesa[video_cards_i965]"; then
-		elog "GNOME Shell is unstable under gallium-mode i915/i965 mesa drivers."
-		elog "Make sure that classic architecture for i915 and i965 drivers is"
-		elog "selected using 'eselect mesa'."
-		if ! has_version "media-libs/mesa[classic]"; then
-			ewarn "You will need to emerge media-libs/mesa with USE=classic."
-		fi
+	if ! has_version "media-libs/mesa[llvm]"; then
+		elog "llvmpipe is used as fallback when no 3D acceleration"
+		elog "is available. You will need to enable llvm USE for"
+		elog "media-libs/mesa."
+	fi
+
+	if ! systemd_is_booted; then
+		ewarn "${PN} needs Systemd to be *running* for working"
+		ewarn "properly. Please follow this guide to migrate:"
+		ewarn "http://wiki.gentoo.org/wiki/Systemd"
+	fi
+
+	if use openrc-force; then
+		ewarn "You are enabling 'openrc-force' USE flag to skip systemd requirement,"
+		ewarn "this can lead to unexpected problems and is not supported neither by"
+		ewarn "upstream neither by Gnome Gentoo maintainers. If you suffer any problem,"
+		ewarn "you will need to disable this USE flag system wide and retest before"
+		ewarn "opening any bug report."
 	fi
 }

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 43a9571..7a154ed 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2012 Gentoo Foundation
+# Copyright 1999-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: $
 
@@ -7,7 +7,7 @@ GCONF_DEBUG="no"
 GNOME2_LA_PUNT="yes"
 PYTHON_COMPAT=( python2_{6,7} )
 
-inherit autotools eutils gnome2 multilib pax-utils python-r1
+inherit autotools eutils gnome2 multilib pax-utils python-r1 systemd
 if [[ ${PV} = 9999 ]]; then
 	inherit gnome2-live
 fi
@@ -17,29 +17,35 @@ HOMEPAGE="http://live.gnome.org/GnomeShell"
 
 LICENSE="GPL-2+ LGPL-2+"
 SLOT="0"
-IUSE="+bluetooth +i18n +networkmanager systemd"
+IUSE="+bluetooth +i18n +networkmanager -openrc-force"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
 if [[ ${PV} = 9999 ]]; then
 	KEYWORDS=""
 else
-	KEYWORDS="~amd64 ~x86"
+	KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~x86"
 fi
 
 # libXfixes-5.0 needed for pointer barriers
-# TODO: gstreamer support is currently automagical:
-# gstreamer? ( >=media-libs/gstreamer-0.11.92 )
+# FIXME:
+#  * gstreamer support is currently automagic
+#  * mutter/mutter-wayland support is automagic
+#
+# gnome-shell/gnome-control-center/mutter/gnome-settings-daemon better to be in sync for 3.8.3
+# https://mail.gnome.org/archives/gnome-announce-list/2013-June/msg00005.html
 COMMON_DEPEND="
+	app-crypt/libsecret
 	>=app-accessibility/at-spi2-atk-2.5.3
 	>=dev-libs/atk-2[introspection]
-	>=app-crypt/gcr-3.3.90[introspection]
-	>=dev-libs/glib-2.31.6:2
-	>=dev-libs/gjs-1.33.2
+	>=app-crypt/gcr-3.7.5[introspection]
+	>=dev-libs/glib-2.37:2
+	>=dev-libs/gjs-1.38.1
 	>=dev-libs/gobject-introspection-0.10.1
-	>=x11-libs/gtk+-3.3.9:3[introspection]
-	>=media-libs/clutter-1.11.11:1.0[introspection]
+	>=x11-libs/gtk+-3.7.9:3[introspection]
+	>=media-libs/clutter-1.13.4:1.0[introspection]
 	>=dev-libs/json-glib-0.13.2
-	>=dev-libs/libcroco-0.6.2:0.6
-	>=gnome-base/gnome-desktop-3.5.1:3=[introspection]
-	>=gnome-base/gsettings-desktop-schemas-3.5.4
+	>=dev-libs/libcroco-0.6.8:0.6
+	>=gnome-base/gnome-desktop-3.7.90:3=[introspection]
+	>=gnome-base/gsettings-desktop-schemas-3.7.4
 	>=gnome-base/gnome-keyring-3.3.90
 	>=gnome-base/gnome-menus-3.5.3:3[introspection]
 	gnome-base/libgnome-keyring
@@ -49,7 +55,8 @@ COMMON_DEPEND="
 	>=net-libs/telepathy-glib-0.19[introspection]
 	>=sys-auth/polkit-0.100[introspection]
 	>=x11-libs/libXfixes-5.0
-	>=x11-wm/mutter-${PV}[introspection]
+	x11-libs/libXtst
+	>=x11-wm/mutter-3.10.1[introspection]
 	>=x11-libs/startup-notification-0.11
 
 	${PYTHON_DEPS}
@@ -58,18 +65,17 @@ COMMON_DEPEND="
 	dev-libs/dbus-glib
 	dev-libs/libxml2:2
 	gnome-base/librsvg
-	media-libs/libcanberra
+	media-libs/libcanberra[gtk3]
 	media-libs/mesa
-	media-sound/pulseaudio
-	net-libs/libsoup:2.4[introspection]
+	>=media-sound/pulseaudio-2
+	>=net-libs/libsoup-2.40:2.4[introspection]
 	x11-libs/libX11
 	x11-libs/gdk-pixbuf:2[introspection]
 	x11-libs/pango[introspection]
 	x11-apps/mesa-progs
 
-	bluetooth? ( >=net-wireless/gnome-bluetooth-3.5[introspection] )
-	networkmanager? ( >=net-misc/networkmanager-0.8.999[introspection] )
-	systemd? ( >=sys-apps/systemd-31 )
+	bluetooth? ( >=net-wireless/gnome-bluetooth-3.9[introspection] )
+	networkmanager? ( >=net-misc/networkmanager-0.9.8[introspection] )
 "
 # Runtime-only deps are probably incomplete and approximate.
 # Introspection deps generated using:
@@ -79,14 +85,15 @@ COMMON_DEPEND="
 # 2. Introspection stuff needed via imports.gi.*
 # 3. gnome-session is needed for gnome-session-quit
 # 4. Control shell settings
-# 5. xdg-utils needed for xdg-open, used by extension tool
-# 6. gnome-icon-theme-symbolic and dejavu font neeed for various icons & arrows
-# 7. IBus is needed for i18n integration
-# 8. mobile-broadband-provider-info, timezone-data for shell-mobile-providers.c
+# 5. Systemd needed for suspending support
+# 6. xdg-utils needed for xdg-open, used by extension tool
+# 7. gnome-icon-theme-symbolic and dejavu font neeed for various icons & arrows
+# 8. IBus is needed for i18n integration
+# 9. mobile-broadband-provider-info, timezone-data for shell-mobile-providers.c
 RDEPEND="${COMMON_DEPEND}
 	>=sys-auth/polkit-0.101[introspection]
 
-	>=app-accessibility/caribou-0.3
+	>=app-accessibility/caribou-0.4.8
 	>=gnome-base/gdm-3.5[introspection]
 	>=gnome-base/libgnomekbd-2.91.4[introspection]
 	media-libs/cogl[introspection]
@@ -94,38 +101,43 @@ RDEPEND="${COMMON_DEPEND}
 	sys-power/upower[introspection]
 
 	>=gnome-base/gnome-session-2.91.91
-	>=gnome-base/gnome-settings-daemon-2.91
-	>=gnome-base/gnome-control-center-2.91.92-r1[bluetooth(+)?]
+	>=gnome-base/gnome-settings-daemon-3.8.3
+	>=gnome-base/gnome-control-center-3.8.3[bluetooth(+)?]
+
+	!openrc-force? ( >=sys-apps/systemd-31 )
 
 	x11-misc/xdg-utils
 
 	media-fonts/dejavu
 	x11-themes/gnome-icon-theme-symbolic
 
-	i18n? ( >=app-i18n/ibus-1.4.99[dconf,gtk3,introspection] )
+	i18n? ( >=app-i18n/ibus-1.4.99[dconf(+),gtk3,introspection] )
 	networkmanager? (
 		net-misc/mobile-broadband-provider-info
 		sys-libs/timezone-data )
-
-	!systemd? ( sys-auth/consolekit )
 "
 DEPEND="${COMMON_DEPEND}
 	dev-libs/libxslt
 	>=dev-util/gtk-doc-am-1.17
 	>=dev-util/intltool-0.40
 	gnome-base/gnome-common
-	>=sys-devel/gettext-0.17
 	virtual/pkgconfig
-	!!=dev-lang/spidermonkey-1.8.2*"
+	!!=dev-lang/spidermonkey-1.8.2*
+"
 # libmozjs.so is picked up from /usr/lib while compiling, so block at build-time
 # https://bugs.gentoo.org/show_bug.cgi?id=360413
 
 src_prepare() {
+	# Change favorites defaults, bug #479918
+	epatch "${FILESDIR}/${PN}-defaults.patch"
+
 	# Fix automagic gnome-bluetooth dep, bug #398145
-	epatch "${FILESDIR}/${PN}-3.5.x-bluetooth-flag.patch"
+	epatch "${FILESDIR}/${PN}-3.10-bluetooth-flag.patch"
 
 	# Make networkmanager optional, bug #398593
-	epatch "${FILESDIR}/${PN}-3.6.0-networkmanager-flag.patch"
+	epatch "${FILESDIR}/${PN}-3.10-networkmanager-flag.patch"
+
+	epatch_user
 
 	[[ ${PV} != 9999 ]] && eautoreconf
 	gnome2_src_prepare
@@ -133,15 +145,12 @@ src_prepare() {
 
 src_configure() {
 	# Do not error out on warnings
-	G2CONF="${G2CONF}
-		--enable-man
-		--enable-compile-warnings=maximum
-		--disable-jhbuild-wrapper-script
-		$(use_with bluetooth)
-		$(use_enable networkmanager)
-		$(use_with systemd)
-		BROWSER_PLUGIN_DIR=${EPREFIX}/usr/$(get_libdir)/nsbrowser/plugins"
-	gnome2_src_configure
+	gnome2_src_configure \
+		--enable-man \
+		--disable-jhbuild-wrapper-script \
+		$(use_with bluetooth) \
+		$(use_enable networkmanager) \
+		BROWSER_PLUGIN_DIR="${EPREFIX}"/usr/$(get_libdir)/nsbrowser/plugins
 }
 
 src_install() {
@@ -156,6 +165,11 @@ src_install() {
 	elif has_version '>=dev-lang/spidermonkey-1.8.7[jit]'; then
 		pax-mark m "${ED}usr/bin/gnome-shell"
 	fi
+	# Required for gnome-shell on hardened/PaX #457146 and #457194
+	# PaX EMUTRAMP need to be on
+	if has_version '>=dev-libs/libffi-3.0.13[pax_kernel]'; then
+		pax-mark E "${ED}usr/bin/gnome-shell"
+	fi
 }
 
 pkg_postinst() {
@@ -177,8 +191,8 @@ pkg_postinst() {
 
 	if has_version "<x11-drivers/ati-drivers-12"; then
 		ewarn "GNOME Shell has been reported to show graphical corruption under"
-		ewarn "x11-drivers/ati-drivers-11.*; you may want to use GNOME in"
-		ewarn "fallback mode, or switch to open-source drivers."
+		ewarn "x11-drivers/ati-drivers-11.*; you may want to switch to open-source"
+		ewarn "drivers."
 	fi
 
 	if has_version "media-libs/mesa[video_cards_radeon]" ||
@@ -192,14 +206,23 @@ pkg_postinst() {
 		fi
 	fi
 
-	if has_version "media-libs/mesa[video_cards_intel]" ||
-	   has_version "media-libs/mesa[video_cards_i915]" ||
-	   has_version "media-libs/mesa[video_cards_i965]"; then
-		elog "GNOME Shell is unstable under gallium-mode i915/i965 mesa drivers."
-		elog "Make sure that classic architecture for i915 and i965 drivers is"
-		elog "selected using 'eselect mesa'."
-		if ! has_version "media-libs/mesa[classic]"; then
-			ewarn "You will need to emerge media-libs/mesa with USE=classic."
-		fi
+	if ! has_version "media-libs/mesa[llvm]"; then
+		elog "llvmpipe is used as fallback when no 3D acceleration"
+		elog "is available. You will need to enable llvm USE for"
+		elog "media-libs/mesa."
+	fi
+
+	if ! systemd_is_booted; then
+		ewarn "${PN} needs Systemd to be *running* for working"
+		ewarn "properly. Please follow this guide to migrate:"
+		ewarn "http://wiki.gentoo.org/wiki/Systemd"
+	fi
+
+	if use openrc-force; then
+		ewarn "You are enabling 'openrc-force' USE flag to skip systemd requirement,"
+		ewarn "this can lead to unexpected problems and is not supported neither by"
+		ewarn "upstream neither by Gnome Gentoo maintainers. If you suffer any problem,"
+		ewarn "you will need to disable this USE flag system wide and retest before"
+		ewarn "opening any bug report."
 	fi
 }

diff --git a/gnome-base/gnome-shell/metadata.xml b/gnome-base/gnome-shell/metadata.xml
index 68a012a..c2ad070 100644
--- a/gnome-base/gnome-shell/metadata.xml
+++ b/gnome-base/gnome-shell/metadata.xml
@@ -4,8 +4,10 @@
   <herd>gnome</herd>
   <use>
     <flag name="i18n">Enable support for enhanced input methods through
-		<pkg>app-i18n/ibus</pkg></flag>
-    <flag name="systemd">Use <pkg>sys-apps/systemd</pkg> instead of
-		<pkg>sys-auth/consolekit</pkg> for session tracking</flag>
+      <pkg>app-i18n/ibus</pkg></flag>
+    <flag name="openrc-force">Skip systemd dependency (#480336),
+      enabling this flag will become your setup to be fully
+      unsupported by upstream and downstream Gnome team. Do not
+      try to enable it unless completely needed</flag>
   </use>
 </pkgmetadata>


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2014-04-15 22:05 Gilles Dartiguelongue
  0 siblings, 0 replies; 25+ messages in thread
From: Gilles Dartiguelongue @ 2014-04-15 22:05 UTC (permalink / raw
  To: gentoo-commits

commit:     be235b8f86137da0a471b6736744e47047a6b8d5
Author:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 12 21:48:30 2014 +0000
Commit:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
CommitDate: Tue Apr 15 22:00:20 2014 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=be235b8f

gnome-base/gnome-shell: 3.10.4-r2 → 3.12.0

---
 .../gnome-shell-3.10-networkmanager-flag.patch     | 228 ---------------------
 .../files/gnome-shell-3.10.4-bluetooth-gold.patch  |  31 +++
 ...patch => gnome-shell-3.12-bluetooth-flag.patch} |  32 +--
 ...l-3.10.2.1.ebuild => gnome-shell-3.12.0.ebuild} |  35 ++--
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |  31 +--
 5 files changed, 83 insertions(+), 274 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.10-networkmanager-flag.patch b/gnome-base/gnome-shell/files/gnome-shell-3.10-networkmanager-flag.patch
deleted file mode 100644
index 4e28835..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-3.10-networkmanager-flag.patch
+++ /dev/null
@@ -1,228 +0,0 @@
-From 2ca59eb6e8ca9ba76757ede04e734c743aa21769 Mon Sep 17 00:00:00 2001
-From: Gilles Dartiguelongue <eva@gentoo.org>
-Date: Tue, 10 Dec 2013 23:37:08 +0100
-Subject: [PATCH 3/3] Make networkmanager support optional
-
-  * use config.js (and AC_SUBST HAVE_NETWORKMANAGER appropriately);
-  * take care to not import ui.status.network if nm is disabled;
-  * do not try to reassign to const variables;
-  * no point really in fiddling with the list of installed js
-  * files;
-  * don't build shell-mobile-providers if nm is disabled;
-  * use "networkmanager" instead of "network_manager" because THE
-    BIKESHED SHOULD BE BLUE, also because the upstream package name is
-    NetworkManager, not Network_Manager.
----
- configure.ac         | 46 ++++++++++++++++++++++++++++++++++++++++++++--
- js/Makefile.am       |  1 +
- js/misc/config.js.in |  2 ++
- js/ui/panel.js       | 15 ++++++++++++---
- js/ui/sessionMode.js |  7 ++++++-
- src/Makefile.am      | 12 +++++++++---
- 6 files changed, 74 insertions(+), 9 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index e749ca6..5044302 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -91,8 +91,6 @@ SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION
-             libcanberra libcanberra-gtk3
-             telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
-             polkit-agent-1 >= $POLKIT_MIN_VERSION
--            libnm-glib libnm-util >= $NETWORKMANAGER_MIN_VERSION
--            libnm-gtk >= $NETWORKMANAGER_MIN_VERSION
-             libsecret-unstable gcr-base-3 >= $GCR_MIN_VERSION"
- 
- PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS)
-@@ -169,6 +167,38 @@ if test "$langinfo_ok" = "yes"; then
-             [Define if _NL_TIME_FIRST_WEEKDAY is available])
- fi
- 
-+AC_ARG_ENABLE(networkmanager,
-+             AS_HELP_STRING([--disable-networkmanager],
-+                            [disable NetworkManager support  @<:@default=auto@:>@]),,
-+              [enable_networkmanager=auto])
-+
-+if test "x$enable_networkmanager" != "xno"; then
-+   PKG_CHECK_MODULES(NETWORKMANAGER,
-+                     [libnm-glib
-+                      libnm-util >= $NETWORKMANAGER_MIN_VERSION
-+                      libnm-gtk >= $NETWORKMANAGER_MIN_VERSION
-+                      gnome-keyring-1],
-+                     [have_networkmanager=yes],
-+                     [have_networkmanager=no])
-+
-+   GNOME_SHELL_CFLAGS="$GNOME_SHELL_CFLAGS $NETWORKMANAGER_CFLAGS"
-+   GNOME_SHELL_LIBS="$GNOME_SHELL_LIBS $NETWORKMANAGER_LIBS"
-+else
-+   have_networkmanager="no  (disabled)"
-+fi
-+
-+if test "x$have_networkmanager" = "xyes"; then
-+   AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager])
-+   AC_SUBST([HAVE_NETWORKMANAGER], [1])
-+else
-+   if test "x$enable_networkmanager" = "xyes"; then
-+      AC_MSG_ERROR([Couldn't find NetworkManager.])
-+   fi
-+   AC_SUBST([HAVE_NETWORKMANAGER], [0])
-+fi
-+
-+AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes")
-+
- # Sets GLIB_GENMARSHAL and GLIB_MKENUMS
- AM_PATH_GLIB_2_0()
- 
-@@ -210,3 +240,15 @@ AC_CONFIG_FILES([
-   man/Makefile
- ])
- AC_OUTPUT
-+
-+echo "
-+Build configuration:
-+
-+       Prefix:                                 ${prefix}
-+       Source code location:                   ${srcdir}
-+       Compiler:                               ${CC}
-+       Compiler Warnings:                      $enable_compile_warnings
-+
-+       Support for NetworkManager:             $have_networkmanager
-+       Support for GStreamer recording:        $build_recorder
-+"
-diff --git a/js/Makefile.am b/js/Makefile.am
-index d614f4f..88a3887 100644
---- a/js/Makefile.am
-+++ b/js/Makefile.am
-@@ -8,6 +8,7 @@ misc/config.js: misc/config.js.in Makefile
- 	sed -e "s|[@]PACKAGE_NAME@|$(PACKAGE_NAME)|g" \
- 	    -e "s|[@]PACKAGE_VERSION@|$(PACKAGE_VERSION)|g" \
- 	    -e "s|[@]HAVE_BLUETOOTH@|$(HAVE_BLUETOOTH)|g" \
-+	    -e "s|[@]HAVE_NETWORKMANAGER@|$(HAVE_NETWORKMANAGER)|g" \
- 	    -e "s|[@]GETTEXT_PACKAGE@|$(GETTEXT_PACKAGE)|g" \
- 	    -e "s|[@]datadir@|$(datadir)|g" \
- 	    -e "s|[@]libexecdir@|$(libexecdir)|g" \
-diff --git a/js/misc/config.js.in b/js/misc/config.js.in
-index 9769104..9c4795d 100644
---- a/js/misc/config.js.in
-+++ b/js/misc/config.js.in
-@@ -6,6 +6,8 @@ const PACKAGE_NAME = '@PACKAGE_NAME@';
- const PACKAGE_VERSION = '@PACKAGE_VERSION@';
- /* 1 if gnome-bluetooth is available, 0 otherwise */
- const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
-+/* 1 if networkmanager is available, 0 otherwise */
-+const HAVE_NETWORKMANAGER = @HAVE_NETWORKMANAGER@;
- /* gettext package */
- const GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@';
- /* locale dir */
-diff --git a/js/ui/panel.js b/js/ui/panel.js
-index 2337a63..17e4f10 100644
---- a/js/ui/panel.js
-+++ b/js/ui/panel.js
-@@ -809,7 +809,12 @@ const AggregateMenu = new Lang.Class({
-         this._indicators = new St.BoxLayout({ style_class: 'panel-status-indicators-box' });
-         this.actor.add_child(this._indicators);
- 
--        this._network = new imports.ui.status.network.NMApplet();
-+        if (Config.HAVE_NETWORKMANAGER) {
-+            this._network = new imports.ui.status.network.NMApplet();
-+        } else {
-+            this._network = null;
-+        }
-+
-         if (Config.HAVE_BLUETOOTH) {
-             this._bluetooth = new imports.ui.status.bluetooth.Indicator();
-         } else {
-@@ -824,7 +829,9 @@ const AggregateMenu = new Lang.Class({
-         this._screencast = new imports.ui.status.screencast.Indicator();
- 
-         this._indicators.add_child(this._screencast.indicators);
--        this._indicators.add_child(this._network.indicators);
-+        if (this._network) {
-+            this._indicators.add_child(this._network.indicators);
-+        }
-         if (this._bluetooth) {
-             this._indicators.add_child(this._bluetooth.indicators);
-         }
-@@ -836,7 +843,9 @@ const AggregateMenu = new Lang.Class({
-         this.menu.addMenuItem(this._volume.menu);
-         this.menu.addMenuItem(this._brightness.menu);
-         this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
--        this.menu.addMenuItem(this._network.menu);
-+        if (this._network) {
-+            this.menu.addMenuItem(this._network.menu);
-+        }
-         if (this._bluetooth) {
-             this.menu.addMenuItem(this._bluetooth.menu);
-         }
-diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
-index eb04c62..b882364 100644
---- a/js/ui/sessionMode.js
-+++ b/js/ui/sessionMode.js
-@@ -10,6 +10,8 @@ const FileUtils = imports.misc.fileUtils;
- const Main = imports.ui.main;
- const Params = imports.misc.params;
- 
-+const Config = imports.misc.config;
-+
- const DEFAULT_MODE = 'restrictive';
- 
- const _modes = {
-@@ -92,7 +94,10 @@ const _modes = {
-         isLocked: false,
-         isPrimary: true,
-         unlockDialog: imports.ui.unlockDialog.UnlockDialog,
--        components: ['networkAgent', 'polkitAgent', 'telepathyClient',
-+        components: Config.HAVE_NETWORKMANAGER ?
-+                    ['networkAgent', 'polkitAgent', 'telepathyClient',
-+                     'keyring', 'autorunManager', 'automountManager'] :
-+                    ['polkitAgent', 'telepathyClient',
-                      'keyring', 'autorunManager', 'automountManager'],
-         panel: {
-             left: ['activities', 'appMenu'],
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 8041052..b5da6aa 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -103,7 +103,6 @@ shell_public_headers_h =		\
- 	shell-invert-lightness-effect.h	\
- 	shell-keybinding-modes.h	\
- 	shell-mount-operation.h		\
--	shell-network-agent.h		\
- 	shell-perf-log.h		\
- 	shell-screenshot.h		\
- 	shell-slicer.h			\
-@@ -140,7 +139,6 @@ libgnome_shell_base_la_SOURCES = 	\
- 	shell-menu-tracker.c		\
- 	shell-menu-tracker.h		\
- 	shell-mount-operation.c		\
--	shell-network-agent.c		\
- 	shell-perf-log.c		\
- 	shell-polkit-authentication-agent.h	\
- 	shell-polkit-authentication-agent.c	\
-@@ -175,6 +173,11 @@ libgnome_shell_sources =		\
- 
- libgnome_shell_la_SOURCES = $(libgnome_shell_sources)
- 
-+if HAVE_NETWORKMANAGER
-+libgnome_shell_la_SOURCES +=  shell-network-agent.c
-+shell_public_headers_h +=  shell-network-agent.h
-+endif
-+
- libgnome_shell_la_gir_sources = \
- 	$(filter-out %-private.h $(shell_private_sources), $(shell_public_headers_h) $(libgnome_shell_base_la_SOURCES) $(libgnome_shell_sources))
- 
-@@ -331,7 +334,10 @@ INTROSPECTION_GIRS += ShellMenu-0.1.gir
- CLEANFILES += ShellMenu-0.1.gir
- 
- Shell-0.1.gir: gnome-shell St-1.0.gir ShellMenu-0.1.gir
--Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4 GMenu-3.0 NetworkManager-1.0 NMClient-1.0
-+Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-3.0 TelepathyGLib-0.12 Soup-2.4 GMenu-3.0
-+if HAVE_NETWORKMANAGER
-+Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0
-+endif HAVE_NETWORKMANAGER
- Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir)
- # Hack! we use PROGRAM instead of LIBS so that the soname is not included
- # in the typelib. This way the symbols will be resolved with the libgnome-shell
--- 
-1.8.5.1
-

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.10.4-bluetooth-gold.patch b/gnome-base/gnome-shell/files/gnome-shell-3.10.4-bluetooth-gold.patch
new file mode 100644
index 0000000..b688dd6
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.10.4-bluetooth-gold.patch
@@ -0,0 +1,31 @@
+From 9f056842fad21dc69a51fd9f01543cd85a6d4047 Mon Sep 17 00:00:00 2001
+From: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Sat, 15 Mar 2014 17:48:41 -0400
+Subject: [PATCH 3/3] build: Add BLUETOOTH_LIBS to libgnome-shell's libadd for
+ ld.gold
+
+For ld.gold, adding BLUETOOTH_LIBS to gnome_shell_LDADD has no effect:
+the libgnome-bluetooth-applet must be linked to the binary that actually
+uses a function from libgnome-bluetooth-applet, i.e. to libgnome-shell.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=726435
+---
+ src/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index f489a56..79838a3 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -320,7 +320,7 @@ libgnome_shell_base_la_LIBADD = $(libgnome_shell_libadd)
+ libgnome_shell_base_la_CPPFLAGS = $(gnome_shell_cflags)
+ 
+ libgnome_shell_la_LDFLAGS = $(libgnome_shell_ldflags)
+-libgnome_shell_la_LIBADD = $(GNOME_SHELL_LIBS) $(MUTTER_LIBS) libgnome-shell-base.la
++libgnome_shell_la_LIBADD = $(GNOME_SHELL_LIBS) $(MUTTER_LIBS) $(BLUETOOTH_LIBS) libgnome-shell-base.la
+ libgnome_shell_la_CPPFLAGS = $(MUTTER_CFLAGS) $(gnome_shell_cflags)
+ 
+ if HAVE_MUTTER_WAYLAND
+-- 
+1.9.0
+

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.10-bluetooth-flag.patch b/gnome-base/gnome-shell/files/gnome-shell-3.12-bluetooth-flag.patch
similarity index 57%
rename from gnome-base/gnome-shell/files/gnome-shell-3.10-bluetooth-flag.patch
rename to gnome-base/gnome-shell/files/gnome-shell-3.12-bluetooth-flag.patch
index e74e18f..2fa93af 100644
--- a/gnome-base/gnome-shell/files/gnome-shell-3.10-bluetooth-flag.patch
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.12-bluetooth-flag.patch
@@ -1,4 +1,4 @@
-From d15e9df8903c05fa0e355b3b1b133171c706d3ac Mon Sep 17 00:00:00 2001
+From 3c9c3b19fcb212171036e1e57e749411b5fd7d65 Mon Sep 17 00:00:00 2001
 From: Sobhan Mohammadpour <sobhanmohammadpour1@yahoo.fr>
 Date: Thu, 28 Feb 2013 18:48:32 +0330
 Subject: [PATCH 2/3] Make bluetooth support optional
@@ -13,28 +13,32 @@ but got totally lost.
 I'll see if I can work out how to fix the automagic gnome-bluetooth dependency
 so I can at least merge USE=-bluetooth.
 ---
- configure.ac | 7 +++++++
- 1 file changed, 7 insertions(+)
+ configure.ac | 16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index 334323a..e749ca6 100644
+index 9a30e65..aa710f0 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -116,6 +116,10 @@ PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.7.4)
- PKG_CHECK_MODULES(CARIBOU, caribou-1.0 >= 0.4.8)
+@@ -138,11 +138,21 @@ AS_IF([test x$enable_browser_plugin = xyes], [
+ ])
+ AM_CONDITIONAL(BUILD_BROWSER_PLUGIN, test x$enable_browser_plugin = xyes)
  
- AC_MSG_CHECKING([for bluetooth support])
++AC_MSG_CHECKING([for bluetooth support])
 +AC_ARG_WITH([bluetooth],
 +	AS_HELP_STRING([--without-bluetooth],
 +		[Build without gnome-bluetooth library (default: auto)]))
 +AS_IF([test "x$with_bluetooth" != "xno"], [
- PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.9.0],
-         [BLUETOOTH_DIR=`$PKG_CONFIG --variable=applet_libdir gnome-bluetooth-1.0`
- 	 BLUETOOTH_LIBS=`$PKG_CONFIG --variable=applet_libs gnome-bluetooth-1.0`
-@@ -128,6 +132,9 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.9.0],
+ PKG_CHECK_MODULES(BLUETOOTH, gnome-bluetooth-1.0 >= 3.9.0,
+-        [AC_DEFINE([HAVE_BLUETOOTH],[1],[Define if you have libgnome-bluetooth-applet])
+-	 AC_SUBST([HAVE_BLUETOOTH],[1])],
++	[AC_DEFINE([HAVE_BLUETOOTH],[1],[Define if you have libgnome-bluetooth-applet])
++	 AC_SUBST([HAVE_BLUETOOTH],[1])
++	 AC_MSG_RESULT([yes])],
  	[AC_DEFINE([HAVE_BLUETOOTH],[0])
- 	 AC_SUBST([HAVE_BLUETOOTH],[0])
- 	 AC_MSG_RESULT([no])])
+-	 AC_SUBST([HAVE_BLUETOOTH],[0])])
++	 AC_SUBST([HAVE_BLUETOOTH],[0])
++	 AC_MSG_RESULT([no])])
 +], [AC_DEFINE([HAVE_BLUETOOTH],[0])
 +	 AC_SUBST([HAVE_BLUETOOTH],[0])
 +	 AC_MSG_RESULT([no])])
@@ -42,5 +46,5 @@ index 334323a..e749ca6 100644
  PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION gio-2.0)
  AC_SUBST(CALENDAR_SERVER_CFLAGS)
 -- 
-1.8.5.1
+1.9.0
 

diff --git a/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild b/gnome-base/gnome-shell/gnome-shell-3.12.0.ebuild
similarity index 89%
rename from gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild
rename to gnome-base/gnome-shell/gnome-shell-3.12.0.ebuild
index a86ab1f..6dbd7f3 100644
--- a/gnome-base/gnome-shell/gnome-shell-3.10.2.1.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.12.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2013 Gentoo Foundation
+# Copyright 1999-2014 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: $
 
@@ -10,37 +10,32 @@ PYTHON_COMPAT=( python2_{6,7} )
 inherit autotools eutils gnome2 multilib pax-utils python-r1 systemd
 
 DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
-HOMEPAGE="http://live.gnome.org/GnomeShell"
+HOMEPAGE="https://wiki.gnome.org/Projects/GnomeShell"
 
 LICENSE="GPL-2+ LGPL-2+"
 SLOT="0"
 IUSE="+bluetooth +i18n +networkmanager -openrc-force"
 REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~x86"
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86"
 
 # libXfixes-5.0 needed for pointer barriers
 # FIXME:
 #  * gstreamer support is currently automagic
 #  * mutter/mutter-wayland support is automagic
-#
-# gnome-shell/gnome-control-center/mutter/gnome-settings-daemon better to be in sync for 3.8.3
-# https://mail.gnome.org/archives/gnome-announce-list/2013-June/msg00005.html
 COMMON_DEPEND="
-	app-crypt/libsecret
 	>=app-accessibility/at-spi2-atk-2.5.3
 	>=dev-libs/atk-2[introspection]
 	>=app-crypt/gcr-3.7.5[introspection]
-	>=dev-libs/glib-2.37:2
-	>=dev-libs/gjs-1.38.1
+	>=dev-libs/glib-2.39.1:2
+	>=dev-libs/gjs-1.39
 	>=dev-libs/gobject-introspection-0.10.1
 	>=x11-libs/gtk+-3.7.9:3[introspection]
-	>=media-libs/clutter-1.13.4:1.0[introspection]
+	>=media-libs/clutter-1.15.90:1.0[introspection]
 	>=dev-libs/json-glib-0.13.2
 	>=dev-libs/libcroco-0.6.8:0.6
 	>=gnome-base/gnome-desktop-3.7.90:3=[introspection]
-	>=gnome-base/gsettings-desktop-schemas-3.7.4
+	>=gnome-base/gsettings-desktop-schemas-3.12
 	>=gnome-base/gnome-keyring-3.3.90
-	>=gnome-base/gnome-menus-3.5.3:3[introspection]
 	gnome-base/libgnome-keyring
 	>=gnome-extra/evolution-data-server-3.5.3:=
 	>=media-libs/gstreamer-0.11.92:1.0
@@ -49,7 +44,7 @@ COMMON_DEPEND="
 	>=sys-auth/polkit-0.100[introspection]
 	>=x11-libs/libXfixes-5.0
 	x11-libs/libXtst
-	>=x11-wm/mutter-3.10.1[introspection]
+	>=x11-wm/mutter-3.12[introspection]
 	>=x11-libs/startup-notification-0.11
 
 	${PYTHON_DEPS}
@@ -68,7 +63,9 @@ COMMON_DEPEND="
 	x11-apps/mesa-progs
 
 	bluetooth? ( >=net-wireless/gnome-bluetooth-3.9[introspection] )
-	networkmanager? ( >=net-misc/networkmanager-0.9.8[introspection] )
+	networkmanager? (
+		app-crypt/libsecret
+		>=net-misc/networkmanager-0.9.8[introspection] )
 "
 # Runtime-only deps are probably incomplete and approximate.
 # Introspection deps generated using:
@@ -125,10 +122,11 @@ src_prepare() {
 	epatch "${FILESDIR}/${PN}-defaults.patch"
 
 	# Fix automagic gnome-bluetooth dep, bug #398145
-	epatch "${FILESDIR}/${PN}-3.10-bluetooth-flag.patch"
+	epatch "${FILESDIR}/${PN}-3.12-bluetooth-flag.patch"
 
-	# Make networkmanager optional, bug #398593
-	epatch "${FILESDIR}/${PN}-3.10-networkmanager-flag.patch"
+	# Fix silent bluetooth linking failure with ld.gold, bug #503952
+	# https://bugzilla.gnome.org/show_bug.cgi?id=726435
+	epatch "${FILESDIR}/${PN}-3.10.4-bluetooth-gold.patch"
 
 	epatch_user
 
@@ -139,8 +137,9 @@ src_prepare() {
 src_configure() {
 	# Do not error out on warnings
 	gnome2_src_configure \
+		--enable-browser-plugin \
 		--enable-man \
-		--disable-jhbuild-wrapper-script \
+		$(use_enable !openrc-force systemd) \
 		$(use_with bluetooth) \
 		$(use_enable networkmanager) \
 		BROWSER_PLUGIN_DIR="${EPREFIX}"/usr/$(get_libdir)/nsbrowser/plugins

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 7a154ed..f7baf30 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2013 Gentoo Foundation
+# Copyright 1999-2014 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: $
 
@@ -13,7 +13,7 @@ if [[ ${PV} = 9999 ]]; then
 fi
 
 DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
-HOMEPAGE="http://live.gnome.org/GnomeShell"
+HOMEPAGE="https://wiki.gnome.org/Projects/GnomeShell"
 
 LICENSE="GPL-2+ LGPL-2+"
 SLOT="0"
@@ -22,7 +22,7 @@ REQUIRED_USE="${PYTHON_REQUIRED_USE}"
 if [[ ${PV} = 9999 ]]; then
 	KEYWORDS=""
 else
-	KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~x86"
+	KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86"
 fi
 
 # libXfixes-5.0 needed for pointer barriers
@@ -33,21 +33,19 @@ fi
 # gnome-shell/gnome-control-center/mutter/gnome-settings-daemon better to be in sync for 3.8.3
 # https://mail.gnome.org/archives/gnome-announce-list/2013-June/msg00005.html
 COMMON_DEPEND="
-	app-crypt/libsecret
 	>=app-accessibility/at-spi2-atk-2.5.3
 	>=dev-libs/atk-2[introspection]
 	>=app-crypt/gcr-3.7.5[introspection]
-	>=dev-libs/glib-2.37:2
-	>=dev-libs/gjs-1.38.1
+	>=dev-libs/glib-2.39.1:2
+	>=dev-libs/gjs-1.39
 	>=dev-libs/gobject-introspection-0.10.1
 	>=x11-libs/gtk+-3.7.9:3[introspection]
-	>=media-libs/clutter-1.13.4:1.0[introspection]
+	>=media-libs/clutter-1.15.90:1.0[introspection]
 	>=dev-libs/json-glib-0.13.2
 	>=dev-libs/libcroco-0.6.8:0.6
 	>=gnome-base/gnome-desktop-3.7.90:3=[introspection]
-	>=gnome-base/gsettings-desktop-schemas-3.7.4
+	>=gnome-base/gsettings-desktop-schemas-3.12
 	>=gnome-base/gnome-keyring-3.3.90
-	>=gnome-base/gnome-menus-3.5.3:3[introspection]
 	gnome-base/libgnome-keyring
 	>=gnome-extra/evolution-data-server-3.5.3:=
 	>=media-libs/gstreamer-0.11.92:1.0
@@ -56,7 +54,7 @@ COMMON_DEPEND="
 	>=sys-auth/polkit-0.100[introspection]
 	>=x11-libs/libXfixes-5.0
 	x11-libs/libXtst
-	>=x11-wm/mutter-3.10.1[introspection]
+	>=x11-wm/mutter-3.12[introspection]
 	>=x11-libs/startup-notification-0.11
 
 	${PYTHON_DEPS}
@@ -75,7 +73,9 @@ COMMON_DEPEND="
 	x11-apps/mesa-progs
 
 	bluetooth? ( >=net-wireless/gnome-bluetooth-3.9[introspection] )
-	networkmanager? ( >=net-misc/networkmanager-0.9.8[introspection] )
+	networkmanager? (
+		app-crypt/libsecret
+		>=net-misc/networkmanager-0.9.8[introspection] )
 "
 # Runtime-only deps are probably incomplete and approximate.
 # Introspection deps generated using:
@@ -132,10 +132,11 @@ src_prepare() {
 	epatch "${FILESDIR}/${PN}-defaults.patch"
 
 	# Fix automagic gnome-bluetooth dep, bug #398145
-	epatch "${FILESDIR}/${PN}-3.10-bluetooth-flag.patch"
+	epatch "${FILESDIR}/${PN}-3.12-bluetooth-flag.patch"
 
-	# Make networkmanager optional, bug #398593
-	epatch "${FILESDIR}/${PN}-3.10-networkmanager-flag.patch"
+	# Fix silent bluetooth linking failure with ld.gold, bug #503952
+	# https://bugzilla.gnome.org/show_bug.cgi?id=726435
+	epatch "${FILESDIR}/${PN}-3.10.4-bluetooth-gold.patch"
 
 	epatch_user
 
@@ -146,8 +147,10 @@ src_prepare() {
 src_configure() {
 	# Do not error out on warnings
 	gnome2_src_configure \
+		--enable-browser-plugin \
 		--enable-man \
 		--disable-jhbuild-wrapper-script \
+		$(use_enable !openrc-force systemd) \
 		$(use_with bluetooth) \
 		$(use_enable networkmanager) \
 		BROWSER_PLUGIN_DIR="${EPREFIX}"/usr/$(get_libdir)/nsbrowser/plugins


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2014-11-29 16:49 Remi Cardona
  0 siblings, 0 replies; 25+ messages in thread
From: Remi Cardona @ 2014-11-29 16:49 UTC (permalink / raw
  To: gentoo-commits

commit:     36eba783b56e30c212cdb9585fcc7dade98c5e77
Author:     Rémi Cardona <remi <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 29 16:47:22 2014 +0000
Commit:     Remi Cardona <remi <AT> gentoo <DOT> org>
CommitDate: Sat Nov 29 16:48:38 2014 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=36eba783

gnome-base/gnome-shell: Fix build with non-bash /bin/sh

Patch comes from upstream git, so -9999 doesn't need it.

---
 ...around-quoting-issues-in-configure-script.patch | 33 ++++++++++++++++++++++
 gnome-base/gnome-shell/gnome-shell-3.14.2.ebuild   |  3 ++
 2 files changed, 36 insertions(+)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.14.2-build-Workaround-quoting-issues-in-configure-script.patch b/gnome-base/gnome-shell/files/gnome-shell-3.14.2-build-Workaround-quoting-issues-in-configure-script.patch
new file mode 100644
index 0000000..9f5f457
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.14.2-build-Workaround-quoting-issues-in-configure-script.patch
@@ -0,0 +1,33 @@
+From b05ab0eaebd9e6e58f1b9c092e05323c5b901a2b Mon Sep 17 00:00:00 2001
+From: Alexander Tsoy <alexander@tsoy.me>
+Date: Mon, 27 Oct 2014 16:45:10 +0300
+Subject: [PATCH] build: Workaround quoting issues in configure script
+
+Default value of BROWSER_PLUGIN_DIR variable contains special symbols.
+Thus quoting and inlining it in parameter expansion is not portable.
+In particular it does not work in dash. Replace ${a:-b} parameter
+expansion with conditional statement.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=739241
+---
+ configure.ac | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index d55848b..5b8c306 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -232,7 +232,9 @@ esac
+ AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS"
+ AC_SUBST(AM_CFLAGS)
+ 
+-BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}"
++if test -z "${BROWSER_PLUGIN_DIR}"; then
++  BROWSER_PLUGIN_DIR="\${libdir}/mozilla/plugins"
++fi
+ AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])
+ 
+ AC_CONFIG_FILES([
+-- 
+2.1.3
+

diff --git a/gnome-base/gnome-shell/gnome-shell-3.14.2.ebuild b/gnome-base/gnome-shell/gnome-shell-3.14.2.ebuild
index 7db3234..d11763a 100644
--- a/gnome-base/gnome-shell/gnome-shell-3.14.2.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.14.2.ebuild
@@ -128,6 +128,9 @@ src_prepare() {
 	# https://bugzilla.gnome.org/show_bug.cgi?id=726435
 	epatch "${FILESDIR}/${PN}-3.14.0-bluetooth-gold.patch"
 
+	# Fix build with non-bash /bin/sh, see bug #526408
+	epatch "${FILESDIR}/${PN}-3.14.2-build-Workaround-quoting-issues-in-configure-script.patch"
+
 	epatch_user
 
 	eautoreconf


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2014-12-21 13:28 Gilles Dartiguelongue
  0 siblings, 0 replies; 25+ messages in thread
From: Gilles Dartiguelongue @ 2014-12-21 13:28 UTC (permalink / raw
  To: gentoo-commits

commit:     3e30c7a3b814475de587d6c4d5e24f5adb4ec8e2
Author:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 21 11:00:18 2014 +0000
Commit:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
CommitDate: Sun Dec 21 11:00:18 2014 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=3e30c7a3

gnome-base/gnome-shell: 3.14.2 → 3.14.3

---
 ...around-quoting-issues-in-configure-script.patch | 33 ----------------------
 ...ell-3.14.2.ebuild => gnome-shell-3.14.3.ebuild} |  5 +---
 gnome-base/gnome-shell/gnome-shell-9999.ebuild     |  2 +-
 3 files changed, 2 insertions(+), 38 deletions(-)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.14.2-build-Workaround-quoting-issues-in-configure-script.patch b/gnome-base/gnome-shell/files/gnome-shell-3.14.2-build-Workaround-quoting-issues-in-configure-script.patch
deleted file mode 100644
index 9f5f457..0000000
--- a/gnome-base/gnome-shell/files/gnome-shell-3.14.2-build-Workaround-quoting-issues-in-configure-script.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From b05ab0eaebd9e6e58f1b9c092e05323c5b901a2b Mon Sep 17 00:00:00 2001
-From: Alexander Tsoy <alexander@tsoy.me>
-Date: Mon, 27 Oct 2014 16:45:10 +0300
-Subject: [PATCH] build: Workaround quoting issues in configure script
-
-Default value of BROWSER_PLUGIN_DIR variable contains special symbols.
-Thus quoting and inlining it in parameter expansion is not portable.
-In particular it does not work in dash. Replace ${a:-b} parameter
-expansion with conditional statement.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=739241
----
- configure.ac | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index d55848b..5b8c306 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -232,7 +232,9 @@ esac
- AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS"
- AC_SUBST(AM_CFLAGS)
- 
--BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}"
-+if test -z "${BROWSER_PLUGIN_DIR}"; then
-+  BROWSER_PLUGIN_DIR="\${libdir}/mozilla/plugins"
-+fi
- AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])
- 
- AC_CONFIG_FILES([
--- 
-2.1.3
-

diff --git a/gnome-base/gnome-shell/gnome-shell-3.14.2.ebuild b/gnome-base/gnome-shell/gnome-shell-3.14.3.ebuild
similarity index 97%
rename from gnome-base/gnome-shell/gnome-shell-3.14.2.ebuild
rename to gnome-base/gnome-shell/gnome-shell-3.14.3.ebuild
index d11763a..b740e0d 100644
--- a/gnome-base/gnome-shell/gnome-shell-3.14.2.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.14.3.ebuild
@@ -43,7 +43,7 @@ COMMON_DEPEND="
 	>=sys-auth/polkit-0.100[introspection]
 	>=x11-libs/libXfixes-5.0
 	x11-libs/libXtst
-	>=x11-wm/mutter-3.14.2[introspection]
+	>=x11-wm/mutter-3.14.3[introspection]
 	>=x11-libs/startup-notification-0.11
 
 	${PYTHON_DEPS}
@@ -128,9 +128,6 @@ src_prepare() {
 	# https://bugzilla.gnome.org/show_bug.cgi?id=726435
 	epatch "${FILESDIR}/${PN}-3.14.0-bluetooth-gold.patch"
 
-	# Fix build with non-bash /bin/sh, see bug #526408
-	epatch "${FILESDIR}/${PN}-3.14.2-build-Workaround-quoting-issues-in-configure-script.patch"
-
 	epatch_user
 
 	eautoreconf

diff --git a/gnome-base/gnome-shell/gnome-shell-9999.ebuild b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
index 7624368..ad3903f 100644
--- a/gnome-base/gnome-shell/gnome-shell-9999.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-9999.ebuild
@@ -50,7 +50,7 @@ COMMON_DEPEND="
 	>=sys-auth/polkit-0.100[introspection]
 	>=x11-libs/libXfixes-5.0
 	x11-libs/libXtst
-	>=x11-wm/mutter-3.14.2[introspection]
+	>=x11-wm/mutter-3.14.3[introspection]
 	>=x11-libs/startup-notification-0.11
 
 	${PYTHON_DEPS}


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2018-02-03 20:32 Sobhan Mohammadpour
  0 siblings, 0 replies; 25+ messages in thread
From: Sobhan Mohammadpour @ 2018-02-03 20:32 UTC (permalink / raw
  To: gentoo-commits

commit:     2666153bdd627858efa635a27bd7cf06f47f8b69
Author:     Sobhan Mohammadpour <sobhan <AT> gentoo <DOT> org>
AuthorDate: Sat Feb  3 20:32:45 2018 +0000
Commit:     Sobhan Mohammadpour <sobhan <AT> gentoo <DOT> org>
CommitDate: Sat Feb  3 20:32:45 2018 +0000
URL:        https://gitweb.gentoo.org/proj/gnome.git/commit/?id=2666153b

gnome-base/gnome-shell: version bump to 3.26.1

Package-Manager: Portage-2.3.23, Repoman-2.3.6
Manifest-Sign-Key: 0x7DF238CF0AA182E1

 .../files/gnome-shell-3.22.0-defaults.patch        |  26 +++
 gnome-base/gnome-shell/gnome-shell-3.26.1.ebuild   | 191 +++++++++++++++++++++
 gnome-base/gnome-shell/metadata.xml                |   4 +
 3 files changed, 221 insertions(+)

diff --git a/gnome-base/gnome-shell/files/gnome-shell-3.22.0-defaults.patch b/gnome-base/gnome-shell/files/gnome-shell-3.22.0-defaults.patch
new file mode 100644
index 00000000..b80dbc3a
--- /dev/null
+++ b/gnome-base/gnome-shell/files/gnome-shell-3.22.0-defaults.patch
@@ -0,0 +1,26 @@
+From 7a671f99b7ef2d5f38be67668aac762764b32a42 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Tue, 10 Dec 2013 23:33:51 +0100
+Subject: [PATCH 1/2] Alter list of default applications
+
+Signed-off-by: Gilles Dartiguelongue <eva@gentoo.org>
+---
+ data/org.gnome.shell.gschema.xml.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in
+index c1e6b21..368c654 100644
+--- a/data/org.gnome.shell.gschema.xml.in
++++ b/data/org.gnome.shell.gschema.xml.in
+@@ -31,7 +31,7 @@
+       </description>
+     </key>
+     <key name="favorite-apps" type="as">
+-      <default>[ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default>
++      <default>[ 'chromium-browser-chromium.desktop', 'firefox.desktop', 'firefox-bin.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]</default>
+       <summary>List of desktop file IDs for favorite applications</summary>
+       <description>
+         The applications corresponding to these identifiers
+-- 
+2.10.1
+

diff --git a/gnome-base/gnome-shell/gnome-shell-3.26.1.ebuild b/gnome-base/gnome-shell/gnome-shell-3.26.1.ebuild
new file mode 100644
index 00000000..34c076ae
--- /dev/null
+++ b/gnome-base/gnome-shell/gnome-shell-3.26.1.ebuild
@@ -0,0 +1,191 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+GNOME2_LA_PUNT="yes"
+GNOME2_EAUTORECONF="yes"
+PYTHON_COMPAT=( python{3_4,3_5} )
+
+inherit gnome-meson multilib pax-utils python-r1 systemd
+
+DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
+HOMEPAGE="https://wiki.gnome.org/Projects/GnomeShell"
+
+LICENSE="GPL-2+ LGPL-2+"
+SLOT="0"
+IUSE="+bluetooth +browser-extension +ibus +networkmanager nsplugin -openrc-force"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~x86"
+
+# libXfixes-5.0 needed for pointer barriers
+# FIXME:
+#  * gstreamer support is currently automagic
+#  * gnome-bluetooth is automagic
+#  * BROWSER_PLUGIN_DIR is not set
+COMMON_DEPEND="
+	>=app-accessibility/at-spi2-atk-2.5.3
+	>=dev-libs/atk-2[introspection]
+	>=app-crypt/gcr-3.7.5[introspection]
+	>=dev-libs/glib-2.53:2[dbus]
+	>=dev-libs/gjs-1.47.0
+	>=dev-libs/gobject-introspection-1.49.1:=
+	dev-libs/libical:=
+	>=x11-libs/gtk+-3.15.0:3[introspection]
+	>=dev-libs/libcroco-0.6.8:0.6
+	>=gnome-base/gnome-desktop-3.7.90:3=[introspection]
+	>=gnome-base/gsettings-desktop-schemas-3.21.3
+	>=gnome-extra/evolution-data-server-3.17.2:=
+	>=media-libs/gstreamer-0.11.92:1.0
+	>=net-im/telepathy-logger-0.2.4[introspection]
+	>=net-libs/telepathy-glib-0.19[introspection]
+	>=sys-auth/polkit-0.100[introspection]
+	>=x11-libs/libXfixes-5.0
+	x11-libs/libXtst
+	>=x11-wm/mutter-3.26.0:0/0[introspection]
+	>=x11-libs/startup-notification-0.11
+
+	${PYTHON_DEPS}
+	dev-python/pygobject:3[${PYTHON_USEDEP}]
+
+	dev-libs/dbus-glib
+	dev-libs/libxml2:2
+	media-libs/libcanberra[gtk3]
+	media-libs/mesa
+	>=media-sound/pulseaudio-2
+	>=net-libs/libsoup-2.40:2.4[introspection]
+	x11-libs/libX11
+	x11-libs/gdk-pixbuf:2[introspection]
+
+	x11-apps/mesa-progs
+
+	bluetooth? ( >=net-wireless/gnome-bluetooth-3.9[introspection] )
+	networkmanager? (
+		>=app-crypt/libsecret-0.18
+		>=gnome-extra/nm-applet-0.9.8
+		>=net-misc/networkmanager-0.9.8:=[introspection] )
+	nsplugin? ( >=dev-libs/json-glib-0.13.2 )
+"
+# Runtime-only deps are probably incomplete and approximate.
+# Introspection deps generated using:
+#  grep -roe "imports.gi.*" gnome-shell-* | cut -f2 -d: | sort | uniq
+# Each block:
+# 1. Introspection stuff needed via imports.gi.*
+# 2. gnome-session is needed for gnome-session-quit
+# 3. Control shell settings
+# 4. Systemd needed for suspending support
+# 5. xdg-utils needed for xdg-open, used by extension tool
+# 6. adwaita-icon-theme and dejavu font neeed for various icons & arrows
+# 7. mobile-broadband-provider-info, timezone-data for shell-mobile-providers.c
+# 8. IBus is needed for nls integration
+RDEPEND="${COMMON_DEPEND}
+	app-accessibility/at-spi2-core:2[introspection]
+	>=app-accessibility/caribou-0.4.8
+	dev-libs/libgweather:2[introspection]
+	>=sys-apps/accountsservice-0.6.14[introspection]
+	>=sys-power/upower-0.99:=[introspection]
+	x11-libs/pango[introspection]
+
+	>=gnome-base/gnome-session-2.91.91
+	>=gnome-base/gnome-settings-daemon-3.8.3
+
+	!openrc-force? ( >=sys-apps/systemd-31 )
+
+	x11-misc/xdg-utils
+
+	media-fonts/dejavu
+	>=x11-themes/adwaita-icon-theme-3.19.90
+
+	networkmanager? (
+		net-misc/mobile-broadband-provider-info
+		sys-libs/timezone-data )
+	ibus? ( >=app-i18n/ibus-1.4.99[dconf(+),gtk,introspection] )
+"
+# avoid circular dependency, see bug #546134
+PDEPEND="
+	>=gnome-base/gdm-3.5[introspection]
+	>=gnome-base/gnome-control-center-3.8.3[bluetooth(+)?,networkmanager(+)?]
+	browser-extension? ( gnome-extra/chrome-gnome-shell )
+"
+DEPEND="${COMMON_DEPEND}
+	dev-libs/libxslt
+	>=dev-util/gdbus-codegen-2.45.3
+	>=dev-util/gtk-doc-am-1.17
+	gnome-base/gnome-common
+	sys-devel/autoconf-archive
+	>=sys-devel/gettext-0.19.6
+	virtual/pkgconfig
+"
+
+PATCHES=(
+	# Change favorites defaults, bug #479918
+	"${FILESDIR}"/${PN}-3.22.0-defaults.patch
+	# Fix automagic gnome-bluetooth dep, bug #398145
+)
+
+src_configure() {
+	gnome-meson_src_configure \
+		-Denable-man=true \
+		-Denable-documentation=false \
+		-Denable-systemd=$(usex !openrc-force yes no) \
+		-Denable-networkmanager=$(usex networkmanager yes no) \
+		$(meson_use nsplugin enable-browser-plugin) 
+}
+
+src_install() {
+	gnome-meson_src_install
+	python_replicate_script "${ED}/usr/bin/gnome-shell-extension-tool"
+	python_replicate_script "${ED}/usr/bin/gnome-shell-perf-tool"
+
+	# Required for gnome-shell on hardened/PaX, bug #398941
+	# Future-proof for >=spidermonkey-1.8.7 following polkit's example
+	if has_version '<dev-lang/spidermonkey-1.8.7'; then
+		pax-mark mr "${ED}usr/bin/gnome-shell"{,-extension-prefs}
+	elif has_version '>=dev-lang/spidermonkey-1.8.7[jit]'; then
+		pax-mark m "${ED}usr/bin/gnome-shell"{,-extension-prefs}
+	# Required for gnome-shell on hardened/PaX #457146 and #457194
+	# PaX EMUTRAMP need to be on
+	elif has_version '>=dev-libs/libffi-3.0.13[pax_kernel]'; then
+		pax-mark E "${ED}usr/bin/gnome-shell"{,-extension-prefs}
+	else
+		pax-mark m "${ED}usr/bin/gnome-shell"{,-extension-prefs}
+	fi
+}
+
+pkg_postinst() {
+	gnome-meson_pkg_postinst
+
+	if ! has_version 'media-libs/gst-plugins-good:1.0' || \
+	   ! has_version 'media-plugins/gst-plugins-vpx:1.0'; then
+		ewarn "To make use of GNOME Shell's built-in screen recording utility,"
+		ewarn "you need to either install media-libs/gst-plugins-good:1.0"
+		ewarn "and media-plugins/gst-plugins-vpx:1.0, or use dconf-editor to change"
+		ewarn "apps.gnome-shell.recorder/pipeline to what you want to use."
+	fi
+
+	if ! has_version "media-libs/mesa[llvm]"; then
+		elog "llvmpipe is used as fallback when no 3D acceleration"
+		elog "is available. You will need to enable llvm USE for"
+		elog "media-libs/mesa if you do not have hardware 3D setup."
+	fi
+
+	# https://bugs.gentoo.org/show_bug.cgi?id=563084
+	if has_version "x11-drivers/nvidia-drivers[-kms]"; then
+		ewarn "You will need to enable kms support in x11-drivers/nvidia-drivers,"
+		ewarn "otherwise Gnome will fail to start"
+	fi
+
+	if ! systemd_is_booted; then
+		ewarn "${PN} needs Systemd to be *running* for working"
+		ewarn "properly. Please follow this guide to migrate:"
+		ewarn "https://wiki.gentoo.org/wiki/Systemd"
+	fi
+
+	if use openrc-force; then
+		ewarn "You are enabling 'openrc-force' USE flag to skip systemd requirement,"
+		ewarn "this can lead to unexpected problems and is not supported neither by"
+		ewarn "upstream neither by Gnome Gentoo maintainers. If you suffer any problem,"
+		ewarn "you will need to disable this USE flag system wide and retest before"
+		ewarn "opening any bug report."
+	fi
+}

diff --git a/gnome-base/gnome-shell/metadata.xml b/gnome-base/gnome-shell/metadata.xml
index d312bdad..3d91d2b5 100644
--- a/gnome-base/gnome-shell/metadata.xml
+++ b/gnome-base/gnome-shell/metadata.xml
@@ -6,6 +6,10 @@
 	<name>Gentoo GNOME Desktop</name>
 </maintainer>
 <use>
+	<flag name="browser-extension">Ensure the presence of extensions.gnome.org
+		native connector <pkg>gnome-extra/chrome-gnome-shell</pkg></flag>
+	<flag name="ibus">Enable support for enhanced input methods through
+		<pkg>app-i18n/ibus</pkg></flag>
 	<flag name="openrc-force">Skip systemd dependency (#480336),
 		enabling this flag will become your setup to be fully
 		unsupported by upstream and downstream Gnome team. Do not


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/
@ 2018-09-10 21:33 Gilles Dartiguelongue
  0 siblings, 0 replies; 25+ messages in thread
From: Gilles Dartiguelongue @ 2018-09-10 21:33 UTC (permalink / raw
  To: gentoo-commits

commit:     b6628fdbdc50807a2519be06bf0e32ffeb05e9a1
Author:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
AuthorDate: Mon Sep 10 11:22:57 2018 +0000
Commit:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
CommitDate: Mon Sep 10 14:01:30 2018 +0000
URL:        https://gitweb.gentoo.org/proj/gnome.git/commit/?id=b6628fdb

gnome-base/gnome-shell: make bluetooth support optional again

Package-Manager: Portage-2.3.49, Repoman-2.3.10
Manifest-Sign-Key: 0x5A56C8CD0C13248A

 .../gnome-shell/files/3.26-bluetooth-flag.patch    | 72 ++++++++++++++++++++++
 ...26.2-r1.ebuild => gnome-shell-3.26.2-r2.ebuild} | 11 ++--
 2 files changed, 79 insertions(+), 4 deletions(-)

diff --git a/gnome-base/gnome-shell/files/3.26-bluetooth-flag.patch b/gnome-base/gnome-shell/files/3.26-bluetooth-flag.patch
new file mode 100644
index 00000000..65686954
--- /dev/null
+++ b/gnome-base/gnome-shell/files/3.26-bluetooth-flag.patch
@@ -0,0 +1,72 @@
+From 7ca3e1a9d18e6f6154b4479bcd94d420bc69798c Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Mon, 10 Sep 2018 13:17:39 +0200
+Subject: [PATCH] Make bluetooth support optional
+
+https://bugs.gentoo.org/show_bug.cgi?id=398145
+---
+ js/misc/meson.build |  2 +-
+ meson.build         | 15 ++++++++++++++-
+ meson_options.txt   |  7 +++++++
+ 3 files changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/js/misc/meson.build b/js/misc/meson.build
+index 20489496c..3071f9dfb 100644
+--- a/js/misc/meson.build
++++ b/js/misc/meson.build
+@@ -3,7 +3,7 @@ jsconf.set('PACKAGE_NAME', meson.project_name())
+ jsconf.set('PACKAGE_VERSION', meson.project_version())
+ jsconf.set('GETTEXT_PACKAGE', meson.project_name())
+ jsconf.set('LIBMUTTER_API_VERSION', mutter_api_version)
+-jsconf.set10('HAVE_BLUETOOTH', bt_dep.found())
++jsconf.set10('HAVE_BLUETOOTH', have_bluetooth)
+ jsconf.set10('HAVE_NETWORKMANAGER', have_networkmanager)
+ jsconf.set('datadir', datadir)
+ jsconf.set('libexecdir', libexecdir)
+diff --git a/meson.build b/meson.build
+index b82c41398..7d342ff61 100644
+--- a/meson.build
++++ b/meson.build
+@@ -91,7 +91,20 @@ startup_dep = dependency('libstartup-notification-1.0', version: startup_req)
+ x11_dep = dependency('x11')
+ schemas_dep = dependency('gsettings-desktop-schemas', version: schemas_req)
+ 
+-bt_dep = dependency('gnome-bluetooth-1.0', version: bt_req, required: false)
++bt_dep = []
++enable_bluetooth = get_option('enable-networkmanager')
++if enable_bluetooth != 'no'
++  want_bluetooth = enable_bluetooth == 'yes'
++  bt_dep = dependency('gnome-bluetooth-1.0', version: bt_req, required: want_bluetooth)
++  have_bluetooth = bt_dep.found()
++
++  if not have_bluetooth
++    bt_dep = []
++  endif
++else
++  have_bluetooth = false
++endif
++
+ gst_dep = dependency('gstreamer-1.0', version: gst_req, required: false)
+ gst_base_dep = dependency('gstreamer-base-1.0', required: false)
+ 
+diff --git a/meson_options.txt b/meson_options.txt
+index 18899ffdb..9191f8c0e 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -16,6 +16,13 @@ option('enable-man',
+   description: 'Generate man pages'
+ )
+ 
++option('enable-bluetooth',
++  type: 'combo',
++  choices: ['yes', 'no', 'auto'],
++  value: 'auto',
++  description: 'Enable bluetooth support'
++)
++
+ option('enable-networkmanager',
+   type: 'combo',
+   choices: ['yes', 'no', 'auto'],
+-- 
+2.18.0
+

diff --git a/gnome-base/gnome-shell/gnome-shell-3.26.2-r1.ebuild b/gnome-base/gnome-shell/gnome-shell-3.26.2-r2.ebuild
similarity index 97%
rename from gnome-base/gnome-shell/gnome-shell-3.26.2-r1.ebuild
rename to gnome-base/gnome-shell/gnome-shell-3.26.2-r2.ebuild
index 3346d08b..84ff9806 100644
--- a/gnome-base/gnome-shell/gnome-shell-3.26.2-r1.ebuild
+++ b/gnome-base/gnome-shell/gnome-shell-3.26.2-r2.ebuild
@@ -6,7 +6,7 @@ GNOME2_LA_PUNT="yes"
 GNOME2_EAUTORECONF="yes"
 PYTHON_COMPAT=( python3_{4,5,6} )
 
-inherit gnome-meson multilib pax-utils python-r1 systemd
+inherit gnome-meson multilib pax-utils python-r1 systemd virtualx
 
 DESCRIPTION="Provides core UI functions for the GNOME 3 desktop"
 HOMEPAGE="https://wiki.gnome.org/Projects/GnomeShell"
@@ -21,8 +21,6 @@ KEYWORDS="~amd64 ~ia64 ~ppc ~ppc64 ~x86"
 # libXfixes-5.0 needed for pointer barriers
 # FIXME:
 #  * gstreamer support is currently automagic
-#  * gnome-bluetooth is automagic
-#  * BROWSER_PLUGIN_DIR is not set
 COMMON_DEPEND="
 	>=app-accessibility/at-spi2-atk-2.5.3
 	>=dev-libs/atk-2[introspection]
@@ -121,6 +119,7 @@ PATCHES=(
 	# Change favorites defaults, bug #479918
 	"${FILESDIR}"/${PN}-3.22.0-defaults.patch
 	# Fix automagic gnome-bluetooth dep, bug #398145
+	"${FILESDIR}"/3.26-bluetooth-flag.patch
 )
 
 src_configure() {
@@ -129,7 +128,11 @@ src_configure() {
 		-Denable-documentation=false \
 		-Denable-systemd=$(usex !openrc-force yes no) \
 		-Denable-networkmanager=$(usex networkmanager yes no) \
-		$(meson_use nsplugin enable-browser-plugin) 
+		$(meson_use nsplugin enable-browser-plugin)
+}
+
+src_test() {
+	virtx meson_src_test
 }
 
 src_install() {


^ permalink raw reply related	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2018-09-10 21:34 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-10 21:33 [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-shell/, gnome-base/gnome-shell/files/ Gilles Dartiguelongue
  -- strict thread matches above, loose matches on Subject: below --
2018-02-03 20:32 Sobhan Mohammadpour
2014-12-21 13:28 Gilles Dartiguelongue
2014-11-29 16:49 Remi Cardona
2014-04-15 22:05 Gilles Dartiguelongue
2013-12-10 23:31 Gilles Dartiguelongue
2012-10-02  1:51 Alexandre Rostovtsev
2012-08-18 15:41 Priit Laes
2012-05-21  6:49 Alexandre Restovtsev
2012-04-06 18:22 Alexandre Restovtsev
2012-04-03  6:36 Alexandre Restovtsev
2011-11-02  2:36 Nirbheek Chauhan
2011-10-18  7:37 Alexandre Restovtsev
2011-08-27  2:08 Alexandre Restovtsev
2011-06-02 14:43 Nirbheek Chauhan
2011-03-29  8:36 Nirbheek Chauhan
2011-03-23  5:20 Nirbheek Chauhan
2011-03-15 13:08 Nirbheek Chauhan
2011-03-13 20:44 Nirbheek Chauhan
2011-03-10 15:41 Nirbheek Chauhan
2011-03-09 11:34 Nirbheek Chauhan
2011-03-04 10:23 Nirbheek Chauhan
2011-02-28 20:25 Nirbheek Chauhan
2011-02-22 19:44 Nirbheek Chauhan
2011-02-18  6:10 Nirbheek Chauhan

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