Subject: [alpine-aports] [PATCH 1/6] testing/networkmanager: update to 1.0.0

From: Stuart Cardall <[email-masked]>
Date: Thu, 23 Apr 2015 17:13:32 +0000

* NM service & the new ncurses interface (nmtui) tested.

* Includes support for: modemmanager / libteam (bonding) / openresolv.
---
 testing/networkmanager/APKBUILD                    | 80 +++++++++++++++-------
 testing/networkmanager/disable_set_hostname.patch  | 20 ++++++
 testing/networkmanager/musl-fix-headers.patch      | 78 ---------------------
 testing/networkmanager/networkmanager.conf         |  2 +
 testing/networkmanager/networkmanager.post-install | 14 ++++
 testing/networkmanager/networkmanager.rules        |  8 +++
 testing/networkmanager/new-fix-musl-headers.patch  | 30 ++++++++
 testing/networkmanager/nm-policy-hostname.patch    | 11 ---
 8 files changed, 130 insertions(+), 113 deletions(-)
 create mode 100644 testing/networkmanager/disable_set_hostname.patch
 delete mode 100644 testing/networkmanager/musl-fix-headers.patch
 create mode 100644 testing/networkmanager/networkmanager.conf
 create mode 100644 testing/networkmanager/networkmanager.post-install
 create mode 100644 testing/networkmanager/networkmanager.rules
 create mode 100644 testing/networkmanager/new-fix-musl-headers.patch
 delete mode 100644 testing/networkmanager/nm-policy-hostname.patch

diff --git a/testing/networkmanager/APKBUILD b/testing/networkmanager/APKBUILD
index 44b5891..6f67927 100644
--- a/testing/networkmanager/APKBUILD
+++ b/testing/networkmanager/APKBUILD
@@ -1,24 +1,28 @@
 # Contributor: William Pitcock <[email-masked]>
-# Maintainer: William Pitcock <[email-masked]>
+# Maintainer: Stuart Cardall <[email-masked]>
 pkgname=networkmanager
-pkgver=0.9.8.10
-_ver=0.9
-pkgrel=1
+pkgver=1.0.0
+_ver=1.0
+pkgrel=0
 pkgdesc="network management tool"
 url="http://projects.gnome.org/NetworkManager/"
 arch="all"
 license="GPL"
 depends="dhcpcd iptables dbus"
-depends_dev="dbus-glib-dev udev-dev libnl3-dev util-linux-dev linux-headers
-	polkit-dev ppp-dev zlib-dev wireless-tools-dev
-	nss-dev nspr-dev gobject-introspection-dev"
+depends_dev="dbus-glib-dev udev-dev libnl3-dev util-linux-dev linux-headers polkit-dev ppp-dev zlib-dev
+		wireless-tools-dev ncurses-terminfo nss-dev nspr-dev gobject-introspection-dev libndp-dev
+		libmm-glib-dev modemmanager-dev newt-dev bluez-dev libsoup-dev libteam-dev rp-pppoe valgrind
+		dnsmasq openresolv dhclient vala gtk-doc"
 makedepends="$depends_dev intltool"
-install=""
+install="$pkgname.post-install"
 subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
 source="http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/$_ver/NetworkManager-$pkgver.tar.xz
-	nm-policy-hostname.patch
-	musl-fix-headers.patch
-	networkmanager.initd"
+	$pkgname.conf
+	$pkgname.initd
+	$pkgname.rules
+	new-fix-musl-headers.patch
+	disable_set_hostname.patch
+	"
 
 _builddir="$srcdir"/NetworkManager-$pkgver
 prepare() {
@@ -29,6 +33,14 @@ prepare() {
 		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
 		esac
 	done
+	# Build fails without IPTOS_CLASS_CS6 defined (required by systemd) ###
+        # http://cgit.openembedded.org/openembedded-core/commit/?id=7562021eef5b7585122c92db8b686808ebe7d85e
+	# Remove systemd functionality. This also removes many: "error: redefinition of 'struct ethhdr'"
+	local f= files=$(find src/dhcp-manager/systemd-dhcp -type f) # --without-systemd has no effect
+	files="$files $(find src/dhcp-manager -maxdepth 1 -type f -name "*-systemd.*")"
+	for f in $files; do # do NOT build --with-dbus-sys-dir=/etc/dbus-1 (nm service will crash)
+		printf "" > $f
+	done
 }
 
 build() {
@@ -38,9 +50,17 @@ build() {
 		--mandir=/usr/share/man \
 		--infodir=/usr/share/info \
 		--localstatedir=/var \
+		--with-systemdsystemunitdir=no \
+		--enable-more-warnings=yes \
 		--enable-ifupdown \
+		--enable-concheck \
 		--with-dhcpcd=yes \
-		--enable-more-warnings=yes \
+		--with-crypto=nss \
+		--with-modem-manager-1 \
+		--with-nmtui=yes \
+		--with-wext=yes \
+		--with-resolvconf=yes \
+		--disable-wimax \
 		|| return 1
 	# ourLDFLAGS confuses the gir-scanner
 	unset LDFLAGS
@@ -59,17 +79,29 @@ package() {
 		"$pkgdir"/usr/lib/pppd/*/nm-pppd-plugin.la || return 1
 
 	mv "$pkgdir"/usr/lib/locale "$pkgdir"/usr/share/ || return 1
+
+	install -m644 -D "$srcdir/$pkgname.conf" \
+                "$pkgdir/etc/NetworkManager/NetworkManager.conf" || return 1
+	# allow plugdev users to modify connections
+	install -m644 -D "$srcdir/$pkgname.rules" \
+                "$pkgdir/usr/share/polkit-1/rules.d/01-org.freedesktop.NetworkManager.settings.modify.system.rules" || return 1
 }
 
-md5sums="aad2558887e25417c52eb2deaade2f85  NetworkManager-0.9.8.10.tar.xz
-e7437269b5eefc6aee3cf081f87d2acb  nm-policy-hostname.patch
-4b39b583fb9aa0b6b7c27e8b8d42ff86  musl-fix-headers.patch
-c1c4609f415d7288e223d8c99e2d52d3  networkmanager.initd"
-sha256sums="064d27223d3824859df12e1fb25b787fec1c68bbc864dc52a0289b9211c4c972  NetworkManager-0.9.8.10.tar.xz
-209f3a1737a4fcb1661c851127de430ddb8218c75d1d75c193bf418146d3246c  nm-policy-hostname.patch
-dece9a05b8638681995ab5cc40f5ee336cf8076bcb717b6360365f3a59e09ced  musl-fix-headers.patch
-3a67ecb96fb34b36b8da93909066a2a355aaadef2e0dda6f2ae1004e2307dc53  networkmanager.initd"
-sha512sums="8688b8dceadf87d26b76bdda76ecb0b383ecaa7991487e6f6ddc150cf311f2f0cb3487afd91f19ecde2925585e8d53c8761fd45743f25c488eff6a7811ca4200  NetworkManager-0.9.8.10.tar.xz
-45a30a76b9a5df1661ec3afa6d8890f2d56e8e080a8d0584f7f57262b20b6b997b7dfcc34eb0522e673788a584875038af4d47956743b5761f0d981e656e0560  nm-policy-hostname.patch
-7a4d31c39981142ead3943922c89b3ec1780b85be31760aec923043192301496ac8f68ded48a757610e0a301df84b725520d2170a1e17687e363c78da1d22fa6  musl-fix-headers.patch
-d312bcb4f0d99331e189494bcb9fb1262cf3356e904573f7417b4429a1b8de083b9a6d51605b88d17be14e47ce2e9a3f4ea6e444790c3ffeccfe1c1d3cdd73d9  networkmanager.initd"
+md5sums="71cae8707a90fa92e28cafbc9262b548  NetworkManager-1.0.0.tar.xz
+b722fa02f904a9c8ed0d2ec21cbfc588  networkmanager.conf
+c1c4609f415d7288e223d8c99e2d52d3  networkmanager.initd
+63944e81277b3d64566194ea0a9af8a8  networkmanager.rules
+fa6de69c119641a7924885bbc9e76dcd  new-fix-musl-headers.patch
+4f2c03bce7febd1eede0dc2c5f8b30d9  disable_set_hostname.patch"
+sha256sums="3a66afec670c975edd9832e620b725a5f16ed267a1b9e1b2d51ef27250d85947  NetworkManager-1.0.0.tar.xz
+cd2a4b0079c0726973c1cf226c4e1cb4f2d27d02c16e0e08af7e4d6b8770423c  networkmanager.conf
+3a67ecb96fb34b36b8da93909066a2a355aaadef2e0dda6f2ae1004e2307dc53  networkmanager.initd
+4f6ba7fa3b2203885636bbe6dcef5ff15ab4af047f51f91ce107ce4b28bd1f73  networkmanager.rules
+35716916b933fae5da74b01860d2fdaa05854f09bf5a213403953681331eeeaf  new-fix-musl-headers.patch
+6fc7bc258ac01c2d2578f5a29e7eee55b98bbf8f32dae6d28dede7d7ee5e5c4e  disable_set_hostname.patch"
+sha512sums="7089496ce31bfdffe99c0f031b6326734d2e36b3bb9a2ed0ecbe3dad64bff0dc993b2e6bcac770b31bcfe634833bd8dbabc23d128356dbba8243a6d8fc489a5e  NetworkManager-1.0.0.tar.xz
+a6e507260e2ceffad4cacb2b49a1d4f6b933e5ae8bc50c1bd56f828298c5dc8d9d17aa4be766faeacefbe3c6c0c748e4ef499a55bb5ee40f0f04bbf766fbbc82  networkmanager.conf
+d312bcb4f0d99331e189494bcb9fb1262cf3356e904573f7417b4429a1b8de083b9a6d51605b88d17be14e47ce2e9a3f4ea6e444790c3ffeccfe1c1d3cdd73d9  networkmanager.initd
+246da1c4a6e7159e2bf8b5d802626a159aab5954babb777ef558dcc964b2ffbf62a45865bad4ad279c53e92195f0e1f08017e220c7fd62ce67ff1558a89349db  networkmanager.rules
+28bc0548a793d80b3a00617cfa46925f2625e3703144691e07598bbdcf2d68ef9f3d54494b2205b6dafaa3df32526cffaefeaa77f3463d09531412e60ef823da  new-fix-musl-headers.patch
+cdc8c26720b983f8afb11ee08c87aab863522633d8dc08e8cea080ed8d94378b3534aedf09efc6e7481599cfede6122b5f6a86b0b45e0a8bb653f95d4c5beaf8  disable_set_hostname.patch"
diff --git a/testing/networkmanager/disable_set_hostname.patch b/testing/networkmanager/disable_set_hostname.patch
new file mode 100644
index 0000000..773e263
--- /dev/null
+++ b/testing/networkmanager/disable_set_hostname.patch
@@ -0,0 +1,20 @@
+diff -Nur NetworkManager-0.9.0.orig/src/nm-policy.c NetworkManager-0.9.0/src/nm-policy.c
+--- NetworkManager-0.9.0.orig/src/nm-policy.c	2011-08-23 06:41:02.099686450 +0000
++++ NetworkManager-0.9.0/src/nm-policy.c	2011-08-23 06:43:38.227791737 +0000
+@@ -302,6 +302,7 @@
+ 		return;
+ 	}
+ 
++#if 0
+ 	/* Try automatically determined hostname from the best device's IP config */
+ 	if (!best4)
+ 		best4 = get_best_ip4_device (policy->manager, &best_req4);
+@@ -356,6 +357,7 @@
+ 		}
+ 	}
+ 
++#endif
+ 	/* If no automatically-configured hostname, try using the hostname from
+ 	 * when NM started up.
+ 	 */
+
diff --git a/testing/networkmanager/musl-fix-headers.patch b/testing/networkmanager/musl-fix-headers.patch
deleted file mode 100644
index 9a713c6..0000000
--- a/testing/networkmanager/musl-fix-headers.patch
+++ /dev/null
@@ -1,78 +0,0 @@
---- ./src/nm-device-ethernet.c.orig
-+++ ./src/nm-device-ethernet.c
-@@ -25,15 +25,16 @@
- #include <netinet/in.h>
- #include <string.h>
- #include <stdlib.h>
--#include <linux/sockios.h>
--#include <linux/ethtool.h>
- #include <sys/ioctl.h>
- #include <unistd.h>
--#include <linux/if.h>
- #include <errno.h>
- #include <netinet/ether.h>
- 
- #include <gudev/gudev.h>
-+
-+#include <linux/sockios.h>
-+#include <linux/ethtool.h>
-+#include <linux/if.h>
- 
- #include "nm-glib-compat.h"
- #include "nm-device-ethernet.h"
---- ./src/nm-device.c.orig
-+++ ./src/nm-device.c
-@@ -27,15 +27,12 @@
- #include <string.h>
- #include <unistd.h>
- #include <errno.h>
--#include <linux/sockios.h>
--#include <linux/ethtool.h>
- #include <sys/ioctl.h>
- #include <signal.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <arpa/inet.h>
- #include <fcntl.h>
--#include <linux/if.h>
- 
- #include "nm-glib-compat.h"
- #include "nm-device.h"
-@@ -67,6 +64,10 @@
- #include "nm-manager-auth.h"
- #include "nm-dbus-glib-types.h"
- #include "nm-dispatcher.h"
-+
-+#include <linux/if.h>
-+#include <linux/sockios.h>
-+#include <linux/ethtool.h>
- 
- static void impl_device_disconnect (NMDevice *device, DBusGMethodInvocation *context);
- 
---- ./src/nm-system.c.orig
-+++ ./src/nm-system.c
-@@ -40,11 +40,6 @@
- #include <resolv.h>
- #include <netdb.h>
- #include <glib.h>
--#include <linux/if.h>
--#include <linux/sockios.h>
--#include <linux/if_bonding.h>
--#include <linux/if_vlan.h>
--#include <linux/if_bridge.h>
- 
- #include "nm-system.h"
- #include "nm-device.h"
-@@ -62,6 +57,12 @@
- #include <netlink/route/link.h>
- #include <netlink/route/link/bonding.h>
- #include <netlink/route/link/vlan.h>
-+
-+#include <linux/if.h>
-+#include <linux/sockios.h>
-+#include <linux/if_bonding.h>
-+#include <linux/if_vlan.h>
-+#include <linux/if_bridge.h>
- 
- #if !HAVE_VLAN_FLAG_LOOSE_BINDING
- /* Older kernels don't have this flag */
diff --git a/testing/networkmanager/networkmanager.conf b/testing/networkmanager/networkmanager.conf
new file mode 100644
index 0000000..8da4fe0
--- /dev/null
+++ b/testing/networkmanager/networkmanager.conf
@@ -0,0 +1,2 @@
+[main]
+dhcp=dhcpcd
diff --git a/testing/networkmanager/networkmanager.post-install b/testing/networkmanager/networkmanager.post-install
new file mode 100644
index 0000000..66392d2
--- /dev/null
+++ b/testing/networkmanager/networkmanager.post-install
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+NORMAL="\033[1;0m"
+STRONG="\033[1;1m"
+GREEN="\033[1;32m"
+
+print_strong() {
+        local prompt="${STRONG}$1 ${GREEN}$2${NORMAL}"
+        printf "${prompt} %s\n"
+}
+
+print_strong "\nTo modify system network connections without the root password:" " add your user account to the 'plugdev' group.\n"
+exit 0
+
diff --git a/testing/networkmanager/networkmanager.rules b/testing/networkmanager/networkmanager.rules
new file mode 100644
index 0000000..37bd11a
--- /dev/null
+++ b/testing/networkmanager/networkmanager.rules
@@ -0,0 +1,8 @@
+// Let users in plugdev group modify NetworkManager
+polkit.addRule(function(action, subject) {
+    if (action.id == "org.freedesktop.NetworkManager.settings.modify.system" &&
+        subject.isInGroup("plugdev") && subject.active) {
+        return "yes";
+    }
+});
+
diff --git a/testing/networkmanager/new-fix-musl-headers.patch b/testing/networkmanager/new-fix-musl-headers.patch
new file mode 100644
index 0000000..3e4943d
--- /dev/null
+++ b/testing/networkmanager/new-fix-musl-headers.patch
@@ -0,0 +1,30 @@
+## moving the <linux/xxxx> includes to below nm includes
+## no longer works in 1.0.0.
+--- NetworkManager-1.0.0/src/platform/wifi/wifi-utils.h
++++ NetworkManager-1.0.0/src/platform/wifi/wifi-utils.h.new
+@@ -22,10 +22,10 @@
+ #ifndef __WIFI_UTILS_H__
+ #define __WIFI_UTILS_H__
+ 
+-#include <net/ethernet.h>
+ #include <glib.h>
+ 
+ #include "nm-dbus-interface.h"
++#include <linux/if_ether.h>
+ 
+ typedef struct WifiData WifiData;
+
+--- NetworkManager-1.0.0/src/settings/nm-settings-connection.h
++++ NetworkManager-1.0.0/src/settings/nm-settings-connection.h.new
+@@ -22,10 +22,9 @@
+ #ifndef __NETWORKMANAGER_SETTINGS_CONNECTION_H__
+ #define __NETWORKMANAGER_SETTINGS_CONNECTION_H__
+ 
+-#include <net/ethernet.h>
+-
+ #include <nm-connection.h>
+ #include "nm-types.h"
++#include <linux/if_ether.h>
+ 
+ G_BEGIN_DECLS
+
diff --git a/testing/networkmanager/nm-policy-hostname.patch b/testing/networkmanager/nm-policy-hostname.patch
deleted file mode 100644
index e7a7b01..0000000
--- a/testing/networkmanager/nm-policy-hostname.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./src/nm-policy-hostname.h.orig	2013-06-10 09:31:15.721414505 +0000
-+++ ./src/nm-policy-hostname.h	2013-06-10 09:31:46.421718239 +0000
-@@ -22,6 +22,8 @@
- #ifndef NM_POLICY_HOSTNAME_H
- #define NM_POLICY_HOSTNAME_H
- 
-+#include <sys/socket.h>
-+#include <netinet/in.h>
- #include <glib.h>
- 
- gboolean nm_policy_set_system_hostname (const char *new_hostname, const char *msg);
-- 
2.3.5

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---

---

From: Stuart Cardall <[email-masked]>
Date: Thu, 23 Apr 2015 17:13:33 +0000

Required by networkmanager
---------------------------
libmbim is a library for talking to WWAN modems and devices which speak
the Mobile Interface Broadband Model (MBIM) protocol.

http://www.freedesktop.org/wiki/Software/libmbim
---
 testing/libmbim/APKBUILD | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 testing/libmbim/APKBUILD

diff --git a/testing/libmbim/APKBUILD b/testing/libmbim/APKBUILD
new file mode 100644
index 0000000..a207f9d
--- /dev/null
+++ b/testing/libmbim/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Stuart Cardall <[email-masked]>
+# Maintainer: Stuart Cardall <[email-masked]>
+pkgname=libmbim
+pkgver=1.12.2
+pkgrel=0
+pkgdesc="MBIM modem protocol helper library"
+url="http://www.freedesktop.org/wiki/Software/libmbim"
+arch="all"
+license="GPL2"
+makedepends="$depends_dev gtk-doc python glib-dev py-gobject udev-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://www.freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz"
+
+_builddir="$srcdir"/$pkgname-$pkgver
+
+build() {
+	cd "$_builddir"
+	./configure \
+		--prefix=/usr \
+		--sysconfdir=/etc \
+		--localstatedir=/var \
+		--disable-static \
+	|| return 1
+	make || return 1
+	make check || return 1
+}
+
+package() {
+	cd "$_builddir"
+	make DESTDIR="$pkgdir" install
+}
+
+md5sums="921fb5ab3f13f1e00833e009d8f3b4f6  libmbim-1.12.2.tar.xz"
+sha256sums="949351d3e3d69b81e40a49f1d187944c26149e0647a415f0227ccdc112047b29  libmbim-1.12.2.tar.xz"
+sha512sums="d9ae50fecd39f2581ca8db21ec66ac6bfe13e10fe9298a7ec60338f66421ca8411dee3042f58692d60d491d17324d25233623674d322e81f0205c0dea486361a  libmbim-1.12.2.tar.xz"
-- 
2.3.5

---

---

From: Stuart Cardall <[email-masked]>
Date: Thu, 23 Apr 2015 17:13:34 +0000

Library for Neighbor Discovery Protocol
http://libndp.org/
---
 testing/libndp/APKBUILD         | 55 +++++++++++++++++++++++++++++++++++++++++
 testing/libndp/fix-fd_set.patch | 10 ++++++++
 2 files changed, 65 insertions(+)
 create mode 100644 testing/libndp/APKBUILD
 create mode 100644 testing/libndp/fix-fd_set.patch

diff --git a/testing/libndp/APKBUILD b/testing/libndp/APKBUILD
new file mode 100644
index 0000000..556ffb4
--- /dev/null
+++ b/testing/libndp/APKBUILD
@@ -0,0 +1,55 @@
+# Contributor: Stuart Cardall <[email-masked]>
+# Maintainer: Stuart Cardall <[email-masked]>
+pkgname=libndp
+pkgver=1.4
+pkgrel=0
+pkgdesc="Library for IPv6 Neighbor Discovery Protocol"
+url="http://libndp.org"
+arch="all"
+license="GPL2.1"
+depends=""
+depends_dev=""
+makedepends="$depends_dev"
+install=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://libndp.org/files/$pkgname-$pkgver.tar.gz
+	fix-fd_set.patch
+	"
+
+_builddir="$srcdir"/$pkgname-$pkgver
+prepare() {
+	local i
+	cd "$_builddir"
+	for i in $source; do
+		case $i in
+		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+		esac
+	done
+}
+
+build() {
+	cd "$_builddir"
+	./configure \
+                --build=$CBUILD \
+                --host=$CHOST \
+                --prefix=/usr \
+                --sysconfdir=/etc \
+                --mandir=/usr/share/man \
+                --localstatedir=/var \
+                --disable-static \
+                --libexecdir=/usr/lib \
+                || return 1
+        make || return 1
+}
+
+package() {
+	cd "$_builddir"
+	make DESTDIR="$pkgdir" install || return 1
+}
+
+md5sums="52c708d4b8729ae6e3781b3737a85e16  libndp-1.4.tar.gz
+7b1e885680e9677de2f25707850db7dd  fix-fd_set.patch"
+sha256sums="3a0be247ec024bd72fe5b40ea9491519c4023c7faf078311196fab817b2fd55f  libndp-1.4.tar.gz
+401a6d2601790f136e9c7b51b49003c3994df93136c6acdb289ce377d7068942  fix-fd_set.patch"
+sha512sums="a84d4d6672bf83bcf865eef8986e7bbcc49587686c5085a5ce5f346791223ede0e60db3b990055afc4f0005182aa1b5546c459306d2955f95d00ffb68bd58766  libndp-1.4.tar.gz
+291503b1a9b21ae3e75d0048fadaa0bace989c6091ddb7238ed7920d4daa968bbd66608432de341fa2cde33d440dcd1b679bc590c7b8d91a68363f5469abc92b  fix-fd_set.patch"
diff --git a/testing/libndp/fix-fd_set.patch b/testing/libndp/fix-fd_set.patch
new file mode 100644
index 0000000..7797418
--- /dev/null
+++ b/testing/libndp/fix-fd_set.patch
@@ -0,0 +1,10 @@
+--- libndp-1.4/utils/ndptool.c
++++ libndp-1.4/utils/ndptool.c.new
+@@ -22,6 +22,7 @@
+ #include <unistd.h>
+ #include <string.h>
+ #include <signal.h>
++#include <sys/select.h>
+ #include <sys/signalfd.h>
+ #include <getopt.h>
+ #include <net/if.h>
-- 
2.3.5

---

---

From: Stuart Cardall <[email-masked]>
Date: Thu, 23 Apr 2015 17:13:35 +0000

Required by modemmanager

libqmi is a library for talking to WWAN modems and devices which speak the
Qualcomm MSM Interface (QMI) protocol.
http://www.freedesktop.org/wiki/Software/libqmi/
---
 testing/libqmi/APKBUILD | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)
 create mode 100644 testing/libqmi/APKBUILD

diff --git a/testing/libqmi/APKBUILD b/testing/libqmi/APKBUILD
new file mode 100644
index 0000000..b002f90
--- /dev/null
+++ b/testing/libqmi/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: Stuart Cardall <[email-masked]>
+# Maintainer: Stuart Cardall <[email-masked]>
+pkgname=libqmi
+pkgver=1.12.6
+pkgrel=0
+pkgdesc="QMI modem protocol helper library"
+url="http://www.freedesktop.org/wiki/Software/libqmi"
+arch="all"
+license="GPL2"
+depends=""
+depends_dev=""
+makedepends="$depends_dev gtk-doc python"
+install=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://www.freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz"
+
+_builddir="$srcdir"/$pkgname-$pkgver
+prepare() {
+	local i
+	cd "$_builddir"
+	for i in $source; do
+		case $i in
+		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+		esac
+	done
+}
+
+build() {
+	cd "$_builddir"
+	./configure \
+		--prefix=/usr \
+		--sysconfdir=/etc \
+		--localstatedir=/var \
+		--disable-static \
+		--enable-more-warnings=yes \
+	|| return 1
+	make || return 1
+	make check || return 1
+}
+
+package() {
+	cd "$_builddir"
+	make DESTDIR="$pkgdir" install
+}
+
+md5sums="24c9eb300662ba6cff0152de89bd9ec0  libqmi-1.12.6.tar.xz"
+sha256sums="0857bffece4e8ddfa7f721dd9ca63b4c78de345ac9ae2faebf04062cacba3780  libqmi-1.12.6.tar.xz"
+sha512sums="7001f61dbe2be431867a504dbfc634ed5e7c3f3b1740aef7833fb8163d1a6bdffb57793f09062f49c0b8eeff5a011a2a057a938d618f3547ff5942021b3e8a9d  libqmi-1.12.6.tar.xz"
-- 
2.3.5

---

---

From: Stuart Cardall <[email-masked]>
Date: Thu, 23 Apr 2015 17:13:36 +0000

http://libteam.org/

Lower performance overhead compared to bonding:
https://github.com/jpirko/libteam/wiki/Bonding-vs.-Team-driver-features

Python 2/3 bindings split out into a separate package.
---
 testing/libteam/APKBUILD                           | 70 ++++++++++++++++++++++
 testing/libteam/fix-fd_set.patch                   | 10 ++++
 .../memcpy-memset-implicit-declaration.patch       | 10 ++++
 3 files changed, 90 insertions(+)
 create mode 100644 testing/libteam/APKBUILD
 create mode 100644 testing/libteam/fix-fd_set.patch
 create mode 100644 testing/libteam/memcpy-memset-implicit-declaration.patch

diff --git a/testing/libteam/APKBUILD b/testing/libteam/APKBUILD
new file mode 100644
index 0000000..6eefbd4
--- /dev/null
+++ b/testing/libteam/APKBUILD
@@ -0,0 +1,70 @@
+# Contributor: Stuart Cardall <[email-masked]>
+# Maintainer: Stuart Cardall <[email-masked]>
+pkgname=libteam
+pkgver=1.17
+pkgrel=0
+pkgdesc="Library for controlling team network device"
+url="http://libteam.org"
+arch="all"
+license="LGPL2.1"
+depends_dev=""
+makedepends="$depends_dev autoconf automake libtool libnl3-dev libdaemon-dev jansson-dev dbus-dev
+		linux-headers bsd-compat-headers doxygen swig python-dev python3-dev"
+subpackages="$pkgname-dev $pkgname-doc py-$pkgname:py"
+source="https://github.com/jpirko/$pkgname/archive/v$pkgver.tar.gz
+	fix-fd_set.patch
+	memcpy-memset-implicit-declaration.patch
+	"
+
+_builddir="$srcdir"/$pkgname-$pkgver
+prepare() {
+	local i
+	cd "$_builddir"
+	for i in $source; do
+		case $i in
+		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+		esac
+	done
+}
+
+build() {
+	cd "$_builddir"
+	./autogen.sh
+	./configure \
+                --build=$CBUILD \
+                --host=$CHOST \
+                --prefix=/usr \
+                --mandir=/usr/share/man \
+                || return 1
+        make || return 1
+}
+
+py() {
+	pkgdesc="Python 2/3 Bindings for libteam"
+	mkdir -p "$subpkgdir"
+	cd "$_builddir"
+        cp -ar binding/python binding/python3 || return 1
+        cd binding/python
+        python  ./setup.py build || return 1
+        cd ../python3
+        python3 ./setup.py build || return 1
+	cd binding/python
+        python  ./setup.py install --root "$subpkgdir" -O1 || return 1
+        cd ../python3
+        python3 ./setup.py install --root "$subpkgdir" -O1 || return 1
+}
+
+package() {
+	cd "$_builddir"
+	make DESTDIR="$pkgdir" install || return 1
+}
+
+md5sums="4d0730fce6c9423c376e7db126ea6782  v1.17.tar.gz
+ea78f0a9b84eb87747ddfbcfa582a122  fix-fd_set.patch
+fb6662bced494fd24a107e3f7f7dc5e8  memcpy-memset-implicit-declaration.patch"
+sha256sums="be11e670eee47653a80be7ed0c261085b0c610e34b3c336a82e29602b5bbad39  v1.17.tar.gz
+43bff56cfd3d293ecae58b3a77e55e7a740ddcf188d6516097fbd93b13a82ac8  fix-fd_set.patch
+a2982cbd9bce4367d1a6e20bfedcc24cab452538e2e0ec1af0d8a3515cf21077  memcpy-memset-implicit-declaration.patch"
+sha512sums="431359fb4ae8e67d9d3499d965c4c9ac321e8e720714996533d0e3e2f534899e6d8aa29e0ee3a0a2e3d1c9f3e2858bac4a214e02bf2a3d5d730d3811d61a7283  v1.17.tar.gz
+83f8dd77cfed0f815bc0cb2aa4af25883a02567dbb35b59016d7f3a30f162e63155996d21216424f0ea4efa8e92f8f9526a018a892533c3c7dd7c7ba12b46a44  fix-fd_set.patch
+1279c164960b6215e9bb9f3ee161ef9ac6a38b8066d4a1031996b8067031b9b19404681ebecf3492a26b1215ec2eaaddecae3370ec25e2593dc3ca7dc5f8ead7  memcpy-memset-implicit-declaration.patch"
diff --git a/testing/libteam/fix-fd_set.patch b/testing/libteam/fix-fd_set.patch
new file mode 100644
index 0000000..b019ff3
--- /dev/null
+++ b/testing/libteam/fix-fd_set.patch
@@ -0,0 +1,10 @@
+--- libteam-1.17/utils/teamnl.c
++++ libteam-1.17/utils/teamnl.c.new
+@@ -23,6 +23,7 @@
+ #include <string.h>
+ #include <getopt.h>
+ #include <errno.h>
++#include <sys/select.h>
+ #include <sys/signalfd.h>
+ #include <signal.h>
+ #include <unistd.h>
diff --git a/testing/libteam/memcpy-memset-implicit-declaration.patch b/testing/libteam/memcpy-memset-implicit-declaration.patch
new file mode 100644
index 0000000..84b1a99
--- /dev/null
+++ b/testing/libteam/memcpy-memset-implicit-declaration.patch
@@ -0,0 +1,10 @@
+--- libteam-1.17/teamd/teamd_phys_port_check.c
++++ libteam-1.17/teamd/teamd_phys_port_check.c.new
+@@ -17,6 +17,7 @@
+  *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+  */
+ 
++#include <string.h>
+ #include <stdio.h>
+ #include <errno.h>
+ #include <sys/types.h>
-- 
2.3.5

---

---

From: Stuart Cardall <[email-masked]>
Date: Thu, 23 Apr 2015 17:13:37 +0000

ModemManager is a DBus-activated daemon which controls mobile broadband (2G/3G/4G)
devices and connections. Whether built-in devices, USB dongles, bluetooth-paired
telephones, or professional RS232/USB devices with external power supplies,
ModemManager is able to prepare and configure the modems and setup connections
with them.
http://www.freedesktop.org/wiki/Software/ModemManager/
---
 testing/modemmanager/APKBUILD                  | 86 ++++++++++++++++++++++++++
 testing/modemmanager/modemmanager.post-install | 16 +++++
 testing/modemmanager/modemmanager.rules        |  8 +++
 testing/modemmanager/no-XCASE.patch            | 35 +++++++++++
 4 files changed, 145 insertions(+)
 create mode 100644 testing/modemmanager/APKBUILD
 create mode 100644 testing/modemmanager/modemmanager.post-install
 create mode 100644 testing/modemmanager/modemmanager.rules
 create mode 100644 testing/modemmanager/no-XCASE.patch

diff --git a/testing/modemmanager/APKBUILD b/testing/modemmanager/APKBUILD
new file mode 100644
index 0000000..30c3440
--- /dev/null
+++ b/testing/modemmanager/APKBUILD
@@ -0,0 +1,86 @@
+# Contributor: Stuart Cardall <[email-masked]>
+# Maintainer: Stuart Cardall <[email-masked]>
+pkgname=modemmanager
+pkgver=1.4.6
+pkgrel=0
+pkgdesc="ModemManager library"
+url="http://www.freedesktop.org/wiki/Software/ModemManager"
+arch="all"
+license="GPL2, LGPL2.1"
+depends_dev=""
+makedepends="$depends_dev gobject-introspection-dev gtk-doc intltool vala udev-dev polkit-dev
+		libmbim-dev libqmi-dev linux-headers"
+install="$pkgname.post-install"
+subpackages="$pkgname-dev $pkgname-lang $pkgname-doc libmm-glib:libmm libmm-glib-dev:libmmdev"
+source="http://www.freedesktop.org/software/ModemManager/ModemManager-$pkgver.tar.xz
+	no-XCASE.patch
+	$pkgname.rules
+	"
+
+_builddir="$srcdir"/ModemManager-$pkgver
+prepare() {
+	local i
+	cd "$_builddir"
+	for i in $source; do
+		case $i in
+		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
+		esac
+	done
+}
+
+build() {
+	cd "$_builddir"
+	./configure --prefix=/usr \
+		--sysconfdir=/etc \
+		--mandir=/usr/share/man \
+		--infodir=/usr/share/info \
+		--localstatedir=/var \
+		--with-polkit=permissive \
+		--enable-gtk-doc \
+		--disable-static \
+		--enable-more-warnings \
+		--with-newest-qmi-commands \
+		--with-dbus-sys-dir=/etc/dbus-1 \
+		--enable-vala=yes \
+		|| return 1
+	# https://bugzilla.gnome.org/show_bug.cgi?id=655517
+	sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+	make || return 1
+}
+
+libmm() {
+	cd "$_builddir"
+	mkdir -p "$subpkgdir"
+	make DESTDIR="$subpkgdir" -C libmm-glib install || return 1
+        make DESTDIR="$subpkgdir" -C vapi install || return 1
+}
+
+libmmdev() {
+	mkdir -p "$subpkgdir/usr/lib/pkgconfig"
+	mv "${subpkgdir%*-dev}/usr/include" "$subpkgdir/usr/"
+	mv "${subpkgdir%*-dev}/usr/share" "$subpkgdir/usr/"
+	mv "$pkgdir-dev"/usr/lib/pkgconfig/mm-glib.pc "$subpkgdir"/usr/lib/pkgconfig/
+	rmdir "$pkgdir-dev"/usr/include/libmm-glib # in libmm-glib-dev
+}
+
+package() {
+	cd "$_builddir"
+	make DESTDIR="$pkgdir" install || return 1
+        make DESTDIR="$pkgdir" -C libmm-glib uninstall || return 1
+        make DESTDIR="$pkgdir" -C vapi uninstall || return 1
+	rmdir "$pkgdir"/usr/lib/girepository-1.0 # in libmm-glib
+	rm -rf "$pkgdir"/usr/share/dbus-1/system-services #systemd-service
+	mkdir -p "$pkgdir/usr/share/polkit-1/rules.d"
+	install -m644 -D "$srcdir/$pkgname.rules" \
+                "$pkgdir/usr/share/polkit-1/rules.d/01-org.freedesktop.ModemManager.rules" || return 1
+}
+
+md5sums="158a5b5206d933121a993fd603a36b2a  ModemManager-1.4.6.tar.xz
+63288189ea454e9712dc26d76d75277d  no-XCASE.patch
+735e155a785554349906c09dd36d3866  modemmanager.rules"
+sha256sums="0cedabf46310f8c56630b116944f54ee64369c76c2f35f5f460ca19a8bb5a5cd  ModemManager-1.4.6.tar.xz
+5e5b87b580faf14e4c56ccc7f9f189522742a64ab365b26751dcc86e68dedb87  no-XCASE.patch
+577807e59b1e95757a4d94922c66f7f36487922c5092a6c148e7db6a4dc6afe8  modemmanager.rules"
+sha512sums="fb74961df2e3e1604de58838da6e8dd7cf80fee97dbfd71eb7f2df60cc319bf38df8c5706a5933856c500b014d3156066e608bb0820c967ddbd964bd9fc2fdec  ModemManager-1.4.6.tar.xz
+5c537e4a86212339d0c41ae3e1055513051a0d6e51bdf2547a38054fbe802feeac2ff46c863ab69423a6693ac33ebacec7a771d4b270aeb5fe6e6bb601361f23  no-XCASE.patch
+3c76ee577334e25c836857f8e7fef6a249cdd9fcd8f889cb64d9c1667bc6a95c087267a153bddd1a13256c59f8cd578ccb448e6b9cb54b73bb74acb8a0ca1e3f  modemmanager.rules"
diff --git a/testing/modemmanager/modemmanager.post-install b/testing/modemmanager/modemmanager.post-install
new file mode 100644
index 0000000..05eb1f2
--- /dev/null
+++ b/testing/modemmanager/modemmanager.post-install
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+NORMAL="\033[1;0m"
+STRONG="\033[1;1m"
+GREEN="\033[1;32m"
+
+print_strong() {
+        local prompt="${STRONG}$1 ${GREEN}$2${NORMAL}"
+        printf "${prompt} %s\n"
+}
+
+print_strong "\nIf your USB modem shows up as a Flash drive" "when you plug it in:"
+print_strong "install 'usb-modeswitch'" "to automatically switch to USB modem mode whenever you plug it in."
+print_strong "\nTo control your modem without the root password:" " add your user account to the 'plugdev' group.\n"
+exit 0
+
diff --git a/testing/modemmanager/modemmanager.rules b/testing/modemmanager/modemmanager.rules
new file mode 100644
index 0000000..09e586e
--- /dev/null
+++ b/testing/modemmanager/modemmanager.rules
@@ -0,0 +1,8 @@
+// Let users in plugdev group modify ModemManager
+polkit.addRule(function(action, subject) {
+    if (/^org\.freedesktop\.ModemManager1\.(Device\.Control|Contacts|Messaging|Location)$/.test(action.id) &&
+        subject.isInGroup("plugdev") && subject.active) {
+        return "yes";
+    }
+});
+
diff --git a/testing/modemmanager/no-XCASE.patch b/testing/modemmanager/no-XCASE.patch
new file mode 100644
index 0000000..1de41f7
--- /dev/null
+++ b/testing/modemmanager/no-XCASE.patch
@@ -0,0 +1,35 @@
+## http://man7.org/linux/man-pages/man3/termios.3.html
+## XCASE  (not in POSIX; not supported under Linux)
+--- ModemManager-1.4.6/libqcdm/src/com.c
++++ ModemManager-1.4.6.new/libqcdm/src/com.c
+@@ -39,7 +39,7 @@
+     stbuf.c_iflag &= ~(HUPCL | IUTF8 | IUCLC | ISTRIP | IXON | IXOFF | IXANY | ICRNL);
+     stbuf.c_oflag &= ~(OPOST | OCRNL | ONLCR | OLCUC | ONLRET);
+     stbuf.c_lflag &= ~(ICANON | ISIG | IEXTEN | ECHO | ECHOE | ECHOK | ECHONL);
+-    stbuf.c_lflag &= ~(NOFLSH | XCASE | TOSTOP | ECHOPRT | ECHOCTL | ECHOKE);
++    stbuf.c_lflag &= ~(NOFLSH | TOSTOP | ECHOPRT | ECHOCTL | ECHOKE);
+     stbuf.c_cc[VMIN] = 1;
+     stbuf.c_cc[VTIME] = 0;
+     stbuf.c_cc[VEOF] = 1;
+--- ModemManager-1.4.6/libwmc/src/com.c
++++ ModemManager-1.4.6.new/libwmc/src/com.c
+@@ -39,7 +39,7 @@
+     stbuf.c_iflag &= ~(HUPCL | IUTF8 | IUCLC | ISTRIP | IXON | IXOFF | IXANY | ICRNL);
+     stbuf.c_oflag &= ~(OPOST | OCRNL | ONLCR | OLCUC | ONLRET);
+     stbuf.c_lflag &= ~(ICANON | ISIG | IEXTEN | ECHO | ECHOE | ECHOK | ECHONL);
+-    stbuf.c_lflag &= ~(NOFLSH | XCASE | TOSTOP | ECHOPRT | ECHOCTL | ECHOKE);
++    stbuf.c_lflag &= ~(NOFLSH | TOSTOP | ECHOPRT | ECHOCTL | ECHOKE);
+     stbuf.c_cc[VMIN] = 1;
+     stbuf.c_cc[VTIME] = 0;
+     stbuf.c_cc[VEOF] = 1;
+--- ModemManager-1.4.6/src/mm-port-serial.c
++++ ModemManager-1.4.6.new/src/mm-port-serial.c
+@@ -455,7 +455,7 @@
+ 
+     stbuf.c_iflag &= ~(IGNCR | ICRNL | IUCLC | INPCK | IXON | IXANY );
+     stbuf.c_oflag &= ~(OPOST | OLCUC | OCRNL | ONLCR | ONLRET);
+-    stbuf.c_lflag &= ~(ICANON | XCASE | ECHO | ECHOE | ECHONL);
++    stbuf.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHONL);
+     stbuf.c_lflag &= ~(ECHO | ECHOE);
+     stbuf.c_cc[VMIN] = 1;
+     stbuf.c_cc[VTIME] = 0;
-- 
2.3.5

---