aboutsummaryrefslogtreecommitdiffstats
path: root/main/uwsgi/APKBUILD
blob: 83c214d67288cc74601386d280a5cb0ba3b7df5c (plain) (blame)
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
216
217
# 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.19.1
pkgrel=1
pkgdesc="uWSGI application container server"
url="http://projects.unbit.it/uwsgi/"
arch="all"
license="custom" # GPL-2.0-only + linking exception
depends="mailcap"
install="$pkgname.pre-install $pkgname.post-upgrade"
pkgusers="uwsgi"
pkggroups="uwsgi"
makedepends="
	attr-dev
	curl-dev
	geoip-dev
	jansson-dev
	libcap-dev
	libucontext-dev
	linux-headers
	linux-pam-dev
	libxml2-dev
	libxslt-dev
	lua5.3-dev
	paxmark
	pcre-dev
	postgresql-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
	musl-ucontext.patch
	"
options="!check"

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

# 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:gevent3
	graylog2
	http
	legion_cache_fetch
	logcrypto
	logfile
	logpipe
	logsocket
	logzmq
	lua
	msgpack
	nagios
	notfound
	pam
	ping
	pty
	python:python3
	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
	"

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


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" python3 uwsgiconfig.py --build alpine

	export UWSGICONFIG_LUAPC="lua5.3"

	local item; for item in $_plugins; do
		_build_plugin "${item%:*}" "${item#*:}"
	done
}

_build_plugin() {
	local plugin="$1"
	local myname="$2"

	msg "Building $plugin plugin ($myname)"
	python3 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
	install -D LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE

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

_plugin() {
	local name="${subpkgname#$pkgname-}"
	pkgdesc="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

	case "$name" in
		# Mitigate breakages caused by injudicious rename in v3.11.
		python3)
			pkgdesc="uWSGI plugin for Python 3"
			provides="uwsgi-python=$pkgver-r$pkgrel"
			replaces="uwsgi-python"
			ln -s python3_plugin.so "$subpkgdir"/usr/lib/uwsgi/python_plugin.so
		;;
		# Mitigate breakages caused by injudicious rename in v3.11.
		gevent3)
			pkgdesc="uWSGI plugin for gevent (Python 3)"
			provides="uwsgi-gevent=$pkgver-r$pkgrel"
			replaces="uwsgi-gevent"
			ln -s gevent3_plugin.so "$subpkgdir"/usr/lib/uwsgi/gevent_plugin.so
		;;
	esac
}

sha512sums="e18359c5ea3606d5de7fb3a0074d777e1c4b41f51f4b1a21f1446f32253058d7924286d9ed8a159d4c6e6c0ea64df7fc3c70b2933c3433b9a9cce39737e702bf  uwsgi-2.0.19.1.tar.gz
1fef8a30e8e20b0322cf464a2adf744a4b46a35f4c9e104acacab4c99b913c5a0b537783bdfedf8900a4e7397e08079b675be2414beb571fd0b330985ac676cc  uwsgi.initd
370202e143d0e041a2e36905346080d3ca592c9a74705a8c4e142a1307d22b921c10e673d683ca284ea27d184474ed86edd7723a6e590d35a562ad7cf6afa529  uwsgi.ini
2798c9d2e49e29292ffe6a5a29b866301c78d5f322fc5d07dfa9569efdaa5220237a5f6744652fbdd957be29311ddaff190541333f042cbf0e907dfa98ce3e2a  readme.emperor
f3cff00926929a5bb40afafb65fd5228582af35fbf524562282020c4c4ae9c659231b2381f4b3cceb18e8f3f6c888c21bdd8ed4ddcd81e92fbc6a0891800ce38  alpine.buildconf
de68b16b44e554a79c073c9befa10566796316dbf4c375b4d6b633d80b0282694cca233f0a70f3d6570584324f14276826bbeb8f38b550c00087a05f9ba9227f  musl-fix-python.patch
d4b93e51619af5f8839cdc7279c69462947910df03104cfe6180d606403940fc60ad5dac66425ce8acbab67cc0c4f3e13126da0a329720cb03c67d447cd94ad9  musl-ucontext.patch"