aboutsummaryrefslogtreecommitdiffstats
path: root/main/uwsgi/APKBUILD
blob: c7b39c7b8b51f5722fea833a4b3369bfcd386bc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
# 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>
pkgname=uwsgi
pkgver=2.0.17
pkgrel=1
pkgdesc="uWSGI application container server"
url="http://projects.unbit.it/uwsgi/"
arch="all"
license="GPL-2.0"
depends="mailcap"
install="uwsgi.pre-install"
pkgusers="uwsgi"
pkggroups="uwsgi"
makedepends="
	attr-dev
	curl-dev
	geoip-dev
	jansson-dev
	libcap-dev
	linux-headers
	linux-pam-dev
	libxml2-dev
	libxslt-dev
	lua5.3-dev
	paxmark
	pcre-dev
	postgresql-dev
	python
	python2-dev
	python3-dev
	zeromq-dev
	zlib-dev
	"
source="http://projects.unbit.it/downloads/uwsgi-${pkgver}.tar.gz
	uwsgi.initd
	uwsgi.ini
	readme.emperor
	alpine.buildconf
	musl-fix-python.patch
	"
options="!check"
builddir="$srcdir/$pkgname-$pkgver"

# secfixes:
#   2.0.16-r0:
#     - CVE-2018-6758

# Plugins for Python 2 or without compile dependency on Python.
# You may specify a custom name for so lib and subpackage after a colon.
_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.
_plugins3="gevent:gevent3 python:python3"

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

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


prepare() {
	default_prepare
	cp "$srcdir"/alpine.buildconf buildconf/alpine.ini
}

build() {
	cd "$builddir"

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

	export UWSGICONFIG_LUAPC="lua5.3"

	local item
	for item in $_plugins; do
		_build python "$item"
	done
	for item in $_plugins3; do
		_build python3 "$item"
	done
}

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

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

package() {
	cd "$builddir"

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

	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
}

_plugin() {
	local name="${subpkgname#$pkgname-}"
	local desc="$(eval "echo \$_desc_$name")"
	pkgdesc="${desc:-"uWSGI plugin $name"}"
	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; do
		if echo "$_plugins" | grep -qw "$req"; then
			depends="$depends $pkgname-$req"
		else
			error "There's no subpackage for requirement $req!"
			return 1
		fi
	done

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

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