summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Rostovtsev <tetromino@gentoo.org>2011-10-29 06:30:47 +0000
committerAlexandre Rostovtsev <tetromino@gentoo.org>2011-10-29 06:30:47 +0000
commit3dcb0ba3aa9f872a2df04392da66355637c0f9c5 (patch)
tree2702d889af2ce9379c0e7848f0d883c44948a957 /net-misc/networkmanager
parentNew ebuild from the gnome overlay, needed for gnome-3.2. (diff)
downloadgentoo-2-3dcb0ba3aa9f872a2df04392da66355637c0f9c5.tar.gz
gentoo-2-3dcb0ba3aa9f872a2df04392da66355637c0f9c5.tar.bz2
gentoo-2-3dcb0ba3aa9f872a2df04392da66355637c0f9c5.zip
Bump to 0.9.1.90 from the gnome overlay. Allow users in plugdev group to modify system connections (so dropped wireless connections no longer bring up a modal root password prompt), thanks to Samuli Suominen for the solution. Numerous code changes.
(Portage version: 2.2.0_alpha71/cvs/Linux x86_64)
Diffstat (limited to 'net-misc/networkmanager')
-rw-r--r--net-misc/networkmanager/ChangeLog15
-rw-r--r--net-misc/networkmanager/files/01-org.freedesktop.NetworkManager.settings.modify.system.pkla6
-rw-r--r--net-misc/networkmanager/files/networkmanager-0.9.1.90-force-libnl1.1.patch33
-rw-r--r--net-misc/networkmanager/files/networkmanager-0.9.1.90-if.h.patch117
-rw-r--r--net-misc/networkmanager/files/networkmanager-0.9.1.90-rfkill.patch133
-rw-r--r--net-misc/networkmanager/networkmanager-0.9.1.90-r3.ebuild157
6 files changed, 460 insertions, 1 deletions
diff --git a/net-misc/networkmanager/ChangeLog b/net-misc/networkmanager/ChangeLog
index 761598422b10..44744158650c 100644
--- a/net-misc/networkmanager/ChangeLog
+++ b/net-misc/networkmanager/ChangeLog
@@ -1,6 +1,19 @@
# ChangeLog for net-misc/networkmanager
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/ChangeLog,v 1.116 2011/10/27 05:50:07 tetromino Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/ChangeLog,v 1.117 2011/10/29 06:30:47 tetromino Exp $
+
+*networkmanager-0.9.1.90-r3 (29 Oct 2011)
+
+ 29 Oct 2011; Alexandre Rostovtsev <tetromino@gentoo.org>
+ +files/01-org.freedesktop.NetworkManager.settings.modify.system.pkla,
+ +networkmanager-0.9.1.90-r3.ebuild,
+ +files/networkmanager-0.9.1.90-force-libnl1.1.patch,
+ +files/networkmanager-0.9.1.90-if.h.patch,
+ +files/networkmanager-0.9.1.90-rfkill.patch:
+ Bump to 0.9.1.90 from the gnome overlay. Allow users in plugdev group to
+ modify system connections (so dropped wireless connections no longer bring up
+ a modal root password prompt), thanks to Samuli Suominen for the solution.
+ Numerous code changes.
27 Oct 2011; Alexandre Rostovtsev <tetromino@gentoo.org>
networkmanager-0.8-r1.ebuild, networkmanager-0.8.4.0-r2.ebuild,
diff --git a/net-misc/networkmanager/files/01-org.freedesktop.NetworkManager.settings.modify.system.pkla b/net-misc/networkmanager/files/01-org.freedesktop.NetworkManager.settings.modify.system.pkla
new file mode 100644
index 000000000000..d4433274cf46
--- /dev/null
+++ b/net-misc/networkmanager/files/01-org.freedesktop.NetworkManager.settings.modify.system.pkla
@@ -0,0 +1,6 @@
+[Let users in plugdev group modify NetworkManager]
+Identity=unix-group:plugdev
+Action=org.freedesktop.NetworkManager.settings.modify.system
+ResultAny=no
+ResultInactive=no
+ResultActive=yes \ No newline at end of file
diff --git a/net-misc/networkmanager/files/networkmanager-0.9.1.90-force-libnl1.1.patch b/net-misc/networkmanager/files/networkmanager-0.9.1.90-force-libnl1.1.patch
new file mode 100644
index 000000000000..e4da7b3990bc
--- /dev/null
+++ b/net-misc/networkmanager/files/networkmanager-0.9.1.90-force-libnl1.1.patch
@@ -0,0 +1,33 @@
+Build against libnl:1.1 only. Otherwise, networkmanager will link to
+libnl-3.so and to libiWmxSdk (from wimax-1.5.2) which links to libnl.so,
+and then explode spectacularly at runtime due to symbol collisions.
+
+diff --git a/configure.ac b/configure.ac
+index 117dd91..b8b11de 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -323,24 +323,6 @@ if (test "${have_libnl1}" = "yes"); then
+ have_libnl="yes"
+ fi
+
+-PKG_CHECK_MODULES(LIBNL2, libnl-2.0, [have_libnl2=yes], [have_libnl2=no])
+-if (test "${have_libnl2}" = "yes"); then
+- AC_DEFINE(HAVE_LIBNL2, 1, [Define if you require specific libnl-2 support])
+- LIBNL_CFLAGS="$LIBNL2_CFLAGS"
+- LIBNL_LIBS="$LIBNL2_LIBS"
+- libnl_version="2"
+- have_libnl="yes"
+-fi
+-
+-PKG_CHECK_MODULES(LIBNL3, libnl-3.0, [have_libnl2=yes], [have_libnl2=no])
+-if (test "${have_libnl2}" = "yes"); then
+- AC_DEFINE(HAVE_LIBNL3, 1, [Define if you require specific libnl-3 support])
+- LIBNL_CFLAGS="$LIBNL3_CFLAGS"
+- LIBNL_LIBS="$LIBNL3_LIBS"
+- libnl_version="3"
+- have_libnl="yes"
+-fi
+-
+ if (test "${have_libnl}" = "no"); then
+ AC_MSG_ERROR([libnl development header are required])
+ fi
diff --git a/net-misc/networkmanager/files/networkmanager-0.9.1.90-if.h.patch b/net-misc/networkmanager/files/networkmanager-0.9.1.90-if.h.patch
new file mode 100644
index 000000000000..20785693cc05
--- /dev/null
+++ b/net-misc/networkmanager/files/networkmanager-0.9.1.90-if.h.patch
@@ -0,0 +1,117 @@
+commit 00f2b0a9bb806be64c5868af44f43dbe55bdd75b
+Author: Thomas Graf <tgraf@redhat.com>
+Date: Fri Sep 23 13:46:41 2011 +0200
+
+ core: Include <linux/if.h> instead of <net/if.h>
+
+ NM already includes <linux/if.h> in some places, f.e. nm-netlink-monitor and
+ we can't mix usage of the two. Stick to using <linux/if.h> as it provides
+ additional flag definitions such as operational link state and link mode.
+
+ Signed-off-by: Thomas Graf <tgraf@redhat.com>
+
+ [ Alexandre Rostovtsev <tetromino@gentoo.org>: remove parts of commit
+ unrelated to if.h changes. ]
+
+diff --git a/include/wireless-helper.h b/include/wireless-helper.h
+index d150ef7..2e4509a 100644
+--- a/include/wireless-helper.h
++++ b/include/wireless-helper.h
+@@ -27,6 +27,6 @@
+ #include <sys/types.h>
+ #include <linux/types.h>
+ #include <sys/socket.h>
+-#include <net/if.h>
++#include <linux/if.h>
+ #include <wireless.h>
+
+diff --git a/src/nm-device.c b/src/nm-device.c
+index c0b1b87..559606c 100644
+--- a/src/nm-device.c
++++ b/src/nm-device.c
+@@ -25,7 +25,6 @@
+ #include <dbus/dbus.h>
+ #include <netinet/in.h>
+ #include <string.h>
+-#include <net/if.h>
+ #include <unistd.h>
+ #include <errno.h>
+ #include <sys/ioctl.h>
+@@ -34,6 +33,7 @@
+ #include <sys/wait.h>
+ #include <arpa/inet.h>
+ #include <fcntl.h>
++#include <linux/if.h>
+
+ #include "nm-glib-compat.h"
+ #include "nm-device-interface.h"
+diff --git a/src/nm-system.c b/src/nm-system.c
+index 0b29468..473fcec 100644
+--- a/src/nm-system.c
++++ b/src/nm-system.c
+@@ -40,7 +40,7 @@
+ #include <netdb.h>
+ #include <glib.h>
+ #include <ctype.h>
+-#include <net/if.h>
++#include <linux/if.h>
+
+ #include "nm-system.h"
+ #include "nm-device.h"
+diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c
+index 522c075..3546f8d 100644
+--- a/src/ppp-manager/nm-ppp-manager.c
++++ b/src/ppp-manager/nm-ppp-manager.c
+@@ -32,7 +32,7 @@
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <asm/types.h>
+-#include <net/if.h>
++#include <linux/if.h>
+ #include <sys/stat.h>
+
+ #include <linux/ppp_defs.h>
+diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c
+index 691a176..910cca3 100644
+--- a/src/settings/plugins/ifcfg-rh/reader.c
++++ b/src/settings/plugins/ifcfg-rh/reader.c
+@@ -28,10 +28,10 @@
+ #include <ctype.h>
+ #include <sys/inotify.h>
+ #include <errno.h>
+-#include <net/if.h>
+ #include <sys/ioctl.h>
+ #include <unistd.h>
+ #include <netinet/ether.h>
++#include <linux/if.h>
+
+ #ifndef __user
+ #define __user
+diff --git a/src/wimax/iwmxsdk.c b/src/wimax/iwmxsdk.c
+index ff6b553..9c3a78b 100644
+--- a/src/wimax/iwmxsdk.c
++++ b/src/wimax/iwmxsdk.c
+@@ -27,7 +27,8 @@
+ #include <stdlib.h>
+ #include <errno.h>
+ #include <string.h>
+-#include <net/if.h>
++#include <sys/socket.h>
++#include <linux/if.h>
+
+ #include <glib.h>
+
+diff --git a/src/wimax/nm-device-wimax.c b/src/wimax/nm-device-wimax.c
+index b6afc27..6654140 100644
+--- a/src/wimax/nm-device-wimax.c
++++ b/src/wimax/nm-device-wimax.c
+@@ -23,7 +23,8 @@
+ #include <unistd.h>
+ #include <sys/ioctl.h>
+ #include <net/ethernet.h>
+-#include <net/if.h>
++#include <sys/socket.h>
++#include <linux/if.h>
+
+ #include <WiMaxAPI.h>
+ #include <WiMaxAPIEx.h>
diff --git a/net-misc/networkmanager/files/networkmanager-0.9.1.90-rfkill.patch b/net-misc/networkmanager/files/networkmanager-0.9.1.90-rfkill.patch
new file mode 100644
index 000000000000..0ddf3ad7c6c6
--- /dev/null
+++ b/net-misc/networkmanager/files/networkmanager-0.9.1.90-rfkill.patch
@@ -0,0 +1,133 @@
+From 339229e4c698c61e20a28bfc33d8501490891427 Mon Sep 17 00:00:00 2001
+From: Gary Ching-Pang Lin <chingpang@gmail.com>
+Date: Tue, 20 Sep 2011 08:36:35 +0000
+Subject: core: improving handling of rfkill (bgo #655773)
+
+This commit improves the handling of rfkill.
+
+- The original two passes check gathers the states of platform
+ and non-platform switches in two separate loops. Now we gather
+ the both states in one loop and determine the final states later.
+
+- A new rule is used to determine the states of switches.
+
+ if (platform_state == UNBLOCKED)
+ choose non_platform_state;
+ else
+ choose platform_state;
+
+ The state is UNBLOCKED if and only if both the platform and
+ non-platform switches are unblocked, so the ambiguous state in
+ bgo#655773 will not happen.
+
+ Original code always preferred the platform switch state over
+ the device switch state, so if the platform switch was UNBLOCKED
+ but the device was BLOCKED, NM would treat the device as
+ UNBLOCKED and try to activate it, and obviously fail.
+---
+diff --git a/src/nm-udev-manager.c b/src/nm-udev-manager.c
+index 72501c2..3e855b7 100644
+--- a/src/nm-udev-manager.c
++++ b/src/nm-udev-manager.c
+@@ -195,78 +195,50 @@ recheck_killswitches (NMUdevManager *self)
+ NMUdevManagerPrivate *priv = NM_UDEV_MANAGER_GET_PRIVATE (self);
+ GSList *iter;
+ RfKillState poll_states[RFKILL_TYPE_MAX];
++ RfKillState platform_states[RFKILL_TYPE_MAX];
+ gboolean platform_checked[RFKILL_TYPE_MAX];
+ int i;
+
+ /* Default state is unblocked */
+ for (i = 0; i < RFKILL_TYPE_MAX; i++) {
+ poll_states[i] = RFKILL_UNBLOCKED;
++ platform_states[i] = RFKILL_UNBLOCKED;
+ platform_checked[i] = FALSE;
+ }
+
+- /* Perform two passes here; the first pass is for non-platform switches,
+- * which typically if hardkilled cannot be changed except by a physical
+- * hardware switch. The second pass checks platform killswitches, which
+- * take precedence over device killswitches, because typically platform
+- * killswitches control device killswitches. That is, a hardblocked device
+- * switch can often be unblocked by a platform switch. Thus if we have
+- * a hardblocked device switch and a softblocked platform switch, the
+- * combined state should be softblocked since the platform switch can be
+- * unblocked to change the device switch.
+- */
+-
+- /* Device switches first */
++ /* Poll the states of all killswitches */
+ for (iter = priv->killswitches; iter; iter = g_slist_next (iter)) {
+ Killswitch *ks = iter->data;
+ GUdevDevice *device;
+ RfKillState dev_state;
+ int sysfs_state;
+
+- if (ks->platform == FALSE) {
+- device = g_udev_client_query_by_subsystem_and_name (priv->client, "rfkill", ks->name);
+- if (device) {
+- sysfs_state = g_udev_device_get_property_as_int (device, "RFKILL_STATE");
+- dev_state = sysfs_state_to_nm_state (sysfs_state);
++ device = g_udev_client_query_by_subsystem_and_name (priv->client, "rfkill", ks->name);
++ if (device) {
++ sysfs_state = g_udev_device_get_property_as_int (device, "RFKILL_STATE");
++ dev_state = sysfs_state_to_nm_state (sysfs_state);
++ if (ks->platform == FALSE) {
+ if (dev_state > poll_states[ks->rtype])
+ poll_states[ks->rtype] = dev_state;
+- g_object_unref (device);
+- }
+- }
+- }
+-
+- /* Platform switches next; their state overwrites device state */
+- for (iter = priv->killswitches; iter; iter = g_slist_next (iter)) {
+- Killswitch *ks = iter->data;
+- GUdevDevice *device;
+- RfKillState dev_state;
+- int sysfs_state;
+-
+- if (ks->platform == TRUE) {
+- device = g_udev_client_query_by_subsystem_and_name (priv->client, "rfkill", ks->name);
+- if (device) {
+- sysfs_state = g_udev_device_get_property_as_int (device, "RFKILL_STATE");
+- dev_state = sysfs_state_to_nm_state (sysfs_state);
+-
+- if (platform_checked[ks->rtype] == FALSE) {
+- /* Overwrite device state with platform state for first
+- * platform switch found.
+- */
+- poll_states[ks->rtype] = dev_state;
+- platform_checked[ks->rtype] = TRUE;
+- } else {
+- /* If there are multiple platform switches of the same type,
+- * take the "worst" state for all of that type.
+- */
+- if (dev_state > poll_states[ks->rtype])
+- poll_states[ks->rtype] = dev_state;
+- }
+- g_object_unref (device);
++ } else {
++ platform_checked[ks->rtype] = TRUE;
++ if (dev_state > platform_states[ks->rtype])
++ platform_states[ks->rtype] = dev_state;
+ }
++ g_object_unref (device);
+ }
+ }
+
+ /* Log and emit change signal for final rfkill states */
+ for (i = 0; i < RFKILL_TYPE_MAX; i++) {
++ if (platform_checked[i] == TRUE) {
++ /* blocked platform switch state overrides device state, otherwise
++ * let the device state stand. (bgo #655773)
++ */
++ if (platform_states[i] != RFKILL_UNBLOCKED)
++ poll_states[i] = platform_states[i];
++ }
++
+ if (poll_states[i] != priv->rfkill_states[i]) {
+ nm_log_dbg (LOGD_RFKILL, "%s rfkill state now '%s'",
+ rfkill_type_to_desc (i),
+--
+cgit v0.9.0.2-2-gbebe
diff --git a/net-misc/networkmanager/networkmanager-0.9.1.90-r3.ebuild b/net-misc/networkmanager/networkmanager-0.9.1.90-r3.ebuild
new file mode 100644
index 000000000000..84a90c3c87be
--- /dev/null
+++ b/net-misc/networkmanager/networkmanager-0.9.1.90-r3.ebuild
@@ -0,0 +1,157 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/networkmanager-0.9.1.90-r3.ebuild,v 1.1 2011/10/29 06:30:47 tetromino Exp $
+
+EAPI="4"
+GNOME_ORG_MODULE="NetworkManager"
+
+inherit autotools eutils gnome.org linux-info systemd
+
+DESCRIPTION="Network configuration and management in an easy way. Desktop environment independent."
+HOMEPAGE="http://www.gnome.org/projects/NetworkManager/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="avahi bluetooth doc +nss gnutls dhclient +dhcpcd +introspection
+ kernel_linux +ppp resolvconf connection-sharing wimax"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86"
+
+REQUIRED_USE="
+ ^^ ( nss gnutls )
+ ^^ ( dhclient dhcpcd )"
+
+# gobject-introspection-0.10.3 is needed due to gnome bug 642300
+# wpa_supplicant-0.7.3-r3 is needed due to bug 359271
+# libnl:1.1 is needed for linking to net-wireless/wimax libraries
+# XXX: on bump, check that net-wireless/wimax is still using libnl:1.1 !
+# TODO: Qt support?
+COMMON_DEPEND=">=sys-apps/dbus-1.2
+ >=dev-libs/dbus-glib-0.75
+ >=net-wireless/wireless-tools-28_pre9
+ || ( >=sys-fs/udev-171[gudev] >=sys-fs/udev-147[extras] )
+ >=dev-libs/glib-2.26
+ >=sys-auth/polkit-0.97
+ dev-libs/libnl:1.1
+ >=net-wireless/wpa_supplicant-0.7.3-r3[dbus]
+ bluetooth? ( >=net-wireless/bluez-4.82 )
+ avahi? ( net-dns/avahi[autoipd] )
+ gnutls? (
+ dev-libs/libgcrypt
+ net-libs/gnutls )
+ nss? ( >=dev-libs/nss-3.11 )
+ dhclient? ( net-misc/dhcp )
+ dhcpcd? ( >=net-misc/dhcpcd-4.0.0_rc3 )
+ introspection? ( >=dev-libs/gobject-introspection-0.10.3 )
+ ppp? (
+ >=net-misc/modemmanager-0.4
+ >=net-dialup/ppp-2.4.5 )
+ resolvconf? ( net-dns/openresolv )
+ connection-sharing? (
+ net-dns/dnsmasq
+ net-firewall/iptables )
+ wimax? ( >=net-wireless/wimax-1.5.1 )"
+
+RDEPEND="${COMMON_DEPEND}
+ sys-auth/consolekit"
+
+DEPEND="${COMMON_DEPEND}
+ dev-util/pkgconfig
+ >=dev-util/intltool-0.40
+ >=sys-devel/gettext-0.17
+ doc? ( >=dev-util/gtk-doc-1.8 )"
+
+sysfs_deprecated_check() {
+ ebegin "Checking for SYSFS_DEPRECATED support"
+
+ if { linux_chkconfig_present SYSFS_DEPRECATED_V2; }; then
+ eerror "Please disable SYSFS_DEPRECATED_V2 support in your kernel config and recompile your kernel"
+ eerror "or NetworkManager will not work correctly."
+ eerror "See http://bugs.gentoo.org/333639 for more info."
+ die "CONFIG_SYSFS_DEPRECATED_V2 support detected!"
+ fi
+ eend $?
+}
+
+pkg_pretend() {
+ if use kernel_linux; then
+ get_version
+ if linux_config_exists; then
+ sysfs_deprecated_check
+ else
+ ewarn "Was unable to determine your kernel .config"
+ ewarn "Please note that if CONFIG_SYSFS_DEPRECATED_V2 is set in your kernel .config, NetworkManager will not work correctly."
+ ewarn "See http://bugs.gentoo.org/333639 for more info."
+ fi
+
+ fi
+}
+
+pkg_setup() {
+ enewgroup plugdev
+}
+
+src_prepare() {
+ # Don't build tests
+ epatch "${FILESDIR}/${PN}-0.9_rc3-fix-tests.patch"
+ # Build against libnl:1.1 for net-wireless/wimax-1.5.2 compatibility
+ epatch "${FILESDIR}/${P}-force-libnl1.1.patch"
+ # Fix <linux/if.h> & <net/if.h> conflict, in next release (bug #388609)
+ epatch "${FILESDIR}/${P}-if.h.patch"
+ # Fix rfkill handling, will be in next release
+ epatch "${FILESDIR}/${P}-rfkill.patch"
+ eautoreconf
+ default
+}
+
+src_configure() {
+ ECONF="--disable-more-warnings
+ --disable-static
+ --localstatedir=/var
+ --with-distro=gentoo
+ --with-dbus-sys-dir=/etc/dbus-1/system.d
+ --with-udev-dir=/lib/udev
+ --with-iptables=/sbin/iptables
+ $(use_enable doc gtk-doc)
+ $(use_enable introspection)
+ $(use_enable ppp)
+ $(use_enable wimax)
+ $(use_with dhclient)
+ $(use_with dhcpcd)
+ $(use_with doc docs)
+ $(use_with resolvconf)
+ $(systemd_with_unitdir)"
+
+ if use nss ; then
+ ECONF="${ECONF} $(use_with nss crypto=nss)"
+ else
+ ECONF="${ECONF} $(use_with gnutls crypto=gnutls)"
+ fi
+
+ econf ${ECONF}
+}
+
+src_install() {
+ default
+ # Need to keep the /var/run/NetworkManager directory
+ keepdir /var/run/NetworkManager
+
+ # Need to keep the /etc/NetworkManager/dispatched.d for dispatcher scripts
+ keepdir /etc/NetworkManager/dispatcher.d
+
+ # Add keyfile plugin support
+ keepdir /etc/NetworkManager/system-connections
+ insinto /etc/NetworkManager
+ newins "${FILESDIR}/nm-system-settings.conf-ifnet" nm-system-settings.conf
+
+ # Allow users in plugdev group to modify system connections
+ insinto /etc/polkit-1/localauthority/10-vendor.d
+ doins "${FILESDIR}/01-org.freedesktop.NetworkManager.settings.modify.system.pkla"
+
+ # Remove useless .la files
+ find "${D}" -name '*.la' -exec rm -f {} + || die "la file removal failed"
+}
+
+pkg_postinst() {
+ elog "To modify system network connections without needing to enter the"
+ elog "root password, add your user account to the 'plugdev' group."
+}