aboutsummaryrefslogtreecommitdiffstats
path: root/community/py3-waitress/waitress.initd
diff options
context:
space:
mode:
Diffstat (limited to 'community/py3-waitress/waitress.initd')
-rw-r--r--community/py3-waitress/waitress.initd80
1 files changed, 80 insertions, 0 deletions
diff --git a/community/py3-waitress/waitress.initd b/community/py3-waitress/waitress.initd
new file mode 100644
index 0000000000..0a1865d788
--- /dev/null
+++ b/community/py3-waitress/waitress.initd
@@ -0,0 +1,80 @@
+#!/sbin/openrc-run
+
+# Variables $user and $group are deprecated.
+: ${command_user:="${user:-"nobody"}${group:+":$group"}"}
+: ${python:="/usr/bin/python3"}
+: ${python_opts:="-u"} # this is needed for stdout/stderr redirect to work
+: ${wsgi_module:=}
+: ${wsgi_object:="application"}
+: ${wsgi_call:="no"}
+
+command="$python"
+command_args="$python_opts /usr/bin/waitress-serve"
+command_background="yes"
+
+pidfile="/run/$RC_SVCNAME.pid"
+start_stop_daemon_args="
+ --interpreted
+ --user $command_user
+ ${basedir:+--chdir $basedir}
+ ${start_stop_daemon_args:-}"
+
+depends() {
+ need net
+ after postgresql
+}
+
+start_pre() {
+ local waitress_args=""
+
+ if [ "$RC_SVCNAME" = "waitress" ]; then
+ ewarn "You are not supposed to run this runscript directly. Instead, you should"
+ ewarn "create a symlink for the application you want to run as well as a copy of"
+ ewarn "the configuration file and modify it appropriately, like so:"
+ ewarn ""
+ ewarn " ln -s waitress /etc/init.d/myapp"
+ ewarn " cp /etc/conf.d/waitress /etc/conf.d/myapp"
+ ewarn ""
+ fi
+
+ if [ -z "$wsgi_module" ]; then
+ eerror '$wsgi_module must be set!'; return 1
+ fi
+
+ if [ -n "${logfile:-}" ]; then
+ start_stop_daemon_args="$start_stop_daemon_args
+ --stdout $logfile --stderr $logfile"
+ checkpath -f -m 0644 -o ${command_user%:*} "$logfile"
+ fi
+
+ if [ -n "$unix_socket_path" ]; then
+ if [ "$(stat -c %u "${unix_socket_path%/*}" 2>/dev/null)" -eq 0 ]; then
+ eerror "Directory \"${unix_socket_path%/*}\" already exists and is owned by root!"
+ return 1
+ fi
+ checkpath -d -m 0755 -o ${command_user%:*} "${unix_socket_path%/*}"
+ fi
+
+ if yesno "$wsgi_call"; then
+ waitress_args="$waitress_args --call"
+ fi
+
+ local item; for item in ${listen_on:-}; do
+ waitress_args="$waitress_args --listen='$item'"
+ done
+
+ waitress_args="$waitress_args
+ $(optif --unix-socket "$unix_socket_path")
+ $(optif --unix-socket-perms "$unix_socket_perms")
+ $(optif --url-scheme "$url_scheme")
+ $(optif --url-prefix "$url_prefix")
+ $(optif --ident "$server_ident")
+ ${waitress_opts:-}
+ $wsgi_module:$wsgi_object"
+
+ command_args="$command_args $waitress_args"
+}
+
+optif() {
+ test -n "$2" && printf %s "$1='$2'"
+}