From 6ea4072239410eaa34ceb6edc7294bac50db4615 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Canek=20Pel=C3=A1ez=20Vald=C3=A9s?= Date: Thu, 2 Dec 2010 14:04:02 -0600 Subject: [PATCH] NetworkManager ebuild with systemd use flag that applies a patch that avoids the use of /etc/init.d scripts in the Gentoo backend. --- net-misc/networkmanager/Manifest | 7 + .../files/networkmanager-0.8-confchanges.patch | 19 +++ .../files/networkmanager-0.8-gentoo-systemd.patch | 31 +++++ .../networkmanager-0.8-nscd-clear-cache.patch | 42 +++++++ .../files/networkmanager-0.8-read-hostname.patch | 76 ++++++++++++ .../networkmanager/files/nm-system-settings.conf | 2 + .../networkmanager/networkmanager-0.8-r1.ebuild | 130 ++++++++++++++++++++ 7 files changed, 307 insertions(+), 0 deletions(-) create mode 100644 net-misc/networkmanager/Manifest create mode 100644 net-misc/networkmanager/files/networkmanager-0.8-confchanges.patch create mode 100644 net-misc/networkmanager/files/networkmanager-0.8-gentoo-systemd.patch create mode 100644 net-misc/networkmanager/files/networkmanager-0.8-nscd-clear-cache.patch create mode 100644 net-misc/networkmanager/files/networkmanager-0.8-read-hostname.patch create mode 100644 net-misc/networkmanager/files/nm-system-settings.conf create mode 100644 net-misc/networkmanager/networkmanager-0.8-r1.ebuild diff --git a/net-misc/networkmanager/Manifest b/net-misc/networkmanager/Manifest new file mode 100644 index 0000000..153a48b --- /dev/null +++ b/net-misc/networkmanager/Manifest @@ -0,0 +1,7 @@ +AUX networkmanager-0.8-confchanges.patch 1063 RMD160 25a0d45410fa5590098386556e9947dd15507eda SHA1 ba6eaa63188f97f93bbbb327676d8104bbf7e8c8 SHA256 9fcbe0b9ab4cc38c9057a0dde2f5153efc12515ed4d28920a455dad7fc2b1e09 +AUX networkmanager-0.8-gentoo-systemd.patch 1140 RMD160 80357f0b8128ec276b336e194438322c5098dc70 SHA1 eb73e56fb7334d3637cb178e24dc28ca42549d68 SHA256 0d407013b9b0b997533007192e2da0ed85e98ff4bf6879b4a85801dd4004c471 +AUX networkmanager-0.8-nscd-clear-cache.patch 1214 RMD160 2381f455593202a740e634601c0ba8245ecb8fac SHA1 b4a0cec446b6f8fa81c06d5992db61b296f17057 SHA256 2d981bafa96607acb06740d78b8e33afdc675c52b0cf3ce5b098c67566362c99 +AUX networkmanager-0.8-read-hostname.patch 2380 RMD160 8b4349293235d2b63546b4e65d30a94d91ab9a04 SHA1 f7d57c686e9bd1f1ac58e67efcd8255c0fc9a5c5 SHA256 5ee07a0fb949c7ce299f0d2459c4f9840ace765308cd1a208d89eecec51a63fe +AUX nm-system-settings.conf 23 RMD160 6d66c702b345bde668a420a15716feea6005fbd1 SHA1 49ba558d20f5ca5a201e027e13b878dd5ac3569c SHA256 44b048804c7c0b8b3b0c29b8632b6ad613c397d0a1635ec918e10c0fbcdadf21 +DIST NetworkManager-0.8.tar.bz2 1376044 RMD160 40074f52a79965510de816c0e94d1b9ac582c522 SHA1 fd290057a9246055fa59507b6a3d6b99ceb4c3dc SHA256 4ac38f5c6ddbbcc67601ba898dd475457e2d259b77f9680eee51cb07f19c1b05 +EBUILD networkmanager-0.8-r1.ebuild 3636 RMD160 d515e598ab7941cc40387204d2da67ad92735ed2 SHA1 ce04a23bb862f40524c242d00ab09537f86d6398 SHA256 695c48ab1be8bc4c2ab5ecab1f7a4ffcb1fdca5cb46e68835de355146bd2ff0c diff --git a/net-misc/networkmanager/files/networkmanager-0.8-confchanges.patch b/net-misc/networkmanager/files/networkmanager-0.8-confchanges.patch new file mode 100644 index 0000000..039a074 --- /dev/null +++ b/net-misc/networkmanager/files/networkmanager-0.8-confchanges.patch @@ -0,0 +1,19 @@ +diff '--exclude-from=/home/dang/.scripts/diffrc' -up -ruN NetworkManager-0.8.orig/src/NetworkManager.conf NetworkManager-0.8/src/NetworkManager.conf +--- NetworkManager-0.8.orig/src/NetworkManager.conf 2010-02-18 10:47:45.000000000 -0500 ++++ NetworkManager-0.8/src/NetworkManager.conf 2010-03-30 11:27:27.751522916 -0400 +@@ -56,6 +56,15 @@ + + ++ ++ ++ ++ ++ ++ ++ + + + diff --git a/net-misc/networkmanager/files/networkmanager-0.8-gentoo-systemd.patch b/net-misc/networkmanager/files/networkmanager-0.8-gentoo-systemd.patch new file mode 100644 index 0000000..458d128 --- /dev/null +++ b/net-misc/networkmanager/files/networkmanager-0.8-gentoo-systemd.patch @@ -0,0 +1,31 @@ +diff -burN NetworkManager-0.8/src/backends/NetworkManagerGentoo.c NetworkManager-0.8.new/src/backends/NetworkManagerGentoo.c +--- NetworkManager-0.8/src/backends/NetworkManagerGentoo.c 2009-12-23 12:30:29.000000000 -0600 ++++ NetworkManager-0.8.new/src/backends/NetworkManagerGentoo.c 2010-12-02 12:28:23.000000000 -0600 +@@ -43,9 +43,7 @@ + */ + void nm_system_enable_loopback (void) + { +- /* No need to run net.lo if it is already running */ +- if (nm_spawn_process ("/etc/init.d/net.lo status") != 0) +- nm_spawn_process("/etc/init.d/net.lo start"); ++ nm_generic_enable_loopback (); + } + + /* +@@ -57,11 +55,9 @@ + */ + void nm_system_update_dns (void) + { +- #ifdef NM_NO_NAMED +- if (nm_spawn_process ("/etc/init.d/nscd status") == 0) +- nm_spawn_process ("/etc/init.d/nscd restart"); +- #else +- nm_spawn_process("/usr/bin/killall -q nscd"); +- #endif ++ /* Someday the unit file would be there, I hope */ ++ if (g_file_test ("/lib/systemd/system/nscd.service", G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) { ++ if (nm_spawn_process ("/bin/systemctl status nscd.service") == 0) ++ nm_spawn_process ("/bin/systemctl restart nscd.service"); ++ } + } +- diff --git a/net-misc/networkmanager/files/networkmanager-0.8-nscd-clear-cache.patch b/net-misc/networkmanager/files/networkmanager-0.8-nscd-clear-cache.patch new file mode 100644 index 0000000..e92c883 --- /dev/null +++ b/net-misc/networkmanager/files/networkmanager-0.8-nscd-clear-cache.patch @@ -0,0 +1,42 @@ +From 327e00f06358ef388f4fad5abcb016daa0ec3452 Mon Sep 17 00:00:00 2001 +From: Robert Piasek +Date: Mon, 22 Feb 2010 10:34:23 +0000 +Subject: [PATCH] fix: use nscd -i to clear cache + + +Signed-off-by: Robert Piasek +--- + src/backends/NetworkManagerGentoo.c | 11 +++++------ + 1 files changed, 5 insertions(+), 6 deletions(-) + +diff --git a/src/backends/NetworkManagerGentoo.c b/src/backends/NetworkManagerGentoo.c +index 7fa1207..aa4b40c 100644 +--- a/src/backends/NetworkManagerGentoo.c ++++ b/src/backends/NetworkManagerGentoo.c +@@ -34,6 +34,7 @@ + #include "NetworkManagerGeneric.h" + #include "NetworkManagerSystem.h" + #include "NetworkManagerUtils.h" ++#include "nm-utils.h" + + /* + * nm_system_enable_loopback +@@ -57,11 +58,9 @@ void nm_system_enable_loopback (void) + */ + void nm_system_update_dns (void) + { +- #ifdef NM_NO_NAMED +- if (nm_spawn_process ("/etc/init.d/nscd status") == 0) +- nm_spawn_process ("/etc/init.d/nscd restart"); +- #else +- nm_spawn_process("/usr/bin/killall -q nscd"); +- #endif ++ if (g_file_test ("/usr/sbin/nscd", G_FILE_TEST_IS_EXECUTABLE)) { ++ nm_info ("Clearing nscd hosts cache."); ++ nm_spawn_process ("/usr/sbin/nscd -i hosts"); ++ } + } + +-- +1.7.0 + diff --git a/net-misc/networkmanager/files/networkmanager-0.8-read-hostname.patch b/net-misc/networkmanager/files/networkmanager-0.8-read-hostname.patch new file mode 100644 index 0000000..ac59fe2 --- /dev/null +++ b/net-misc/networkmanager/files/networkmanager-0.8-read-hostname.patch @@ -0,0 +1,76 @@ +When reading hostname from NM keyfile, if no hostname is set, read from the +system file at /etc/conf.d/hostname to set hostname. This patch is not meant to +be ever upstreamed. Proper fix is to write a gentoo-specific ifcfg plugin. + +To change hostname, touch nm-system-settings.conf, which will reload the keyfile +and cause /etc/conf.d/hostname to be reloaded. + +This horrible hack fixes http://bugs.gentoo.org/176873 + +Author: Nirbheek Chauhan +Reviewed-by: Arun Raghavan + +--- +--- system-settings/plugins/keyfile/plugin.c ++++ system-settings/plugins/keyfile/plugin.c +@@ -43,6 +43,9 @@ + #define KEYFILE_PLUGIN_INFO "(c) 2007 - 2008 Red Hat, Inc. To report bugs please use the NetworkManager mailing list." + + #define CONF_FILE SYSCONFDIR "/NetworkManager/nm-system-settings.conf" ++#ifdef TARGET_GENTOO ++#define HOSTNAME_FILE SYSCONFDIR "/conf.d/hostname" ++#endif + + static char *plugin_get_hostname (SCPluginKeyfile *plugin); + static void system_config_interface_init (NMSystemConfigInterface *system_config_interface_class); +@@ -381,6 +384,12 @@ + GKeyFile *key_file; + char *hostname = NULL; + GError *error = NULL; ++#ifdef TARGET_GENTOO ++ char *contents = NULL; ++ char **lines = NULL, **line; ++ GError *contents_err = NULL; ++ gsize contents_len = 0; ++#endif + + key_file = g_key_file_new (); + if (g_key_file_load_from_file (key_file, CONF_FILE, G_KEY_FILE_NONE, &error)) +@@ -392,7 +401,37 @@ + + g_key_file_free (key_file); + ++ if (hostname) ++ goto out; ++#ifdef TARGET_GENTOO ++ /* If hostname is unset in keyfile, read system file to get hostname */ ++ if (!g_file_get_contents (HOSTNAME_FILE, &contents, ++ &contents_len, &contents_err)) ++ goto out; ++ ++ lines = g_strsplit_set (contents, "\n\r", 0); ++ if (!lines) ++ goto out; ++ ++ for (line = lines; *line; line++) { ++ if (!g_str_has_prefix (*line, "hostname=")) ++ continue; ++ hostname = g_strsplit_set (g_strsplit_set (*line, "=", 0)[1], "#", 0)[0]; ++ g_strstrip (hostname); ++ if (!hostname) ++ goto out; ++ /* Remove quotes surrounding hostname */ ++ if (hostname[0] == '"' && hostname[strlen(hostname)-1] == '"') ++ contents = g_strndup(&hostname[1], strlen(hostname)-2); ++ /* Un-escape before using to imitate librc behaviour */ ++ hostname = g_strcompress (contents); ++ } ++ ++out: ++ g_error_free(contents_err); ++ + return hostname; ++#endif + } + + static gboolean diff --git a/net-misc/networkmanager/files/nm-system-settings.conf b/net-misc/networkmanager/files/nm-system-settings.conf new file mode 100644 index 0000000..c37b596 --- /dev/null +++ b/net-misc/networkmanager/files/nm-system-settings.conf @@ -0,0 +1,2 @@ +[main] +plugins=keyfile diff --git a/net-misc/networkmanager/networkmanager-0.8-r1.ebuild b/net-misc/networkmanager/networkmanager-0.8-r1.ebuild new file mode 100644 index 0000000..cb6abd2 --- /dev/null +++ b/net-misc/networkmanager/networkmanager-0.8-r1.ebuild @@ -0,0 +1,130 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-misc/networkmanager/networkmanager-0.8-r1.ebuild,v 1.10 2010/10/28 09:08:46 ssuominen Exp $ + +EAPI="2" + +inherit gnome.org eutils + +# NetworkManager likes itself with capital letters +MY_PN=${PN/networkmanager/NetworkManager} +MY_P=${MY_PN}-${PV} + +DESCRIPTION="Network configuration and management in an easy way. Desktop environment independent." +HOMEPAGE="http://www.gnome.org/projects/NetworkManager/" +SRC_URI="${SRC_URI//${PN}/${MY_PN}}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 ~arm ppc ppc64 x86" +IUSE="avahi bluetooth doc nss gnutls dhclient dhcpcd resolvconf connection-sharing systemd" + +RDEPEND=">=sys-apps/dbus-1.2 + >=dev-libs/dbus-glib-0.75 + >=net-wireless/wireless-tools-28_pre9 + >=sys-fs/udev-145[extras] + >=dev-libs/glib-2.18 + >=sys-auth/polkit-0.92 + >=dev-libs/libnl-1.1 + >=net-misc/modemmanager-0.2 + >=net-wireless/wpa_supplicant-0.5.10[dbus] + bluetooth? ( net-wireless/bluez ) + || ( sys-libs/e2fsprogs-libs =dev-libs/nss-3.11 ) + !nss? ( dev-libs/libgcrypt + net-libs/gnutls ) ) + !gnutls? ( >=dev-libs/nss-3.11 ) + dhclient? ( + dhcpcd? ( >=net-misc/dhcpcd-4.0.0_rc3 ) + !dhcpcd? ( >=net-misc/dhcp-3.0.0 ) ) + !dhclient? ( >=net-misc/dhcpcd-4.0.0_rc3 ) + resolvconf? ( net-dns/openresolv ) + connection-sharing? ( + net-dns/dnsmasq + net-firewall/iptables )" + +DEPEND="${RDEPEND} + dev-util/pkgconfig + dev-util/intltool + net-dialup/ppp + doc? ( >=dev-util/gtk-doc-1.8 )" + +S=${WORKDIR}/${MY_P} + +src_prepare() { + # Fix up the dbus conf file to use plugdev group + epatch "${FILESDIR}/${PN}-0.8-confchanges.patch" + + # Hack keyfile plugin to read hostname file, fixes bug 176873 + epatch "${FILESDIR}/${P}-read-hostname.patch" + + if use systemd; then + # Use Gentoo-Systemd patch + epatch "${FILESDIR}/${P}-gentoo-systemd.patch" + else + # Clear NSCD cache rather then kill daemon bug 301720 + epatch "${FILESDIR}/${P}-nscd-clear-cache.patch" + fi +} + +src_configure() { + ECONF="--disable-more-warnings + --localstatedir=/var + --with-distro=gentoo + --with-dbus-sys-dir=/etc/dbus-1/system.d + --with-udev-dir=/etc/udev + --with-iptables=/sbin/iptables + $(use_enable doc gtk-doc) + $(use_with doc docs) + $(use_with resolvconf)" + + # default is dhcpcd (if none or both are specified), ISC dchclient otherwise + if use dhclient ; then + if use dhcpcd ; then + ECONF="${ECONF} --with-dhcp-client=dhcpcd" + else + ECONF="${ECONF} --with-dhcp-client=dhclient" + fi + else + ECONF="${ECONF} --with-dhcp-client=dhcpcd" + fi + + # default is NSS (if none or both are specified), GnuTLS otherwise + if use gnutls ; then + if use nss ; then + ECONF="${ECONF} --with-crypto=nss" + else + ECONF="${ECONF} --with-crypto=gnutls" + fi + else + ECONF="${ECONF} --with-crypto=nss" + fi + + econf ${ECONF} +} + +src_install() { + emake DESTDIR="${D}" install || die "emake install failed" + + # 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 + + dodoc AUTHORS ChangeLog NEWS README TODO || die "dodoc failed" + + # Add keyfile plugin support + keepdir /etc/NetworkManager/system-connections + insinto /etc/NetworkManager + newins "${FILESDIR}/nm-system-settings.conf" nm-system-settings.conf \ + || die "newins failed" +} + +pkg_postinst() { + elog "You will need to reload DBus if this is your first time installing" + elog "NetworkManager, or if you're upgrading from 0.7 or older." + elog "" +} -- 1.7.2.2