commit:     f3641eecc7c75afc5307e248ca98a390ded51bc2
Author:     Ben Kohler <bkohler <AT> gentoo <DOT> org>
AuthorDate: Fri Feb  4 20:15:28 2022 +0000
Commit:     Ben Kohler <bkohler <AT> gentoo <DOT> org>
CommitDate: Fri Feb  4 20:25:15 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f3641eec

net-misc/connman: musl fix

Closes: https://bugs.gentoo.org/832548
Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Ben Kohler <bkohler <AT> gentoo.org>

 net-misc/connman/connman-1.41-r1.ebuild         | 103 ++++++++++++++++++++++++
 net-misc/connman/files/libresolv-musl-fix.patch |  61 ++++++++++++++
 2 files changed, 164 insertions(+)

diff --git a/net-misc/connman/connman-1.41-r1.ebuild 
b/net-misc/connman/connman-1.41-r1.ebuild
new file mode 100644
index 000000000000..2db37a70b743
--- /dev/null
+++ b/net-misc/connman/connman-1.41-r1.ebuild
@@ -0,0 +1,103 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+inherit autotools systemd tmpfiles
+
+if [[ ${PV} == *9999* ]]; then
+       inherit git-r3
+       
EGIT_REPO_URI="https://git.kernel.org/pub/scm/network/connman/connman.git";
+else
+       SRC_URI="https://www.kernel.org/pub/linux/network/${PN}/${P}.tar.xz";
+       KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+fi
+
+DESCRIPTION="Provides a daemon for managing internet connections"
+HOMEPAGE="https://git.kernel.org/pub/scm/network/connman/connman.git/";
+
+LICENSE="GPL-2"
+SLOT="0"
+
+IUSE="bluetooth debug doc +ethernet examples iptables iwd l2tp networkmanager
++nftables ofono openconnect openvpn policykit pptp tools vpnc +wifi wireguard
+wispr"
+
+REQUIRED_USE="^^ ( iptables nftables )"
+BDEPEND="virtual/pkgconfig"
+RDEPEND=">=dev-libs/glib-2.16
+       >=sys-apps/dbus-1.2.24
+       sys-libs/readline:0=
+       bluetooth? ( net-wireless/bluez )
+       iptables? ( >=net-firewall/iptables-1.4.8 )
+       iwd? ( net-wireless/iwd )
+       l2tp? ( net-dialup/xl2tpd )
+       nftables? (
+               >=net-libs/libnftnl-1.0.4:0=
+               >=net-libs/libmnl-1.0.0:0= )
+       ofono? ( net-misc/ofono )
+       openconnect? ( net-vpn/openconnect )
+       openvpn? ( net-vpn/openvpn )
+       policykit? ( sys-auth/polkit )
+       pptp? ( net-dialup/pptpclient )
+       vpnc? ( net-vpn/vpnc )
+       wifi? ( >=net-wireless/wpa_supplicant-2.0[dbus] )
+       wireguard? ( >=net-libs/libmnl-1.0.0:0= )
+       wispr? ( net-libs/gnutls )"
+
+DEPEND="${RDEPEND}
+       >=sys-kernel/linux-headers-2.6.39"
+
+PATCHES=( "${FILESDIR}/libresolv-musl-fix.patch" )
+
+src_prepare() {
+       default
+       eautoreconf
+}
+
+src_configure() {
+       econf \
+               --localstatedir=/var \
+               --runstatedir=/run \
+               --with-systemdunitdir=$(systemd_get_systemunitdir) \
+               --with-tmpfilesdir="${EPREFIX}"/usr/lib/tmpfiles.d \
+               --enable-client \
+               --enable-datafiles \
+               --enable-loopback=builtin \
+               $(use_enable bluetooth bluetooth builtin) \
+               $(use_enable debug) \
+               $(use_enable ethernet ethernet builtin) \
+               $(use_enable examples test) \
+               $(use_enable iwd) \
+               $(use_enable l2tp l2tp builtin) \
+               $(use_enable networkmanager nmcompat) \
+               $(use_enable ofono ofono builtin) \
+               $(use_enable openconnect openconnect builtin) \
+               $(use_enable openvpn openvpn builtin) \
+               $(use_enable policykit polkit builtin) \
+               $(use_enable pptp pptp builtin) \
+               $(use_enable tools) \
+               $(use_enable vpnc vpnc builtin) \
+               $(use_enable wifi wifi builtin) \
+               $(use_enable wireguard) \
+               $(use_enable wispr wispr builtin) \
+               --with-firewall=$(usex iptables "iptables" "nftables" ) \
+               --disable-iospm \
+               --disable-hh2serial-gps
+}
+
+src_install() {
+       default
+       dobin client/connmanctl
+
+       if use doc; then
+               dodoc doc/*.txt
+       fi
+       keepdir /usr/lib/${PN}/scripts
+       keepdir /var/lib/${PN}
+       newinitd "${FILESDIR}"/${PN}.initd2 ${PN}
+       newconfd "${FILESDIR}"/${PN}.confd ${PN}
+}
+
+pkg_postinst() {
+       tmpfiles_process connman_resolvconf.conf
+}

diff --git a/net-misc/connman/files/libresolv-musl-fix.patch 
b/net-misc/connman/files/libresolv-musl-fix.patch
new file mode 100644
index 000000000000..c28a7c1e3589
--- /dev/null
+++ b/net-misc/connman/files/libresolv-musl-fix.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)
+

Reply via email to