[Buildroot] [PATCH] Add package for Gnome NetworkManager
Thomas De Schampheleire
patrickdepinguin+buildroot at gmail.com
Fri Dec 2 11:56:19 UTC 2011
On Fri, Dec 2, 2011 at 12:52 PM, Daniel Mack <zonque at gmail.com> wrote:
> On 12/02/2011 12:45 PM, Thomas De Schampheleire wrote:
>> On Fri, Dec 2, 2011 at 12:14 PM, Daniel Mack <zonque at gmail.com> wrote:
>>> Even though it's most commonly used on Desktops, this piece of software
>>> also works well on embedded devices.
>>>
>>> The package file only resolved mandatory dependencies. Things like
>>> iptables and dnsmasq are only required if 'shared' connections are used,
>>> and have hence not been made hard prerequisites.
>>>
>>> There are probably too many i18n related files installed to the target.
>>> That might need some more tweaking.
>>>
>>> Signed-off-by: Daniel Mack <zonque at gmail.com>
>>> ---
>>> package/Config.in | 1 +
>>> package/network-manager/Config.in | 22 +++++++++++++
>>> package/network-manager/S45network-manager | 46 ++++++++++++++++++++++++++++
>>> package/network-manager/network-manager.mk | 42 +++++++++++++++++++++++++
>>> 4 files changed, 111 insertions(+), 0 deletions(-)
>>> create mode 100644 package/network-manager/Config.in
>>> create mode 100755 package/network-manager/S45network-manager
>>> create mode 100644 package/network-manager/network-manager.mk
>>>
>>> diff --git a/package/Config.in b/package/Config.in
>>> index 4b5e5d8..a781870 100644
>>> --- a/package/Config.in
>>> +++ b/package/Config.in
>>> @@ -442,6 +442,7 @@ endif
>>> source "package/netplug/Config.in"
>>> source "package/netsnmp/Config.in"
>>> source "package/netstat-nat/Config.in"
>>> +source "package/network-manager/Config.in"
>>> source "package/noip/Config.in"
>>> source "package/nfs-utils/Config.in"
>>> source "package/ngircd/Config.in"
>>> diff --git a/package/network-manager/Config.in b/package/network-manager/Config.in
>>> new file mode 100644
>>> index 0000000..c08d417
>>> --- /dev/null
>>> +++ b/package/network-manager/Config.in
>>> @@ -0,0 +1,22 @@
>>> +config BR2_PACKAGE_NETWORK_MANAGER
>>> + bool "NetworkManager"
>>> + depends on BR2_PACKAGE_DBUS && BR2_PACKAGE_UDEV_ALL_EXTRAS && BR2_PACKAGE_WIRELESS_TOOLS_LIB
>>> + select BR2_PACKAGE_DBUS_GLIB
>>> + select BR2_PACKAGE_LIBNL
>>> + select BR2_PACKAGE_GNUTLS
>>> + select BR2_PACKAGE_LIBNL
>>> + select BR2_PACKAGE_UTIL_LINUX
>>> + select BR2_PACKAGE_UTIL_LINUX_LIBUUID
>>> + help
>>> + NetworkManager is a set of co-operative tools that make networking
>>> + simple and straightforward. Whether WiFi, wired, 3G, or Bluetooth,
>>> + NetworkManager allows you to quickly move from one network to
>>> + another: once a network has been configured and joined once, it
>>> + can be detected and re-joined automatically the next time it's
>>> + available.
>>> +
>>> + http://projects.gnome.org/NetworkManager/
>>> +
>>> +comment "NetworkManager not available (need DBus, UDEV_ALL_EXTRAS and WIRELESS_TOOLS_LIB)"
>>> + depends on !BR2_PACKAGE_DBUS || !BR2_PACKAGE_UDEV_ALL_EXTRAS || !BR2_PACKAGE_WIRELESS_TOOLS_LIB
>>> +
>>> diff --git a/package/network-manager/S45network-manager b/package/network-manager/S45network-manager
>>> new file mode 100755
>>> index 0000000..112aa66
>>> --- /dev/null
>>> +++ b/package/network-manager/S45network-manager
>>> @@ -0,0 +1,46 @@
>>> +#!/bin/sh
>>> +
>>> +prefix=/usr
>>> +exec_prefix=/usr
>>> +sbindir=${exec_prefix}/sbin
>>> +
>>> +NETWORKMANAGER_BIN=${sbindir}/NetworkManager
>>> +
>>> +[ -x $NETWORKMANAGER_BIN ] || exit 0
>>> +
>>> +PID=`pidof -o %PPID NetworkManager`
>>> +case "$1" in
>>> + start)
>>> + echo -n "Starting NetworkManager ... "
>>> + [ ! -d /var/run/NetworkManager ] && install -d /var/run/NetworkManager
>>> + if [ -z "$PID" ]; then
>>> + $NETWORKMANAGER_BIN
>>> + fi
>>> + if [ ! -z "$PID" -o $? -gt 0 ]; then
>>> + echo "failed!"
>>> + else
>>> + echo "done."
>>> + fi
>>
>> Wouldn't it be more general if you test for non-equality instead of
>> for greater-than? You are now assuming that faulty return codes are
>> always positive, which may not be true on all platforms. Although this
>> code will probably work fine in all cases where buildroot is used, in
>> my opinion -ne 0 would be better.
>
> I can change this, yes. This part of the script was actually taken from
> the version originally provided by the upstream package, but anyway :)
In that case, I'd leave it as-is.
>
>>> + ;;
>>> + stop)
>>> + echo -n "Stopping NetworkManager ... "
>>> + [ ! -z "$PID" ] && kill $PID &> /dev/null
>>> + if [ $? -gt 0 ]; then
>>
>> Same here.
>>
>>> + echo "failed!"
>>> + else
>>> + echo "done."
>>> + fi
>>> + ;;
>>> + restart)
>>> + $0 stop
>>> + sleep 1
>>> + $0 start
>>> + ;;
>>> + *)
>>> + echo "usage: $0 {start|stop|restart|sleep|wake}"
>>> + ;;
>>> +esac
>>> +exit 0
>>> +
>>> +
>>> +
>>> diff --git a/package/network-manager/network-manager.mk b/package/network-manager/network-manager.mk
>>> new file mode 100644
>>> index 0000000..9fe6759
>>> --- /dev/null
>>> +++ b/package/network-manager/network-manager.mk
>>> @@ -0,0 +1,42 @@
>>> +#############################################################
>>> +#
>>> +# NetworkManager
>>> +#
>>> +#############################################################
>>> +NETWORK_MANAGER_VERSION = 0.9.2.0
>>> +NETWORK_MANAGER_SOURCE = NetworkManager-$(NETWORK_MANAGER_VERSION).tar.bz2
>>> +NETWORK_MANAGER_SITE = http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/0.9/
>>> +NETWORK_MANAGER_INSTALL_STAGING = YES
>>> +NETWORK_MANAGER_DEPENDENCIES = host-pkg-config udev dbus-glib libnl wireless_tools gnutls util-linux
>>> +
>>> +NETWORK_MANAGER_CONF_OPT = --program-prefix="" \
>>> + --mandir=$(STAGING_DIR)/usr/man/ \
>>> + --with-dbus-user=dbus \
>>> + --disable-tests \
>>> + --disable-more-warnings \
>>> + --without-docs \
>>> + --disable-gtk-doc \
>>> + --disable-asserts \
>>> + --enable-abstract-sockets \
>>> + --disable-selinux \
>>> + --disable-xml-docs \
>>> + --disable-doxygen-docs \
>>> + --disable-static \
>>> + --enable-dnotify \
>>> + --localstatedir=/var \
>>> + --with-crypto=gnutls \
>>> + --with-distro=arch \
>>> + --disable-ppp \
>>> + --with-iptables=/usr/sbin/iptables
>>> +
>>> +# The target was built for the archlinux distribution, so we need
>>> +# to move around things after installation
>>> +define NETWORK_MANAGER_INSTALL_INITSCRIPT
>>> + $(INSTALL) -m 0755 -D package/network-manager/S45network-manager $(TARGET_DIR)/etc/init.d/S45network-manager
>>> + rm -f $(TARGET_DIR)/etc/rc.d/networkmanager
>>> + test -z "`ls -A $(TARGET_DIR)/etc/rc.d`" && rmdir $(TARGET_DIR)/etc/rc.d || echo ""
>>
>> Why not simply attempt:
>> rmdir $(TARGET_DIR)/etc/rc.d 2>/dev/null
>
> Jup, much easier. I'll go for this solution.
>
>>
>> If the directory is empty, it will be removed.
>> If not empty, rmdir will not do anything.
>>
>> On my rmdir, there is even an option: --ignore-fail-on-non-empty
>> If that is generic, you could do:
>> rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/etc/rc.d
>
> I'd rather not rely on such a feature on the build host.
>
>>> +endef
>>> +
>>> +NETWORK_MANAGER_POST_INSTALL_TARGET_HOOKS += NETWORK_MANAGER_INSTALL_INITSCRIPT
>>> +
>>> +$(eval $(call AUTOTARGETS,package,network-manager))
>>
>> Since 2011.11, the extra arguments package,network-manager are no
>> longer needed and should be removed, thus:
>> $(eval $(call AUTOTARGETS))
>
> Ok. Thanks for the review. I'll repost.
>
>
> Daniel
>
More information about the buildroot
mailing list