# HG changeset patch # User Goffi # Date 1590414667 -7200 # Node ID 3a3f3bccd65b853ae7b5e255c1f3448025dab268 # Parent b0b9218c598210d4e191b68e4fd31c5604c2b508 server: Libervia server is now launched with a Python script, following backend change diff -r b0b9218c5982 -r 3a3f3bccd65b bin/libervia --- a/bin/libervia Tue May 19 18:33:18 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -#!/bin/sh - -DEBUG="" -DAEMON="" -PYTHON="python3" - -TWISTD="$(which twistd 2>/dev/null)" -if [ $? -ne 0 ]; then - # for Python 3, "twistd" is named "twistd3" on some distros - TWISTD="$(which twistd3 2>/dev/null)" -fi -if [ $? -ne 0 ]; then - printf "Can't find \"twistd\" script, are you sure that Twisted is installed?\n" - exit 1 -fi - -kill_process() { - # $1 is the file containing the PID to kill, $2 is the process name - if [ -f $1 ]; then - PID=`cat $1` - if ps -p $PID > /dev/null; then - echo "Terminating $2... " - kill -INT $PID - else - echo "No running process of ID $PID... removing PID file" - rm -f $1 - fi - else - echo "$2 is probably not running (PID file doesn't exist)" - fi -} - -#We use python to parse config files -eval `/usr/bin/env "$PYTHON" << PYTHONEND -from libervia.server.constants import Const as C -from sat.tools.config import fixLocalDir -from configparser import ConfigParser -from os.path import expanduser, join -import sys - -fixLocalDir() # XXX: tmp update code, will be removed in the future - -config = ConfigParser(defaults=C.DEFAULT_CONFIG) -try: - config.read(C.CONFIG_FILES) -except: - print ("echo \"/!\\ Can't read main config ! Please check the syntax\";") - print ("exit 1") - sys.exit() - -env=[] -env.append("PID_DIR='%s'" % join(expanduser(config.get('DEFAULT', 'pid_dir')),'')) -env.append("LOG_DIR='%s'" % join(expanduser(config.get('DEFAULT', 'log_dir')),'')) -env.append("APP_NAME='%s'" % C.APP_NAME) -env.append("APP_NAME_FILE='%s'" % C.APP_NAME_FILE) -print (";".join(env)) -PYTHONEND -` -APP_NAME="$APP_NAME" -PID_FILE="$PID_DIR$APP_NAME_FILE.pid" -LOG_FILE="$LOG_DIR$APP_NAME_FILE.log" -RUNNING_MSG="$APP_NAME is running" -NOT_RUNNING_MSG="$APP_NAME is *NOT* running" - -# if there is one argument which is "stop", then we kill Libervia -if [ $# -ge 1 ];then - if [ $1 = "stop" ];then - kill_process $PID_FILE "$APP_NAME" - exit 0 - elif [ $1 = "debug" ];then - echo "Launching $APP_NAME in debug mode" - DEBUG="--debug" - elif [ $1 = "fg" ];then - echo "Launching $APP_NAME in foreground mode" - DAEMON="n" - elif [ $1 = "status" ];then - if [ -f $PID_FILE ]; then - PID=`cat $PID_FILE` - ps -p$PID 2>&1 > /dev/null - if [ $? = 0 ];then - echo "$RUNNING_MSG (pid: $PID)" - exit 0 - else - echo "$NOT_RUNNING_MSG, but a pid file is present (bad exit ?): $PID_FILE" - exit 2 - fi - else - echo "$NOT_RUNNING_MSG" - exit 1 - fi - else - echo "bad argument, please use one of (stop, debug, fg, status) or no argument" - exit 1 - fi - shift -fi - - -#Don't change the next lines -PLUGIN_OPTIONS="" -AUTO_OPTIONS="" -ADDITIONAL_OPTIONS="--pidfile $PID_FILE --logfile $LOG_FILE $AUTO_OPTIONS $DEBUG" - - -MAIN_OPTIONS="-${DAEMON}o" - -log_dir=`dirname "$LOG_FILE"` -if [ ! -d $log_dir ] ; then - mkdir $log_dir -fi - -exec /usr/bin/env $PYTHON $TWISTD $MAIN_OPTIONS $ADDITIONAL_OPTIONS $APP_NAME_FILE $PLUGIN_OPTIONS $@ diff -r b0b9218c5982 -r 3a3f3bccd65b libervia/server/launcher.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libervia/server/launcher.py Mon May 25 15:51:07 2020 +0200 @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 + +# Libervia: a Salut à Toi frontend +# Copyright (C) 2009-2020 Jérôme Poisson (goffi@goffi.org) + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, 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 Affero General Public License for more details. + +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +"""Script launching Libervia server""" + +from sat.core import launcher +from libervia.server.constants import Const as C + + +class Launcher(launcher.Launcher): + APP_NAME=C.APP_NAME + APP_NAME_FILE=C.APP_NAME_FILE + + +if __name__ == '__main__': + Launcher.run() diff -r b0b9218c5982 -r 3a3f3bccd65b setup.py --- a/setup.py Tue May 19 18:33:18 2020 +0200 +++ b/setup.py Mon May 25 15:51:07 2020 +0200 @@ -84,7 +84,11 @@ (os.path.join("share", NAME, root), [os.path.join(root, f) for f in files]) for root, dirs, files in os.walk("themes") ], - scripts=["bin/libervia"], + entry_points={ + "console_scripts": [ + "libervia = libervia.server.launcher:Launcher.run", + ], + }, zip_safe=False, setup_requires=["setuptools_scm"] if is_dev_version else [], use_scm_version=libervia_dev_version if is_dev_version else False,