aboutsummaryrefslogtreecommitdiffstats
path: root/community/py-waitress
diff options
context:
space:
mode:
authorJakub Jirutka <jakub@jirutka.cz>2017-07-13 23:03:23 +0200
committerJakub Jirutka <jakub@jirutka.cz>2017-07-13 23:04:00 +0200
commitf37f536b6c15f8488fb1263e825e5e8ddadc5f80 (patch)
tree66f858aa0278173283576b5c585049c6b18ec5cf /community/py-waitress
parent142873633d4ae1d139e12289e8ce50e960839447 (diff)
downloadaports-f37f536b6c15f8488fb1263e825e5e8ddadc5f80.tar.bz2
aports-f37f536b6c15f8488fb1263e825e5e8ddadc5f80.tar.xz
community/py-waitress: move from testing
Diffstat (limited to 'community/py-waitress')
-rw-r--r--community/py-waitress/APKBUILD69
-rw-r--r--community/py-waitress/waitress.confd58
-rw-r--r--community/py-waitress/waitress.initd75
3 files changed, 202 insertions, 0 deletions
diff --git a/community/py-waitress/APKBUILD b/community/py-waitress/APKBUILD
new file mode 100644
index 0000000000..e54d95b528
--- /dev/null
+++ b/community/py-waitress/APKBUILD
@@ -0,0 +1,69 @@
+# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
+# Maintainer: Fabian Affolter <fabian@affolter-engineering.ch>
+pkgname=py-waitress
+_pkgname=waitress
+pkgver=1.0.2
+pkgrel=1
+pkgdesc="A Python WSGI server"
+url="https://github.com/Pylons/waitress"
+arch="noarch"
+license="ZPL-2.1"
+checkdepends="py-nose"
+makedepends="python2-dev python3-dev py-setuptools"
+subpackages="py2-$_pkgname:_py2 py3-$_pkgname:_py3"
+source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz
+ waitress.initd
+ waitress.confd"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ cd "$builddir"
+
+ python2 setup.py build
+ python3 setup.py build
+}
+
+check() {
+ cd "$builddir"
+
+ # XXX: Some tests fail on python2 with "No file descriptors available".
+ python3 setup.py test
+}
+
+package() {
+ mkdir -p "$pkgdir"/usr/bin
+ cd "$pkgdir"
+
+ ln -s waitress-serve-3 usr/bin/waitress-serve
+
+ install -D -m 755 "$srcdir"/waitress.initd etc/init.d/waitress
+ install -D -m 644 "$srcdir"/waitress.confd etc/conf.d/waitress
+}
+
+_py2() {
+ replaces="$pkgname"
+ _py python2
+}
+
+_py3() {
+ _py python3
+}
+
+_py() {
+ local python="$1"
+ local pyver="${python#python}"
+ pkgdesc="$pkgdesc (for $python)"
+ depends="$python"
+ install_if="$pkgname=$pkgver-r$pkgrel $python"
+
+ cd "$builddir"
+ $python setup.py install --prefix=/usr --root="$subpkgdir"
+
+ cd "$subpkgdir"
+ mv usr/bin/waitress-serve usr/bin/waitress-serve-$pyver
+ rm -R usr/lib/python$pyver*/site-packages/$_pkgname/tests
+}
+
+sha512sums="b7000e1198ac306ce189f70c5dcfcf41318e5ec47c8d6183cdbc360c8759ca726405d5da70f1c7fe3cfeb39d528af94d693767c2a7a1a7fe460c6407857ec6f0 waitress-1.0.2.tar.gz
+d91df5fcd7e1224b1c5808402270edea5638cb958ce9fc5a5a2bdf69d12f1a4632679af7727f8ddabc222b1eb2152509ae06a8d194eace0dc32380b21195ecba waitress.initd
+93d3abe2226a396c60435875d3fefbdc0eaff2b5e6d7e98d33944f9b8167bf965ae20bb967407de668726cef2ab824b5a11e8c8b7babbc94ba0e451f07f6a178 waitress.confd"
diff --git a/community/py-waitress/waitress.confd b/community/py-waitress/waitress.confd
new file mode 100644
index 0000000000..0c94736f15
--- /dev/null
+++ b/community/py-waitress/waitress.confd
@@ -0,0 +1,58 @@
+# YOU SHOULD NOT MODIFY THIS FILE! CREATE A COPY NAMED AFTER THE APPLICATION
+# YOU WANT TO RUN AND MODIFY THAT INSTEAD (and remove this notice).
+
+# Python executable to run waitress-serve with.
+#python="/usr/bin/python3"
+
+# User to run the application.
+#user="nobody"
+
+# Path of the log file to catch stdout/stderr of the process.
+logfile="/var/log/$RC_SVCNAME.log"
+
+
+# Base directory of the application.
+#basedir=
+
+# Name of the application's WSGI module (python file typically inside $basedir).
+wsgi_module="wsgi"
+
+# Name of attribute in $wsgi_module that contains WSGI object
+# or factory function.
+#wsgi_object="application"
+
+# Call the given object to get the WSGI application.
+#wsgi_call="no"
+
+
+# Tell waitress to listen on an ip port combination(s).
+# Example: listen="127.0.0.1:8080 [::1]:8080 *:8181"
+listen_on="*:8080"
+
+# Path of Unix socket. If a socket path is specified, a Unix domain socket is
+# made instead of the usual inet domain socket.
+#unix_socket_path=
+
+# Octal permissions to use for the Unix domain socket. Default is 600.
+#unix_socket_perms=
+
+# Default wsgi.url_scheme value. Default is "http".
+#url_scheme=
+
+# The SCRIPT_NAME WSGI environment value.
+# Setting this to anything except the empty string will cause the WSGI
+# SCRIPT_NAME value to be the value passed minus any trailing slashes you add,
+# and it will cause the PATH_INFO of any request which is prefixed with this
+# value to be stripped of the prefix. Default is the empty string.
+#url_prefix=
+
+# Server identity used in the "Server" header in responses.
+# Default is "waitress".
+#server_ident=
+
+# Extra options for waitress-serve.
+# See https://docs.pylonsproject.org/projects/waitress/en/latest/runner.html.
+#extra_opts=
+
+# Note: If you need to pass some environment variables to the application, set
+# start_stop_daemon_args="--env FOO=bar --env BAZ=qux"
diff --git a/community/py-waitress/waitress.initd b/community/py-waitress/waitress.initd
new file mode 100644
index 0000000000..afb76fdef6
--- /dev/null
+++ b/community/py-waitress/waitress.initd
@@ -0,0 +1,75 @@
+#!/sbin/openrc-run
+
+: ${user:="nobody"}
+: ${python:="/usr/bin/python3"}
+: ${wsgi_module:=}
+: ${wsgi_object:="application"}
+: ${wsgi_call:="no"}
+
+command="$python"
+command_args="${command_args:-} /usr/bin/waitress-serve"
+command_background="yes"
+
+pidfile="/run/$RC_SVCNAME.pid"
+start_stop_daemon_args="
+ --interpreted
+ --user $user
+ ${group:+--group $group}
+ ${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 $user "$logfile"
+ fi
+
+ if [ -n "$unix_socket_path" ]; then
+ checkpath -d -m 0755 -o $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")
+ ${extra_opts:-}
+ $wsgi_module:$wsgi_object"
+
+ command_args="$command_args $waitress_args"
+}
+
+optif() {
+ test -n "$2" && printf %s "$1='$2'"
+}