summaryrefslogtreecommitdiff
blob: 8a75327d32b0151bec7fbfc947e812cdcb16591a (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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=5
PYTHON_COMPAT=( python2_7 )

inherit eutils multilib user python-single-r1 systemd

if [[ ${PV} == "9999" ]]; then
	EGIT_REPO_URI="https://github.com/bitlbee/bitlbee.git"
	inherit git-r3
else
	SRC_URI="http://get.bitlbee.org/src/${P}.tar.gz"
	KEYWORDS="~amd64 ~ppc ~ppc64 ~x86 ~x86-fbsd"
fi

DESCRIPTION="irc to IM gateway that support multiple IM protocols"
HOMEPAGE="http://www.bitlbee.org/"

LICENSE="GPL-2"
SLOT="0"
IUSE="debug gnutls ipv6 +xmpp libevent msn nss +oscar otr +plugins purple selinux
	skype ssl test twitter +yahoo xinetd libressl"

COMMON_DEPEND="
	>=dev-libs/glib-2.16
	purple? ( net-im/pidgin )
	libevent? ( dev-libs/libevent:= )
	otr? ( >=net-libs/libotr-4 )
	gnutls? ( net-libs/gnutls:= )
	!gnutls? (
		nss? ( dev-libs/nss )
		!nss? ( ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:= ) ) )
	)
	"
DEPEND="${COMMON_DEPEND}
	dev-lang/python
	virtual/pkgconfig
	selinux? ( sec-policy/selinux-bitlbee )
	test? ( dev-libs/check )"

RDEPEND="${COMMON_DEPEND}
	virtual/logger
	skype? (
		dev-python/skype4py[${PYTHON_USEDEP}]
		net-im/skype
	)
	xinetd? ( sys-apps/xinetd )"

REQUIRED_USE="|| ( purple xmpp msn oscar yahoo )
	msn? ( || ( gnutls nss ssl ) )
	xmpp? ( !nss )"

pkg_setup() {
	if use xmpp && ! use gnutls && ! use ssl ; then
		einfo
		elog "You have enabled support for Jabber but do not have SSL"
		elog "support enabled.  This *will* prevent bitlbee from being"
		elog "able to connect to SSL enabled Jabber servers.  If you need to"
		elog "connect to Jabber over SSL, enable ONE of the following use"
		elog "flags: gnutls or ssl"
		einfo
	fi

	use skype && python-single-r1_pkg_setup

	enewgroup bitlbee
	enewuser bitlbee -1 -1 /var/lib/bitlbee bitlbee
}

src_prepare() {
	sed -i \
		-e "s@/usr/local/sbin/bitlbee@/usr/sbin/bitlbee@" \
		-e "s/nobody/bitlbee/" \
		-e "s/}/	disable         = yes\n}/" \
		doc/bitlbee.xinetd || die "sed failed in xinetd"

	sed -i \
		-e "s@mozilla-nss@nss@g" \
		configure || die "sed failed in configure"

	use skype && python_fix_shebang protocols/skype/skyped.py

	[[ ${PV} != "9999" ]] && epatch "${FILESDIR}"/${PN}-3.2.1-configure.patch
	epatch_user
}

src_configure() {
	# setup plugins, protocol, ipv6 and debug
	use xmpp && myconf="${myconf} --jabber=1"
	for flag in debug ipv6 msn oscar plugins purple skype twitter yahoo ; do
		if use ${flag} ; then
			myconf="${myconf} --${flag}=1"
		else
			myconf="${myconf} --${flag}=0"
		fi
	done

	# set otr
	if use otr && use plugins ; then
		myconf="${myconf} --otr=plugin"
	else
		if use otr ; then
			ewarn "OTR support has been disabled automatically because it"
			ewarn "requires the plugins USE flag."
		fi
		myconf="${myconf} --otr=0"
	fi

	# setup ssl use flags
	if use gnutls ; then
		myconf="${myconf} --ssl=gnutls"
		einfo "Using gnutls for SSL support"
	elif use ssl ; then
		myconf="${myconf} --ssl=openssl"
		einfo "Using openssl for SSL support"
	elif use nss ; then
		myconf="${myconf} --ssl=nss"
		einfo "Using nss for SSL support"
	else
		myconf="${myconf} --ssl=bogus"
		einfo "You will not have any encryption support enabled."
	fi

	# set event handler
	if use libevent ; then
		myconf="${myconf} --events=libevent"
	else
		myconf="${myconf} --events=glib"
	fi

	# NOTE: bitlbee's configure script is not an autotool creation,
	# so that is why we don't use econf.
	./configure \
		--prefix="${EPREFIX}/usr" \
		--datadir="${EPREFIX}/usr/share/bitlbee" \
		--etcdir="${EPREFIX}/etc/bitlbee" \
		--plugindir="${EPREFIX}/usr/$(get_libdir)/bitlbee" \
		--systemdsystemunitdir=$(systemd_get_unitdir) \
		--doc=1 --strip=0 ${myconf} || die "econf failed"

	sed -i \
		-e "/^EFLAGS/s:=:&${LDFLAGS} :" \
		Makefile.settings || die "sed failed"
}

src_install() {
	emake install install-etc install-doc install-dev install-systemd DESTDIR="${D}"

	keepdir /var/lib/bitlbee
	fperms 700 /var/lib/bitlbee
	fowners bitlbee:bitlbee /var/lib/bitlbee

	dodoc doc/{AUTHORS,CHANGES,CREDITS,FAQ,README}

	if use skype ; then
		newdoc protocols/skype/NEWS NEWS-skype
		newdoc protocols/skype/README README-skype
	fi

	if use xinetd ; then
		insinto /etc/xinetd.d
		newins doc/bitlbee.xinetd bitlbee
	fi

	newinitd "${FILESDIR}"/bitlbee.initd-r1 bitlbee
	newconfd "${FILESDIR}"/bitlbee.confd-r1 bitlbee

	exeinto /usr/share/bitlbee
	doexe utils/{convert_purple.py,bitlbee-ctl.pl}
}

pkg_postinst() {
	chown -R bitlbee:bitlbee "${ROOT}"/var/lib/bitlbee
	[[ -d "${ROOT}"/var/run/bitlbee ]] &&
		chown -R bitlbee:bitlbee "${ROOT}"/var/run/bitlbee

	if [[ -z ${REPLACING_VERSIONS} ]]; then
		einfo
		elog "The bitlbee init script will now attempt to stop all processes owned by the"
		elog "bitlbee user, including per-client forks."
		elog
		elog "Tell the init script not to touch anything besides the main bitlbee process"
		elog "by changing the BITLBEE_STOP_ALL variable in"
		elog "	/etc/conf.d/bitlbee"
		einfo
	fi
}