summaryrefslogtreecommitdiffstats
path: root/external/meta-openembedded/meta-multimedia/recipes-dvb
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-openembedded/meta-multimedia/recipes-dvb')
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam/0001-include-sys-sysmacros.h-for-major-minor-definitions.patch26
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb5
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-adjust-for-64bit-time_t.patch176
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-allocate-space-for-buf-on-heap.patch46
-rw-r--r--external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb30
5 files changed, 254 insertions, 29 deletions
diff --git a/external/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam/0001-include-sys-sysmacros.h-for-major-minor-definitions.patch b/external/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam/0001-include-sys-sysmacros.h-for-major-minor-definitions.patch
deleted file mode 100644
index d3d89e33..00000000
--- a/external/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam/0001-include-sys-sysmacros.h-for-major-minor-definitions.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a372fe467495a674ad6244b67e83dfbfa8455f51 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 11 Aug 2018 13:54:32 -0700
-Subject: [PATCH] include sys/sysmacros.h for major/minor definitions
-
-csctapi/ifd_db2com.c:27: undefined reference to `minor'
-collect2: error: ld returned 1 exit status
-
-Upstream-Status: Pending
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- globals.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/globals.h b/globals.h
-index bd12244..9e10225 100644
---- a/globals.h
-+++ b/globals.h
-@@ -36,6 +36,7 @@
- #include <termios.h>
- #include <inttypes.h>
- #include <sys/utsname.h>
-+#include <sys/sysmacros.h>
-
- /*
- * The following hack is taken from Linux: include/linux/kconfig.h
diff --git a/external/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb b/external/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb
index a8aec113..5acdd7eb 100644
--- a/external/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb
+++ b/external/meta-openembedded/meta-multimedia/recipes-dvb/oscam/oscam_svn.bb
@@ -4,12 +4,11 @@ HOMEPAGE = "http://www.streamboard.tv/oscam/"
LICENSE = "GPLv3"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-DEPENDS = "libusb1 openssl10 pcsc-lite"
+DEPENDS = "libusb1 openssl pcsc-lite"
SRC_URI = "svn://www.streamboard.tv/svn/oscam;module=trunk;protocol=http \
- file://0001-include-sys-sysmacros.h-for-major-minor-definitions.patch \
"
-SRCREV = "11431"
+SRCREV = "11491"
PV = "1.10+${SRCPV}"
S = "${WORKDIR}/trunk"
diff --git a/external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-adjust-for-64bit-time_t.patch b/external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-adjust-for-64bit-time_t.patch
new file mode 100644
index 00000000..59bd4ef0
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-adjust-for-64bit-time_t.patch
@@ -0,0 +1,176 @@
+From 81f29b028473a3d8ac0aaeb126fc0336a98bb077 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 12 Nov 2019 11:03:16 -0800
+Subject: [PATCH] adjust for 64bit time_t
+
+Break assumption about time_t being of certain size, and use intmax_t to
+print it where needed
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/cron.c | 4 ++--
+ src/epggrab/module/psip.c | 2 +-
+ src/epggrab/otamux.c | 2 +-
+ src/parsers/parser_teletext.c | 2 +-
+ src/tvheadend.h | 6 +-----
+ src/webui/webui.c | 4 ++--
+ 6 files changed, 8 insertions(+), 12 deletions(-)
+
+--- a/src/cron.c
++++ b/src/cron.c
+@@ -329,9 +329,9 @@ cron_next ( cron_t *c, const time_t now,
+ *ret = mktime(&tmp);
+ if (*ret <= now) {
+ #ifndef CRON_TEST
+- tvherror(LS_CRON, "invalid time, now %"PRItime_t", result %"PRItime_t, now, *ret);
++ tvherror(LS_CRON, "invalid time, now %"PRItime_t", result %"PRItime_t, (intmax_t)now, (intmax_t)*ret);
+ #else
+- printf("ERROR: invalid time, now %"PRItime_t", result %"PRItime_t"\n", now, *ret);
++ printf("ERROR: invalid time, now %"PRItime_t", result %"PRItime_t"\n", (intmax_t)now, (intmax_t)*ret);
+ #endif
+ *ret = now + 600;
+ }
+--- a/src/epggrab/module/psip.c
++++ b/src/epggrab/module/psip.c
+@@ -383,14 +383,14 @@ _psip_eit_callback_channel
+
+ tvhtrace(LS_PSIP, " %03d: [%s] eventid 0x%04x at %"PRItime_t", duration %d, title: '%s' (%d bytes)",
+ i, ch ? channel_get_name(ch, channel_blank_name) : "(null)",
+- eventid, start, length,
++ eventid, (intmax_t)start, length,
+ lang_str_get(title, NULL), titlelen);
+
+ save2 = changes2 = 0;
+
+ ebc = epg_broadcast_find_by_time(ch, mod, start, stop, 1, &save2, &changes2);
+ tvhtrace(LS_PSIP, " eid=%5d, start=%"PRItime_t", stop=%"PRItime_t", ebc=%p",
+- eventid, start, stop, ebc);
++ eventid, (intmax_t)start, (intmax_t)stop, ebc);
+ if (!ebc) goto next;
+
+ save2 |= epg_broadcast_set_dvb_eid(ebc, eventid, &changes2);
+--- a/src/epggrab/otamux.c
++++ b/src/epggrab/otamux.c
+@@ -719,7 +719,7 @@ epggrab_ota_start_cb ( void *p );
+ static void
+ epggrab_ota_next_arm( time_t next )
+ {
+- tvhtrace(LS_EPGGRAB, "next ota start event in %li seconds", next - time(NULL));
++ tvhtrace(LS_EPGGRAB, "next ota start event in %jd seconds", (intmax_t)(next - time(NULL)));
+ gtimer_arm_absn(&epggrab_ota_start_timer, epggrab_ota_start_cb, NULL, next);
+ dbus_emit_signal_s64("/epggrab/ota", "next", next);
+ }
+--- a/src/parsers/parser_teletext.c
++++ b/src/parsers/parser_teletext.c
+@@ -625,7 +625,7 @@ tt_construct_unix_time(uint8_t *buf)
+ r[2] = mktime(&tm);
+
+ for(i = 0; i < 3; i++)
+- v[i] = labs(r[i] - t);
++ v[i] = (time_t)llabs((long long)(r[i] - t));
+
+ if(v[0] < v[1] && v[0] < v[2])
+ return r[0];
+--- a/src/tvheadend.h
++++ b/src/tvheadend.h
+@@ -332,11 +332,7 @@ void tvh_qsort_r(void *base, size_t nmem
+ # endif /* ULONG_MAX */
+ #endif /* __WORDSIZE */
+
+-#if __WORDSIZE == 32 && defined(PLATFORM_FREEBSD)
+-#define PRItime_t "d"
+-#else
+-#define PRItime_t "ld"
+-#endif
++#define PRItime_t "jd"
+
+ /* transcoding */
+ #define TVH_NAME_LEN 32
+--- a/src/webui/webui.c
++++ b/src/webui/webui.c
+@@ -886,9 +886,9 @@ http_dvr_list_playlist(http_connection_t
+ bandwidth = ((8*fsize) / (durration*1024.0));
+ strftime(buf, sizeof(buf), "%FT%T%z", localtime_r(&(de->de_start), &tm));
+
+- htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", durration, lang_str_get(de->de_title, NULL));
++ htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", (intmax_t)durration, lang_str_get(de->de_title, NULL));
+
+- htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", durration);
++ htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", (intmax_t)durration);
+ uuid = idnode_uuid_as_str(&de->de_id, ubuf);
+ htsbuf_qprintf(hq, "#EXT-X-STREAM-INF:PROGRAM-ID=%s,BANDWIDTH=%d\n", uuid, bandwidth);
+ htsbuf_qprintf(hq, "#EXT-X-PROGRAM-DATE-TIME:%s\n", buf);
+@@ -944,9 +944,9 @@ http_dvr_playlist(http_connection_t *hc,
+ strftime(buf, sizeof(buf), "%FT%T%z", localtime_r(&(de->de_start), &tm));
+
+ htsbuf_append_str(hq, "#EXTM3U\n");
+- htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", durration, lang_str_get(de->de_title, NULL));
++ htsbuf_qprintf(hq, "#EXTINF:%"PRItime_t",%s\n", (intmax_t)durration, lang_str_get(de->de_title, NULL));
+
+- htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", durration);
++ htsbuf_qprintf(hq, "#EXT-X-TARGETDURATION:%"PRItime_t"\n", (intmax_t)durration);
+ uuid = idnode_uuid_as_str(&de->de_id, ubuf);
+ htsbuf_qprintf(hq, "#EXT-X-STREAM-INF:PROGRAM-ID=%s,BANDWIDTH=%d\n", uuid, bandwidth);
+ htsbuf_qprintf(hq, "#EXT-X-PROGRAM-DATE-TIME:%s\n", buf);
+--- a/src/dvr/dvr_rec.c
++++ b/src/dvr/dvr_rec.c
+@@ -723,7 +723,7 @@ static const char *
+ dvr_sub_start(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
+ {
+ char buf[16];
+- snprintf(buf, sizeof(buf), "%"PRItime_t, (time_t)dvr_entry_get_start_time((dvr_entry_t *)aux, 0));
++ snprintf(buf, sizeof(buf), "%"PRItime_t, (intmax_t)dvr_entry_get_start_time((dvr_entry_t *)aux, 0));
+ return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
+ }
+
+@@ -747,7 +747,7 @@ static const char *
+ dvr_sub_stop(const char *id, const char *fmt, const void *aux, char *tmp, size_t tmplen)
+ {
+ char buf[16];
+- snprintf(buf, sizeof(buf), "%"PRItime_t, (time_t)dvr_entry_get_stop_time((dvr_entry_t *)aux));
++ snprintf(buf, sizeof(buf), "%"PRItime_t, (intmax_t)dvr_entry_get_stop_time((dvr_entry_t *)aux));
+ return dvr_do_prefix(id, fmt, buf, tmp, tmplen);
+ }
+
+--- a/src/epggrab/module.c
++++ b/src/epggrab/module.c
+@@ -582,7 +582,7 @@ static void _epggrab_socket_handler ( ep
+
+ /* Process */
+ if ( data ) {
+- tvhinfo(mod->subsys, "%s: grab took %"PRItime_t" seconds", mod->id, tm2 - tm1);
++ tvhinfo(mod->subsys, "%s: grab took %"PRItime_t" seconds", mod->id, (intmax_t)(tm2 - tm1));
+ epggrab_module_parse(mod, data);
+
+ /* Failed */
+--- a/src/epggrab/module/opentv.c
++++ b/src/epggrab/module/opentv.c
+@@ -486,7 +486,7 @@ opentv_parse_event_section_one
+ 1, &save, &changes);
+ tvhdebug(LS_OPENTV, "find by time start %"PRItime_t " stop "
+ "%"PRItime_t " eid %d = %p",
+- ev.start, ev.stop, ev.eid, ebc);
++ (intmax_t)ev.start, (intmax_t)ev.stop, ev.eid, ebc);
+ save |= epg_broadcast_set_dvb_eid(ebc, ev.eid, &changes);
+ } else {
+ ebc = epg_broadcast_find_by_eid(ch, ev.eid);
+--- a/src/webui/simpleui.c
++++ b/src/webui/simpleui.c
+@@ -556,12 +556,12 @@ page_status(http_connection_t *hc,
+ "<title>%s</title>\n",
+ a.tm_year + 1900, a.tm_mon + 1, a.tm_mday,
+ a.tm_hour, a.tm_min,
+- de->de_start,
+- (time_t)dvr_entry_get_extra_time_pre(de),
++ (intmax_t)de->de_start,
++ (intmax_t)dvr_entry_get_extra_time_pre(de),
+ b.tm_year+1900, b.tm_mon + 1, b.tm_mday,
+ b.tm_hour, b.tm_min,
+- de->de_stop,
+- (time_t)dvr_entry_get_extra_time_post(de),
++ (intmax_t)de->de_stop,
++ (intmax_t)dvr_entry_get_extra_time_post(de),
+ buf);
+
+ rstatus = val2str(de->de_sched_state, recstatustxt);
diff --git a/external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-allocate-space-for-buf-on-heap.patch b/external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-allocate-space-for-buf-on-heap.patch
new file mode 100644
index 00000000..cbd76b6a
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend/0001-allocate-space-for-buf-on-heap.patch
@@ -0,0 +1,46 @@
+From d4a405f87fc215c14e610a25b5a6b14060c1ef15 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 25 Dec 2019 13:53:52 -0800
+Subject: [PATCH] allocate space for buf on heap
+
+Avoids
+| src/epggrab/module/xmltv.c:204:47: error: '%s' directive output may be truncated writing between 2 and 2147483645 bytes into a region of size 115 [-Werror=format-truncation=]
+| 204 | snprintf(buf, sizeof(buf)-1, "ddprogid://%s/%s", mod->id, s);
+| | ^~
+
+Upstream-Status: Submitted [https://github.com/tvheadend/tvheadend/pull/1324]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/epggrab/module/xmltv.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/epggrab/module/xmltv.c b/src/epggrab/module/xmltv.c
+index 34ab05bdb..b1a956614 100644
+--- a/src/epggrab/module/xmltv.c
++++ b/src/epggrab/module/xmltv.c
+@@ -197,11 +197,12 @@ static void parse_xmltv_dd_progid
+ (epggrab_module_t *mod, const char *s, char **uri, char **suri,
+ epg_episode_num_t *epnum)
+ {
+- char buf[128];
+ if (strlen(s) < 2) return;
+
++ char* buf = (char *)malloc(strlen(s) + strlen(mod->id) + 13);
++ buf[strlen(s) + strlen(mod->id) + 12] = '\0';
+ /* Raw URI */
+- snprintf(buf, sizeof(buf)-1, "ddprogid://%s/%s", mod->id, s);
++ snprintf(buf, strlen(s) + strlen(mod->id) + 12, "ddprogid://%s/%s", mod->id, s);
+
+ /* SH - series without episode id so ignore */
+ if (strncmp("SH", s, 2))
+@@ -219,6 +220,7 @@ static void parse_xmltv_dd_progid
+ if (buf[e+1]) sscanf(&buf[e+1], "%hu", &(epnum->e_num));
+ }
+ }
++ free(buf);
+ }
+
+ /**
+--
+2.24.1
+
diff --git a/external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb b/external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
new file mode 100644
index 00000000..20faef04
--- /dev/null
+++ b/external/meta-openembedded/meta-multimedia/recipes-dvb/tvheadend/tvheadend_git.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Tvheadend: TV streaming server and recorder"
+HOMEPAGE = "https://tvheadend.org/"
+
+inherit autotools-brokensep gettext gitpkgv pkgconfig
+
+DEPENDS = "avahi cmake-native dvb-apps libdvbcsa libpcre2 openssl uriparser zlib"
+
+LICENSE = "GPLv3+"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=9cae5acac2e9ee2fc3aec01ac88ce5db"
+
+SRC_URI = "git://github.com/tvheadend/tvheadend.git \
+ file://0001-adjust-for-64bit-time_t.patch \
+ file://0001-allocate-space-for-buf-on-heap.patch \
+ "
+
+SRCREV = "fda89e85e0b6ae796d8a09e178d3937aa7869270"
+PV = "4.3+git${SRCPV}"
+PKGV = "4.3+git${GITPKGV}"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OECONF += "--arch=${TARGET_ARCH} \
+ --disable-hdhomerun_static \
+ --disable-ffmpeg_static \
+ --disable-libav \
+ --python=python3 \
+ "
+
+CLEANBROKEN = "1"
+