# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/media-tv/xmltv/xmltv-0.5.55.ebuild,v 1.4 2009/07/19 17:58:06 tove Exp $

# modified by jamatik for media-tv/xmltv-0.5.58

inherit eutils perl-module

DESCRIPTION="A collection of tools to obtain, manipulate, and search TV Listings stored in the XMLTV format."
HOMEPAGE="http://xmltv.org/"
SRC_URI="mirror://sourceforge/xmltv/${P}.tar.bz2"

IUSE="ch_search dk_dr dk_tvtid dtv_la ee es_laguiatv es_miguiatv eu_epgdata fi fr hr huro il in is it it_dvb na_dd na_dtv na_icons nl no_gfeed pt re se_swedb uk_bleb uk_rt za tv_combiner tv_check tv_pick_cgi debug"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~sparc ~x86"
PREFIX="/usr"

# NOTE: you can customize the xmltv installation by
#       defining USE FLAGS (custom ones in
#	/etc/portage/package.use for example).
#
#	Do "equery u media-tv/xmltv" for the complete
#	list of the flags you can set, with description.

# EXAMPLES:
# enable just North American grabber
#  in /etc/portage/package.use : media-tv/xmltv na_dd
#
# enable graphical front-end, Italy grabber
#  in /etc/portage/package.use : media-tv/xmltv tv_check it

RDEPEND=">=dev-perl/libwww-perl-5.65
	>=dev-perl/XML-Parser-2.34
	>=dev-perl/XML-Twig-3.10
	>=dev-perl/DateManip-5.42
        >=dev-perl/XML-Writer-0.6
        >=dev-lang/perl-5.8
	virtual/perl-Memoize
	virtual/perl-Storable
	dev-perl/File-Slurp
	dev-perl/Lingua-EN-Numbers-Ordinate
	>=dev-perl/Lingua-Preferred-0.2.4
	>=dev-perl/Term-ProgressBar-2.03
	virtual/perl-Compress-Raw-Zlib
	dev-perl/PerlIO-gzip
	dev-perl/Unicode-String"

# TODO dev-perl/Linux-DVB not in portage tree
DEPEND="${RDEPEND}
	debug? ( dev-perl/Log-TraceMessages )
	ch_search? ( dev-perl/HTML-Tree >=dev-perl/HTML-Parser-3.34 )
	dtv_la? ( dev-perl/HTML-Tree dev-perl/HTML-Format )
	uk_rt? ( dev-perl/HTTP-Cache-Transparent dev-perl/libwww-perl  >=dev-perl/HTML-Parser-3.34 )
	uk_bleb? ( dev-perl/Archive-Zip virtual/perl-Scalar-List-Utils )
	is? ( dev-perl/XML-LibXSLT dev-perl/XML-DOM )
	it_dvb? ( dev-perl/Linux-DVB virtual/perl-Time-HiRes dev-perl/IO-BufferedSelect )
	in? ( dev-perl/XML-LibXML )
	na_dd? ( na_icons? ( dev-perl/HTML-Tree dev-perl/WWW-Mechanize ) )
	na_dd? ( dev-perl/SOAP-Lite dev-perl/TermReadKey dev-perl/XML-Twig )
	fi? ( dev-perl/HTML-Tree )
	il? ( dev-perl/Text-Iconv )
	es_laguiatv? ( dev-perl/HTML-Tree )
	es_miguiatv? ( dev-perl/HTML-Tree )
	nl? ( dev-perl/HTML-Tree )
	huro? ( dev-perl/HTML-Tree )
	dk_dr? ( dev-perl/Data-DumpXML dev-perl/DateTime-Locale dev-perl/DateTime dev-perl/Parse-RecDescent dev-perl/libwww-perl )
	se_swedb? ( dev-perl/IO-stringy dev-perl/XML-LibXML dev-perl/HTTP-Cache-Transparent )
	hr? ( dev-perl/HTTP-Cache-Transparent dev-perl/IO-stringy dev-perl/XML-LibXML )
	no_gfeed? ( dev-perl/HTTP-Cache-Transparent dev-perl/IO-stringy dev-perl/XML-LibXML )
	fr? ( >=dev-perl/HTML-Parser-3.34 dev-perl/HTML-Tree )
	pt? ( dev-perl/HTML-Tree dev-perl/Unicode-UTF8simple )
	za? ( dev-perl/HTML-Tree >=dev-perl/HTML-Parser-3.34 )
	eu_epgdata? ( dev-perl/Archive-Zip >=dev-perl/HTML-Parser-3.34 dev-perl/libwww-perl perl-core/File-Temp dev-perl/DateTime-Format-Strptime )
	tv_combiner? ( dev-perl/XML-LibXML )
	tv_check? ( dev-perl/perl-tk dev-perl/Tk-TableMatrix )
	tv_pick_cgi? ( virtual/perl-CGI )
	ee? ( dev-perl/libwww-perl  )
	re? ( dev-perl/HTML-Tree >=dev-perl/HTML-Parser-3.34 )
	na_dtv?	( dev-perl/WWW-Mechanize dev-perl/DateTime-Locale dev-perl/HTML-TokeParser-Simple dev-perl/DateTime-Format-DateParse )
	"

make_config() {
	# Never except default configuration
	echo "no"

        # if use then enable
	use ch_search && echo "yes" || echo "no"
	use dtv_la && echo "yes" || echo "no"
	use uk_rt && echo "yes" || echo "no"
	use uk_bleb && echo "yes" || echo "no"
	use is && echo "yes" || echo "no"
	use it && echo "yes" || echo "no"
	use it_dvb && echo "yes" || echo "no"
	use in && echo "yes" || echo "no"
	use na_dd && echo "yes" || echo "no"
	use na_icons && echo "yes" || echo "no"
	use fi && echo "yes" || echo "no"
	use il && echo "yes" || echo "no"
	use es_laguiatv && echo "yes" || echo "no"
	use es_miguiatv && echo "yes" || echo "no"
	use nl && echo "yes" || echo "no"
	use huro && echo "yes" || echo "no"
	use dk_dr && echo "yes" || echo "no"
	use se_swedb && echo "yes" || echo "no"
	use hr && echo "yes" || echo "no"
	use no_gfeed && echo "yes" || echo "no"
	use fr && echo "yes" || echo "no"
	use pt && echo "yes" || echo "no"
	use za && echo "yes" || echo "no"
	use eu_epgdata && echo "yes" || echo "no"
        # Enable combiner
        use tv_combiner && echo "yes" || echo "no"
        # Enable GUI checking.
        use tv_check && echo "yes" || echo "no"
        use tv_check && echo "yes" || echo "no"
        # Enable CGI support
        use ee && echo "yes" || echo "no"
	use re && echo "yes" || echo "no"
	use na_dtv && echo "yes" || echo "no"
}

src_unpack() {
	unpack ${A}
	cd "${S}"
}

src_compile() {
	# TODO check if still needed
	sed -i "s:\$VERSION = '${PV}':\$VERSION = '${PVR}':" Makefile.PL || die
	sed -i -e 's|\"/cc/line.gif\"|qr/\\/line.gif$/|' grab/huro/tv_grab_huro.in || die

	# latest per-module eclass seems to not allow a real use of pm_echovar,
	# so instead of the default method below we're forced to skip perl-module_src_compile
	pm_echovar=`make_config`
	perl-module_src_compile || die "error compiling"
	#make_config | perl Makefile.PL || die "error configuring"
	#make || die "error compiling"
}

src_install() {
	# actually make test should be unneede, but if non na grabbers
	# start to not install remove comment below
	#make test
	#make

	# to bypass build issue
	#make DESTDIR=${D} install || die "error installing"

	perl-module_src_install || die "error installing"

	for i in `grep -rl "${D}" "${D}"` ; do
		sed -e "s:${D}::g" -i "${i}"
	done

	if use tv_pick_cgi ; then
		dobin choose/tv_pick/tv_pick_cgi || die "error creating tv_pick_cgi"
	fi
}

pkg_postinst() {
	if use tv_pick_cgi ; then
		elog "To use tv_pick_cgi, please link it from /usr/bin/tv_pick_cgi"
		elog "to where the ScriptAlias directive is configured."
	fi
	if use na_icons ; then
		if use na_dd ; then
			elog "na_icons set for na_dd grabber user."
		else
			elog "na_icons works only when na_dd is set, "
			elog "otherwise it does nothing."
		fi
	fi
}