[sugar] Add patch for NM-0.9 (thanks to John Dulaney for his assistance)

Peter Robinson pbrobinson at fedoraproject.org
Tue May 24 19:56:35 UTC 2011


commit ea6190d21687433e88aeef5c73917eab1f34e609
Author: Peter Robinson <pbrobinson at gmail.com>
Date:   Tue May 24 20:56:15 2011 +0100

    Add patch for NM-0.9 (thanks to John Dulaney for his assistance)

 sugar-nm09-new.patch |  660 ++++++++++++++++++++++++++++++++++++++++++++++++++
 sugar.spec           |    7 +-
 2 files changed, 666 insertions(+), 1 deletions(-)
---
diff --git a/sugar-nm09-new.patch b/sugar-nm09-new.patch
new file mode 100644
index 0000000..debcd1a
--- /dev/null
+++ b/sugar-nm09-new.patch
@@ -0,0 +1,660 @@
+--- sugar-0.92.1/extensions/deviceicon/network.py.orig	2011-05-24 19:54:30.168926832 +0100
++++ sugar-0.92.1/extensions/deviceicon/network.py	2011-05-24 20:01:10.774611988 +0100
+@@ -3,6 +3,8 @@
+ # Copyright (C) 2009 Tomeu Vizoso, Simon Schampijer
+ # Copyright (C) 2009 Paraguay Educa, Martin Abente
+ # Copyright (C) 2010 Plan Ceibal, Daniel Castelo
++# Copyright (C) 2011 Peter Robinson
++# Copyright (C) 2011 John Dulaney (jdulaney)
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -54,10 +56,11 @@
+ _NM_DEVICE_IFACE = 'org.freedesktop.NetworkManager.Device'
+ _NM_WIRED_IFACE = 'org.freedesktop.NetworkManager.Device.Wired'
+ _NM_WIRELESS_IFACE = 'org.freedesktop.NetworkManager.Device.Wireless'
+-_NM_SERIAL_IFACE = 'org.freedesktop.NetworkManager.Device.Serial'
++_NM_MODEM_IFACE = 'org.freedesktop.NetworkManager.Device.Modem'
+ _NM_OLPC_MESH_IFACE = 'org.freedesktop.NetworkManager.Device.OlpcMesh'
+ _NM_ACCESSPOINT_IFACE = 'org.freedesktop.NetworkManager.AccessPoint'
+ _NM_ACTIVE_CONN_IFACE = 'org.freedesktop.NetworkManager.Connection.Active'
++_NM_GET_SETTINGS_CONN_IFACE = 'org.freedesktop.NetworkManager.Settings.Connection.GetSettings'
+ 
+ _GSM_STATE_NOT_READY = 0
+ _GSM_STATE_DISCONNECTED = 1
+@@ -521,11 +524,11 @@
+         if self._active_ap_op is not None:
+             state = self._device_state
+         else:
+-            state = network.DEVICE_STATE_UNKNOWN
++            state = network.NM_DEVICE_STATE_UNKNOWN
+ 
+         if self._mode != network.NM_802_11_MODE_ADHOC and \
+                 network.is_sugar_adhoc_network(self._name) == False:
+-            if state == network.DEVICE_STATE_ACTIVATED:
++            if state == network.NM_DEVICE_STATE_ACTIVATED:
+                 icon_name = '%s-connected' % 'network-wireless'
+             else:
+                 icon_name = 'network-wireless'
+@@ -535,20 +538,20 @@
+                 self._icon.props.icon_name = icon_name
+         else:
+             channel = network.frequency_to_channel(self._frequency)
+-            if state == network.DEVICE_STATE_ACTIVATED:
++            if state == network.NM_DEVICE_STATE_ACTIVATED:
+                 self._icon.props.icon_name = 'network-adhoc-%s-connected' \
+                         % channel
+             else:
+                 self._icon.props.icon_name = 'network-adhoc-%s' % channel
+             self._icon.props.base_color = profile.get_color()
+ 
+-        if state == network.DEVICE_STATE_PREPARE or \
+-           state == network.DEVICE_STATE_CONFIG or \
+-           state == network.DEVICE_STATE_NEED_AUTH or \
+-           state == network.DEVICE_STATE_IP_CONFIG:
++        if state == network.NM_DEVICE_STATE_PREPARE or \
++           state == network.NM_DEVICE_STATE_CONFIG or \
++           state == network.NM_DEVICE_STATE_NEED_AUTH or \
++           state == network.NM_DEVICE_STATE_IP_CONFIG:
+             self._palette.set_connecting()
+             self._icon.props.pulsing = True
+-        elif state == network.DEVICE_STATE_ACTIVATED:
++        elif state == network.NM_DEVICE_STATE_ACTIVATED:
+             address = self._device_props.Get(_NM_DEVICE_IFACE, 'Ip4Address')
+             self._palette.set_connected_with_frequency(self._frequency,
+                                                        address)
+@@ -651,15 +654,15 @@
+     def _update(self):
+         state = self._device_state
+ 
+-        if state in [network.DEVICE_STATE_PREPARE,
+-                     network.DEVICE_STATE_CONFIG,
+-                     network.DEVICE_STATE_NEED_AUTH,
+-                     network.DEVICE_STATE_IP_CONFIG]:
++        if state in [network.NM_DEVICE_STATE_PREPARE,
++                     network.NM_DEVICE_STATE_CONFIG,
++                     network.NM_DEVICE_STATE_NEED_AUTH,
++                     network.NM_DEVICE_STATE_IP_CONFIG]:
+             self._icon.props.base_color = self._inactive_color
+             self._icon.props.pulse_color = profile.get_color()
+             self._palette.set_connecting()
+             self._icon.props.pulsing = True
+-        elif state == network.DEVICE_STATE_ACTIVATED:
++        elif state == network.NM_DEVICE_STATE_ACTIVATED:
+             address = self._device_props.Get(_NM_DEVICE_IFACE, 'Ip4Address')
+             self._palette.set_connected_with_channel(self._channel, address)
+             self._icon.props.base_color = profile.get_color()
+@@ -687,7 +690,7 @@
+                 obj = self._bus.get_object(_NM_IFACE, ap_op)
+                 props = dbus.Interface(obj, dbus.PROPERTIES_IFACE)
+                 device_type = props.Get(_NM_DEVICE_IFACE, 'DeviceType')
+-                if device_type == network.DEVICE_TYPE_802_11_OLPC_MESH:
++                if device_type == network.NM_DEVICE_TYPE_OLPC_MESH:
+                     netmgr.DeactivateConnection(conn_o)
+                     break
+             except dbus.exceptions.DBusException:
+@@ -738,7 +741,7 @@
+         self._bus.add_signal_receiver(self.__ppp_stats_changed_cb,
+                                       signal_name='PppStats',
+                                       path=self._device.object_path,
+-                                      dbus_interface=_NM_SERIAL_IFACE)
++                                      dbus_interface=_NM_MODEM_IFACE)
+ 
+     def create_palette(self):
+         palette = GsmPalette()
+@@ -816,7 +819,7 @@
+     def _update_state(self, state, old_state, reason):
+         gsm_state = None
+ 
+-        if state is network.DEVICE_STATE_ACTIVATED:
++        if state is network.NM_DEVICE_STATE_ACTIVATED:
+             gsm_state = _GSM_STATE_CONNECTED
+             connection = network.find_gsm_connection()
+             if connection is not None:
+@@ -830,7 +833,7 @@
+                 if self._palette is not None:
+                     self._palette.connection_info_box.show()
+ 
+-        elif state is network.DEVICE_STATE_DISCONNECTED:
++        elif state is network.NM_DEVICE_STATE_DISCONNECTED:
+             gsm_state = _GSM_STATE_DISCONNECTED
+             self._connection_timestamp = 0
+             if self._connection_time_handler is not None:
+@@ -838,18 +841,18 @@
+             if self._palette is not None:
+                 self._palette.connection_info_box.hide()
+ 
+-        elif state in [network.DEVICE_STATE_UNMANAGED,
+-                       network.DEVICE_STATE_UNAVAILABLE,
+-                       network.DEVICE_STATE_UNKNOWN]:
++        elif state in [network.NM_DEVICE_STATE_UNMANAGED,
++                       network.NM_DEVICE_STATE_UNAVAILABLE,
++                       network.NM_DEVICE_STATE_UNKNOWN]:
+             gsm_state = _GSM_STATE_NOT_READY
+ 
+-        elif state in [network.DEVICE_STATE_PREPARE,
+-                       network.DEVICE_STATE_CONFIG,
+-                       network.DEVICE_STATE_IP_CONFIG,
+-                       network.DEVICE_STATE_NEED_AUTH]:
++        elif state in [network.NM_DEVICE_STATE_PREPARE,
++                       network.NM_DEVICE_STATE_CONFIG,
++                       network.NM_DEVICE_STATE_IP_CONFIG,
++                       network.NM_DEVICE_STATE_NEED_AUTH]:
+             gsm_state = _GSM_STATE_CONNECTING
+ 
+-        elif state == network.DEVICE_STATE_FAILED:
++        elif state == network.NM_DEVICE_STATE_FAILED:
+             gsm_state = _GSM_STATE_FAILED
+ 
+         if self._palette is not None:
+@@ -929,10 +932,10 @@
+         self._update_state(new_state)
+ 
+     def _update_state(self, state):
+-        if state in (network.DEVICE_STATE_PREPARE, network.DEVICE_STATE_CONFIG,
+-                     network.DEVICE_STATE_NEED_AUTH,
+-                     network.DEVICE_STATE_IP_CONFIG,
+-                     network.DEVICE_STATE_ACTIVATED):
++        if state in (network.NM_DEVICE_STATE_PREPARE, network.NM_DEVICE_STATE_CONFIG,
++                     network.NM_DEVICE_STATE_NEED_AUTH,
++                     network.NM_DEVICE_STATE_IP_CONFIG,
++                     network.NM_DEVICE_STATE_ACTIVATED):
+             if self._device_view is not None:
+                 self._device_view.update_state(state)
+                 return
+@@ -979,7 +982,7 @@
+         self._update_state(new_state)
+ 
+     def _update_state(self, state):
+-        if state == network.DEVICE_STATE_ACTIVATED:
++        if state == network.NM_DEVICE_STATE_ACTIVATED:
+             props = dbus.Interface(self._device, dbus.PROPERTIES_IFACE)
+             address = props.Get(_NM_DEVICE_IFACE, 'Ip4Address')
+             speed = props.Get(_NM_WIRED_IFACE, 'Speed')
+@@ -1043,18 +1046,21 @@
+         props = dbus.Interface(nm_device, dbus.PROPERTIES_IFACE)
+ 
+         device_type = props.Get(_NM_DEVICE_IFACE, 'DeviceType')
+-        if device_type == network.DEVICE_TYPE_802_3_ETHERNET:
++        if device_type == network.NM_DEVICE_TYPE_ETHERNET:
+             device = WiredDeviceObserver(nm_device, self._tray)
+             self._devices[device_op] = device
+-        elif device_type == network.DEVICE_TYPE_802_11_WIRELESS:
++        elif device_type == network.NM_DEVICE_TYPE_WIFI:
+             device = WirelessDeviceObserver(nm_device, self._tray)
+             self._devices[device_op] = device
+-        elif device_type == network.DEVICE_TYPE_802_11_OLPC_MESH:
++        elif device_type == network.NM_DEVICE_TYPE_OLPC_MESH:
+             device = MeshDeviceObserver(nm_device, self._tray)
+             self._devices[device_op] = device
+-        elif device_type == network.DEVICE_TYPE_GSM_MODEM:
++        elif device_type == network.NM_DEVICE_TYPE_GSM:
+             device = GsmDeviceObserver(nm_device, self._tray)
+             self._devices[device_op] = device
++        elif device_type == network.NM_DEVICE_TYPE_CDMA:
++            device = CdmaDeviceObserver(nm_device, self._tray)
++            self._devices[device_op] = device
+ 
+     def __device_added_cb(self, device_op):
+         self._check_device(device_op)
+--- sugar-0.92.1/src/jarabe/desktop/meshbox.py.orig	2011-05-24 19:56:32.757355239 +0100
++++ sugar-0.92.1/src/jarabe/desktop/meshbox.py	2011-05-24 19:58:37.926818590 +0100
+@@ -2,6 +2,7 @@
+ # Copyright (C) 2009 Tomeu Vizoso, Simon Schampijer
+ # Copyright (C) 2009-2010 One Laptop per Child
+ # Copyright (C) 2010 Collabora Ltd. <http://www.collabora.co.uk/>
++# Copyright (C) 2011 Peter Robinson
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -350,7 +351,7 @@
+         props = dbus.Interface(device, dbus.PROPERTIES_IFACE)
+ 
+         device_type = props.Get(_NM_DEVICE_IFACE, 'DeviceType')
+-        if device_type == network.DEVICE_TYPE_802_11_WIRELESS:
++        if device_type == network.NM_DEVICE_TYPE_WIRELESS:
+             self._devices[device_o] = DeviceObserver(device)
+             self._devices[device_o].connect('access-point-added',
+                                             self.__ap_added_cb)
+@@ -358,7 +359,7 @@
+                                             self.__ap_removed_cb)
+             if self._have_adhoc_networks:
+                 self._box.add_adhoc_networks(device)
+-        elif device_type == network.DEVICE_TYPE_802_11_OLPC_MESH:
++        elif device_type == network.NM_DEVICE_TYPE_OLPC_MESH:
+             self._olpc_mesh_device_o = device_o
+             self._box.enable_olpc_mesh(device)
+ 
+--- sugar-0.92.1/src/jarabe/desktop/networkviews.py.orig	2011-05-24 19:56:40.494445551 +0100
++++ sugar-0.92.1/src/jarabe/desktop/networkviews.py	2011-05-24 19:58:37.927818602 +0100
+@@ -1,6 +1,7 @@
+ # Copyright (C) 2006-2007 Red Hat, Inc.
+ # Copyright (C) 2009 Tomeu Vizoso, Simon Schampijer
+ # Copyright (C) 2009-2010 One Laptop per Child
++# Copyright (C) 2011 Peter Robinson
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -189,7 +190,7 @@
+                 network.is_sugar_adhoc_network(self._name):
+             channel = max([1] + [ap.channel for ap in
+                                  self._access_points.values()])
+-            if self._device_state == network.DEVICE_STATE_ACTIVATED and \
++            if self._device_state == network.NM_DEVICE_STATE_ACTIVATED and \
+                     self._active_ap is not None:
+                 icon_name = 'network-adhoc-%s-connected' % channel
+             else:
+@@ -198,7 +199,7 @@
+             icon = self._palette.props.icon
+             icon.props.icon_name = icon_name
+         else:
+-            if self._device_state == network.DEVICE_STATE_ACTIVATED and \
++            if self._device_state == network.NM_DEVICE_STATE_ACTIVATED and \
+                     self._active_ap is not None:
+                 icon_name = '%s-connected' % _AP_ICON_NAME
+             else:
+@@ -229,18 +230,18 @@
+         if self._active_ap is not None:
+             state = self._device_state
+         else:
+-            state = network.DEVICE_STATE_UNKNOWN
++            state = network.NM_DEVICE_STATE_UNKNOWN
+ 
+-        if state == network.DEVICE_STATE_PREPARE or \
+-           state == network.DEVICE_STATE_CONFIG or \
+-           state == network.DEVICE_STATE_NEED_AUTH or \
+-           state == network.DEVICE_STATE_IP_CONFIG:
++        if state == network.NM_DEVICE_STATE_PREPARE or \
++           state == network.NM_DEVICE_STATE_CONFIG or \
++           state == network.NM_DEVICE_STATE_NEED_AUTH or \
++           state == network.NM_DEVICE_STATE_IP_CONFIG:
+             if self._disconnect_item:
+                 self._disconnect_item.show()
+             self._connect_item.hide()
+             self._palette.props.secondary_text = _('Connecting...')
+             self.props.pulsing = True
+-        elif state == network.DEVICE_STATE_ACTIVATED:
++        elif state == network.NM_DEVICE_STATE_ACTIVATED:
+             connection = network.find_connection_by_ssid(self._name)
+             if connection is not None:
+                 if self._mode == network.NM_802_11_MODE_INFRA:
+@@ -521,9 +522,9 @@
+         if self._channel == channel:
+             state = device_state
+         else:
+-            state = network.DEVICE_STATE_UNKNOWN
++            state = network.NM_DEVICE_STATE_UNKNOWN
+ 
+-        if state == network.DEVICE_STATE_ACTIVATED:
++        if state == network.NM_DEVICE_STATE_ACTIVATED:
+             icon_name = '%s-connected' % (self._ICON_NAME + str(self._channel))
+         else:
+             icon_name = self._ICON_NAME + str(self._channel)
+@@ -533,16 +534,16 @@
+             icon = self._palette.props.icon
+             icon.props.icon_name = icon_name
+ 
+-        if state in [network.DEVICE_STATE_PREPARE,
+-                     network.DEVICE_STATE_CONFIG,
+-                     network.DEVICE_STATE_NEED_AUTH,
+-                     network.DEVICE_STATE_IP_CONFIG]:
++        if state in [network.NM_DEVICE_STATE_PREPARE,
++                     network.NM_DEVICE_STATE_CONFIG,
++                     network.NM_DEVICE_STATE_NEED_AUTH,
++                     network.NM_DEVICE_STATE_IP_CONFIG]:
+             if self._disconnect_item:
+                 self._disconnect_item.show()
+             self._connect_item.hide()
+             self._palette.props.secondary_text = _('Connecting...')
+             self.props.pulsing = True
+-        elif state == network.DEVICE_STATE_ACTIVATED:
++        elif state == network.NM_DEVICE_STATE_ACTIVATED:
+             if self._disconnect_item:
+                 self._disconnect_item.show()
+             self._connect_item.hide()
+@@ -659,18 +660,18 @@
+         if self._active:
+             state = self._device_state
+         else:
+-            state = network.DEVICE_STATE_UNKNOWN
++            state = network.NM_DEVICE_STATE_UNKNOWN
+ 
+-        if state in [network.DEVICE_STATE_PREPARE,
+-                     network.DEVICE_STATE_CONFIG,
+-                     network.DEVICE_STATE_NEED_AUTH,
+-                     network.DEVICE_STATE_IP_CONFIG]:
++        if state in [network.NM_DEVICE_STATE_PREPARE,
++                     network.NM_DEVICE_STATE_CONFIG,
++                     network.NM_DEVICE_STATE_NEED_AUTH,
++                     network.NM_DEVICE_STATE_IP_CONFIG]:
+             if self._disconnect_item:
+                 self._disconnect_item.show()
+             self._connect_item.hide()
+             self._palette.props.secondary_text = _('Connecting...')
+             self.props.pulsing = True
+-        elif state == network.DEVICE_STATE_ACTIVATED:
++        elif state == network.NM_DEVICE_STATE_ACTIVATED:
+             if self._disconnect_item:
+                 self._disconnect_item.show()
+             self._connect_item.hide()
+--- sugar-0.92.1/src/jarabe/model/adhoc.py.orig	2011-05-24 19:57:39.164130994 +0100
++++ sugar-0.92.1/src/jarabe/model/adhoc.py	2011-05-24 19:58:37.928818614 +0100
+@@ -1,4 +1,5 @@
+ # Copyright (C) 2010 One Laptop per Child
++# Copyright (C) 2011 Peter Robinson
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -70,7 +71,7 @@
+         self._device = None
+         self._idle_source = 0
+         self._listening_called = 0
+-        self._device_state = network.DEVICE_STATE_UNKNOWN
++        self._device_state = network.NM_DEVICE_STATE_UNKNOWN
+ 
+         self._current_channel = None
+         self._networks = {self._CHANNEL_1: None,
+@@ -151,7 +152,7 @@
+             self._AUTOCONNECT_TIMEOUT, self.__idle_check_cb)
+ 
+     def __idle_check_cb(self):
+-        if self._device_state == network.DEVICE_STATE_DISCONNECTED:
++        if self._device_state == network.NM_DEVICE_STATE_DISCONNECTED:
+             logging.debug('Connect to Ad-hoc network due to inactivity.')
+             self._autoconnect_adhoc()
+         else:
+--- sugar-0.92.1/src/jarabe/model/olpcmesh.py.orig	2011-05-24 19:57:50.072258553 +0100
++++ sugar-0.92.1/src/jarabe/model/olpcmesh.py	2011-05-24 19:58:37.929818625 +0100
+@@ -1,4 +1,5 @@
+ # Copyright (C) 2009, 2010 One Laptop per Child
++# Copyright (C) 2011 Peter Robinson
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -33,17 +34,19 @@
+ 
+ _XS_ANYCAST = '\xc0\x27\xc0\x27\xc0\x00'
+ 
+-DEVICE_STATE_UNKNOWN = 0
+-DEVICE_STATE_UNMANAGED = 1
+-DEVICE_STATE_UNAVAILABLE = 2
+-DEVICE_STATE_DISCONNECTED = 3
+-DEVICE_STATE_PREPARE = 4
+-DEVICE_STATE_CONFIG = 5
+-DEVICE_STATE_NEED_AUTH = 6
+-DEVICE_STATE_IP_CONFIG = 7
+-DEVICE_STATE_ACTIVATED = 8
+-DEVICE_STATE_FAILED = 9
+-
++NM_DEVICE_STATE_UNKNOWN = 0
++NM_DEVICE_STATE_UNMANAGED = 10
++NM_DEVICE_STATE_UNAVAILABLE = 20
++NM_DEVICE_STATE_DISCONNECTED = 30
++NM_DEVICE_STATE_PREPARE = 40
++NM_DEVICE_STATE_CONFIG = 50
++NM_DEVICE_STATE_NEED_AUTH = 60
++NM_DEVICE_STATE_IP_CONFIG = 70
++NM_DEVICE_STATE_IP_CHECK = 80
++NM_DEVICE_STATE_SECONDARIES = 90
++NM_DEVICE_STATE_ACTIVATED = 100
++NM_DEVICE_STATE_DEACTIVATING = 110
++NM_DEVICE_STATE_FAILED = 120
+ 
+ class OlpcMeshManager(object):
+     def __init__(self, mesh_device):
+@@ -79,8 +82,8 @@
+                                       dbus_interface=_NM_DEVICE_IFACE)
+ 
+         self._idle_source = 0
+-        self._mesh_device_state = DEVICE_STATE_UNKNOWN
+-        self._eth_device_state = DEVICE_STATE_UNKNOWN
++        self._mesh_device_state = NM_DEVICE_STATE_UNKNOWN
++        self._eth_device_state = NM_DEVICE_STATE_UNKNOWN
+ 
+         if self._have_configured_connections():
+             self._start_automesh_timer()
+@@ -123,8 +126,8 @@
+         self._eth_device_state = new_state
+         self._maybe_schedule_idle_check()
+ 
+-        if new_state >= DEVICE_STATE_PREPARE \
+-                and new_state <= DEVICE_STATE_ACTIVATED \
++        if new_state >= NM_DEVICE_STATE_PREPARE \
++                and new_state <= NM_DEVICE_STATE_ACTIVATED \
+                 and len(self._connection_queue) > 0:
+             self._connection_queue = []
+ 
+@@ -132,20 +135,20 @@
+         self._mesh_device_state = new_state
+         self._maybe_schedule_idle_check()
+ 
+-        if new_state == DEVICE_STATE_FAILED:
++        if new_state == NM_DEVICE_STATE_FAILED:
+             self._try_next_connection_from_queue()
+-        elif new_state == DEVICE_STATE_ACTIVATED \
++        elif new_state == NM_DEVICE_STATE_ACTIVATED \
+                 and len(self._connection_queue) > 0:
+             self._empty_connection_queue()
+ 
+     def _maybe_schedule_idle_check(self):
+-        if self._mesh_device_state == DEVICE_STATE_DISCONNECTED \
+-                and self._eth_device_state == DEVICE_STATE_DISCONNECTED:
++        if self._mesh_device_state == NM_DEVICE_STATE_DISCONNECTED \
++                and self._eth_device_state == NM_DEVICE_STATE_DISCONNECTED:
+             self._start_automesh_timer()
+ 
+     def _idle_check(self):
+-        if self._mesh_device_state == DEVICE_STATE_DISCONNECTED \
+-                and self._eth_device_state == DEVICE_STATE_DISCONNECTED:
++        if self._mesh_device_state == NM_DEVICE_STATE_DISCONNECTED \
++                and self._eth_device_state == NM_DEVICE_STATE_DISCONNECTED:
+             logging.debug('starting automesh due to inactivity')
+             self._start_automesh()
+         return False
+--- sugar-0.92.1/src/jarabe/model/network.py.orig	2011-05-24 19:57:58.961362525 +0100
++++ sugar-0.92.1/src/jarabe/model/network.py	2011-05-24 20:03:21.281148686 +0100
+@@ -3,6 +3,7 @@
+ # Copyright (C) 2009-2010 One Laptop per Child
+ # Copyright (C) 2009 Paraguay Educa, Martin Abente
+ # Copyright (C) 2010 Plan Ceibal, Daniel Castelo
++# Copyright (C) 2011 Peter Robinson
+ #
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -34,22 +35,38 @@
+ from sugar import env
+ from sugar.util import unique_id
+ 
+-
+-DEVICE_TYPE_802_3_ETHERNET = 1
+-DEVICE_TYPE_802_11_WIRELESS = 2
+-DEVICE_TYPE_GSM_MODEM = 3
+-DEVICE_TYPE_802_11_OLPC_MESH = 6
+-
+-DEVICE_STATE_UNKNOWN = 0
+-DEVICE_STATE_UNMANAGED = 1
+-DEVICE_STATE_UNAVAILABLE = 2
+-DEVICE_STATE_DISCONNECTED = 3
+-DEVICE_STATE_PREPARE = 4
+-DEVICE_STATE_CONFIG = 5
+-DEVICE_STATE_NEED_AUTH = 6
+-DEVICE_STATE_IP_CONFIG = 7
+-DEVICE_STATE_ACTIVATED = 8
+-DEVICE_STATE_FAILED = 9
++NM_STATE_UNKNOWN = 0
++NM_STATE_ASLEEP = 10
++NM_STATE_DISCONNECTED = 20
++NM_STATE_DISCONNECTING = 30
++NM_STATE_CONNECTING = 40
++NM_STATE_CONNECTED_LOCAL = 50
++NM_STATE_CONNECTED_SITE = 60
++NM_STATE_CONNECTED_GLOBAL = 70
++
++NM_DEVICE_TYPE_UNKNOWN = 0
++NM_DEVICE_TYPE_ETHERNET = 1
++NM_DEVICE_TYPE_WIFI = 2
++NM_DEVICE_TYPE_UNUSED1 = 3
++NM_DEVICE_TYPE_UNUSED2 = 4
++NM_DEVICE_TYPE_BT = 5
++NM_DEVICE_TYPE_OLPC_MESH = 6
++NM_DEVICE_TYPE_WIMAX = 7
++NM_DEVICE_TYPE_MODEM = 8
++
++NM_DEVICE_STATE_UNKNOWN = 0
++NM_DEVICE_STATE_UNMANAGED = 10
++NM_DEVICE_STATE_UNAVAILABLE = 20
++NM_DEVICE_STATE_DISCONNECTED = 30
++NM_DEVICE_STATE_PREPARE = 40
++NM_DEVICE_STATE_CONFIG = 50
++NM_DEVICE_STATE_NEED_AUTH = 60
++NM_DEVICE_STATE_IP_CONFIG = 70
++NM_DEVICE_STATE_IP_CHECK = 80
++NM_DEVICE_STATE_SECONDARIES = 90
++NM_DEVICE_STATE_ACTIVATED = 100
++NM_DEVICE_STATE_DEACTIVATING = 110
++NM_DEVICE_STATE_FAILED = 120
+ 
+ NM_CONNECTION_TYPE_802_11_WIRELESS = '802-11-wireless'
+ NM_CONNECTION_TYPE_GSM = 'gsm'
+@@ -57,15 +74,15 @@
+ NM_ACTIVE_CONNECTION_STATE_UNKNOWN = 0
+ NM_ACTIVE_CONNECTION_STATE_ACTIVATING = 1
+ NM_ACTIVE_CONNECTION_STATE_ACTIVATED = 2
+-
++NM_ACTIVE_CONNECTION_STATE_DEACTIVATING = 3
+ 
+ NM_DEVICE_STATE_REASON_UNKNOWN = 0
+ NM_DEVICE_STATE_REASON_NONE = 1
+ NM_DEVICE_STATE_REASON_NOW_MANAGED = 2
+ NM_DEVICE_STATE_REASON_NOW_UNMANAGED = 3
+ NM_DEVICE_STATE_REASON_CONFIG_FAILED = 4
+-NM_DEVICE_STATE_REASON_CONFIG_UNAVAILABLE = 5
+-NM_DEVICE_STATE_REASON_CONFIG_EXPIRED = 6
++NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE = 5
++NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED = 6
+ NM_DEVICE_STATE_REASON_NO_SECRETS = 7
+ NM_DEVICE_STATE_REASON_SUPPLICANT_DISCONNECT = 8
+ NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED = 9
+@@ -100,6 +117,11 @@
+ NM_DEVICE_STATE_REASON_CONNECTION_REMOVED = 38
+ NM_DEVICE_STATE_REASON_USER_REQUESTED = 39
+ NM_DEVICE_STATE_REASON_CARRIER = 40
++NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED = 41
++NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE = 42
++NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND = 43
++NM_DEVICE_STATE_REASON_BT_FAILED = 44
++NM_DEVICE_STATE_REASON_LAST = 0xFFFF
+ 
+ NM_802_11_AP_FLAGS_NONE = 0x00000000
+ NM_802_11_AP_FLAGS_PRIVACY = 0x00000001
+@@ -120,24 +142,35 @@
+ NM_802_11_MODE_ADHOC = 1
+ NM_802_11_MODE_INFRA = 2
+ 
+-NM_802_11_DEVICE_CAP_NONE = 0x00000000
+-NM_802_11_DEVICE_CAP_CIPHER_WEP40 = 0x00000001
+-NM_802_11_DEVICE_CAP_CIPHER_WEP104 = 0x00000002
+-NM_802_11_DEVICE_CAP_CIPHER_TKIP = 0x00000004
+-NM_802_11_DEVICE_CAP_CIPHER_CCMP = 0x00000008
+-NM_802_11_DEVICE_CAP_WPA = 0x00000010
+-NM_802_11_DEVICE_CAP_RSN = 0x00000020
++NM_WIFI_DEVICE_CAP_NONE = 0x00000000
++NM_WIFI_DEVICE_CAP_CIPHER_WEP40 = 0x00000001
++NM_WIFI_DEVICE_CAP_CIPHER_WEP104 = 0x00000002
++NM_WIFI_DEVICE_CAP_CIPHER_TKIP = 0x00000004
++NM_WIFI_DEVICE_CAP_CIPHER_CCMP = 0x00000008
++NM_WIFI_DEVICE_CAP_WPA = 0x00000010
++NM_WIFI_DEVICE_CAP_RSN = 0x00000020
++
++NM_BT_CAPABILITY_NONE = 0x00000000
++NM_BT_CAPABILITY_DUN = 0x00000001
++NM_BT_CAPABILITY_NAP = 0x00000002
++
++NM_DEVICE_MODEM_CAPABILITY_NONE = 0x00000000
++NM_DEVICE_MODEM_CAPABILITY_POTS = 0x00000001
++NM_DEVICE_MODEM_CAPABILITY_CDMA_EVDO = 0x00000002
++NM_DEVICE_MODEM_CAPABILITY_GSM_UMTS = 0x00000004
++NM_DEVICE_MODEM_CAPABILITY_LTE = 0x00000008
+ 
+-SETTINGS_SERVICE = 'org.freedesktop.NetworkManagerUserSettings'
++SETTINGS_SERVICE = 'org.freedesktop.NetworkManager'
+ 
+ NM_SERVICE = 'org.freedesktop.NetworkManager'
+ NM_IFACE = 'org.freedesktop.NetworkManager'
+ NM_PATH = '/org/freedesktop/NetworkManager'
+ NM_DEVICE_IFACE = 'org.freedesktop.NetworkManager.Device'
+-NM_SETTINGS_PATH = '/org/freedesktop/NetworkManagerSettings'
+-NM_SETTINGS_IFACE = 'org.freedesktop.NetworkManagerSettings'
+-NM_CONNECTION_IFACE = 'org.freedesktop.NetworkManagerSettings.Connection'
+-NM_SECRETS_IFACE = 'org.freedesktop.NetworkManagerSettings.Connection.Secrets'
++NM_SETTINGS_PATH = '/org/freedesktop/NetworkManager/Settings'
++NM_SETTINGS_IFACE = 'org.freedesktop.NetworkManager.Settings'
++NM_GETSETTINGS_IFACE = 'org.freedesktop.NetworkManager.Settings.Connection.GetSettings'
++NM_CONNECTION_IFACE = 'org.freedesktop.NetworkManager.Settings.Connection'
++NM_SECRETS_IFACE = 'org.freedesktop.NetworkManager.AgentManager'
+ NM_ACCESSPOINT_IFACE = 'org.freedesktop.NetworkManager.AccessPoint'
+ NM_ACTIVE_CONN_IFACE = 'org.freedesktop.NetworkManager.Connection.Active'
+ 
+@@ -169,10 +202,10 @@
+                 _('The device is no longer managed.'),
+             NM_DEVICE_STATE_REASON_CONFIG_FAILED:
+                 _('The device could not be readied for configuration.'),
+-            NM_DEVICE_STATE_REASON_CONFIG_UNAVAILABLE:
++            NM_DEVICE_STATE_REASON_IP_CONFIG_UNAVAILABLE:
+                 _('IP configuration could not be reserved '
+                   '(no available address, timeout, etc).'),
+-            NM_DEVICE_STATE_REASON_CONFIG_EXPIRED:
++            NM_DEVICE_STATE_REASON_IP_CONFIG_EXPIRED:
+                 _('The IP configuration is no longer valid.'),
+             NM_DEVICE_STATE_REASON_NO_SECRETS:
+                 _('Secrets were required, but not provided.'),
+@@ -244,11 +277,48 @@
+             NM_DEVICE_STATE_REASON_USER_REQUESTED:
+                 _('A user or client requested the disconnection.'),
+             NM_DEVICE_STATE_REASON_CARRIER:
+-                _("The device's carrier/link changed.")}
++                _("The device's carrier/link changed."),
++            NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED:
++                _("The device's existing connection was assumed."),
++            NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE:
++                _("The supplicant is now available."),
++            NM_DEVICE_STATE_REASON_MODEM_NOT_FOUND:
++                _("The modem could not be found."),
++            NM_DEVICE_STATE_REASON_BT_FAILED:
++                _("The Bluetooth connection failed or timed out."),
++            NM_DEVICE_STATE_REASON_LAST:
++                _("Unused."),
++        }
+ 
+     return _nm_device_state_reason_description[reason]
+ 
+ 
++def get_nm_state_by_reason(reason):
++    global _nm_state_reason_description
++
++    if _nm_state_reason_description is None:
++        _nm_state_reason_description = {
++            NM_STATE_UNKNOWN:
++                _('networking state is unknown.'),
++            NM_STATE_ASLEEP:
++                _('networking is not enabled.'),
++            NM_STATE_DISCONNECTED:
++                _('there is no active network connection.'),
++            NM_STATE_DISCONNECTING:
++                _('network connections are being cleaned up.'),
++            NM_STATE_CONNECTING:
++                _('a network connection is being started.'),
++            NM_STATE_CONNECTED_LOCAL:
++                _('there is only local IPv4 and/or IPv6 connectivity.'),
++            NM_STATE_CONNECTED_SITE:
++                _('there is only site-wide IPv4 and/or IPv6 connectivity.'),
++            NM_STATE_CONNECTED_GLOBAL:
++                _('there is global IPv4 and/or IPv6 Internet connectivity.'),
++        }
++
++    return _nm_state_reason_description[reason]
++
++
+ def frequency_to_channel(frequency):
+     """Returns the channel matching a given radio channel frequency. If a
+     frequency is not in the dictionary channel 1 will be returned.
diff --git a/sugar.spec b/sugar.spec
index 2708153..623c476 100644
--- a/sugar.spec
+++ b/sugar.spec
@@ -3,11 +3,12 @@
 Summary: Constructionist learning platform
 Name: sugar
 Version: 0.92.1
-Release: 4%{?dist}
+Release: 5%{?dist}
 URL: http://sugarlabs.org/
 License: GPLv2+
 Group: User Interface/Desktops
 Source0: http://download.sugarlabs.org/sources/sucrose/glucose/%{name}/%{name}-%{version}.tar.bz2
+Patch0:  sugar-nm09-new.patch
 
 BuildRequires: gettext
 BuildRequires: GConf2-devel
@@ -62,6 +63,7 @@ multiple instances of sugar.
 
 %prep
 %setup -q
+%patch0 -p1 -b nm09
 
 %build
 %configure
@@ -142,6 +144,9 @@ fi
 %{_datadir}/icons/hicolor/scalable/apps/sugar-xo.svg
 
 %changelog
+* Tue May 24 2011 Peter Robinson <pbrobinson at gmail.com> - 0.92.1-5
+- Add patch for NM-0.9 (thanks to John Dulaney for his assistance)
+
 * Tue May 17 2011 Peter Robinson <pbrobinson at gmail.com> - 0.92.1-4
 - Drop previous patch, in wider testing it breaks more than it fixes
 


More information about the scm-commits mailing list