Gentoo Archives: gentoo-commits

From: Alexys Jacob <ultrabug@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: www-servers/uwsgi/
Date: Mon, 17 Aug 2020 10:28:56
Message-Id: 1597660124.827c22d66d43351553c7397e3a9748c8b503c762.ultrabug@gentoo
1 commit: 827c22d66d43351553c7397e3a9748c8b503c762
2 Author: Alexys Jacob <ultrabug <AT> gentoo <DOT> org>
3 AuthorDate: Mon Aug 17 10:28:23 2020 +0000
4 Commit: Alexys Jacob <ultrabug <AT> gentoo <DOT> org>
5 CommitDate: Mon Aug 17 10:28:44 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=827c22d6
7
8 www-servers/uwsgi: version bump fix #731936 #727692
9
10 Package-Manager: Portage-3.0.2, Repoman-2.3.23
11 Signed-off-by: Alexys Jacob <ultrabug <AT> gentoo.org>
12
13 www-servers/uwsgi/Manifest | 1 +
14 www-servers/uwsgi/uwsgi-2.0.19.1.ebuild | 377 ++++++++++++++++++++++++++++++++
15 2 files changed, 378 insertions(+)
16
17 diff --git a/www-servers/uwsgi/Manifest b/www-servers/uwsgi/Manifest
18 index ba58336b3f3..7edf4a9d62e 100644
19 --- a/www-servers/uwsgi/Manifest
20 +++ b/www-servers/uwsgi/Manifest
21 @@ -1 +1,2 @@
22 DIST uwsgi-2.0.18.tar.gz 801555 BLAKE2B d8008e751fd699474a1b7d6276c10b3d2f1ebd0ca325e45bfb3b13f81e88de20e4e7389cd6aa9c8b3daa964d9b11524ee71e93717ed9762bf021471f6a2c09fa SHA512 6561703279bcc4a81311d033810ac066d0f113bab13b0942f3eef86cac29c584a6641b52476840d6895151aee5ed064ae2d03b18932cf7f47e62f4eeed76da61
23 +DIST uwsgi-2.0.19.1.tar.gz 804398 BLAKE2B 73fc19990866eb1058a742b34a817b3bd87e00c838da055bece2bff5e13c161f53c642866ed591aa4afeb23ef924205502f2cb0a4cf9d303b5b63fb9a53f57e2 SHA512 34b55f7c7a77dc0b0dab34d1a9ca9a4cba8a9261969656c88435e7f32fe8a0c5654e1562706775f77e2f60c4ad0f5c6055257a23ab7d387c1579639e054807b5
24
25 diff --git a/www-servers/uwsgi/uwsgi-2.0.19.1.ebuild b/www-servers/uwsgi/uwsgi-2.0.19.1.ebuild
26 new file mode 100644
27 index 00000000000..bafab8c38f0
28 --- /dev/null
29 +++ b/www-servers/uwsgi/uwsgi-2.0.19.1.ebuild
30 @@ -0,0 +1,377 @@
31 +# Copyright 1999-2020 Gentoo Authors
32 +# Distributed under the terms of the GNU General Public License v2
33 +
34 +EAPI=6
35 +
36 +PYTHON_COMPAT=( python3_{6,7,8} )
37 +PYTHON_REQ_USE="threads(+)"
38 +
39 +RUBY_OPTIONAL="yes"
40 +USE_RUBY="ruby23 ruby24 ruby25 ruby26"
41 +
42 +PHP_EXT_INI="no"
43 +PHP_EXT_NAME="dummy"
44 +PHP_EXT_OPTIONAL_USE="php"
45 +USE_PHP="php7-2 php7-3 php7-4" # deps must be registered separately below
46 +
47 +MY_P="${P/_/-}"
48 +
49 +inherit eapi7-ver eutils flag-o-matic multilib pax-utils php-ext-source-r3 python-r1 ruby-ng
50 +
51 +DESCRIPTION="uWSGI server for Python web applications"
52 +HOMEPAGE="http://projects.unbit.it/uwsgi/"
53 +SRC_URI="https://github.com/unbit/uwsgi/archive/${PV}.tar.gz -> ${P}.tar.gz"
54 +
55 +LICENSE="GPL-2"
56 +SLOT="0"
57 +KEYWORDS="~amd64 ~arm ~x86 ~amd64-linux"
58 +
59 +UWSGI_PLUGINS_STD=( ping cache carbon nagios rpc rrdtool
60 + http ugreen signal syslog rsyslog
61 + router_{uwsgi,redirect,basicauth,rewrite,http,cache,static,memcached,redis,hash,expires,metrics}
62 + {core,fast,raw,ssl}router
63 + redislog mongodblog log{file,socket}
64 + spooler cheaper_busyness symcall
65 + transformation_{chunked,gzip,offload,tofile}
66 + zergpool )
67 +UWSGI_PLUGINS_OPT=( alarm_{curl,xmpp} clock_{monotonic,realtime} curl_cron
68 + dumbloop echo emperor_{amqp,pg,zeromq} forkptyrouter
69 + geoip graylog2 legion_cache_fetch ldap log{crypto,pipe} notfound pam
70 + rados router_{access,radius,spnego,xmldir}
71 + sqlite ssi stats_pusher_statsd
72 + systemd_logger transformation_toupper tuntap webdav xattr xslt zabbix )
73 +
74 +LANG_SUPPORT_SIMPLE=( cgi mono perl ) # plugins which can be built in the main build process
75 +LANG_SUPPORT_EXTENDED=( go lua php python python-asyncio python-gevent ruby )
76 +
77 +# plugins to be ignored (for now):
78 +# cheaper_backlog2: example plugin
79 +# coroae: TODO
80 +# cplusplus: partially example code, needs explicit class
81 +# dummy: no idea
82 +# example: example plugin
83 +# exception_log: example plugin
84 +# *java*: TODO
85 +# v8: TODO
86 +# matheval: TODO
87 +IUSE="apache2 +caps debug +embedded expat jemalloc json libressl +pcre +routing selinux +ssl +xml yajl yaml zeromq"
88 +
89 +for plugin in ${UWSGI_PLUGINS_STD[@]}; do IUSE="${IUSE} +uwsgi_plugins_${plugin}"; done
90 +for plugin in ${UWSGI_PLUGINS_OPT[@]}; do IUSE="${IUSE} uwsgi_plugins_${plugin}"; done
91 +IUSE="${IUSE} ${LANG_SUPPORT_SIMPLE[@]} ${LANG_SUPPORT_EXTENDED[@]}"
92 +
93 +REQUIRED_USE="|| ( ${LANG_SUPPORT_SIMPLE[@]} ${LANG_SUPPORT_EXTENDED[@]} )
94 + uwsgi_plugins_logcrypto? ( ssl )
95 + uwsgi_plugins_sslrouter? ( ssl )
96 + routing? ( pcre )
97 + uwsgi_plugins_emperor_zeromq? ( zeromq )
98 + uwsgi_plugins_forkptyrouter? ( uwsgi_plugins_corerouter )
99 + uwsgi_plugins_router_xmldir? ( xml !expat )
100 + python? ( ${PYTHON_REQUIRED_USE} )
101 + python-asyncio? ( || ( $(python_gen_useflags -3) ) )
102 + python-gevent? ( python )
103 + expat? ( xml )"
104 +
105 +# util-linux is required for libuuid when requesting zeromq support
106 +# Order:
107 +# 1. Unconditional
108 +# 2. General features
109 +# 3. Plugins
110 +# 4. Language/app support
111 +CDEPEND="
112 + sys-libs/zlib
113 + caps? ( sys-libs/libcap )
114 + json? (
115 + !yajl? ( dev-libs/jansson )
116 + yajl? ( dev-libs/yajl )
117 + )
118 + pcre? ( dev-libs/libpcre:3 )
119 + ssl? (
120 + !libressl? ( dev-libs/openssl:0= )
121 + libressl? ( dev-libs/libressl )
122 + )
123 + xml? (
124 + !expat? ( dev-libs/libxml2 )
125 + expat? ( dev-libs/expat )
126 + )
127 + yaml? ( dev-libs/libyaml )
128 + zeromq? ( net-libs/zeromq sys-apps/util-linux )
129 + uwsgi_plugins_alarm_curl? ( net-misc/curl )
130 + uwsgi_plugins_alarm_xmpp? ( net-libs/gloox )
131 + uwsgi_plugins_curl_cron? ( net-misc/curl )
132 + uwsgi_plugins_emperor_pg? ( dev-db/postgresql:= )
133 + uwsgi_plugins_geoip? ( dev-libs/geoip )
134 + uwsgi_plugins_ldap? ( net-nds/openldap )
135 + uwsgi_plugins_pam? ( sys-libs/pam )
136 + uwsgi_plugins_sqlite? ( dev-db/sqlite:3 )
137 + uwsgi_plugins_rados? ( sys-cluster/ceph )
138 + uwsgi_plugins_router_access? ( sys-apps/tcp-wrappers )
139 + uwsgi_plugins_router_spnego? ( virtual/krb5 )
140 + uwsgi_plugins_systemd_logger? ( sys-apps/systemd )
141 + uwsgi_plugins_webdav? ( dev-libs/libxml2 )
142 + uwsgi_plugins_xslt? ( dev-libs/libxslt )
143 + go? ( sys-devel/gcc:=[go] )
144 + lua? ( dev-lang/lua:= )
145 + mono? ( dev-lang/mono:= )
146 + perl? ( dev-lang/perl:= )
147 + php? (
148 + net-libs/libnsl
149 + php_targets_php7-2? ( dev-lang/php:7.2[embed] )
150 + php_targets_php7-3? ( dev-lang/php:7.3[embed] )
151 + php_targets_php7-4? ( dev-lang/php:7.4[embed] )
152 + )
153 + python? ( ${PYTHON_DEPS} )
154 + python-asyncio? ( virtual/python-greenlet[${PYTHON_USEDEP}] )
155 + python-gevent? ( >=dev-python/gevent-1.3.5[${PYTHON_USEDEP}] )
156 + ruby? ( $(ruby_implementations_depend) )"
157 +DEPEND="${CDEPEND}
158 + virtual/pkgconfig"
159 +RDEPEND="${CDEPEND}
160 + selinux? ( sec-policy/selinux-uwsgi )
161 + uwsgi_plugins_rrdtool? ( net-analyzer/rrdtool )"
162 +
163 +S="${WORKDIR}/${MY_P}"
164 +
165 +src_unpack() {
166 + echo ${PYTHON_USEDEP}
167 + default
168 +}
169 +
170 +pkg_setup() {
171 + python_setup
172 + use ruby && ruby-ng_pkg_setup
173 +}
174 +
175 +src_prepare() {
176 + default
177 +
178 + sed -i \
179 + -e "s|'-O2', ||" \
180 + -e "s|'-Werror', ||" \
181 + -e "s|uc.get('plugin_dir')|uc.get('plugin_build_dir')|" \
182 + uwsgiconfig.py || die "sed failed"
183 +
184 + sed -i \
185 + -e "s|/lib|/$(get_libdir)|" \
186 + plugins/php/uwsgiplugin.py || die "sed failed"
187 +}
188 +
189 +src_configure() {
190 + local embedded_plugins=()
191 + local plugins=()
192 + local malloc_impl="libc"
193 + local json="false"
194 + local xml="false"
195 +
196 + for p in ${UWSGI_PLUGINS_STD[@]} ${UWSGI_PLUGINS_OPT[@]} ; do
197 + use uwsgi_plugins_${p} && embedded_plugins+=("${p}")
198 + done
199 + for p in ${LANG_SUPPORT_SIMPLE[@]} ; do
200 + use ${p} && plugins+=("${p}")
201 + done
202 +
203 + # do not embed any plugins
204 + if ! use embedded; then
205 + plugins=( ${plugins[@]} ${embedded_plugins[@]} )
206 + embedded_plugins=()
207 + fi
208 +
209 + # flatten the arrays
210 + plugins=${plugins[@]}
211 + embedded_plugins=${embedded_plugins[@]}
212 +
213 + # rename some of the use flags, language plugins are always real plugins
214 + plugins="${plugins/perl/psgi}"
215 + plugins="${plugins/sqlite/sqlite3}"
216 + embedded_plugins="${embedded_plugins/sqlite/sqlite3}"
217 +
218 + # override defaults as requested by the user
219 + if use xml; then
220 + use expat && xml="expat" || xml="libxml2"
221 + fi
222 + if use json; then
223 + use yajl && json="yajl" || json="jansson"
224 + fi
225 + use jemalloc && malloc_impl="jemalloc"
226 +
227 + # prepare the buildconf for gentoo
228 + cp "${FILESDIR}"/gentoo.buildconf buildconf/gentoo.ini || die
229 + sed -i \
230 + -e "s|VAR_XML|${xml}|" \
231 + -e "s|VAR_YAML|$(usex yaml libyaml true)|" \
232 + -e "s|VAR_JSON|${json}|" \
233 + -e "s|VAR_SSL|$(usex ssl true false)|" \
234 + -e "s|VAR_PCRE|$(usex pcre true false)|" \
235 + -e "s|VAR_ZMQ|$(usex zeromq true false)|" \
236 + -e "s|VAR_ROUTING|$(usex routing true false)|" \
237 + -e "s|VAR_DEBUG|$(usex debug true false)|" \
238 + -e "s|VAR_MALLOC|${malloc_impl}|" \
239 + -e "s|VAR_PLUGINS|${plugins// /, }|" \
240 + -e "s|VAR_PLUGIN_DIR|${EPREFIX}/usr/$(get_libdir)/uwsgi|" \
241 + -e "s|VAR_BUILD_DIR|${T}/plugins|" \
242 + -e "s|VAR_EMBEDDED|${embedded_plugins// /, }|" \
243 + buildconf/gentoo.ini || die "sed failed"
244 +
245 + if ! use caps; then
246 + sed -i -e 's|sys/capability.h|DISABLED|' uwsgiconfig.py || die "sed failed"
247 + fi
248 +
249 + if ! use zeromq; then
250 + sed -i -e 's|uuid/uuid.h|DISABLED|' uwsgiconfig.py || die "sed failed"
251 + fi
252 +
253 + if use uwsgi_plugins_emperor_pg ; then
254 + PGPV="$(best_version dev-db/postgresql)"
255 + PGSLOT="$(ver_cut 1-2 ${PGPV##dev-db/postgresql-})"
256 + sed -i \
257 + -e "s|pg_config|pg_config${PGSLOT/.}|" \
258 + plugins/emperor_pg/uwsgiplugin.py || die "sed failed"
259 + fi
260 +}
261 +
262 +each_ruby_compile() {
263 + cd "${WORKDIR}/${MY_P}" || die "sed failed"
264 +
265 + UWSGICONFIG_RUBYPATH="${RUBY}" python uwsgiconfig.py --plugin plugins/rack gentoo rack_${RUBY##*/} || die "building plugin for ${RUBY} failed"
266 + UWSGICONFIG_RUBYPATH="${RUBY}" python uwsgiconfig.py --plugin plugins/fiber gentoo fiber_${RUBY##*/}|| die "building fiber plugin for ${RUBY} failed"
267 + UWSGICONFIG_RUBYPATH="${RUBY}" python uwsgiconfig.py --plugin plugins/rbthreads gentoo rbthreads_${RUBY##*/}|| die "building rbthreads plugin for ${RUBY} failed"
268 +}
269 +
270 +python_compile_plugins() {
271 + local EPYV
272 + local PYV
273 + EPYV=${EPYTHON/.}
274 + PYV=${EPYV/python}
275 +
276 + ${PYTHON} uwsgiconfig.py --plugin plugins/python gentoo ${EPYV} || die "building plugin for ${EPYTHON} failed"
277 +
278 + if use python-asyncio ; then
279 + if [[ "${PYV}" != "27" ]] ; then
280 + ${PYTHON} uwsgiconfig.py --plugin plugins/asyncio gentoo asyncio${PYV} || die "building plugin for asyncio-support in ${EPYTHON} failed"
281 + fi
282 + fi
283 +
284 + if use python-gevent ; then
285 + ${PYTHON} uwsgiconfig.py --plugin plugins/gevent gentoo gevent${PYV} || die "building plugin for gevent-support in ${EPYTHON} failed"
286 + fi
287 +
288 + if use python-gevent || use python-asyncio; then
289 + ${PYTHON} uwsgiconfig.py --plugin plugins/greenlet gentoo greenlet${PYV} || die "building plugin for greenlet-support in ${EPYTHON} failed"
290 + fi
291 +}
292 +
293 +python_install_symlinks() {
294 + dosym uwsgi /usr/bin/uwsgi_${EPYTHON/.}
295 +}
296 +
297 +src_compile() {
298 + mkdir -p "${T}/plugins" || die
299 +
300 + CPUCOUNT=1 python uwsgiconfig.py --build gentoo || die "building uwsgi failed"
301 +
302 + if use go ; then
303 + python uwsgiconfig.py --plugin plugins/gccgo gentoo || die "building plugin for go failed"
304 + fi
305 +
306 + if use lua ; then
307 + # setting the name for the pkg-config file to lua, since we don't have
308 + # slotted lua
309 + UWSGICONFIG_LUAPC="lua" python uwsgiconfig.py --plugin plugins/lua gentoo || die "building plugin for lua failed"
310 + fi
311 +
312 + if use php ; then
313 + for s in $(php_get_slots); do
314 + UWSGICONFIG_PHPDIR="/usr/$(get_libdir)/${s}" python uwsgiconfig.py --plugin plugins/php gentoo ${s/.} || die "building plugin for ${s} failed"
315 + done
316 + fi
317 +
318 + if use python ; then
319 + python_foreach_impl python_compile_plugins
320 + fi
321 +
322 + if use ruby ; then
323 + ruby-ng_src_compile
324 + fi
325 +}
326 +
327 +src_install() {
328 + dobin uwsgi
329 + pax-mark m "${D}"/usr/bin/uwsgi
330 +
331 + insinto /usr/$(get_libdir)/uwsgi
332 + doins "${T}/plugins"/*.so
333 +
334 + use cgi && dosym uwsgi /usr/bin/uwsgi_cgi
335 + use go && dosym uwsgi /usr/bin/uwsgi_go
336 + use lua && dosym uwsgi /usr/bin/uwsgi_lua
337 + use mono && dosym uwsgi /usr/bin/uwsgi_mono
338 + use perl && dosym uwsgi /usr/bin/uwsgi_psgi
339 +
340 + if use php ; then
341 + for s in $(php_get_slots); do
342 + dosym uwsgi /usr/bin/uwsgi_${s/.}
343 + done
344 + fi
345 +
346 + if use python ; then
347 + python_foreach_impl python_install_symlinks
348 + python_foreach_impl python_domodule uwsgidecorators.py
349 + fi
350 +
351 + newinitd "${FILESDIR}"/uwsgi.initd-r7 uwsgi
352 + newconfd "${FILESDIR}"/uwsgi.confd-r4 uwsgi
353 + keepdir /etc/"${PN}".d
354 + use uwsgi_plugins_spooler && keepdir /var/spool/"${PN}"
355 +}
356 +
357 +pkg_postinst() {
358 + if use apache2 ; then
359 + ewarn "As reported on bug #650776 [1], Apache module mod_proxy_uwsgi"
360 + ewarn "is being transferred to upstream Apache since 2.4.30, see [2]."
361 + ewarn "We therefore do not build them any more."
362 + ewarn " [1] https://bugs.gentoo.org/650776"
363 + ewarn " [2] https://github.com/unbit/uwsgi/issues/1636"
364 + fi
365 +
366 + elog "Append the following options to the uwsgi call to load the respective language plugin:"
367 + use cgi && elog " '--plugins cgi' for cgi"
368 + use lua && elog " '--plugins lua' for lua"
369 + use mono && elog " '--plugins mono' for mono"
370 + use perl && elog " '--plugins psgi' for perl"
371 +
372 + if use php ; then
373 + for s in $(php_get_slots); do
374 + elog " '--plugins ${s/.}' for ${s}"
375 + done
376 + fi
377 +
378 + python_pkg_postinst() {
379 + local EPYV
380 + local PYV
381 + EPYV=${EPYTHON/.}
382 + PYV=${EPYV/python}
383 +
384 + elog " "
385 + elog " '--plugins ${EPYV}' for ${EPYTHON}"
386 + if use python-asyncio ; then
387 + if [[ ${EPYV} == python34 ]] ; then
388 + elog " '--plugins ${EPYV},asyncio${PYV}' for asyncio support in ${EPYTHON}"
389 + else
390 + elog " (asyncio is only supported in python3.4)"
391 + fi
392 + fi
393 + if use python-gevent ; then
394 + elog " '--plugins ${EPYV},gevent${PYV}' for gevent support in ${EPYTHON}"
395 + fi
396 + }
397 +
398 + use python && python_foreach_impl python_pkg_postinst
399 +
400 + if use ruby ; then
401 + for ruby in $(ruby_get_use_implementations) ; do
402 + elog " '--plugins rack_${ruby/.}' for ${ruby}"
403 + elog " '--plugins fiber_${ruby/.}' for ${ruby} fibers"
404 + elog " '--plugins rbthreads_${ruby/.}' for ${ruby} rbthreads"
405 + done
406 + fi
407 +}