commit:     e00bdcb69041b521a71a3b089884485a219e409c
Author:     Martin Dummer <martin.dummer <AT> gmx <DOT> net>
AuthorDate: Wed Aug 13 21:08:59 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Sep 20 09:15:42 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e00bdcb6

media-video/vdr: add 2.7.7

introducing a subslot, reverse dependencies (media-plugins/vdr-*) will
receive the new subslot dependency later

Signed-off-by: Martin Dummer <martin.dummer <AT> gmx.net>
Part-of: https://github.com/gentoo/gentoo/pull/39879
Closes: https://github.com/gentoo/gentoo/pull/39879
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-video/vdr/Manifest                           |   4 +
 ...1_pinplugin.patch => vdr-2.7.4_pinplugin.patch} | 131 ++++++--------
 .../vdr/files/vdr-2.7.5_demoplugin-fix.patch       |  39 ++++
 media-video/vdr/vdr-2.7.7.ebuild                   | 198 +++++++++++++++++++++
 4 files changed, 298 insertions(+), 74 deletions(-)

diff --git a/media-video/vdr/Manifest b/media-video/vdr/Manifest
index 662139e1093c..53bf85269a03 100644
--- a/media-video/vdr/Manifest
+++ b/media-video/vdr/Manifest
@@ -4,4 +4,8 @@ DIST vdr-2.6.9.tbz2 949889 BLAKE2B 
25416907562b061a38fbe29478010d1d790695f1eab2a
 DIST vdr-2.6.9_ttxtsubs_v2.patch 40549 BLAKE2B 
525c05b72fa957372cc1ef91428428f664f42d92eebc06fd0b179afbe99e4ecc4919c69cef000cc15c8340c9a2506d38cbf755fd6665cde1708ce17d4320a35f
 SHA512 
590c43e63818de8be9637cb3b32bf3399b82a181ca151d67e2341232669619020ab78ba9934da3a9c58cdb3bac56fc2a332a5838a92ee0851e42c3707726eb49
 DIST vdr-2.7.3.tbz2 953575 BLAKE2B 
c2380c3ece50683faf63c0df09011859c61a66dbd684b87abe8deb60b0676937063271edc4c26809f4cc8fc95273386ce9ce8566244de1eb043c1e46842c9fa3
 SHA512 
a2e7421d94bdd5d994b7584115e3b297b069557b12a831363ab2fb4fe3a65117ec43fe24f988e290dd2fa33a50a6bc1fe33c1076b179a6fe1b5d24b786a0930d
 DIST vdr-2.7.3_ttxtsubs_v2.patch 40541 BLAKE2B 
5848009c6ef432a9852a0e86a448bb3d2c1a037523c5f1ce9563eb0e65ad4c174e4e1f290fd7f583cfa3915cad6297e1d4d7833b89883bb09c4dbf14d715656f
 SHA512 
d8123c91096ff9734cdc46bacd253b153627091a90aa94288dc60ea74792b5ab6e62cd48adc6b830d83ca81d7d6ad11d7b478aaad67d597d1141ffe8e29abbf8
+DIST vdr-2.7.7.tbz2 960454 BLAKE2B 
ce4961fb40fc62ead50cb7a39f2a539b5c08fdce494d9d49b4eaa09780c5ebc320cec2e5a61b15681937e1d5d6851bbcb05042fd2ce8f710b016848c146f3ac0
 SHA512 
22c561aea6c2ae29f27d024249501c3c748cd77e9c182ed969a59f24b4b360b59cf807e1214665bbec7797b6ec11beeac0b2f02e8427f0c91cf9c29144bd5154
+DIST vdr-2.7.7_naludump.patch 20054 BLAKE2B 
4c326c71b60d7d46cb5c846be7c415d41bde01920b28dc102e8f0f85dd59e1d489c5e042a5c35e131e5aebac042a58dfd49f584d1efb0362446111e8a2c347b1
 SHA512 
c6d467ad37cfd34eef6da83506140b563269b16a06fecf40b6d61b0c75b8019b353d3c740766b65f0a656770b185f51eec6bb08760c03ba9aba275c7846d6a79
+DIST vdr-2.7.7_patch-for-permashift.patch 15401 BLAKE2B 
c73a0b66745cbb3b97d7678e4f5597cf8be1b5153126967fa8d16ad2ee1db070ad521688d00d291392f83f7309de8210f8a170026db9f9cf90f3b39d90c75db7
 SHA512 
11fc1c2599687dcf774253295e3ce9bc7ef890c5e40102d183242b59d228ff0828151d5b40e6c6015f1140f077f24e32373dee15eeb972fe89aee40bf3d4589c
+DIST vdr-2.7.7_ttxtsubs_v2.patch 38346 BLAKE2B 
8244793a77fadfe0aed84fbb1e2bb24abd45dde37c81a4b788c515231f860d79c84a0ede0509d3b599b7408d2d0909365d5b26c09fa62569e762e2981c3cb587
 SHA512 
4f8b9a92bea821f93bae5dec9aaea6a678b4599eb73e5b9574a656d3a893dad7103478c118d1424b754384e317b7e6820aa16e9c7c0a486285cd52be27a1facc
 DIST vdr-menuorg-2.3.x.diff 8852 BLAKE2B 
19b98d51a69f52ecda5500f51ef1741a8397953b20c490055eab0393da5f56ff9598c3e1e8ed8b915f5877e08deeb9ba7a9ef8d9356ad3a1fa12e3778869174a
 SHA512 
7b41c3a529858a4953a57f21619ea01864e140cc1755ee0b03caf1c4de41e80c3f805653502bc8d39d02a4dfcddf720acd4a8c8bd91f4871eef31d86e8e915c0

diff --git a/media-video/vdr/files/vdr-2.6.1_pinplugin.patch 
b/media-video/vdr/files/vdr-2.7.4_pinplugin.patch
similarity index 87%
rename from media-video/vdr/files/vdr-2.6.1_pinplugin.patch
rename to media-video/vdr/files/vdr-2.7.4_pinplugin.patch
index 2552f9e7109f..6d41aae29e81 100644
--- a/media-video/vdr/files/vdr-2.6.1_pinplugin.patch
+++ b/media-video/vdr/files/vdr-2.7.4_pinplugin.patch
@@ -1,24 +1,7 @@
-original vdr-pinplugin_vdr-2.3.1.diff
-rebased for media-video/vdr-2.6.1
-
-Signed-off-by: Christian Kunkel <[email protected]> ( 2021 Feb 12 )
-Reviewed-by: Martin Dummer <[email protected]> ( 2022-06-22 )
-diff -Naur a/Makefile b/Makefile
---- a/Makefile 2022-02-02 10:56:43.000000000 +0100
-+++ b/Makefile 2022-06-20 08:08:11.346956148 +0200
-@@ -351,7 +351,7 @@
- clean:
-       @$(MAKE) --no-print-directory -C $(LSIDIR) clean
-       @-rm -f $(OBJS) $(DEPFILE) vdr vdr.pc core* *~
--      @-rm -rf $(LOCALEDIR) $(PODIR)/*.mo $(PODIR)/*.pot
-+      @-rm -rf $(LOCALEDIR) $(PODIR)/*~ $(PODIR)/*.mo $(PODIR)/*.pot
-       @-rm -rf include
-       @-rm -rf srcdoc
- CLEAN: clean
-diff -Naur a/device.c b/device.c
---- a/device.c 2022-02-02 10:56:43.000000000 +0100
-+++ b/device.c 2022-06-20 08:08:11.346956148 +0200
-@@ -839,6 +839,7 @@
+diff '--color=auto' -Naur vdr-2.7.4.orig/device.c vdr-2.7.4/device.c
+--- vdr-2.7.4.orig/device.c    2025-02-26 10:35:03.000000000 +0100
++++ vdr-2.7.4/device.c 2025-04-09 21:26:38.951141144 +0200
+@@ -857,6 +857,7 @@
       const cChannel *Channel;
       while ((Channel = Channels->GetByNumber(n, Direction)) != NULL) {
             // try only channels which are currently available
@@ -26,7 +9,7 @@ diff -Naur a/device.c b/device.c
             if (GetDevice(Channel, LIVEPRIORITY, true, true))
                break;
             n = Channel->Number() + Direction;
-@@ -860,6 +861,12 @@
+@@ -878,6 +879,12 @@
  
  eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView)
  {
@@ -39,10 +22,10 @@ diff -Naur a/device.c b/device.c
    cMutexLock MutexLock(&mutexChannel); // to avoid a race between SVDRP CHAN 
and HasProgramme()
    cStatus::MsgChannelSwitch(this, 0, LiveView);
  
-diff -Naur a/menu.c b/menu.c
---- a/menu.c   2022-02-02 10:56:43.000000000 +0100
-+++ b/menu.c   2022-06-20 08:08:11.346956148 +0200
-@@ -1035,6 +1035,18 @@
+diff '--color=auto' -Naur vdr-2.7.4.orig/menu.c vdr-2.7.4/menu.c
+--- vdr-2.7.4.orig/menu.c      2025-02-26 10:35:03.000000000 +0100
++++ vdr-2.7.4/menu.c   2025-04-09 21:26:38.955141126 +0200
+@@ -1037,6 +1037,18 @@
       Add(new cMenuEditBitItem( tr("VPS"),          &data.flags, tfVps));
       Add(new cMenuEditIntItem( tr("Priority"),     &data.priority, 0, 
MAXPRIORITY));
       Add(new cMenuEditIntItem( tr("Lifetime"),     &data.lifetime, 0, 
MAXLIFETIME));
@@ -61,7 +44,7 @@ diff -Naur a/menu.c b/menu.c
       Add(file = new cMenuEditStrItem( tr("File"),   data.file, 
sizeof(data.file)));
       SetFirstDayItem();
       SetPatternItem(true);
-@@ -3130,7 +3142,8 @@
+@@ -3135,7 +3147,8 @@
                        }
                     }
                 }
@@ -81,7 +64,7 @@ diff -Naur a/menu.c b/menu.c
       if (ri->IsDirectory())
          Open();
       else {
-@@ -4506,28 +4522,32 @@
+@@ -4519,28 +4535,32 @@
  
    // Basic menu items:
  
@@ -119,7 +102,7 @@ diff -Naur a/menu.c b/menu.c
       Add(new cOsdItem(hk(tr("Commands")),  osCommands));
  
    Update(true);
-@@ -4600,6 +4620,14 @@
+@@ -4613,6 +4633,14 @@
    eOSState state = cOsdMenu::ProcessKey(Key);
    HadSubMenu |= HasSubMenu();
  
@@ -134,7 +117,7 @@ diff -Naur a/menu.c b/menu.c
    switch (state) {
      case osSchedule:   return AddSubMenu(new cMenuSchedule);
      case osChannels:   return AddSubMenu(new cMenuChannels);
-@@ -4624,6 +4652,7 @@
+@@ -4637,6 +4665,7 @@
                           if (item) {
                              cPlugin *p = 
cPluginManager::GetPlugin(item->PluginIndex());
                              if (p) {
@@ -142,7 +125,7 @@ diff -Naur a/menu.c b/menu.c
                                 cOsdObject *menu = p->MainMenuAction();
                                 if (menu) {
                                    if (menu->IsMenu())
-@@ -4635,6 +4664,7 @@
+@@ -4648,6 +4677,7 @@
                                    }
                                 }
                              }
@@ -150,7 +133,7 @@ diff -Naur a/menu.c b/menu.c
                           state = osEnd;
                         }
                         break;
-@@ -4814,6 +4844,7 @@
+@@ -4828,6 +4858,7 @@
             Channel = Direction > 0 ? Channels->Next(Channel) : 
Channels->Prev(Channel);
             if (!Channel && Setup.ChannelsWrap)
                Channel = Direction > 0 ? Channels->First() : Channels->Last();
@@ -158,7 +141,7 @@ diff -Naur a/menu.c b/menu.c
             if (Channel && !Channel->GroupSep() && cDevice::GetDevice(Channel, 
LIVEPRIORITY, true, true))
                return Channel;
             }
-@@ -5491,6 +5522,7 @@
+@@ -5505,6 +5536,7 @@
             for (int i = 0; i < MAXRECORDCONTROLS; i++) {
                 if (!RecordControls[i]) {
                    RecordControls[i] = new cRecordControl(device, Timers, 
Timer, Pause);
@@ -166,10 +149,10 @@ diff -Naur a/menu.c b/menu.c
                    return RecordControls[i]->Process(time(NULL));
                    }
                 }
-diff -Naur a/osd.c b/osd.c
---- a/osd.c    2022-02-02 10:56:43.000000000 +0100
-+++ b/osd.c    2022-06-20 08:08:11.346956148 +0200
-@@ -1844,6 +1844,7 @@
+diff '--color=auto' -Naur vdr-2.7.4.orig/osd.c vdr-2.7.4/osd.c
+--- vdr-2.7.4.orig/osd.c       2025-02-26 10:35:03.000000000 +0100
++++ vdr-2.7.4/osd.c    2025-04-09 21:26:38.955141126 +0200
+@@ -1907,6 +1907,7 @@
  cSize cOsd::maxPixmapSize(INT_MAX, INT_MAX);
  cVector<cOsd *> cOsd::Osds;
  cMutex cOsd::mutex;
@@ -177,10 +160,10 @@ diff -Naur a/osd.c b/osd.c
  
  cOsd::cOsd(int Left, int Top, uint Level)
  {
-diff -Naur a/osd.h b/osd.h
---- a/osd.h    2022-02-02 10:56:43.000000000 +0100
-+++ b/osd.h    2022-06-20 08:08:11.346956148 +0200
-@@ -957,6 +957,7 @@
+diff '--color=auto' -Naur vdr-2.7.4.orig/osd.h vdr-2.7.4/osd.h
+--- vdr-2.7.4.orig/osd.h       2025-02-26 10:35:03.000000000 +0100
++++ vdr-2.7.4/osd.h    2025-04-09 21:26:38.955141126 +0200
+@@ -994,6 +994,7 @@
         ///<
         ///< If a plugin uses a derived cPixmap implementation, it needs to 
use that
         ///< type instead of cPixmapMemory.
@@ -188,9 +171,9 @@ diff -Naur a/osd.h b/osd.h
    };
  
  #define MAXOSDIMAGES 64
-diff -Naur a/status.c b/status.c
---- a/status.c 2022-02-02 10:56:43.000000000 +0100
-+++ b/status.c 2022-06-20 08:08:11.346956148 +0200
+diff '--color=auto' -Naur vdr-2.7.4.orig/status.c vdr-2.7.4/status.c
+--- vdr-2.7.4.orig/status.c    2025-02-26 10:35:03.000000000 +0100
++++ vdr-2.7.4/status.c 2025-04-09 21:26:38.955141126 +0200
 @@ -136,3 +136,55 @@
    for (cStatus *sm = statusMonitors.First(); sm; sm = statusMonitors.Next(sm))
        sm->OsdProgramme(PresentTime, PresentTitle, PresentSubtitle, 
FollowingTime, FollowingTitle, FollowingSubtitle);
@@ -247,18 +230,18 @@ diff -Naur a/status.c b/status.c
 +         return true;
 +      return false;
 +}
-diff -Naur a/status.h b/status.h
---- a/status.h 2022-02-02 10:56:43.000000000 +0100
-+++ b/status.h 2022-06-20 08:08:11.350956230 +0200
-@@ -14,6 +14,7 @@
- #include "device.h"
+diff '--color=auto' -Naur vdr-2.7.4.orig/status.h vdr-2.7.4/status.h
+--- vdr-2.7.4.orig/status.h    2025-02-26 10:35:03.000000000 +0100
++++ vdr-2.7.4/status.h 2025-04-09 21:26:38.959141108 +0200
+@@ -15,6 +15,7 @@
  #include "player.h"
+ #include "skins.h"
  #include "tools.h"
 +#include "plugin.h"
  
  // Several member functions of the following classes are called with a 
pointer to
  // an object from a global list (cTimer, cChannel, cRecording or cEvent). In 
these
-@@ -99,6 +100,22 @@
+@@ -107,6 +108,22 @@
                 // The OSD displays the single line Text with the current 
channel information.
    virtual void OsdProgramme(time_t PresentTime, const char *PresentTitle, 
const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, 
const char *FollowingSubtitle) {}
                 // The OSD displays the given programme information.
@@ -281,7 +264,7 @@ diff -Naur a/status.h b/status.h
  public:
    cStatus(void);
    virtual ~cStatus();
-@@ -122,6 +139,14 @@
+@@ -132,6 +149,14 @@
    static void MsgOsdTextItem(const char *Text,  bool Scroll = false);
    static void MsgOsdChannel(const char *Text);
    static void MsgOsdProgramme(time_t PresentTime, const char *PresentTitle, 
const char *PresentSubtitle, time_t FollowingTime, const char *FollowingTitle, 
const char *FollowingSubtitle);
@@ -296,10 +279,10 @@ diff -Naur a/status.h b/status.h
    };
  
  #endif //__STATUS_H
-diff -Naur a/timers.c b/timers.c
---- a/timers.c 2022-02-02 10:56:43.000000000 +0100
-+++ b/timers.c 2022-06-20 08:14:07.898392829 +0200
-@@ -81,6 +81,7 @@
+diff '--color=auto' -Naur vdr-2.7.4.orig/timers.c vdr-2.7.4/timers.c
+--- vdr-2.7.4.orig/timers.c    2025-02-26 10:35:03.000000000 +0100
++++ vdr-2.7.4/timers.c 2025-04-09 21:26:38.959141108 +0200
+@@ -85,6 +85,7 @@
       stop -= 2400;
    priority = Pause ? Setup.PausePriority : Setup.DefaultPriority;
    lifetime = Pause ? Setup.PauseLifetime : Setup.DefaultLifetime;
@@ -307,7 +290,7 @@ diff -Naur a/timers.c b/timers.c
    if (Instant && channel)
       snprintf(file, sizeof(file), "%s%s", Setup.MarkInstantRecord ? "@" : "", 
*Setup.NameInstantRecord ? Setup.NameInstantRecord : channel->Name());
  }
-@@ -212,11 +213,13 @@
+@@ -220,11 +221,13 @@
       stop -= 2400;
    priority = PatternTimer ? PatternTimer->Priority() : Setup.DefaultPriority;
    lifetime = PatternTimer ? PatternTimer->Lifetime() : Setup.DefaultLifetime;
@@ -321,15 +304,15 @@ diff -Naur a/timers.c b/timers.c
  }
  
  cTimer::cTimer(const cTimer &Timer)
-@@ -255,6 +258,7 @@
+@@ -263,6 +266,7 @@
       stop         = Timer.stop;
       priority     = Timer.priority;
       lifetime     = Timer.lifetime;
 +     fskProtection = Timer.fskProtection;    // PIN PATCH
+      vpsNotRunning = 0;
+      vpsActive    = false;
       strncpy(pattern, Timer.pattern, sizeof(pattern));
-      strncpy(file, Timer.file, sizeof(file));
-      free(aux);
-@@ -484,6 +488,7 @@
+@@ -496,6 +500,7 @@
          result = false;
          }
       }
@@ -337,7 +320,7 @@ diff -Naur a/timers.c b/timers.c
    free(channelbuffer);
    free(daybuffer);
    free(filebuffer);
-@@ -1037,6 +1042,36 @@
+@@ -1102,6 +1107,36 @@
    Matches(); // refresh start and end time
  }
  
@@ -374,10 +357,10 @@ diff -Naur a/timers.c b/timers.c
  // --- cTimers ---------------------------------------------------------------
  
  cTimers cTimers::timers;
-diff -Naur a/timers.h b/timers.h
---- a/timers.h 2022-02-02 10:56:43.000000000 +0100
-+++ b/timers.h 2022-06-20 08:08:11.350956230 +0200
-@@ -45,6 +45,7 @@
+diff '--color=auto' -Naur vdr-2.7.4.orig/timers.h vdr-2.7.4/timers.h
+--- vdr-2.7.4.orig/timers.h    2025-02-26 10:35:03.000000000 +0100
++++ vdr-2.7.4/timers.h 2025-04-09 21:26:38.959141108 +0200
+@@ -47,6 +47,7 @@
    int start;          ///< the start and stop time of this timer as given by 
the user,
    int stop;           ///< in the form hhmm, with hh (00..23) and mm (00..59) 
added as hh*100+mm
    int priority;
@@ -385,7 +368,7 @@ diff -Naur a/timers.h b/timers.h
    int lifetime;
    mutable char pattern[NAME_MAX * 2 + 1]; // same size as 'file', to be able 
to initially fill 'pattern' with 'file' in the 'Edit timer' menu
    mutable char file[NAME_MAX * 2 + 1]; // *2 to be able to hold 'title' and 
'episode', which can each be up to 255 characters long
-@@ -70,6 +71,7 @@
+@@ -72,6 +73,7 @@
    int Start(void) const { return start; }
    int Stop(void) const { return stop; }
    int Priority(void) const { return priority; }
@@ -393,7 +376,7 @@ diff -Naur a/timers.h b/timers.h
    int Lifetime(void) const { return lifetime; }
    const char *Pattern(void) const { return pattern; }
    const char *File(void) const { return file; }
-@@ -120,6 +122,7 @@
+@@ -122,6 +124,7 @@
    void SetRemote(const char *Remote);
    void SetDeferred(int Seconds);
    void SetFlags(uint Flags);
@@ -401,10 +384,10 @@ diff -Naur a/timers.h b/timers.h
    void ClrFlags(uint Flags);
    void InvFlags(uint Flags);
    bool HasFlags(uint Flags) const;
-diff -Naur a/vdr.c b/vdr.c
---- a/vdr.c    2022-02-02 10:56:43.000000000 +0100
-+++ b/vdr.c    2022-06-20 08:08:11.350956230 +0200
-@@ -71,6 +71,7 @@
+diff '--color=auto' -Naur vdr-2.7.4.orig/vdr.c vdr-2.7.4/vdr.c
+--- vdr-2.7.4.orig/vdr.c       2025-02-26 10:35:03.000000000 +0100
++++ vdr-2.7.4/vdr.c    2025-04-09 21:26:38.959141108 +0200
+@@ -72,6 +72,7 @@
  #include "tools.h"
  #include "transfer.h"
  #include "videodir.h"
@@ -412,7 +395,7 @@ diff -Naur a/vdr.c b/vdr.c
  
  #define MINCHANNELWAIT        10 // seconds to wait between failed channel 
switchings
  #define ACTIVITYTIMEOUT       60 // seconds before starting housekeeping
-@@ -1210,6 +1211,7 @@
+@@ -1218,6 +1219,7 @@
          if (!Menu)
             Interact = Control = cControl::Control(ControlMutexLock);
          if (ISREALKEY(key)) {
@@ -420,7 +403,7 @@ diff -Naur a/vdr.c b/vdr.c
             EITScanner.Activity();
             // Cancel shutdown countdown:
             if (ShutdownHandler.countdown)
-@@ -1282,10 +1284,12 @@
+@@ -1290,10 +1292,12 @@
                       Control->Hide();
                    cPlugin *plugin = cPluginManager::GetPlugin(PluginName);
                    if (plugin) {
@@ -433,7 +416,7 @@ diff -Naur a/vdr.c b/vdr.c
                    else
                       esyslog("ERROR: unknown plugin '%s'", PluginName);
                    }
-@@ -1505,9 +1509,11 @@
+@@ -1513,9 +1517,11 @@
               case kPlay:
                    if (cReplayControl::LastReplayed()) {
                       Control = NULL;

diff --git a/media-video/vdr/files/vdr-2.7.5_demoplugin-fix.patch 
b/media-video/vdr/files/vdr-2.7.5_demoplugin-fix.patch
new file mode 100644
index 000000000000..dfd3cb40ac13
--- /dev/null
+++ b/media-video/vdr/files/vdr-2.7.5_demoplugin-fix.patch
@@ -0,0 +1,39 @@
+--- a/PLUGINS/src/skincurses/skincurses.c
++++ b/PLUGINS/src/skincurses/skincurses.c
+@@ -647,7 +647,7 @@
+   cSkinCursesDisplayTracks(const char *Title, int NumTracks, const char * 
const *Tracks);
+   virtual ~cSkinCursesDisplayTracks() override;
+   virtual void SetTrack(int Index, const char * const *Tracks) override;
+-  virtual void SetAudioChannel(int AudioChannel) { override}
++  virtual void SetAudioChannel(int AudioChannel) override { }
+   virtual void Flush(void) override;
+   };
+ 
+@@ -799,7 +799,7 @@
+   virtual bool Initialize(void) override;
+   virtual bool Start(void) override;
+   virtual void Housekeeping(void) override;
+-  virtual const char *MainMenuEntry(void) { return tr(MAINMENUENTRY);  
override}
++  virtual const char *MainMenuEntry(void) override { return 
tr(MAINMENUENTRY); }
+   virtual cOsdObject *MainMenuAction(void) override;
+   virtual cMenuSetupPage *SetupMenu(void) override;
+   virtual bool SetupParse(const char *Name, const char *Value) override;
+--- a/PLUGINS/src/hello/hello.c
++++ b/PLUGINS/src/hello/hello.c
+@@ -24,13 +24,13 @@
+ public:
+   cPluginHello(void);
+   virtual ~cPluginHello() override;
+-  virtual const char *Version(void) { return VERSION;  override}
+-  virtual const char *Description(void) { return tr(DESCRIPTION);  override}
++  virtual const char *Version(void) override { return VERSION;}
++  virtual const char *Description(void) override { return tr(DESCRIPTION);}
+   virtual const char *CommandLineHelp(void) override;
+   virtual bool ProcessArgs(int argc, char *argv[]) override;
+   virtual bool Start(void) override;
+   virtual void Housekeeping(void) override;
+-  virtual const char *MainMenuEntry(void) { return tr(MAINMENUENTRY);  
override}
++  virtual const char *MainMenuEntry(void) override { return 
tr(MAINMENUENTRY);}
+   virtual cOsdObject *MainMenuAction(void) override;
+   virtual cMenuSetupPage *SetupMenu(void) override;
+   virtual bool SetupParse(const char *Name, const char *Value) override;

diff --git a/media-video/vdr/vdr-2.7.7.ebuild b/media-video/vdr/vdr-2.7.7.ebuild
new file mode 100644
index 000000000000..20ee128c3f80
--- /dev/null
+++ b/media-video/vdr/vdr-2.7.7.ebuild
@@ -0,0 +1,198 @@
+# Copyright 2021-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit flag-o-matic strip-linguas toolchain-funcs user-info
+
+DESCRIPTION="Video Disk Recorder - turns a pc into a powerful set top box for 
DVB"
+HOMEPAGE="https://www.tvdr.de/";
+SRC_URI="https://git.tvdr.de/?p=vdr.git;a=snapshot;h=refs/tags/${PV};sf=tbz2 
-> ${P}.tbz2
+       menuorg? ( 
https://github.com/vdr-projects/vdr-plugin-menuorg/raw/master/vdr-patch/vdr-menuorg-2.3.x.diff
 )
+       naludump? ( https://md11.it.cx/download/${PN}/${P}_naludump.patch )
+       permashift? ( 
https://md11.it.cx/download/${PN}/${P}_patch-for-permashift.patch )
+       ttxtsubs? ( https://md11.it.cx/download/${PN}/${P}_ttxtsubs_v2.patch )"
+
+LICENSE="GPL-2+"
+SLOT="0/9" # config.h: APIVERSION "9"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86"
+IUSE="bidi debug demoplugins keyboard menuorg naludump permashift pinplugin 
systemd ttxtsubs verbose"
+
+COMMON_DEPEND="
+       acct-group/vdr
+       acct-user/vdr
+       media-libs/fontconfig
+       media-libs/freetype
+       media-libs/libjpeg-turbo:=
+       sys-libs/libcap"
+DEPEND="${COMMON_DEPEND}
+       sys-kernel/linux-headers"
+RDEPEND="${COMMON_DEPEND}
+       dev-lang/perl
+       media-tv/gentoo-vdr-scripts
+       media-fonts/corefonts
+       bidi? ( dev-libs/fribidi )
+       systemd? ( sys-apps/systemd )"
+BDEPEND="
+       sys-devel/gettext
+       virtual/pkgconfig"
+
+REQUIRED_USE="permashift? ( !naludump !pinplugin )"
+
+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"
+       VIDEO_DIR="$(egethome vdr)/video"
+
+       tc-export CC CXX AR
+}
+
+add_cap() {
+       local arg
+       for arg; do
+               CAPS="${CAPS}\n${arg}=1"
+       done
+}
+
+lang_po() {
+       LING_PO=$( ls "${S}"/po | sed -e "s:.po::g" | cut -d_ -f1 | tr \\\012 ' 
' )
+}
+
+src_prepare() {
+       # apply maintenance-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 || die "cannot write to Make.config"
+               #
+               # Generated by ebuild ${PF}
+               #
+               PREFIX                  = /usr
+               DVBDIR                  = ${DVBDIR}
+               PLUGINLIBDIR    = ${PLUGIN_LIBDIR}
+               CONFDIR                 = ${CONF_DIR}
+               ARGSDIR                 = \$(CONFDIR)/conf.d
+               VIDEODIR                = ${VIDEO_DIR}
+               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
+
+       eapply "${FILESDIR}/vdr-2.6.6_gentoo.patch"
+       use demoplugins || eapply "${FILESDIR}/vdr-2.4_remove_plugins.patch"
+       eapply "${FILESDIR}/${PN}-2.4.6_makefile-variables.patch"
+
+       # fix clang/LLVM compile
+       eapply "${FILESDIR}/${PN}-2.4.6_clang.patch"
+
+       use naludump && eapply "${DISTDIR}/${P}_naludump.patch"
+       use permashift && eapply "${DISTDIR}/${P}_patch-for-permashift.patch"
+       use pinplugin && eapply "${FILESDIR}/${PN}-2.7.4_pinplugin.patch"
+       use ttxtsubs && eapply "${DISTDIR}/${P}_ttxtsubs_v2.patch"
+       use menuorg && eapply "${DISTDIR}/vdr-menuorg-2.3.x.diff"
+
+       add_cap CAP_UTF8 \
+               CAP_IRCTRL_RUNTIME_PARAM \
+               CAP_VFAT_RUNTIME_PARAM \
+               CAP_CHUID \
+               CAP_SHUTDOWN_AUTO_RETRY
+
+       echo -e ${CAPS} > "${CAP_FILE}" || die "cannot write to 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
+
+       default
+}
+
+src_configure() {
+       # support languages, written from right to left
+       export "BIDI=$(usex bidi 1 0)"
+       # systemd notification support
+       export "SDNOTIFY=$(usex systemd 1 0)"
+       # with/without keyboard
+       export "USE_KBD=$(usex keyboard 1 0)"
+       # detailed compile output for debug
+       export "VERBOSE=$(usex verbose 1 0)"
+}
+
+src_install() {
+       # trick the makefile to not create a VIDEODIR by supplying it with an
+       # existing directory
+       emake VIDEODIR="/" DESTDIR="${ED}" install
+
+       keepdir "${PLUGIN_LIBDIR}"
+
+       # backup for plugins they don't be able to create this dir
+       keepdir "${CONF_DIR}/plugins"
+
+       local HTML_DOCS=( *.html )
+       local DOCS=( MANUAL INSTALL README* HISTORY CONTRIBUTORS UPDATE-2* )
+       einstalldocs
+
+       insinto /usr/share/vdr
+       doins "${CAP_FILE}"
+
+       fowners vdr:vdr "${CONF_DIR}" -R
+}
+
+pkg_postinst() {
+       elog "Please read the /usr/share/doc/${PF}/UPDATE-2.4"
+       elog "for major changes in this version\n"
+
+       elog "It is a good idea to run vdrplugin-rebuild now.\n"
+
+       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\n"
+
+       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