diff options
author | Alexandre Rostovtsev <tetromino@gentoo.org> | 2011-10-29 06:30:47 +0000 |
---|---|---|
committer | Alexandre Rostovtsev <tetromino@gentoo.org> | 2011-10-29 06:30:47 +0000 |
commit | 3dcb0ba3aa9f872a2df04392da66355637c0f9c5 (patch) | |
tree | 2702d889af2ce9379c0e7848f0d883c44948a957 /net-misc/networkmanager | |
parent | New ebuild from the gnome overlay, needed for gnome-3.2. (diff) | |
download | gentoo-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')
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." +} |