summaryrefslogtreecommitdiff
blob: 7e8c30b36e794be07364abab3a232cf1340d3d96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI="8"
inherit autotools systemd tmpfiles

COMMIT=""

if [[ ${PV} == *9999* ]]; then
	inherit git-r3
	EGIT_REPO_URI="https://git.kernel.org/pub/scm/network/connman/connman.git"
else
	SRC_URI="https://git.kernel.org/pub/scm/network/connman/connman.git/snapshot/connman-${COMMIT}.tar.gz"
	KEYWORDS="amd64 arm arm64 ~loong 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"
COMMON_DEPEND=">=dev-libs/glib-2.16
	net-libs/gnutls
	>=sys-apps/dbus-1.2.24
	sys-libs/readline:0=
	nftables? (
		>=net-libs/libnftnl-1.0.4:0=
		>=net-libs/libmnl-1.0.0:0=
	)
	openconnect? ( net-vpn/openconnect )
	openvpn? ( net-vpn/openvpn )
	pptp? ( net-dialup/pptpclient )
	vpnc? ( net-vpn/vpnc )
	wireguard? ( >=net-libs/libmnl-1.0.0:0= )"
RDEPEND="${COMMON_DEPEND}
	bluetooth? ( net-wireless/bluez )
	iptables? ( >=net-firewall/iptables-1.4.8 )
	l2tp? ( net-dialup/xl2tpd )
	ofono? ( net-misc/ofono )
	policykit? ( sys-auth/polkit )
	wifi? (
		!iwd? ( >=net-wireless/wpa_supplicant-0.7.3-r3[dbus] )
		iwd? ( net-wireless/iwd )
	)"
DEPEND="${COMMON_DEPEND}
	>=sys-kernel/linux-headers-2.6.39"

PATCHES=( "${FILESDIR}/libresolv-musl-fix.patch" )

if [ ! -z ${COMMIT} ]; then
	S=${WORKDIR}/${PN}-${COMMIT}
fi

src_prepare() {
	default
	eautoreconf

	cp "${FILESDIR}"/connman.initd2 "${T}"
	if use iwd; then
		sed -i \
			-e "s/need dbus/need dbus iwd/" \
			-e '/start-stop-daemon --start/ s/ -- / -- --wifi=iwd_agent /' \
			"${T}"/connman.initd2 || die
		sed -i \
			-e "/^ExecStart/ s/$/ --wifi=iwd_agent/" \
			src/connman.service.in || die
	fi
}

src_configure() {
	local myeconfargs=(
		--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 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 wireguard) \
		$(use_enable wispr wispr builtin) \
		--with-firewall=$(usex iptables "iptables" "nftables" ) \
		--disable-iospm \
		--disable-hh2serial-gps
		)
	# wifi USE logic to match networkmanager ebuild behavior
	if use wifi; then
		if use iwd; then
			myeconfargs+=( --enable-iwd --disable-wifi )
		else
			myeconfargs+=( --disable-iwd --enable-wifi=builtin )
		fi
	else
		myeconfargs+=( --disable-iwd --disable-wifi )
	fi

	econf "${myeconfargs[@]}"
}

src_install() {
	default
	dobin client/connmanctl

	if use doc; then
		dodoc doc/*.txt
	fi
	keepdir /usr/lib/${PN}/scripts
	keepdir /var/lib/${PN}
	newinitd "${T}"/${PN}.initd2 ${PN}
	newconfd "${FILESDIR}"/${PN}.confd ${PN}
}

pkg_postinst() {
	tmpfiles_process connman_resolvconf.conf
}