From bbcd4fbe2ee05cdb2e3a62ad2b7549157a1cd950 Mon Sep 17 00:00:00 2001
From: Albert Santoni <albert.santoni@sourcefabric.org>
Date: Fri, 13 Feb 2015 11:32:07 -0500
Subject: [PATCH] Tons of bugfixes for the installer on Debian

* Still need to get pypo working with sysvinit
* Still need to fix this logger.cfg silliness with pypo and
  media_monitor
---
 install                                       | 41 +++++++++++++++----
 installer/lib/requirements-debian-wheezy.apt  |  3 +-
 installer/lib/requirements-ubuntu-precise.apt |  2 +
 installer/lib/requirements-ubuntu-saucy.apt   |  3 ++
 installer/lib/requirements-ubuntu-trusty.apt  |  2 +
 .../media-monitor/bin/airtime-media-monitor   | 18 +++++++-
 .../airtime-media-monitor-init-d              | 27 ++++++++----
 python_apps/media-monitor/setup.py            |  2 +-
 python_apps/pypo/setup.py                     |  2 +-
 9 files changed, 79 insertions(+), 21 deletions(-)
 mode change 100755 => 100644 python_apps/media-monitor/bin/airtime-media-monitor

diff --git a/install b/install
index 247ed4307..5f08b9304 100755
--- a/install
+++ b/install
@@ -100,6 +100,11 @@ function checkCommandExists() {
     set -e
 }
 
+function checkDistro() {
+    distro=$@
+    unameStr=`uname -a`
+    eval echo "${unameStr}" | grep --quiet "${distro}"
+}
 while :; do
     case "$1" in
         --help)
@@ -246,6 +251,27 @@ echo    "/    |    \   ||    |   \ |    |   |   /    Y    \|        \     "
 echo    "\____|__  /___||____|_  / |____|   |___\____|__  /_______  /     "
 echo -e "        \/            \/                       \/        \/    \n"
 
+# Check for the distribution without using lsb_release, which not all distros have installed by default
+if checkDistro "wheezy"; then
+    dist="debian"
+    code="wheezy"
+elif checkDistro "trusty"; then
+    dist="ubuntu"
+    code="trusty"
+elif checkDistro "saucy"; then
+    dist="ubuntu"
+    code="saucy"
+elif checkDistro "precise"; then
+    dist="ubuntu"
+    code="precise"
+elif checkDistro "trusty"; then
+    dist="ubuntu"
+    code="trusty"
+else
+    dist="unknown"
+    code="unknown"
+fi
+
 if [ "$ignore_dependencies" = "f" ]; then
     loud "\n-----------------------------------------------------"
     loud "         * Installing External Dependencies *        "
@@ -253,13 +279,13 @@ if [ "$ignore_dependencies" = "f" ]; then
 
     verbose "\n * Reading requirements-${dist,,}-${code,,}.apt..."
     set +e
+    loudCmd "sudo apt-get update"
     if [ -f ${SCRIPT_DIR}/installer/lib/requirements-${dist,,}-${code,,}.apt ]; then
         loudCmd "DEBIAN_FRONTEND=noninteractive apt-get -y -m --force-yes install $(grep -vE '^\s*#' ${SCRIPT_DIR}/installer/lib/requirements-${dist,,}-${code,,}.apt | tr '\n' ' ')"
     else
         loudCmd "DEBIAN_FRONTEND=noninteractive apt-get -y -m --force-yes install $(grep -vE '^\s*#' ${SCRIPT_DIR}/installer/lib/requirements-ubuntu-trusty.apt | tr '\n' ' ')"
     fi
     set -e
-
 else
     checkCommandExists "apache2"
     checkCommandExists "rabbitmqctl"
@@ -399,19 +425,19 @@ chown -R ${web_user}:${web_user} /run/airtime
 verbose "...Done"
 
 verbose "\n * Installing log writer..."
-loudCmd "python ${AIRTIMEROOT}/python_apps/std_err_override/setup.py install"
+loudCmd "python ${AIRTIMEROOT}/python_apps/std_err_override/setup.py install --install-scripts=/usr/bin"
 verbose "...Done"
 
 verbose "\n * Installing API client..."
-loudCmd "python ${AIRTIMEROOT}/python_apps/api_clients/setup.py install"
+loudCmd "python ${AIRTIMEROOT}/python_apps/api_clients/setup.py install --install-scripts=/usr/bin"
 verbose "...Done"
 
 verbose "\n * Installing media-monitor..."
-loudCmd "python ${AIRTIMEROOT}/python_apps/media-monitor/setup.py install"
+loudCmd "python ${AIRTIMEROOT}/python_apps/media-monitor/setup.py install --install-scripts=/usr/bin"
 verbose "...Done"
 
 verbose "\n * Installing pypo..."
-loudCmd "python ${AIRTIMEROOT}/python_apps/pypo/setup.py install"
+loudCmd "python ${AIRTIMEROOT}/python_apps/pypo/setup.py install --install-scripts=/usr/bin"
 verbose "...Done"
 
 for i in /etc/init/airtime*.template; do
@@ -420,7 +446,7 @@ for i in /etc/init/airtime*.template; do
     mv $i ${i%.template}
 done
 
-loudCmd "initctl reload-configuration"
+#loudCmd "initctl reload-configuration"
 
 if [ ! -d /var/log/airtime ]; then
     loud "\n-----------------------------------------------------"
@@ -530,9 +556,6 @@ if [ "$ignore_dependencies" = "f" ]; then
     loud "                * Installing Locales *               "
     loud "-----------------------------------------------------"
 
-    dist=`lsb_release -is`
-    code=`lsb_release -cs`
-
     set +e
     verbose "\n * Generating locales"
     for i in `ls /usr/share/airtime/locale | grep ".._.."`; do
diff --git a/installer/lib/requirements-debian-wheezy.apt b/installer/lib/requirements-debian-wheezy.apt
index 51658feb2..61de957c6 100644
--- a/installer/lib/requirements-debian-wheezy.apt
+++ b/installer/lib/requirements-debian-wheezy.apt
@@ -52,6 +52,7 @@ coreutils
 
 liquidsoap
 
-silan
 libopus0
 
+sysvinit
+sysvinit-utils
\ No newline at end of file
diff --git a/installer/lib/requirements-ubuntu-precise.apt b/installer/lib/requirements-ubuntu-precise.apt
index a0e36a967..516f98293 100755
--- a/installer/lib/requirements-ubuntu-precise.apt
+++ b/installer/lib/requirements-ubuntu-precise.apt
@@ -68,3 +68,5 @@ liquidsoap-plugin-vorbis
 silan
 libopus0
 
+sysv-init
+sysvinit-utils
\ No newline at end of file
diff --git a/installer/lib/requirements-ubuntu-saucy.apt b/installer/lib/requirements-ubuntu-saucy.apt
index 904b5c3e7..2d513bf95 100644
--- a/installer/lib/requirements-ubuntu-saucy.apt
+++ b/installer/lib/requirements-ubuntu-saucy.apt
@@ -67,3 +67,6 @@ liquidsoap-plugin-vorbis
 
 silan
 libopus0
+
+sysv-init
+sysvinit-utils
\ No newline at end of file
diff --git a/installer/lib/requirements-ubuntu-trusty.apt b/installer/lib/requirements-ubuntu-trusty.apt
index d0e2e0892..88ce5b737 100755
--- a/installer/lib/requirements-ubuntu-trusty.apt
+++ b/installer/lib/requirements-ubuntu-trusty.apt
@@ -67,3 +67,5 @@ liquidsoap-plugin-vorbis
 silan
 libopus0
 
+sysv-init
+sysvinit-utils
\ No newline at end of file
diff --git a/python_apps/media-monitor/bin/airtime-media-monitor b/python_apps/media-monitor/bin/airtime-media-monitor
old mode 100755
new mode 100644
index 00e729178..329ed53fe
--- a/python_apps/media-monitor/bin/airtime-media-monitor
+++ b/python_apps/media-monitor/bin/airtime-media-monitor
@@ -1,3 +1,17 @@
-#!/bin/bash
+#!/usr/bin/python
+import logging
+import locale
+import time
+import sys
+import os
+import mm2.mm2 as mm2
+from std_err_override import LogWriter
+locale.setlocale(locale.LC_ALL, '')
 
-exec python -m media_monitor > /var/log/airtime/media-monitor/py-interpreter.log 2>&1
+def run():
+    global_cfg = '/etc/airtime/airtime.conf'
+    logging_cfg = os.path.join(os.path.dirname(__file__), 'logging.cfg')
+    
+    mm2.main( global_cfg, logging_cfg )
+
+run()
diff --git a/python_apps/media-monitor/media_monitor/airtime-media-monitor-init-d b/python_apps/media-monitor/media_monitor/airtime-media-monitor-init-d
index e74d08baf..a02ec9318 100755
--- a/python_apps/media-monitor/media_monitor/airtime-media-monitor-init-d
+++ b/python_apps/media-monitor/media_monitor/airtime-media-monitor-init-d
@@ -9,12 +9,26 @@
 # Short-Description: Manage airtime-media-monitor daemon
 ### END INIT INFO
 
-USERID=WEB_USER
-GROUPID=WEB_USER
-NAME=Airtime\ Media\ Monitor
+USERID=www-data
+GROUPID=www-data
+NAME=airtime-media-monitor
 
-DAEMON=/usr/lib/airtime/media-monitor/airtime-media-monitor
-PIDFILE=/var/run/airtime/airtime-media-monitor.pid
+DAEMON=/usr/bin/$NAME
+PIDFILE=/var/run/$NAME.pid
+
+# Exit if the package is not installed
+[ -x "$DAEMON" ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+# and status_of_proc is working.
+. /lib/lsb/init-functions
 
 start () {
         start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID \
@@ -48,8 +62,7 @@ case "${1:-''}" in
            echo "Done."
         ;;
   'status')
-           # status commands here
-           /usr/bin/airtime-check-system
+	   status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
         ;;
   *)      # no parameter specified
         echo "Usage: $SELF start|stop|restart|status"
diff --git a/python_apps/media-monitor/setup.py b/python_apps/media-monitor/setup.py
index 4fac8644f..58f46a022 100644
--- a/python_apps/media-monitor/setup.py
+++ b/python_apps/media-monitor/setup.py
@@ -60,5 +60,5 @@ setup(name='airtime-media-monitor',
 # Reload the initctl config so that the media-monitor service works
 if data_files:
     print "Reloading initctl configuration"
-    call(['initctl', 'reload-configuration'])
+    #call(['initctl', 'reload-configuration'])
     print "Run \"sudo service airtime-media-monitor start\""
diff --git a/python_apps/pypo/setup.py b/python_apps/pypo/setup.py
index 2e4a264ae..1be996827 100644
--- a/python_apps/pypo/setup.py
+++ b/python_apps/pypo/setup.py
@@ -64,5 +64,5 @@ setup(name='airtime-playout',
 # Reload the initctl config so that playout services works
 if data_files:
     print "Reloading initctl configuration"
-    call(['initctl', 'reload-configuration'])
+    #call(['initctl', 'reload-configuration'])
     print "Run \"sudo service airtime-playout start\" and \"sudo service airtime-liquidsoap start\""