diff --git a/srcpkgs/NetworkManager/NetworkManager-devel.template b/srcpkgs/NetworkManager/NetworkManager-devel.template index 677fb774208..15b93c61109 100644 --- a/srcpkgs/NetworkManager/NetworkManager-devel.template +++ b/srcpkgs/NetworkManager/NetworkManager-devel.template @@ -2,10 +2,7 @@ # noarch=yes depends="dbus-glib-devel libnm-${version}_${revision}" -short_desc="${sourcepkg} -- development files" -long_desc="${long_desc} - - This package contains files for development, headers, static libs, etc." +short_desc="${short_desc} -- development files" do_install() { vmove usr/include usr diff --git a/srcpkgs/NetworkManager/libnm.template b/srcpkgs/NetworkManager/libnm.template index 02b3d51e4bc..e6329f40579 100644 --- a/srcpkgs/NetworkManager/libnm.template +++ b/srcpkgs/NetworkManager/libnm.template @@ -1,11 +1,7 @@ # Template file for 'libnm'. # replaces="NetworkManager<0.9.1.90_1" -short_desc="${sourcepkg} - shared libraries" -long_desc="${long_desc} - - This package contains a convenience library to ease the access to - NetworkManager." +short_desc="${short_desc} - shared libraries" do_install() { vmove "usr/lib/*.so*" usr/lib diff --git a/srcpkgs/NetworkManager/patches/disable_set_hostname.patch b/srcpkgs/NetworkManager/patches/disable_set_hostname.patch new file mode 100644 index 00000000000..059abd0ae9e --- /dev/null +++ b/srcpkgs/NetworkManager/patches/disable_set_hostname.patch @@ -0,0 +1,18 @@ +--- src/nm-policy.c 2011-08-23 06:41:02.099686450 +0000 ++++ src/nm-policy.c 2011-08-23 06:43:38.227791737 +0000 +@@ -302,6 +302,7 @@ + return; + } + ++#if 0 + /* Try automatically determined hostname from the best device's IP config */ + if (!best4) + best4 = get_best_ip4_device (policy->manager, &best_req4); +@@ -356,6 +357,7 @@ + } + } + ++#endif + /* If no automatically-configured hostname, try using the hostname from + * when NM started up. + */ diff --git a/srcpkgs/NetworkManager/patches/nm-polkit-permissive.patch b/srcpkgs/NetworkManager/patches/nm-polkit-permissive.patch new file mode 100644 index 00000000000..7c6b70ef0a9 --- /dev/null +++ b/srcpkgs/NetworkManager/patches/nm-polkit-permissive.patch @@ -0,0 +1,10 @@ +--- policy/org.freedesktop.NetworkManager.policy.in.permissive 2011-03-24 14:21:35.100912222 -0500 ++++ policy/org.freedesktop.NetworkManager.policy.in 2011-03-24 14:21:49.916726997 -0500 +@@ -95,7 +95,7 @@ + <_message>System policy prevents modification of network settings for all users + + no +- auth_admin_keep ++ yes + + diff --git a/srcpkgs/NetworkManager/patches/repair-signals.patch b/srcpkgs/NetworkManager/patches/repair-signals.patch new file mode 100644 index 00000000000..effae99d7df --- /dev/null +++ b/srcpkgs/NetworkManager/patches/repair-signals.patch @@ -0,0 +1,37 @@ +From 64342a313ef497fca8a4fb7567900d4a1460065f Mon Sep 17 00:00:00 2001 +From: Alexandre Rostovtsev +Date: Thu, 13 Sep 2012 09:32:53 +0000 +Subject: core: wait until we daemonized before setting up signals (bgo #683932) + +If we mask signals before daemonizing, the daemon process will not be +able to handle them, and thus would be unkillable with anything other +than SIGKILL. +--- +diff --git a/src/main.c b/src/main.c +index 8bc6d3f..5b82cfa 100644 +--- src/main.c ++++ src/main.c +@@ -401,10 +401,6 @@ main (int argc, char *argv[]) + exit (1); + } + +- /* Set up unix signal handling */ +- if (!setup_signals ()) +- exit (1); +- + /* Set locale to be able to use environment variables */ + setlocale (LC_ALL, ""); + +@@ -501,6 +497,10 @@ main (int argc, char *argv[]) + wrote_pidfile = TRUE; + } + ++ /* Set up unix signal handling - before creating threads, but after daemonizing! */ ++ if (!setup_signals ()) ++ exit (1); ++ + if (g_fatal_warnings) { + GLogLevelFlags fatal_mask; + +-- +cgit v0.9.0.2-2-gbebe diff --git a/srcpkgs/NetworkManager/patches/systemd-sleep.patch b/srcpkgs/NetworkManager/patches/systemd-sleep.patch new file mode 100644 index 00000000000..727688f0a4b --- /dev/null +++ b/srcpkgs/NetworkManager/patches/systemd-sleep.patch @@ -0,0 +1,616 @@ +From b444d31cba5b8ac0c9771cc5a246dfd3af9dfd00 Mon Sep 17 00:00:00 2001 +From: Matthias Clasen +Date: Tue, 9 Oct 2012 00:36:35 -0400 +Subject: [PATCH] core: factor out the upower suspend/resume code (bgo + #677694) + +Factor the code that listens for upower sleeping and resuming +signals out into a class code NMSleepMonitor. + +core: add a systemd suspend/resume monitor (bgo #677694) + +This implementation uses a delay inhibitor to get systemd to +emit PrepareForSleep, and then emits ::Sleeping and ::Resuming +when receiving the before/after PrepareForSleep emissions. + +core: DBusGConnections are not GObjects + +Introduced in 64fd8eea7706038e5d38c8463a1c765ed9331db2. + +core: fix suspend/resume signal names which the manager listens for + +Introduced in 64fd8eea7706038e5d38c8463a1c765ed9331db2; but honestly +I also thought GObject lower-cased signal names since it munges them +for - and _ too. Apparently not. +--- + configure.ac | 2 +- + src/Makefile.am | 9 +- + src/nm-manager.c | 40 +++----- + src/nm-sleep-monitor-systemd.c | 217 +++++++++++++++++++++++++++++++++++++++++ + src/nm-sleep-monitor-upower.c | 151 ++++++++++++++++++++++++++++ + src/nm-sleep-monitor.h | 46 +++++++++ + 6 files changed, 437 insertions(+), 28 deletions(-) + create mode 100644 src/nm-sleep-monitor-systemd.c + create mode 100644 src/nm-sleep-monitor-upower.c + create mode 100644 src/nm-sleep-monitor.h + +diff --git a/configure.ac b/configure.ac +index e76e193..9152c23 100644 +--- configure.ac ++++ configure.ac +@@ -327,7 +327,7 @@ PKG_CHECK_MODULES(GUDEV, gudev-1.0 >= 147) + AC_SUBST(GUDEV_CFLAGS) + AC_SUBST(GUDEV_LIBS) + +-PKG_CHECK_MODULES(GIO, gio-2.0) ++PKG_CHECK_MODULES(GIO, gio-unix-2.0) + AC_SUBST(GIO_CFLAGS) + AC_SUBST(GIO_LIBS) + +diff --git a/src/Makefile.am b/src/Makefile.am +index b155209..ba7d2d6 100644 +--- src/Makefile.am ++++ src/Makefile.am +@@ -191,6 +191,7 @@ NetworkManager_SOURCES = \ + nm-session-monitor.h \ + nm-session-utils.c \ + nm-session-utils.h \ ++ nm-sleep-monitor.h \ + nm-connection-provider.h \ + nm-connection-provider.c \ + nm-dispatcher.c \ +@@ -201,13 +202,18 @@ NetworkManager_SOURCES += nm-connectivity.c nm-connectivity.h + endif + + if SESSION_TRACKING_SYSTEMD +-NetworkManager_SOURCES += nm-session-monitor-systemd.c ++NetworkManager_SOURCES += \ ++ nm-session-monitor-systemd.c \ ++ nm-sleep-monitor-systemd.c + else + if SESSION_TRACKING_CK + NetworkManager_SOURCES += nm-session-monitor-ck.c + else + NetworkManager_SOURCES += nm-session-monitor-null.c + endif ++ ++# UPower suspend/resume used whenever systemd is not enabled ++NetworkManager_SOURCES += nm-sleep-monitor-upower.c + endif + + nm-access-point-glue.h: $(top_srcdir)/introspection/nm-access-point.xml +@@ -283,6 +289,7 @@ BUILT_SOURCES = \ + NetworkManager_CPPFLAGS = \ + $(DBUS_CFLAGS) \ + $(GLIB_CFLAGS) \ ++ $(GIO_CFLAGS) \ + $(GUDEV_CFLAGS) \ + $(LIBNL_CFLAGS) \ + $(GMODULE_CFLAGS) \ +diff --git a/src/nm-manager.c b/src/nm-manager.c +index 618c4ed..c8ce115 100644 +--- src/nm-manager.c ++++ src/nm-manager.c +@@ -69,6 +69,7 @@ + #include "nm-device-factory.h" + #include "wifi-utils.h" + #include "nm-enum-types.h" ++#include "nm-sleep-monitor.h" + + #if WITH_CONCHECK + #include "nm-connectivity.h" +@@ -78,8 +79,6 @@ + #define NM_AUTOIP_DBUS_SERVICE "org.freedesktop.nm_avahi_autoipd" + #define NM_AUTOIP_DBUS_IFACE "org.freedesktop.nm_avahi_autoipd" + +-#define UPOWER_DBUS_SERVICE "org.freedesktop.UPower" +- + static gboolean impl_manager_get_devices (NMManager *manager, + GPtrArray **devices, + GError **err); +@@ -228,7 +227,7 @@ typedef struct { + guint modem_removed_id; + + DBusGProxy *aipd_proxy; +- DBusGProxy *upower_proxy; ++ NMSleepMonitor *sleep_monitor; + + GSList *auth_chains; + +@@ -3288,16 +3287,16 @@ impl_manager_sleep (NMManager *self, + } + + static void +-upower_sleeping_cb (DBusGProxy *proxy, gpointer user_data) ++sleeping_cb (DBusGProxy *proxy, gpointer user_data) + { +- nm_log_dbg (LOGD_SUSPEND, "Received UPower sleeping signal"); ++ nm_log_dbg (LOGD_SUSPEND, "Received sleeping signal"); + _internal_sleep (NM_MANAGER (user_data), TRUE); + } + + static void +-upower_resuming_cb (DBusGProxy *proxy, gpointer user_data) ++resuming_cb (DBusGProxy *proxy, gpointer user_data) + { +- nm_log_dbg (LOGD_SUSPEND, "Received UPower resuming signal"); ++ nm_log_dbg (LOGD_SUSPEND, "Received resuming signal"); + _internal_sleep (NM_MANAGER (user_data), FALSE); + } + +@@ -4049,8 +4048,8 @@ dispose (GObject *object) + if (priv->aipd_proxy) + g_object_unref (priv->aipd_proxy); + +- if (priv->upower_proxy) +- g_object_unref (priv->upower_proxy); ++ if (priv->sleep_monitor) ++ g_object_unref (priv->sleep_monitor); + + if (priv->fw_monitor) { + if (priv->fw_monitor_id) +@@ -4372,23 +4371,12 @@ nm_manager_init (NMManager *manager) + } else + nm_log_warn (LOGD_AUTOIP4, "could not initialize avahi-autoipd D-Bus proxy"); + +- /* upower sleep/wake handling */ +- priv->upower_proxy = dbus_g_proxy_new_for_name (g_connection, +- UPOWER_DBUS_SERVICE, +- "/org/freedesktop/UPower", +- "org.freedesktop.UPower"); +- if (priv->upower_proxy) { +- dbus_g_proxy_add_signal (priv->upower_proxy, "Sleeping", G_TYPE_INVALID); +- dbus_g_proxy_connect_signal (priv->upower_proxy, "Sleeping", +- G_CALLBACK (upower_sleeping_cb), +- manager, NULL); +- +- dbus_g_proxy_add_signal (priv->upower_proxy, "Resuming", G_TYPE_INVALID); +- dbus_g_proxy_connect_signal (priv->upower_proxy, "Resuming", +- G_CALLBACK (upower_resuming_cb), +- manager, NULL); +- } else +- nm_log_warn (LOGD_SUSPEND, "could not initialize UPower D-Bus proxy"); ++ /* sleep/wake handling */ ++ priv->sleep_monitor = nm_sleep_monitor_get (); ++ g_signal_connect (priv->sleep_monitor, "sleeping", ++ G_CALLBACK (sleeping_cb), manager); ++ g_signal_connect (priv->sleep_monitor, "resuming", ++ G_CALLBACK (resuming_cb), manager); + + /* Listen for authorization changes */ + nm_auth_changed_func_register (authority_changed_cb, manager); +diff --git a/src/nm-sleep-monitor-systemd.c b/src/nm-sleep-monitor-systemd.c +new file mode 100644 +index 0000000..70adc89 +--- /dev/null ++++ src/nm-sleep-monitor-systemd.c +@@ -0,0 +1,217 @@ ++/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ ++/* 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. ++ * ++ * (C) Copyright 2012 Red Hat, Inc. ++ * Author: Matthias Clasen ++ */ ++ ++#include "config.h" ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "nm-logging.h" ++#include "nm-dbus-manager.h" ++ ++#include "nm-sleep-monitor.h" ++ ++#define SD_NAME "org.freedesktop.login1" ++#define SD_PATH "/org/freedesktop/login1" ++#define SD_INTERFACE "org.freedesktop.login1.Manager" ++ ++ ++struct _NMSleepMonitor { ++ GObject parent_instance; ++ ++ GDBusProxy *sd_proxy; ++ gint inhibit_fd; ++}; ++ ++struct _NMSleepMonitorClass { ++ GObjectClass parent_class; ++ ++ void (*sleeping) (NMSleepMonitor *monitor); ++ void (*resuming) (NMSleepMonitor *monitor); ++}; ++ ++ ++enum { ++ SLEEPING, ++ RESUMING, ++ LAST_SIGNAL, ++}; ++static guint signals[LAST_SIGNAL] = {0}; ++ ++G_DEFINE_TYPE (NMSleepMonitor, nm_sleep_monitor, G_TYPE_OBJECT); ++ ++/********************************************************************/ ++ ++static void ++inhibit_done (GObject *source, ++ GAsyncResult *result, ++ gpointer user_data) ++{ ++ GDBusProxy *sd_proxy = G_DBUS_PROXY (source); ++ NMSleepMonitor *self = user_data; ++ GError *error = NULL; ++ GVariant *res; ++ GUnixFDList *fd_list; ++ ++ res = g_dbus_proxy_call_with_unix_fd_list_finish (sd_proxy, &fd_list, result, &error); ++ if (!res) { ++ nm_log_warn (LOGD_SUSPEND, "Inhibit failed: %s", error->message); ++ g_error_free (error); ++ } else { ++ if (!fd_list || g_unix_fd_list_get_length (fd_list) != 1) ++ nm_log_warn (LOGD_SUSPEND, "Didn't get a single fd back"); ++ ++ self->inhibit_fd = g_unix_fd_list_get (fd_list, 0, NULL); ++ ++ nm_log_dbg (LOGD_SUSPEND, "Inhibitor fd is %d", self->inhibit_fd); ++ g_object_unref (fd_list); ++ g_variant_unref (res); ++ } ++} ++ ++static void ++take_inhibitor (NMSleepMonitor *self) ++{ ++ g_assert (self->inhibit_fd == -1); ++ ++ nm_log_dbg (LOGD_SUSPEND, "Taking systemd sleep inhibitor"); ++ g_dbus_proxy_call_with_unix_fd_list (self->sd_proxy, ++ "Inhibit", ++ g_variant_new ("(ssss)", ++ "sleep", ++ g_get_user_name (), ++ "inhibited", ++ "delay"), ++ 0, ++ G_MAXINT, ++ NULL, ++ NULL, ++ inhibit_done, ++ self); ++} ++ ++static gboolean ++drop_inhibitor (NMSleepMonitor *self) ++{ ++ if (self->inhibit_fd >= 0) { ++ nm_log_dbg (LOGD_SUSPEND, "Dropping systemd sleep inhibitor"); ++ close (self->inhibit_fd); ++ self->inhibit_fd = -1; ++ return TRUE; ++ } ++ return FALSE; ++} ++ ++static void ++signal_cb (GDBusProxy *proxy, ++ const gchar *sendername, ++ const gchar *signalname, ++ GVariant *args, ++ gpointer data) ++{ ++ NMSleepMonitor *self = data; ++ gboolean is_about_to_suspend; ++ ++ if (strcmp (signalname, "PrepareForSleep") != 0) ++ return; ++ ++ g_variant_get (args, "(b)", &is_about_to_suspend); ++ nm_log_dbg (LOGD_SUSPEND, "Received PrepareForSleep signal: %d", is_about_to_suspend); ++ ++ if (is_about_to_suspend) { ++ g_signal_emit (self, signals[SLEEPING], 0); ++ drop_inhibitor (self); ++ } else { ++ take_inhibitor (self); ++ g_signal_emit (self, signals[RESUMING], 0); ++ } ++} ++ ++static void ++nm_sleep_monitor_init (NMSleepMonitor *self) ++{ ++ GDBusConnection *bus; ++ ++ self->inhibit_fd = -1; ++ bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); ++ self->sd_proxy = g_dbus_proxy_new_sync (bus, 0, NULL, ++ SD_NAME, SD_PATH, SD_INTERFACE, ++ NULL, NULL); ++ g_object_unref (bus); ++ g_signal_connect (self->sd_proxy, "g-signal", G_CALLBACK (signal_cb), self); ++ take_inhibitor (self); ++} ++ ++static void ++finalize (GObject *object) ++{ ++ NMSleepMonitor *self = NM_SLEEP_MONITOR (object); ++ ++ drop_inhibitor (self); ++ if (self->sd_proxy) ++ g_object_unref (self->sd_proxy); ++ ++ if (G_OBJECT_CLASS (nm_sleep_monitor_parent_class)->finalize != NULL) ++ G_OBJECT_CLASS (nm_sleep_monitor_parent_class)->finalize (object); ++} ++ ++static void ++nm_sleep_monitor_class_init (NMSleepMonitorClass *klass) ++{ ++ GObjectClass *gobject_class; ++ ++ gobject_class = G_OBJECT_CLASS (klass); ++ ++ gobject_class->finalize = finalize; ++ ++ signals[SLEEPING] = g_signal_new (NM_SLEEP_MONITOR_SLEEPING, ++ NM_TYPE_SLEEP_MONITOR, ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (NMSleepMonitorClass, sleeping), ++ NULL, /* accumulator */ ++ NULL, /* accumulator data */ ++ g_cclosure_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); ++ signals[RESUMING] = g_signal_new (NM_SLEEP_MONITOR_RESUMING, ++ NM_TYPE_SLEEP_MONITOR, ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (NMSleepMonitorClass, resuming), ++ NULL, /* accumulator */ ++ NULL, /* accumulator data */ ++ g_cclosure_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); ++} ++ ++NMSleepMonitor * ++nm_sleep_monitor_get (void) ++{ ++ static NMSleepMonitor *singleton = NULL; ++ ++ if (singleton) ++ return g_object_ref (singleton); ++ ++ singleton = NM_SLEEP_MONITOR (g_object_new (NM_TYPE_SLEEP_MONITOR, NULL)); ++ return singleton; ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ +diff --git a/src/nm-sleep-monitor-upower.c b/src/nm-sleep-monitor-upower.c +new file mode 100644 +index 0000000..3c93f66 +--- /dev/null ++++ src/nm-sleep-monitor-upower.c +@@ -0,0 +1,151 @@ ++/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ ++/* 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. ++ * ++ * (C) Copyright 2012 Red Hat, Inc. ++ * Author: Matthias Clasen ++ */ ++ ++#include "config.h" ++#include ++#include ++#include ++#include ++#include ++#include ++#include "nm-logging.h" ++#include "nm-dbus-manager.h" ++ ++#include "nm-sleep-monitor.h" ++ ++#define UPOWER_DBUS_SERVICE "org.freedesktop.UPower" ++ ++struct _NMSleepMonitor { ++ GObject parent_instance; ++ ++ DBusGProxy *upower_proxy; ++}; ++ ++struct _NMSleepMonitorClass { ++ GObjectClass parent_class; ++ ++ void (*sleeping) (NMSleepMonitor *monitor); ++ void (*resuming) (NMSleepMonitor *monitor); ++}; ++ ++ ++enum { ++ SLEEPING, ++ RESUMING, ++ LAST_SIGNAL, ++}; ++static guint signals[LAST_SIGNAL] = {0}; ++ ++G_DEFINE_TYPE (NMSleepMonitor, nm_sleep_monitor, G_TYPE_OBJECT); ++ ++/********************************************************************/ ++ ++static void ++upower_sleeping_cb (DBusGProxy *proxy, gpointer user_data) ++{ ++ nm_log_dbg (LOGD_SUSPEND, "Received UPower sleeping signal"); ++ g_signal_emit (user_data, signals[SLEEPING], 0); ++} ++ ++static void ++upower_resuming_cb (DBusGProxy *proxy, gpointer user_data) ++{ ++ nm_log_dbg (LOGD_SUSPEND, "Received UPower resuming signal"); ++ g_signal_emit (user_data, signals[RESUMING], 0); ++} ++ ++static void ++nm_sleep_monitor_init (NMSleepMonitor *self) ++{ ++ NMDBusManager *dbus_mgr; ++ DBusGConnection *bus; ++ ++ dbus_mgr = nm_dbus_manager_get (); ++ bus = nm_dbus_manager_get_connection (dbus_mgr); ++ self->upower_proxy = dbus_g_proxy_new_for_name (bus, ++ UPOWER_DBUS_SERVICE, ++ "/org/freedesktop/UPower", ++ "org.freedesktop.UPower"); ++ if (self->upower_proxy) { ++ dbus_g_proxy_add_signal (self->upower_proxy, "Sleeping", G_TYPE_INVALID); ++ dbus_g_proxy_connect_signal (self->upower_proxy, "Sleeping", ++ G_CALLBACK (upower_sleeping_cb), ++ self, NULL); ++ ++ dbus_g_proxy_add_signal (self->upower_proxy, "Resuming", G_TYPE_INVALID); ++ dbus_g_proxy_connect_signal (self->upower_proxy, "Resuming", ++ G_CALLBACK (upower_resuming_cb), ++ self, NULL); ++ } else ++ nm_log_warn (LOGD_SUSPEND, "could not initialize UPower D-Bus proxy"); ++ g_object_unref (dbus_mgr); ++} ++ ++static void ++finalize (GObject *object) ++{ ++ NMSleepMonitor *self = NM_SLEEP_MONITOR (object); ++ ++ if (self->upower_proxy) ++ g_object_unref (self->upower_proxy); ++ ++ if (G_OBJECT_CLASS (nm_sleep_monitor_parent_class)->finalize != NULL) ++ G_OBJECT_CLASS (nm_sleep_monitor_parent_class)->finalize (object); ++} ++ ++static void ++nm_sleep_monitor_class_init (NMSleepMonitorClass *klass) ++{ ++ GObjectClass *gobject_class; ++ ++ gobject_class = G_OBJECT_CLASS (klass); ++ ++ gobject_class->finalize = finalize; ++ ++ signals[SLEEPING] = g_signal_new (NM_SLEEP_MONITOR_SLEEPING, ++ NM_TYPE_SLEEP_MONITOR, ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (NMSleepMonitorClass, sleeping), ++ NULL, /* accumulator */ ++ NULL, /* accumulator data */ ++ g_cclosure_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); ++ signals[RESUMING] = g_signal_new (NM_SLEEP_MONITOR_RESUMING, ++ NM_TYPE_SLEEP_MONITOR, ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (NMSleepMonitorClass, resuming), ++ NULL, /* accumulator */ ++ NULL, /* accumulator data */ ++ g_cclosure_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); ++} ++ ++NMSleepMonitor * ++nm_sleep_monitor_get (void) ++{ ++ static NMSleepMonitor *singleton = NULL; ++ ++ if (singleton) ++ return g_object_ref (singleton); ++ ++ singleton = NM_SLEEP_MONITOR (g_object_new (NM_TYPE_SLEEP_MONITOR, NULL)); ++ return singleton; ++} ++ ++/* ---------------------------------------------------------------------------------------------------- */ +diff --git a/src/nm-sleep-monitor.h b/src/nm-sleep-monitor.h +new file mode 100644 +index 0000000..173e6a1 +--- /dev/null ++++ src/nm-sleep-monitor.h +@@ -0,0 +1,46 @@ ++/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ ++/* 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. ++ * ++ * (C) Copyright 2012 Red Hat, Inc. ++ * Author: Matthias Clasen ++ */ ++ ++#ifndef NM_SLEEP_MONITOR_H ++#define NM_SLEEP_MONITOR_H ++ ++#include ++ ++G_BEGIN_DECLS ++ ++#define NM_TYPE_SLEEP_MONITOR (nm_sleep_monitor_get_type ()) ++#define NM_SLEEP_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), NM_TYPE_SLEEP_MONITOR, NMSleepMonitor)) ++#define NM_SLEEP_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), NM_TYPE_SLEEP_MONITOR, NMSleepMonitorClass)) ++#define NM_SLEEP_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NM_TYPE_SLEEP_MONITOR, NMSleepMonitorClass)) ++#define NM_IS_SLEEP_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), NM_TYPE_SLEEP_MONITOR)) ++#define NM_IS_SLEEP_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), NM_TYPE_SLEEP_MONITOR)) ++ ++#define NM_SLEEP_MONITOR_SLEEPING "sleeping" ++#define NM_SLEEP_MONITOR_RESUMING "resuming" ++ ++typedef struct _NMSleepMonitor NMSleepMonitor; ++typedef struct _NMSleepMonitorClass NMSleepMonitorClass; ++ ++GType nm_sleep_monitor_get_type (void) G_GNUC_CONST; ++NMSleepMonitor *nm_sleep_monitor_get (void); ++ ++G_END_DECLS ++ ++#endif /* NM_SLEEP_MONITOR_H */ ++ +-- +1.7.12.2 + diff --git a/srcpkgs/NetworkManager/template b/srcpkgs/NetworkManager/template index cf20e9a8078..7423c4aeaf2 100644 --- a/srcpkgs/NetworkManager/template +++ b/srcpkgs/NetworkManager/template @@ -1,7 +1,7 @@ # Template file for 'NetworkManager' pkgname=NetworkManager version=0.9.6.4 -revision=1 +revision=2 build_style=gnu-configure configure_args="--with-distro=gentoo --with-dhcpcd=/usr/sbin/dhcpcd --with-dhclient=no --disable-wimax @@ -11,7 +11,7 @@ configure_args="--with-distro=gentoo --with-session-tracking=systemd --with-udev-dir=/usr/lib/udev --with-kernel-firmware-dir=/usr/lib/firmware --with-pppd-plugin-dir=/usr/lib/pppd/2.4.5" -makedepends="pkg-config intltool gobject-introspection libuuid-devel +makedepends="pkg-config intltool automake gobject-introspection libuuid-devel nss-devel dbus-glib-devel libgudev-devel wireless_tools-devel libnl3-devel polkit-devel ppp-devel iptables-devel libsoup-devel systemd-devel" fulldepends="dbus>=0 iproute2 dhcpcd>=5.5.4_1 wpa_supplicant @@ -25,19 +25,16 @@ homepage="http://www.gnome.org/projects/NetworkManager/" license="GPL-2" distfiles="${GNOME_SITE}/$pkgname/0.9/$pkgname-$version.tar.xz" checksum=511b411e055d187bc8f26c519fdb3e55e07fc40d4adecbbec623c0249380a7eb -long_desc=" - NetworkManager attempts to keep an active network connection available at all - times. It is intended only for the desktop use-case, and is not intended for - usage on servers. The point of NetworkManager is to make networking - configuration and setup as painless and automatic as possible. If using DHCP, - NetworkManager is _intended_ to replace default routes, obtain IP addresses - from a DHCP server, and change nameservers whenever it sees fit." make_dirs=" /etc/NetworkManager/dispatcher.d 0755 root root /etc/NetworkManager/system-connections 0755 root root /var/lib/NetworkManager 0700 root root" +pre_configure() { + AUTOPOINT="intltoolize -f -c --automake" autoreconf -fi +} + post_install() { # Install config file. vinstall ${FILESDIR}/${pkgname}.conf 644 etc/${pkgname}