From 3da0310173ffd2257fe9e09ee3c2f584208f3af9 Mon Sep 17 00:00:00 2001 From: jo Date: Thu, 2 Sep 2021 14:08:20 +0200 Subject: [PATCH] Drop SysV support --- install | 11 +- .../install/conf/airtime-celery | 25 -- .../install/initd/libretime-celery | 346 ------------------ python_apps/airtime-celery/setup.py | 47 +-- .../install/sysvinit/libretime-analyzer | 79 ---- python_apps/api_clients/setup.py | 11 +- .../install/sysvinit/libretime-liquidsoap | 79 ---- .../pypo/install/sysvinit/libretime-playout | 79 ---- python_apps/pypo/setup.py | 54 +-- 9 files changed, 30 insertions(+), 701 deletions(-) delete mode 100644 python_apps/airtime-celery/install/conf/airtime-celery delete mode 100755 python_apps/airtime-celery/install/initd/libretime-celery delete mode 100755 python_apps/airtime_analyzer/install/sysvinit/libretime-analyzer delete mode 100755 python_apps/pypo/install/sysvinit/libretime-liquidsoap delete mode 100755 python_apps/pypo/install/sysvinit/libretime-playout diff --git a/install b/install index f578b297f..85bbfbd1e 100755 --- a/install +++ b/install @@ -716,6 +716,13 @@ verbose "Using distribution id \"$dist\", release code \"$code\"" # Detect init system type systemInitDetect +# SysV is not supported, fail fast instead of cleaning the whole script +# from sysv related entries. +if $has_systemv_init; then + echo "ERROR: Installation on SysV init system is not supported!" >&2 + exit 1 +fi + if $is_centos_dist; then python_bin="python3.8" apache_bin="httpd" @@ -1014,7 +1021,7 @@ loudCmd "$python_bin ${AIRTIMEROOT}/python_apps/api_clients/setup.py install --i verbose "...Done" verbose "\n * Installing pypo and liquidsoap..." -loudCmd "$python_bin ${AIRTIMEROOT}/python_apps/pypo/setup.py install --install-scripts=/usr/bin --no-init-script" +loudCmd "$python_bin ${AIRTIMEROOT}/python_apps/pypo/setup.py install --install-scripts=/usr/bin" loudCmd "mkdir -p /var/log/airtime/{pypo,pypo-liquidsoap} /var/tmp/airtime/pypo/{cache,files,tmp} /var/tmp/airtime/show-recorder/" loudCmd "chown -R ${web_user}:${web_user} /var/log/airtime/{pypo,pypo-liquidsoap} /var/tmp/airtime/pypo/{cache,files,tmp} /var/tmp/airtime/show-recorder/" systemInitInstall libretime-liquidsoap "$web_user" @@ -1022,7 +1029,7 @@ systemInitInstall libretime-playout "$web_user" verbose "...Done" verbose "\n * Installing airtime-celery..." -loudCmd "$python_bin ${AIRTIMEROOT}/python_apps/airtime-celery/setup.py install --no-init-script" +loudCmd "$python_bin ${AIRTIMEROOT}/python_apps/airtime-celery/setup.py install" # Create the Celery user if $is_centos_dist; then loudCmd "id celery 2>/dev/null || adduser --no-create-home -c 'LibreTime Celery' -r celery || true" diff --git a/python_apps/airtime-celery/install/conf/airtime-celery b/python_apps/airtime-celery/install/conf/airtime-celery deleted file mode 100644 index cee05654b..000000000 --- a/python_apps/airtime-celery/install/conf/airtime-celery +++ /dev/null @@ -1,25 +0,0 @@ -# Names of nodes to start -CELERYD_NODES="airtime-celery" - -# Absolute or relative path to the 'celery' command: -CELERY_BIN="/usr/local/bin/celery" - -# App instance to use -CELERY_APP="airtime-celery.tasks:celery" - -# Extra command-line arguments to the worker -CELERYD_OPTS="--time-limit=1800 --concurrency=1 --config=celeryconfig" - -# %N will be replaced with the first part of the nodename. -CELERYD_LOG_FILE="/var/log/airtime/%N.log" -CELERYD_PID_FILE="/var/run/celery/%N.pid" - -# Workers should run as an unprivileged user. -# You need to create this user manually (or you can choose -# a user/group combination that already exists, e.g. nobody). -CELERYD_USER="celery" -CELERYD_GROUP="celery" - -# If enabled pid and log directories will be created if missing, -# and owned by the userid/group configured. -CELERY_CREATE_DIRS=1 diff --git a/python_apps/airtime-celery/install/initd/libretime-celery b/python_apps/airtime-celery/install/initd/libretime-celery deleted file mode 100755 index 6028a1aeb..000000000 --- a/python_apps/airtime-celery/install/initd/libretime-celery +++ /dev/null @@ -1,346 +0,0 @@ -#!/usr/bin/env bash - -set -e - -# ============================================ -# celeryd - Starts the Celery worker daemon. -# ============================================ -# -# :Usage: /etc/init.d/celeryd {start|stop|force-reload|restart|try-restart|status} -# :Configuration file: /etc/default/celeryd -# -# See http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#generic-init-scripts - -### BEGIN INIT INFO -# Provides: celeryd -# Required-Start: $network $local_fs $remote_fs -# Required-Stop: $network $local_fs $remote_fs -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: celery task worker daemon -### END INIT INFO -# -# -# To implement separate init scripts, copy this script and give it a different -# name: -# I.e., if my new application, "little-worker" needs an init, I -# should just use: -# -# cp /etc/init.d/celeryd /etc/init.d/little-worker -# -# You can then configure this by manipulating /etc/default/little-worker. -# -VERSION=10.1 -echo "celery init v${VERSION}." -if [ "$(id -u)" -ne 0 ]; then - echo "Error: This program can only be used by the root user." - echo " Unprivileged users must use the 'celery multi' utility, " - echo " or 'celery worker --detach'." - exit 1 -fi - -export RMQ_CONFIG_FILE="/etc/airtime/airtime.conf" - -# Can be a runlevel symlink (e.g. S02celeryd) -if [ -L "$0" ]; then - SCRIPT_FILE=$(readlink "$0") -else - SCRIPT_FILE="$0" -fi -SCRIPT_NAME="$(basename "$SCRIPT_FILE")" - -DEFAULT_USER="celery" -DEFAULT_PID_FILE="/var/run/celery/%n.pid" -DEFAULT_LOG_FILE="/var/log/celery/%n.log" -DEFAULT_LOG_LEVEL="INFO" -DEFAULT_NODES="celery" -# DEFAULT_CELERYD="-m celery worker --detach" - -CELERY_DEFAULTS=${CELERY_DEFAULTS:-"/etc/default/${SCRIPT_NAME}"} -# Make sure executable configuration script is owned by root -_config_sanity() { - local path - local owner - local iwgrp - local iwoth - path="$1" - owner=$(ls -ld "$path" | awk '{print $3}') - iwgrp=$(ls -ld "$path" | cut -b 6) - iwoth=$(ls -ld "$path" | cut -b 9) - if [ "$(id -u $owner)" != "0" ]; then - echo "Error: Config script '$path' must be owned by root!" - echo - echo "Resolution:" - echo "Review the file carefully and make sure it has not been " - echo "modified with mailicious intent. When sure the " - echo "script is safe to execute with superuser privileges " - echo "you can change ownership of the script:" - echo " $ sudo chown root '$path'" - exit 1 - fi - if [ "$iwoth" != "-" ]; then # S_IWOTH - echo "Error: Config script '$path' cannot be writable by others!" - echo - echo "Resolution:" - echo "Review the file carefully and make sure it has not been " - echo "modified with malicious intent. When sure the " - echo "script is safe to execute with superuser privileges " - echo "you can change the scripts permissions:" - echo " $ sudo chmod 640 '$path'" - exit 1 - fi - if [ "$iwgrp" != "-" ]; then # S_IWGRP - echo "Error: Config script '$path' cannot be writable by group!" - echo - echo "Resolution:" - echo "Review the file carefully and make sure it has not been " - echo "modified with malicious intent. When sure the " - echo "script is safe to execute with superuser privileges " - echo "you can change the scripts permissions:" - echo " $ sudo chmod 640 '$path'" - exit 1 - fi -} -if [ -f "$CELERY_DEFAULTS" ]; then - _config_sanity "$CELERY_DEFAULTS" - echo "Using config script: $CELERY_DEFAULTS" - # shellcheck disable=SC1090 - . "$CELERY_DEFAULTS" -fi -# Sets --app argument for CELERY_BIN -CELERY_APP_ARG="" -if [ ! -z "$CELERY_APP" ]; then - CELERY_APP_ARG="--app=$CELERY_APP" -fi -CELERYD_USER=${CELERYD_USER:-$DEFAULT_USER} -# Set CELERY_CREATE_DIRS to always create log/pid dirs. -CELERY_CREATE_DIRS=${CELERY_CREATE_DIRS:-0} -CELERY_CREATE_RUNDIR=$CELERY_CREATE_DIRS -CELERY_CREATE_LOGDIR=$CELERY_CREATE_DIRS -if [ -z "$CELERYD_PID_FILE" ]; then - CELERYD_PID_FILE="$DEFAULT_PID_FILE" - CELERY_CREATE_RUNDIR=1 -fi -if [ -z "$CELERYD_LOG_FILE" ]; then - CELERYD_LOG_FILE="$DEFAULT_LOG_FILE" - CELERY_CREATE_LOGDIR=1 -fi -CELERYD_LOG_LEVEL=${CELERYD_LOG_LEVEL:-${CELERYD_LOGLEVEL:-$DEFAULT_LOG_LEVEL}} -CELERY_BIN=${CELERY_BIN:-"celery"} -CELERYD_MULTI=${CELERYD_MULTI:-"$CELERY_BIN multi"} -CELERYD_NODES=${CELERYD_NODES:-$DEFAULT_NODES} -export CELERY_LOADER -if [ -n "$2" ]; then - CELERYD_OPTS="$CELERYD_OPTS $2" -fi -CELERYD_LOG_DIR=$(dirname $CELERYD_LOG_FILE) -CELERYD_PID_DIR=$(dirname $CELERYD_PID_FILE) -# Extra start-stop-daemon options, like user/group. -if [ -n "$CELERYD_CHDIR" ]; then - DAEMON_OPTS="$DAEMON_OPTS --workdir=$CELERYD_CHDIR" -fi -check_dev_null() { - if [ ! -c /dev/null ]; then - echo "/dev/null is not a character device!" - exit 75 # EX_TEMPFAIL - fi -} -maybe_die() { - if [ $? -ne 0 ]; then - echo "Exiting: $* (errno $?)" - exit 77 # EX_NOPERM - fi -} -create_default_dir() { - if [ ! -d "$1" ]; then - echo "- Creating default directory: '$1'" - mkdir -p "$1" - maybe_die "Couldn't create directory $1" - echo "- Changing permissions of '$1' to 02755" - chmod 02755 "$1" - maybe_die "Couldn't change permissions for $1" - if [ -n "$CELERYD_USER" ]; then - echo "- Changing owner of '$1' to '$CELERYD_USER'" - chown "$CELERYD_USER" "$1" - maybe_die "Couldn't change owner of $1" - fi - if [ -n "$CELERYD_GROUP" ]; then - echo "- Changing group of '$1' to '$CELERYD_GROUP'" - chgrp "$CELERYD_GROUP" "$1" - maybe_die "Couldn't change group of $1" - fi - fi -} -check_paths() { - if [ $CELERY_CREATE_LOGDIR -eq 1 ]; then - create_default_dir "$CELERYD_LOG_DIR" - fi - if [ $CELERY_CREATE_RUNDIR -eq 1 ]; then - create_default_dir "$CELERYD_PID_DIR" - fi -} -create_paths() { - create_default_dir "$CELERYD_LOG_DIR" - create_default_dir "$CELERYD_PID_DIR" -} -export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" -_get_pidfiles() { - # note: multi < 3.1.14 output to stderr, not stdout, hence the redirect. - ${CELERYD_MULTI} expand "${CELERYD_PID_FILE}" ${CELERYD_NODES} 2>&1 -} -_get_pids() { - found_pids=0 - my_exitcode=0 - for pidfile in $(_get_pidfiles); do - local pid - local cleaned_pid - pid=$(cat "$pidfile") - cleaned_pid=$(echo "$pid" | sed -e 's/[^0-9]//g') - if [ -z "$pid" ] || [ "$cleaned_pid" != "$pid" ]; then - echo "bad pid file ($pidfile)" - one_failed=true - my_exitcode=1 - else - found_pids=1 - echo "$pid" - fi - if [ $found_pids -eq 0 ]; then - echo "${SCRIPT_NAME}: All nodes down" - exit $my_exitcode - fi - done -} -_chuid() { - su "$CELERYD_USER" -c "$CELERYD_MULTI $*" -} -start_workers() { - if [ ! -z "$CELERYD_ULIMIT" ]; then - ulimit $CELERYD_ULIMIT - fi - _chuid "$@" start $CELERYD_NODES $DAEMON_OPTS \ - --pidfile="$CELERYD_PID_FILE" \ - --logfile="$CELERYD_LOG_FILE" \ - --loglevel="$CELERYD_LOG_LEVEL" \ - $CELERY_APP_ARG \ - $CELERYD_OPTS -} -dryrun() { - (C_FAKEFORK=1 start_workers --verbose) -} -stop_workers() { - _chuid stopwait $CELERYD_NODES --pidfile="$CELERYD_PID_FILE" -} -restart_workers() { - _chuid restart $CELERYD_NODES $DAEMON_OPTS \ - --pidfile="$CELERYD_PID_FILE" \ - --logfile="$CELERYD_LOG_FILE" \ - --loglevel="$CELERYD_LOG_LEVEL" \ - $CELERY_APP_ARG \ - $CELERYD_OPTS -} -kill_workers() { - _chuid kill $CELERYD_NODES --pidfile="$CELERYD_PID_FILE" -} -restart_workers_graceful() { - echo "WARNING: Use with caution in production" - echo "The workers will attempt to restart, but they may not be able to." - local worker_pids= - worker_pids=$(_get_pids) - [ "$one_failed" ] && exit 1 - for worker_pid in $worker_pids; do - local failed= - kill -HUP $worker_pid 2> /dev/null || failed=true - if [ "$failed" ]; then - echo "${SCRIPT_NAME} worker (pid $worker_pid) could not be restarted" - one_failed=true - else - echo "${SCRIPT_NAME} worker (pid $worker_pid) received SIGHUP" - fi - done - [ "$one_failed" ] && exit 1 || exit 0 -} -check_status() { - my_exitcode=0 - found_pids=0 - local one_failed= - for pidfile in $(_get_pidfiles); do - if [ ! -r $pidfile ]; then - echo "${SCRIPT_NAME} down: no pidfiles found" - one_failed=true - break - fi - local node - local pid - local cleaned_pid - node=$(basename "$pidfile" .pid) - pid=$(cat "$pidfile") - cleaned_pid=$(echo "$pid" | sed -e 's/[^0-9]//g') - if [ -z "$pid" ] || [ "$cleaned_pid" != "$pid" ]; then - echo "bad pid file ($pidfile)" - one_failed=true - else - local failed= - kill -0 $pid 2> /dev/null || failed=true - if [ "$failed" ]; then - echo "${SCRIPT_NAME} (node $node) (pid $pid) is down, but pidfile exists!" - one_failed=true - else - echo "${SCRIPT_NAME} (node $node) (pid $pid) is up..." - fi - fi - done - [ "$one_failed" ] && exit 1 || exit 0 -} -case "$1" in - start) - check_dev_null - check_paths - start_workers - ;; - stop) - check_dev_null - check_paths - stop_workers - ;; - reload | force-reload) - echo "Use restart" - ;; - status) - check_status - ;; - restart) - check_dev_null - check_paths - restart_workers - ;; - graceful) - check_dev_null - restart_workers_graceful - ;; - kill) - check_dev_null - kill_workers - ;; - dryrun) - check_dev_null - dryrun - ;; - try-restart) - check_dev_null - check_paths - restart_workers - ;; - create-paths) - check_dev_null - create_paths - ;; - check-paths) - check_dev_null - check_paths - ;; - *) - echo "Usage: /etc/init.d/${SCRIPT_NAME} {start|stop|restart|graceful|kill|dryrun|create-paths}" - exit 64 # EX_USAGE - ;; -esac -exit 0 diff --git a/python_apps/airtime-celery/setup.py b/python_apps/airtime-celery/setup.py index d42e54dd3..fc92b0689 100644 --- a/python_apps/airtime-celery/setup.py +++ b/python_apps/airtime-celery/setup.py @@ -1,44 +1,9 @@ import os -import sys -from pathlib import Path -from subprocess import call from setuptools import setup # Change directory since setuptools uses relative paths -script_path = os.path.dirname(os.path.realpath(__file__)) -print(script_path) -os.chdir(script_path) - -install_args = ["install", "install_data", "develop"] -no_init = False -run_postinst = False - -# XXX Definitely not the best way of doing this... -if sys.argv[1] in install_args and "--no-init-script" not in sys.argv: - run_postinst = True - data_files = [ - ("/etc/default", ["install/conf/airtime-celery"]), - ("/etc/init.d", ["install/initd/airtime-celery"]), - ] -else: - if "--no-init-script" in sys.argv: - no_init = True - run_postinst = True # We still want to run the postinst here - sys.argv.remove("--no-init-script") - data_files = [] - - -def postinst(): - initd = Path("/etc/init.d/airtime-celery") - conf = Path("/etc/default/airtime-celery") - if not no_init and initd.is_file() and conf.is_file(): - # Make /etc/init.d file executable and set proper - # permissions for the defaults config file - os.chmod("/etc/init.d/airtime-celery", 0o755) - os.chmod("/etc/default/airtime-celery", 0o640) - print('Run "sudo service airtime-celery restart" now.') - +os.chdir(os.path.dirname(os.path.realpath(__file__))) setup( name="airtime-celery", @@ -49,10 +14,10 @@ setup( author_email="duncan.sommerville@sourcefabric.org", license="MIT", packages=["airtime-celery"], - install_requires=["celery==4.4.7", "kombu==4.6.10", "configobj"], + install_requires=[ + "celery==4.4.7", + "kombu==4.6.10", + "configobj", + ], zip_safe=False, - data_files=data_files, ) - -if run_postinst: - postinst() diff --git a/python_apps/airtime_analyzer/install/sysvinit/libretime-analyzer b/python_apps/airtime_analyzer/install/sysvinit/libretime-analyzer deleted file mode 100755 index c88be1ea8..000000000 --- a/python_apps/airtime_analyzer/install/sysvinit/libretime-analyzer +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env bash - -### BEGIN INIT INFO -# Provides: libretime-analyzer -# Required-Start: $local_fs $remote_fs $network $syslog $all -# Required-Stop: $local_fs $remote_fs $network $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Manage libretime-analyzer daemon -### END INIT INFO - -USERID=www-data -GROUPID=www-data -NAME=libretime-analyzer - -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 -# shellcheck disable=SC1090 -[ -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 \ - --make-pidfile --pidfile $PIDFILE --startas $DAEMON -} - -stop() { - # Send TERM after 5 seconds, wait at most 30 seconds. - start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE - rm -f $PIDFILE -} - -case "${1:-''}" in - 'start') - # start commands here - echo -n "Starting $NAME: " - start - echo "Done." - ;; - 'stop') - # stop commands here - echo -n "Stopping $NAME: " - stop - echo "Done." - ;; - 'restart') - # restart commands here - echo -n "Restarting $NAME: " - stop - start - echo "Done." - ;; - 'force-reload') - # reload commands here - echo -n "Reloading $NAME: " - stop - start - echo "Done." - ;; - 'status') - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - *) # no parameter specified - echo "Usage: $SELF start|stop|restart|status" - exit 1 - ;; -esac diff --git a/python_apps/api_clients/setup.py b/python_apps/api_clients/setup.py index e8bb5ab75..90bf95f75 100644 --- a/python_apps/api_clients/setup.py +++ b/python_apps/api_clients/setup.py @@ -1,14 +1,9 @@ -from __future__ import print_function - import os -import sys -from subprocess import call from setuptools import setup -script_path = os.path.dirname(os.path.realpath(__file__)) -print(script_path) -os.chdir(script_path) +# Change directory since setuptools uses relative paths +os.chdir(os.path.dirname(os.path.realpath(__file__))) setup( name="api_clients", @@ -18,12 +13,10 @@ setup( author="LibreTime Contributors", license="AGPLv3", packages=["api_clients"], - scripts=[], install_requires=[ "configobj", "python-dateutil>=2.7.0", "requests", ], zip_safe=False, - data_files=[], ) diff --git a/python_apps/pypo/install/sysvinit/libretime-liquidsoap b/python_apps/pypo/install/sysvinit/libretime-liquidsoap deleted file mode 100755 index 35b2cd020..000000000 --- a/python_apps/pypo/install/sysvinit/libretime-liquidsoap +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env bash - -### BEGIN INIT INFO -# Provides: airtime-liquidsoap -# Required-Start: $local_fs $remote_fs $network $syslog $all -# Required-Stop: $local_fs $remote_fs $network $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Manage airtime-liquidsoap daemon -### END INIT INFO - -USERID=www-data -GROUPID=www-data -NAME=airtime-liquidsoap - -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 -# shellcheck disable=SC1090 -[ -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 \ - --make-pidfile --pidfile $PIDFILE --startas $DAEMON -} - -stop() { - # Send TERM after 5 seconds, wait at most 30 seconds. - start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE - rm -f $PIDFILE -} - -case "${1:-''}" in - 'start') - # start commands here - echo -n "Starting $NAME: " - start - echo "Done." - ;; - 'stop') - # stop commands here - echo -n "Stopping $NAME: " - stop - echo "Done." - ;; - 'restart') - # restart commands here - echo -n "Restarting $NAME: " - stop - start - echo "Done." - ;; - 'force-reload') - # reload commands here - echo -n "Reloading $NAME: " - stop - start - echo "Done." - ;; - 'status') - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - *) # no parameter specified - echo "Usage: $SELF start|stop|restart|status" - exit 1 - ;; -esac diff --git a/python_apps/pypo/install/sysvinit/libretime-playout b/python_apps/pypo/install/sysvinit/libretime-playout deleted file mode 100755 index 0183336ac..000000000 --- a/python_apps/pypo/install/sysvinit/libretime-playout +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env bash - -### BEGIN INIT INFO -# Provides: airtime-playout -# Required-Start: $local_fs $remote_fs $network $syslog $all -# Required-Stop: $local_fs $remote_fs $network $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Manage airtime-playout daemon -### END INIT INFO - -USERID=www-data -GROUPID=www-data -NAME=airtime-playout - -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 -# shellcheck disable=SC1090 -[ -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 \ - --make-pidfile --pidfile $PIDFILE --startas $DAEMON -} - -stop() { - # Send TERM after 5 seconds, wait at most 30 seconds. - start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE - rm -f $PIDFILE -} - -case "${1:-''}" in - 'start') - # start commands here - echo -n "Starting $NAME: " - start - echo "Done." - ;; - 'stop') - # stop commands here - echo -n "Stopping $NAME: " - stop - echo "Done." - ;; - 'restart') - # restart commands here - echo -n "Restarting $NAME: " - stop - start - echo "Done." - ;; - 'force-reload') - # reload commands here - echo -n "Reloading $NAME: " - stop - start - echo "Done." - ;; - 'status') - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - *) # no parameter specified - echo "Usage: $SELF start|stop|restart|status" - exit 1 - ;; -esac diff --git a/python_apps/pypo/setup.py b/python_apps/pypo/setup.py index 44a63bc2d..feca4c872 100644 --- a/python_apps/pypo/setup.py +++ b/python_apps/pypo/setup.py @@ -1,38 +1,10 @@ -from __future__ import print_function - import os -import sys -from subprocess import call from setuptools import setup -script_path = os.path.dirname(os.path.realpath(__file__)) -print(script_path) -os.chdir(script_path) +# Change directory since setuptools uses relative paths +os.chdir(os.path.dirname(os.path.realpath(__file__))) -# Allows us to avoid installing the upstart init script when deploying on Airtime Pro: -if "--no-init-script" in sys.argv: - data_files = [] - sys.argv.remove("--no-init-script") # super hax -else: - pypo_files = [] - for root, dirnames, filenames in os.walk("pypo"): - for filename in filenames: - pypo_files.append(os.path.join(root, filename)) - - data_files = [ - ("/etc/init", ["install/upstart/airtime-playout.conf.template"]), - ("/etc/init", ["install/upstart/airtime-liquidsoap.conf.template"]), - ("/etc/init.d", ["install/sysvinit/airtime-playout"]), - ("/etc/init.d", ["install/sysvinit/airtime-liquidsoap"]), - ("/var/log/airtime/pypo", []), - ("/var/log/airtime/pypo-liquidsoap", []), - ("/var/tmp/airtime/pypo", []), - ("/var/tmp/airtime/pypo/cache", []), - ("/var/tmp/airtime/pypo/files", []), - ("/var/tmp/airtime/pypo/tmp", []), - ] - print(data_files) setup( name="airtime-playout", @@ -41,9 +13,18 @@ setup( url="http://github.com/sourcefabric/Airtime", author="sourcefabric", license="AGPLv3", - packages=["pypo", "pypo.media", "pypo.media.update", "liquidsoap"], + packages=[ + "pypo", + "pypo.media", + "pypo.media.update", + "liquidsoap", + ], package_data={"": ["**/*.liq", "*.cfg", "*.types"]}, - scripts=["bin/airtime-playout", "bin/airtime-liquidsoap", "bin/pyponotify"], + scripts=[ + "bin/airtime-playout", + "bin/airtime-liquidsoap", + "bin/pyponotify", + ], install_requires=[ "amqplib", "anyjson", @@ -61,13 +42,4 @@ setup( "packaging", ], zip_safe=False, - data_files=data_files, ) - -# Reload the initctl config so that playout services works -if data_files: - print("Reloading initctl configuration") - # call(['initctl', 'reload-configuration']) - print( - 'Run "sudo service airtime-playout start" and "sudo service airtime-liquidsoap start"' - )