From 739b54d63d1152757c3367ac57f249b751caa990 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Sun, 2 Sep 2018 12:27:54 +0100 Subject: media-tv/tvheadend: Version bump to 4.2.6 Closes: https://bugs.gentoo.org/665086 Package-Manager: Portage-2.3.48, Repoman-2.3.10 --- media-tv/tvheadend/Manifest | 1 + .../files/tvheadend-4.2.5-ffmpeg_3.5.patch | 115 ++++++++++++++++++++ .../tvheadend/files/tvheadend-4.2.5-gcc8.patch | 110 +++++++++++++++++++ media-tv/tvheadend/tvheadend-4.2.6.ebuild | 120 +++++++++++++++++++++ 4 files changed, 346 insertions(+) create mode 100644 media-tv/tvheadend/files/tvheadend-4.2.5-ffmpeg_3.5.patch create mode 100644 media-tv/tvheadend/files/tvheadend-4.2.5-gcc8.patch create mode 100644 media-tv/tvheadend/tvheadend-4.2.6.ebuild (limited to 'media-tv/tvheadend') diff --git a/media-tv/tvheadend/Manifest b/media-tv/tvheadend/Manifest index 37bd4a7dfce0..931e594621d9 100644 --- a/media-tv/tvheadend/Manifest +++ b/media-tv/tvheadend/Manifest @@ -1 +1,2 @@ DIST tvheadend-4.2.4.tar.gz 21526564 BLAKE2B 19c571bb253041bd122306eaa516071d096d747b03eaf623b45b79fc0511633a75f1a0925a890207c994da001a2ba3404d1860b91236adae34e307bcf8c57796 SHA512 333a3509da198f5d96316f30fd010a216262315614db302c83405de78d29b32b1d878c0abd7fae2214713107e6955478ee3222b18888a84c57810035af882df4 +DIST tvheadend-4.2.6.tar.gz 21528720 BLAKE2B 358373bc19bd4c27ddb597bb14e29e2f451d4a1efd075f40c0324d692b5fdcac0d23f2f626ba9d0ca235f7d0c91930c5bf2438d0b6537af187a9fb3fcf36c419 SHA512 6291b0ba1d9af11d5295bf6804988835e746db2d3ebbd465a22e293a1108225c8c361762b78213c881cd15d7dedd16092f28a97c9e5b38f44920848bfbaf9709 diff --git a/media-tv/tvheadend/files/tvheadend-4.2.5-ffmpeg_3.5.patch b/media-tv/tvheadend/files/tvheadend-4.2.5-ffmpeg_3.5.patch new file mode 100644 index 000000000000..eaec90eabcef --- /dev/null +++ b/media-tv/tvheadend/files/tvheadend-4.2.5-ffmpeg_3.5.patch @@ -0,0 +1,115 @@ +diff -up ./src/muxer/muxer_libav.c.orig ./src/muxer/muxer_libav.c +--- ./src/muxer/muxer_libav.c.orig 2017-12-18 09:57:28.000000000 +0100 ++++ ./src/muxer/muxer_libav.c 2018-01-23 14:24:07.923509542 +0100 +@@ -174,7 +174,7 @@ lav_muxer_add_stream(lav_muxer_t *lm, + } + + if(lm->lm_oc->oformat->flags & AVFMT_GLOBALHEADER) +- c->flags |= CODEC_FLAG_GLOBAL_HEADER; ++ c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + + return 0; + } +diff -up ./src/plumbing/transcoding.c.orig ./src/plumbing/transcoding.c +--- ./src/plumbing/transcoding.c.orig 2017-12-18 09:57:28.000000000 +0100 ++++ ./src/plumbing/transcoding.c 2018-01-23 14:43:14.873964416 +0100 +@@ -19,7 +19,7 @@ + #include + #include + #include +-#include ++#include + #include + #include + #include +@@ -574,7 +574,7 @@ transcoder_stream_audio(transcoder_t *t, + octx->channels = as->aud_channels ? as->aud_channels : ictx->channels; + octx->channel_layout = transcode_get_channel_layout(&octx->channels, ocodec); + octx->bit_rate = as->aud_bitrate ? as->aud_bitrate : 0; +- octx->flags |= CODEC_FLAG_GLOBAL_HEADER; ++ octx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + + if (!octx->sample_rate) { + tvherror(LS_TRANSCODE, "%04X: audio encoder has no suitable sample rate!", shortid(t)); +@@ -619,7 +619,7 @@ transcoder_stream_audio(transcoder_t *t, + break; + + case SCT_AAC: +- octx->flags |= CODEC_FLAG_BITEXACT; ++ octx->flags |= AV_CODEC_FLAG_BITEXACT; + // use 64 kbit per channel as default + if (octx->bit_rate == 0) { + octx->bit_rate = octx->channels * 64000; +@@ -630,10 +630,10 @@ transcoder_stream_audio(transcoder_t *t, + // use vbr with quality setting as default + // and also use a user specified bitrate < 16 kbit as quality setting + if (octx->bit_rate == 0) { +- octx->flags |= CODEC_FLAG_QSCALE; ++ octx->flags |= AV_CODEC_FLAG_QSCALE; + octx->global_quality = 4 * FF_QP2LAMBDA; + } else if (t->t_props.tp_abitrate < 16) { +- octx->flags |= CODEC_FLAG_QSCALE; ++ octx->flags |= AV_CODEC_FLAG_QSCALE; + octx->global_quality = t->t_props.tp_abitrate * FF_QP2LAMBDA; + octx->bit_rate = 0; + } +@@ -1048,7 +1048,7 @@ create_video_filter(video_stream_t *vs, + AVCodecContext *ictx, AVCodecContext *octx) + { + AVFilterInOut *flt_inputs, *flt_outputs; +- AVFilter *flt_bufsrc, *flt_bufsink; ++ const AVFilter *flt_bufsrc, *flt_bufsink; + enum AVPixelFormat pix_fmts[] = { 0, AV_PIX_FMT_NONE }; + char opt[128]; + int err; +@@ -1289,12 +1289,12 @@ transcoder_stream_video(transcoder_t *t, + else + octx->pix_fmt = AV_PIX_FMT_YUV420P; + +- octx->flags |= CODEC_FLAG_GLOBAL_HEADER; ++ octx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + + if (t->t_props.tp_vbitrate < 64) { + // encode with specified quality and optimize for low latency + // valid values for quality are 2-31, smaller means better quality, use 5 as default +- octx->flags |= CODEC_FLAG_QSCALE; ++ octx->flags |= AV_CODEC_FLAG_QSCALE; + octx->global_quality = FF_QP2LAMBDA * + (t->t_props.tp_vbitrate == 0 ? 5 : MINMAX(t->t_props.tp_vbitrate, 2, 31)); + } else { +@@ -1340,7 +1340,7 @@ transcoder_stream_video(transcoder_t *t, + else + octx->pix_fmt = AV_PIX_FMT_YUV420P; + +- octx->flags |= CODEC_FLAG_GLOBAL_HEADER; ++ octx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + + // Default = "medium". We gain more encoding speed compared to the loss of quality when lowering it _slightly_. + // select preset according to system performance and codec type +@@ -1371,7 +1371,7 @@ transcoder_stream_video(transcoder_t *t, + + case SCT_HEVC: + octx->pix_fmt = AV_PIX_FMT_YUV420P; +- octx->flags |= CODEC_FLAG_GLOBAL_HEADER; ++ octx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + + // on all hardware ultrafast (or maybe superfast) should be safe + // select preset according to system performance +@@ -2177,7 +2177,7 @@ transcoder_get_capabilities(int experime + if (!WORKING_ENCODER(p->id)) + continue; + +- if (((p->capabilities & CODEC_CAP_EXPERIMENTAL) && !experimental) || ++ if (((p->capabilities & AV_CODEC_CAP_EXPERIMENTAL) && !experimental) || + (p->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE)) { + continue; + } +@@ -2192,7 +2192,7 @@ transcoder_get_capabilities(int experime + htsmsg_add_str(m, "name", p->name); + snprintf(buf, sizeof(buf), "%s%s", + p->long_name ?: "", +- (p->capabilities & CODEC_CAP_EXPERIMENTAL) ? ++ (p->capabilities & AV_CODEC_CAP_EXPERIMENTAL) ? + " (Experimental)" : ""); + if (buf[0] != '\0') + htsmsg_add_str(m, "long_name", buf); diff --git a/media-tv/tvheadend/files/tvheadend-4.2.5-gcc8.patch b/media-tv/tvheadend/files/tvheadend-4.2.5-gcc8.patch new file mode 100644 index 000000000000..1891808e4077 --- /dev/null +++ b/media-tv/tvheadend/files/tvheadend-4.2.5-gcc8.patch @@ -0,0 +1,110 @@ +diff -up ./src/dvr/dvr_rec.c.orig ./src/dvr/dvr_rec.c +--- ./src/dvr/dvr_rec.c.orig 2017-12-18 09:57:28.000000000 +0100 ++++ ./src/dvr/dvr_rec.c 2018-03-08 17:15:06.479877783 +0100 +@@ -669,7 +669,7 @@ static int + pvr_generate_filename(dvr_entry_t *de, const streaming_start_t *ss) + { + char filename[PATH_MAX]; +- char path[PATH_MAX]; ++ char path[PATH_MAX + 1]; + char ptmp[PATH_MAX]; + char number[16]; + char tmp[MAX(PATH_MAX, 512)]; +diff -up ./src/epgdb.c.orig ./src/epgdb.c +--- ./src/epgdb.c.orig 2017-12-18 09:57:28.000000000 +0100 ++++ ./src/epgdb.c 2018-03-08 17:15:06.479877783 +0100 +@@ -470,7 +470,7 @@ static int _epg_write_sect ( sbuf_t *sb, + + static void epg_save_tsk_callback ( void *p, int dearmed ) + { +- char tmppath[PATH_MAX]; ++ char tmppath[PATH_MAX + 4]; + char path[PATH_MAX]; + sbuf_t *sb = p; + size_t size = sb->sb_ptr, orig; +diff -up ./src/epggrab/module/eit.c.orig ./src/epggrab/module/eit.c +--- ./src/epggrab/module/eit.c.orig 2017-12-18 09:57:28.000000000 +0100 ++++ ./src/epggrab/module/eit.c 2018-03-08 17:15:06.480877787 +0100 +@@ -50,8 +50,8 @@ typedef struct eit_private + + typedef struct eit_event + { +- char uri[257]; +- char suri[257]; ++ char uri[529]; ++ char suri[529]; + + lang_str_t *title; + lang_str_t *summary; +diff -up ./src/imagecache.c.orig ./src/imagecache.c +--- ./src/imagecache.c.orig 2017-12-18 09:57:28.000000000 +0100 ++++ ./src/imagecache.c 2018-03-08 17:15:06.481877791 +0100 +@@ -252,7 +252,7 @@ imagecache_image_fetch ( imagecache_imag + { + int res = 1, r; + url_t url; +- char tpath[PATH_MAX] = "", path[PATH_MAX]; ++ char tpath[PATH_MAX + 4] = "", path[PATH_MAX]; + tvhpoll_event_t ev; + tvhpoll_t *efd = NULL; + http_client_t *hc = NULL; +diff -up ./src/input/mpegts/dvb_psi.c.orig ./src/input/mpegts/dvb_psi.c +--- ./src/input/mpegts/dvb_psi.c.orig 2017-12-18 09:57:28.000000000 +0100 ++++ ./src/input/mpegts/dvb_psi.c 2018-03-08 17:15:06.482877795 +0100 +@@ -678,7 +678,7 @@ static int + dvb_freesat_add_service + ( dvb_bat_id_t *bi, dvb_freesat_region_t *fr, mpegts_service_t *s, uint32_t lcn ) + { +- char name[96], src[64]; ++ char name[96], src[126]; + if (!fr->bouquet) { + strcpy(name, "???"); + if (idnode_is_instance(&bi->mm->mm_id, &dvb_mux_dvbs_class)) +diff -up ./src/input/mpegts/dvb_support.c.orig ./src/input/mpegts/dvb_support.c +--- ./src/input/mpegts/dvb_support.c.orig 2017-12-18 09:57:28.000000000 +0100 ++++ ./src/input/mpegts/dvb_support.c 2018-03-08 17:15:06.483877799 +0100 +@@ -853,7 +853,7 @@ dvb_str2val(qam); + + const char *dvb_bw2str(int p) + { +- static char __thread buf[16]; ++ static char __thread buf[17]; + const char *res = dvb_common2str(p); + if (res) + return res; +diff -up ./src/input/mpegts/linuxdvb/linuxdvb_satconf.c.orig ./src/input/mpegts/linuxdvb/linuxdvb_satconf.c +--- ./src/input/mpegts/linuxdvb/linuxdvb_satconf.c.orig 2017-12-18 09:57:28.000000000 +0100 ++++ ./src/input/mpegts/linuxdvb/linuxdvb_satconf.c 2018-03-08 17:15:06.484877803 +0100 +@@ -185,7 +185,7 @@ linuxdvb_satconf_class_orbitalpos_set + linuxdvb_satconf_t *ls = p; + int c = *(int*)linuxdvb_satconf_class_orbitalpos_get(p); + int n = *(int*)v; +- char buf[20]; ++ char buf[22]; + + if (n == c) + return 0; +diff -up ./src/input/mpegts/scanfile.c.orig ./src/input/mpegts/scanfile.c +--- ./src/input/mpegts/scanfile.c.orig 2017-12-18 09:57:28.000000000 +0100 ++++ ./src/input/mpegts/scanfile.c 2018-03-08 17:23:20.200963915 +0100 +@@ -331,7 +331,7 @@ scanfile_create_network + { + scanfile_region_t *reg = NULL; + scanfile_network_t *net; +- char buf[256], buf2[256], buf3[256], *str; ++ char buf[256], buf2[263], buf3[270], *str; + int opos; + + /* Region */ +diff -up ./src/settings.c.orig ./src/settings.c +--- ./src/settings.c.orig 2017-12-18 09:57:28.000000000 +0100 ++++ ./src/settings.c 2018-03-08 17:15:06.484877803 +0100 +@@ -129,7 +129,7 @@ void + hts_settings_save(htsmsg_t *record, const char *pathfmt, ...) + { + char path[PATH_MAX]; +- char tmppath[PATH_MAX]; ++ char tmppath[PATH_MAX + 4]; + int fd; + va_list ap; + htsbuf_queue_t hq; diff --git a/media-tv/tvheadend/tvheadend-4.2.6.ebuild b/media-tv/tvheadend/tvheadend-4.2.6.ebuild new file mode 100644 index 000000000000..72be6b32f041 --- /dev/null +++ b/media-tv/tvheadend/tvheadend-4.2.6.ebuild @@ -0,0 +1,120 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit linux-info systemd toolchain-funcs user + +DESCRIPTION="Tvheadend is a TV streaming server and digital video recorder" +HOMEPAGE="https://tvheadend.org/" +SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" + +IUSE="+capmt +constcw +cwc dbus debug dvbcsa dvben50221 +dvb +ffmpeg hdhomerun +imagecache +inotify iptv libressl satip systemd +timeshift uriparser xmltv zeroconf zlib" + +RDEPEND=" + virtual/libiconv + dbus? ( sys-apps/dbus ) + dvbcsa? ( media-libs/libdvbcsa ) + dvben50221? ( media-tv/linuxtv-dvb-apps ) + ffmpeg? ( media-video/ffmpeg:0/55.57.57 ) + hdhomerun? ( media-libs/libhdhomerun ) + !libressl? ( dev-libs/openssl:= ) + libressl? ( dev-libs/libressl:= ) + uriparser? ( dev-libs/uriparser ) + zeroconf? ( net-dns/avahi ) + zlib? ( sys-libs/zlib )" + +DEPEND=" + ${RDEPEND} + sys-devel/gettext + virtual/pkgconfig + dvb? ( virtual/linuxtv-dvb-headers )" + +RDEPEND+=" + dvb? ( media-tv/dtv-scan-tables ) + xmltv? ( media-tv/xmltv )" + +REQUIRED_USE="dvbcsa? ( || ( capmt constcw cwc dvben50221 ) )" + +# Some patches from: +# https://github.com/rpmfusion/tvheadend + +PATCHES=( + "${FILESDIR}"/${PN}-4.0.9-use_system_queue.patch + "${FILESDIR}"/${PN}-4.2.1-hdhomerun.patch + "${FILESDIR}"/${PN}-4.2.2-dtv_scan_tables.patch + "${FILESDIR}"/${PN}-4.2.5-ffmpeg_3.5.patch + "${FILESDIR}"/${PN}-4.2.5-gcc8.patch +) + +DOCS=( README.md ) + +pkg_setup() { + use inotify && + CONFIG_CHECK="~INOTIFY_USER" linux-info_pkg_setup + + enewuser tvheadend -1 -1 /etc/tvheadend video +} + +src_configure() { + CC="$(tc-getCC)" \ + PKG_CONFIG="${CHOST}-pkg-config" \ + econf \ + --disable-bundle \ + --disable-ccache \ + --disable-dvbscan \ + --disable-ffmpeg_static \ + --disable-hdhomerun_static \ + --nowerror \ + $(use_enable capmt) \ + $(use_enable constcw) \ + $(use_enable cwc) \ + $(use_enable dbus dbus_1) \ + $(use_enable debug trace) \ + $(use_enable dvb linuxdvb) \ + $(use_enable dvbcsa) \ + $(use_enable dvben50221) \ + $(use_enable ffmpeg libav) \ + $(use_enable hdhomerun hdhomerun_client) \ + $(use_enable imagecache) \ + $(use_enable inotify) \ + $(use_enable iptv) \ + $(use_enable satip satip_server) \ + $(use_enable satip satip_client) \ + $(use_enable systemd libsystemd_daemon) \ + $(use_enable timeshift) \ + $(use_enable uriparser) \ + $(use_enable zeroconf avahi) \ + $(use_enable zlib) +} + +src_compile() { + emake CC="$(tc-getCC)" +} + +src_install() { + default + + newinitd "${FILESDIR}"/tvheadend.initd tvheadend + newconfd "${FILESDIR}"/tvheadend.confd tvheadend + + use systemd && + systemd_dounit "${FILESDIR}"/tvheadend.service + + dodir /etc/tvheadend + fperms 0700 /etc/tvheadend + fowners tvheadend:video /etc/tvheadend +} + +pkg_postinst() { + elog "The Tvheadend web interface can be reached at:" + elog "http://localhost:9981/" + elog + elog "Make sure that you change the default username" + elog "and password via the Configuration / Access control" + elog "tab in the web interface." +} -- cgit v1.2.3-65-gdbad