commit:     0dcdf482cd292d53a4cb213c9d76e74dd310385e
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Mon Sep  3 14:38:40 2018 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Mon Sep  3 14:39:53 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0dcdf482

Revert "media-video/vdr: cleanup old"

This reverts commit 99d096c75cc5a13e96a8a3438df6fd93412ce06a.

media-video/vdr-2* still required by media-plugins/vdr-pvr350.

 media-video/vdr/Manifest                           |   3 +
 media-video/vdr/files/vdr-2.0.6_gentoo.patch       |  68 ++++
 .../vdr/files/vdr-2.0.7_systemd_argsdir.patch      | 438 +++++++++++++++++++++
 .../files/vdr-2.0.7_systemd_argsdir_vanilla.patch  | 438 +++++++++++++++++++++
 media-video/vdr/metadata.xml                       |   9 +
 media-video/vdr/vdr-2.0.6-r1.ebuild                | 277 +++++++++++++
 media-video/vdr/vdr-2.0.7.ebuild                   | 288 ++++++++++++++
 7 files changed, 1521 insertions(+)

diff --git a/media-video/vdr/Manifest b/media-video/vdr/Manifest
index dac0f69a4e8..671820be372 100644
--- a/media-video/vdr/Manifest
+++ b/media-video/vdr/Manifest
@@ -1,2 +1,5 @@
+DIST extpng-vdr-2.0.6-gentoo-edition-v6.patch.bz2 69472 BLAKE2B 
60669e9c20b2bd573eb05733bbf9548d2e643b36693be8b15a377b38470708a71b29e2a16baf7ed378132265f814ec9d35dae749ccf6ae204cd9beb787dc8f57
 SHA512 
f4ecb786ec5a026fa75fcf539518e80273bf43fc325c13a380c70eb85351910efa991b3ee71ca477e597bc2b4598a18620b6cf00fc02714acfcc4e6112d84b6c
 DIST extpng-vdr-2.2.0-gentoo-edition-v1.patch.bz2 34664 BLAKE2B 
81b68ebe0ef4588c3676f0b7a2c766d8d4d4f754a987b3be5868f3c6eff9158d4cea8e492ca81df535e637dbdc5baff638d1fafb4163e9d9a2d0125aba17e2e1
 SHA512 
16d6fbb8201f003dfe653b6a49424b794d7e697e27ad6f2383dbe17b76712ea5a3da88a676900b84d75ff7425bf3eb9084d60a89a4598758f482dc1f013f7b3e
+DIST vdr-2.0.6.tar.bz2 839575 BLAKE2B 
40de46d8465b7008bc29c7e2c1c241d4114aa3d62aa6a0acd81636133c295cd87c2fc618e725885c98f47445220e897c23188373457a96b51cf832ca417c9842
 SHA512 
070ebbfb85478887088567872a71744305dbf9c75de8b095a8fe46d883b0b4fe140539caeb2243715f42793a45790a127542655f549f7ea3cb71c4f9912fa07d
+DIST vdr-2.0.7.tar.bz2 841511 BLAKE2B 
bde06dd038ea2ebfa8768742c02bc7046448ade29032a90130f721af1c4c5d2301ff52065a04c51b31f14250d8ae252d796d93e3012ea1057f2359b1ef9c327c
 SHA512 
cba35f62162cd681179872915023890f492e95cc94d65aadd3cb4d03d7e3c7e2f197e7f35149cdf872169af35c2b841e1042e054f28164860b7cea8367793ce0
 DIST vdr-2.2.0.tar.bz2 922708 BLAKE2B 
975e07d6d4c5bd13ee92be5d6a1826d6404b0c59e20fa2e30689b185a61e02d54782ad528e6a4f15e0d36806b30bcf48aa336d63adb3604e78056ff318e0fd2c
 SHA512 
183f58133915c6c0fe8ec2b88becbcb2a36418210e6dcf7931053d3771d727c3581593f9eb5c9693abf39e22e728f7b41c42079cd704610c3636ec05134ea93d

diff --git a/media-video/vdr/files/vdr-2.0.6_gentoo.patch 
b/media-video/vdr/files/vdr-2.0.6_gentoo.patch
new file mode 100644
index 00000000000..1641fc8e2ee
--- /dev/null
+++ b/media-video/vdr/files/vdr-2.0.6_gentoo.patch
@@ -0,0 +1,68 @@
+diff -Naur vdr-2.0.6.orig/Makefile vdr-2.0.6/Makefile
+--- vdr-2.0.6.orig/Makefile    2014-09-22 22:17:23.000000000 +0200
++++ vdr-2.0.6/Makefile 2014-09-24 15:22:43.000000000 +0200
+@@ -109,7 +109,7 @@
+ VDRVERSION = $(shell sed -ne '/define VDRVERSION/s/^.*"\(.*\)".*$$/\1/p' 
config.h)
+ APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' 
config.h)
+ 
+-all: vdr i18n plugins
++all: vdr i18n
+ 
+ # Implicit rules:
+ 
+@@ -162,7 +162,7 @@
+ 
+ PODIR     = po
+ LOCALEDIR = locale
+-I18Npo    = $(wildcard $(PODIR)/*.po)
++I18Npo    = $(foreach dir,$(LINGUAS),$(wildcard $(PODIR)/$(dir)*.po))
+ I18Nmo    = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
+ I18Nmsgs  = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr.mo, 
$(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
+ I18Npot   = $(PODIR)/vdr.pot
+@@ -185,7 +185,7 @@
+ 
+ install-i18n: i18n
+       @mkdir -p $(DESTDIR)$(LOCDIR)
+-      cp -r $(LOCALEDIR)/* $(DESTDIR)$(LOCDIR)
++      @(cd $(LOCALEDIR); for linguas in $(LINGUAS); do [ "$$linguas" = "en" ] 
&& continue; cp -r --parents $$linguas* $(DESTDIR)$(LOCDIR); done)
+ 
+ # The 'include' directory (for plugins):
+ 
+@@ -247,7 +247,7 @@
+ 
+ # Install the files (note that 'install-pc' must be first!):
+ 
+-install: install-pc install-bin install-dirs install-conf install-doc 
install-plugins install-i18n install-includes
++install: install-pc install-bin install-dirs install-conf install-doc 
install-i18n install-includes
+ 
+ # VDR binary:
+ 
+@@ -259,11 +259,12 @@
+ 
+ install-dirs:
+       @mkdir -p $(DESTDIR)$(VIDEODIR)
+-      @mkdir -p $(DESTDIR)$(CONFDIR)
+-      @mkdir -p $(DESTDIR)$(CACHEDIR)
++#     @mkdir -p $(DESTDIR)$(CONFDIR)
++#     @mkdir -p $(DESTDIR)$(CACHEDIR)
+       @mkdir -p $(DESTDIR)$(RESDIR)
+ 
+ install-conf:
++      @mkdir -p $(DESTDIR)$(CONFDIR)
+       @cp -pn *.conf $(DESTDIR)$(CONFDIR)
+ 
+ # Documentation:
+@@ -290,8 +291,11 @@
+ # Includes:
+ 
+ install-includes: include-dir
+-      @mkdir -p $(DESTDIR)$(INCDIR)
+-      @cp -pLR include/vdr include/libsi $(DESTDIR)$(INCDIR)
++#     @mkdir -p $(DESTDIR)$(INCDIR)
++#     @cp -pLR include/vdr include/libsi $(DESTDIR)$(INCDIR)
++      @mkdir -p $(DESTDIR)$(INCDIR)/vdr $(DESTDIR)$(INCDIR)/vdr/libsi
++      @cp -pLR include/vdr $(DESTDIR)$(INCDIR)
++      @cp -pLR include/libsi Make.config $(DESTDIR)$(INCDIR)/vdr
+ 
+ # pkg-config file:
+ 

diff --git a/media-video/vdr/files/vdr-2.0.7_systemd_argsdir.patch 
b/media-video/vdr/files/vdr-2.0.7_systemd_argsdir.patch
new file mode 100644
index 00000000000..de9f4b90163
--- /dev/null
+++ b/media-video/vdr/files/vdr-2.0.7_systemd_argsdir.patch
@@ -0,0 +1,438 @@
+diff -Naur vdr-2.0.7.orig/HISTORY vdr-2.0.7/HISTORY
+--- vdr-2.0.7.orig/HISTORY     2015-01-23 09:16:13.735620000 +0100
++++ vdr-2.0.7/HISTORY  2015-01-23 09:17:29.038614491 +0100
+@@ -7916,6 +7916,16 @@
+ - The APIVERSION has been increased to 2.0.6 due to the changes to pat.h, 
sdt.h and
+   the functional modification to cFont::CreateFont().
+ 
++2015-01-18: Version 2.0.6 + backport of systemd support from versions 2.1.6 
and 2.1.7
++
++- Added support for systemd (thanks to Christopher Reimer). To activate this 
you
++  need to add "SDNOTIFY=1" to the 'make' call.
++
++2015-01-18: Version 2.0.6 + backport of reading command line arguments from 
files, from version 2.1$
++
++- VDR now reads command line options from *.conf files in /etc/vdr/conf.d 
(thanks
++  to Lars Hanisch). See vdr.1 and vdr.5 for details.
++
+ 2015-01-20: Version 2.0.7
+ 
+ - Fixed a possible division by zero in frame rate detection.
+diff -Naur vdr-2.0.7.orig/Make.config.template vdr-2.0.7/Make.config.template
+--- vdr-2.0.7.orig/Make.config.template        2015-01-23 09:16:13.736620000 
+0100
++++ vdr-2.0.7/Make.config.template     2015-01-23 09:16:34.199618503 +0100
+@@ -38,6 +38,7 @@
+ 
+ #VIDEODIR  = /srv/vdr/video
+ #CONFDIR   = /var/lib/vdr
++#ARGSDIR   = /etc/vdr/conf.d
+ #CACHEDIR  = /var/cache/vdr
+ 
+ # Overrides for preset/legacy configurations:
+diff -Naur vdr-2.0.7.orig/Makefile vdr-2.0.7/Makefile
+--- vdr-2.0.7.orig/Makefile    2015-01-23 09:16:13.724620001 +0100
++++ vdr-2.0.7/Makefile 2015-01-23 09:17:58.588612330 +0100
+@@ -31,6 +31,7 @@
+ DESTDIR   ?=
+ VIDEODIR  ?= /srv/vdr/video
+ CONFDIR   ?= /var/lib/vdr
++ARGSDIR   ?= /etc/vdr/conf.d
+ CACHEDIR  ?= /var/cache/vdr
+ 
+ PREFIX    ?= /usr/local
+@@ -66,7 +67,7 @@
+ 
+ SILIB    = $(LSIDIR)/libsi.a
+ 
+-OBJS = audio.o channels.o ci.o config.o cutter.o device.o diseqc.o 
dvbdevice.o dvbci.o\
++OBJS = args.o audio.o channels.o ci.o config.o cutter.o device.o diseqc.o 
dvbdevice.o dvbci.o\
+        dvbplayer.o dvbspu.o dvbsubtitle.o eit.o eitscan.o epg.o filter.o 
font.o i18n.o interface.o keys.o\
+        lirc.o menu.o menuitems.o nit.o osdbase.o osd.o pat.o player.o 
plugin.o\
+        receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sdt.o 
sections.o shutdown.o\
+@@ -111,12 +112,18 @@
+ DEFINES += -DBIDI
+ LIBS += $(shell pkg-config --libs fribidi)
+ endif
++ifdef SDNOTIFY
++INCLUDES += $(shell pkg-config --cflags libsystemd-daemon)
++DEFINES += -DSDNOTIFY
++LIBS += $(shell pkg-config --libs libsystemd-daemon)
++endif
+ 
+ LIRC_DEVICE ?= /var/run/lirc/lircd
+ 
+ DEFINES += -DLIRC_DEVICE=\"$(LIRC_DEVICE)\"
+ DEFINES += -DVIDEODIR=\"$(VIDEODIR)\"
+ DEFINES += -DCONFDIR=\"$(CONFDIR)\"
++DEFINES += -DARGSDIR=\"$(ARGSDIR)\"
+ DEFINES += -DCACHEDIR=\"$(CACHEDIR)\"
+ DEFINES += -DRESDIR=\"$(RESDIR)\"
+ DEFINES += -DPLUGINDIR=\"$(LIBDIR)\"
+@@ -161,6 +168,7 @@
+       @echo "mandir=$(MANDIR)" >> $@
+       @echo "configdir=$(CONFDIR)" >> $@
+       @echo "videodir=$(VIDEODIR)" >> $@
++      @echo "argsdir=$(ARGSDIR)" >> $@
+       @echo "cachedir=$(CACHEDIR)" >> $@
+       @echo "resdir=$(RESDIR)" >> $@
+       @echo "libdir=$(LIBDIR)" >> $@
+@@ -278,6 +286,7 @@
+ install-dirs:
+       @mkdir -p $(DESTDIR)$(VIDEODIR)
+ #     @mkdir -p $(DESTDIR)$(CONFDIR)
++      @mkdir -p $(DESTDIR)$(ARGSDIR)
+ #     @mkdir -p $(DESTDIR)$(CACHEDIR)
+       @mkdir -p $(DESTDIR)$(RESDIR)
+ 
+diff -Naur vdr-2.0.7.orig/args.c vdr-2.0.7/args.c
+--- vdr-2.0.7.orig/args.c      1970-01-01 01:00:00.000000000 +0100
++++ vdr-2.0.7/args.c   2015-01-23 09:16:34.199618503 +0100
+@@ -0,0 +1,129 @@
++/*
++ * args.c: Read arguments from files
++ *
++ * See the main source file 'vdr.c' for copyright information and
++ * how to reach the author.
++ *
++ * Original version written by Lars Hanisch <d...@flensrocker.de>.
++ *
++ * $Id$
++ */
++
++#include "args.h"
++#include <unistd.h>
++
++cArgs::cArgs(const char *Argv0)
++{
++  argv0 = Argv0;
++  argc = 0;
++  argv = NULL;
++}
++
++cArgs::~cArgs(void)
++{
++  if (argv != NULL)
++     delete [] argv;
++}
++
++bool cArgs::AddArg(const char *s)
++{
++  if (inVdrSection)
++     args.Append(strdup(s));
++  else if (*lastArg == NULL)
++     return false;
++  else
++     lastArg = cString::sprintf("%s %s", *lastArg, s);
++  return true;
++}
++
++bool cArgs::ReadDirectory(const char *Directory)
++{
++  if (argv != NULL)
++     delete [] argv;
++  argc = 0;
++  argv = NULL;
++  args.Clear();
++  lastArg = NULL;
++  inVdrSection = false;
++  cFileNameList files(Directory, false);
++  if (files.Size() == 0)
++     return false;
++  for (int i = 0; i < files.Size(); i++) {
++      const char *fileName = files.At(i);
++      if (startswith(fileName, ".") || !endswith(fileName, ".conf"))
++         continue;
++      cString fullFileName = AddDirectory(Directory, fileName);
++      struct stat fs;
++      if ((access(*fullFileName, F_OK) != 0) || (stat(*fullFileName, &fs) != 
0) || S_ISDIR(fs.st_mode))
++         continue;
++      bool ok = true;
++      int line = 0;
++      FILE *f = fopen(*fullFileName, "r");
++      if (f) {
++         char *s;
++         cReadLine ReadLine;
++         while ((s = ReadLine.Read(f)) != NULL) {
++               line++;
++               s = stripspace(skipspace(s));
++               if (!isempty(s) && (s[0] != '#')) {
++                  if (startswith(s, "[") && endswith(s, "]")) {
++                     s[strlen(s) - 1] = 0;
++                     s++;
++                     if (*lastArg) {
++                        args.Append(strdup(*lastArg));
++                        lastArg = NULL;
++                        }
++                     if (strcmp(s, "vdr") == 0)
++                        inVdrSection = true;
++                     else {
++                        inVdrSection = false;
++                        lastArg = cString::sprintf("--plugin=%s", s);
++                        }
++                     }
++                  else {
++                     if ((strlen(s) > 2) && (s[0] == '-') && (s[1] != '-')) { 
// short option, split at first space
++                        char *p = strchr(s, ' ');
++                        if (p == NULL) {
++                           ok = AddArg(s);
++                           if (!ok)
++                              break;
++                           }
++                        else {
++                           *p = 0;
++                           p++;
++                           ok = AddArg(s);
++                           if (!ok)
++                              break;
++                           ok = AddArg(p);
++                           if (!ok)
++                              break;
++                           }
++                        }
++                     else {
++                        ok = AddArg(s);
++                        if (!ok)
++                           break;
++                        }
++                     }
++                  }
++               }
++         fclose(f);
++         }
++       if (!ok) {
++          esyslog("ERROR: args file %s, line %d", *fullFileName, line);
++          return false;
++          }
++      }
++  if (*lastArg) {
++     args.Append(strdup(*lastArg));
++     lastArg = NULL;
++     }
++  argv = new char*[args.Size() + 1];
++  argv[0] = strdup(*argv0);
++  argc = 1;
++  for (int i = 0; i < args.Size(); i++) {
++      argv[argc] = args.At(i);
++      argc++;
++      }
++  return true;
++}
+diff -Naur vdr-2.0.7.orig/args.h vdr-2.0.7/args.h
+--- vdr-2.0.7.orig/args.h      1970-01-01 01:00:00.000000000 +0100
++++ vdr-2.0.7/args.h   2015-01-23 09:16:34.199618503 +0100
+@@ -0,0 +1,34 @@
++/*
++ * args.h: Read arguments from files
++ *
++ * See the main source file 'vdr.c' for copyright information and
++ * how to reach the author.
++ *
++ * Original version written by Lars Hanisch <d...@flensrocker.de>.
++ *
++ * $Id$
++ */
++
++#ifndef __ARGS_H
++#define __ARGS_H
++
++#include "tools.h"
++
++class cArgs {
++private:
++  cString argv0;
++  cStringList args;
++  cString lastArg;
++  bool inVdrSection;
++  int argc;
++  char **argv;
++  bool AddArg(const char *s);
++public:
++  cArgs(const char *Argv0);
++  ~cArgs(void);
++  bool ReadDirectory(const char *Directory);
++  int GetArgc(void) const { return argc; };
++  char **GetArgv(void) const { return argv; };
++  };
++
++#endif //__ARGS_H
+diff -Naur vdr-2.0.7.orig/interface.c vdr-2.0.7/interface.c
+--- vdr-2.0.7.orig/interface.c 2015-01-23 09:16:13.725620001 +0100
++++ vdr-2.0.7/interface.c      2015-01-23 09:16:34.199618503 +0100
+@@ -10,6 +10,9 @@
+ #include "interface.h"
+ #include <ctype.h>
+ #include <stdlib.h>
++#ifdef SDNOTIFY
++#include <systemd/sd-daemon.h>
++#endif
+ #include <unistd.h>
+ #include "i18n.h"
+ #include "status.h"
+@@ -159,6 +162,9 @@
+       bool known = Keys.KnowsRemote(Remote->Name());
+       dsyslog("remote control %s - %s", Remote->Name(), known ? "keys known" 
: "learning keys");
+       if (!known) {
++#ifdef SDNOTIFY
++         sd_notify(0, "READY=1\nSTATUS=Learning keys...");
++#endif
+          cSkinDisplayMenu *DisplayMenu = Skins.Current()->DisplayMenu();
+          DisplayMenu->SetMenuCategory(mcUnknown);
+          char Headline[256];
+diff -Naur vdr-2.0.7.orig/vdr.1 vdr-2.0.7/vdr.1
+--- vdr-2.0.7.orig/vdr.1       2015-01-23 09:16:13.730620000 +0100
++++ vdr-2.0.7/vdr.1    2015-01-23 09:16:34.200618503 +0100
+@@ -178,6 +178,10 @@
+ Read resource files from \fIdir\fR
+ (default is to read them from the config directory).
+ .TP
++.BI \-\-showargs[= dir ]
++Read command line arguments from \fIdir\fR (default is \fI/etc/vdr/conf.d\fR),
++display them to the console and exit.
++.TP
+ .BI \-s\  cmd ,\ \-\-shutdown= cmd
+ Call \fIcmd\fR to shutdown the computer. See the file \fIINSTALL\fR for more
+ information.
+@@ -213,6 +217,10 @@
+ .BI \-w\  sec ,\ \-\-watchdog= sec
+ Activate the watchdog timer with a timeout of \fIsec\fR seconds.
+ A value of \fB0\fR (default) disables the watchdog.
++.P
++If started without any options, vdr tries to read command line options
++from files named '*.conf' in the directory /etc/vdr/conf.d. Files are
++read in alphabetical order. See vdr(5) for details.
+ .SH SIGNALS
+ .TP
+ .B SIGINT, SIGTERM
+diff -Naur vdr-2.0.7.orig/vdr.5 vdr-2.0.7/vdr.5
+--- vdr-2.0.7.orig/vdr.5       2015-01-23 09:16:13.732620000 +0100
++++ vdr-2.0.7/vdr.5    2015-01-23 09:16:34.200618503 +0100
+@@ -895,6 +895,33 @@
+ just 16 bit wide. The internal representation in VDR allows for 32 bit to
+ be used, so that external tools can generate EPG data that is guaranteed
+ not to collide with the ids of existing data.
++.SS COMMANDLINE OPTIONS
++If started without any options, vdr tries to read any files in the directory
++/etc/vdr/conf.d with names that do not begin with a '.' and that end with 
'.conf'.
++These files are read in alphabetical order. The format of these files is
++
++# comment
++.br
++[name]
++.br
++-a
++.br
++-b 123
++.br
++--long
++.br
++--longarg=123
++.br
++
++Any lines that begin with '#' as the first non-whitespace character are 
considered
++comments and are ignored.
++A command line option file consists of one or more sections, indicated by 
'[name]',
++where 'name' is either the fixed word 'vdr' (if this section contains options 
for
++the main VDR program) or the name of the plugin this section applies to.
++Each option must be written on a separate line, including the leading '-' (for
++a short option) or '--' (for a long option). If the option has additional 
arguments,
++they have to be written on the same line as the option itself, separated from 
the
++option with a blank (short option) or equal sign (long option).
+ .SH SEE ALSO
+ .BR vdr (1)
+ .SH AUTHOR
+diff -Naur vdr-2.0.7.orig/vdr.c vdr-2.0.7/vdr.c
+--- vdr-2.0.7.orig/vdr.c       2015-01-23 09:16:13.732620000 +0100
++++ vdr-2.0.7/vdr.c    2015-01-23 09:16:34.200618503 +0100
+@@ -34,8 +34,12 @@
+ #include <stdlib.h>
+ #include <sys/capability.h>
+ #include <sys/prctl.h>
++#ifdef SDNOTIFY
++#include <systemd/sd-daemon.h>
++#endif
+ #include <termios.h>
+ #include <unistd.h>
++#include "args.h"
+ #include "audio.h"
+ #include "channels.h"
+ #include "config.h"
+@@ -192,6 +196,7 @@
+ #define DEFAULTWATCHDOG     0 // seconds
+ #define DEFAULTVIDEODIR VIDEODIR
+ #define DEFAULTCONFDIR dd(CONFDIR, VideoDirectory)
++#define DEFAULTARGSDIR dd(ARGSDIR, "/etc/vdr/conf.d")
+ #define DEFAULTCACHEDIR dd(CACHEDIR, VideoDirectory)
+ #define DEFAULTRESDIR dd(RESDIR, ConfigDirectory)
+ #define DEFAULTPLUGINDIR PLUGINDIR
+@@ -229,6 +234,15 @@
+   VdrUser = VDR_USER;
+ #endif
+ 
++  cArgs *Args = NULL;
++  if (argc == 1) {
++     Args = new cArgs(argv[0]);
++     if (Args->ReadDirectory(DEFAULTARGSDIR)) {
++        argc = Args->GetArgc();
++        argv = Args->GetArgv();
++        }
++     }
++
+   SetVideoDirectory(VideoDirectory);
+   cPluginManager PluginManager(DEFAULTPLUGINDIR);
+ 
+@@ -256,6 +270,7 @@
+       { "port",     required_argument, NULL, 'p' },
+       { "record",   required_argument, NULL, 'r' },
+       { "resdir",   required_argument, NULL, 'r' | 0x100 },
++      { "showargs", optional_argument, NULL, 's' | 0x200 },
+       { "shutdown", required_argument, NULL, 's' },
+       { "split",    no_argument,       NULL, 's' | 0x100 },
+       { "terminal", required_argument, NULL, 't' },
+@@ -428,6 +443,19 @@
+           case 's' | 0x100:
+                     Setup.SplitEditedFiles = 1;
+                     break;
++          case 's' | 0x200: {
++                    const char *ArgsDir = optarg ? optarg : DEFAULTARGSDIR;
++                    cArgs Args(argv[0]);
++                    if (!Args.ReadDirectory(ArgsDir)) {
++                       fprintf(stderr, "vdr: can't read arguments from 
directory: %s\n", ArgsDir);
++                       return 2;
++                       }
++                    int c = Args.GetArgc();
++                    char **v = Args.GetArgv();
++                    for (int i = 1; i < c; i++)
++                        printf("%s\n", v[i]);
++                    return 0;
++                    }
+           case 't': Terminal = optarg;
+                     if (access(Terminal, R_OK | W_OK) < 0) {
+                        fprintf(stderr, "vdr: can't access terminal: %s\n", 
Terminal);
+@@ -541,6 +569,8 @@
+                "  -s CMD,   --shutdown=CMD call CMD to shutdown the 
computer\n"
+                "            --split        split edited files at the editing 
marks (only\n"
+                "                           useful in conjunction with 
--edit)\n"
++               "            --showargs[=DIR] print the arguments read from 
DIR and exit\n"
++               "                           (default: %s)\n"
+                "  -t TTY,   --terminal=TTY controlling tty\n"
+                "  -u USER,  --user=USER    run as user USER; only applicable 
if started as\n"
+                "                           root\n"
+@@ -563,6 +593,7 @@
+                DEFAULTLOCDIR,
+                DEFAULTSVDRPPORT,
+                DEFAULTRESDIR,
++               DEFAULTARGSDIR,
+                DEFAULTVIDEODIR,
+                DEFAULTWATCHDOG
+                );
+@@ -848,6 +879,10 @@
+      alarm(WatchdogTimeout); // Initial watchdog timer start
+      }
+ 
++#ifdef SDNOTIFY
++  sd_notify(0, "READY=1\nSTATUS=Ready");
++#endif
++
+   // Main program loop:
+ 
+ #define DELETE_MENU ((IsInfoMenu &= (Menu == NULL)), delete Menu, Menu = NULL)

diff --git a/media-video/vdr/files/vdr-2.0.7_systemd_argsdir_vanilla.patch 
b/media-video/vdr/files/vdr-2.0.7_systemd_argsdir_vanilla.patch
new file mode 100644
index 00000000000..f7bae16fdd4
--- /dev/null
+++ b/media-video/vdr/files/vdr-2.0.7_systemd_argsdir_vanilla.patch
@@ -0,0 +1,438 @@
+diff -Naur vdr-2.0.7.orig/HISTORY vdr-2.0.7/HISTORY
+--- vdr-2.0.7.orig/HISTORY     2015-01-23 09:07:52.777656645 +0100
++++ vdr-2.0.7/HISTORY  2015-01-23 09:09:57.798647500 +0100
+@@ -7916,6 +7916,16 @@
+ - The APIVERSION has been increased to 2.0.6 due to the changes to pat.h, 
sdt.h and
+   the functional modification to cFont::CreateFont().
+ 
++2015-01-18: Version 2.0.6 + backport of systemd support from versions 2.1.6 
and 2.1.7
++
++- Added support for systemd (thanks to Christopher Reimer). To activate this 
you
++  need to add "SDNOTIFY=1" to the 'make' call.
++
++2015-01-18: Version 2.0.6 + backport of reading command line arguments from 
files, from version 2.1$
++
++- VDR now reads command line options from *.conf files in /etc/vdr/conf.d 
(thanks
++  to Lars Hanisch). See vdr.1 and vdr.5 for details.
++
+ 2015-01-20: Version 2.0.7
+ 
+ - Fixed a possible division by zero in frame rate detection.
+diff -Naur vdr-2.0.7.orig/Make.config.template vdr-2.0.7/Make.config.template
+--- vdr-2.0.7.orig/Make.config.template        2015-01-23 09:07:52.765656646 
+0100
++++ vdr-2.0.7/Make.config.template     2015-01-23 09:08:15.775654963 +0100
+@@ -38,6 +38,7 @@
+ 
+ #VIDEODIR  = /srv/vdr/video
+ #CONFDIR   = /var/lib/vdr
++#ARGSDIR   = /etc/vdr/conf.d
+ #CACHEDIR  = /var/cache/vdr
+ 
+ # Overrides for preset/legacy configurations:
+diff -Naur vdr-2.0.7.orig/Makefile vdr-2.0.7/Makefile
+--- vdr-2.0.7.orig/Makefile    2015-01-23 09:07:52.778656645 +0100
++++ vdr-2.0.7/Makefile 2015-01-23 09:11:11.158642134 +0100
+@@ -31,6 +31,7 @@
+ DESTDIR   ?=
+ VIDEODIR  ?= /srv/vdr/video
+ CONFDIR   ?= /var/lib/vdr
++ARGSDIR   ?= /etc/vdr/conf.d
+ CACHEDIR  ?= /var/cache/vdr
+ 
+ PREFIX    ?= /usr/local
+@@ -66,7 +67,7 @@
+ 
+ SILIB    = $(LSIDIR)/libsi.a
+ 
+-OBJS = audio.o channels.o ci.o config.o cutter.o device.o diseqc.o 
dvbdevice.o dvbci.o\
++OBJS = args.o audio.o channels.o ci.o config.o cutter.o device.o diseqc.o 
dvbdevice.o dvbci.o\
+        dvbplayer.o dvbspu.o dvbsubtitle.o eit.o eitscan.o epg.o filter.o 
font.o i18n.o interface.o keys.o\
+        lirc.o menu.o menuitems.o nit.o osdbase.o osd.o pat.o player.o 
plugin.o\
+        receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sdt.o 
sections.o shutdown.o\
+@@ -93,12 +94,18 @@
+ DEFINES += -DBIDI
+ LIBS += $(shell pkg-config --libs fribidi)
+ endif
++ifdef SDNOTIFY
++INCLUDES += $(shell pkg-config --cflags libsystemd-daemon)
++DEFINES += -DSDNOTIFY
++LIBS += $(shell pkg-config --libs libsystemd-daemon)
++endif
+ 
+ LIRC_DEVICE ?= /var/run/lirc/lircd
+ 
+ DEFINES += -DLIRC_DEVICE=\"$(LIRC_DEVICE)\"
+ DEFINES += -DVIDEODIR=\"$(VIDEODIR)\"
+ DEFINES += -DCONFDIR=\"$(CONFDIR)\"
++DEFINES += -DARGSDIR=\"$(ARGSDIR)\"
+ DEFINES += -DCACHEDIR=\"$(CACHEDIR)\"
+ DEFINES += -DRESDIR=\"$(RESDIR)\"
+ DEFINES += -DPLUGINDIR=\"$(LIBDIR)\"
+@@ -143,6 +150,7 @@
+       @echo "mandir=$(MANDIR)" >> $@
+       @echo "configdir=$(CONFDIR)" >> $@
+       @echo "videodir=$(VIDEODIR)" >> $@
++      @echo "argsdir=$(ARGSDIR)" >> $@
+       @echo "cachedir=$(CACHEDIR)" >> $@
+       @echo "resdir=$(RESDIR)" >> $@
+       @echo "libdir=$(LIBDIR)" >> $@
+@@ -260,6 +268,7 @@
+ install-dirs:
+       @mkdir -p $(DESTDIR)$(VIDEODIR)
+ #     @mkdir -p $(DESTDIR)$(CONFDIR)
++      @mkdir -p $(DESTDIR)$(ARGSDIR)
+ #     @mkdir -p $(DESTDIR)$(CACHEDIR)
+       @mkdir -p $(DESTDIR)$(RESDIR)
+ 
+diff -Naur vdr-2.0.7.orig/args.c vdr-2.0.7/args.c
+--- vdr-2.0.7.orig/args.c      1970-01-01 01:00:00.000000000 +0100
++++ vdr-2.0.7/args.c   2015-01-23 09:08:15.775654963 +0100
+@@ -0,0 +1,129 @@
++/*
++ * args.c: Read arguments from files
++ *
++ * See the main source file 'vdr.c' for copyright information and
++ * how to reach the author.
++ *
++ * Original version written by Lars Hanisch <d...@flensrocker.de>.
++ *
++ * $Id$
++ */
++
++#include "args.h"
++#include <unistd.h>
++
++cArgs::cArgs(const char *Argv0)
++{
++  argv0 = Argv0;
++  argc = 0;
++  argv = NULL;
++}
++
++cArgs::~cArgs(void)
++{
++  if (argv != NULL)
++     delete [] argv;
++}
++
++bool cArgs::AddArg(const char *s)
++{
++  if (inVdrSection)
++     args.Append(strdup(s));
++  else if (*lastArg == NULL)
++     return false;
++  else
++     lastArg = cString::sprintf("%s %s", *lastArg, s);
++  return true;
++}
++
++bool cArgs::ReadDirectory(const char *Directory)
++{
++  if (argv != NULL)
++     delete [] argv;
++  argc = 0;
++  argv = NULL;
++  args.Clear();
++  lastArg = NULL;
++  inVdrSection = false;
++  cFileNameList files(Directory, false);
++  if (files.Size() == 0)
++     return false;
++  for (int i = 0; i < files.Size(); i++) {
++      const char *fileName = files.At(i);
++      if (startswith(fileName, ".") || !endswith(fileName, ".conf"))
++         continue;
++      cString fullFileName = AddDirectory(Directory, fileName);
++      struct stat fs;
++      if ((access(*fullFileName, F_OK) != 0) || (stat(*fullFileName, &fs) != 
0) || S_ISDIR(fs.st_mode))
++         continue;
++      bool ok = true;
++      int line = 0;
++      FILE *f = fopen(*fullFileName, "r");
++      if (f) {
++         char *s;
++         cReadLine ReadLine;
++         while ((s = ReadLine.Read(f)) != NULL) {
++               line++;
++               s = stripspace(skipspace(s));
++               if (!isempty(s) && (s[0] != '#')) {
++                  if (startswith(s, "[") && endswith(s, "]")) {
++                     s[strlen(s) - 1] = 0;
++                     s++;
++                     if (*lastArg) {
++                        args.Append(strdup(*lastArg));
++                        lastArg = NULL;
++                        }
++                     if (strcmp(s, "vdr") == 0)
++                        inVdrSection = true;
++                     else {
++                        inVdrSection = false;
++                        lastArg = cString::sprintf("--plugin=%s", s);
++                        }
++                     }
++                  else {
++                     if ((strlen(s) > 2) && (s[0] == '-') && (s[1] != '-')) { 
// short option, split at first space
++                        char *p = strchr(s, ' ');
++                        if (p == NULL) {
++                           ok = AddArg(s);
++                           if (!ok)
++                              break;
++                           }
++                        else {
++                           *p = 0;
++                           p++;
++                           ok = AddArg(s);
++                           if (!ok)
++                              break;
++                           ok = AddArg(p);
++                           if (!ok)
++                              break;
++                           }
++                        }
++                     else {
++                        ok = AddArg(s);
++                        if (!ok)
++                           break;
++                        }
++                     }
++                  }
++               }
++         fclose(f);
++         }
++       if (!ok) {
++          esyslog("ERROR: args file %s, line %d", *fullFileName, line);
++          return false;
++          }
++      }
++  if (*lastArg) {
++     args.Append(strdup(*lastArg));
++     lastArg = NULL;
++     }
++  argv = new char*[args.Size() + 1];
++  argv[0] = strdup(*argv0);
++  argc = 1;
++  for (int i = 0; i < args.Size(); i++) {
++      argv[argc] = args.At(i);
++      argc++;
++      }
++  return true;
++}
+diff -Naur vdr-2.0.7.orig/args.h vdr-2.0.7/args.h
+--- vdr-2.0.7.orig/args.h      1970-01-01 01:00:00.000000000 +0100
++++ vdr-2.0.7/args.h   2015-01-23 09:08:15.775654963 +0100
+@@ -0,0 +1,34 @@
++/*
++ * args.h: Read arguments from files
++ *
++ * See the main source file 'vdr.c' for copyright information and
++ * how to reach the author.
++ *
++ * Original version written by Lars Hanisch <d...@flensrocker.de>.
++ *
++ * $Id$
++ */
++
++#ifndef __ARGS_H
++#define __ARGS_H
++
++#include "tools.h"
++
++class cArgs {
++private:
++  cString argv0;
++  cStringList args;
++  cString lastArg;
++  bool inVdrSection;
++  int argc;
++  char **argv;
++  bool AddArg(const char *s);
++public:
++  cArgs(const char *Argv0);
++  ~cArgs(void);
++  bool ReadDirectory(const char *Directory);
++  int GetArgc(void) const { return argc; };
++  char **GetArgv(void) const { return argv; };
++  };
++
++#endif //__ARGS_H
+diff -Naur vdr-2.0.7.orig/interface.c vdr-2.0.7/interface.c
+--- vdr-2.0.7.orig/interface.c 2015-01-23 09:07:52.765656646 +0100
++++ vdr-2.0.7/interface.c      2015-01-23 09:08:15.775654963 +0100
+@@ -10,6 +10,9 @@
+ #include "interface.h"
+ #include <ctype.h>
+ #include <stdlib.h>
++#ifdef SDNOTIFY
++#include <systemd/sd-daemon.h>
++#endif
+ #include <unistd.h>
+ #include "i18n.h"
+ #include "status.h"
+@@ -159,6 +162,9 @@
+       bool known = Keys.KnowsRemote(Remote->Name());
+       dsyslog("remote control %s - %s", Remote->Name(), known ? "keys known" 
: "learning keys");
+       if (!known) {
++#ifdef SDNOTIFY
++         sd_notify(0, "READY=1\nSTATUS=Learning keys...");
++#endif
+          cSkinDisplayMenu *DisplayMenu = Skins.Current()->DisplayMenu();
+          DisplayMenu->SetMenuCategory(mcUnknown);
+          char Headline[256];
+diff -Naur vdr-2.0.7.orig/vdr.1 vdr-2.0.7/vdr.1
+--- vdr-2.0.7.orig/vdr.1       2015-01-23 09:07:52.770656646 +0100
++++ vdr-2.0.7/vdr.1    2015-01-23 09:08:15.776654963 +0100
+@@ -178,6 +178,10 @@
+ Read resource files from \fIdir\fR
+ (default is to read them from the config directory).
+ .TP
++.BI \-\-showargs[= dir ]
++Read command line arguments from \fIdir\fR (default is \fI/etc/vdr/conf.d\fR),
++display them to the console and exit.
++.TP
+ .BI \-s\  cmd ,\ \-\-shutdown= cmd
+ Call \fIcmd\fR to shutdown the computer. See the file \fIINSTALL\fR for more
+ information.
+@@ -213,6 +217,10 @@
+ .BI \-w\  sec ,\ \-\-watchdog= sec
+ Activate the watchdog timer with a timeout of \fIsec\fR seconds.
+ A value of \fB0\fR (default) disables the watchdog.
++.P
++If started without any options, vdr tries to read command line options
++from files named '*.conf' in the directory /etc/vdr/conf.d. Files are
++read in alphabetical order. See vdr(5) for details.
+ .SH SIGNALS
+ .TP
+ .B SIGINT, SIGTERM
+diff -Naur vdr-2.0.7.orig/vdr.5 vdr-2.0.7/vdr.5
+--- vdr-2.0.7.orig/vdr.5       2015-01-23 09:07:52.772656646 +0100
++++ vdr-2.0.7/vdr.5    2015-01-23 09:08:15.776654963 +0100
+@@ -889,6 +889,33 @@
+ just 16 bit wide. The internal representation in VDR allows for 32 bit to
+ be used, so that external tools can generate EPG data that is guaranteed
+ not to collide with the ids of existing data.
++.SS COMMANDLINE OPTIONS
++If started without any options, vdr tries to read any files in the directory
++/etc/vdr/conf.d with names that do not begin with a '.' and that end with 
'.conf'.
++These files are read in alphabetical order. The format of these files is
++
++# comment
++.br
++[name]
++.br
++-a
++.br
++-b 123
++.br
++--long
++.br
++--longarg=123
++.br
++
++Any lines that begin with '#' as the first non-whitespace character are 
considered
++comments and are ignored.
++A command line option file consists of one or more sections, indicated by 
'[name]',
++where 'name' is either the fixed word 'vdr' (if this section contains options 
for
++the main VDR program) or the name of the plugin this section applies to.
++Each option must be written on a separate line, including the leading '-' (for
++a short option) or '--' (for a long option). If the option has additional 
arguments,
++they have to be written on the same line as the option itself, separated from 
the
++option with a blank (short option) or equal sign (long option).
+ .SH SEE ALSO
+ .BR vdr (1)
+ .SH AUTHOR
+diff -Naur vdr-2.0.7.orig/vdr.c vdr-2.0.7/vdr.c
+--- vdr-2.0.7.orig/vdr.c       2015-01-23 09:07:52.772656646 +0100
++++ vdr-2.0.7/vdr.c    2015-01-23 09:08:15.776654963 +0100
+@@ -34,8 +34,12 @@
+ #include <stdlib.h>
+ #include <sys/capability.h>
+ #include <sys/prctl.h>
++#ifdef SDNOTIFY
++#include <systemd/sd-daemon.h>
++#endif
+ #include <termios.h>
+ #include <unistd.h>
++#include "args.h"
+ #include "audio.h"
+ #include "channels.h"
+ #include "config.h"
+@@ -186,6 +190,7 @@
+ #define DEFAULTWATCHDOG     0 // seconds
+ #define DEFAULTVIDEODIR VIDEODIR
+ #define DEFAULTCONFDIR dd(CONFDIR, VideoDirectory)
++#define DEFAULTARGSDIR dd(ARGSDIR, "/etc/vdr/conf.d")
+ #define DEFAULTCACHEDIR dd(CACHEDIR, VideoDirectory)
+ #define DEFAULTRESDIR dd(RESDIR, ConfigDirectory)
+ #define DEFAULTPLUGINDIR PLUGINDIR
+@@ -223,6 +228,15 @@
+   VdrUser = VDR_USER;
+ #endif
+ 
++  cArgs *Args = NULL;
++  if (argc == 1) {
++     Args = new cArgs(argv[0]);
++     if (Args->ReadDirectory(DEFAULTARGSDIR)) {
++        argc = Args->GetArgc();
++        argv = Args->GetArgv();
++        }
++     }
++
+   SetVideoDirectory(VideoDirectory);
+   cPluginManager PluginManager(DEFAULTPLUGINDIR);
+ 
+@@ -250,6 +264,7 @@
+       { "port",     required_argument, NULL, 'p' },
+       { "record",   required_argument, NULL, 'r' },
+       { "resdir",   required_argument, NULL, 'r' | 0x100 },
++      { "showargs", optional_argument, NULL, 's' | 0x200 },
+       { "shutdown", required_argument, NULL, 's' },
+       { "split",    no_argument,       NULL, 's' | 0x100 },
+       { "terminal", required_argument, NULL, 't' },
+@@ -422,6 +437,19 @@
+           case 's' | 0x100:
+                     Setup.SplitEditedFiles = 1;
+                     break;
++          case 's' | 0x200: {
++                    const char *ArgsDir = optarg ? optarg : DEFAULTARGSDIR;
++                    cArgs Args(argv[0]);
++                    if (!Args.ReadDirectory(ArgsDir)) {
++                       fprintf(stderr, "vdr: can't read arguments from 
directory: %s\n", ArgsDir);
++                       return 2;
++                       }
++                    int c = Args.GetArgc();
++                    char **v = Args.GetArgv();
++                    for (int i = 1; i < c; i++)
++                        printf("%s\n", v[i]);
++                    return 0;
++                    }
+           case 't': Terminal = optarg;
+                     if (access(Terminal, R_OK | W_OK) < 0) {
+                        fprintf(stderr, "vdr: can't access terminal: %s\n", 
Terminal);
+@@ -535,6 +563,8 @@
+                "  -s CMD,   --shutdown=CMD call CMD to shutdown the 
computer\n"
+                "            --split        split edited files at the editing 
marks (only\n"
+                "                           useful in conjunction with 
--edit)\n"
++               "            --showargs[=DIR] print the arguments read from 
DIR and exit\n"
++               "                           (default: %s)\n"
+                "  -t TTY,   --terminal=TTY controlling tty\n"
+                "  -u USER,  --user=USER    run as user USER; only applicable 
if started as\n"
+                "                           root\n"
+@@ -557,6 +587,7 @@
+                DEFAULTLOCDIR,
+                DEFAULTSVDRPPORT,
+                DEFAULTRESDIR,
++               DEFAULTARGSDIR,
+                DEFAULTVIDEODIR,
+                DEFAULTWATCHDOG
+                );
+@@ -837,6 +868,10 @@
+      alarm(WatchdogTimeout); // Initial watchdog timer start
+      }
+ 
++#ifdef SDNOTIFY
++  sd_notify(0, "READY=1\nSTATUS=Ready");
++#endif
++
+   // Main program loop:
+ 
+ #define DELETE_MENU ((IsInfoMenu &= (Menu == NULL)), delete Menu, Menu = NULL)

diff --git a/media-video/vdr/metadata.xml b/media-video/vdr/metadata.xml
index f9813be524f..62b1c32b1a8 100644
--- a/media-video/vdr/metadata.xml
+++ b/media-video/vdr/metadata.xml
@@ -8,16 +8,25 @@
        <use>
                <flag name="alternatechannel">Use alternate channel on 
record</flag>
                <flag name="bidi">fribidi support, for languages, written from 
right to left</flag>
+               <flag name="ddepgentry">remove duplicate EPG entries</flag>
+               <flag name="dvlvidprefer">controls video-dir choice on 
recording</flag>
                <flag name="graphtft">support for vdr-graphtft plugin up from 
version 0.1.7</flag>
                <flag name="html">Install HTML documentation</flag>
+               <flag name="jumpplay">Enables automatic jumping over cut marks 
while watching a recording</flag>
+               <flag name="jumpingseconds">skip seconds in played 
records</flag>
                <flag name="kbd">enable keyboard support as remote device</flag>
                <flag name="mainmenuhooks">Allows to replace main menu entries 
by some special plugins (like epgsearch, extrecmenu, ...)</flag>
                <flag name="menuorg">Enables support for the 
<pkg>media-plugins/vdr-menuorg</pkg></flag>
                <flag name="menuselection">adds support for menu hotkeys of 
double digits</flag>
                <flag name="naludump">Removes NALU fill data from h.264-Streams 
of TS files</flag>
+               <flag name="permashift">permanent timeshift by recording live 
TV on hard disk, need plugin <pkg>media-plugins/vdr-permashift</pkg></flag>
                <flag name="permashift_v1">permanent timeshift by recording 
live TV on RAM, need plugin &gt;=mediaplugins/vdr-permashift-1</flag>
                <flag name="pinplugin">Support for 
<pkg>media-plugins/vdr-pin</pkg></flag>
                <flag name="resumereset">rreset resume of EOF</flag>
+               <flag name="rotor">Enable support for plugin 
<pkg>media-plugins/vdr-rotor</pkg> for dish-positioner.</flag>
                <flag name="ttxtsubs">support for 
<pkg>media-plugins/vdr-ttxtsubs</pkg></flag>
+               <flag name="vasarajanauloja">replacement for the liemikuutio 
patch, adds some nice must haves features</flag>
+               <flag name="wareagleicon">Replace original icon set in 
menu</flag>
+               <flag name="yaepg">Enables support for the vdr-yaepg 
plugin</flag>
        </use>
 </pkgmetadata>

diff --git a/media-video/vdr/vdr-2.0.6-r1.ebuild 
b/media-video/vdr/vdr-2.0.6-r1.ebuild
new file mode 100644
index 00000000000..63de150c12f
--- /dev/null
+++ b/media-video/vdr/vdr-2.0.6-r1.ebuild
@@ -0,0 +1,277 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit eutils flag-o-matic multilib toolchain-funcs
+
+# Switches supported by extensions-patch
+EXT_PATCH_FLAGS="alternatechannel ddepgentry dvlvidprefer graphtft
+       jumpplay jumpingseconds mainmenuhooks menuorg naludump permashift 
permashift_v1
+       pinplugin rotor ttxtsubs vasarajanauloja wareagleicon yaepg"
+
+# names of the use-flags
+EXT_PATCH_FLAGS_RENAMED=""
+
+# names ext-patch uses internally, here only used for maintainer checks
+EXT_PATCH_FLAGS_RENAMED_EXT_NAME=""
+
+IUSE="bidi debug html vanilla ${EXT_PATCH_FLAGS} ${EXT_PATCH_FLAGS_RENAMED}"
+
+MY_PV="${PV%_p*}"
+MY_P="${PN}-${MY_PV}"
+S="${WORKDIR}/${MY_P}"
+
+EXT_P="extpng-${P}-gentoo-edition-v6"
+
+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
+       https://dev.gentoo.org/~hd_brummy/distfiles/${EXT_P}.patch.bz2";
+
+KEYWORDS="amd64 ~arm ~ppc x86"
+SLOT="0"
+LICENSE="GPL-2"
+
+REQUIRED_USE="
+       permashift? ( !permashift_v1 )
+       permashift_v1? ( !permashift )"
+
+COMMON_DEPEND="virtual/jpeg:*
+       sys-libs/libcap
+       >=media-libs/fontconfig-2.4.2
+       >=media-libs/freetype-2"
+
+DEPEND="${COMMON_DEPEND}
+       >=virtual/linuxtv-dvb-headers-5.3
+       sys-devel/gettext"
+
+RDEPEND="${COMMON_DEPEND}
+       dev-lang/perl
+       >=media-tv/gentoo-vdr-scripts-2.5_rc1
+       media-fonts/corefonts
+       bidi? ( dev-libs/fribidi )"
+
+CONF_DIR=/etc/vdr
+CAP_FILE=${S}/capabilities.sh
+CAPS="# Capabilities of the vdr-executable for use by startscript etc."
+
+pkg_setup() {
+       use debug && append-flags -g
+
+       PLUGIN_LIBDIR="/usr/$(get_libdir)/vdr/plugins"
+
+       tc-export CC CXX AR
+}
+
+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
+
+               # codesnippet to bring the extpng defines into the vdr.pc 
CXXFLAGS CFLAGS
+               echo "-DUSE_${ARG_UPPER}" >> "${T}"/defines.tmp
+               cat "${T}"/defines.tmp | tr \\\012 ' '  > "${T}"/defines.IUSE
+               export DEFINES_IUSE=$( cat ${T}/defines.IUSE )
+       done
+}
+
+extensions_add_make_conf()
+{
+       # copy all ifdef for extensions-patch to Make.config
+       sed -e '1,/need to touch the following:/d' \
+               -e '/need to touch the following/,/^$/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:]'
+}
+
+lang_po() {
+       LING_PO=$( ls ${S}/po | sed -e "s:.po::g" | cut -d_ -f1 | tr \\\012 ' ' 
)
+}
+
+src_prepare() {
+       # apply maintainace-patches
+       ebegin "Changing paths for gentoo"
+
+       local DVBDIR=/usr/include
+       local i
+       for i in ${DVB_HEADER_PATH} /usr/include/v4l-dvb-hg /usr/include; do
+               [[ -d ${i} ]] || continue
+               if [[ -f ${i}/linux/dvb/dmx.h ]]; then
+                       einfo "Found DVB header files in ${i}"
+                       DVBDIR=${i}
+                       break
+               fi
+       done
+
+       # checking for s2api headers
+       local api_version
+       api_version=$(awk -F' ' '/define DVB_API_VERSION / {print $3}' 
"${DVBDIR}"/linux/dvb/version.h)
+       api_version=${api_version}*$(awk -F' ' '/define DVB_API_VERSION_MINOR / 
{print $3}' "${DVBDIR}"/linux/dvb/version.h)
+
+       if [[ ${api_version:-0} -lt 5*3 ]]; then
+               eerror "DVB header files do not contain s2api support or too 
old for ${P}"
+               eerror "You cannot compile VDR against old dvb-header"
+               die "DVB headers too old"
+       fi
+
+       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/locale
+               INCDIR                  = \$(PREFIX)/include
+
+               DEFINES                 += -DCONFDIR=\"\$(CONFDIR)\"
+               INCLUDES                += -I\$(DVBDIR)
+
+               # >=vdr-1.7.36-r1; parameter only used for compiletime on vdr
+               # PLUGINLIBDIR (plugin Makefile old) = LIBDIR (plugin Makefile 
new)
+               LIBDIR                  = ${PLUGIN_LIBDIR}
+               PCDIR                   = /usr/$(get_libdir)/pkgconfig
+       EOT
+       eend 0
+
+       # support languages, written from right to left
+       BUILD_PARAMS+=" BIDI=$(usex bidi 1 0)"
+
+       epatch "${FILESDIR}/${PN}-2.0.6_gentoo.patch"
+
+       if ! use vanilla; then
+
+               # Now apply extensions patch
+               epatch "${WORKDIR}/${EXT_P}.patch"
+
+               # This allows us to start even if some plugin does not exist
+               # or is not loadable.
+               enable_patch PLUGINMISSING
+               enable_patch CHANNELBIND
+
+               if [[ -n ${VDR_MAINTAINER_MODE} ]]; then
+                       einfo "Doing maintainer checks:"
+
+                       # we do not support these patches
+                       # (or have them already hard enabled)
+                       local IGNORE_PATCHES="pluginmissing  channelbind"
+
+                       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
+
+               eend 0
+
+               extensions_add_make_conf
+
+               # add defined use-flags compile options to vdr.pc
+               sed -e "s:\$(CDEFINES) \$(CINCLUDES) \$(HDRDIR):\$(CDEFINES) 
\$(CINCLUDES) \$(HDRDIR) \$(DEFINES_IUSE):" \
+                       -i Makefile
+
+               ebegin "Make depend"
+               emake .dependencies >/dev/null
+               eend $? "make depend failed"
+       fi
+
+       epatch_user
+
+       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}"
+
+       # LINGUAS support
+       einfo "\n \t VDR supports the LINGUAS values"
+
+       lang_po
+
+       einfo "\t Please set one of this values in your sytem make.conf"
+       einfo "\t LINGUAS=\"${LING_PO}\"\n"
+
+       if [[ -z ${LINGUAS} ]]; then
+               einfo "\n \t No values in LINGUAS="
+               einfo "\t You will get only english text on OSD \n"
+       fi
+
+       strip-linguas ${LING_PO} en
+}
+
+src_install() {
+#      # trick makefile not to create a videodir by supplying it with an 
existing
+#      # directory
+       emake \
+       VIDEODIR="/" \
+       DESTDIR="${D}" install || die "emake install failed"
+
+       keepdir "${PLUGIN_LIBDIR}"
+
+       keepdir "${CONF_DIR}"/plugins
+       keepdir "${CONF_DIR}"/themes
+
+       if use html; then
+               dohtml *.html
+       fi
+
+       dodoc MANUAL INSTALL README* HISTORY CONTRIBUTORS
+
+       insinto /usr/share/vdr
+       doins "${CAP_FILE}"
+
+       if use alternatechannel; then
+               insinto /etc/vdr
+               doins "${FILESDIR}"/channel_alternative.conf
+       fi
+
+       chown -R vdr:vdr "${D}/${CONF_DIR}"
+}
+
+pkg_postinst() {
+       elog "It is a good idea to run vdrplugin-rebuild now."
+
+       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 "\thttps://wiki.gentoo.org/wiki/VDR";
+}

diff --git a/media-video/vdr/vdr-2.0.7.ebuild b/media-video/vdr/vdr-2.0.7.ebuild
new file mode 100644
index 00000000000..f5d9d5ed815
--- /dev/null
+++ b/media-video/vdr/vdr-2.0.7.ebuild
@@ -0,0 +1,288 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit eutils flag-o-matic multilib toolchain-funcs
+
+# Switches supported by extensions-patch
+EXT_PATCH_FLAGS="alternatechannel ddepgentry dvlvidprefer graphtft
+       jumpplay jumpingseconds mainmenuhooks menuorg naludump permashift 
permashift_v1
+       pinplugin rotor ttxtsubs vasarajanauloja wareagleicon yaepg"
+
+# names of the use-flags
+EXT_PATCH_FLAGS_RENAMED=""
+
+# names ext-patch uses internally, here only used for maintainer checks
+EXT_PATCH_FLAGS_RENAMED_EXT_NAME=""
+
+IUSE="bidi debug html systemd vanilla ${EXT_PATCH_FLAGS} 
${EXT_PATCH_FLAGS_RENAMED}"
+
+MY_PV="${PV%_p*}"
+MY_P="${PN}-${MY_PV}"
+S="${WORKDIR}/${MY_P}"
+
+EXT_P="extpng-${PN}-2.0.6-gentoo-edition-v6"
+
+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
+       https://dev.gentoo.org/~hd_brummy/distfiles/${EXT_P}.patch.bz2";
+
+KEYWORDS="~arm ~amd64 ~ppc ~x86"
+SLOT="0"
+LICENSE="GPL-2"
+
+REQUIRED_USE="
+       permashift? ( !permashift_v1 )
+       permashift_v1? ( !permashift )"
+
+COMMON_DEPEND="virtual/jpeg:*
+       sys-libs/libcap
+       >=media-libs/fontconfig-2.4.2
+       >=media-libs/freetype-2"
+
+DEPEND="${COMMON_DEPEND}
+       >=virtual/linuxtv-dvb-headers-5.3
+       sys-devel/gettext"
+
+RDEPEND="${COMMON_DEPEND}
+       dev-lang/perl
+       >=media-tv/gentoo-vdr-scripts-2.5
+       media-fonts/corefonts
+       bidi? ( dev-libs/fribidi )
+       systemd? ( sys-apps/systemd )"
+
+CONF_DIR=/etc/vdr
+CAP_FILE=${S}/capabilities.sh
+CAPS="# Capabilities of the vdr-executable for use by startscript etc."
+
+pkg_setup() {
+       use debug && append-flags -g
+
+       PLUGIN_LIBDIR="/usr/$(get_libdir)/vdr/plugins"
+
+       tc-export CC CXX AR
+}
+
+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
+
+               # codesnippet to bring the extpng defines into the vdr.pc 
CXXFLAGS CFLAGS
+               echo "-DUSE_${ARG_UPPER}" >> "${T}"/defines.tmp
+               cat "${T}"/defines.tmp | tr \\\012 ' '  > "${T}"/defines.IUSE
+               export DEFINES_IUSE=$( cat ${T}/defines.IUSE )
+       done
+}
+
+extensions_add_make_conf()
+{
+       # copy all ifdef for extensions-patch to Make.config
+       sed -e '1,/need to touch the following:/d' \
+               -e '/need to touch the following/,/^$/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:]'
+}
+
+lang_po() {
+       LING_PO=$( ls ${S}/po | sed -e "s:.po::g" | cut -d_ -f1 | tr \\\012 ' ' 
)
+}
+
+src_prepare() {
+       # apply maintainace-patches
+       ebegin "Changing paths for gentoo"
+
+       local DVBDIR=/usr/include
+       local i
+       for i in ${DVB_HEADER_PATH} /usr/include/v4l-dvb-hg /usr/include; do
+               [[ -d ${i} ]] || continue
+               if [[ -f ${i}/linux/dvb/dmx.h ]]; then
+                       einfo "Found DVB header files in ${i}"
+                       DVBDIR=${i}
+                       break
+               fi
+       done
+
+       # checking for s2api headers
+       local api_version
+       api_version=$(awk -F' ' '/define DVB_API_VERSION / {print $3}' 
"${DVBDIR}"/linux/dvb/version.h)
+       api_version=${api_version}*$(awk -F' ' '/define DVB_API_VERSION_MINOR / 
{print $3}' "${DVBDIR}"/linux/dvb/version.h)
+
+       if [[ ${api_version:-0} -lt 5*3 ]]; then
+               eerror "DVB header files do not contain s2api support or too 
old for ${P}"
+               eerror "You cannot compile VDR against old dvb-header"
+               die "DVB headers too old"
+       fi
+
+       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/locale
+               INCDIR                  = \$(PREFIX)/include
+
+               DEFINES                 += -DCONFDIR=\"\$(CONFDIR)\"
+               INCLUDES                += -I\$(DVBDIR)
+
+               # >=vdr-1.7.36-r1; parameter only used for compiletime on vdr
+               # PLUGINLIBDIR (plugin Makefile old) = LIBDIR (plugin Makefile 
new)
+               LIBDIR                  = ${PLUGIN_LIBDIR}
+               PCDIR                   = /usr/$(get_libdir)/pkgconfig
+       EOT
+       eend 0
+
+       # support languages, written from right to left
+       BUILD_PARAMS+=" BIDI=$(usex bidi 1 0)"
+
+       # systemd support
+       use systemd && BUILD_PARAMS+=" SDNOTIFY=$(usex systemd 1 0)"
+
+       if ! use vanilla; then
+
+               # Now apply extensions patch
+               epatch "${WORKDIR}/${EXT_P}.patch"
+
+               # This allows us to start even if some plugin does not exist
+               # or is not loadable.
+               enable_patch PLUGINMISSING
+               enable_patch CHANNELBIND
+
+               if [[ -n ${VDR_MAINTAINER_MODE} ]]; then
+                       einfo "Doing maintainer checks:"
+
+                       # we do not support these patches
+                       # (or have them already hard enabled)
+                       local IGNORE_PATCHES="pluginmissing  channelbind"
+
+                       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
+
+               eend 0
+
+               extensions_add_make_conf
+
+               # add defined use-flags compile options to vdr.pc
+               sed -e "s:\$(CDEFINES) \$(CINCLUDES) \$(HDRDIR):\$(CDEFINES) 
\$(CINCLUDES) \$(HDRDIR) \$(DEFINES_IUSE):" \
+                       -i Makefile
+
+               ebegin "Make depend"
+               emake .dependencies >/dev/null
+               eend $? "make depend failed"
+       fi
+
+       epatch "${FILESDIR}/${PN}-2.0.6-r2_gentoo.patch"
+
+       # backport from vdr-2.1.7 for better systemd support
+       if use vanilla; then
+               epatch "${FILESDIR}/${P}_systemd_argsdir_vanilla.patch"
+       else
+               epatch "${FILESDIR}/${P}_systemd_argsdir.patch"
+       fi
+
+       epatch_user
+
+       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}"
+
+       # LINGUAS support
+       einfo "\n \t VDR supports the LINGUAS values"
+
+       lang_po
+
+       einfo "\t Please set one of this values in your sytem make.conf"
+       einfo "\t LINGUAS=\"${LING_PO}\"\n"
+
+       if [[ -z ${LINGUAS} ]]; then
+               einfo "\n \t No values in LINGUAS="
+               einfo "\t You will get only english text on OSD \n"
+       fi
+
+       strip-linguas ${LING_PO} en
+}
+
+src_install() {
+#      # trick makefile not to create a videodir by supplying it with an 
existing
+#      # directory
+       emake \
+       VIDEODIR="/" \
+       DESTDIR="${D}" install || die "emake install failed"
+
+       keepdir "${PLUGIN_LIBDIR}"
+
+       # backup for plugins they don't be able to create this dir
+       keepdir "${CONF_DIR}"/plugins
+
+       if use html; then
+               dohtml *.html
+       fi
+
+       dodoc MANUAL INSTALL README* HISTORY CONTRIBUTORS
+
+       insinto /usr/share/vdr
+       doins "${CAP_FILE}"
+
+       if use alternatechannel; then
+               insinto /etc/vdr
+               doins "${FILESDIR}"/channel_alternative.conf
+       fi
+
+       chown -R vdr:vdr "${D}/${CONF_DIR}"
+}
+
+pkg_postinst() {
+       elog "It is a good idea to run vdrplugin-rebuild now."
+
+       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 "\thttps://wiki.gentoo.org/wiki/VDR";
+}

Reply via email to