- 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:
parent
9691f942ac
commit
ede70f8e77
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=365334
1
GIDs
1
GIDs
|
@ -291,5 +291,6 @@ hbase:*:980:
|
|||
uvncrep:*:981:
|
||||
bro:*:982:
|
||||
syncthing:*:983:
|
||||
tvheadend:*:984:
|
||||
nogroup:*:65533:
|
||||
nobody:*:65534:
|
||||
|
|
1
UIDs
1
UIDs
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
@ -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);
|
||||
|
|
@ -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;
|
|
@ -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];
|
|
@ -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;
|
|
@ -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] " : "");
|
|
@ -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
|
|
@ -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
Loading…
Reference in New Issue