# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/vdr-1.3.36.ebuild,v 1.5 2005/12/17 16:14:52 zzam Exp $

inherit eutils

IUSE="lirc vfat rcu
	lnbsharing sourcecaps aio bigpatch jumpplay"

# Names of patches
FNAME_AIO="${P}-enAIO-2.7.diff"
FNAME_BIGPATCH="${P}-bigpatch-test1"
FNAME_JUMPPLAY="vdr-jumpplay-0.6-1.3.29.diff"
FNAME_LNBSHARING="configurableLNBshare-VDR_1.3.36.patch"
FNAME_SOURCECAPS_NORMAL="vdr-1.3.36-SourceCaps.patch"
FNAME_SOURCECAPS_LNBSHARING="vdr-1.3.36-SourceCaps-for-lnb-sharing.patch"

DESCRIPTION="Video Disk Recorder - turns a pc into a powerful set top box for DVB"
HOMEPAGE="http://www.cadsoft.de/vdr/"
SRC_URI="ftp://ftp.cadsoft.de/vdr/Developer/${P}.tar.bz2
	lnbsharing? ( http://xn--ltzke-jua.de/dvb/VDR_LNB_sharing_patch/${FNAME_LNBSHARING} )
	aio? ( http://www.saunalahti.fi/~rahrenbe/vdr/patches/${FNAME_AIO}.gz )
	bigpatch? ( http://bigpatch.vdr-developer.org/${PV}/${FNAME_BIGPATCH}.tar.bz2 )
	jumpplay? ( http://www.toms-cafe.de/vdr/download/${FNAME_JUMPPLAY} )"

KEYWORDS="~amd64 ~ppc x86"
SLOT="0"
LICENSE="GPL-2"


_DEPEND="media-libs/jpeg
	lirc? ( app-misc/lirc )
	sys-apps/gawk"

RDEPEND="${_DEPEND}
	dev-lang/perl
	media-tv/vdrplugin-rebuild
	media-tv/gentoo-vdr-scripts"

DEPEND="${_DEPEND}
	media-tv/linuxtv-dvb-headers"

# Relevant Pathes for vdr on gentoo
DVB_DIR=/usr/include
VDR_INCLUDE_DIR=/usr/include/vdr
PLUGIN_DIR=/usr/lib/vdr/plugins
CONF_DIR=/etc/vdr
RC_DIR=/usr/lib/vdr/rcscript
CAP_FILE=${S}/vdr-capabilities.sh
CAPS="# Capabilities of the vdr-executable for use by startscript etc."
VDR_HOME=/var/vdr

add_cap() {
	while [ "$1" ]; do
		CAPS="${CAPS}\n$1=1"
		shift
	done
}

pkg_setup() {
	enewgroup vdr
	enewuser vdr -1 /bin/bash ${VDR_HOME} vdr,video
}

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

	ebegin "Changing pathes for gentoo"
	sed -e 's-$(DVBDIR)/include-$(DVBDIR)-' -i Makefile

	sed \
	  -e 's-ConfigDirectory = VideoDirectory;-ConfigDirectory = CONFIGDIR;-' \
	  -i vdr.c

	cat > Make.config <<-EOT
		#
		# Generated by ebuild ${PF}
		#
		DVBDIR       = ${DVB_DIR}
		PLUGINLIBDIR = ${PLUGIN_DIR}
		CONFIGDIR    = ${CONF_DIR}

		DEFINES     += -DCONFIGDIR=\"\$(CONFIGDIR)\"
	EOT
	eend 0

	if use rcu; then
		echo "REMOTE=RCU" >> Make.config
		use lirc && ewarn "Only one remotes can be used: dropping lirc and keeping rcu"
	else
		use lirc && echo "REMOTE=LIRC" >> Make.config
	fi
	use vfat && echo "VFAT=1" >> Make.config

	# apply standard patches
	local MY_SOURCECAPS="${FILESDIR}/${FNAME_SOURCECAPS_NORMAL}"

	epatch "${FILESDIR}/1.3.34/vdr-1.3.34-shutdown-retry.diff"

	if use bigpatch; then
		epatch "${WORKDIR}/BigPatch/bigpatch-current.diff"
		add_cap PATCHED_BIGPATCH PATCHED_SOURCECAPS PATCHED_LNBSHARING PATCHED_AIO
	else
		# All these patches are included in bigpatch
		if use aio; then
			if use lnbsharing; then
				ewarn "At the moment lnbsharing can not be combined with aio, dropping aio patch!"
			else
				epatch "../${FNAME_AIO}"
				add_cap PATCHED_AIO
			fi
		fi

		if use lnbsharing; then
			epatch "${DISTDIR}/${FNAME_LNBSHARING}"
			MY_SOURCECAPS="${FILESDIR}/${FNAME_SOURCECAPS_LNBSHARING}"
			add_cap PATCHED_LNBSHARING
		fi

		use sourcecaps && epatch "${MY_SOURCECAPS}"
		add_cap PATCHED_SOURCECAPS

		if use jumpplay; then
			if use sourcecaps; then
				ewarn "At the moment sourcecaps can not be combined with jumpplay, dropping jumpplay patch."
			else
				epatch "${DISTDIR}/${FNAME_JUMPPLAY}"
			fi
		fi
	fi



	# apply local patches defined by variable VDR_LOCAL_PATCHES_DIR
	if test -n "${VDR_LOCAL_PATCHES_DIR}"; then
		echo
		einfo "Applying local patches"
		for LOCALPATCH in ${VDR_LOCAL_PATCHES_DIR}/${PV}/*.{diff,patch}; do
			test -f "${LOCALPATCH}" && epatch "${LOCALPATCH}"
		done
	fi

	if [[ -n "${VDRSOURCE_DIR}" ]]; then
		cp -r ${S} ${T}/source-tree
	fi


	add_cap CAP_IRCTRL_RUNTIME_PARAM \
		CAP_VFAT_RUNTIME_PARAM \
		CAP_SHUTDOWN_AUTO_RETRY

	echo -e ${CAPS} > ${CAP_FILE}
}

src_install() {
	exeinto /usr/bin
	doexe vdr
	doexe svdrpsend.pl

	insinto ${VDR_INCLUDE_DIR}
	doins *.h
	doins Make.config

	insinto ${VDR_INCLUDE_DIR}/libsi
	doins libsi/*.h

	keepdir ${CONF_DIR}
	keepdir ${CONF_DIR}/plugins
	keepdir ${VDR_HOME}
	keepdir ${VDR_HOME}/video

	insinto ${CONF_DIR}
	doins *.conf channels.conf.*

	chown -R vdr:vdr ${D}/${CONF_DIR} ${D}/${VDR_HOME}
	keepdir "${PLUGIN_DIR}"

	doman vdr.1 vdr.5

	insinto ${RC_DIR}
	doins ${CAP_FILE}

	if [[ -n "${VDRSOURCE_DIR}" ]]; then
		einfo "Installing sources"
		insinto ${VDRSOURCE_DIR}/${P}
		doins -r ${T}/source-tree/*
		keepdir ${VDRSOURCE_DIR}/${P}/PLUGINS/lib
	fi
}

pkg_postinst() {
	einfo "It is a good idea to run vdrplugin-rebuild now"
}