From 598fc8723e00cbf20996cb2e85556fb748c1b9fc Mon Sep 17 00:00:00 2001 From: CvH Date: Thu, 24 Mar 2016 22:30:11 +0100 Subject: [PATCH] addons: add Tvheadend 4.2 - reworked settings - this is a pre version of Tvheadend 4.2 because it is not branched yet --- .../addons/service/tvheadend42/changelog.txt | 2 + .../addons/service/tvheadend42/icon/icon.png | Bin 0 -> 50992 bytes .../addons/service/tvheadend42/package.mk | 86 ++++++++++++++ .../tvheadend42/source/bin/tv_grab_file | 40 +++++++ .../tvheadend42/source/bin/tvheadend42.start | 107 ++++++++++++++++++ .../service/tvheadend42/source/default.py | 17 +++ .../tvheadend42/source/defaults/config | 12 ++ .../config/8d0f5b7ae354d956d7fe5db25f5d0d24 | 15 +++ .../source/defaults/epggrab/config | 16 +++ .../source/defaults/timeshift/config | 9 ++ .../tvheadend42/source/defaults/xmltv/config | 14 +++ .../resources/language/English/strings.xml | 18 +++ .../tvheadend42/source/resources/settings.xml | 22 ++++ .../tvheadend42/source/settings-default.xml | 10 ++ .../source/sleep.d/tvheadend.power | 44 +++++++ .../system.d/service.tvheadend42.service | 14 +++ 16 files changed, 426 insertions(+) create mode 100644 packages/addons/service/tvheadend42/changelog.txt create mode 100644 packages/addons/service/tvheadend42/icon/icon.png create mode 100644 packages/addons/service/tvheadend42/package.mk create mode 100755 packages/addons/service/tvheadend42/source/bin/tv_grab_file create mode 100755 packages/addons/service/tvheadend42/source/bin/tvheadend42.start create mode 100644 packages/addons/service/tvheadend42/source/default.py create mode 100644 packages/addons/service/tvheadend42/source/defaults/config create mode 100644 packages/addons/service/tvheadend42/source/defaults/dvr/config/8d0f5b7ae354d956d7fe5db25f5d0d24 create mode 100644 packages/addons/service/tvheadend42/source/defaults/epggrab/config create mode 100644 packages/addons/service/tvheadend42/source/defaults/timeshift/config create mode 100644 packages/addons/service/tvheadend42/source/defaults/xmltv/config create mode 100644 packages/addons/service/tvheadend42/source/resources/language/English/strings.xml create mode 100644 packages/addons/service/tvheadend42/source/resources/settings.xml create mode 100644 packages/addons/service/tvheadend42/source/settings-default.xml create mode 100755 packages/addons/service/tvheadend42/source/sleep.d/tvheadend.power create mode 100644 packages/addons/service/tvheadend42/source/system.d/service.tvheadend42.service diff --git a/packages/addons/service/tvheadend42/changelog.txt b/packages/addons/service/tvheadend42/changelog.txt new file mode 100644 index 0000000000..2907dab344 --- /dev/null +++ b/packages/addons/service/tvheadend42/changelog.txt @@ -0,0 +1,2 @@ +7.0.100 +- initial LibreELEC version \ No newline at end of file diff --git a/packages/addons/service/tvheadend42/icon/icon.png b/packages/addons/service/tvheadend42/icon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..846eb14b182e9e62d5cc94029fe31b47b6635d3e GIT binary patch literal 50992 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 ~sk*<%OUi%Iiu1ZduX$_Ls|-9}>#33Ewi4>N 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

WTm6wm5II&PJr5v~0OGDa3 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 k73N~1BqqH3S. +################################################################################ + +PKG_NAME="tvheadend42" +PKG_VERSION="a4afbee" +PKG_VERSION_NUMBER="4.1.1832" +PKG_REV="100" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://www.tvheadend.org" +PKG_URL="https://github.com/tvheadend/tvheadend/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="tvheadend-${PKG_VERSION}*" +PKG_DEPENDS_TARGET="toolchain curl libdvbcsa libiconv libressl Python:host yasm" +PKG_PRIORITY="optional" +PKG_SECTION="service" +PKG_SHORTDESC="Tvheadend: a TV streaming server for Linux" +PKG_LONGDESC="Tvheadend($PKG_VERSION_NUMBER): is a TV streaming server for Linux supporting DVB-S/S2, DVB-C, DVB-T/T2, IPTV, SAT>IP, ATSC and ISDB-T" + +PKG_IS_ADDON="yes" +PKG_ADDON_NAME="Tvheadend 4.2" +PKG_ADDON_TYPE="xbmc.service" +PKG_AUTORECONF="no" +PKG_ADDON_REPOVERSION="7.0" + +PKG_CONFIGURE_OPTS_TARGET="--prefix=/usr \ + --arch=$TARGET_ARCH \ + --cpu=$TARGET_CPU \ + --cc=$TARGET_CC \ + --disable-avahi \ + --enable-bundle \ + --disable-dbus_1 \ + --enable-dvbcsa \ + --disable-dvben50221 \ + --enable-hdhomerun_client \ + --enable-hdhomerun_static \ + --enable-epoll \ + --enable-inotify \ + --disable-nvenc \ + --disable-uriparser \ + --disable-libav \ + --disable-ffmpeg_static \ + --enable-tvhcsa \ + --nowerror \ + --python=$ROOT/$TOOLCHAIN/bin/python" + +post_unpack() { + sed -e 's/VER="0.0.0~unknown"/VER="'$PKG_VERSION_NUMBER' ~ LibreELEC Tvh-addon v'$PKG_ADDON_REPOVERSION'.'$PKG_REV'"/g' -i $PKG_BUILD/support/version +} + +pre_configure_target() { +# fails to build in subdirs + cd $ROOT/$PKG_BUILD + rm -rf .$TARGET_NAME + + export CROSS_COMPILE=$TARGET_PREFIX + export CFLAGS="$CFLAGS -I$SYSROOT_PREFIX/usr/include/iconv -L$SYSROOT_PREFIX/usr/lib/iconv" +} + +post_make_target() { + $CC -O -fbuiltin -fomit-frame-pointer -fPIC -shared -o capmt_ca.so src/extra/capmt_ca.c -ldl +} + +makeinstall_target() { + : # nothing to do here +} + +addon() { + mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $PKG_BUILD/build.linux/tvheadend $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $PKG_BUILD/capmt_ca.so $ADDON_BUILD/$PKG_ADDON_ID/bin +} diff --git a/packages/addons/service/tvheadend42/source/bin/tv_grab_file b/packages/addons/service/tvheadend42/source/bin/tv_grab_file new file mode 100755 index 0000000000..68f466879c --- /dev/null +++ b/packages/addons/service/tvheadend42/source/bin/tv_grab_file @@ -0,0 +1,40 @@ +#!/bin/sh + +################################################################################ +# This file is part of LibreELEC - https://LibreELEC.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +. /etc/profile + +ADDON_HOME="$HOME/.kodi/userdata/addon_data/service.tvheadend42" +ADDON_SETTINGS="$ADDON_HOME/settings.xml" +XMLTV_TYPE=`grep XMLTV_TYPE $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"` +XMLTV_LOCATION_FILE=`grep XMLTV_LOCATION_FILE $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"` +XMLTV_LOCATION_WEB=`grep XMLTV_LOCATION_WEB $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"` +XMLTV_LOCATION_SCRIPT=`grep XMLTV_LOCATION_SCRIPT $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"` + +if [ "$XMLTV_TYPE" = "FILE" ]; then + cat "$XMLTV_LOCATION_FILE" + exit 0 +elif [ "$XMLTV_TYPE" = "SCRIPT" ]; then + if [ -e "$XMLTV_LOCATION_SCRIPT" ] ; then + exec "$XMLTV_LOCATION_SCRIPT" + fi +elif [ "$XMLTV_TYPE" = "WEB" ]; then + wget -qO - "$XMLTV_LOCATION_WEB" + exit 0 +fi diff --git a/packages/addons/service/tvheadend42/source/bin/tvheadend42.start b/packages/addons/service/tvheadend42/source/bin/tvheadend42.start new file mode 100755 index 0000000000..5a5067c04b --- /dev/null +++ b/packages/addons/service/tvheadend42/source/bin/tvheadend42.start @@ -0,0 +1,107 @@ +#!/bin/sh + +################################################################################ +# This file is part of LibreELEC - https://LibreELEC.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +. /etc/profile + +oe_setup_addon service.tvheadend42 + +ADDON_SETTINGS="$ADDON_HOME/settings.xml" + +DVR_SETTINGS_DIR="$ADDON_HOME/dvr/config" +DVR_SETTINGS_FILE="$DVR_SETTINGS_DIR/8d0f5b7ae354d956d7fe5db25f5d0d24" + +EPGGRAB_SETTINGS_DIR="$ADDON_HOME/epggrab" +EPGGRAB_SETTINGS_FILE="$EPGGRAB_SETTINGS_DIR/config" + +TIMESHIFT_SETTINGS_DIR="$ADDON_HOME/timeshift" +TIMESHIFT_SETTINGS_FILE="$TIMESHIFT_SETTINGS_DIR/config" + +TVH_SETTINGS_DIR="$ADDON_HOME" +TVH_SETTINGS_FILE="$TVH_SETTINGS_DIR/config" + +XMLTV_SETTINGS_DIR="$ADDON_HOME/xmltv" +XMLTV_SETTINGS_FILE="$XMLTV_SETTINGS_DIR/config" + +TIMESHIFT_DIR="$ADDON_HOME/cache/timeshift" +XMLTV_FILE="$ADDON_DIR/bin/tv_grab_file" + +chmod a+x $ADDON_DIR/bin/* + +# copy config files to userdata +if [ ! -f "$DVR_SETTINGS_FILE" ]; then + mkdir -p $DVR_SETTINGS_DIR + cp $ADDON_DIR/defaults/dvr/config/8d0f5b7ae354d956d7fe5db25f5d0d24 $DVR_SETTINGS_FILE +fi + +if [ ! -f "$EPGGRAB_SETTINGS_FILE" ]; then + mkdir -p $EPGGRAB_SETTINGS_DIR + cp $ADDON_DIR/defaults/epggrab/config $EPGGRAB_SETTINGS_FILE +fi + +if [ ! -f "$TIMESHIFT_SETTINGS_FILE" ]; then + mkdir -p $TIMESHIFT_DIR + mkdir -p $TIMESHIFT_SETTINGS_DIR + cp $ADDON_DIR/defaults/timeshift/config $TIMESHIFT_SETTINGS_FILE +fi + +if [ ! -f "$TVH_SETTINGS_FILE" ]; then + mkdir -p $TVH_SETTINGS_DIR + cp $ADDON_DIR/defaults/config $TVH_SETTINGS_FILE +fi + +if [ ! -f "$XMLTV_SETTINGS_FILE" ]; then + mkdir -p $XMLTV_SETTINGS_DIR + cp $ADDON_DIR/defaults/xmltv/config $XMLTV_SETTINGS_FILE +fi + +# options +if [ "$WORKAROUND_SLEEP" == "true" ] ; then + sleep $WORKAROUND_SLEEP_TIME +fi + +if [ "$DEBUG" = "yes" ]; then + TVHEADEND_ARG="-B -C -s -u root -g video -c $ADDON_HOME" +else + TVHEADEND_ARG="-B -C -u root -g video -c $ADDON_HOME" +fi + +# start userspace DVB driver/addon +for driver_dvb in $(find /storage/.kodi/addons/driver.dvb.*/bin/userspace-driver.sh -type f 2>/dev/null); do + driver_dvb_name=$(echo $driver_dvb | awk 'BEGIN {FS="/"} {printf("%s", $5)}') + logger -t Tvheadend "### Loading userspace DVB driver: $driver_dvb_name ###" + # use ". " because of variable export + . $driver_dvb +done + +if [ "$WAIT_FOR_FEINIT" == "true" ] ; then + while [ true ] ; do + if [ -e /dev/dvb/adapter$((NUM_ADAPTERS-1))/frontend0 ] ; then + break + fi + sleep 1 + done +fi + +if [ "$PRELOAD_CAPMT_CA" == "true" ] ; then + logger -t Tvheadend "### Preloading capmt_ca.so library ###" + LD_PRELOAD="$ADDON_DIR/bin/capmt_ca.so $LD_PRELOAD" exec $ADDON_DIR/bin/tvheadend $TVHEADEND_ARG &>$ADDON_LOG_FILE +else + exec $ADDON_DIR/bin/tvheadend $TVHEADEND_ARG &>$ADDON_LOG_FILE +fi diff --git a/packages/addons/service/tvheadend42/source/default.py b/packages/addons/service/tvheadend42/source/default.py new file mode 100644 index 0000000000..c6dfcce9f2 --- /dev/null +++ b/packages/addons/service/tvheadend42/source/default.py @@ -0,0 +1,17 @@ +################################################################################ +# This file is part of LibreELEC - https://LibreELEC.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ diff --git a/packages/addons/service/tvheadend42/source/defaults/config b/packages/addons/service/tvheadend42/source/defaults/config new file mode 100644 index 0000000000..4d6fa4c747 --- /dev/null +++ b/packages/addons/service/tvheadend42/source/defaults/config @@ -0,0 +1,12 @@ +{ + "uilevel": 1, + "uilevel_nochange": false, + "ui_quicktips": true, + "cookie_expires": 14, + "epg_compress": true, + "prefer_picon": true, + "chiconpath": "file:///storage/picons/tvh/%C.png", + "chiconscheme": 2, + "piconpath": "file:///storage/picons/vdr/", + "piconscheme": 1 +} diff --git a/packages/addons/service/tvheadend42/source/defaults/dvr/config/8d0f5b7ae354d956d7fe5db25f5d0d24 b/packages/addons/service/tvheadend42/source/defaults/dvr/config/8d0f5b7ae354d956d7fe5db25f5d0d24 new file mode 100644 index 0000000000..26b820aaa4 --- /dev/null +++ b/packages/addons/service/tvheadend42/source/defaults/dvr/config/8d0f5b7ae354d956d7fe5db25f5d0d24 @@ -0,0 +1,15 @@ +{ + "storage": "/storage/recordings", + "retention-days": 31, + "pre-extra-time": 0, + "post-extra-time": 0, + "day-dir": 0, + "channel-dir": 0, + "channel-in-title": 0, + "date-in-title": 0, + "time-in-title": 0, + "whitespace-in-title": 0, + "title-dir": 0, + "episode-in-title": 0, + "tag-files": 1 +} diff --git a/packages/addons/service/tvheadend42/source/defaults/epggrab/config b/packages/addons/service/tvheadend42/source/defaults/epggrab/config new file mode 100644 index 0000000000..35c5f70d5e --- /dev/null +++ b/packages/addons/service/tvheadend42/source/defaults/epggrab/config @@ -0,0 +1,16 @@ +{ + "channel_rename": true, + "channel_renumber": false, + "channel_reicon": false, + "epgdb_periodicsave": 2, + "ota_initial": true, + "modules": { + "eit": { + "class": "epggrab_mod_ota", + "name": "EIT: DVB Grabber", + "type": "Over-the-air", + "enabled": true, + "priority": 1 + } + } +} diff --git a/packages/addons/service/tvheadend42/source/defaults/timeshift/config b/packages/addons/service/tvheadend42/source/defaults/timeshift/config new file mode 100644 index 0000000000..1ac8f3f116 --- /dev/null +++ b/packages/addons/service/tvheadend42/source/defaults/timeshift/config @@ -0,0 +1,9 @@ +{ + "enabled": 0, + "ondemand": 0, + "path": "/storage/.kodi/userdata/addon_data/service.tvheadend42/cache/timeshift", + "unlimited_period": 0, + "max_period": 3600, + "unlimited_size": 0, + "max_size": 3072 +} diff --git a/packages/addons/service/tvheadend42/source/defaults/xmltv/config b/packages/addons/service/tvheadend42/source/defaults/xmltv/config new file mode 100644 index 0000000000..8093bd3531 --- /dev/null +++ b/packages/addons/service/tvheadend42/source/defaults/xmltv/config @@ -0,0 +1,14 @@ +{ + "grabbers": [ + { + "path": "/storage/.kodi/addons/service.tvheadend42/bin/tv_grab_file", + "description": "tv_grag_file is a simple grabber that just read the ~/.xmltv/tv_grab_file.xmltv file", + "version": "0.1\n", + "mtime": 1318774706, + "capabilities": 1 + } + ], + "grab-interval": 12, + "grab-enabled": 1, + "current-grabber": "/storage/.kodi/addons/service.tvheadend42/bin/tv_grab_file" +} diff --git a/packages/addons/service/tvheadend42/source/resources/language/English/strings.xml b/packages/addons/service/tvheadend42/source/resources/language/English/strings.xml new file mode 100644 index 0000000000..fc94d15dfd --- /dev/null +++ b/packages/addons/service/tvheadend42/source/resources/language/English/strings.xml @@ -0,0 +1,18 @@ + + + + XMLTV + DVB + XMLTV configuration + XMLTV source type + XMLTV File location + XMLTV Web location + XMLTV Script location + DVB Configuration + Unload DVB mudules before suspend + Wait for frontend initialization + Number of adapters to wait for + Preload capmt_ca.so library + Delay the start of Tvheadend + time (s) + diff --git a/packages/addons/service/tvheadend42/source/resources/settings.xml b/packages/addons/service/tvheadend42/source/resources/settings.xml new file mode 100644 index 0000000000..6f6ddc37b4 --- /dev/null +++ b/packages/addons/service/tvheadend42/source/resources/settings.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/addons/service/tvheadend42/source/settings-default.xml b/packages/addons/service/tvheadend42/source/settings-default.xml new file mode 100644 index 0000000000..0f47b8e232 --- /dev/null +++ b/packages/addons/service/tvheadend42/source/settings-default.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/packages/addons/service/tvheadend42/source/sleep.d/tvheadend.power b/packages/addons/service/tvheadend42/source/sleep.d/tvheadend.power new file mode 100755 index 0000000000..ca66f083ff --- /dev/null +++ b/packages/addons/service/tvheadend42/source/sleep.d/tvheadend.power @@ -0,0 +1,44 @@ +#!/bin/sh + +################################################################################ +# This file is part of LibreELEC - https://LibreELEC.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +. /etc/profile + +oe_setup_addon service.tvheadend42 + +SERVICE="service.tvheadend42" + +case "$1" in + pre) + if systemctl is-active "$SERVICE" &>/dev/null ; then + systemctl stop "$SERVICE" + for module in $REMOVE_MODULES ; do + rmmod $module + done + fi + ;; + post) + if systemctl is-enabled "$SERVICE" &>/dev/null ; then + for module in $REMOVE_MODULES ; do + modprobe $module + done + systemctl start "$SERVICE" + fi + ;; +esac diff --git a/packages/addons/service/tvheadend42/source/system.d/service.tvheadend42.service b/packages/addons/service/tvheadend42/source/system.d/service.tvheadend42.service new file mode 100644 index 0000000000..e92c783ee8 --- /dev/null +++ b/packages/addons/service/tvheadend42/source/system.d/service.tvheadend42.service @@ -0,0 +1,14 @@ +[Unit] +Description=TVHeadend42 Service +After=network-online.service +Requires=network-online.service + +[Service] +ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/service.tvheadend42/bin/tvheadend42.start" +TimeoutStopSec=2 +Restart=always +RestartSec=2 +StartLimitInterval=0 + +[Install] +WantedBy=kodi.target