# Maintainer: Sven-Hendrik Haase # Maintainer: David Runge # Contributor: Daniel Wallace # Contributor: Valentin Hăloiu # Contributor: Angel Velasquez # Contributor: Kevin Zuber # Contributor: Vsevolod Balashov # Contributor: David Runge # ALARM: Kevin Mihelich # - ripped out pypy stuff # - dropped mono plugin pkgbase=uwsgi pkgname=( uwsgi uwsgi-plugin-rack uwsgi-plugin-psgi uwsgi-plugin-cgi uwsgi-plugin-python uwsgi-plugin-php uwsgi-plugin-php7 uwsgi-plugin-lua51 uwsgi-plugin-webdav uwsgi-plugin-zabbix uwsgi-plugin-notfound ) pkgver=2.0.20 pkgrel=6 pkgdesc="A full stack for building hosting services" arch=(x86_64) url="https://uwsgi-docs.readthedocs.io/en/latest/" license=(GPL2) makedepends=( jansson libxcrypt libxml2 lua51 openssl pam pcre perl php-embed php7-embed python python-gevent python-greenlet ruby systemd util-linux zlib ) options=(debug) source=( "https://projects.unbit.it/downloads/$pkgbase-$pkgver.tar.gz" archlinux.ini emperor.ini emperor.uwsgi.service emperor.uwsgi.socket uwsgi_at.service uwsgi_at.socket uwsgi.logrotate uwsgi.sysusers uwsgi.tmpfiles "${pkgbase}-1.9.13-ruby2.0.patch" "${pkgbase}-2.0.20-php8_arginfo.patch::https://github.com/unbit/uwsgi/pull/2391/commits/90766833f2bcd2a83039ed4e18501bfb52162e6c.patch" "${pkgbase}-2.0.20-php8.1.patch::https://github.com/unbit/uwsgi/pull/2400/commits/8ca18da9a01eee19156243c5c0d28d2572698e4a.patch" "${pkgbase}-2.0.20-python3.10.patch::https://github.com/unbit/uwsgi/pull/2363/commits/94b28b156c26d5b0b4ba93fedb057e9aebf59545.patch" ) sha512sums=('22677a8ad1ea886e1a3a153f486474ce064a55e5b12515322345116980f699f4e2e73267f991c300d904284e06f265ea821e71ba3c97832b6f25705475b498ff' '2fdd81de1d4a9baf01c5a6f5958017263a0320fd091b666beb7b25f3e5e0e80567cbb3953cebf887f408291aaa1cfb1260ee1adef25be34b1400b51b9e1acf2b' 'd54c84838ddb2f389e115ebb81aa2583705c9e330f020e6583b496f9c271ed236b6820c2a065f2b55a79adbf13e262b9ff2428124a8044b8fa20ca29ca4930ac' '068ada6281fdeb504fed7e47dae2729d047ed810bb596e5268c1821ad275cd32110e801e93e7ba0ee2d92dbc39e1954180cf43d88d2990d42b802ceb54b50a9e' '592c85270f43b37e9c51aae126533830515b96fff9fcae969ee865fe173bd0550c7729530d5ff1e44ffee43cd5c78c96688ce091c677a4196379e24983c0180e' '29e51d3f441bd8af23c9378bca6cb38376bbbf31bb3b07f318a04ea5620cf25d35d7799ba4a8ecff12634dccd903eef27a6957b932370706e35549f8fbcd2455' 'fb51a4d102a1bc7d9f7d4c4f310ee65076bcfbc94b47e2dafdf9b20e99a661c5f938185dcf698437d81409376f0276b966f09b13c8a29462c48612df43c3f3ef' '937878372aa1556f6ba62ad7148d1681288c94d6cff609368a9e861dd4d4524330006a08ae5993441f7d3101170e3a0a681a4c8b3c2c13b364b8b1f81cf25117' '9e9eab08199cf08810ec95b0697cd8817226986d1e3aeb54845c0140ea5887360580348f295060c0558fb2d6aaed26fec929ea36b28cfeaf2b3588ce40fec3df' '4def9dcd06cfc2c6ce554add9d9545a01f3bb2681f0a2a6fc4ba68f91011111803a955cc41b5e70832ca448b196109368fdf874e81b7ec0edee4b51f864e16f7' '162ca1be96282b32e8e6be919b6315bfd08954c491056958985bf99e7f5bdad3511665f059329d6cb6ef5d222f9aa11d4dc43c72e6a963ab941ada959fe8d964' '35cc9f644741587043565e036cba2dfaad30820e4e1ced825becae8d9eb47088c2cef9611f979572422f71f195bb68b60f6d7755e543f617ef292b79551746fc' '8b5ca9e2d050468027115cc5a93ab750e845713cd9272816a017d0fba944eaa944f92b3cc0c6a9b350a8dd15f044342b57f087e44d5554ad4bbdd4a3d7d47120' 'baf12f5a6c1da2115e916a2a74c05651886531d61073b3a3c8f900e1f158b64d7d88ea7bb247b3e49513d8022703a6072d3303b5c993f93aeba6c3a8ed23528b') b2sums=('b3bff3564206119dc25bd42f399ced724354452af3414bd8b1e1876c4915e8e4f651843c2fca3795ae195bd8f608013e0c8b41e0535e76e894a3fee9410a6c3b' '16e0f25e7f9c423f61114bcbb98b5f94250539764375f626e8da2ed662715373461274f4125e5d2390c4b512762e8dad89b902bcd87dff30113c59216c3b72c4' '835a1036422e9821cd52ffdf5a6053bdd59fc700d473600bda60b6730746f6c0750c30c85f4139d3ea81c6b6dd10d6849f9406decee3179861c51aca90da6161' '80aa3c4d3f0310f5029ac01690d2ba718d8c86fa49cd1b4f3fc1bd5ae9eadaed6562bf0a48a0fd611e92f100a8594e08fb4bae58e25765fc2eb648cdf1c60b35' 'b6838c0c91811d4b677bf0f558134c69015708c308ef7080df328f12b0b0d58ae6cdebe277c29b6d11c20cfeb0847a4934e3a8924323e57ed661d6e9f6656a34' '6587282d48c53cff862951503c560fd3bfe2fbfe18d56af7b5fbf8299b2b99125101a866005ef1fbabe6af9640c200c5121949b3723865d8597a948ed3d650e8' '24c61581bb922f8065a6ea73164ca5d0b6c63ab4ca7c265660b2ec257b69ff9dd4b0349572ff20f54950961b4286c77da36c1d2778698c80943cfd6ed6531b10' 'a8b7d003f66ed5c5b1b60d57c05339af3dcdcf346eab52760810086e17f6936dd29ed7fd26281657bc86ac6721c989cbfbaa8e81f97111c807bcd06baece3bf2' '82e03ea95995cfa78abc4d930bd0c250f22788d9ca4dc0921cfbb44a965c0f851cbcc7a855e36ec6e6aa5bf33fbd313b4fe68a2f1c4b7935c2b297be25895324' '9759827f7619358383bf0e68c955522c0054620f742f5122a59888fadfc0bc20bd587eab7a77bc73e8ee4d20cf8f02625c07f241462e8ab9c08f5af509daaef3' '0068763ca5a2f1b60782f53070cbff8cf930e1463d9199b156b02413026bcdb3d923bffcbba063a26d620b8e734bdbd26a4c22776532546ad8c8e5c0c73bd7d6' '4acc8271631263723a50f7a454d89136b51f6016db1ee74abfecf9c46a8612017ba1e9fb743ac1d0f06a7633dfef5563094dce79a46cdceb4462b70d28337200' 'b64d05912fc63be37a44c2141155d049829ac8db9d2c258558c0584a8a9b6a9f4451cc6b1f03e078e83c939157689b833fb1377afc5a08e5141cce2abad9ad5f' '835537c1e204f6c0832a753b76c7ea70f76d2be050523d8c19d93208297a1fc7683b86f3b1680683472ed11347d0a5000b72f88f82c150e3113665a3c0f13dcd') prepare() { local _patch cd "$pkgbase-$pkgver" # allow using uwsgi-plugin-rack with ruby >= 2.0 patch -Np1 -i "$srcdir"/uwsgi-1.9.13-ruby2.0.patch # fix issue with php arginfo in php 8 # https://github.com/unbit/uwsgi/issues/2356 patch -Np1 -i ../"${pkgbase}-2.0.20-php8_arginfo.patch" # fix string related issue with php 8.1 # https://bugs.archlinux.org/task/73470 # https://github.com/unbit/uwsgi/issues/2394 patch -Np1 -i ../"${pkgbase}-2.0.20-php8.1.patch" # fix issues with python 3.10: https://github.com/unbit/uwsgi/pull/2363 patch -Np1 -i ../"${pkgbase}-2.0.20-python3.10.patch" # fix default lua pkgconfig name sed -e 's/lua5.1/lua51/' -i plugins/lua/uwsgiplugin.py # move ruby plugin to new location and fix its name mv plugins/ruby{19,} sed -e 's/ruby19/ruby/' -i plugins/ruby/uwsgiplugin.py # duplicate the php plugin, so that we can modify it (and leave the php7 # version unmodified) cp -av plugins/php{,7} # remove the explicit lib version from the linking stage of the PHP plugin as # we do not provide /usr/lib/libphp8.so sed -e "s/ + php_version//" -i plugins/php/uwsgiplugin.py # copy our custom build profile into place cp -v ../archlinux.ini buildconf/ } build() { cd "$pkgbase-$pkgver" python uwsgiconfig.py --verbose --build archlinux # build php7 plugin separately and override php-config in use UWSGICONFIG_PHPPATH='php-config7' \ python uwsgiconfig.py --verbose --plugin plugins/php7 archlinux php7 } package_uwsgi() { depends=('glibc' 'jansson' 'libcap.so' 'libcrypt.so' 'libpam.so' 'libxml2' 'libsystemd.so' 'libuuid.so' 'openssl' 'pcre' 'zlib') backup=('etc/uwsgi/emperor.ini') install=uwsgi.install cd "$pkgbase-$pkgver" install -vDm 755 "${pkgbase}" -t "$pkgdir/usr/bin/" install -vDm 644 ../uwsgi_at.service "$pkgdir"/usr/lib/systemd/system/uwsgi@.service install -vDm 644 ../uwsgi_at.socket "$pkgdir"/usr/lib/systemd/system/uwsgi@.socket install -vDm 644 ../emperor.uwsgi.service "$pkgdir"/usr/lib/systemd/system/emperor.uwsgi.service install -vDm 644 ../emperor.uwsgi.socket "$pkgdir"/usr/lib/systemd/system/emperor.uwsgi.socket install -vDm 644 ../emperor.ini -t "$pkgdir"/etc/uwsgi/ install -vDm 644 ../uwsgi.tmpfiles "$pkgdir"/usr/lib/tmpfiles.d/uwsgi.conf install -vDm 644 ../uwsgi.logrotate "$pkgdir"/etc/logrotate.d/uwsgi install -vDm 644 ../uwsgi.sysusers "$pkgdir"/usr/lib/sysusers.d/uwsgi.conf } package_uwsgi-plugin-cgi() { pkgdesc+=" (CGI plugin)" depends=('glibc' 'uwsgi') cd "$pkgbase-$pkgver" install -vDm 755 cgi_plugin.so -t "$pkgdir"/usr/lib/uwsgi/ } package_uwsgi-plugin-rack() { depends=('glibc' 'ruby' 'uwsgi') pkgdesc="Ruby rack plugin" cd "$pkgbase-$pkgver" install -vDm 755 {rack,fiber,rbthreads}_plugin.so -t "$pkgdir"/usr/lib/uwsgi/ } package_uwsgi-plugin-psgi() { pkgdesc+=" (Perl psgi plugin)" depends=('glibc' 'perl' 'uwsgi') cd "$pkgbase-$pkgver" install -vDm 755 psgi_plugin.so -t "$pkgdir"/usr/lib/uwsgi/ } package_uwsgi-plugin-python() { local site_packages=$(python -c "import site; print(site.getsitepackages()[0])") pkgdesc+=" (Python plugin)" depends=('glibc' 'python' 'python-gevent' 'python-greenlet' 'uwsgi') cd "$pkgbase-$pkgver" install -vDm 755 {asyncio,gevent,greenlet,python}_plugin.so -t "$pkgdir"/usr/lib/uwsgi/ install -vDm 644 uwsgidecorators.py -t "${pkgdir}${site_packages}" python -m compileall "${pkgdir}${site_packages}" python -O -m compileall "${pkgdir}${site_packages}" } package_uwsgi-plugin-lua51() { pkgdesc+=" (LUA plugin)" depends=('glibc' 'lua51' 'uwsgi') cd "$pkgbase-$pkgver" install -vDm 755 lua_plugin.so -t "$pkgdir"/usr/lib/uwsgi/ } package_uwsgi-plugin-php() { pkgdesc+=" (PHP plugin)" depends=('glibc' 'php-embed' 'uwsgi') cd "$pkgbase-$pkgver" install -vDm 755 php_plugin.so -t "$pkgdir"/usr/lib/uwsgi/ } package_uwsgi-plugin-php7() { pkgdesc+=" (PHP7 plugin)" depends=('glibc' 'php7-embed' 'uwsgi') cd "$pkgbase-$pkgver" install -vDm 755 php7_plugin.so -t "$pkgdir"/usr/lib/uwsgi/ } package_uwsgi-plugin-webdav() { pkgdesc+=" (WebDav plugin)" depends=('glibc' 'libxml2' 'uwsgi') cd "$pkgbase-$pkgver" install -vDm 755 webdav_plugin.so -t "$pkgdir"/usr/lib/uwsgi/ } package_uwsgi-plugin-zabbix() { pkgdesc+=" (zabbix plugin)" depends=('glibc' 'uwsgi') cd "$pkgbase-$pkgver" install -vDm 755 zabbix_plugin.so -t "$pkgdir"/usr/lib/uwsgi/ } package_uwsgi-plugin-notfound() { pkgdesc+=" (notfound plugin)" depends=('uwsgi') cd "$pkgbase-$pkgver" install -vDm 755 notfound_plugin.so -t "$pkgdir"/usr/lib/uwsgi/ }