vdr: fix build with glibc 2.31

Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
Arne Fitzenreiter
2020-03-22 19:04:14 +00:00
parent 29cb9e478a
commit b6632b766a
2 changed files with 50 additions and 1 deletions

View File

@@ -37,7 +37,7 @@ DL_FROM = $(URL_IPFIRE)
DIR_APP = $(DIR_SRC)/$(THISAPP)
TARGET = $(DIR_INFO)/$(THISAPP)
PROG = vdr
PAK_VER = 10
PAK_VER = 11
DEPS = "vdr_streamdev"
@@ -98,6 +98,8 @@ $(subst %,%_MD5,$(objects)) :
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE)
# stime was removed from glibc with version 2.31
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/vdr/vdr-2.4.1_replace_stime.patch
# Compile main package.
cd $(DIR_APP) && make $(MAKE_OPTIONS) $(MAKETUNING) vdr include-dir

View File

@@ -0,0 +1,47 @@
From dcfa8ba29f4c95edbdceb0f1bbae0e62fa40c4e2 Mon Sep 17 00:00:00 2001
From: Manuel Reimer <manuel.reimer@gmx.de>
Date: Sat, 14 Dec 2019 12:01:13 +0100
Subject: [PATCH 1/2] Replace obsolete stime() function with clock_settime()
---
eit.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/eit.c b/eit.c
index 50d8229..82294dc 100644
--- a/eit.c
+++ b/eit.c
@@ -391,7 +391,9 @@ cTDT::cTDT(const u_char *Data)
if (abs(diff) > MAX_TIME_DIFF) {
mutex.Lock();
if (abs(diff) > MAX_ADJ_DIFF) {
- if (stime(&dvbtim) == 0)
+ timespec ts = {0};
+ ts.tv_sec = dvbtim;
+ if (clock_settime(CLOCK_REALTIME, &ts) == 0)
isyslog("system time changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(dvbtim), dvbtim);
else
esyslog("ERROR while setting system time: %m");
From 3395a81a07416f54b0aa94ba709b902d72dacce7 Mon Sep 17 00:00:00 2001
From: Manuel Reimer <manuel.reimer@gmx.de>
Date: Sun, 15 Dec 2019 11:26:42 +0100
Subject: [PATCH 2/2] Fix "struct timespec has more than one member" warning
---
eit.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eit.c b/eit.c
index 82294dc..098e627 100644
--- a/eit.c
+++ b/eit.c
@@ -391,7 +391,7 @@ cTDT::cTDT(const u_char *Data)
if (abs(diff) > MAX_TIME_DIFF) {
mutex.Lock();
if (abs(diff) > MAX_ADJ_DIFF) {
- timespec ts = {0};
+ timespec ts = {};
ts.tv_sec = dvbtim;
if (clock_settime(CLOCK_REALTIME, &ts) == 0)
isyslog("system time changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(dvbtim), dvbtim);