# Contributor: Ɓukasz Jendrysik # Contributor: Kaarle Ritvanen # Contributor: Jakub Jirutka # Maintainer: Natanael Copa global pkgname := 'uwsgi' global pkgver := '2.0.15' global pkgrel := '0' global pkgdesc := '"uWSGI application container server'" global url := '"http://projects.unbit.it/uwsgi/'" global arch := '"all'" global license := '"GPL2'" global depends := '"mailcap'" global install := '"uwsgi.pre-install'" global pkgusers := '"uwsgi'" global pkggroups := '"uwsgi'" global 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 '" global source := ""http://projects.unbit.it/downloads/uwsgi-$(pkgver).tar.gz uwsgi.initd uwsgi.ini readme.emperor alpine.buildconf musl-fix-python.patch "" global 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. global _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. global _plugins3 := '"gevent:gevent3 python:python3'" global subpackages := ''"" for _p in [$_plugins $_plugins3] { global subpackages := ""$subpackages uwsgi-$(_p#*:):_plugin"" } global _desc_gevent := '"uWSGI plugin for gevent (Python 2)'" global _desc_gevent3 := '"uWSGI plugin for gevent (Python 3)'" global _desc_python := '"uWSGI plugin for Python 2'" global _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 env CC="gcc" python2 uwsgiconfig.py --build alpine || return 1 export UWSGICONFIG_LUAPC="lua5.2" var item = '' for item in [$_plugins] { _build python $item || return 1 } for item in [$_plugins3] { _build python3 $item || return 1 } } proc _build { var python = $1 var plugin = $(2%:*) var 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 { var name = $(subpkgname#$pkgname-) var desc = $[eval "echo \$_desc_$name] global pkgdesc := $(desc:-"uWSGI plugin $name") global depends := '"uwsgi'" cd $builddir var requires = $[sed '$a print(" ".join(REQUIRES))' \ plugins/$name/uwsgiplugin.py !2 >/dev/null | python3 !2 >/dev/null] var req = ''; for req in [$requires] { if echo $_plugins | grep -qw $req { global 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 } global 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'" (CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgname) op:Equal rhs:{(uwsgi)} spids:[12])] spids: [12] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgver) op:Equal rhs:{(2.0.15)} spids:[15])] spids: [15] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgrel) op:Equal rhs:{(0)} spids:[18])] spids: [18] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: {(DQ ("uWSGI application container server"))} spids: [21] ) ] spids: [21] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:url) op: Equal rhs: {(DQ ("http://projects.unbit.it/uwsgi/"))} spids: [26] ) ] spids: [26] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:arch) op:Equal rhs:{(DQ (all))} spids:[31])] spids: [31] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:license) op:Equal rhs:{(DQ (GPL2))} spids:[36])] spids: [36] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:depends) op:Equal rhs:{(DQ (mailcap))} spids:[41])] spids: [41] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:install) op: Equal rhs: {(DQ (uwsgi.pre-install))} spids: [46] ) ] spids: [46] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkgusers) op:Equal rhs:{(DQ (uwsgi))} spids:[51])] spids: [51] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pkggroups) op:Equal rhs:{(DQ (uwsgi))} spids:[56])] spids: [56] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:makedepends) op: Equal rhs: { (DQ ("\n") ("\tattr-dev\n") ("\tcurl-dev\n") ("\tgeoip-dev\n") ("\tjansson-dev\n") ("\tlibcap-dev\n") ("\tlinux-headers\n") ("\tlinux-pam-dev\n") ("\tlibxml2-dev\n") ("\tlibxslt-dev\n") ("\tlua5.2-dev\n") ("\tpaxmark\n") ("\tpcre-dev\n") ("\tpostgresql-dev\n") ("\tpython\n") ("\tpython2-dev\n") ("\tpython3-dev\n") ("\tzeromq-dev\n") ("\tzlib-dev\n") ("\t") ) } spids: [61] ) ] spids: [61] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:source) op: Equal rhs: { (DQ ("http://projects.unbit.it/downloads/uwsgi-") (${ VSub_Name pkgver) (".tar.gz\n") ("\tuwsgi.initd\n") ("\tuwsgi.ini\n") ("\treadme.emperor\n") ("\talpine.buildconf\n") ("\tmusl-fix-python.patch\n") ("\t") ) } spids: [85] ) ] spids: [85] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:builddir) op: Equal rhs: {(DQ ($ VSub_Name "$srcdir") (/) ($ VSub_Name "$pkgname") (-) ($ VSub_Name "$pkgver"))} spids: [100] ) ] spids: [100] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_plugins) op: Equal rhs: { (DQ ("\n") ("\talarm_curl\n") ("\tcache\n") ("\tcarbon\n") ("\tcgi\n") ("\tcheaper_backlog2\n") ("\tcheaper_busyness\n") ("\tcorerouter\n") ("\tcurl_cron\n") ("\tdumbloop\n") ("\tdummy\n") ("\techo\n") ("\temperor_amqp\n") ("\temperor_pg\n") ("\temperor_zeromq\n") ("\tfastrouter\n") ("\tforkptyrouter\n") ("\tgeoip\n") ("\tgevent\n") ("\tgraylog2\n") ("\thttp\n") ("\tlegion_cache_fetch\n") ("\tlogcrypto\n") ("\tlogfile\n") ("\tlogpipe\n") ("\tlogsocket\n") ("\tlogzmq\n") ("\tlua\n") ("\tmsgpack\n") ("\tnagios\n") ("\tnotfound\n") ("\tpam\n") ("\tping\n") ("\tpty\n") ("\tpython\n") ("\trawrouter\n") ("\tredislog\n") ("\trouter_basicauth\n") ("\trouter_cache\n") ("\trouter_expires\n") ("\trouter_hash\n") ("\trouter_http\n") ("\trouter_memcached\n") ("\trouter_metrics\n") ("\trouter_radius\n") ("\trouter_redirect\n") ("\trouter_redis\n") ("\trouter_rewrite\n") ("\trouter_static\n") ("\trouter_uwsgi\n") ("\trpc\n") ("\trrdtool\n") ("\trsyslog\n") ("\tsignal\n") ("\tspooler\n") ("\tsslrouter\n") ("\tstats_pusher_file\n") ("\tstats_pusher_socket\n") ("\tstats_pusher_statsd\n") ("\tsymcall\n") ("\tsyslog\n") ("\ttransformation_chunked\n") ("\ttransformation_gzip\n") ("\ttransformation_offload\n") ("\ttransformation_template\n") ("\ttransformation_tofile\n") ("\ttuntap\n") ("\tugreen\n") ("\twebdav\n") ("\txslt\n") ("\tzabbix\n") ("\tzergpool\n") ("\t") ) } spids: [116] ) ] spids: [116] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_plugins3) op: Equal rhs: {(DQ ("gevent:gevent3 python:python3"))} spids: [199] ) ] spids: [199] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:subpackages) op:Equal rhs:{(DQ )} spids:[205])] spids: [205] ) (ForEach iter_name: _p iter_words: [{($ VSub_Name "$_plugins")} {($ VSub_Name "$_plugins3")}] do_arg_iter: False body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:subpackages) op: Equal rhs: { (DQ ($ VSub_Name "$subpackages") (" uwsgi-") (BracedVarSub token: suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*:")}) spids: [227 231] ) (":_plugin") ) } spids: [223] ) ] spids: [223] ) ] spids: [220 235] ) spids: [214 218] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_desc_gevent) op: Equal rhs: {(DQ ("uWSGI plugin for gevent (Python 2)"))} spids: [238] ) ] spids: [238] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_desc_gevent3) op: Equal rhs: {(DQ ("uWSGI plugin for gevent (Python 3)"))} spids: [243] ) ] spids: [243] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_desc_python) op: Equal rhs: {(DQ ("uWSGI plugin for Python 2"))} spids: [248] ) ] spids: [248] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_desc_python3) op: Equal rhs: {(DQ ("uWSGI plugin for Python 3"))} spids: [253] ) ] spids: [253] ) (FuncDef name: prepare body: (BraceGroup children: [ (AndOr children: [ (C {(default_prepare)}) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (C {(cp)} {(DQ ($ VSub_Name "$srcdir")) (/alpine.buildconf)} {(buildconf/alpine.ini)}) ] spids: [264] ) spids: [260 263] ) (FuncDef name: build body: (BraceGroup children: [ (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (C {(msg)} {(DQ ("Building core"))}) (AndOr children: [ (SimpleCommand words: [{(python2)} {(uwsgiconfig.py)} {(--build)} {(alpine)}] more_env: [(env_pair name:CC val:{(DQ (gcc))} spids:[314])] ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (C {(export)} {(Lit_VarLike "UWSGICONFIG_LUAPC=") (DQ (lua5.2))}) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:item) op:Equal spids:[346])] spids: [344] ) (ForEach iter_name: item iter_words: [{($ VSub_Name "$_plugins")}] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [ (C {(_build)} {(python)} {(DQ ($ VSub_Name "$item"))}) (ControlFlow token: arg_word: {(1)} ) ] op_id: Op_DPipe ) ] spids: [358 376] ) spids: [354 356] ) (ForEach iter_name: item iter_words: [{($ VSub_Name "$_plugins3")}] do_arg_iter: False body: (DoGroup children: [ (AndOr children: [ (C {(_build)} {(python3)} {(DQ ($ VSub_Name "$item"))}) (ControlFlow token: arg_word: {(1)} ) ] op_id: Op_DPipe ) ] spids: [388 406] ) spids: [384 386] ) ] spids: [292] ) spids: [288 291] ) (FuncDef name: _build body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:python) op: Equal rhs: {(DQ ($ VSub_Number "$1"))} spids: [420] ) ] spids: [418] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:plugin) op: Equal rhs: { (DQ (BracedVarSub token: suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(":*")}) spids: [430 434] ) ) } spids: [428] ) ] spids: [426] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:myname) op: Equal rhs: { (DQ (BracedVarSub token: suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{("*:")}) spids: [442 446] ) ) } spids: [440] ) ] spids: [438] ) (C {(msg)} { (DQ ("Building ") ($ VSub_Name "$plugin") (" plugin (") ($ VSub_Name "$myname") (")")) } ) (C {($ VSub_Name "$python")} {(uwsgiconfig.py)} {(--plugin)} {(plugins/) ($ VSub_Name "$plugin")} {(alpine)} {($ VSub_Name "$myname")} ) ] spids: [415] ) spids: [411 414] ) (FuncDef name: package body: (BraceGroup children: [ (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (AndOr children: [ (C {(install)} {(-m)} {(755)} {(-D)} {(uwsgi)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/sbin/uwsgi)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(install)} {(-m)} {(644)} {(-D)} {(DQ ($ VSub_Name "$srcdir")) (/readme.emperor)} {(DQ ($ VSub_Name "$pkgdir")) (/etc/uwsgi/conf.d/readme.emperor)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(install)} {(-m)} {(644)} {(-D)} {(DQ ($ VSub_Name "$srcdir")) (/uwsgi.ini)} {(DQ ($ VSub_Name "$pkgdir")) (/etc/uwsgi/uwsgi.ini)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(install)} {(-m)} {(755)} {(-D)} {(DQ ($ VSub_Name "$srcdir")) (/uwsgi.initd)} {(DQ ($ VSub_Name "$pkgdir")) (/etc/init.d/uwsgi)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) (C {(install)} {(-m)} {(775)} {(-d)} {(-o)} {(root)} {(-g)} {(uwsgi)} {(DQ ($ VSub_Name "$pkgdir")) (/var/log/uwsgi)} ) (C {(paxmark)} {(-em)} {(DQ ($ VSub_Name "$pkgdir")) (/usr/sbin/uwsgi)}) ] spids: [482] ) spids: [478 481] ) (FuncDef name: _plugin body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: { (DQ (BracedVarSub token: suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {($ VSub_Name "$pkgname") (-)} ) spids: [649 654] ) ) } spids: [647] ) ] spids: [645] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:desc) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(eval)} { (DQ ("echo ") (EscapedLiteralPart token:) (_desc_) ($ VSub_Name "$name") ) } ) ] ) left_token: spids: [662 671] ) ) } spids: [660] ) ] spids: [658] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pkgdesc) op: Equal rhs: { (DQ (BracedVarSub token: suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(DQ ("uWSGI plugin ") ($ VSub_Name "$name"))} ) spids: [677 684] ) ) } spids: [675] ) ] spids: [675] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:depends) op: Equal rhs: {(DQ (uwsgi))} spids: [688] ) ] spids: [688] ) (C {(cd)} {(DQ ($ VSub_Name "$builddir"))}) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:requires) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (SimpleCommand words: [ {(sed)} {(SQ <"$a print(\" \".join(REQUIRES))">)} {(plugins/) ($ VSub_Name "$name") (/uwsgiplugin.py)} ] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [719] ) ] ) (SimpleCommand words: [{(python3)}] redirects: [ (Redir op_id: Redir_Great fd: 2 arg_word: {(/dev/null)} spids: [726] ) ] ) ] negated: False ) ] ) left_token: spids: [706 728] ) } spids: [705] ) ] spids: [703] ) (Sentence child: (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:req) op:Equal spids:[734])] spids: [732] ) terminator: ) (ForEach iter_name: req iter_words: [{($ VSub_Name "$requires")}] do_arg_iter: False body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$_plugins"))}) (C {(grep)} {(-qw)} {(DQ ($ VSub_Name "$req"))}) ] negated: False ) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:depends) op: Equal rhs: { (DQ ($ VSub_Name "$depends") (" ") ($ VSub_Name "$pkgname") (-) ($ VSub_Name "$req") ) } spids: [771] ) ] spids: [771] ) ] spids: [-1 768] ) ] else_action: [ (C {(error)} { (DQ ("There's no subpackage for requirement ") ($ VSub_Name "$req") ("!")) } ) (ControlFlow token: arg_word: {(1)} ) ] spids: [781 798] ) ] spids: [746 801] ) spids: [742 744] ) (AndOr children: [ (C {(install)} {(-m)} {(755)} {(-D)} {(${ VSub_Name name) (_plugin.so)} {(DQ ($ VSub_Name "$subpkgdir")) (/usr/lib/uwsgi/) (${ VSub_Name name) (_plugin.so)} ) (ControlFlow token: arg_word:{(1)}) ] op_id: Op_DPipe ) ] spids: [642] ) spids: [638 641] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:sha512sums) op: Equal rhs: { (DQ ( "cb3ce7dc9eb9806151b04b04dc80ac7204cb4ddadf295eea98d5ebbf3a8c02f4b0bfb9a0490997c5edf427e39d3073a2d5b4fe7bd8ec458b30c0aab8e1da9bef uwsgi-2.0.15.tar.gz\n" ) ( "63137d45437e00deb970d66e2abddf7f235636b748f6cf545f54ff5557066c2a71db5c4a3bab2edceb4e65d3d7fac887f1f4c0e77658127e02b64d3026780b4c uwsgi.initd\n" ) ( "370202e143d0e041a2e36905346080d3ca592c9a74705a8c4e142a1307d22b921c10e673d683ca284ea27d184474ed86edd7723a6e590d35a562ad7cf6afa529 uwsgi.ini\n" ) ( "2798c9d2e49e29292ffe6a5a29b866301c78d5f322fc5d07dfa9569efdaa5220237a5f6744652fbdd957be29311ddaff190541333f042cbf0e907dfa98ce3e2a readme.emperor\n" ) ( "f3cff00926929a5bb40afafb65fd5228582af35fbf524562282020c4c4ae9c659231b2381f4b3cceb18e8f3f6c888c21bdd8ed4ddcd81e92fbc6a0891800ce38 alpine.buildconf\n" ) ( "de68b16b44e554a79c073c9befa10566796316dbf4c375b4d6b633d80b0282694cca233f0a70f3d6570584324f14276826bbeb8f38b550c00087a05f9ba9227f musl-fix-python.patch" ) ) } spids: [838] ) ] spids: [838] ) ] )