diff --git a/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.start b/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.start index 98d6f8a70f..ec3e64dc52 100755 --- a/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.start +++ b/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.start @@ -47,10 +47,6 @@ OSDSkin = sttng MYDATA } -LOCKDIR="/var/lock/" -LOCKFILE="vdr.disabled" -LOCKFILE_SLEEP="vdr.sleep" - ADDON_DIR="$HOME/.xbmc/addons/service.multimedia.vdr-addon" ADDON_HOME="$HOME/.xbmc/userdata/addon_data/service.multimedia.vdr-addon" LOG_FILE="$ADDON_HOME/service.log" @@ -59,6 +55,8 @@ ADDON_SETTINGS="$ADDON_HOME/settings.xml" ADDON_CONFIG_DIR="$ADDON_HOME/config" ADDON_PLUGIN_DIR="$ADDON_DIR/plugin" +chmod a+x $ADDON_DIR/bin/* + if [ ! -f "$ADDON_SETTINGS" ]; then mkdir -p $ADDON_HOME cp $ADDON_DIR/settings-default.xml $ADDON_SETTINGS @@ -92,7 +90,7 @@ VDR_ARG="-g /tmp --no-kbd" if [ "$DEBUG" = "yes" ]; then VDR_ARG="$VDR_ARG --log=3" else - VDR_ARG="$VDR_ARG --log=1" + VDR_ARG="$VDR_ARG --log=3" fi SVDRP_PORT=0 @@ -143,49 +141,32 @@ if [ "$ENABLE_XMLTV2VDR" == "true" ] ; then VDR_ARG="$VDR_ARG -P 'xmltv2vdr --epgfile=$ADDON_CACHE_DIR/epg.db'" fi -( - cd $ADDON_DIR/config - mkdir -p $ADDON_CONFIG_DIR +cd $ADDON_DIR/config +mkdir -p $ADDON_CONFIG_DIR - for dir in `find . -type d`; do - mkdir -p $ADDON_CONFIG_DIR/$dir - done +for dir in `find . -type d`; do + mkdir -p $ADDON_CONFIG_DIR/$dir +done - for config in `find . -type f`; do - if [ ! -f $ADDON_CONFIG_DIR/$config ]; then - cp $config $ADDON_CONFIG_DIR/$config - fi - done -) +for config in `find . -type f`; do + if [ ! -f $ADDON_CONFIG_DIR/$config ]; then + cp $config $ADDON_CONFIG_DIR/$config + fi +done -rm -rf "$LOCKDIR/$LOCKFILE_SLEEP" &>/dev/null -vdr.stop -rm -rf "$LOCKDIR/$LOCKFILE" &>/dev/null - -if [ ! "$(pidof vdr.bin)" ];then - while [ true ] ; do - while [ -f "$LOCKDIR/$LOCKFILE_SLEEP" ] ; do - usleep 100000 - done - if [ -f "$LOCKDIR/$LOCKFILE" ] ; then - umount /var/run/vdr 2>&1 - break - fi - # start userspace DVB driver/addon - for driver_dvb in $(find /storage/.xbmc/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 VDR "### Loading userspace DVB driver: $driver_dvb_name ###" - # use ". " because of variable export - . $driver_dvb - done - # (wait for) at least 1 adapter (xbmc allows to set 0) - [ $NUM_ADAPTERS -lt 1 ] && NUM_ADAPTERS=1 - if [ "$WAIT_FOR_FEINIT" == "true" ] && [ ! -e /dev/dvb/adapter$((NUM_ADAPTERS-1))/frontend* ] ; then - sleep 1 - continue - fi - check_tmpfs_mount - fix_config - LD_LIBRARY_PATH="$ADDON_DIR/lib:$LD_LIBRARY_PATH" eval LANG=en_US.UTF-8 vdr.bin $VDR_ARG &>$LOG_FILE - done & +# start userspace DVB driver/addon +for driver_dvb in $(find /storage/.xbmc/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 VDR "### Loading userspace DVB driver: $driver_dvb_name ###" + # use ". " because of variable export + . $driver_dvb +done +# (wait for) at least 1 adapter (xbmc allows to set 0) +[ $NUM_ADAPTERS -lt 1 ] && NUM_ADAPTERS=1 +if [ "$WAIT_FOR_FEINIT" == "true" ] && [ ! -e /dev/dvb/adapter$((NUM_ADAPTERS-1))/frontend* ] ; then + sleep 1 + continue fi +check_tmpfs_mount +fix_config +eval LANG=en_US.UTF-8 exec vdr.bin $VDR_ARG &>$LOG_FILE diff --git a/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.stop b/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.stop deleted file mode 100755 index 35184f2d46..0000000000 --- a/packages/addons/service/multimedia/vdr-addon/source/bin/vdr.stop +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh - -################################################################################ -# This file is part of OpenELEC - http://www.openelec.tv -# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv) -# -# This Program 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, or (at your option) -# any later version. -# -# This Program 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 OpenELEC.tv; see the file COPYING. If not, write to -# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA. -# http://www.gnu.org/copyleft/gpl.html -################################################################################ - -. /etc/profile - -LOCKDIR="/var/lock/" -LOCKFILE="vdr.disabled" -LOCKFILE_SLEEP="vdr.sleep" - -mkdir -p "$LOCKDIR" -if [ ! -e "$LOCKDIR/$LOCKFILE_SLEEP" ] ; then - touch "$LOCKDIR/$LOCKFILE" -fi - -if [ "$(pidof vdr.bin)" ] ; then - killall -q vdr.bin - for seq in `seq 1 10` ; do - if [ ! "$(pidof vdr.bin)" ] ; then - break - fi - usleep 200000 - done - killall -q -9 vdr.bin -fi diff --git a/packages/addons/service/multimedia/vdr-addon/source/default.py b/packages/addons/service/multimedia/vdr-addon/source/default.py index 6e715e810b..6f814651a2 100644 --- a/packages/addons/service/multimedia/vdr-addon/source/default.py +++ b/packages/addons/service/multimedia/vdr-addon/source/default.py @@ -17,27 +17,3 @@ # the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA. # http://www.gnu.org/copyleft/gpl.html ################################################################################ - -import os -import sys -import xbmcaddon -import time -import subprocess - -__scriptname__ = "VDR Service" -__author__ = "OpenELEC" -__url__ = "http://www.openelec.tv" -__settings__ = xbmcaddon.Addon(id='service.multimedia.vdr-addon') -__cwd__ = __settings__.getAddonInfo('path') -__start__ = xbmc.translatePath( os.path.join( __cwd__, 'bin', "vdr.start") ) -__stop__ = xbmc.translatePath( os.path.join( __cwd__, 'bin', "vdr.stop") ) - -#make binary files executable in adson bin folder -subprocess.Popen("chmod -R +x " + __cwd__ + "/bin/*" , shell=True, close_fds=True) - -subprocess.Popen(__start__, shell=True, close_fds=True) - -while (not xbmc.abortRequested): - time.sleep(0.250) - -subprocess.Popen(__stop__, shell=True, close_fds=True) diff --git a/packages/addons/service/multimedia/vdr-addon/source/sleep.d/vdr.power b/packages/addons/service/multimedia/vdr-addon/source/sleep.d/vdr.power index d53e1e35e2..4e568ed86a 100644 --- a/packages/addons/service/multimedia/vdr-addon/source/sleep.d/vdr.power +++ b/packages/addons/service/multimedia/vdr-addon/source/sleep.d/vdr.power @@ -22,36 +22,28 @@ . /etc/profile +SERVICE="service.multimedia.vdr-addon.service" ADDON_HOME="$HOME/.xbmc/userdata/addon_data/service.multimedia.vdr-addon" -ADDON_CONFIG_DIR="$ADDON_HOME/config" ADDON_SETTINGS="$ADDON_HOME/settings.xml" REMOVE_MODULES=`grep REMOVE_MODULES $ADDON_SETTINGS | sed 's|.*value="\([^"]*\)".*|\1|g'` -LOCKFILE_SLEEP="/var/lock/vdr.sleep" - ADDON_DIR="$HOME/.xbmc/addons/service.multimedia.vdr-addon" case "$1" in - hibernate|suspend|pre) - if [ "$(pidof vdr.bin)" ];then - progress "Shutting down vdr for suspending..." - touch $LOCKFILE_SLEEP - vdr.stop + pre) + if systemctl is-active "$SERVICE" &>/dev/null ; then + systemctl stop "$SERVICE" for module in $REMOVE_MODULES ; do rmmod -w $module done fi ;; - thaw|resume|post) - if [ -f "$LOCKFILE_SLEEP" ] ; then - progress "Restarting vdr for wakeup..." + post) + if systemctl is-enabled "$SERVICE" &>/dev/null ; then for module in $REMOVE_MODULES ; do modprobe $module done - rm -rf "$LOCKFILE_SLEEP" + systemctl start "$SERVICE" fi ;; - *) exit $NA - ;; esac - diff --git a/packages/addons/service/multimedia/vdr-addon/source/system.d/service.multimedia.vdr-addon.service b/packages/addons/service/multimedia/vdr-addon/source/system.d/service.multimedia.vdr-addon.service new file mode 100644 index 0000000000..1d4e6ef63e --- /dev/null +++ b/packages/addons/service/multimedia/vdr-addon/source/system.d/service.multimedia.vdr-addon.service @@ -0,0 +1,13 @@ +[Unit] +Description=vdr +After=graphical.target + +[Service] +ExecStart=/bin/sh -c "exec sh /storage/.xbmc/addons/service.multimedia.vdr-addon/bin/vdr.start" +TimeoutStopSec=2 +Restart=always +RestartSec=2 +StartLimitInterval=0 + +[Install] +WantedBy=xbmc.target