- Update to 3.9.20140806

- Separate dtv-scan-tables in his own port
- Add XMLTV option
- Create a new user/group for tvheadend
- Improve tvheadend startscript
- Convert manual patching to USES=shebangfix

Submitted by:	Dreamcat4 <dreamcat4@gmail.com>
This commit is contained in:
Bernhard Froehlich 2014-08-18 17:54:21 +00:00
parent 9691f942ac
commit ede70f8e77
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=365334
13 changed files with 238 additions and 1216 deletions

1
GIDs
View File

@ -291,5 +291,6 @@ hbase:*:980:
uvncrep:*:981:
bro:*:982:
syncthing:*:983:
tvheadend:*:984:
nogroup:*:65533:
nobody:*:65534:

1
UIDs
View File

@ -297,4 +297,5 @@ hbase:*:980:980::0:0:HBase user:/nonexistent:/usr/sbin/nologin
uvncrep:*:981:981::0:0:UltraVNC Repeater daemon:/nonexistent:/usr/sbin/nologin
bro:*:982:982::0:0:Bro Network Security Monitor:/nonexistent:/usr/sbin/nologin
syncthing:*:983:983::0:0:Syncthing Daemon:/var/tmp/syncthing:/usr/sbin/nologin
tvheadend:*:984:984::0:0:TV Headend:/usr/local/etc/tvheadend:/bin/sh
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin

View File

@ -2,12 +2,8 @@
# $FreeBSD$
PORTNAME= tvheadend
PORTVERSION= 3.4.0.20130726.3
PORTREVISION= 5
PORTVERSION= 3.9.20140806
CATEGORIES= multimedia
MASTER_SITES= http://people.freebsd.org/~decke/distfiles/
DISTNAME= decke-${PORTNAME}-8a8c1a8
DISTFILES= ${PORTNAME}-${PORTVERSION}${EXTRACT_SUFX} dvb-scan-tables-20130714.tar.gz
MAINTAINER= decke@FreeBSD.org
COMMENT= TV streaming server supporting DVB, IPTV and V4L
@ -18,44 +14,57 @@ BUILD_DEPENDS= bash:${PORTSDIR}/shells/bash \
${LOCALBASE}/include/linux/videodev2.h:${PORTSDIR}/multimedia/v4l_compat
LIB_DEPENDS= libexecinfo.so:${PORTSDIR}/devel/libexecinfo \
libcurl.so:${PORTSDIR}/ftp/curl
libcurl.so:${PORTSDIR}/ftp/curl \
liburiparser.so:${PORTSDIR}/net/uriparser
USES= pkgconfig gmake
USE_PYTHON= yes
RUN_DEPENDS= dtv-scan-tables>=0:${PORTSDIR}/multimedia/dtv-scan-tables
USE_GITHUB= yes
GH_ACCOUNT= ${PORTNAME}
GH_TAGNAME= ${GH_COMMIT}
GH_COMMIT= 6d19440
USES= pkgconfig gmake shebangfix python
GNU_CONFIGURE= yes
MAKE_JOBS_UNSAFE= yes
USE_RC_SUBR= ${PORTNAME}
TVHUSER?= webcamd
TVHGROUP?= webcamd
SHEBANG_FILES= ${WRKSRC}/Autobuild.sh \
${WRKSRC}/configure \
${WRKSRC}/support/configure.inc \
${WRKSRC}/support/getmuxlist \
${WRKSRC}/support/pbuilder \
${WRKSRC}/support/version
TVHUSER?= tvheadend
TVHGROUP?= tvheadend
USERS= ${TVHUSER}
GROUPS= ${TVHGROUP}
GROUPS= ${TVHGROUP} webcamd
SUB_LIST+= TVHUSER="${TVHUSER}" \
TVHGROUP="${TVHGROUP}"
OPTIONS_DEFINE= AVAHI DVBCSA
OPTIONS_DEFAULT=DVBCSA
DVBCSA_DESC= Replace internal ffdecsa with dvbcsa
CONFIGURE_ENV+= PLATFORM=freebsd
CONFIGURE_ARGS+=--disable-dvbscan --disable-zlib --disable-libav
CONFIGURE_ARGS+=--disable-dvbscan --disable-zlib
CFLAGS+= -I${LOCALBASE}/include -Wno-conversion -Wno-int-to-pointer-cast
LDFLAGS+= -L${LOCALBASE}/lib -lexecinfo -lssl -lz
OPTIONS_DEFINE= AVAHI DVBCSA TRANSCODING XMLTV
OPTIONS_DEFAULT=DVBCSA
AVAHI_LIB_DEPENDS= libavahi-client.so:${PORTSDIR}/net/avahi-app
DVBCSA_DESC= Replace internal ffdecsa with dvbcsa
DVBCSA_LIB_DEPENDS= libdvbcsa.so:${PORTSDIR}/multimedia/libdvbcsa
DVBCSA_CONFIGURE_ENABLE= dvbcsa
.include <bsd.port.pre.mk>
TRANSCODING_DESC= Transcoding for mobile and web clients
TRANSCODING_LIB_DEPENDS= libavcodec.so:${PORTSDIR}/multimedia/ffmpeg
TRANSCODING_CONFIGURE_ENABLE= libav
.if ${OSVERSION} < 900000
.if ${ARCH} == "amd64" || ${ARCH} == "sparc64" || ${ARCH} == "mips64"
CFLAGS+= -D__WORDSIZE=64
.else
CFLAGS+= -D__WORDSIZE=32
.endif
.endif
XMLTV_RUN_DEPENDS= p5-xmltv>=0:${PORTSDIR}/textproc/p5-xmltv
.include <bsd.port.pre.mk>
.if ( !empty(CC:M*clang*) || ${OSVERSION} >= 1000024 )
# CLANG also needs -Wno-microsoft which GCC 4.2 does not know
@ -64,23 +73,22 @@ CFLAGS+= -Wno-microsoft \
.endif
post-patch:
@${REINPLACE_CMD} 's|0.0.0~unknown|${PORTVERSION}-${GH_COMMIT}|' \
${WRKSRC}/support/version
@${REINPLACE_CMD} 's|-g||' \
${WRKSRC}/Makefile
@${REINPLACE_CMD} 's|-ldl||' \
${WRKSRC}/Makefile
@${REINPLACE_CMD} 's|/bin/bash|${LOCALBASE}/bin/bash|' \
${WRKSRC}/Autobuild.sh \
${WRKSRC}/configure \
${WRKSRC}/support/changelog \
${WRKSRC}/support/configure.inc \
${WRKSRC}/support/getmuxlist \
${WRKSRC}/support/pbuilder \
${WRKSRC}/support/version
@${REINPLACE_CMD} 's|/usr/share/dvb|${DATADIR}/dvb|' \
${WRKSRC}/src/muxes.c
post-install:
${MKDIR} ${STAGEDIR}${DATADIR}/dvb
${CP} -a ${WRKDIR}/dvb-scan-tables/ ${STAGEDIR}${DATADIR}/dvb
# ignore gcc warnings on FreeBSD 9.X, and clang warnings on FreeBSD 10+
@${REINPLACE_CMD} 's|-Werror||' \
${WRKSRC}/Makefile
.if ${OSVERSION} >= 1000000
# to suppress clang CC flags on FreeBSD 10+
# @${REINPLACE_CMD} 's|clang|clang-options-disabled|' \
# to enable clang CC flags, because clang is identified as 'cc' on FreeBSD 10+
@${REINPLACE_CMD} 's|clang|cc|' \
${WRKSRC}/Makefile
.endif
.include <bsd.port.post.mk>

View File

@ -1,4 +1,2 @@
SHA256 (tvheadend-3.4.0.20130726.3.tar.gz) = 798e1972089303434738051820863a1092a4ea9cf413eea44b5381c667549c23
SIZE (tvheadend-3.4.0.20130726.3.tar.gz) = 2321128
SHA256 (dvb-scan-tables-20130714.tar.gz) = ba4458cdb19149186e56c20498cedd85c4e42bcb283d3f5285c24bd643ec6507
SIZE (dvb-scan-tables-20130714.tar.gz) = 122674
SHA256 (tvheadend-3.9.20140806.tar.gz) = 8c24cdd365e507a0dd0de38599c70d0dcf7ce0c351757ba76f6c58185a36317f
SIZE (tvheadend-3.9.20140806.tar.gz) = 14897133

View File

@ -1,69 +0,0 @@
--- src/capmt.c.orig 2013-06-02 11:30:50.000000000 +0200
+++ src/capmt.c 2013-06-02 11:35:53.395592208 +0200
@@ -33,10 +33,10 @@
#include <sys/un.h>
#include <netdb.h>
#include <netinet/in.h>
-#include <linux/ioctl.h>
#include <linux/dvb/ca.h>
#include <fcntl.h>
+#include "config.h"
#include "tvheadend.h"
#include "dvb/dvb.h"
#include "tcp.h"
@@ -53,6 +53,12 @@
#include "ffdecsa/FFdecsa.h"
#endif
+#if defined(PLATFORM_LINUX)
+#include <linux/ioctl.h>
+#elif defined(PLATFORM_FREEBSD)
+#include <sys/ioccom.h>
+#endif
+
// ca_pmt_list_management values:
#define CAPMT_LIST_MORE 0x00 // append a 'MORE' CAPMT object the list and start receiving the next object
#define CAPMT_LIST_FIRST 0x01 // clear the list when a 'FIRST' CAPMT object is received, and start receiving the next object
@@ -75,8 +81,10 @@
#define CW_DUMP(buf, len, format, ...) \
printf(format, __VA_ARGS__); int j; for (j = 0; j < len; ++j) printf("%02X ", buf[j]); printf("\n");
+#ifdef PLATFORM_LINUX
#ifdef __GNUC__
#include <features.h>
+#endif
#if __GNUC_PREREQ(4, 3)
#pragma GCC diagnostic ignored "-Warray-bounds"
#endif
@@ -405,7 +413,7 @@
capmt_service_t *ct;
service_t *t;
int ret, bufsize;
- int *request;
+ long *request;
ca_descr_t *ca;
ca_pid_t *cpd;
int process_key, process_next, cai;
@@ -476,10 +484,10 @@
// parsing data
if (capmt->capmt_oscam) {
cai = i;
- request = (int *) &buffer;
+ request = (long *) &buffer;
if (*request == CA_SET_PID) {
cpd = (ca_pid_t *)&buffer[sizeof(int)];
- tvhlog(LOG_DEBUG, "capmt", "CA_SET_PID cai %d req %d (%d %04x)", cai, *request, cpd->index, cpd->pid);
+ tvhlog(LOG_DEBUG, "capmt", "CA_SET_PID cai %d req %ld (%d %04x)", cai, *request, cpd->index, cpd->pid);
if (cpd->index >=0 && cpd->index < MAX_INDEX) {
ca_info[cai][cpd->index][0] = (cpd->pid >> 0) & 0xff;
@@ -490,7 +498,7 @@
tvhlog(LOG_ERR, "capmt", "Invalid index %d in CA_SET_PID (%d) for ca id %d", cpd->index, MAX_INDEX, cai);
} else if (*request == CA_SET_DESCR) {
ca = (ca_descr_t *)&buffer[sizeof(int)];
- tvhlog(LOG_DEBUG, "capmt", "CA_SET_DESCR cai %d req %d par %d idx %d %02x%02x%02x%02x%02x%02x%02x%02x", cai, *request, ca->parity, ca->index, ca->cw[0], ca->cw[1], ca->cw[2], ca->cw[3], ca->cw[4], ca->cw[5], ca->cw[6], ca->cw[7]);
+ tvhlog(LOG_DEBUG, "capmt", "CA_SET_DESCR cai %d req %ld par %d idx %d %02x%02x%02x%02x%02x%02x%02x%02x", cai, *request, ca->parity, ca->index, ca->cw[0], ca->cw[1], ca->cw[2], ca->cw[3], ca->cw[4], ca->cw[5], ca->cw[6], ca->cw[7]);
if (ca->index == -1) // skipping removal request
continue;

View File

@ -1,16 +0,0 @@
--- src/main.c.orig 2013-07-14 13:20:52.000000000 +0200
+++ src/main.c 2013-07-15 08:18:16.497236179 +0200
@@ -901,8 +901,13 @@
snprintf(path, sizeof(path), "/sys/class/%s/device/speed", dev);
if(readlinefromfile(path, l, sizeof(l))) {
+#if defined(PLATFORM_FREEBSD)
+ // Assume USB2.0 on FreeBSD because there are no supported PCI devices
+ return HOSTCONNECTION_USB480;
+#else
// Unable to read speed, assume it's PCI
return HOSTCONNECTION_PCI;
+#endif
} else {
speed = atoi(l);

View File

@ -1,14 +0,0 @@
--- src/rawtsinput.c.orig 2013-04-18 16:23:19.000000000 +0200
+++ src/rawtsinput.c 2013-04-23 13:12:48.224810259 +0200
@@ -276,7 +276,11 @@
slp.tv_sec = d / 1000000;
slp.tv_nsec = (d % 1000000) * 1000;
+#ifdef clock_nanosleep
clock_nanosleep(CLOCK_MONOTONIC, TIMER_ABSTIME, &slp, NULL);
+#else
+ nanosleep(&slp, NULL);
+#endif
didsleep = 1;
}
t->s_pcr_last = pcr;

View File

@ -1,18 +0,0 @@
--- src/trap.c.orig 2013-07-26 18:17:22.000000000 +0200
+++ src/trap.c 2013-09-01 16:07:04.247691694 +0200
@@ -33,6 +33,7 @@
#include <limits.h>
#if ENABLE_EXECINFO
#include <execinfo.h>
+#include <dlfcn.h>
#endif
#include <stdio.h>
#include <stdarg.h>
@@ -47,6 +48,7 @@
#define MAXFRAMES 100
+extern char **environ;
static char line1[200];
static char tmpbuf[1024];
static char libs[1024];

View File

@ -1,11 +0,0 @@
--- src/tvhtime.h.orig 2013-07-26 16:17:22.000000000 +0000
+++ src/tvhtime.h 2014-04-22 12:26:51.000000000 +0000
@@ -18,7 +18,7 @@
*/
#ifndef __TVH_TIME_H__
-#define __TVH_TIME_H_
+#define __TVH_TIME_H__
extern uint32_t tvhtime_update_enabled;
extern uint32_t tvhtime_ntp_enabled;

View File

@ -1,20 +0,0 @@
--- src/v4l.c.orig 2012-11-07 11:46:15.000000000 +0100
+++ src/v4l.c 2012-12-19 21:55:37.554141683 +0100
@@ -458,7 +458,7 @@
"%s: Standard #%d: %016llx %s, frameperiod: %d/%d, %d lines",
path,
standard.index,
- standard.id,
+ (long long unsigned int)standard.id,
standard.name,
standard.frameperiod.numerator,
standard.frameperiod.denominator,
@@ -499,7 +499,7 @@
type,
input.audioset,
input.tuner,
- input.std,
+ (long long unsigned int)input.std,
f & V4L2_IN_ST_NO_POWER ? "[No power] " : "",
f & V4L2_IN_ST_NO_SIGNAL ? "[No signal] " : "",
f & V4L2_IN_ST_NO_COLOR ? "[No color] " : "");

View File

@ -1,20 +0,0 @@
--- support/posix.mk.orig 2013-05-05 14:49:47.000000000 +0200
+++ support/posix.mk 2013-05-05 15:50:33.514989222 +0200
@@ -7,8 +7,8 @@
install: ${PROG} ${MAN}
install -d ${DESTDIR}${bindir}
install ${PROG} ${DESTDIR}${bindir}/tvheadend
- install -d ${DESTDIR}${mandir}
- install ${MAN} ${DESTDIR}${mandir}/tvheadend.1
+ install -d ${DESTDIR}${mandir}/man1
+ install ${MAN} ${DESTDIR}${mandir}/man1/tvheadend.1
for bundle in ${BUNDLES}; do \
mkdir -p ${DESTDIR}${datadir}/tvheadend/$$bundle ;\
@@ -19,5 +19,5 @@
uninstall:
rm -f ${DESTDIR}${bindir}/tvheadend
- rm -f ${DESTDIR}${mandir}/tvheadend.1
+ rm -f ${DESTDIR}${mandir}/man1/tvheadend.1
rm -rf ${DESTDIR}${datadir}/tvheadend

View File

@ -11,33 +11,41 @@
# tvheadend_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable tvheadend.
# tvheadend_user (str): User account to run with.
# tvheadend_group (str): Group to run with.
# tvheadend_group (str): Group to run as.
# tvheadend_flags (str): Custom flags for tvheadend.
. /etc/rc.subr
: ${tvheadend_enable="NO"}
name=tvheadend
rcvar=tvheadend_enable
load_rc_config $name
: ${tvheadend_enable:=NO}
: ${tvheadend_user="%%TVHUSER%%"}
: ${tvheadend_group="%%TVHGROUP%%"}
name=tvheadend
rcvar=tvheadend_enable
pidfile="/var/run/${name}.pid"
confdir="%%PREFIX%%/etc/tvheadend"
logdir="/var/log/tvheadend"
command="%%PREFIX%%/bin/tvheadend"
command_args="-f -p ${pidfile} -u ${tvheadend_user} -g ${tvheadend_group} -c ${confdir}"
command_args="-f -p ${pidfile} -c ${confdir} -l ${logdir}/tvheadend.log -u ${tvheadend_user} -g ${tvheadend_group}"
start_precmd="${name}_prestart"
# TvHeadend looks for EPG Grabber executables 'tv_grab_*' on $PATH, so PATH must include %%PREFIX%%/bin
PATH=/sbin:/bin:/usr/sbin:/usr/bin:%%PREFIX%%/sbin:%%PREFIX%%/bin
tvheadend_prestart()
{
if [ ! -f "${pidfile}" ]; then
/usr/bin/install -o ${tvheadend_user} -g ${tvheadend_group} -m 644 /dev/null ${pidfile}
/usr/bin/install -o ${tvheadend_user} -g ${tvheadend_user} -m 644 /dev/null ${pidfile}
fi
if [ ! -d "${confdir}" ]; then
/usr/bin/install -o ${tvheadend_user} -g ${tvheadend_group} -m 755 -d ${confdir}
/usr/bin/install -o ${tvheadend_user} -g ${tvheadend_user} -m 755 -d ${confdir}
fi
if [ ! -d "${logdir}" ]; then
/usr/bin/install -o ${tvheadend_user} -g ${tvheadend_user} -m 755 -d ${logdir}
fi
}
load_rc_config $name
run_rc_command "$1"

File diff suppressed because it is too large Load Diff