Gentoo Archives: gentoo-commits

From: James Le Cuirot <chewi@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-tv/tvheadend/files/, media-tv/tvheadend/
Date: Sun, 02 Sep 2018 11:43:43
Message-Id: 1535888590.739b54d63d1152757c3367ac57f249b751caa990.chewi@gentoo
1 commit: 739b54d63d1152757c3367ac57f249b751caa990
2 Author: James Le Cuirot <chewi <AT> gentoo <DOT> org>
3 AuthorDate: Sun Sep 2 11:27:54 2018 +0000
4 Commit: James Le Cuirot <chewi <AT> gentoo <DOT> org>
5 CommitDate: Sun Sep 2 11:43:10 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=739b54d6
7
8 media-tv/tvheadend: Version bump to 4.2.6
9
10 Closes: https://bugs.gentoo.org/665086
11 Package-Manager: Portage-2.3.48, Repoman-2.3.10
12
13 media-tv/tvheadend/Manifest | 1 +
14 .../files/tvheadend-4.2.5-ffmpeg_3.5.patch | 115 ++++++++++++++++++++
15 .../tvheadend/files/tvheadend-4.2.5-gcc8.patch | 110 +++++++++++++++++++
16 media-tv/tvheadend/tvheadend-4.2.6.ebuild | 120 +++++++++++++++++++++
17 4 files changed, 346 insertions(+)
18
19 diff --git a/media-tv/tvheadend/Manifest b/media-tv/tvheadend/Manifest
20 index 37bd4a7dfce..931e594621d 100644
21 --- a/media-tv/tvheadend/Manifest
22 +++ b/media-tv/tvheadend/Manifest
23 @@ -1 +1,2 @@
24 DIST tvheadend-4.2.4.tar.gz 21526564 BLAKE2B 19c571bb253041bd122306eaa516071d096d747b03eaf623b45b79fc0511633a75f1a0925a890207c994da001a2ba3404d1860b91236adae34e307bcf8c57796 SHA512 333a3509da198f5d96316f30fd010a216262315614db302c83405de78d29b32b1d878c0abd7fae2214713107e6955478ee3222b18888a84c57810035af882df4
25 +DIST tvheadend-4.2.6.tar.gz 21528720 BLAKE2B 358373bc19bd4c27ddb597bb14e29e2f451d4a1efd075f40c0324d692b5fdcac0d23f2f626ba9d0ca235f7d0c91930c5bf2438d0b6537af187a9fb3fcf36c419 SHA512 6291b0ba1d9af11d5295bf6804988835e746db2d3ebbd465a22e293a1108225c8c361762b78213c881cd15d7dedd16092f28a97c9e5b38f44920848bfbaf9709
26
27 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
28 new file mode 100644
29 index 00000000000..eaec90eabce
30 --- /dev/null
31 +++ b/media-tv/tvheadend/files/tvheadend-4.2.5-ffmpeg_3.5.patch
32 @@ -0,0 +1,115 @@
33 +diff -up ./src/muxer/muxer_libav.c.orig ./src/muxer/muxer_libav.c
34 +--- ./src/muxer/muxer_libav.c.orig 2017-12-18 09:57:28.000000000 +0100
35 ++++ ./src/muxer/muxer_libav.c 2018-01-23 14:24:07.923509542 +0100
36 +@@ -174,7 +174,7 @@ lav_muxer_add_stream(lav_muxer_t *lm,
37 + }
38 +
39 + if(lm->lm_oc->oformat->flags & AVFMT_GLOBALHEADER)
40 +- c->flags |= CODEC_FLAG_GLOBAL_HEADER;
41 ++ c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
42 +
43 + return 0;
44 + }
45 +diff -up ./src/plumbing/transcoding.c.orig ./src/plumbing/transcoding.c
46 +--- ./src/plumbing/transcoding.c.orig 2017-12-18 09:57:28.000000000 +0100
47 ++++ ./src/plumbing/transcoding.c 2018-01-23 14:43:14.873964416 +0100
48 +@@ -19,7 +19,7 @@
49 + #include <unistd.h>
50 + #include <libavformat/avformat.h>
51 + #include <libavcodec/avcodec.h>
52 +-#include <libavfilter/avfiltergraph.h>
53 ++#include <libavfilter/avfilter.h>
54 + #include <libavfilter/buffersink.h>
55 + #include <libavfilter/buffersrc.h>
56 + #include <libavutil/opt.h>
57 +@@ -574,7 +574,7 @@ transcoder_stream_audio(transcoder_t *t,
58 + octx->channels = as->aud_channels ? as->aud_channels : ictx->channels;
59 + octx->channel_layout = transcode_get_channel_layout(&octx->channels, ocodec);
60 + octx->bit_rate = as->aud_bitrate ? as->aud_bitrate : 0;
61 +- octx->flags |= CODEC_FLAG_GLOBAL_HEADER;
62 ++ octx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
63 +
64 + if (!octx->sample_rate) {
65 + tvherror(LS_TRANSCODE, "%04X: audio encoder has no suitable sample rate!", shortid(t));
66 +@@ -619,7 +619,7 @@ transcoder_stream_audio(transcoder_t *t,
67 + break;
68 +
69 + case SCT_AAC:
70 +- octx->flags |= CODEC_FLAG_BITEXACT;
71 ++ octx->flags |= AV_CODEC_FLAG_BITEXACT;
72 + // use 64 kbit per channel as default
73 + if (octx->bit_rate == 0) {
74 + octx->bit_rate = octx->channels * 64000;
75 +@@ -630,10 +630,10 @@ transcoder_stream_audio(transcoder_t *t,
76 + // use vbr with quality setting as default
77 + // and also use a user specified bitrate < 16 kbit as quality setting
78 + if (octx->bit_rate == 0) {
79 +- octx->flags |= CODEC_FLAG_QSCALE;
80 ++ octx->flags |= AV_CODEC_FLAG_QSCALE;
81 + octx->global_quality = 4 * FF_QP2LAMBDA;
82 + } else if (t->t_props.tp_abitrate < 16) {
83 +- octx->flags |= CODEC_FLAG_QSCALE;
84 ++ octx->flags |= AV_CODEC_FLAG_QSCALE;
85 + octx->global_quality = t->t_props.tp_abitrate * FF_QP2LAMBDA;
86 + octx->bit_rate = 0;
87 + }
88 +@@ -1048,7 +1048,7 @@ create_video_filter(video_stream_t *vs,
89 + AVCodecContext *ictx, AVCodecContext *octx)
90 + {
91 + AVFilterInOut *flt_inputs, *flt_outputs;
92 +- AVFilter *flt_bufsrc, *flt_bufsink;
93 ++ const AVFilter *flt_bufsrc, *flt_bufsink;
94 + enum AVPixelFormat pix_fmts[] = { 0, AV_PIX_FMT_NONE };
95 + char opt[128];
96 + int err;
97 +@@ -1289,12 +1289,12 @@ transcoder_stream_video(transcoder_t *t,
98 + else
99 + octx->pix_fmt = AV_PIX_FMT_YUV420P;
100 +
101 +- octx->flags |= CODEC_FLAG_GLOBAL_HEADER;
102 ++ octx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
103 +
104 + if (t->t_props.tp_vbitrate < 64) {
105 + // encode with specified quality and optimize for low latency
106 + // valid values for quality are 2-31, smaller means better quality, use 5 as default
107 +- octx->flags |= CODEC_FLAG_QSCALE;
108 ++ octx->flags |= AV_CODEC_FLAG_QSCALE;
109 + octx->global_quality = FF_QP2LAMBDA *
110 + (t->t_props.tp_vbitrate == 0 ? 5 : MINMAX(t->t_props.tp_vbitrate, 2, 31));
111 + } else {
112 +@@ -1340,7 +1340,7 @@ transcoder_stream_video(transcoder_t *t,
113 + else
114 + octx->pix_fmt = AV_PIX_FMT_YUV420P;
115 +
116 +- octx->flags |= CODEC_FLAG_GLOBAL_HEADER;
117 ++ octx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
118 +
119 + // Default = "medium". We gain more encoding speed compared to the loss of quality when lowering it _slightly_.
120 + // select preset according to system performance and codec type
121 +@@ -1371,7 +1371,7 @@ transcoder_stream_video(transcoder_t *t,
122 +
123 + case SCT_HEVC:
124 + octx->pix_fmt = AV_PIX_FMT_YUV420P;
125 +- octx->flags |= CODEC_FLAG_GLOBAL_HEADER;
126 ++ octx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
127 +
128 + // on all hardware ultrafast (or maybe superfast) should be safe
129 + // select preset according to system performance
130 +@@ -2177,7 +2177,7 @@ transcoder_get_capabilities(int experime
131 + if (!WORKING_ENCODER(p->id))
132 + continue;
133 +
134 +- if (((p->capabilities & CODEC_CAP_EXPERIMENTAL) && !experimental) ||
135 ++ if (((p->capabilities & AV_CODEC_CAP_EXPERIMENTAL) && !experimental) ||
136 + (p->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE)) {
137 + continue;
138 + }
139 +@@ -2192,7 +2192,7 @@ transcoder_get_capabilities(int experime
140 + htsmsg_add_str(m, "name", p->name);
141 + snprintf(buf, sizeof(buf), "%s%s",
142 + p->long_name ?: "",
143 +- (p->capabilities & CODEC_CAP_EXPERIMENTAL) ?
144 ++ (p->capabilities & AV_CODEC_CAP_EXPERIMENTAL) ?
145 + " (Experimental)" : "");
146 + if (buf[0] != '\0')
147 + htsmsg_add_str(m, "long_name", buf);
148
149 diff --git a/media-tv/tvheadend/files/tvheadend-4.2.5-gcc8.patch b/media-tv/tvheadend/files/tvheadend-4.2.5-gcc8.patch
150 new file mode 100644
151 index 00000000000..1891808e407
152 --- /dev/null
153 +++ b/media-tv/tvheadend/files/tvheadend-4.2.5-gcc8.patch
154 @@ -0,0 +1,110 @@
155 +diff -up ./src/dvr/dvr_rec.c.orig ./src/dvr/dvr_rec.c
156 +--- ./src/dvr/dvr_rec.c.orig 2017-12-18 09:57:28.000000000 +0100
157 ++++ ./src/dvr/dvr_rec.c 2018-03-08 17:15:06.479877783 +0100
158 +@@ -669,7 +669,7 @@ static int
159 + pvr_generate_filename(dvr_entry_t *de, const streaming_start_t *ss)
160 + {
161 + char filename[PATH_MAX];
162 +- char path[PATH_MAX];
163 ++ char path[PATH_MAX + 1];
164 + char ptmp[PATH_MAX];
165 + char number[16];
166 + char tmp[MAX(PATH_MAX, 512)];
167 +diff -up ./src/epgdb.c.orig ./src/epgdb.c
168 +--- ./src/epgdb.c.orig 2017-12-18 09:57:28.000000000 +0100
169 ++++ ./src/epgdb.c 2018-03-08 17:15:06.479877783 +0100
170 +@@ -470,7 +470,7 @@ static int _epg_write_sect ( sbuf_t *sb,
171 +
172 + static void epg_save_tsk_callback ( void *p, int dearmed )
173 + {
174 +- char tmppath[PATH_MAX];
175 ++ char tmppath[PATH_MAX + 4];
176 + char path[PATH_MAX];
177 + sbuf_t *sb = p;
178 + size_t size = sb->sb_ptr, orig;
179 +diff -up ./src/epggrab/module/eit.c.orig ./src/epggrab/module/eit.c
180 +--- ./src/epggrab/module/eit.c.orig 2017-12-18 09:57:28.000000000 +0100
181 ++++ ./src/epggrab/module/eit.c 2018-03-08 17:15:06.480877787 +0100
182 +@@ -50,8 +50,8 @@ typedef struct eit_private
183 +
184 + typedef struct eit_event
185 + {
186 +- char uri[257];
187 +- char suri[257];
188 ++ char uri[529];
189 ++ char suri[529];
190 +
191 + lang_str_t *title;
192 + lang_str_t *summary;
193 +diff -up ./src/imagecache.c.orig ./src/imagecache.c
194 +--- ./src/imagecache.c.orig 2017-12-18 09:57:28.000000000 +0100
195 ++++ ./src/imagecache.c 2018-03-08 17:15:06.481877791 +0100
196 +@@ -252,7 +252,7 @@ imagecache_image_fetch ( imagecache_imag
197 + {
198 + int res = 1, r;
199 + url_t url;
200 +- char tpath[PATH_MAX] = "", path[PATH_MAX];
201 ++ char tpath[PATH_MAX + 4] = "", path[PATH_MAX];
202 + tvhpoll_event_t ev;
203 + tvhpoll_t *efd = NULL;
204 + http_client_t *hc = NULL;
205 +diff -up ./src/input/mpegts/dvb_psi.c.orig ./src/input/mpegts/dvb_psi.c
206 +--- ./src/input/mpegts/dvb_psi.c.orig 2017-12-18 09:57:28.000000000 +0100
207 ++++ ./src/input/mpegts/dvb_psi.c 2018-03-08 17:15:06.482877795 +0100
208 +@@ -678,7 +678,7 @@ static int
209 + dvb_freesat_add_service
210 + ( dvb_bat_id_t *bi, dvb_freesat_region_t *fr, mpegts_service_t *s, uint32_t lcn )
211 + {
212 +- char name[96], src[64];
213 ++ char name[96], src[126];
214 + if (!fr->bouquet) {
215 + strcpy(name, "???");
216 + if (idnode_is_instance(&bi->mm->mm_id, &dvb_mux_dvbs_class))
217 +diff -up ./src/input/mpegts/dvb_support.c.orig ./src/input/mpegts/dvb_support.c
218 +--- ./src/input/mpegts/dvb_support.c.orig 2017-12-18 09:57:28.000000000 +0100
219 ++++ ./src/input/mpegts/dvb_support.c 2018-03-08 17:15:06.483877799 +0100
220 +@@ -853,7 +853,7 @@ dvb_str2val(qam);
221 +
222 + const char *dvb_bw2str(int p)
223 + {
224 +- static char __thread buf[16];
225 ++ static char __thread buf[17];
226 + const char *res = dvb_common2str(p);
227 + if (res)
228 + return res;
229 +diff -up ./src/input/mpegts/linuxdvb/linuxdvb_satconf.c.orig ./src/input/mpegts/linuxdvb/linuxdvb_satconf.c
230 +--- ./src/input/mpegts/linuxdvb/linuxdvb_satconf.c.orig 2017-12-18 09:57:28.000000000 +0100
231 ++++ ./src/input/mpegts/linuxdvb/linuxdvb_satconf.c 2018-03-08 17:15:06.484877803 +0100
232 +@@ -185,7 +185,7 @@ linuxdvb_satconf_class_orbitalpos_set
233 + linuxdvb_satconf_t *ls = p;
234 + int c = *(int*)linuxdvb_satconf_class_orbitalpos_get(p);
235 + int n = *(int*)v;
236 +- char buf[20];
237 ++ char buf[22];
238 +
239 + if (n == c)
240 + return 0;
241 +diff -up ./src/input/mpegts/scanfile.c.orig ./src/input/mpegts/scanfile.c
242 +--- ./src/input/mpegts/scanfile.c.orig 2017-12-18 09:57:28.000000000 +0100
243 ++++ ./src/input/mpegts/scanfile.c 2018-03-08 17:23:20.200963915 +0100
244 +@@ -331,7 +331,7 @@ scanfile_create_network
245 + {
246 + scanfile_region_t *reg = NULL;
247 + scanfile_network_t *net;
248 +- char buf[256], buf2[256], buf3[256], *str;
249 ++ char buf[256], buf2[263], buf3[270], *str;
250 + int opos;
251 +
252 + /* Region */
253 +diff -up ./src/settings.c.orig ./src/settings.c
254 +--- ./src/settings.c.orig 2017-12-18 09:57:28.000000000 +0100
255 ++++ ./src/settings.c 2018-03-08 17:15:06.484877803 +0100
256 +@@ -129,7 +129,7 @@ void
257 + hts_settings_save(htsmsg_t *record, const char *pathfmt, ...)
258 + {
259 + char path[PATH_MAX];
260 +- char tmppath[PATH_MAX];
261 ++ char tmppath[PATH_MAX + 4];
262 + int fd;
263 + va_list ap;
264 + htsbuf_queue_t hq;
265
266 diff --git a/media-tv/tvheadend/tvheadend-4.2.6.ebuild b/media-tv/tvheadend/tvheadend-4.2.6.ebuild
267 new file mode 100644
268 index 00000000000..72be6b32f04
269 --- /dev/null
270 +++ b/media-tv/tvheadend/tvheadend-4.2.6.ebuild
271 @@ -0,0 +1,120 @@
272 +# Copyright 1999-2018 Gentoo Foundation
273 +# Distributed under the terms of the GNU General Public License v2
274 +
275 +EAPI=6
276 +
277 +inherit linux-info systemd toolchain-funcs user
278 +
279 +DESCRIPTION="Tvheadend is a TV streaming server and digital video recorder"
280 +HOMEPAGE="https://tvheadend.org/"
281 +SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
282 +
283 +LICENSE="GPL-3"
284 +SLOT="0"
285 +KEYWORDS="~amd64 ~arm ~x86"
286 +
287 +IUSE="+capmt +constcw +cwc dbus debug dvbcsa dvben50221 +dvb +ffmpeg hdhomerun +imagecache +inotify iptv libressl satip systemd +timeshift uriparser xmltv zeroconf zlib"
288 +
289 +RDEPEND="
290 + virtual/libiconv
291 + dbus? ( sys-apps/dbus )
292 + dvbcsa? ( media-libs/libdvbcsa )
293 + dvben50221? ( media-tv/linuxtv-dvb-apps )
294 + ffmpeg? ( media-video/ffmpeg:0/55.57.57 )
295 + hdhomerun? ( media-libs/libhdhomerun )
296 + !libressl? ( dev-libs/openssl:= )
297 + libressl? ( dev-libs/libressl:= )
298 + uriparser? ( dev-libs/uriparser )
299 + zeroconf? ( net-dns/avahi )
300 + zlib? ( sys-libs/zlib )"
301 +
302 +DEPEND="
303 + ${RDEPEND}
304 + sys-devel/gettext
305 + virtual/pkgconfig
306 + dvb? ( virtual/linuxtv-dvb-headers )"
307 +
308 +RDEPEND+="
309 + dvb? ( media-tv/dtv-scan-tables )
310 + xmltv? ( media-tv/xmltv )"
311 +
312 +REQUIRED_USE="dvbcsa? ( || ( capmt constcw cwc dvben50221 ) )"
313 +
314 +# Some patches from:
315 +# https://github.com/rpmfusion/tvheadend
316 +
317 +PATCHES=(
318 + "${FILESDIR}"/${PN}-4.0.9-use_system_queue.patch
319 + "${FILESDIR}"/${PN}-4.2.1-hdhomerun.patch
320 + "${FILESDIR}"/${PN}-4.2.2-dtv_scan_tables.patch
321 + "${FILESDIR}"/${PN}-4.2.5-ffmpeg_3.5.patch
322 + "${FILESDIR}"/${PN}-4.2.5-gcc8.patch
323 +)
324 +
325 +DOCS=( README.md )
326 +
327 +pkg_setup() {
328 + use inotify &&
329 + CONFIG_CHECK="~INOTIFY_USER" linux-info_pkg_setup
330 +
331 + enewuser tvheadend -1 -1 /etc/tvheadend video
332 +}
333 +
334 +src_configure() {
335 + CC="$(tc-getCC)" \
336 + PKG_CONFIG="${CHOST}-pkg-config" \
337 + econf \
338 + --disable-bundle \
339 + --disable-ccache \
340 + --disable-dvbscan \
341 + --disable-ffmpeg_static \
342 + --disable-hdhomerun_static \
343 + --nowerror \
344 + $(use_enable capmt) \
345 + $(use_enable constcw) \
346 + $(use_enable cwc) \
347 + $(use_enable dbus dbus_1) \
348 + $(use_enable debug trace) \
349 + $(use_enable dvb linuxdvb) \
350 + $(use_enable dvbcsa) \
351 + $(use_enable dvben50221) \
352 + $(use_enable ffmpeg libav) \
353 + $(use_enable hdhomerun hdhomerun_client) \
354 + $(use_enable imagecache) \
355 + $(use_enable inotify) \
356 + $(use_enable iptv) \
357 + $(use_enable satip satip_server) \
358 + $(use_enable satip satip_client) \
359 + $(use_enable systemd libsystemd_daemon) \
360 + $(use_enable timeshift) \
361 + $(use_enable uriparser) \
362 + $(use_enable zeroconf avahi) \
363 + $(use_enable zlib)
364 +}
365 +
366 +src_compile() {
367 + emake CC="$(tc-getCC)"
368 +}
369 +
370 +src_install() {
371 + default
372 +
373 + newinitd "${FILESDIR}"/tvheadend.initd tvheadend
374 + newconfd "${FILESDIR}"/tvheadend.confd tvheadend
375 +
376 + use systemd &&
377 + systemd_dounit "${FILESDIR}"/tvheadend.service
378 +
379 + dodir /etc/tvheadend
380 + fperms 0700 /etc/tvheadend
381 + fowners tvheadend:video /etc/tvheadend
382 +}
383 +
384 +pkg_postinst() {
385 + elog "The Tvheadend web interface can be reached at:"
386 + elog "http://localhost:9981/"
387 + elog
388 + elog "Make sure that you change the default username"
389 + elog "and password via the Configuration / Access control"
390 + elog "tab in the web interface."
391 +}