# Contributor: Ɓukasz Jendrysik <scadu@yandex.com>
# Contributor: Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
setvar pkgname = 'uwsgi'
setvar pkgver = '2.0.15'
setvar pkgrel = '0'
setvar pkgdesc = ""uWSGI application container server""
setvar url = ""http://projects.unbit.it/uwsgi/""
setvar arch = ""all""
setvar license = ""GPL2""
setvar depends = ""mailcap""
setvar install = ""uwsgi.pre-install""
setvar pkgusers = ""uwsgi""
setvar pkggroups = ""uwsgi""
setvar makedepends = ""
	attr-dev
	curl-dev
	geoip-dev
	jansson-dev
	libcap-dev
	linux-headers
	linux-pam-dev
	libxml2-dev
	libxslt-dev
	lua5.2-dev
	paxmark
	pcre-dev
	postgresql-dev
	python
	python2-dev
	python3-dev
	zeromq-dev
	zlib-dev
	""
setvar source = ""http://projects.unbit.it/downloads/uwsgi-${pkgver}.tar.gz
	uwsgi.initd
	uwsgi.ini
	readme.emperor
	alpine.buildconf
	musl-fix-python.patch
	""
setvar builddir = ""$srcdir/$pkgname-$pkgver""

# Plugins for Python 2 or without compile dependency on Python.
# You may specify a custom name for so lib and subpackage after a colon.
setvar _plugins = ""
	alarm_curl
	cache
	carbon
	cgi
	cheaper_backlog2
	cheaper_busyness
	corerouter
	curl_cron
	dumbloop
	dummy
	echo
	emperor_amqp
	emperor_pg
	emperor_zeromq
	fastrouter
	forkptyrouter
	geoip
	gevent
	graylog2
	http
	legion_cache_fetch
	logcrypto
	logfile
	logpipe
	logsocket
	logzmq
	lua
	msgpack
	nagios
	notfound
	pam
	ping
	pty
	python
	rawrouter
	redislog
	router_basicauth
	router_cache
	router_expires
	router_hash
	router_http
	router_memcached
	router_metrics
	router_radius
	router_redirect
	router_redis
	router_rewrite
	router_static
	router_uwsgi
	rpc
	rrdtool
	rsyslog
	signal
	spooler
	sslrouter
	stats_pusher_file
	stats_pusher_socket
	stats_pusher_statsd
	symcall
	syslog
	transformation_chunked
	transformation_gzip
	transformation_offload
	transformation_template
	transformation_tofile
	tuntap
	ugreen
	webdav
	xslt
	zabbix
	zergpool
	""
# Plugins for Python 3.
# You may specify a custom name for so lib and subpackage after a colon.
setvar _plugins3 = ""gevent:gevent3 python:python3""

setvar subpackages = """"
for _p in $_plugins $_plugins3 {
	setvar subpackages = ""$subpackages uwsgi-${_p#*:}:_plugin""
}

setvar _desc_gevent = ""uWSGI plugin for gevent (Python 2)""
setvar _desc_gevent3 = ""uWSGI plugin for gevent (Python 3)""
setvar _desc_python = ""uWSGI plugin for Python 2""
setvar _desc_python3 = ""uWSGI plugin for Python 3""


proc prepare {
	default_prepare || return 1
	cp "$srcdir"/alpine.buildconf buildconf/alpine.ini
}

proc build {
	cd $builddir

	msg "Building core""
	# ccache seems to trigger some weird bug on musl
	CC="gcc"" python2 uwsgiconfig.py --build alpine || return 1

	export UWSGICONFIG_LUAPC="lua5.2"

	local item
	for item in $_plugins {
		_build python $item || return 1
	}
	for item in $_plugins3 {
		_build python3 $item || return 1
	}
}

proc _build {
	local python="$1"
	local plugin="${2%:*}"
	local myname="${2#*:}"

	msg "Building $plugin plugin ($myname)"
	$python uwsgiconfig.py --plugin plugins/$plugin alpine $myname
}

proc package {
	cd $builddir

	install -m 755 -D uwsgi \
		"$pkgdir"/usr/sbin/uwsgi || return 1
	install -m 644 -D "$srcdir"/readme.emperor \
		"$pkgdir"/etc/uwsgi/conf.d/readme.emperor || return 1
	install -m 644 -D "$srcdir"/uwsgi.ini \
		"$pkgdir"/etc/uwsgi/uwsgi.ini || return 1
	install -m 755 -D "$srcdir"/uwsgi.initd \
		"$pkgdir"/etc/init.d/uwsgi || return 1

	install -m 775 -d -o root -g uwsgi "$pkgdir"/var/log/uwsgi

	# Disable emutramp/mprotect, this is needed for luajit and cffi.
	paxmark -em "$pkgdir"/usr/sbin/uwsgi
}

proc _plugin {
	local name="${subpkgname#$pkgname-}"
	local desc="$(eval "echo \$_desc_$name")"
	setvar pkgdesc = "${desc:-"uWSGI plugin $name"}"
	setvar depends = ""uwsgi""

	cd $builddir

	local requires=$(sed '$a print(" ".join(REQUIRES))' \
		plugins/$name/uwsgiplugin.py 2>/dev/null | python3 2>/dev/null)

	local req; for req in $requires {
		if echo $_plugins | grep -qw $req {
			setvar depends = ""$depends $pkgname-$req""
		} else {
			error "There's no subpackage for requirement $req!"
			return 1
		}
	}

	install -m 755 -D ${name}_plugin.so \
		"$subpkgdir"/usr/lib/uwsgi/${name}_plugin.so || return 1
}

setvar sha512sums = ""cb3ce7dc9eb9806151b04b04dc80ac7204cb4ddadf295eea98d5ebbf3a8c02f4b0bfb9a0490997c5edf427e39d3073a2d5b4fe7bd8ec458b30c0aab8e1da9bef  uwsgi-2.0.15.tar.gz
63137d45437e00deb970d66e2abddf7f235636b748f6cf545f54ff5557066c2a71db5c4a3bab2edceb4e65d3d7fac887f1f4c0e77658127e02b64d3026780b4c  uwsgi.initd
370202e143d0e041a2e36905346080d3ca592c9a74705a8c4e142a1307d22b921c10e673d683ca284ea27d184474ed86edd7723a6e590d35a562ad7cf6afa529  uwsgi.ini
2798c9d2e49e29292ffe6a5a29b866301c78d5f322fc5d07dfa9569efdaa5220237a5f6744652fbdd957be29311ddaff190541333f042cbf0e907dfa98ce3e2a  readme.emperor
f3cff00926929a5bb40afafb65fd5228582af35fbf524562282020c4c4ae9c659231b2381f4b3cceb18e8f3f6c888c21bdd8ed4ddcd81e92fbc6a0891800ce38  alpine.buildconf
de68b16b44e554a79c073c9befa10566796316dbf4c375b4d6b633d80b0282694cca233f0a70f3d6570584324f14276826bbeb8f38b550c00087a05f9ba9227f  musl-fix-python.patch""