summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Schwarzott <zzam@gentoo.org>2011-04-11 13:33:01 +0000
committerMatthias Schwarzott <zzam@gentoo.org>2011-04-11 13:33:01 +0000
commit9693571f66f7d84f3a3d49cee44a1f3abe844bc2 (patch)
tree76477aae912d65e3c4fc1b0857fa17cda1b5f4a6 /media-video/vdr
parentAdd support for the Google/VisualOn encoders for aac and amrwb (diff)
downloadhistorical-9693571f66f7d84f3a3d49cee44a1f3abe844bc2.tar.gz
historical-9693571f66f7d84f3a3d49cee44a1f3abe844bc2.tar.bz2
historical-9693571f66f7d84f3a3d49cee44a1f3abe844bc2.zip
Backported v4l2 support from vdr-1.7.3. Bug #359409.
Package-Manager: portage-2.1.9.45/cvs/Linux x86_64
Diffstat (limited to 'media-video/vdr')
-rw-r--r--media-video/vdr/ChangeLog8
-rw-r--r--media-video/vdr/files/vdr-1.6.0-use-v4l2.patch176
-rw-r--r--media-video/vdr/vdr-1.6.0_p2-r6.ebuild448
3 files changed, 631 insertions, 1 deletions
diff --git a/media-video/vdr/ChangeLog b/media-video/vdr/ChangeLog
index 1fa4b1d295a4..2834162e7562 100644
--- a/media-video/vdr/ChangeLog
+++ b/media-video/vdr/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for media-video/vdr
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/ChangeLog,v 1.142 2011/02/26 18:56:20 signals Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/ChangeLog,v 1.143 2011/04/11 13:33:00 zzam Exp $
+
+*vdr-1.6.0_p2-r6 (11 Apr 2011)
+
+ 11 Apr 2011; Matthias Schwarzott <zzam@gentoo.org> +vdr-1.6.0_p2-r6.ebuild,
+ +files/vdr-1.6.0-use-v4l2.patch:
+ Backported v4l2 support from vdr-1.7.3. Bug #359409.
26 Feb 2011; Kevin McCarthy <signals@gentoo.org> vdr-1.6.0_p2.ebuild,
vdr-1.6.0_p2-r2.ebuild, vdr-1.6.0_p2-r3.ebuild, vdr-1.6.0_p2-r4.ebuild,
diff --git a/media-video/vdr/files/vdr-1.6.0-use-v4l2.patch b/media-video/vdr/files/vdr-1.6.0-use-v4l2.patch
new file mode 100644
index 000000000000..ffc02f4b52f4
--- /dev/null
+++ b/media-video/vdr/files/vdr-1.6.0-use-v4l2.patch
@@ -0,0 +1,176 @@
+
+ from Version 1.7.3
+ - Changed cDvbDevice::GrabImage() to use V4L2 (thanks to Marco Schl��ler).
+
+diff --git a/dvbdevice.c b/dvbdevice.c
+index e0b05a1..6aa0056 100644
+--- a/dvbdevice.c
++++ b/dvbdevice.c
+@@ -10,7 +10,7 @@
+ #include "dvbdevice.h"
+ #include <errno.h>
+ #include <limits.h>
+-#include <linux/videodev.h>
++#include <linux/videodev2.h>
+ #include <linux/dvb/audio.h>
+ #include <linux/dvb/dmx.h>
+ #include <linux/dvb/frontend.h>
+@@ -604,69 +604,103 @@ uchar *cDvbDevice::GrabImage(int &Size, bool Jpeg, int Quality, int SizeX, int S
+ int videoDev = open(buffer, O_RDWR);
+ if (videoDev >= 0) {
+ uchar *result = NULL;
+- struct video_mbuf mbuf;
+- if (ioctl(videoDev, VIDIOCGMBUF, &mbuf) == 0) {
+- int msize = mbuf.size;
+- unsigned char *mem = (unsigned char *)mmap(0, msize, PROT_READ | PROT_WRITE, MAP_SHARED, videoDev, 0);
+- if (mem && mem != (unsigned char *)-1) {
+- // set up the size and RGB
+- struct video_capability vc;
+- if (ioctl(videoDev, VIDIOCGCAP, &vc) == 0) {
+- struct video_mmap vm;
+- vm.frame = 0;
+- if ((SizeX > 0) && (SizeX <= vc.maxwidth) &&
+- (SizeY > 0) && (SizeY <= vc.maxheight)) {
+- vm.width = SizeX;
+- vm.height = SizeY;
+- }
+- else {
+- vm.width = vc.maxwidth;
+- vm.height = vc.maxheight;
+- }
+- vm.format = VIDEO_PALETTE_RGB24;
+- if (ioctl(videoDev, VIDIOCMCAPTURE, &vm) == 0 && ioctl(videoDev, VIDIOCSYNC, &vm.frame) == 0) {
+- // make RGB out of BGR:
+- int memsize = vm.width * vm.height;
+- unsigned char *mem1 = mem;
+- for (int i = 0; i < memsize; i++) {
+- unsigned char tmp = mem1[2];
+- mem1[2] = mem1[0];
+- mem1[0] = tmp;
+- mem1 += 3;
+- }
+-
+- if (Quality < 0)
+- Quality = 100;
+-
+- dsyslog("grabbing to %s %d %d %d", Jpeg ? "JPEG" : "PNM", Quality, vm.width, vm.height);
+- if (Jpeg) {
+- // convert to JPEG:
+- result = RgbToJpeg(mem, vm.width, vm.height, Size, Quality);
+- if (!result)
+- esyslog("ERROR: failed to convert image to JPEG");
+- }
+- else {
+- // convert to PNM:
+- char buf[32];
+- snprintf(buf, sizeof(buf), "P6\n%d\n%d\n255\n", vm.width, vm.height);
+- int l = strlen(buf);
+- int bytes = memsize * 3;
+- Size = l + bytes;
+- result = MALLOC(uchar, Size);
+- if (result) {
+- memcpy(result, buf, l);
+- memcpy(result + l, mem, bytes);
++ // set up the size and RGB
++ v4l2_format fmt;
++ memset(&fmt, 0, sizeof(fmt));
++ fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ fmt.fmt.pix.width = SizeX;
++ fmt.fmt.pix.height = SizeY;
++ fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_BGR24;
++ fmt.fmt.pix.field = V4L2_FIELD_ANY;
++ if (ioctl(videoDev, VIDIOC_S_FMT, &fmt) == 0) {
++ v4l2_requestbuffers reqBuf;
++ memset(&reqBuf, 0, sizeof(reqBuf));
++ reqBuf.count = 2;
++ reqBuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ reqBuf.memory = V4L2_MEMORY_MMAP;
++ if (ioctl(videoDev, VIDIOC_REQBUFS, &reqBuf) >= 0) {
++ v4l2_buffer mbuf;
++ memset(&mbuf, 0, sizeof(mbuf));
++ mbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ mbuf.memory = V4L2_MEMORY_MMAP;
++ if (ioctl(videoDev, VIDIOC_QUERYBUF, &mbuf) == 0) {
++ int msize = mbuf.length;
++ unsigned char *mem = (unsigned char *)mmap(0, msize, PROT_READ | PROT_WRITE, MAP_SHARED, videoDev, 0);
++ if (mem && mem != (unsigned char *)-1) {
++ v4l2_buffer buf;
++ memset(&buf, 0, sizeof(buf));
++ buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ buf.memory = V4L2_MEMORY_MMAP;
++ buf.index = 0;
++ if (ioctl(videoDev, VIDIOC_QBUF, &buf) == 0) {
++ v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ if (ioctl (videoDev, VIDIOC_STREAMON, &type) == 0) {
++ memset(&buf, 0, sizeof(buf));
++ buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
++ buf.memory = V4L2_MEMORY_MMAP;
++ buf.index = 0;
++ if (ioctl(videoDev, VIDIOC_DQBUF, &buf) == 0) {
++ if (ioctl(videoDev, VIDIOC_STREAMOFF, &type) == 0) {
++ // make RGB out of BGR:
++ int memsize = fmt.fmt.pix.width * fmt.fmt.pix.height;
++ unsigned char *mem1 = mem;
++ for (int i = 0; i < memsize; i++) {
++ unsigned char tmp = mem1[2];
++ mem1[2] = mem1[0];
++ mem1[0] = tmp;
++ mem1 += 3;
++ }
++
++ if (Quality < 0)
++ Quality = 100;
++
++ dsyslog("grabbing to %s %d %d %d", Jpeg ? "JPEG" : "PNM", Quality, fmt.fmt.pix.width, fmt.fmt.pix.height);
++ if (Jpeg) {
++ // convert to JPEG:
++ result = RgbToJpeg(mem, fmt.fmt.pix.width, fmt.fmt.pix.height, Size, Quality);
++ if (!result)
++ esyslog("ERROR: failed to convert image to JPEG");
++ }
++ else {
++ // convert to PNM:
++ char buf[32];
++ snprintf(buf, sizeof(buf), "P6\n%d\n%d\n255\n", fmt.fmt.pix.width, fmt.fmt.pix.height);
++ int l = strlen(buf);
++ int bytes = memsize * 3;
++ Size = l + bytes;
++ result = MALLOC(uchar, Size);
++ if (result) {
++ memcpy(result, buf, l);
++ memcpy(result + l, mem, bytes);
++ }
++ else
++ esyslog("ERROR: failed to convert image to PNM");
++ }
++ }
++ else
++ esyslog("ERROR: video device VIDIOC_STREAMOFF failed");
++ }
++ else
++ esyslog("ERROR: video device VIDIOC_DQBUF failed");
+ }
+ else
+- esyslog("ERROR: failed to convert image to PNM");
++ esyslog("ERROR: video device VIDIOC_STREAMON failed");
+ }
++ else
++ esyslog("ERROR: video device VIDIOC_QBUF failed");
++ munmap(mem, msize);
+ }
++ else
++ esyslog("ERROR: failed to memmap video device");
+ }
+- munmap(mem, msize);
++ else
++ esyslog("ERROR: video device VIDIOC_QUERYBUF failed");
+ }
+ else
+- esyslog("ERROR: failed to memmap video device");
++ esyslog("ERROR: video device VIDIOC_REQBUFS failed");
+ }
++ else
++ esyslog("ERROR: video device VIDIOC_S_FMT failed");
+ close(videoDev);
+ return result;
+ }
diff --git a/media-video/vdr/vdr-1.6.0_p2-r6.ebuild b/media-video/vdr/vdr-1.6.0_p2-r6.ebuild
new file mode 100644
index 000000000000..fe1c5c12e1f4
--- /dev/null
+++ b/media-video/vdr/vdr-1.6.0_p2-r6.ebuild
@@ -0,0 +1,448 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/vdr-1.6.0_p2-r6.ebuild,v 1.1 2011/04/11 13:33:00 zzam Exp $
+
+inherit eutils flag-o-matic multilib
+
+# Switches supported by extensions-patch
+EXT_PATCH_FLAGS="analogtv atsc cmdsubmenu cutterlimit cutterqueue cuttime ddepgentry
+ dolbyinrec dvbplayer dvbsetup dvdarchive dvdchapjump graphtft hardlinkcutter
+ jumpplay lnbshare mainmenuhooks menuorg noepg osdmaxitems pinplugin
+ rotor settime setup sortrecords sourcecaps livebuffer
+ ttxtsubs timercmd timerinfo validinput yaepg
+ syncearly dvlfriendlyfnames dvlrecscriptaddon dvlvidprefer
+ volctrl wareagleicon lircsettings deltimeshiftrec em84xx
+ cmdreccmdi18n softosd parentalrating"
+
+# names of the use-flags
+EXT_PATCH_FLAGS_RENAMED="iptv liemikuutio"
+
+# names ext-patch uses internally, here only used for maintainer checks
+EXT_PATCH_FLAGS_RENAMED_EXT_NAME="pluginparam liemiext"
+
+IUSE="vanilla dxr3 ${EXT_PATCH_FLAGS} ${EXT_PATCH_FLAGS_RENAMED}"
+
+MY_PV="${PV%_p*}"
+MY_P="${PN}-${MY_PV}"
+S="${WORKDIR}/${MY_P}"
+
+EXT_V="72"
+EXT_P=VDR-Extensions-Patch-${EXT_V}
+EXT_DIR=${WORKDIR}/${EXT_P}/
+EXT_VDR_PV="${PV/_p/-}"
+
+DESCRIPTION="Video Disk Recorder - turns a pc into a powerful set top box for DVB"
+HOMEPAGE="http://www.tvdr.de/"
+SRC_URI="ftp://ftp.tvdr.de/vdr/${MY_P}.tar.bz2
+ ftp://ftp.tvdr.de/vdr/Developer/${MY_P}-1.diff
+ ftp://ftp.tvdr.de/vdr/Developer/${MY_P}-2.diff
+ http://www.zulu-entertainment.de/files/patches/${EXT_P}.tar.bz2"
+
+KEYWORDS="~amd64 ~ppc ~x86"
+SLOT="0"
+LICENSE="GPL-2"
+
+COMMON_DEPEND="virtual/jpeg
+ sys-libs/libcap
+ >=media-libs/fontconfig-2.4.2
+ >=media-libs/freetype-2
+ sys-devel/gettext
+ dvdarchive? ( dvdchapjump? ( >=media-libs/libdvdread-4.1.3_p1168 ) )"
+
+DEPEND="${COMMON_DEPEND}
+ media-tv/linuxtv-dvb-headers
+ dev-util/unifdef"
+
+RDEPEND="${COMMON_DEPEND}
+ dev-lang/perl
+ >=media-tv/gentoo-vdr-scripts-0.4.5
+ media-fonts/corefonts"
+
+# pull in vdr-setup to get the xml files, else menu will not work
+PDEPEND="setup? ( >=media-plugins/vdr-setup-0.3.1-r1 )"
+
+CONF_DIR=/etc/vdr
+CAP_FILE=${S}/capabilities.sh
+CAPS="# Capabilities of the vdr-executable for use by startscript etc."
+
+pkg_setup() {
+ check_menu_flags
+
+ PLUGIN_LIBDIR="/usr/$(get_libdir)/vdr/plugins"
+}
+
+check_menu_flags() {
+ if use menuorg && use setup; then
+ echo
+ eerror "Please use only one of this USE-Flags"
+ eerror "\tmenuorg setup"
+ die "multiple menu manipulation"
+ fi
+}
+
+add_cap() {
+ local arg
+ for arg; do
+ CAPS="${CAPS}\n${arg}=1"
+ done
+}
+
+enable_patch() {
+ local arg ARG_UPPER
+ for arg; do
+ ARG_UPPER=$(echo $arg|tr '[:lower:]' '[:upper:]')
+ echo "${ARG_UPPER} = 1" >> Make.config
+ done
+}
+
+extensions_add_make_conf()
+{
+ # copy all ifdef for extensions-patch to Make.config
+ sed -e '1,/need to touch the following:/d' \
+ -e '/ifdef DVBDIR/,/^$/d' \
+ Make.config.template >> Make.config
+}
+
+extensions_all_defines() {
+ # extract all possible settings for extensions-patch
+ sed -e '/^#\?[A-Z].*= 1/!d' -e 's/^#\?//' -e 's/ .*//' \
+ Make.config.template \
+ | sort \
+ | tr '[:upper:]' '[:lower:]'
+}
+
+extensions_all_defines_unset() {
+ # extract all possible settings for extensions-patch
+ # and convert them to -U... for unifdef
+ sed -e '/^#\?[A-Z].*= 1/!d' -e 's/^#\?/-UUSE_/' -e 's/ .*//' \
+ Make.config.template \
+ | tr '\n' ' '
+}
+
+do_unifdef() {
+ ebegin "Unifdef sources"
+ local mf="Makefile.get"
+ cat <<'EOT' > $mf
+include Makefile
+show_def:
+ @echo $(DEFINES)
+show_src_files:
+ @echo $(OBJS:%.o=%.c)
+EOT
+
+ local DEFINES=$(extensions_all_defines_unset)
+
+ local RAW_DEFINES=$(make -f "$mf" show_def)
+ local VDR_SRC_FILES=$(make -f "$mf" show_src_files)
+ local KEEP_FILES=""
+ rm "$mf"
+
+ local def
+ for def in $RAW_DEFINES; do
+ case "${def}" in
+ -DUSE*)
+ DEFINES="${DEFINES} ${def}"
+ ;;
+ esac
+ done
+
+ local f
+ for f in *.c; do
+
+ # Removing the src files the Makefile does not use for compiling vdr
+ if ! has $f ${VDR_SRC_FILES} ${KEEP_FILES}; then
+ rm -f ${f} ${f%.c}.h
+ continue
+ fi
+
+ unifdef ${DEFINES} "$f" > "tmp.$f"
+ mv "tmp.$f" "$f"
+ done
+ for f in *.h; do
+ unifdef ${DEFINES} "$f" > "tmp.$f"
+ mv "tmp.$f" "$f"
+ [[ -s $f ]] || rm "$f"
+ done
+ eend 0
+}
+
+src_unpack() {
+
+ unpack ${A}
+
+ cd "${S}"
+ #applying maintainace-patches
+ epatch "${DISTDIR}/${MY_P}-1.diff"
+ epatch "${DISTDIR}/${MY_P}-2.diff"
+ epatch "${FILESDIR}"/vdr-dvb-api-5-is-fine.diff
+ epatch "${FILESDIR}"/vdr-1.6.0-ldflags.patch
+ epatch "${FILESDIR}"/vdr-1.6.0-use-v4l2.patch
+
+ ebegin "Changing pathes for gentoo"
+
+ sed \
+ -e 's-ConfigDirectory = VideoDirectory;-ConfigDirectory = CONFDIR;-' \
+ -i vdr.c
+
+ local DVBDIR=/usr/include
+
+ cat > Make.config <<-EOT
+ #
+ # Generated by ebuild ${PF}
+ #
+ PREFIX = /usr
+ DVBDIR = ${DVBDIR}
+ PLUGINLIBDIR = ${PLUGIN_LIBDIR}
+ CONFDIR = ${CONF_DIR}
+ VIDEODIR = /var/vdr/video
+ LOCDIR = \$(PREFIX)/share/vdr/locale
+
+ DEFINES += -DCONFDIR=\"\$(CONFDIR)\"
+ INCLUDES += -I\$(DVBDIR)
+
+ EOT
+ eend 0
+
+ epatch "${FILESDIR}"/vdr-1.6.0-makefile-install-header.diff
+
+ if use dxr3; then
+ einfo "Applying dxr3 subtitle hack"
+ epatch "${FILESDIR}"/vdr-1.6.0-dxr3-subtitlehack.diff
+ fi
+
+ sed -i i18n-to-gettext.pl \
+ -e '/MSGIDBUGS/s/""/"automatically created from i18n.c by vdr-plugin.eclass <vdr\\@gentoo.org>"/'
+
+ # Do not install runvdr script and plugins
+ sed -i Makefile \
+ -e 's/runvdr//' \
+ -e 's/ install-plugins//'
+
+ if use vanilla; then
+ epatch "${FILESDIR}"/vdr-1.6.0-gcc-4.4.diff
+ else
+
+ cd "${S}"
+ # Now apply extensions patch
+ local fname="${EXT_DIR}/${PN}-${EXT_VDR_PV:-${PV}}_extensions.diff"
+
+ epatch "${fname}"
+
+ # Fix typo in Make.config.template
+ sed -e 's/CMDRECMDI18N/CMDRECCMDI18N/' -i Make.config.template
+
+ # other gentoo patches
+ # epatch "${FILESDIR}/..."
+ epatch "${FILESDIR}"/vdr-1.6.0-gcc-4.4.diff
+ epatch "${FILESDIR}"/vdr-1.6.0-extensions-72-gcc-4.4.diff
+
+ # This allows us to start even if some plugin does not exist
+ # or is not loadable.
+ enable_patch PLUGINMISSING
+
+ # Patch necessary for media-plugins/vdr-reelchannelscan
+ # it does not change anything when plugin is not used
+ enable_patch CHANNELSCAN
+
+ if [[ -n ${VDR_MAINTAINER_MODE} ]]; then
+ einfo "Doing maintainer checks:"
+
+ # these patches we do not support
+ # (or have them already hard enabled)
+ local IGNORE_PATCHES="channelscan pluginapi pluginmissing streamdevext"
+
+ extensions_all_defines > "${T}"/new.IUSE
+ echo $EXT_PATCH_FLAGS $EXT_PATCH_FLAGS_RENAMED_EXT_NAME \
+ $IGNORE_PATCHES | \
+ tr ' ' '\n' |sort > "${T}"/old.IUSE
+ local DIFFS=$(diff -u "${T}"/old.IUSE "${T}"/new.IUSE|grep '^[+-][^+-]')
+ if [[ -z ${DIFFS} ]]; then
+ einfo "EXT_PATCH_FLAGS is up to date."
+ else
+ ewarn "IUSE differences!"
+ local diff
+ for diff in $DIFFS; do
+ ewarn "$diff"
+ done
+ fi
+ fi
+
+ ebegin "Enabling selected patches"
+ local flag
+ for flag in $EXT_PATCH_FLAGS; do
+ use $flag && enable_patch ${flag}
+ done
+
+ # patches that got renamed
+ use iptv && enable_patch pluginparam
+ use liemikuutio && enable_patch liemiext
+ eend 0
+
+ extensions_add_make_conf
+
+ ebegin "Make depend"
+ emake .dependencies >/dev/null
+ eend $? "make depend failed"
+
+ [[ -z "$NO_UNIFDEF" ]] && do_unifdef
+
+ use iptv && sed -i sources.conf -e 's/^#P/P/'
+ fi
+
+ # apply local patches defined by variable VDR_LOCAL_PATCHES_DIR
+ if test -n "${VDR_LOCAL_PATCHES_DIR}"; then
+ local dir_tmp_var
+ local LOCALPATCHES_SUBDIR=${PV}
+ for dir_tmp_var in allversions-fallback ${PV%_p*} ${PV} ; do
+ if [[ -d ${VDR_LOCAL_PATCHES_DIR}/${dir_tmp_var} ]]; then
+ LOCALPATCHES_SUBDIR="${dir_tmp_var}"
+ fi
+ done
+
+ echo
+ if [[ ${LOCALPATCHES_SUBDIR} == ${PV} ]]; then
+ einfo "Applying local patches"
+ else
+ einfo "Applying local patches (Using subdirectory: ${LOCALPATCHES_SUBDIR})"
+ fi
+
+ for LOCALPATCH in ${VDR_LOCAL_PATCHES_DIR}/${LOCALPATCHES_SUBDIR}/*.{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_UTF8
+
+ add_cap CAP_IRCTRL_RUNTIME_PARAM \
+ CAP_VFAT_RUNTIME_PARAM \
+ CAP_CHUID \
+ CAP_SHUTDOWN_AUTO_RETRY
+
+ echo -e ${CAPS} > "${CAP_FILE}"
+}
+
+src_install() {
+ # trick makefile not to create a videodir by supplying it with an existing
+ # directory
+ emake install DESTDIR="${D}" VIDEODIR="/" || die "emake install failed"
+
+ keepdir "${CONF_DIR}"/plugins
+ keepdir "${CONF_DIR}"/themes
+
+ keepdir "${PLUGIN_LIBDIR}"
+
+ exeinto /usr/share/vdr/bin
+ doexe i18n-to-gettext.pl
+
+ dohtml *.html
+ dodoc MANUAL INSTALL README* HISTORY* CONTRIBUTORS
+
+ cd "${EXT_DIR}/docs" || die "Could not cd into extensions-patch doc dir."
+
+ local f
+ rm *vdr-1.4* 2>/dev/null
+ for f in *; do
+ [[ -f ${f} ]] || continue
+ newdoc "${f}" "${f}".ExtensionsPatch || die "Could not install extensions-patch doc ${f}"
+ done
+
+ cd "${S}"
+
+ insinto /usr/share/vdr
+ doins "${CAP_FILE}"
+
+ if [[ -n "${VDRSOURCE_DIR}" ]]; then
+ local SOURCES_DEST="${VDRSOURCE_DIR}/${P/_p/-}"
+ einfo "Installing sources"
+ insinto "${SOURCES_DEST}"
+ doins -r "${T}"/source-tree/*
+ keepdir "${SOURCES_DEST}"/PLUGINS/lib
+ fi
+
+ if use setup; then
+ insinto /usr/share/vdr/setup
+ doins "${S}"/menu.c
+ fi
+ chown -R vdr:vdr "${D}/${CONF_DIR}"
+}
+
+pkg_preinst() {
+ has_version "<${CATEGORY}/${PN}-1.3.36-r3"
+ previous_less_than_1_3_36_r3=$?
+
+ has_version "<${CATEGORY}/${PN}-1.6.0"
+ previous_less_than_1_6_0=$?
+}
+
+pkg_postinst() {
+ elog "It is a good idea to run vdrplugin-rebuild now."
+ if [[ $previous_less_than_1_3_36_r3 = 0 ]] ; then
+ ewarn "Upgrade Info:"
+ ewarn
+ ewarn "If you had used the use-flags lirc, rcu or vfat"
+ ewarn "then, you now have to enable the associated functionality"
+ ewarn "in /etc/conf.d/vdr"
+ ewarn
+ ewarn "vfat is now set with VFAT_FILENAMES."
+ ewarn "lirc/rcu are now set with IR_CTRL."
+ ebeep
+ fi
+
+ if use setup; then
+ if ! has_version media-plugins/vdr-setup || \
+ ! egrep -q '^setup$' "${ROOT}/etc/conf.d/vdr.plugins"; then
+
+ echo
+ ewarn "You have compiled media-video/vdr with USE=\"setup\""
+ ewarn "It is very important to emerge media-plugins/vdr-setup now!"
+ ewarn "and you have to loaded it in /etc/conf.d/vdr.plugins"
+ fi
+ fi
+
+ local keysfound=0
+ local key
+ local warn_keys="JumpFwd JumpRew JumpFwdSlow JumpRewSlow"
+ local remote_file="${ROOT}"/etc/vdr/remote.conf
+
+ if [[ -e ${remote_file} ]]; then
+ for key in ${warn_keys}; do
+ if grep -q -i "\.${key} " "${remote_file}"; then
+ keysfound=1
+ break
+ fi
+ done
+ if [[ ${keysfound} == 1 ]]; then
+ ewarn "Your /etc/vdr/remote.conf contains keys which are no longer usable"
+ ewarn "Please remove these keys or vdr will not start:"
+ ewarn "# ${warn_keys}"
+ fi
+ fi
+
+ if use atsc; then
+ ewarn "ATSC is only supported by a rudimentary patch"
+ einfo "and need at least this patch and a plugin installed"
+ einfo "emerge media-plugins/vdr-atscepg"
+ fi
+
+ if [[ $previous_less_than_1_6_0 = 0 ]]; then
+ elog "By default vdr is now started with utf8 character encoding"
+ elog
+ elog "To rename the old recordings to utf8 conforming names, do this:"
+ elog "\temerge app-text/convmv"
+ elog "\tconvmv -f latin1 -t utf8 -r --notest -i /var/vdr/video/"
+ elog
+ elog "To fix the descriptions of your recordings do this:"
+ elog "\tfind /var/vdr/video/ -name "info.vdr" -print0|xargs -0 recode latin1..utf8"
+ fi
+
+ elog "To get nice symbols in OSD we recommend to install"
+ elog "\t1. emerge media-fonts/vdrsymbols-ttf"
+ elog "\t2. select font VDRSymbolsSans in Setup"
+ elog ""
+ elog "To get an idea how to proceed now, have a look at our vdr-guide:"
+ elog "\thttp://www.gentoo.org/doc/en/vdr-guide.xml"
+}