diff options
author | Jan Luebbe <jlu@pengutronix.de> | 2012-02-09 12:52:29 +0100 |
---|---|---|
committer | Michael Olbrich <m.olbrich@pengutronix.de> | 2012-02-10 15:14:23 +0100 |
commit | 859ed7494212f66dc78e22dfccc875d1cad43d22 (patch) | |
tree | 03b9265fd27737629306ea3c38c8a0fe880b5bb9 | |
parent | 57fa4c6cf029c52271afb5d1f27e5ddc52f40056 (diff) | |
download | ptxdist-859ed7494212f66dc78e22dfccc875d1cad43d22.tar.gz ptxdist-859ed7494212f66dc78e22dfccc875d1cad43d22.tar.xz |
networkmanager: update and fix Network Manager, support systemd, handle NFS root
Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
-rw-r--r-- | generic/etc/NetworkManager/NetworkManager.conf | 5 | ||||
-rw-r--r-- | generic/etc/init.d/NetworkManager | 84 | ||||
-rw-r--r-- | generic/lib/init/nm-unmanage.sh | 25 | ||||
-rw-r--r-- | generic/lib/systemd/system/NetworkManager-unmanage.service | 11 | ||||
-rw-r--r-- | generic/lib/systemd/system/NetworkManager.service | 14 | ||||
-rw-r--r-- | patches/NetworkManager-0.9.2.0/0001-settings-pass-config-file-name-to-settings-plugins.patch | 409 | ||||
-rw-r--r-- | patches/NetworkManager-0.9.2.0/series | 1 | ||||
-rw-r--r-- | rules/networkmanager.in | 31 | ||||
-rw-r--r-- | rules/networkmanager.make | 94 |
9 files changed, 632 insertions, 42 deletions
diff --git a/generic/etc/NetworkManager/NetworkManager.conf b/generic/etc/NetworkManager/NetworkManager.conf new file mode 100644 index 000000000..d8b33d914 --- /dev/null +++ b/generic/etc/NetworkManager/NetworkManager.conf @@ -0,0 +1,5 @@ +[main] +plugins=ifupdown,keyfile + +[ifupdown] +managed=false diff --git a/generic/etc/init.d/NetworkManager b/generic/etc/init.d/NetworkManager new file mode 100644 index 000000000..50a5467ad --- /dev/null +++ b/generic/etc/init.d/NetworkManager @@ -0,0 +1,84 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: NetworkManager +# Required-Start: $remote_fs dbus hal +# Required-Stop: $remote_fs dbus hal +# Should-Start: $syslog +# Should-Stop: $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: network connection manager +# Description: Daemon for automatically switching network +# connections to the best available connection. +### END INIT INFO + +set -e + +prefix=/usr +exec_prefix=/usr +sbindir=${exec_prefix}/sbin +localstatedir=/var + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DESC="network connection manager" +NAME="NetworkManager" + +DAEMON=${sbindir}/$NAME + +PIDDIR=${localstatedir}/run +PIDFILE=$PIDDIR/$NAME.pid +CONFFILE=$PIDDIR/$NAME.conf +STATEFILE=$PIDDIR/$NAME.state + +DAEMON_OPTS="--config=$CONFFILE --state-file=$STATEFILE" + +USER=root + +# Gracefully exit if the package has been removed. +test -x $DAEMON || exit 0 + +test -f /etc/default/NetworkManager && . /etc/default/NetworkManager + +# +# Function that starts the daemon/service. +# +d_start() { + /lib/init/nm-unmanage.sh + + start-stop-daemon --start --quiet --pidfile $PIDFILE \ + --oknodo --user $USER --exec $DAEMON -- $DAEMON_OPTS --pid-file $PIDFILE + +} + +# +# Function that stops the daemon/service. +# +d_stop() { + start-stop-daemon --stop --retry 5 --quiet --pidfile $PIDFILE \ + --oknodo --user $USER --exec $DAEMON + +} + + +case "$1" in + start) + echo "Starting $DESC" "$NAME" + d_start + ;; + stop) + echo "Stopping $DESC" "$NAME" + d_stop + ;; + restart|force-reload) + echo "Restarting $DESC" "$NAME" + d_stop + d_start + ;; + *) + echo "Usage: $0 {start|stop|restart|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 + diff --git a/generic/lib/init/nm-unmanage.sh b/generic/lib/init/nm-unmanage.sh new file mode 100644 index 000000000..3d4cb6840 --- /dev/null +++ b/generic/lib/init/nm-unmanage.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +# configure NM to regard already configured interfaces as unmanaged (for NFS root) + +CONFFILE=/var/run/NetworkManager.conf + +if [ ! -f $CONFFILE ]; then + # set previously enabled interfaces to unmanaged + cat /etc/NetworkManager/NetworkManager.conf > $CONFFILE + + UNMANAGED="" + for IF in $(ls /sys/class/net); do + IF_FLAGS="$(cat /sys/class/net/$IF/flags)" + if [ "$((IF_FLAGS&1))" = "1" -a "$IF" != "lo" ]; then + IF_ADDR="$(cat /sys/class/net/$IF/address)" + UNMANAGED="$UNMANAGED;mac:$IF_ADDR" + fi + done + + echo "" >> $CONFFILE + echo "[keyfile]" >> $CONFFILE + echo "# unmanaged-devices added by $0" >> $CONFFILE + echo "unmanaged-devices=${UNMANAGED:1}" >> $CONFFILE +fi + diff --git a/generic/lib/systemd/system/NetworkManager-unmanage.service b/generic/lib/systemd/system/NetworkManager-unmanage.service new file mode 100644 index 000000000..9e41dc562 --- /dev/null +++ b/generic/lib/systemd/system/NetworkManager-unmanage.service @@ -0,0 +1,11 @@ +[Unit] +Description=Network Manager configuration (ignore kernel activated network interfaces) +Before=NetworkManager.service +ConditionPathExists=!/var/run/NetworkManager.conf + +[Service] +Type=oneshot +ExecStart=/lib/init/nm-unmanage.sh + +[Install] +WantedBy=NetworkManager.service diff --git a/generic/lib/systemd/system/NetworkManager.service b/generic/lib/systemd/system/NetworkManager.service new file mode 100644 index 000000000..be03e4d46 --- /dev/null +++ b/generic/lib/systemd/system/NetworkManager.service @@ -0,0 +1,14 @@ +[Unit] +Description=Network Manager +After=syslog.target +Wants=network.target +Before=network.target + +[Service] +Type=dbus +BusName=org.freedesktop.NetworkManager +ExecStart=/usr/sbin/NetworkManager --no-daemon --config=/var/run/NetworkManager.conf --state-file=/var/run/NetworkManager.state + +[Install] +WantedBy=multi-user.target +Alias=dbus-org.freedesktop.NetworkManager.service diff --git a/patches/NetworkManager-0.9.2.0/0001-settings-pass-config-file-name-to-settings-plugins.patch b/patches/NetworkManager-0.9.2.0/0001-settings-pass-config-file-name-to-settings-plugins.patch new file mode 100644 index 000000000..634275be6 --- /dev/null +++ b/patches/NetworkManager-0.9.2.0/0001-settings-pass-config-file-name-to-settings-plugins.patch @@ -0,0 +1,409 @@ +From 7b7e426b653a3a342d7b0522957283d0999a9070 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= <jklimes@redhat.com> +Date: Tue, 15 Nov 2011 13:30:16 +0100 +Subject: [PATCH] settings: pass config file name to settings plugins + +Thus plugins will use the correct configuration file, even in case the name +is specified on command line with --config. +--- + src/settings/nm-settings.c | 7 +++-- + src/settings/nm-system-config-interface.h | 2 +- + src/settings/plugins/ifcfg-rh/plugin.c | 2 +- + src/settings/plugins/ifcfg-suse/plugin.c | 4 +- + src/settings/plugins/ifnet/net_parser.c | 13 +++++++--- + src/settings/plugins/ifnet/plugin.c | 35 ++++++++++++++++++++++++----- + src/settings/plugins/ifnet/plugin.h | 2 + + src/settings/plugins/ifupdown/plugin.c | 28 +++++++++++----------- + src/settings/plugins/keyfile/plugin.c | 29 +++++++++++------------ + src/settings/plugins/keyfile/plugin.h | 4 +- + 10 files changed, 78 insertions(+), 48 deletions(-) + +diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c +index 09433cc..d9ee2dc 100644 +--- a/src/settings/nm-settings.c ++++ b/src/settings/nm-settings.c +@@ -550,6 +550,7 @@ find_plugin (GSList *list, const char *pname) + static gboolean + load_plugins (NMSettings *self, const char **plugins, GError **error) + { ++ NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self); + GSList *list = NULL; + const char **iter; + gboolean success = TRUE; +@@ -559,7 +560,7 @@ load_plugins (NMSettings *self, const char **plugins, GError **error) + char *full_name, *path; + const char *pname = *iter; + GObject *obj; +- GObject * (*factory_func) (void); ++ GObject * (*factory_func) (const char *); + + /* strip leading spaces */ + while (isblank (*pname)) +@@ -602,7 +603,7 @@ load_plugins (NMSettings *self, const char **plugins, GError **error) + break; + } + +- obj = (*factory_func) (); ++ obj = (*factory_func) (priv->config_file); + if (!obj || !NM_IS_SYSTEM_CONFIG_INTERFACE (obj)) { + g_set_error (error, 0, 0, + "Plugin '%s' returned invalid system config object.", +@@ -1573,7 +1574,7 @@ nm_settings_new (const char *config_file, + } + + /* Add the keyfile plugin last */ +- keyfile_plugin = nm_settings_keyfile_plugin_new (); ++ keyfile_plugin = nm_settings_keyfile_plugin_new (config_file); + g_assert (keyfile_plugin); + add_plugin (self, NM_SYSTEM_CONFIG_INTERFACE (keyfile_plugin)); + +diff --git a/src/settings/nm-system-config-interface.h b/src/settings/nm-system-config-interface.h +index 96a6406..bbe74d4 100644 +--- a/src/settings/nm-system-config-interface.h ++++ b/src/settings/nm-system-config-interface.h +@@ -39,7 +39,7 @@ G_BEGIN_DECLS + /* Plugin's factory function that returns a GObject that implements + * NMSystemConfigInterface. + */ +-GObject * nm_system_config_factory (void); ++GObject * nm_system_config_factory (const char *config_file); + + #define NM_TYPE_SYSTEM_CONFIG_INTERFACE (nm_system_config_interface_get_type ()) + #define NM_SYSTEM_CONFIG_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SYSTEM_CONFIG_INTERFACE, NMSystemConfigInterface)) +diff --git a/src/settings/plugins/ifcfg-rh/plugin.c b/src/settings/plugins/ifcfg-rh/plugin.c +index b4be4cb..39c323c 100644 +--- a/src/settings/plugins/ifcfg-rh/plugin.c ++++ b/src/settings/plugins/ifcfg-rh/plugin.c +@@ -790,7 +790,7 @@ system_config_interface_init (NMSystemConfigInterface *system_config_interface_c + } + + G_MODULE_EXPORT GObject * +-nm_system_config_factory (void) ++nm_system_config_factory (const char *config_file) + { + static SCPluginIfcfg *singleton = NULL; + SCPluginIfcfgPrivate *priv; +diff --git a/src/settings/plugins/ifcfg-suse/plugin.c b/src/settings/plugins/ifcfg-suse/plugin.c +index 78db56e..2ec90d8 100644 +--- a/src/settings/plugins/ifcfg-suse/plugin.c ++++ b/src/settings/plugins/ifcfg-suse/plugin.c +@@ -18,7 +18,7 @@ + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * +- * (C) Copyright 2007 - 2009 Red Hat, Inc. ++ * (C) Copyright 2007 - 2011 Red Hat, Inc. + * (C) Copyright 2007 - 2008 Novell, Inc. + */ + +@@ -309,7 +309,7 @@ system_config_interface_init (NMSystemConfigInterface *system_config_interface_c + } + + G_MODULE_EXPORT GObject * +-nm_system_config_factory (void) ++nm_system_config_factory (const char *config_file) + { + static SCPluginIfcfg *singleton = NULL; + +diff --git a/src/settings/plugins/ifnet/net_parser.c b/src/settings/plugins/ifnet/net_parser.c +index a48103d..29a1f34 100644 +--- a/src/settings/plugins/ifnet/net_parser.c ++++ b/src/settings/plugins/ifnet/net_parser.c +@@ -22,6 +22,7 @@ + #include <string.h> + #include <nm-system-config-interface.h> + #include <stdio.h> ++#include "plugin.h" + #include "net_parser.h" + #include "net_utils.h" + +@@ -106,7 +107,6 @@ ignore_connection_name (const char *name) + if (strlen (name) == 12 && is_hex (name)) + result = TRUE; + return result; +- + } + + static gboolean +@@ -195,26 +195,31 @@ destroy_connection_config (GHashTable * conn) + g_hash_table_destroy (conn); + } + +-// read settings from /etc/NetworkManager/nm-system-settings.conf ++/* Read settings from NetworkManager's config file */ + const char * + ifnet_get_global_setting (const char *group, const char *key) + { + GError *error = NULL; + GKeyFile *keyfile = g_key_file_new (); + gchar *result = NULL; ++ const char *conf_file; ++ ++ /* Get confing file name from plugin. */ ++ conf_file = ifnet_plugin_get_conf_file (); + + if (!g_key_file_load_from_file (keyfile, +- IFNET_SYSTEM_SETTINGS_KEY_FILE, ++ conf_file, + G_KEY_FILE_NONE, &error)) { + PLUGIN_WARN (IFNET_PLUGIN_NAME, + "loading system config file (%s) caused error: (%d) %s", +- IFNET_SYSTEM_SETTINGS_KEY_FILE, ++ conf_file, + error ? error->code : -1, error + && error->message ? error->message : "(unknown)"); + } else { + result = g_key_file_get_string (keyfile, group, key, &error); + } + g_key_file_free (keyfile); ++ + return result; + } + +diff --git a/src/settings/plugins/ifnet/plugin.c b/src/settings/plugins/ifnet/plugin.c +index 5908368..8e66297 100644 +--- a/src/settings/plugins/ifnet/plugin.c ++++ b/src/settings/plugins/ifnet/plugin.c +@@ -48,6 +48,7 @@ + typedef struct { + GHashTable *config_connections; + gchar *hostname; ++ char *conf_file; + gboolean unmanaged_well_known; + + GFileMonitor *hostname_monitor; +@@ -494,6 +495,7 @@ dispose (GObject * object) + } + + g_free (priv->hostname); ++ g_free (priv->conf_file); + ifnet_destroy (); + wpa_parser_destroy (); + G_OBJECT_CLASS (sc_plugin_ifnet_parent_class)->dispose (object); +@@ -527,16 +529,37 @@ sc_plugin_ifnet_class_init (SCPluginIfnetClass * req_class) + NM_SYSTEM_CONFIG_INTERFACE_HOSTNAME); + } + ++const char * ++ifnet_plugin_get_conf_file (void) ++{ ++ SCPluginIfnet *ifnet_plugin; ++ SCPluginIfnetPrivate *priv; ++ ++ /* Get config file name. Plugin's singleton has already been created ++ * with correct config file path, so the string passed here has no efect ++ * and we get the valid file name. ++ */ ++ ifnet_plugin = SC_PLUGIN_IFNET (nm_system_config_factory ("fake string")); ++ priv = SC_PLUGIN_IFNET_GET_PRIVATE (ifnet_plugin); ++ g_object_unref (ifnet_plugin); ++ ++ return priv->conf_file; ++} ++ + G_MODULE_EXPORT GObject * +-nm_system_config_factory (void) ++nm_system_config_factory (const char *config_file) + { + static SCPluginIfnet *singleton = NULL; ++ SCPluginIfnetPrivate *priv; + +- if (!singleton) +- singleton +- = +- SC_PLUGIN_IFNET (g_object_new (SC_TYPE_PLUGIN_IFNET, NULL)); +- else ++ if (!singleton) { ++ singleton = SC_PLUGIN_IFNET (g_object_new (SC_TYPE_PLUGIN_IFNET, NULL)); ++ if (singleton) { ++ priv = SC_PLUGIN_IFNET_GET_PRIVATE (singleton); ++ priv->conf_file = strdup (config_file); ++ } ++ } else + g_object_ref (singleton); ++ + return G_OBJECT (singleton); + } +diff --git a/src/settings/plugins/ifnet/plugin.h b/src/settings/plugins/ifnet/plugin.h +index 83099b6..eecab15 100644 +--- a/src/settings/plugins/ifnet/plugin.h ++++ b/src/settings/plugins/ifnet/plugin.h +@@ -43,5 +43,7 @@ struct _SCPluginIfnetClass { + GObjectClass parent; + }; + ++const char * ifnet_plugin_get_conf_file (void); ++ + GType sc_plugin_ifnet_get_type (void); + #endif +diff --git a/src/settings/plugins/ifupdown/plugin.c b/src/settings/plugins/ifupdown/plugin.c +index 9679ede..c0c509a 100644 +--- a/src/settings/plugins/ifupdown/plugin.c ++++ b/src/settings/plugins/ifupdown/plugin.c +@@ -19,7 +19,7 @@ + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * (C) Copyright 2007,2008 Canonical Ltd. +- * (C) Copyright 2009 Red Hat, Inc. ++ * (C) Copyright 2009 - 2011 Red Hat, Inc. + */ + + #include <string.h> +@@ -60,9 +60,6 @@ + #define IFUPDOWN_PLUGIN_INFO "(C) 2008 Canonical Ltd. To report bugs please use the NetworkManager mailing list." + #define IFUPDOWN_SYSTEM_HOSTNAME_FILE "/etc/hostname" + +-#define IFUPDOWN_SYSTEM_SETTINGS_KEY_FILE SYSCONFDIR "/NetworkManager/NetworkManager.conf" +-#define IFUPDOWN_OLD_SYSTEM_SETTINGS_KEY_FILE SYSCONFDIR "/NetworkManager/nm-system-settings.conf" +- + #define IFUPDOWN_KEY_FILE_GROUP "ifupdown" + #define IFUPDOWN_KEY_FILE_KEY_MANAGED "managed" + #define IFUPDOWN_UNMANAGE_WELL_KNOWN_DEFAULT TRUE +@@ -81,7 +78,7 @@ typedef struct { + GHashTable *well_known_interfaces; + GHashTable *well_known_ifaces; + gboolean unmanage_well_known; +- const char *conf_file; ++ char *conf_file; + + gulong inotify_event_id; + int inotify_system_hostname_wd; +@@ -448,12 +445,7 @@ SCPluginIfupdown_init (NMSystemConfigInterface *config) + g_list_free (keys); + g_hash_table_destroy (auto_ifaces); + +- /* Find the config file */ +- if (g_file_test (IFUPDOWN_SYSTEM_SETTINGS_KEY_FILE, G_FILE_TEST_EXISTS)) +- priv->conf_file = IFUPDOWN_SYSTEM_SETTINGS_KEY_FILE; +- else +- priv->conf_file = IFUPDOWN_OLD_SYSTEM_SETTINGS_KEY_FILE; +- ++ /* Read the config file to find out whether to manage interfaces */ + keyfile = g_key_file_new (); + if (!g_key_file_load_from_file (keyfile, + priv->conf_file, +@@ -706,20 +698,28 @@ GObject__dispose (GObject *object) + if (priv->well_known_interfaces) + g_hash_table_destroy(priv->well_known_interfaces); + ++ g_free (priv->conf_file); ++ + if (priv->client) + g_object_unref (priv->client); + ++ + G_OBJECT_CLASS (sc_plugin_ifupdown_parent_class)->dispose (object); + } + + G_MODULE_EXPORT GObject * +-nm_system_config_factory (void) ++nm_system_config_factory (const char *config_file) + { + static SCPluginIfupdown *singleton = NULL; ++ SCPluginIfupdownPrivate *priv; + +- if (!singleton) ++ if (!singleton) { + singleton = SC_PLUGIN_IFUPDOWN (g_object_new (SC_TYPE_PLUGIN_IFUPDOWN, NULL)); +- else ++ if (singleton) { ++ priv = SC_PLUGIN_IFUPDOWN_GET_PRIVATE (singleton); ++ priv->conf_file = strdup (config_file); ++ } ++ } else + g_object_ref (singleton); + + return G_OBJECT (singleton); +diff --git a/src/settings/plugins/keyfile/plugin.c b/src/settings/plugins/keyfile/plugin.c +index af69c20..8d093df 100644 +--- a/src/settings/plugins/keyfile/plugin.c ++++ b/src/settings/plugins/keyfile/plugin.c +@@ -42,9 +42,6 @@ + #include "common.h" + #include "utils.h" + +-#define CONF_FILE SYSCONFDIR "/NetworkManager/NetworkManager.conf" +-#define OLD_CONF_FILE SYSCONFDIR "/NetworkManager/nm-system-settings.conf" +- + static char *plugin_get_hostname (SCPluginKeyfile *plugin); + static void system_config_interface_init (NMSystemConfigInterface *system_config_interface_class); + +@@ -60,7 +57,7 @@ typedef struct { + GFileMonitor *monitor; + guint monitor_id; + +- const char *conf_file; ++ char *conf_file; + GFileMonitor *conf_file_monitor; + guint conf_file_monitor_id; + +@@ -517,14 +514,6 @@ plugin_set_hostname (SCPluginKeyfile *plugin, const char *hostname) + static void + sc_plugin_keyfile_init (SCPluginKeyfile *plugin) + { +- SCPluginKeyfilePrivate *priv = SC_PLUGIN_KEYFILE_GET_PRIVATE (plugin); +- +- if (g_file_test (CONF_FILE, G_FILE_TEST_EXISTS)) +- priv->conf_file = CONF_FILE; +- else +- priv->conf_file = OLD_CONF_FILE; +- +- priv->hostname = plugin_get_hostname (plugin); + } + + static void +@@ -597,6 +586,7 @@ dispose (GObject *object) + } + + g_free (priv->hostname); ++ g_free (priv->conf_file); + + if (priv->hash) + g_hash_table_destroy (priv->hash); +@@ -642,13 +632,22 @@ system_config_interface_init (NMSystemConfigInterface *system_config_interface_c + } + + GObject * +-nm_settings_keyfile_plugin_new (void) ++nm_settings_keyfile_plugin_new (const char *config_file) + { + static SCPluginKeyfile *singleton = NULL; ++ SCPluginKeyfilePrivate *priv; + +- if (!singleton) ++ if (!singleton) { + singleton = SC_PLUGIN_KEYFILE (g_object_new (SC_TYPE_PLUGIN_KEYFILE, NULL)); +- else ++ if (singleton) { ++ priv = SC_PLUGIN_KEYFILE_GET_PRIVATE (singleton); ++ ++ priv->conf_file = strdup (config_file); ++ ++ /* plugin_set_hostname() has to be called *after* priv->conf_file is set */ ++ priv->hostname = plugin_get_hostname (singleton); ++ } ++ } else + g_object_ref (singleton); + + return G_OBJECT (singleton); +diff --git a/src/settings/plugins/keyfile/plugin.h b/src/settings/plugins/keyfile/plugin.h +index af5147e..05d4e2b 100644 +--- a/src/settings/plugins/keyfile/plugin.h ++++ b/src/settings/plugins/keyfile/plugin.h +@@ -16,7 +16,7 @@ + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Copyright (C) 2008 Novell, Inc. +- * Copyright (C) 2008 Red Hat, Inc. ++ * Copyright (C) 2008 - 2011 Red Hat, Inc. + */ + + #ifndef _PLUGIN_H_ +@@ -43,6 +43,6 @@ GType sc_plugin_keyfile_get_type (void); + + GQuark keyfile_plugin_error_quark (void); + +-GObject *nm_settings_keyfile_plugin_new (void); ++GObject *nm_settings_keyfile_plugin_new (const char *config_file); + + #endif /* _PLUGIN_H_ */ diff --git a/patches/NetworkManager-0.9.2.0/series b/patches/NetworkManager-0.9.2.0/series new file mode 100644 index 000000000..2a933dbbe --- /dev/null +++ b/patches/NetworkManager-0.9.2.0/series @@ -0,0 +1 @@ +0001-settings-pass-config-file-name-to-settings-plugins.patch diff --git a/rules/networkmanager.in b/rules/networkmanager.in index e29c5d562..ac895b71e 100644 --- a/rules/networkmanager.in +++ b/rules/networkmanager.in @@ -1,19 +1,36 @@ -## SECTION=shell_and_console +## SECTION=networking -config NETWORKMANAGER +menuconfig NETWORKMANAGER tristate - depends on BROKEN + select DHCP + select DHCP_CLIENT select WIRELESS + select UDEV + select UDEV_LIBGUDEV select DBUS_GLIB select LIBNL select LIBUUID - # FIXME: hal can be configured without policy-kit, but networkmanager depends on it - select HAL - select HAL_POLKIT - prompt "networkmanager" + select WPA_SUPPLICANT + select GNUTLS + select HOST_INTLTOOL + prompt "networkmanager " help NetworkManager is a tool to automate network configuration as far as possible. The project web site is here: http://projects.gnome.org/NetworkManager/ +if NETWORKMANAGER + +config NETWORKMANAGER_STARTSCRIPT + bool + default y + prompt "install /etc/init.d/NetworkManager" + +config NETWORKMANAGER_SYSTEMD_UNIT + bool + default y + depends on SYSTEMD + prompt "install systemd unit files for Network Manager" + +endif diff --git a/rules/networkmanager.make b/rules/networkmanager.make index e7eec7a56..d1b72e5a9 100644 --- a/rules/networkmanager.make +++ b/rules/networkmanager.make @@ -1,6 +1,7 @@ # -*-makefile-*- # # Copyright (C) 2009 by Robert Schwebel <r.schwebel@pengutronix.de> +# (C) 2012 by Jan Luebbe <j.luebbe@pengutronix.de> # # See CREDITS for details about who has contributed to this project. # @@ -16,57 +17,39 @@ PACKAGES-$(PTXCONF_NETWORKMANAGER) += networkmanager # # Paths and names # -NETWORKMANAGER_VERSION := 0.7.0 -NETWORKMANAGER_MD5 := +NETWORKMANAGER_VERSION := 0.9.2.0 +NETWORKMANAGER_MD5 := d7dce01e97758253bc4ed81d7b86045f NETWORKMANAGER := NetworkManager-$(NETWORKMANAGER_VERSION) -NETWORKMANAGER_SUFFIX := tar.gz -NETWORKMANAGER_URL := http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/0.7/$(NETWORKMANAGER).$(NETWORKMANAGER_SUFFIX) +NETWORKMANAGER_SUFFIX := tar.xz +NETWORKMANAGER_URL := http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/0.9/$(NETWORKMANAGER).$(NETWORKMANAGER_SUFFIX) NETWORKMANAGER_SOURCE := $(SRCDIR)/$(NETWORKMANAGER).$(NETWORKMANAGER_SUFFIX) NETWORKMANAGER_DIR := $(BUILDDIR)/$(NETWORKMANAGER) # ---------------------------------------------------------------------------- -# Get -# ---------------------------------------------------------------------------- - -$(NETWORKMANAGER_SOURCE): - @$(call targetinfo) - @$(call get, NETWORKMANAGER) - -# ---------------------------------------------------------------------------- # Prepare # ---------------------------------------------------------------------------- # # autoconf # -NETWORKMANAGER_AUTOCONF := \ +NETWORKMANAGER_CONF_TOOL := autoconf +NETWORKMANAGER_CONF_OPT := \ $(CROSS_AUTOCONF_USR) \ + --disable-static \ --enable-shared \ - --enable-static \ + --disable-nls \ + --disable-rpath \ + --disable-qt \ + --disable-ppp \ + --disable-wimax \ + --disable-polkit \ --enable-more-warnings \ --disable-gtk-doc \ - --with-gnu-ld \ --without-docs \ + --with-gnu-ld \ + --with-crypto=gnutls \ --with-distro=debian -# --with-tags[=TAGS] include additional configurations [automatic] -# --with-distro=DISTRO Specify the Linux distribution to target: One of -# redhat, suse, gentoo, debian, arch, slackware, paldo -# or mandriva -# --with-crypto=nss | gnutls -# Cryptography library to use for certificate and key -# operations -# --with-dbus-sys-dir=DIR where D-BUS system.d directory is -# --with-pppd-plugin-dir=DIR -# path to the pppd plugins directory -# --with-dhcp-client=dhcpcd|dhclient -# path to the chosen dhcp client -# --with-resolvconf=yes|no|path -# Enable resolvconf support -# --with-system-ca-path=/path/to/ssl/certs -# path to system CA certificates -# --with-html-dir=PATH path to installed docs - # ---------------------------------------------------------------------------- # Target-Install # ---------------------------------------------------------------------------- @@ -77,10 +60,51 @@ $(STATEDIR)/networkmanager.targetinstall: @$(call install_init, networkmanager) @$(call install_fixup, networkmanager,PRIORITY,optional) @$(call install_fixup, networkmanager,SECTION,base) - @$(call install_fixup, networkmanager,AUTHOR,"Robert Schwebel <r.schwebel@pengutronix.de>") + @$(call install_fixup, networkmanager,AUTHOR,"Jan Luebbe <j.luebbe@pengutronix.de>") @$(call install_fixup, networkmanager,DESCRIPTION,missing) - @$(call install_copy, networkmanager, 0, 0, 0755, $(NETWORKMANAGER_DIR)/foobar, /dev/null) + @$(call install_alternative, networkmanager, 0, 0, 0644, /etc/NetworkManager/NetworkManager.conf) + @$(call install_copy, networkmanager, 0, 0, 0755, /etc/NetworkManager/dispatcher.d/) + @$(call install_copy, networkmanager, 0, 0, 0755, /etc/NetworkManager/system-connections/) + +# # unmanage NFS root devices + @$(call install_alternative, networkmanager, 0, 0, 0755, /lib/init/nm-unmanage.sh) + +ifdef PTXCONF_INITMETHOD_BBINIT +ifdef PTXCONF_NETWORKMANAGER_STARTSCRIPT + @$(call install_alternative, networkmanager, 0, 0, 0755, /etc/init.d/NetworkManager) + +ifneq ($(call remove_quotes, $(PTXCONF_NETWORKMANAGER_BBINIT_LINK)),) + @$(call install_link, networkmanager, \ + ../init.d/NetworkManager, \ + /etc/rc.d/$(PTXCONF_NETWORKMANAGER_BBINIT_LINK)) +endif +endif +endif +ifdef PTXCONF_NETWORKMANAGER_SYSTEMD_UNIT + @$(call install_alternative, networkmanager, 0, 0, 0644, \ + /lib/systemd/system/NetworkManager.service) + @$(call install_link, networkmanager, ../NetworkManager.service, \ + /lib/systemd/system/multi-user.target.wants/NetworkManager.service) + @$(call install_alternative, networkmanager, 0, 0, 0644, \ + /lib/systemd/system/NetworkManager-unmanage.service) + @$(call install_link, networkmanager, ../NetworkManager-unmanage.service, \ + /lib/systemd/system/NetworkManager.service.wants/NetworkManager-unmanage.service) +endif + + @$(call install_copy, networkmanager, 0, 0, 0755, -, /usr/sbin/NetworkManager) + @$(call install_copy, networkmanager, 0, 0, 0755, -, /usr/bin/nm-online) + @$(call install_copy, networkmanager, 0, 0, 0755, -, /usr/bin/nm-tool) + @$(call install_copy, networkmanager, 0, 0, 0755, -, /usr/bin/nmcli) + + @$(call install_tree, networkmanager, 0, 0, -, /usr/libexec/) + + @$(call install_lib, networkmanager, 0, 0, 0644, NetworkManager/libnm-settings-plugin-ifupdown) + @$(call install_lib, networkmanager, 0, 0, 0644, libnm-util) + @$(call install_lib, networkmanager, 0, 0, 0644, libnm-glib) + + @$(call install_tree, networkmanager, 0, 0, -, /etc/dbus-1/system.d/) + @$(call install_tree, networkmanager, 0, 0, -, /usr/share/dbus-1/system-services/) @$(call install_finish, networkmanager) |