diff --git a/.gitignore b/.gitignore index 0a769bd..1155700 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/network-manager-applet-1.0.6.tar.xz +SOURCES/network-manager-applet-1.4.0.tar.xz diff --git a/.network-manager-applet.metadata b/.network-manager-applet.metadata index 3d3ce54..886975b 100644 --- a/.network-manager-applet.metadata +++ b/.network-manager-applet.metadata @@ -1 +1 @@ -f4678c36487e916a830f59c4bb3088f57ddb6e9d SOURCES/network-manager-applet-1.0.6.tar.xz +873f6b67a93bb9b0a3c656df9a6d591ac3445f5a SOURCES/network-manager-applet-1.4.0.tar.xz diff --git a/SOURCES/0001-Revert-applet-don-t-check-for-gnome-shell-bgo-707953.patch b/SOURCES/0001-Revert-applet-don-t-check-for-gnome-shell-bgo-707953.patch deleted file mode 100644 index 5426fa3..0000000 --- a/SOURCES/0001-Revert-applet-don-t-check-for-gnome-shell-bgo-707953.patch +++ /dev/null @@ -1,458 +0,0 @@ -From 04b92f38a2ebce2479670580857f722e9b3b3be4 Mon Sep 17 00:00:00 2001 -From: Dan Williams -Date: Tue, 25 Nov 2014 17:45:05 -0600 -Subject: [PATCH 1/2] Revert "applet: don't check for gnome shell (bgo - #707953)" - -This reverts commit 4473e6a48fcfda1d87d4a4bc9f5c0589235dcfe0. ---- - src/applet.c | 47 +++++++++- - src/applet.h | 4 + - src/shell-watcher.c | 241 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/shell-watcher.h | 56 ++++++++++++ - 4 files changed, 347 insertions(+), 1 deletion(-) - create mode 100644 src/shell-watcher.c - create mode 100644 src/shell-watcher.h - -diff --git a/src/applet.c b/src/applet.c -index f0536f8..f3f4344 100644 ---- a/src/applet.c -+++ b/src/applet.c -@@ -87,6 +87,7 @@ - #include "nm-wifi-dialog.h" - #include "applet-vpn-request.h" - #include "utils.h" -+#include "shell-watcher.h" - #include "nm-ui-utils.h" - #include "nm-glib-compat.h" - -@@ -3542,6 +3543,39 @@ register_agent (NMApplet *applet) - G_CALLBACK (applet_agent_cancel_secrets_cb), applet); - } - -+static void -+shell_version_changed_cb (NMShellWatcher *watcher, GParamSpec *pspec, gpointer user_data) -+{ -+ NMApplet *applet = user_data; -+ -+ if (nm_shell_watcher_version_at_least (watcher, 3, 0)) { -+ g_debug ("gnome-shell is running"); -+ -+ if (applet->agent) { -+ g_debug ("destroying secret agent"); -+ -+ g_signal_handlers_disconnect_by_func (applet->agent, -+ G_CALLBACK (applet_agent_get_secrets_cb), -+ applet); -+ g_signal_handlers_disconnect_by_func (applet->agent, -+ G_CALLBACK (applet_agent_cancel_secrets_cb), -+ applet); -+ nm_secret_agent_unregister (NM_SECRET_AGENT (applet->agent)); -+ g_clear_object (&applet->agent); -+ } -+ -+ /* We don't need the watcher any more */ -+ g_signal_handlers_disconnect_by_func (applet->shell_watcher, -+ G_CALLBACK (shell_version_changed_cb), -+ applet); -+ g_clear_object (&applet->shell_watcher); -+ } else if (!applet->agent) { -+ /* No shell */ -+ g_debug ("gnome-shell is not running, registering secret agent"); -+ register_agent (applet); -+ } -+} -+ - static gboolean - dbus_setup (NMApplet *applet, GError **error) - { -@@ -3694,7 +3728,15 @@ initable_init (GInitable *initable, GCancellable *cancellable, GError **error) - G_CALLBACK (applet_embedded_cb), NULL); - applet_embedded_cb (G_OBJECT (applet->status_icon), NULL, NULL); - -- register_agent (applet); -+ /* Watch GNOME Shell so we can unregister our applet agent if it appears */ -+ if (!shell_debug) { -+ applet->shell_watcher = nm_shell_watcher_new (); -+ g_signal_connect (applet->shell_watcher, -+ "notify::shell-version", -+ G_CALLBACK (shell_version_changed_cb), -+ applet); -+ } else -+ register_agent (applet); - - return TRUE; - } -@@ -3764,6 +3806,9 @@ static void finalize (GObject *object) - if (applet->session_bus) - dbus_g_connection_unref (applet->session_bus); - -+ if (applet->shell_watcher) -+ g_object_unref (applet->shell_watcher); -+ - G_OBJECT_CLASS (nma_parent_class)->finalize (object); - } - -diff --git a/src/applet.h b/src/applet.h -index 23632f7..cd5ac97 100644 ---- a/src/applet.h -+++ b/src/applet.h -@@ -44,6 +44,7 @@ - #include - #include - #include "applet-agent.h" -+#include "shell-watcher.h" - - #if WITH_MODEM_MANAGER_1 - #include -@@ -86,6 +87,9 @@ typedef struct - GMainLoop *loop; - DBusGConnection *session_bus; - -+ NMShellWatcher *shell_watcher; -+ guint agent_start_id; -+ - NMClient *nm_client; - NMRemoteSettings *settings; - AppletAgent *agent; -diff --git a/src/shell-watcher.c b/src/shell-watcher.c -new file mode 100644 -index 0000000..da62121 ---- /dev/null -+++ b/src/shell-watcher.c -@@ -0,0 +1,241 @@ -+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -+/* NetworkManager Applet -- allow user control over networking -+ * -+ * 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 -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program 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 General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License along -+ * with this program; if not, write to the Free Software Foundation, Inc., -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Copyright (C) 2012 Red Hat, Inc. -+ */ -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+ -+#include "shell-watcher.h" -+ -+G_DEFINE_TYPE (NMShellWatcher, nm_shell_watcher, G_TYPE_OBJECT) -+ -+struct NMShellWatcherPrivate { -+ GDBusProxy *shell_proxy; -+ guint signal_id; -+ -+ guint retry_timeout; -+ guint retries; -+ -+ guint shell_version; -+ gboolean shell_version_set; -+}; -+ -+enum { -+ PROP_0, -+ PROP_SHELL_VERSION, -+ LAST_PROP -+}; -+ -+static void create_gnome_shell_proxy (NMShellWatcher *watcher); -+ -+static gboolean -+retry_create_shell_proxy (gpointer user_data) -+{ -+ NMShellWatcher *watcher = user_data; -+ NMShellWatcherPrivate *priv = watcher->priv; -+ -+ priv->retry_timeout = 0; -+ create_gnome_shell_proxy (watcher); -+ return FALSE; -+} -+ -+static void -+try_update_version (NMShellWatcher *watcher) -+{ -+ NMShellWatcherPrivate *priv = watcher->priv; -+ GVariant *v; -+ char *version, *p; -+ -+ v = g_dbus_proxy_get_cached_property (priv->shell_proxy, "ShellVersion"); -+ if (!v) { -+ /* The shell has claimed the name, but not yet registered its interfaces... -+ * (https://bugzilla.gnome.org/show_bug.cgi?id=673182). There's no way -+ * to make GDBusProxy re-read the properties at this point, so we -+ * have to destroy this proxy and try again. -+ */ -+ if (priv->signal_id) { -+ g_signal_handler_disconnect (priv->shell_proxy, priv->signal_id); -+ priv->signal_id = 0; -+ } -+ g_object_unref (priv->shell_proxy); -+ priv->shell_proxy = NULL; -+ -+ priv->retry_timeout = g_timeout_add_seconds (2, retry_create_shell_proxy, watcher); -+ return; -+ } -+ -+ g_warn_if_fail (g_variant_is_of_type (v, G_VARIANT_TYPE_STRING)); -+ version = g_variant_dup_string (v, NULL); -+ if (version) { -+ guint major, minor; -+ -+ major = strtoul (version, &p, 10); -+ if (*p == '.') -+ minor = strtoul (p + 1, NULL, 10); -+ else -+ minor = 0; -+ -+ g_warn_if_fail (major < 256); -+ g_warn_if_fail (minor < 256); -+ -+ priv->shell_version = (major << 8) | minor; -+ priv->shell_version_set = TRUE; -+ g_object_notify (G_OBJECT (watcher), "shell-version"); -+ } -+ -+ g_variant_unref (v); -+} -+ -+static void -+name_owner_changed_cb (GDBusProxy *proxy, GParamSpec *pspec, gpointer user_data) -+{ -+ NMShellWatcher *watcher = user_data; -+ NMShellWatcherPrivate *priv = watcher->priv; -+ char *owner; -+ -+ owner = g_dbus_proxy_get_name_owner (proxy); -+ if (owner) { -+ try_update_version (watcher); -+ g_free (owner); -+ } else if (priv->shell_version || !priv->shell_version_set) { -+ priv->shell_version = 0; -+ priv->shell_version_set = TRUE; -+ g_object_notify (G_OBJECT (watcher), "shell-version"); -+ } -+} -+ -+static void -+got_shell_proxy (GObject *source, GAsyncResult *result, gpointer user_data) -+{ -+ NMShellWatcher *watcher = user_data; -+ NMShellWatcherPrivate *priv = watcher->priv; -+ GError *error = NULL; -+ -+ priv->shell_proxy = g_dbus_proxy_new_for_bus_finish (result, &error); -+ if (!priv->shell_proxy) { -+ g_warning ("Could not create GDBusProxy for org.gnome.Shell: %s", error->message); -+ g_error_free (error); -+ return; -+ } -+ -+ priv->signal_id = g_signal_connect (priv->shell_proxy, -+ "notify::g-name-owner", -+ G_CALLBACK (name_owner_changed_cb), -+ watcher); -+ -+ name_owner_changed_cb (priv->shell_proxy, NULL, watcher); -+ g_object_unref (watcher); -+} -+ -+static void -+create_gnome_shell_proxy (NMShellWatcher *watcher) -+{ -+ NMShellWatcherPrivate *priv = watcher->priv; -+ -+ if (priv->retries++ == 5) { -+ g_warning ("Could not find ShellVersion property on org.gnome.Shell after 5 tries"); -+ return; -+ } -+ -+ g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION, -+ G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, -+ NULL, -+ "org.gnome.Shell", -+ "/org/gnome/Shell", -+ "org.gnome.Shell", -+ NULL, -+ got_shell_proxy, -+ g_object_ref (watcher)); -+} -+ -+static void -+nm_shell_watcher_init (NMShellWatcher *watcher) -+{ -+ watcher->priv = G_TYPE_INSTANCE_GET_PRIVATE (watcher, NM_TYPE_SHELL_WATCHER, -+ NMShellWatcherPrivate); -+ create_gnome_shell_proxy (watcher); -+} -+ -+static void -+get_property (GObject *object, guint prop_id, -+ GValue *value, GParamSpec *pspec) -+{ -+ NMShellWatcher *watcher = NM_SHELL_WATCHER (object); -+ -+ switch (prop_id) { -+ case PROP_SHELL_VERSION: -+ g_value_set_uint (value, watcher->priv->shell_version); -+ break; -+ default: -+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); -+ break; -+ } -+} -+ -+static void -+finalize (GObject *object) -+{ -+ NMShellWatcher *watcher = NM_SHELL_WATCHER (object); -+ NMShellWatcherPrivate *priv = watcher->priv; -+ -+ if (priv->retry_timeout) -+ g_source_remove (priv->retry_timeout); -+ if (priv->signal_id) -+ g_signal_handler_disconnect (priv->shell_proxy, priv->signal_id); -+ if (priv->shell_proxy) -+ g_object_unref (priv->shell_proxy); -+ -+ G_OBJECT_CLASS (nm_shell_watcher_parent_class)->finalize (object); -+} -+ -+static void -+nm_shell_watcher_class_init (NMShellWatcherClass *klass) -+{ -+ GObjectClass *oclass = G_OBJECT_CLASS (klass); -+ -+ g_type_class_add_private (klass, sizeof (NMShellWatcherPrivate)); -+ -+ oclass->get_property = get_property; -+ oclass->finalize = finalize; -+ -+ g_object_class_install_property (oclass, PROP_SHELL_VERSION, -+ g_param_spec_uint ("shell-version", -+ "Shell version", -+ "Running GNOME Shell version, eg, 0x0304", -+ 0, 0xFFFF, 0, -+ G_PARAM_READABLE | -+ G_PARAM_STATIC_STRINGS)); -+} -+ -+NMShellWatcher * -+nm_shell_watcher_new (void) -+{ -+ return g_object_new (NM_TYPE_SHELL_WATCHER, NULL); -+} -+ -+gboolean -+nm_shell_watcher_version_at_least (NMShellWatcher *watcher, guint major, guint minor) -+{ -+ guint version = (major << 8) | minor; -+ -+ return watcher->priv->shell_version >= version; -+} -diff --git a/src/shell-watcher.h b/src/shell-watcher.h -new file mode 100644 -index 0000000..a6065f8 ---- /dev/null -+++ b/src/shell-watcher.h -@@ -0,0 +1,56 @@ -+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -+/* NetworkManager Applet -- allow user control over networking -+ * -+ * 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 -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program 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 General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License along -+ * with this program; if not, write to the Free Software Foundation, Inc., -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ * -+ * Copyright (C) 2012 Red Hat, Inc. -+ */ -+ -+#ifndef SHELL_WATCHER_H -+#define SHELL_WATCHER_H -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+ -+#define NM_TYPE_SHELL_WATCHER (nm_shell_watcher_get_type()) -+#define NM_SHELL_WATCHER(object) (G_TYPE_CHECK_INSTANCE_CAST((object), NM_TYPE_SHELL_WATCHER, NMShellWatcher)) -+#define NM_SHELL_WATCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), NM_TYPE_SHELL_WATCHER, NMShellWatcherClass)) -+#define NM_IS_SHELL_WATCHER(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), NM_TYPE_SHELL_WATCHER)) -+#define NM_IS_SHELL_WATCHER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), NM_TYPE_SHELL_WATCHER)) -+#define NM_SHELL_WATCHER_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS((object), NM_TYPE_SHELL_WATCHER, NMShellWatcherClass)) -+ -+typedef struct NMShellWatcherPrivate NMShellWatcherPrivate; -+ -+typedef struct { -+ GObject parent_instance; -+ -+ NMShellWatcherPrivate *priv; -+} NMShellWatcher; -+ -+typedef struct { -+ GObjectClass parent_class; -+} NMShellWatcherClass; -+ -+GType nm_shell_watcher_get_type (void); -+ -+NMShellWatcher *nm_shell_watcher_new (void); -+ -+gboolean nm_shell_watcher_version_at_least (NMShellWatcher *watcher, -+ guint major, guint minor); -+ -+#endif --- -1.9.3 - -From bfc24e17555126bb1a9783c2d3c2771bb886ed58 Mon Sep 17 00:00:00 2001 -From: Dan Williams -Date: Tue, 25 Nov 2014 17:45:11 -0600 -Subject: [PATCH 2/2] Revert "build: fix build after "applet: don't check for - gnome shell (bgo #707953)"" - -This reverts commit 2014927869cb92be2c9e360f1a6a4b118b866403. ---- - src/Makefile.am | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/Makefile.am b/src/Makefile.am -index 0e85dd5..d8c1238 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -69,7 +69,9 @@ nm_applet_SOURCES = \ - applet-device-bridge.c \ - applet-device-infiniband.h \ - applet-device-infiniband.c \ -- fallback-icon.h -+ fallback-icon.h \ -+ shell-watcher.h \ -+ shell-watcher.c - - nm_applet_LDADD = \ - -lm \ --- -1.9.3 - diff --git a/SOURCES/applet-ignore-deprecated.patch b/SOURCES/applet-ignore-deprecated.patch deleted file mode 100644 index 213b2e9..0000000 --- a/SOURCES/applet-ignore-deprecated.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up network-manager-applet-0.9.5.96/configure.ac.foo network-manager-applet-0.9.5.96/configure.ac ---- network-manager-applet-0.9.5.96/configure.ac.foo 2011-11-10 15:10:45.268107655 -0600 -+++ network-manager-applet-0.9.5.96/configure.ac 2011-11-10 15:10:51.902024720 -0600 -@@ -179,8 +179,6 @@ dnl - dnl Compiler flags - dnl - NM_COMPILER_WARNINGS --# Use --enable-maintainer-mode to disabled deprecated symbols --GNOME_MAINTAINER_MODE_DEFINES - - - AC_CONFIG_FILES([ diff --git a/SOURCES/nm-connection-editor-team.patch b/SOURCES/nm-connection-editor-team.patch new file mode 100644 index 0000000..d594116 --- /dev/null +++ b/SOURCES/nm-connection-editor-team.patch @@ -0,0 +1,340 @@ +From 1620b0dfa52d3b9f59fc758c3ed18cb48527d4b8 Mon Sep 17 00:00:00 2001 +From: Thomas Haller +Date: Wed, 21 Sep 2016 14:13:31 +0200 +Subject: [PATCH 1/2] c-e: don't use GtkTextView.monospace property + +GtkTextView.monospace is gtk3 >= 3.16, we still require only 3.4 for +nm-applet. + +It might be simple to reimplement: +https://git.gnome.org/browse/gtk+/commit/?id=0004e667abdab749b991d320ed4f735778385766 + +For now, just revert the use of the property. + +Fixes: 65c662d08b34d486d4d567424ccf623cda72389e +(cherry picked from commit d82c1675430081c7bc5036ca8819def1a8fd9015) +--- + src/connection-editor/ce-page-team-port.ui | 1 - + src/connection-editor/ce-page-team.ui | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/src/connection-editor/ce-page-team-port.ui b/src/connection-editor/ce-page-team-port.ui +index 1f32fcb..baea45c 100644 +--- a/src/connection-editor/ce-page-team-port.ui ++++ b/src/connection-editor/ce-page-team-port.ui +@@ -823,7 +823,6 @@ + True + True + True +- True + + + +diff --git a/src/connection-editor/ce-page-team.ui b/src/connection-editor/ce-page-team.ui +index 8b44448..bf2a978 100644 +--- a/src/connection-editor/ce-page-team.ui ++++ b/src/connection-editor/ce-page-team.ui +@@ -1512,7 +1512,6 @@ + True + True + True +- True + + + +-- +2.7.4 + +From 893b69b127a0d1cad5bfa24b258657e56b012496 Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Thu, 22 Sep 2016 13:43:32 +0200 +Subject: [PATCH 2/2] editor/team: work around broken strict matching of + optional keys in old jansson + +Make sure we never pass a json with (optionL) keys we don't match against when +our jansson version is too old. + +(cherry picked from commit 2329282b961fe47cf04132131629a7d1bd2d7411) +--- + src/connection-editor/page-team-port.c | 79 ++++++++++++++++++++- + src/connection-editor/page-team.c | 124 ++++++++++++++++++++++++++++++++- + 2 files changed, 201 insertions(+), 2 deletions(-) + +diff --git a/src/connection-editor/page-team-port.c b/src/connection-editor/page-team-port.c +index a89d4ce..c297734 100644 +--- a/src/connection-editor/page-team-port.c ++++ b/src/connection-editor/page-team-port.c +@@ -308,6 +308,63 @@ link_watcher_changed (GtkComboBox *combo, gpointer user_data) + + #if WITH_JANSSON + ++#if JANSSON_VERSION_HEX >= 0x020700 ++static inline gboolean ++check_unknown_keys (json_t *json, GError **error) ++{ ++ return TRUE; ++} ++#else ++static inline gboolean ++check_unknown_keys (json_t *json, GError **error) ++{ ++ const char *key1, *key2; ++ json_t *value1, *value2; ++ ++ if (!json_is_object (json)) ++ return TRUE; ++ ++ json_object_foreach(json, key1, value1) { ++ if (!json_is_object (value1)) ++ continue; ++ ++ if ( strcmp (key1, "queue_id") == 0 ++ || strcmp (key1, "prio") == 0 ++ || strcmp (key1, "sticky") == 0 ++ || strcmp (key1, "lacp_prio") == 0 ++ || strcmp (key1, "lacp_key") == 0) { ++ continue; ++ } else if (strcmp (key1, "link_watch") == 0) { ++ json_object_foreach(value1, key2, value2) { ++ if ( strcmp (key2, "name") == 0 ++ || strcmp (key2, "delay_up") == 0 ++ || strcmp (key2, "delay_down") == 0 ++ || strcmp (key2, "interval") == 0 ++ || strcmp (key2, "init_wait") == 0 ++ || strcmp (key2, "missed_max") == 0 ++ || strcmp (key2, "source_host") == 0 ++ || strcmp (key2, "target_host") == 0 ++ || strcmp (key2, "validate_active") == 0 ++ || strcmp (key2, "validate_inactive") == 0 ++ || strcmp (key2, "send_always") == 0) { ++ continue; ++ } else { ++ g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, ++ "Unrecognized key: %s.%s", key1, key2); ++ return FALSE; ++ } ++ } ++ } else { ++ g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, ++ "Unrecognized key: %s", key1); ++ return FALSE; ++ } ++ } ++ ++ return TRUE; ++} ++#endif ++ + static gboolean + json_to_dialog (CEPageTeamPort *self) + { +@@ -356,10 +413,17 @@ json_to_dialog (CEPageTeamPort *self) + success = FALSE; + } + ++ if (!check_unknown_keys (json, &error)) { ++ g_message ("Failed to unpack JSON: %s", error->message); ++ g_clear_error (&error); ++ success = FALSE; ++ } ++ + /* For simplicity, we proceed with json==NULL. The attempt to + * unpack will produce an error which we'll ignore. */ + g_free (json_config); + ret = json_unpack_ex (json, &json_error, 0, ++#if JANSSON_VERSION_HEX >= 0x020700 + "{" + " s?:i," + " s?:i," +@@ -368,6 +432,19 @@ json_to_dialog (CEPageTeamPort *self) + " s?:i," + " s?:{s?:s, s?:i, s?:i, s?:i, s?:i, s?:i, s?:s, s?:s, s?:b, s?:b, s?:b !}" + "!}", ++#else ++ /* Old jansson versions (before 2.7's 7a0b9af66) break when "?" is used ++ * in conjunction with "!". The above call to check_unknown_keys() ensures ++ * we'll not be left with unpacked values. */ ++ "{" ++ " s?:i," ++ " s?:i," ++ " s?:b," ++ " s?:i," ++ " s?:i," ++ " s?:{s?:s, s?:i, s?:i, s?:i, s?:i, s?:i, s?:s, s?:s, s?:b, s?:b, s?:b}" ++ "}", ++#endif + "queue_id", &queue_id, + "prio", &port_prio, + "sticky", &port_sticky, +@@ -387,7 +464,7 @@ json_to_dialog (CEPageTeamPort *self) + "send_always", &link_watch_send_always); + + if (success == TRUE && ret == -1) { +- g_message ("Failed to parse JSON: %s on line %d", json_error.text, json_error.line); ++ g_message ("Failed to unpack JSON: %s on line %d", json_error.text, json_error.line); + success = FALSE; + } + +diff --git a/src/connection-editor/page-team.c b/src/connection-editor/page-team.c +index a8015d3..a03ab79 100644 +--- a/src/connection-editor/page-team.c ++++ b/src/connection-editor/page-team.c +@@ -498,6 +498,109 @@ link_watcher_changed (GtkComboBox *combo, gpointer user_data) + + #if WITH_JANSSON + ++#if JANSSON_VERSION_HEX >= 0x020700 ++static inline gboolean ++check_unknown_keys (json_t *json, GError **error) ++{ ++ return TRUE; ++} ++#else ++static inline gboolean ++check_unknown_keys (json_t *json, GError **error) ++{ ++ const char *key1, *key2, *key3; ++ json_t *value1, *value2, *value3; ++ ++ if (!json_is_object (json)) ++ return TRUE; ++ ++ json_object_foreach(json, key1, value1) { ++ if (!json_is_object (value1)) ++ continue; ++ ++ if (strcmp (key1, "hwaddr") == 0) ++ continue; ++ else if (strcmp (key1, "notify_peers") == 0) { ++ json_object_foreach(value1, key2, value2) { ++ if ( strcmp (key2, "interval") == 0 ++ || strcmp (key2, "count") == 0) { ++ continue; ++ } else { ++ g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, ++ "Unrecognized key: %s.%s", key1, key2); ++ return FALSE; ++ } ++ } ++ } else if (strcmp (key1, "mcast_rejoin") == 0) { ++ json_object_foreach(value1, key2, value2) { ++ if ( strcmp (key2, "count") == 0 ++ || strcmp (key2, "interval") == 0) { ++ continue; ++ } else { ++ g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, ++ "Unrecognized key: %s.%s", key1, key2); ++ return FALSE; ++ } ++ } ++ } else if (strcmp (key1, "runner") == 0) { ++ json_object_foreach(value1, key2, value2) { ++ if ( strcmp (key2, "name") == 0 ++ || strcmp (key2, "hwaddr_policy") == 0 ++ || strcmp (key2, "tx_hash") == 0 ++ || strcmp (key2, "active") == 0 ++ || strcmp (key2, "fast_rate") == 0 ++ || strcmp (key2, "sys_prio") == 0 ++ || strcmp (key2, "min_ports") == 0 ++ || strcmp (key2, "agg_select_policy") == 0) { ++ continue; ++ } else if (strcmp (key2, "tx_balancer") == 0) { ++ json_object_foreach(value2, key3, value3) { ++ if ( strcmp (key3, "name") == 0 ++ || strcmp (key3, "balancing_interval") == 0) { ++ continue; ++ } else { ++ g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, ++ "Unrecognized key: %s.%s.%s", key1, key2, key3); ++ return FALSE; ++ } ++ } ++ } else { ++ g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, ++ "Unrecognized key: %s.%s", key1, key2); ++ return FALSE; ++ } ++ } ++ } else if (strcmp (key1, "link_watch") == 0) { ++ json_object_foreach(value1, key2, value2) { ++ if ( strcmp (key2, "name") == 0 ++ || strcmp (key2, "delay_up") == 0 ++ || strcmp (key2, "delay_down") == 0 ++ || strcmp (key2, "interval") == 0 ++ || strcmp (key2, "init_wait") == 0 ++ || strcmp (key2, "missed_max") == 0 ++ || strcmp (key2, "source_host") == 0 ++ || strcmp (key2, "target_host") == 0 ++ || strcmp (key2, "validate_active") == 0 ++ || strcmp (key2, "validate_inactive") == 0 ++ || strcmp (key2, "send_always") == 0) { ++ continue; ++ } else { ++ g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, ++ "Unrecognized key: %s.%s", key1, key2); ++ return FALSE; ++ } ++ } ++ } else { ++ g_set_error (error, NMA_ERROR, NMA_ERROR_GENERIC, ++ "Unrecognized key: %s", key1); ++ return FALSE; ++ } ++ } ++ ++ return TRUE; ++} ++#endif ++ + static gboolean + json_to_dialog (CEPageTeam *self) + { +@@ -557,10 +660,17 @@ json_to_dialog (CEPageTeam *self) + success = FALSE; + } + ++ if (!check_unknown_keys (json, &error)) { ++ g_message ("Failed to unpack JSON: %s", error->message); ++ g_clear_error (&error); ++ success = FALSE; ++ } ++ + /* For simplicity, we proceed with json==NULL. The attempt to + * unpack will produce an error which we'll ignore. */ + g_free (json_config); + ret = json_unpack_ex (json, &json_error, 0, ++#if JANSSON_VERSION_HEX >= 0x020700 + "{" + " s?:s," + " s?:{s?:i, s?:i !}," +@@ -568,6 +678,18 @@ json_to_dialog (CEPageTeam *self) + " s?:{s?:s, s?:s, s?:o, s?:{s?:s, s?:i !}, s?:b, s?:b, s?:i, s?:i, s?:s !}," + " s?:{s?:s, s?:i, s?:i, s?:i, s?:i, s?:i, s?:s, s?:s, s?:b, s?:b, s?:b !}" + "!}", ++#else ++ /* Old jansson versions (before 2.7's 7a0b9af66) break when "?" is used ++ * in conjunction with "!". The above call to check_unknown_keys() ensures ++ * we'll not be left with unpacked values. */ ++ "{" ++ " s?:s," ++ " s?:{s?:i, s?:i}," ++ " s?:{s?:i, s?:i}," ++ " s?:{s?:s, s?:s, s?:o, s?:{s?:s, s?:i !}, s?:b, s?:b, s?:i, s?:i, s?:s}," ++ " s?:{s?:s, s?:i, s?:i, s?:i, s?:i, s?:i, s?:s, s?:s, s?:b, s?:b, s?:b}" ++ "}", ++#endif + "hwaddr", &hwaddr, + "notify_peers", + "interval", ¬ify_peers_interval, +@@ -601,7 +723,7 @@ json_to_dialog (CEPageTeam *self) + "send_always", &link_watch_send_always); + + if (success == TRUE && ret == -1) { +- g_message ("Failed to parse JSON: %s on line %d", json_error.text, json_error.line); ++ g_message ("Failed to unpack JSON: %s on line %d", json_error.text, json_error.line); + success = FALSE; + } + +-- +2.7.4 + diff --git a/SOURCES/rh1267326-applet-password-crash.patch b/SOURCES/rh1267326-applet-password-crash.patch deleted file mode 100644 index b27911e..0000000 --- a/SOURCES/rh1267326-applet-password-crash.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 6ee38dd8fb792a944ea597c9eba21f382d9c4836 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= -Date: Mon, 31 Aug 2015 15:42:13 +0200 -Subject: [PATCH] libnm-gtk: fix a possible crash on widgets destroy (rh - #1254043) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -https://bugzilla.redhat.com/show_bug.cgi?id=1254043 - -(cherry picked from commit 0d0e84316f5db87b4909f09060c596dfe48a69e7) -Signed-off-by: Jiří Klimeš ---- - src/libnm-gtk/nm-ui-utils.c | 15 ++++++--------- - 1 file changed, 6 insertions(+), 9 deletions(-) - -diff --git a/src/libnm-gtk/nm-ui-utils.c b/src/libnm-gtk/nm-ui-utils.c -index 9119deb..138bbea 100644 ---- a/src/libnm-gtk/nm-ui-utils.c -+++ b/src/libnm-gtk/nm-ui-utils.c -@@ -730,13 +730,13 @@ typedef struct { - } PopupMenuItemInfo; - - static void --popup_menu_item_info_destroy (gpointer data) -+popup_menu_item_info_destroy (gpointer data, GClosure *closure) - { - PopupMenuItemInfo *info = (PopupMenuItemInfo *) data; - - if (info->setting) - g_object_unref (info->setting); -- g_slice_free (PopupMenuItemInfo, data); -+ g_slice_free (PopupMenuItemInfo, info); - } - - static void -@@ -824,11 +824,8 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, - if (with_not_required) - gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), item[3]); - -- if (setting) -- g_object_ref (setting); -- - info = g_slice_new0 (PopupMenuItemInfo); -- info->setting = setting; -+ info->setting = setting ? g_object_ref (setting) : NULL; - info->password_flags_name = password_flags_name; - info->item_number = ITEM_STORAGE_USER; - info->passwd_entry = passwd_entry; -@@ -838,7 +835,7 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, - (GClosureNotify) popup_menu_item_info_destroy, 0); - - info = g_slice_new0 (PopupMenuItemInfo); -- info->setting = setting; -+ info->setting = setting ? g_object_ref (setting) : NULL; - info->password_flags_name = password_flags_name; - info->item_number = ITEM_STORAGE_SYSTEM; - info->passwd_entry = passwd_entry; -@@ -848,7 +845,7 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, - (GClosureNotify) popup_menu_item_info_destroy, 0); - - info = g_slice_new0 (PopupMenuItemInfo); -- info->setting = setting; -+ info->setting = setting ? g_object_ref (setting) : NULL; - info->password_flags_name = password_flags_name; - info->item_number = ITEM_STORAGE_ASK; - info->passwd_entry = passwd_entry; -@@ -860,7 +857,7 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, - - if (with_not_required) { - info = g_slice_new0 (PopupMenuItemInfo); -- info->setting = setting; -+ info->setting = setting ? g_object_ref (setting) : NULL; - info->password_flags_name = password_flags_name; - info->item_number = ITEM_STORAGE_UNUSED; - info->passwd_entry = passwd_entry; --- -2.1.0 - -From d5e25cfd45e485de9be23b5c40196462dd770e73 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= -Date: Fri, 11 Sep 2015 23:09:44 +0200 -Subject: [PATCH] wireless-security: fix an initial sensitivity of "Show - password" checkbox -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It also fixes the strange error when clicking "Cancel" in the editor: -(nm-connection-editor:13074): Gtk-CRITICAL **: gtk_event_controller_reset: assertion 'GTK_IS_EVENT_CONTROLLER (controller)' failed - -12773 gtk_event_controller_reset (data->controller); -(gdb) p data -$121 = (EventControllerData *) 0x1448c80 -(gdb) p *data -$122 = {controller = 0x0, evmask_notify_id = 22028, grab_notify_id = 22029, sequence_state_changed_id = 22030} - -It was invoked by -Breakpoint 1, destroy (parent=0x103c600) at eap-method-ttls.c:46 -48 if (method->size_group) -eap_method_unref (method=0x103c600) at eap-method.c:196 -199 g_object_unref (method->ui_widget); - -(cherry picked from commit 9aa77ea2ca2b0699f8a86e5c7c2a5c92a7256f48) -Signed-off-by: Jiří Klimeš ---- - src/wireless-security/eap-method-simple.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/wireless-security/eap-method-simple.c b/src/wireless-security/eap-method-simple.c -index 557bc74..bffe179 100644 ---- a/src/wireless-security/eap-method-simple.c -+++ b/src/wireless-security/eap-method-simple.c -@@ -235,6 +235,7 @@ set_userpass_ui (EAPMethodSimple *method) - gtk_entry_set_text (method->password_entry, ""); - - gtk_toggle_button_set_active (method->show_password, method->ws_parent->show_password); -+ password_storage_changed (NULL, NULL, method); - } - - static void --- -2.1.0 - diff --git a/SOURCES/rh1267330-password-storage-icons-tooltips.patch b/SOURCES/rh1267330-password-storage-icons-tooltips.patch deleted file mode 100644 index b34c42b..0000000 --- a/SOURCES/rh1267330-password-storage-icons-tooltips.patch +++ /dev/null @@ -1,109 +0,0 @@ -From a927e31d01361fe710908cf43f405b4a1899d827 Mon Sep 17 00:00:00 2001 -From: Thomas Haller -Date: Tue, 8 Sep 2015 20:39:26 +0200 -Subject: [PATCH] libnma: fix wrong mnemonics in tooltips for password entries -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The mnemonics of radio buttons *inside* the pop-up menu don't work -with respect to the whole window. They only work, if you already -opened the pop-up menu, and then press the mnemonic key. -But since you cannot open the pop-up menu with a shortcut, -this becomes moot and the user has to click anyway. - -But more importantly, we are using the same string as tooltip -for the icon, which wrongly showed the underscore of the mnemonic. -Fix that by just removing the the mnemonics. - -https://bugzilla.gnome.org/show_bug.cgi?id=754726 - -Fixes: 50b9650cc205a84dfe7082eb92e95ea2aaf554e8 -(cherry picked from commit d888f571e5de9570c62b8ec557d8219e64ec45ba) -Signed-off-by: Jiří Klimeš ---- - src/libnm-gtk/nm-ui-utils.c | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/src/libnm-gtk/nm-ui-utils.c b/src/libnm-gtk/nm-ui-utils.c -index 138bbea..2e8c191 100644 ---- a/src/libnm-gtk/nm-ui-utils.c -+++ b/src/libnm-gtk/nm-ui-utils.c -@@ -617,10 +617,10 @@ static const char *icon_name_table[ITEM_STORAGE_MAX + 1] = { - [ITEM_STORAGE_UNUSED] = "edit-clear", - }; - static const char *icon_desc_table[ITEM_STORAGE_MAX + 1] = { -- [ITEM_STORAGE_USER] = N_("Store the password only for this _user"), -- [ITEM_STORAGE_SYSTEM] = N_("Store the password for _all users"), -- [ITEM_STORAGE_ASK] = N_("As_k for this password every time"), -- [ITEM_STORAGE_UNUSED] = N_("The password is _not required"), -+ [ITEM_STORAGE_USER] = N_("Store the password only for this user"), -+ [ITEM_STORAGE_SYSTEM] = N_("Store the password for all users"), -+ [ITEM_STORAGE_ASK] = N_("Ask for this password every time"), -+ [ITEM_STORAGE_UNUSED] = N_("The password is not required"), - }; - - static void -@@ -811,12 +811,12 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, - g_object_set_data (G_OBJECT (popup_menu), PASSWORD_STORAGE_MENU_TAG, GUINT_TO_POINTER (TRUE)); - g_object_set_data (G_OBJECT (popup_menu), MENU_WITH_NOT_REQUIRED_TAG, GUINT_TO_POINTER (with_not_required)); - group = NULL; -- item[0] = gtk_radio_menu_item_new_with_mnemonic (group, icon_desc_table[0]); -+ item[0] = gtk_radio_menu_item_new_with_label (group, icon_desc_table[0]); - group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item[0])); -- item[1] = gtk_radio_menu_item_new_with_mnemonic (group, icon_desc_table[1]); -- item[2] = gtk_radio_menu_item_new_with_mnemonic (group, icon_desc_table[2]); -+ item[1] = gtk_radio_menu_item_new_with_label (group, icon_desc_table[1]); -+ item[2] = gtk_radio_menu_item_new_with_label (group, icon_desc_table[2]); - if (with_not_required) -- item[3] = gtk_radio_menu_item_new_with_mnemonic (group, icon_desc_table[3]); -+ item[3] = gtk_radio_menu_item_new_with_label (group, icon_desc_table[3]); - - gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), item[0]); - gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), item[1]); --- -2.1.0 - -From 77a97f52da18e8edc3515fe3a769ef81c887baf2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= -Date: Fri, 11 Sep 2015 13:23:07 +0200 -Subject: [PATCH] libnma/libnm-gtk: use symbolic icons for password store menu - (bgo #754726) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Gnome prefers using symbolic icons to have uniform look and feel. - -https://github.com/GNOME/gnome-icon-theme-symbolic - -https://bugzilla.gnome.org/show_bug.cgi?id=754726 - -(cherry picked from commit acc53bdf55beef61ff8236d33515066dde715e82) -Signed-off-by: Jiří Klimeš ---- - src/libnm-gtk/nm-ui-utils.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/libnm-gtk/nm-ui-utils.c b/src/libnm-gtk/nm-ui-utils.c -index 90b3b4c..08bd32a 100644 ---- a/src/libnm-gtk/nm-ui-utils.c -+++ b/src/libnm-gtk/nm-ui-utils.c -@@ -611,10 +611,10 @@ typedef enum { - } MenuItem; - - static const char *icon_name_table[ITEM_STORAGE_MAX + 1] = { -- [ITEM_STORAGE_USER] = "document-save", -- [ITEM_STORAGE_SYSTEM] = "document-save-as", -- [ITEM_STORAGE_ASK] = "dialog-question", -- [ITEM_STORAGE_UNUSED] = "edit-clear", -+ [ITEM_STORAGE_USER] = "user-info-symbolic", -+ [ITEM_STORAGE_SYSTEM] = "system-users-symbolic", -+ [ITEM_STORAGE_ASK] = "dialog-question-symbolic", -+ [ITEM_STORAGE_UNUSED] = "edit-clear-all-symbolic", - }; - static const char *icon_desc_table[ITEM_STORAGE_MAX + 1] = { - [ITEM_STORAGE_USER] = N_("Store the password only for this user"), --- -2.1.0 - diff --git a/SPECS/network-manager-applet.spec b/SPECS/network-manager-applet.spec index a8f635e..35dfcc7 100644 --- a/SPECS/network-manager-applet.spec +++ b/SPECS/network-manager-applet.spec @@ -1,45 +1,33 @@ -%define gtk3_version 3.0.1 -%define glib2_version 2.32.0 -%define dbus_version 1.4 -%define dbus_glib_version 0.100 -%define nm_version 1:1.0.0 -%define obsoletes_ver 1:0.9.7 - -%define snapshot %{nil} -%define git_sha %{nil} -%define realversion 1.0.6 +%global gtk3_version 3.0.1 +%global glib2_version 2.32.0 +%global nm_version 1:1.1.0 +%global obsoletes_ver 1:0.9.7 Name: network-manager-applet Summary: A network control and status applet for NetworkManager -Version: %{realversion} -Release: 2%{snapshot}%{git_sha}%{?dist} +Version: 1.4.0 +Release: 2%{?dist} Group: Applications/System License: GPLv2+ URL: http://www.gnome.org/projects/NetworkManager/ Obsoletes: NetworkManager-gnome < %{obsoletes_ver} -Source: https://download.gnome.org/sources/network-manager-applet/1.0/%{name}-%{realversion}%{snapshot}%{git_sha}.tar.xz +Source: https://download.gnome.org/sources/network-manager-applet/1.4/%{name}-%{version}.tar.xz Patch0: nm-applet-no-notifications.patch Patch1: nm-applet-wifi-dialog-ui-fixes.patch -Patch2: applet-ignore-deprecated.patch -Patch3: 0001-Revert-applet-don-t-check-for-gnome-shell-bgo-707953.patch -Patch4: rh1267326-applet-password-crash.patch -Patch5: rh1267330-password-storage-icons-tooltips.patch +Patch2: nm-connection-editor-team.patch Requires: NetworkManager >= %{nm_version} Requires: NetworkManager-glib >= %{nm_version} -Requires: libnm-gtk = %{version}-%{release} -Requires: dbus >= 1.4 -Requires: dbus-glib >= 0.100 +Requires: libnma%{?_isa} = %{version}-%{release} Requires: libnotify >= 0.4.3 Requires: gnome-icon-theme Requires: nm-connection-editor = %{version}-%{release} BuildRequires: NetworkManager-devel >= %{nm_version} BuildRequires: NetworkManager-glib-devel >= %{nm_version} +BuildRequires: NetworkManager-libnm-devel >= %{nm_version} BuildRequires: ModemManager-glib-devel >= 1.0 -BuildRequires: dbus-devel >= %{dbus_version} -BuildRequires: dbus-glib-devel >= %{dbus_glib_version} BuildRequires: glib2-devel >= %{glib2_version} BuildRequires: gtk3-devel >= %{gtk3_version} BuildRequires: libsecret-devel @@ -54,6 +42,7 @@ BuildRequires: desktop-file-utils BuildRequires: iso-codes-devel BuildRequires: libgudev1-devel >= 147 BuildRequires: libsecret-devel >= 0.12 +BuildRequires: jansson-devel %description This package contains a network control and status notification area applet @@ -62,9 +51,7 @@ for use with NetworkManager. %package -n nm-connection-editor Summary: A network connection configuration editor for NetworkManager Requires: NetworkManager-glib >= %{nm_version} -Requires: libnm-gtk = %{version}-%{release} -Requires: dbus >= 1.4 -Requires: dbus-glib >= 0.94 +Requires: libnma%{?_isa} = %{version}-%{release} Requires: gnome-icon-theme Requires(post): /usr/bin/gtk-update-icon-cache @@ -96,28 +83,46 @@ Requires: pkgconfig %description -n libnm-gtk-devel This package contains private header and pkg-config files to be used only by -nm-applet, nm-connection-editor, and the GNOME control center. +GNOME control center. -%prep -%setup -q -n network-manager-applet-%{realversion} +%package -n libnma +Summary: Private libraries for NetworkManager GUI support +Group: Development/Libraries +Requires: gtk3 >= %{gtk3_version} +Requires: mobile-broadband-provider-info >= 0.20090602 +Obsoletes: NetworkManager-gtk < %{obsoletes_ver} +%description -n libnma +This package contains private libraries to be used only by nm-applet, +nm-connection editor, and the GNOME Control Center. + +%package -n libnma-devel +Summary: Private header files for NetworkManager GUI support +Group: Development/Libraries +Requires: NetworkManager-devel >= %{nm_version} +Requires: NetworkManager-libnm-devel >= %{nm_version} +Obsoletes: NetworkManager-gtk-devel < %{obsoletes_ver} +Requires: libnma = %{version}-%{release} +Requires: gtk3-devel +Requires: pkgconfig + +%description -n libnma-devel +This package contains private header and pkg-config files to be used only by +nm-applet, nm-connection-editor, and the GNOME control center. + +%prep +%setup -q %patch0 -p1 -b .no-notifications %patch1 -p1 -b .applet-wifi-ui -%patch2 -p1 -b .no-deprecated -%patch3 -p1 -b .revert-shell-watcher-removal -%patch4 -p1 -b .rh1267326-applet-password-crash -%patch5 -p1 -b .rh1267330-password-storage-icons-tooltips +%patch2 -p1 -b .team %build autoreconf -i -f intltoolize --force %configure \ --disable-static \ - --with-bluetooth \ - --with-modem-manager-1=yes \ - --enable-more-warnings=yes \ - --disable-migration + --enable-more-warnings=yes make %{?_smp_mflags} %install @@ -167,7 +172,6 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %files %defattr(-,root,root,0755) -%doc COPYING NEWS AUTHORS README CONTRIBUTING %dir %{_datadir}/nm-applet %{_bindir}/nm-applet %{_datadir}/applications/nm-applet.desktop @@ -187,6 +191,8 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %{_datadir}/GConf/gsettings/nm-applet.convert %{_sysconfdir}/xdg/autostart/nm-applet.desktop %{_mandir}/man1/nm-applet* +%doc NEWS AUTHORS README CONTRIBUTING +%license COPYING # Yes, lang files for the applet go in nm-connection-editor RPM since it # is the RPM that everything else depends on @@ -202,7 +208,7 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %{_datadir}/icons/hicolor/*/apps/nm-no-connection.* %{_datadir}/icons/hicolor/16x16/apps/nm-vpn-standalone-lock.png %{_datadir}/glib-2.0/schemas/org.gnome.nm-applet.gschema.xml -%{_datadir}/appdata/org.gnome.nm-connection-editor.appdata.xml +%{_datadir}/appdata/nm-connection-editor.appdata.xml %{_mandir}/man1/nm-connection-editor* %dir %{_datadir}/gnome-vpn-properties @@ -221,10 +227,45 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %{_libdir}/libnm-gtk.so %{_datadir}/gir-1.0/NMGtk-1.0.gir +%files -n libnma +%defattr(-,root,root,0755) +%{_libdir}/libnma.so.* +%dir %{_datadir}/libnma +%{_datadir}/libnma/*.ui +%{_libdir}/girepository-1.0/NMA-1.0.typelib + +%files -n libnma-devel +%defattr(-,root,root,0755) +%dir %{_includedir}/libnma +%{_includedir}/libnma/*.h +%{_libdir}/pkgconfig/libnma.pc +%{_libdir}/libnma.so +%{_datadir}/gir-1.0/NMA-1.0.gir + + %changelog +* Thu Sep 22 2016 Lubomir Rintel - 1.4.0-2 +- c-e: fix team page with older GTK and jansson (rh #1079465) + +* Wed Aug 24 2016 Lubomir Rintel - 1.4.0-1 +- Update to network-manager-applet 1.4.0 release +- c-e: add editor for teaming devices (rh #1079465) + +* Sat Aug 20 2016 Thomas Haller - 1.2.2-2 +- c-e: fix tab stop for Create button (rh#1339565) + +* Fri Jul 08 2016 Lubomir Rintel - 1.2.2-1 +- Update to network-manager-applet 1.2.2 release + +* Wed Apr 27 2016 Lubomir Rintel - 1.2.0-1 +- Update to network-manager-applet 1.2.0 release + +* Wed Mar 30 2016 Lubomir Rintel - 1.2.0-0.1.beta3 +- Rebase to 1.2-beta3 + * Wed Sep 30 2015 Jiří Klimeš - 1.0.6-2 - - libnm-gtk: fix a possible crash on widgets destroy (rh #1267326) - - libnm-gtk: use symbolic icons for password store menu (rh #1267330) +- libnm-gtk: fix a possible crash on widgets destroy (rh #1267326) +- libnm-gtk: use symbolic icons for password store menu (rh #1267330) * Tue Jul 14 2015 Lubomir Rintel - 1.0.6-1 - Align with the 1.0.6 upstream release: