From 6bc3a1cfba4dd420dac286fe75311c74cae1cdaf Mon Sep 17 00:00:00 2001 From: Duncan Sommerville Date: Fri, 19 Dec 2014 09:47:54 -0500 Subject: [PATCH] More work on switching pypo to use setuptools, added lxc-bootstrap script for ease of testing across distros --- installer/install | 32 +++++++++++++++------ installer/lxc-bootstrap | 59 +++++++++++++++++++++++++++++++++++++++ python_apps/pypo/setup.py | 4 +-- 3 files changed, 84 insertions(+), 11 deletions(-) create mode 100755 installer/lxc-bootstrap diff --git a/installer/install b/installer/install index 88ea57ca1..506ec8cbb 100755 --- a/installer/install +++ b/installer/install @@ -311,19 +311,29 @@ if [ "$icecast" = "t" ]; then set -e fi +# Do we want to prompt the user here? loud "\n-----------------------------------------------------" loud " * Installing Airtime Services * " loud "-----------------------------------------------------" +verbose "\n * Installing liquidsoap, python, and virtualenv..." loudCmd "apt-get -y --force-yes install liquidsoap python python-virtualenv" +verbose "...Done" + +# DS, 19/12/14 -- I don't really like this script... should we rewrite it, +# or maybe see if we can get rid of virtualenv entirely? + +verbose "\n * Activating Airtime virtualenv..." loudCmd "$AIRTIMEROOT/python_apps/python-virtualenv/virtualenv-install.sh" +. /usr/lib/airtime/airtime_virtualenv/bin/activate +verbose "...Done" verbose "\n * Creating /usr/lib/airtime..." mkdir -p /usr/lib/airtime verbose "...Done" -verbose "\n * Creating /usr/lib/airtime..." +verbose "\n * Creating /run/airtime..." mkdir -p /run/airtime chmod 755 /run/airtime chown -R ${web_user}:${web_user} /run/airtime @@ -342,6 +352,16 @@ cp -R ${AIRTIMEROOT}/python_apps/media-monitor /usr/lib/airtime/media-monitor cp -R ${AIRTIMEROOT}/python_apps/media-monitor2 /usr/lib/airtime/media-monitor/mm2 verbose "...Done" +verbose "\n * Copying pypo files..." +mkdir -p /usr/lib/airtime/pypo +cp -R ${AIRTIMEROOT}/python_apps/pypo/pypo /usr/lib/airtime/pypo/bin/ +verbose "...Done" + +verbose "\n * Installing pypo..." +python ${AIRTIMEROOT}/python_apps/pypo/setup.py install +verbose "...Done" + +verbose "\n * Creating init files..." sed -e "s/WEB_USER/${web_user}/g" /usr/lib/airtime/media-monitor/airtime-media-monitor-init-d > /etc/init.d/airtime-media-monitor touch /etc/sudoers.d/airtime-media-monitor_${web_user} echo "${web_user} ALL = (root) NOPASSWD: /sbin/start airtime-media-monitor, \ @@ -349,12 +369,6 @@ echo "${web_user} ALL = (root) NOPASSWD: /sbin/start airtime-media-monitor, \ /sbin/restart airtime-media-monitor, \ /sbin/status airtime-media-monitor" > /etc/sudoers.d/airtime-media-monitor_${web_user} -verbose "\n * Copying pypo files..." -mkdir -p /usr/lib/airtime/pypo -cp -R ${AIRTIMEROOT}/python_apps/pypo/pypo /usr/lib/airtime/pypo/bin/ -verbose "...Done" - -verbose "\n * Creating init files..." sed -e "s/WEB_USER/${web_user}/g" /usr/lib/airtime/pypo/bin/airtime-playout-init-d > /etc/init.d/airtime-playout touch /etc/sudoers.d/airtime-playout_${web_user} echo "${web_user} ALL = (root) NOPASSWD: /sbin/start airtime-playout, \ @@ -374,8 +388,8 @@ verbose "...Done" chmod 755 /etc/init.d/airtime-* initctl reload-configuration -verbose "\n * Copying pypo files..." -python ${AIRTIMEROOT}/python_apps/pypo/setup.py install +# Deactivate virtualenv +deactivate if [ ! -d /var/log/airtime ]; then loud "\n-----------------------------------------------------" diff --git a/installer/lxc-bootstrap b/installer/lxc-bootstrap new file mode 100755 index 000000000..aebefaba3 --- /dev/null +++ b/installer/lxc-bootstrap @@ -0,0 +1,59 @@ +#!/bin/bash -e +#-e Causes bash script to exit if any of the installers +#return with a non-zero return value. + +if [[ $EUID -ne 0 ]]; then + echo "Please run as root user." + exit 1 +fi + +dist=$1 +release=$2 +name=airtime-install + +set +e +echo -e "\n * Stopping ${name}..." +lxc-stop -n airtime-install +echo "...Done" + +echo -e "\n * Destroying ${name}..." +lxc-destroy -n airtime-install +echo "...Done" +set -e + +echo -e "\n * Creating ${name} with dist ${dist} and release ${release}..." +lxc-create -t download -n ${name} -- --dist ${dist} --release ${release} --arch amd64 +echo "...Done" + +echo -e "\n * Starting ${name}..." +lxc-start -n ${name} -d +echo "...Done" + +echo -e "\n * Running apt update..." +lxc-attach -n ${name} -e -- apt-get update +echo "...Done" + +echo -e "\n * Installing git..." +lxc-attach -n ${name} -e -- apt-get -y --force-yes install git +echo "...Done" + +echo -e "\n * Cloning Airtime..." +lxc-attach -n ${name} -- git clone https://github.com/sourcefabric/Airtime.git /usr/share/Airtime +echo "...Done" + +echo -e "\n * Checking out installer branch..." +lxc-attach -n ${name} -- git -C /usr/share/Airtime checkout 2.5.x-installer-monitless +echo "...Done" + +echo -e "\n * Running installer..." +lxc-attach -n ${name} -e -- /usr/share/Airtime/installer/install -ifapdIv +echo "...Done" + +IP=$(lxc-info -i -n ${name} -H) +echo -e "\n * Opening ${name} in your browser..." +if hash xdg-open 2>/dev/null; then + xdg-open "http://${IP}/" +elif hash gnome-open 2>/dev/null; then + gnome-open "http://${IP}/" +fi +echo "...Done" diff --git a/python_apps/pypo/setup.py b/python_apps/pypo/setup.py index 41affc724..955e75cce 100644 --- a/python_apps/pypo/setup.py +++ b/python_apps/pypo/setup.py @@ -16,7 +16,7 @@ else: print data_files setup(name='airtime-playout', - version='0.1', + version='1.0', description='Airtime Playout Engine', url='http://github.com/sourcefabric/Airtime', author='sourcefabric', @@ -43,7 +43,7 @@ setup(name='airtime-playout', zip_safe=False, data_files=data_files) -# Reload the initctl config so that "service start airtime_analyzer" works +# Reload the initctl config so that playout services works if data_files: print "Reloading initctl configuration" call(['initctl', 'reload-configuration'])