diff --git a/sources b/sources index 2a16883..7b67f09 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (vdr-2.7.7.tar.bz2) = 22c561aea6c2ae29f27d024249501c3c748cd77e9c182ed969a59f24b4b360b59cf807e1214665bbec7797b6ec11beeac0b2f02e8427f0c91cf9c29144bd5154 +SHA512 (vdr-2.7.4.tar.bz2) = 8f6e19f2b497300efeeb6bb7b9dc43e4b390b9e65da0b3700c8c133a333d4124afaf649d659864e7f8177246e6d26ce5503e0e978c97f237a62b33095cf8dd4a SHA512 (vdr-rcu-2.2.0.tgz) = 56abebcfde3511c4dcf6f414915c7aa70a16b8e138e2d9364080828edc9b0da045acaadaaa4094d1315ddefdafa5f966aebcfacf979c068e077f1e32e29773b7 SHA512 (vdr-dvbsddevice-2.2.0.tgz) = ac0b94b8b192208ad7e736d7c4f27cca6517134b17fc86a79cdd19453176d5f6076418bf679435899cd953053f3b54776342bcdab23a659e8331e9f2ed4ee364 SHA512 (3473a7b939d7.zip) = fc405ac81cc1374de3a2d457f76972e605cf51c20c5e86f4fb683bb7fc78fde51690e65f463870c6881a65308722ccecd60d4a8957e3e2d43ecfd665f0e5aa8f diff --git a/vdr-1.7.37-fedora-pkgconfig.patch b/vdr-1.7.37-fedora-pkgconfig.patch new file mode 100644 index 0000000..a80fd82 --- /dev/null +++ b/vdr-1.7.37-fedora-pkgconfig.patch @@ -0,0 +1,16 @@ +diff -up vdr-1.7.37/Makefile~ vdr-1.7.37/Makefile +--- vdr-1.7.37/Makefile~ 2013-02-14 21:57:22.306077727 +0200 ++++ vdr-1.7.37/Makefile 2013-02-14 22:05:04.016086224 +0200 +@@ -152,6 +152,12 @@ vdr.pc: + @echo "cflags=$(CFLAGS) $(CDEFINES) $(CINCLUDES) $(HDRDIR)" >> $@ + @echo "cxxflags=$(CXXFLAGS) $(CDEFINES) $(CINCLUDES) $(HDRDIR)" >> $@ + @echo "" >> $@ ++ @echo "datadir=\$${resdir}" >> $@ ++ @echo "rundir=$(RUNDIR)" >> $@ ++ @echo "vardir=$(VARDIR)" >> $@ ++ @echo "user=$(VDR_USER)" >> $@ ++ @echo "group=$(VDR_GROUP)" >> $@ ++ @echo "" >> $@ + @echo "Name: VDR" >> $@ + @echo "Description: Video Disk Recorder" >> $@ + @echo "URL: http://www.tvdr.de/" >> $@ diff --git a/vdr-2.4.6-ClearObsoleteChannels.diff b/vdr-2.4.6-ClearObsoleteChannels.diff new file mode 100644 index 0000000..fdde1a6 --- /dev/null +++ b/vdr-2.4.6-ClearObsoleteChannels.diff @@ -0,0 +1,78 @@ +diff -Nurp vdr-2.4.6.orig/channels.c vdr-2.4.6/channels.c +--- vdr-2.4.6.orig/channels.c 2020-04-11 11:22:05.000000000 +0200 ++++ vdr-2.4.6/channels.c 2021-01-02 14:56:49.883831519 +0100 +@@ -16,6 +16,8 @@ + // format characters in order to allow any number of blanks after a numeric + // value! + ++#define CHANNELMARKOBSOLETE "OBSOLETE" ++ + // --- tChannelID ------------------------------------------------------------ + + const tChannelID tChannelID::InvalidID; +@@ -434,6 +436,24 @@ void cChannel::SetSeen(void) + seen = time(NULL); + } + ++bool cChannel::ClearObsoleteChannel(void) ++{ ++ bool ChannelsModified = false; ++ if (endswith(name, CHANNELMARKOBSOLETE)) { ++ int mlen = strlen(CHANNELMARKOBSOLETE); ++ int e = strlen(name) - mlen - 1; ++ name[e] = '\0'; ++ cString clrname = cString::sprintf("%s", name); ++ name[e] = ' '; ++ ++ int OldShowChannelNamesWithSource = Setup.ShowChannelNamesWithSource; ++ Setup.ShowChannelNamesWithSource = 0; ++ ChannelsModified |= SetName(clrname, shortName, provider + mlen + 1); ++ Setup.ShowChannelNamesWithSource = OldShowChannelNamesWithSource; ++ } ++ return ChannelsModified; ++} ++ + void cChannel::DelLinkChannel(cChannel *LinkChannel) + { + if (linkChannels) { +@@ -1112,7 +1132,6 @@ cChannel *cChannels::NewChannel(const cC + return NULL; + } + +-#define CHANNELMARKOBSOLETE "OBSOLETE" + #define CHANNELTIMEOBSOLETE 3600 // seconds to wait before declaring a channel obsolete (in case it has actually been seen before) + + bool cChannels::MarkObsoleteChannels(int Source, int Nid, int Tid) +diff -Nurp vdr-2.4.6.orig/channels.h vdr-2.4.6/channels.h +--- vdr-2.4.6.orig/channels.h 2020-06-10 16:00:36.000000000 +0200 ++++ vdr-2.4.6/channels.h 2021-01-02 12:58:13.693581025 +0100 +@@ -202,6 +202,7 @@ public: + void SetRefChannel(cChannel *RefChannel); + bool SetSubtitlingDescriptors(uchar *SubtitlingTypes, uint16_t *CompositionPageIds, uint16_t *AncillaryPageIds); + void SetSeen(void); ++ bool ClearObsoleteChannel(void); + void DelLinkChannel(cChannel *LinkChannel); + }; + +diff -Nurp vdr-2.4.6.orig/pat.c vdr-2.4.6/pat.c +--- vdr-2.4.6.orig/pat.c 2020-12-18 15:51:57.000000000 +0100 ++++ vdr-2.4.6/pat.c 2021-01-02 12:56:25.480243876 +0100 +@@ -489,6 +489,9 @@ void cPatFilter::Process(u_short Pid, u_ + SwitchToNextPmtPid(); + cChannel *Channel = Channels->GetByServiceID(Source(), Transponder(), pmt.getServiceId()); + if (Channel) { ++ bool seen = Channel->Seen(); ++ if (!seen) // not yet seen in sdt.c ++ Channel->SetSeen(); + SI::CaDescriptor *d; + cCaDescriptors *CaDescriptors = new cCaDescriptors(Channel->Source(), Channel->Transponder(), Channel->Sid(), Pid); + // Scan the common loop: +@@ -723,6 +726,8 @@ void cPatFilter::Process(u_short Pid, u_ + ChannelsModified |= Channel->SetCaIds(CaDescriptors->CaIds()); + ChannelsModified |= Channel->SetSubtitlingDescriptors(SubtitlingTypes, CompositionPageIds, AncillaryPageIds); + } ++ if (!seen && (Setup.UpdateChannels == 1 || Setup.UpdateChannels >= 3)) ++ ChannelsModified |= Channel->ClearObsoleteChannel(); // just in case + ChannelsModified |= Channel->SetCaDescriptors(CaDescriptorHandler.AddCaDescriptors(CaDescriptors)); + } + StateKey.Remove(ChannelsModified); diff --git a/vdr-2.6.2-timer-still-recording.patch b/vdr-2.6.2-timer-still-recording.patch new file mode 100644 index 0000000..2be2cfb --- /dev/null +++ b/vdr-2.6.2-timer-still-recording.patch @@ -0,0 +1,11 @@ +--- a/menu.c 2022/11/22 15:53:07 5.8 ++++ b/menu.c 2022/12/01 12:55:34 +@@ -3250,7 +3250,7 @@ + int Id; + char *RemoteBuf = NULL; + cString Remote; +- if (2 == sscanf(TimerId, "%d@%m[^ \n]", &Id, &RemoteBuf)) { ++ if (2 == sscanf(TimerId, "%d@%m[^ \n]", &Id, &RemoteBuf) && Id != 0) { + Remote = RemoteBuf; + free(RemoteBuf); + if (Interface->Confirm(tr("Timer still recording - really delete?"))) { diff --git a/vdr-2.7.2-remux-PTS.patch b/vdr-2.7.2-remux-PTS.patch new file mode 100644 index 0000000..4cdedf5 --- /dev/null +++ b/vdr-2.7.2-remux-PTS.patch @@ -0,0 +1,14 @@ +--- remux.c 2024/09/21 19:18:18 5.13 ++++ remux.c 2024/10/08 08:39:54 +@@ -2073,8 +2073,10 @@ + Report("duplicate backref"); + backRefs |= b; + } +- else ++ else { + Report("rev diff too big"); ++ lastPts = Pts; ++ } + } + else + Report("zero diff"); diff --git a/vdr-2.7.2-timers.patch b/vdr-2.7.2-timers.patch deleted file mode 100644 index 56669da..0000000 --- a/vdr-2.7.2-timers.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- timers.c 2024/03/06 14:37:15 5.20 -+++ timers.c 2024/10/10 09:23:34 -@@ -726,10 +726,39 @@ - bool cTimer::Expired(void) const - { - if (IsSingleEvent() && !Recording()) { -+ time_t Now = time(NULL); - time_t ExpireTime = StopTimeEvent(); -- if (HasFlags(tfVps)) -+ if (HasFlags(tfVps)) { - ExpireTime += EXPIRELATENCY; -- return ExpireTime <= time(NULL); -+ if (ExpireTime <= Now) { -+ LOCK_SCHEDULES_READ; -+ const cSchedule *Schedule = event ? event->Schedule() : NULL; -+ const cEvent *FirstEvent = event; -+ if (Schedule) -+ FirstEvent = Schedule->Events()->Next(FirstEvent); -+ else if ((Schedule = Schedules->GetSchedule(Channel())) != NULL) { -+ FirstEvent = Schedule->Events()->First(); -+ if (FirstEvent) -+ dsyslog("timer %s had no event, got %s from channel/schedule", *ToDescr(), *FirstEvent->ToDescr()); -+ } -+ if (FirstEvent) { -+ if (Schedule) { -+ for (const cEvent *e = FirstEvent; e; e = Schedule->Events()->Next(e)) { -+ if (e->Vps() == startTime) { -+ ExpireTime = e->EndTime() + EXPIRELATENCY; -+ dsyslog("timer %s is waiting for next VPS event %s", *ToDescr(), *e->ToDescr()); -+ break; -+ } -+ } -+ } -+ } -+ else { -+ dsyslog("timer %s has no event, setting expiration to +24h", *ToDescr()); -+ ExpireTime += 3600 * 24; -+ } -+ } -+ } -+ return ExpireTime <= Now; - } - return false; - } diff --git a/vdr.spec b/vdr.spec index a17c165..846a4c0 100644 --- a/vdr.spec +++ b/vdr.spec @@ -24,17 +24,16 @@ %global vdr_user vdr %global vdr_group video # From APIVERSION in config.h -%global apiver 9 +%global apiver 6 Name: vdr -Version: 2.7.7 -Release: 1%{?dist} +Version: 2.7.4 +Release: 3%{?dist} Summary: Video Disk Recorder License: GPL-2.0-or-later URL: http://www.tvdr.de/ -# Get vdr source from http://git.tvdr.de/?p=vdr.git;a=snapshot;h=refs/tags/2.7.7;sf=tbz2 -# wget --content-disposition "http://git.tvdr.de/?p=vdr.git;a=snapshot;h=refs/tags/2.7.7;sf=tbz2" +# Get vdr source from http://git.tvdr.de/?p=vdr.git;a=snapshot;h=refs/tags/2.7.4;sf=tbz2 Source0: %{name}-%{version}.tar.bz2 Source1: %{name}.service Source2: %{name}.sysconfig @@ -70,6 +69,8 @@ Patch4: %{name}-2.4.0-paths.patch Patch5: 12_osdbase-maxitems.patch # https://www.vdr-portal.de/forum/thread/135091-installation-eines-vdr-plugins-nativ-auf-coreelec-boxen/?postID=1379567#post1379567 Patch11: MainMenuHooks-v1_0_4.diff.txt +# Sent upstream 2016-06-17 +### Patch15: %%{name}-1.7.37-fedora-pkgconfig.patch Patch15: %{name}-2.7.4-fedora-pkgconfig.patch # https://www.vdr-portal.de/index.php?attachment/44831-vdr-2-4-6-clearobsoletechannels-diff Patch99: %{name}-2.4.6-ClearObsoleteChannels2.diff @@ -448,6 +449,7 @@ if [ "$(pkg-config vdr --variable=apiversion)" != "%{apiver}" ] ; then fi + %post %systemd_post %{name}.service systemctl daemon-reload @@ -552,19 +554,6 @@ systemctl daemon-reload %changelog -* Fri Jul 25 2025 Martin Gansser - 2.7.7-1 -- Update to 2.7.7 - -* Fri Jul 25 2025 Fedora Release Engineering - 2.7.6-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Sat Jun 21 2025 Martin Gansser - 2.7.6-1 -- Update to 2.7.6 - -* Tue May 27 2025 Martin Gansser - 2.7.5-1 -- Update to 2.7.5 -- Add vdr-2.7.5-override-keyword.patch - * Sun May 11 2025 Peter Bieringer - 2.7.4-3 - Re-add MainMenuHooks patch for 2.7.x