mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-30 22:26:42 +00:00
vdr-addon: convert to systemd service
This commit is contained in:
parent
ef978ab363
commit
c7db0b442b
@ -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
|
||||
|
@ -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
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
Loading…
x
Reference in New Issue
Block a user