diff --git a/srcpkgs/connman/files/musl/libresolv.patch b/srcpkgs/connman/files/musl/libresolv.patch new file mode 100644 index 00000000000..c28a7c1e358 --- /dev/null +++ b/srcpkgs/connman/files/musl/libresolv.patch @@ -0,0 +1,61 @@ +musl does not implement res_ninit + +diff --exclude '*.*o' -ru connman-1.24.orig/gweb/gresolv.c connman-1.24/gweb/gresolv.c +--- connman-1.24.orig/gweb/gresolv.c 2014-07-18 20:17:25.000000000 -0300 ++++ connman-1.24/gweb/gresolv.c 2014-07-18 20:24:01.874669130 -0300 +@@ -874,8 +874,6 @@ + resolv->index = index; + resolv->nameserver_list = NULL; + +- res_ninit(&resolv->res); +- + return resolv; + } + +@@ -915,8 +913,6 @@ + + flush_nameservers(resolv); + +- res_nclose(&resolv->res); +- + g_free(resolv); + } + +@@ -1019,24 +1015,19 @@ + debug(resolv, "hostname %s", hostname); + + if (!resolv->nameserver_list) { +- int i; +- +- for (i = 0; i < resolv->res.nscount; i++) { +- char buf[100]; +- int family = resolv->res.nsaddr_list[i].sin_family; +- void *sa_addr = &resolv->res.nsaddr_list[i].sin_addr; +- +- if (family != AF_INET && +- resolv->res._u._ext.nsaddrs[i]) { +- family = AF_INET6; +- sa_addr = &resolv->res._u._ext.nsaddrs[i]->sin6_addr; ++ FILE *f = fopen("/etc/resolv.conf", "r"); ++ if (f) { ++ char line[256], *s; ++ int i; ++ while (fgets(line, sizeof(line), f)) { ++ if (strncmp(line, "nameserver", 10) || !isspace(line[10])) ++ continue; ++ for (s = &line[11]; isspace(s[0]); s++); ++ for (i = 0; s[i] && !isspace(s[i]); i++); ++ s[i] = 0; ++ g_resolv_add_nameserver(resolv, s, 53, 0); + } +- +- if (family != AF_INET && family != AF_INET6) +- continue; +- +- if (inet_ntop(family, sa_addr, buf, sizeof(buf))) +- g_resolv_add_nameserver(resolv, buf, 53, 0); ++ fclose(f); + } + + if (!resolv->nameserver_list) + diff --git a/srcpkgs/connman/patches/musl-fixes.patch b/srcpkgs/connman/patches/musl-fixes.patch new file mode 100644 index 00000000000..b5f48feb410 --- /dev/null +++ b/srcpkgs/connman/patches/musl-fixes.patch @@ -0,0 +1,207 @@ +--- ./configure.ac.orig ++++ ./configure.ac +@@ -171,6 +171,8 @@ + AM_CONDITIONAL(PPTP, test "${enable_pptp}" != "no") + AM_CONDITIONAL(PPTP_BUILTIN, test "${enable_pptp}" = "builtin") + ++AC_CHECK_MEMBERS([struct in6_pktinfo.ipi6_addr], [], [], [[#include ]]) ++AC_CHECK_HEADERS(execinfo.h) + AC_CHECK_HEADERS(resolv.h, dummy=yes, + AC_MSG_ERROR(resolver header files are required)) + AC_CHECK_LIB(resolv, ns_initparse, dummy=yes, [ +diff --git a/gdhcp/common.c b/gdhcp/common.c +index e111150..ee4dc43 100644 +--- gdhcp/common.c ++++ gdhcp/common.c +@@ -22,6 +22,7 @@ + #include + #endif + ++#define _GNU_SOURCE + #include + #include + #include +@@ -31,7 +32,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -39,6 +39,8 @@ + #include "gdhcp.h" + #include "common.h" + ++#include ++ + static const DHCPOption client_options[] = { + { OPTION_IP, 0x01 }, /* subnet-mask */ + { OPTION_IP | OPTION_LIST, 0x03 }, /* routers */ +diff --git a/src/log.c b/src/log.c +index a693bd0..9054462 100644 +--- src/log.c ++++ src/log.c +@@ -30,7 +30,9 @@ + #include + #include + #include ++#ifdef HAVE_EXECINFO_H + #include ++#endif + #include + + #include "connman.h" +@@ -112,6 +114,7 @@ void connman_debug(const char *format, ...) + + static void print_backtrace(unsigned int offset) + { ++#ifdef HAVE_EXECINFO_H + void *frames[99]; + size_t n_ptrs; + unsigned int i; +@@ -210,6 +213,7 @@ static void print_backtrace(unsigned int offset) + + close(outfd[1]); + close(infd[0]); ++#endif /* HAVE_EXECINFO_H */ + } + + static void signal_handler(int signo) +diff --git a/tools/dhcp-test.c b/tools/dhcp-test.c +index c34e10a..eae66fc 100644 +--- tools/dhcp-test.c ++++ tools/dhcp-test.c +@@ -33,7 +33,6 @@ + #include + #include + #include +-#include + + #include + +--- plugins/wifi.c 2014-06-07 21:46:22.000000000 -0300 ++++ plugins/wifi.c 2014-07-18 20:37:16.811343663 -0300 +@@ -30,9 +30,8 @@ + #include + #include + #include +-#include +-#include + #include ++#include + + #ifndef IFF_LOWER_UP + #define IFF_LOWER_UP 0x10000 +--- src/ntp.c 2014-06-07 21:46:22.000000000 -0300 ++++ src/ntp.c 2014-07-18 20:38:12.144677543 -0300 +@@ -180,7 +180,7 @@ + msg.xmttime.fraction = htonl(transmit_timeval.tv_usec * 1000); + + len = sendto(fd, &msg, sizeof(msg), MSG_DONTWAIT, +- &addr, sizeof(addr)); ++ (struct sockaddr *) &addr, sizeof(addr)); + if (len < 0) { + connman_error("Time request for server %s failed (%d/%s)", + server, errno, strerror(errno)); +--- src/tethering.c 2014-04-04 15:12:07.000000000 -0300 ++++ src/tethering.c 2014-07-18 20:39:12.091344804 -0300 +@@ -31,10 +31,8 @@ + #include + #include + #include +-#include + #include + #include +-#include + #include + #include + +--- tools/dnsproxy-test.c 2013-12-05 09:12:12.000000000 -0200 ++++ tools/dnsproxy-test.c 2014-07-18 20:36:37.484676606 -0300 +@@ -24,6 +24,7 @@ + #endif + + #include ++#include + #include + #include + #include +--- tools/private-network-test.c 2013-08-19 19:57:25.000000000 -0300 ++++ tools/private-network-test.c 2014-07-18 20:28:42.644671909 -0300 +@@ -32,7 +32,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + +--- tools/tap-test.c 2013-12-05 09:12:12.000000000 -0200 ++++ tools/tap-test.c 2014-07-18 20:28:35.351338499 -0300 +@@ -29,7 +29,7 @@ + #include + #include + #include +-#include ++#include + #include + + #include +--- gweb/gresolv.c 2014-07-18 20:43:40.000000000 -0300 ++++ gweb/gresolv.c 2014-07-18 20:44:43.284681413 -0300 +@@ -24,6 +24,7 @@ + #endif + + #include ++#include + #include + #include + #include +--- src/ippool.c 2014-04-04 15:12:07.000000000 -0300 ++++ src/ippool.c 2014-07-18 20:44:56.068014872 -0300 +@@ -28,7 +28,7 @@ + #include + #include + #include +-#include ++#include + #include + + #include "connman.h" +--- src/iptables.c 2014-04-04 15:12:07.000000000 -0300 ++++ src/iptables.c 2014-07-18 20:44:25.844681240 -0300 +@@ -28,7 +28,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + + +--- gdhcp/common.h.orig ++++ gdhcp/common.h +@@ -18,6 +18,9 @@ + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ ++#ifdef HAVE_CONFIG_H ++#include ++#endif + + #include + #include +@@ -170,8 +173,8 @@ + [OPTION_U32] = 4, + }; + +-/* already defined within netinet/in.h if using GNU compiler */ +-#ifndef __USE_GNU ++/* already defined within netinet/in.h if using GNU or musl libc */ ++#ifndef HAVE_STRUCT_IN6_PKTINFO_IPI6_ADDR + struct in6_pktinfo { + struct in6_addr ipi6_addr; /* src/dst IPv6 address */ + unsigned int ipi6_ifindex; /* send/recv interface index */ diff --git a/srcpkgs/connman/template b/srcpkgs/connman/template index 911c9fd826f..c36ec47e23a 100644 --- a/srcpkgs/connman/template +++ b/srcpkgs/connman/template @@ -1,7 +1,7 @@ # Template file for 'connman' pkgname=connman version=1.29 -revision=1 +revision=2 lib32disaled=yes build_options="systemd" build_style=gnu-configure @@ -9,9 +9,9 @@ configure_args=" --enable-polkit --enable-client --enable-pie --enable-ethernet --enable-wifi --enable-bluetooth --enable-loopback --enable-nmcompat --enable-openvpn --with-openvpn=/usr/bin/openvpn --enable-openconnect - --with-openconnect=/usr/sbin/openconnect + --disable-tools --disable-wispr --with-openconnect=/usr/sbin/openconnect $(vopt_if systemd --with-systemdunitdir=/usr/lib/systemd/system)" -hostmakedepends="pkg-config wpa_supplicant iptables" +hostmakedepends="automake libtool pkg-config wpa_supplicant iptables" makedepends="libglib-devel dbus-devel iptables-devel gnutls-devel readline-devel" depends="wpa_supplicant" short_desc="Open Source CONNection MANager" @@ -21,6 +21,17 @@ homepage="http://connman.net/" distfiles="${KERNEL_SITE}/network/$pkgname/$pkgname-$version.tar.xz" checksum=2a5a69693566f7fd59b2e677fa89356ada6d709998aa665caef8707b1e7a8594 +pre_configure() { + case "$XBPS_TARGET_MACHINE" in + *-musl) + for f in ${FILESDIR}/musl/*.patch; do + patch -Np1 -i $f + done + ;; + *) export CFLAGS+=" -D_GNU_SOURCE";; + esac + autoreconf -fi +} post_install() { # Install the client connmanctl. vbin client/connmanctl