diff --git a/bin/copy_binaries_to_deploy.sh b/bin/copy_binaries_to_deploy.sh index f81ebbed..c2783c0c 100755 --- a/bin/copy_binaries_to_deploy.sh +++ b/bin/copy_binaries_to_deploy.sh @@ -18,10 +18,12 @@ tar --create --verbose --gzip --absolute-names --show-transformed-names \ --transform "s:$builddir/bin/:hyperion/bin/:" \ --transform "s:$repodir/effects/:hyperion/effects/:" \ --transform "s:$repodir/config/:hyperion/config/:" \ + --transform "s:$repodir/bin/hyperion.init.sh:hyperion/init.d/hyperion.init.sh:" \ --transform "s://:/:g" \ "$builddir/bin/hyperiond" \ "$builddir/bin/hyperion-remote" \ "$builddir/bin/gpio2spi" \ "$builddir/bin/dispmanx2png" \ "$repodir/effects/"* \ + "$repodir/bin/hyperion.init.sh" \ "$repodir/config/hyperion.config.json" diff --git a/bin/hyperion.init.sh b/bin/hyperion.init.sh new file mode 100644 index 00000000..50e7d7f8 --- /dev/null +++ b/bin/hyperion.init.sh @@ -0,0 +1,62 @@ +#!/bin/bash +# Hyperion daemon +# description: Hyperion daemon +# processname: hyperiond + +DAEMON=hyperiond +DAEMONOPTS="/etc/hyperion.config.json" +DAEMON_PATH="/usr/bin" + +NAME=$DEAMON +DESC="Hyperion ambilight server" +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +case "$1" in +start) + printf "%-50s" "Starting $NAME..." + cd $DAEMON_PATH + PID=`$DAEMON $DAEMONOPTS > /dev/null 2>&1 & echo $!` + #echo "Saving PID" $PID " to " $PIDFILE + if [ -z $PID ]; then + printf "%s\n" "Fail" + else + echo $PID > $PIDFILE + printf "%s\n" "Ok" + fi +;; +status) + printf "%-50s" "Checking $NAME..." + if [ -f $PIDFILE ]; then + PID=`cat $PIDFILE` + if [ -z "`ps axf | grep ${PID} | grep -v grep`" ]; then + printf "%s\n" "Process dead but pidfile exists" + else + echo "Running" + fi + else + printf "%s\n" "Service not running" + fi +;; +stop) + printf "%-50s" "Stopping $NAME" + PID=`cat $PIDFILE` + cd $DAEMON_PATH + if [ -f $PIDFILE ]; then + kill -HUP $PID + printf "%s\n" "Ok" + rm -f $PIDFILE + else + printf "%s\n" "pidfile not found" + fi +;; + +restart) + $0 stop + $0 start +;; + +*) + echo "Usage: $0 {status|start|stop|restart}" + exit 1 +esac diff --git a/bin/install_hyperion.sh b/bin/install_hyperion.sh index 09ecb6c5..5ec9a2a0 100755 --- a/bin/install_hyperion.sh +++ b/bin/install_hyperion.sh @@ -1,12 +1,21 @@ #!/bin/sh +# Make sure /sbin is on the path (for service to find sub scripts) +PATH="/sbin:$PATH" + # Script for downloading and installing the latest Hyperion release -# Find out if we are on XBian +# Find out if we are on Raspbmc IS_XBIAN=`cat /etc/issue | grep XBian | wc -l` +IS_RASPBMC=`cat /etc/issue | grep Raspbmc | wc -l` +IS_OPENELEC=`cat /etc/issue | grep -m 1 OpenELEC | wc -l` + +# check which init script we should use +USE_INITCTL=`which /sbin/initctl | wc -l` +USE_SERVICE=`which /usr/sbin/service | wc -l` # Make sure that the boblight daemon is no longer running -BOBLIGHT_PROCNR=$(ps -e | grep "boblight" | wc -l) +BOBLIGHT_PROCNR=$(pidof boblightd | wc -l) if [ $BOBLIGHT_PROCNR -eq 1 ]; then echo 'Found running instance of boblight. Please stop boblight via XBMC menu before installing hyperion' @@ -14,29 +23,73 @@ then fi # Stop hyperion daemon if it is running -/sbin/initctl stop hyperion +# Start the hyperion daemon +if [ $USE_INITCTL -eq 1 ]; then + /sbin/initctl stop hyperion +elif [ $USE_SERVICE -eq 1 ]; then + /usr/sbin/service hyperion stop +fi -# Get and extract the Hyperion binaries and effects to /opt -wget https://raw.github.com/tvdzwan/hyperion/master/deploy/hyperion.tar.gz -O - | tar -C /opt -xz +# Get and extract the Hyperion binaries and effects +echo 'Downloading hyperion' +if [ $IS_OPENELEC -eq 1 ]; then + # OpenELEC has a readonly file system. Use alternative location + curl --get https://raw.github.com/tvdzwan/hyperion/master/deploy/hyperion.tar.gz | tar -C /storage -xz + curl --get https://raw.github.com/tvdzwan/hyperion/master/deploy/hyperion.deps.openelec-rpi.tar.gz | tar -C /storage/hyperion/bin -xz + + # modify the default config to have a correct effect path + sed -i 's:/opt:/storage:g' /storage/hyperion/config/hyperion.config.json +else + wget https://raw.github.com/tvdzwan/hyperion/master/deploy/hyperion.tar.gz -O - | tar -C /opt -xz +fi # create links to the binaries -ln -fs /opt/hyperion/bin/hyperiond /usr/bin/hyperiond -ln -fs /opt/hyperion/bin/hyperion-remote /usr/bin/hyperion-remote +if [ $IS_OPENELEC -ne 1 ]; then + ln -fs /opt/hyperion/bin/hyperiond /usr/bin/hyperiond + ln -fs /opt/hyperion/bin/hyperion-remote /usr/bin/hyperion-remote +fi # create link to the gpio changer (gpio->spi) -if [ $IS_XBIAN -eq 0 ]; then +if [ $IS_RASPBMC -eq 1 ]; then ln -fs /opt/hyperion/bin/gpio2spi /usr/bin/gpio2spi fi # Copy a link to the hyperion configuration file to /etc -ln -s /opt/hyperion/config/hyperion.config.json /etc/hyperion.config.json +if [ $IS_OPENELEC -eq 1 ]; then + # copy to alternate location, because of readonly file system + # /storage/.config is available as samba share. A symbolic link would not be working + false | cp -i /storage/hyperion/config/hyperion.config.json /storage/.config/hyperion.config.json 2>/dev/null +else + ln -s /opt/hyperion/config/hyperion.config.json /etc/hyperion.config.json +fi + # Copy the service control configuration to /etc/int -if [ $IS_XBIAN -eq 0 ]; then - wget -N https://raw.github.com/tvdzwan/hyperion/master/deploy/hyperion.conf -P /etc/init/ -else - wget -N https://raw.github.com/tvdzwan/hyperion/master/deploy/hyperion.xbian.conf -O /etc/init/hyperion.conf +if [ $USE_INITCTL -eq 1 ]; then + echo 'Installing initctl script' + if [ $IS_RASPBMC -eq 1 ]; then + wget -N https://raw.github.com/tvdzwan/hyperion/master/deploy/hyperion.conf -P /etc/init/ + else + wget -N https://raw.github.com/tvdzwan/hyperion/master/deploy/hyperion.xbian.conf -O /etc/init/hyperion.conf + fi +elif [ $USE_SERVICE -eq 1 ]; then + echo 'Installing startup script in init.d' + # place startup script in init.d and add it to upstart + ln -fs /opt/hyperion/init.d/hyperion.init.sh /etc/init.d/hyperion + chmod +x /etc/init.d/hyperion + update-rc.d hyperion defaults 98 02 +elif [ $IS_OPENELEC -eq 1 ]; then + # only add to start script if hyperion is not present yet + if [ `cat /storage/.config/autostart.sh 2>/dev/null | grep hyperiond | wc -l` -eq 0 ]; then + echo 'Adding Hyperion to autostart script' + echo "/storage/hyperion/bin/hyperiond.sh /storage/.config/hyperion.config.json > /dev/null 2>&1 &" >> /storage/.config/autostart.sh + chmod +x /storage/.config/autostart.sh + fi fi # Start the hyperion daemon -/sbin/initctl start hyperion +if [ $USE_INITCTL -eq 1 ]; then + /sbin/initctl start hyperion +elif [ $USE_SERVICE -eq 1 ]; then + /usr/sbin/service hyperion start +fi diff --git a/deploy/hyperion.deps.openelec-rpi.tar.gz.REMOVED.git-id b/deploy/hyperion.deps.openelec-rpi.tar.gz.REMOVED.git-id new file mode 100644 index 00000000..9fe8e9cc --- /dev/null +++ b/deploy/hyperion.deps.openelec-rpi.tar.gz.REMOVED.git-id @@ -0,0 +1 @@ +4d50c38a61c9f32a15b29ef3b3953c2835fa9cac \ No newline at end of file diff --git a/deploy/hyperion.tar.gz b/deploy/hyperion.tar.gz deleted file mode 100644 index 39e9e46b..00000000 Binary files a/deploy/hyperion.tar.gz and /dev/null differ diff --git a/deploy/hyperion.tar.gz.REMOVED.git-id b/deploy/hyperion.tar.gz.REMOVED.git-id new file mode 100644 index 00000000..be713fa4 --- /dev/null +++ b/deploy/hyperion.tar.gz.REMOVED.git-id @@ -0,0 +1 @@ +56066aa4faf396198264beccf090b9551b8359d4 \ No newline at end of file