# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI=5
inherit autotools eutils fdo-mime gnome2-utils qmake-utils systemd user

DESCRIPTION="A Fast, Easy and Free BitTorrent client"
HOMEPAGE="http://www.transmissionbt.com/"
SRC_URI="http://download.transmissionbt.com/${PN}/files/${P}.tar.xz"

# web/LICENSE is always GPL-2 whereas COPYING allows either GPL-2 or GPL-3 for the rest
# transmission in licenses/ is for mentioning OpenSSL linking exception
# MIT is in several libtransmission/ headers
LICENSE="|| ( GPL-2 GPL-3 Transmission-OpenSSL-exception ) GPL-2 MIT"
SLOT=0
IUSE="ayatana gtk libressl lightweight systemd qt4 qt5 xfs"
KEYWORDS="~amd64 ~arm ~mips ~ppc ~ppc64 ~x86 ~x86-fbsd ~amd64-linux"

RDEPEND=">=dev-libs/libevent-2.0.10:=
	!libressl? ( dev-libs/openssl:0= )
	libressl? ( dev-libs/libressl )
	net-libs/libnatpmp:=
	>=net-libs/miniupnpc-1.7:=
	>=net-misc/curl-7.16.3:=[ssl]
	sys-libs/zlib:=
	gtk? (
		>=dev-libs/dbus-glib-0.100:=
		>=dev-libs/glib-2.32:2=
		>=x11-libs/gtk+-3.4:3=
		ayatana? ( >=dev-libs/libappindicator-0.4.90:3= )
		)
	systemd? ( sys-apps/systemd:= )
	qt4? (
		dev-qt/qtcore:4
		dev-qt/qtgui:4
		dev-qt/qtdbus:4
		)
	qt5? (
		dev-qt/qtcore:5
		dev-qt/qtdbus:5
		dev-qt/qtgui:5
		dev-qt/qtnetwork:5
		dev-qt/qtwidgets:5
		)"
DEPEND="${RDEPEND}
	>=dev-libs/glib-2.32
	dev-util/intltool
	sys-devel/gettext
	virtual/os-headers
	virtual/pkgconfig
	qt5? ( dev-qt/linguist-tools:5 )
	xfs? ( sys-fs/xfsprogs )"

REQUIRED_USE="ayatana? ( gtk ) ?? ( qt4 qt5 )"

DOCS="AUTHORS NEWS qt/README.txt"

pkg_setup() {
	enewgroup ${PN}
	enewuser ${PN} -1 -1 -1 ${PN}
}

src_prepare() {
	sed -i -e '/CFLAGS/s:-ggdb3::' configure.ac || die
	# Trick to avoid automagic dependency
	use ayatana || { sed -i -e '/^LIBAPPINDICATOR_MINIMUM/s:=.*:=9999:' configure.ac || die; }
	# Pass our configuration dir to systemd unit file
	sed -i '/ExecStart/ s|$| -g /var/lib/transmission/config|' daemon/${PN}-daemon.service || die
	# http://trac.transmissionbt.com/ticket/4324
	sed -i -e 's|noinst\(_PROGRAMS = $(TESTS)\)|check\1|' lib${PN}/Makefile.am || die
	# Fix for broken translations path
	epatch "${FILESDIR}"/${PN}-2.80-translations-path-fix.patch
	# http://trac.transmissionbt.com/ticket/5700
	sed -i -e '1iQMAKE_CXXFLAGS += -std=c++11' qt/qtr.pro || die

	epatch "${FILESDIR}/2.84-miniupnp14.patch"
	epatch "${FILESDIR}/2.84-libevent-2.1.5.patch"
	epatch "${FILESDIR}/2.84-node_alloc-segfault.patch"

	epatch_user
	eautoreconf
}

src_configure() {
	export ac_cv_header_xfs_xfs_h=$(usex xfs)

	econf \
		--enable-external-natpmp \
		$(use_enable lightweight) \
		$(use_with systemd systemd-daemon) \
		$(use_with gtk)

	if use qt4 || use qt5; then
		pushd qt >/dev/null || die
		use qt4 && eqmake4 qtr.pro
		use qt5 && eqmake5 qtr.pro
		popd >/dev/null || die
	fi
}

src_compile() {
	emake

	if use qt4 || use qt5; then
		local qt_bindir
		use qt4 && qt_bindir=$(qt4_get_bindir)
		use qt5 && qt_bindir=$(qt5_get_bindir)
		emake -C qt
		"${qt_bindir}"/lrelease qt/translations/*.ts || die
	fi
}

src_install() {
	default

	rm -f "${ED}"/usr/share/${PN}/web/LICENSE

	newinitd "${FILESDIR}"/${PN}-daemon.initd.9 ${PN}-daemon
	newconfd "${FILESDIR}"/${PN}-daemon.confd.4 ${PN}-daemon
	systemd_dounit daemon/${PN}-daemon.service

	keepdir /var/{lib/${PN}/{config,downloads},log/${PN}}
	fowners -R ${PN}:${PN} /var/{lib/${PN}/{,config,downloads},log/${PN}}

	if use qt4 || use qt5; then
		pushd qt >/dev/null || die
		emake INSTALL_ROOT="${ED}"/usr install

		domenu ${PN}-qt.desktop

		local res
		for res in 16 22 24 32 48 64 72 96 128 192 256; do
			doicon -s ${res} icons/hicolor/${res}x${res}/${PN}-qt.png
		done
		doicon -s scalable icons/hicolor/scalable/${PN}-qt.svg

		use qt4 && insinto /usr/share/qt4/translations
		use qt5 && insinto /usr/share/qt5/translations
		doins translations/*.qm
		popd >/dev/null || die
	fi
}

pkg_preinst() {
	gnome2_icon_savelist
}

pkg_postinst() {
	fdo-mime_desktop_database_update
	gnome2_icon_cache_update

	elog "If you use ${PN}-daemon, please, set 'rpc-username' and"
	elog "'rpc-password' (in plain text, ${PN}-daemon will hash it on"
	elog "start) in settings.json file located at /var/lib/${PN}/config or"
	elog "any other appropriate config directory."
	elog
	elog "Since µTP is enabled by default, ${PN} needs large kernel buffers for"
	elog "the UDP socket. You can append following lines into /etc/sysctl.conf:"
	elog " net.core.rmem_max = 4194304"
	elog " net.core.wmem_max = 1048576"
	elog "and run sysctl -p"
}

pkg_postrm() {
	fdo-mime_desktop_database_update
	gnome2_icon_cache_update
}