From 3391ef078ab86d3160b5e2fb3cfb794b75ce2a76 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 1 Aug 2013 02:03:26 -0700 Subject: Thu Aug 1 02:01:53 PDT 2013 --- community/uwsgi/PKGBUILD | 235 +++++++++++++++++++++++ community/uwsgi/archlinux.ini | 17 ++ community/uwsgi/tmpfilesd | 1 + community/uwsgi/uwsgi.install | 11 ++ community/uwsgi/uwsgi@.service | 13 ++ community/uwsgi/uwsgi@.socket | 9 + community/uwsgi/uwsgi_fix_rpath.patch | 66 +++++++ community/uwsgi/uwsgi_ruby20_compatibility.patch | 42 ++++ community/uwsgi/uwsgi_trick_chroot.patch | 16 ++ 9 files changed, 410 insertions(+) create mode 100644 community/uwsgi/PKGBUILD create mode 100644 community/uwsgi/archlinux.ini create mode 100644 community/uwsgi/tmpfilesd create mode 100644 community/uwsgi/uwsgi.install create mode 100644 community/uwsgi/uwsgi@.service create mode 100644 community/uwsgi/uwsgi@.socket create mode 100644 community/uwsgi/uwsgi_fix_rpath.patch create mode 100644 community/uwsgi/uwsgi_ruby20_compatibility.patch create mode 100644 community/uwsgi/uwsgi_trick_chroot.patch (limited to 'community/uwsgi') diff --git a/community/uwsgi/PKGBUILD b/community/uwsgi/PKGBUILD new file mode 100644 index 000000000..093f938c0 --- /dev/null +++ b/community/uwsgi/PKGBUILD @@ -0,0 +1,235 @@ +# $Id: PKGBUILD 94832 2013-07-30 22:31:20Z dwallace $ +# Maintainer: Daniel Wallace +# Contributor: Valentin Hăloiu +# Contributor: Angel Velasquez +# Contributor: Kevin Zuber +# Contributor: Vsevolod Balashov + +pkgbase=uwsgi +pkgname=(uwsgi + uwsgi-plugin-common + uwsgi-plugin-rack + uwsgi-plugin-python2 + uwsgi-plugin-python + uwsgi-plugin-nagios + uwsgi-plugin-router + uwsgi-plugin-admin + uwsgi-plugin-ruby + uswgi-plugin-greenlet + uswgi-plugin-php + uwsgi-plugin-carbon + uwsgi-plugin-rrdtool + uwsgi-plugin-erlang + uwsgi-plugin-pam + uwsgi-plugin-jvm + uwsgi-plugin-zergpool + ) +pkgver=1.9.14 +pkgrel=1 +arch=(i686 x86_64) +url="http://projects.unbit.it/$pkgbase" +license=(GPL2) +conflicts=(python-$pkgbase) +makedepends=(gcc python python2 ruby python2-greenlet php curl libxml2 libyaml + perl lua51 pcre libedit openssl bzip2 gmp erlang pam java-environment=7 + jansson) +source=(http://projects.unbit.it/downloads/$pkgbase-$pkgver.tar.gz + archlinux.ini + tmpfilesd + uwsgi@.service + uwsgi@.socket + uwsgi_fix_rpath.patch + uwsgi_ruby20_compatibility.patch + uwsgi_trick_chroot.patch) + +prepare(){ + cd $srcdir/$pkgbase-$pkgver + cp $srcdir/archlinux.ini buildconf/archlinux.ini + sed -i 's/LIBS .*-lphp5.*/LIBS = []/' plugins/php/uwsgiplugin.py + for patch in uwsgi_fix_rpath.patch uwsgi_ruby20_compatibility.patch uwsgi_trick_chroot.patch; do + patch -Np1 -i $srcdir/$patch + done + rm -rf plugins/ruby + mv plugins/ruby{19,} + cp -a plugins/python{,2} + sed -i 's:\(ruby\)19:\1:' plugins/ruby/uwsgiplugin.py + +} +build() { + pushd $srcdir/$pkgbase-$pkgver + python uwsgiconfig.py --build archlinux.ini +} + +package_uwsgi() { + backup=(etc/uwsgi/archlinux.ini) + pkgdesc="A fast, self-healing and developer/sysadmin-friendly application container server coded in pure C" + depends=(python2 libxml2 jansson libyaml systemd) + install=uwsgi.install + cd $srcdir/$pkgbase-$pkgver + install -Dm755 uwsgi $pkgdir/usr/bin/uwsgi + install -Dm644 $srcdir/archlinux.ini $pkgdir/etc/uwsgi/archlinux.ini + install -Dm644 $srcdir/uwsgi@.service $pkgdir/usr/lib/systemd/system/uwsgi@.service + install -Dm644 $srcdir/uwsgi@.socket $pkgdir/usr/lib/systemd/system/uwsgi@.socket + install -Dm755 systemd_logger_plugin.so $pkgdir/usr/lib/uwsgi/systemd_logger_plugin.so + install -Dm644 $srcdir/archlinux.ini $pkgdir/etc/uwsgi/archlinux.ini + install -Dm644 $srcdir/tmpfilesd $pkgdir/usr/lib/tmpfiles.d/uwsgi.conf +} + +package_uwsgi-plugin-common(){ + depends=(uwsgi) + pkgdesc="Common plugins for uWSGI" + install -dm755 $pkgdir/usr/bin + for plugin in cache cgi rpc ugreen; do + ln -s uwsgi $pkgdir/usr/bin/uwsgi_${plugin} + install -Dm755 $pkgbase-$pkgver/${plugin}_plugin.so $pkgdir/usr/lib/uwsgi/${plugin}_plugin.so + done +} + +package_uwsgi-plugin-rack(){ + depends=(ruby uwsgi-plugin-common) + pkgdesc="Ruby rack plugin" + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_rack + install -Dm755 $pkgbase-$pkgver/rack_plugin.so $pkgdir/usr/lib/uwsgi/rack_plugin.so +} + +package_uwsgi-plugin-python2(){ + depends=(uwsgi-plugin-common) + pkgdesc="Plugin for Python2 support" + cd $srcdir/$pkgbase-$pkgver + python2 uwsgiconfig.py --plugin plugins/python archlinux python + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_python2 + install -Dm755 $srcdir/$pkgbase-$pkgver/python_plugin.so $pkgdir/usr/lib/uwsgi/python2_plugin.so +} + +package_uwsgi-plugin-python(){ + depends=(python uwsgi-plugin-common) + pkgdesc="Plugin for Python support" + install -dm755 $pkgdir/usr/bin + cd $srcdir/$pkgbase-$pkgver + python3 uwsgiconfig.py --plugin plugins/python archlinux python + ln -s uwsgi $pkgdir/usr/bin/uwsgi_python + install -Dm755 $srcdir/$pkgbase-$pkgver/python_plugin.so $pkgdir/usr/lib/uwsgi/python_plugin.so +} + +package_uwsgi-plugin-nagios(){ + depends=( uwsgi-plugin-common) + pkgdesc="Plugin for Nagios support" + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_nagios + install -Dm755 $pkgbase-$pkgver/nagios_plugin.so $pkgdir/usr/lib/uwsgi/nagios_plugin.so +} + +package_uwsgi-plugin-router(){ + depends=( uwsgi-plugin-common) + pkgdesc="Plugin for Router support" + install -dm755 $pkgdir/usr/lib/uwsgi + install -dm755 $pkgdir/usr/bin + cd $pkgbase-$pkgver + for file in *router*_plugin.so; do + install -Dm755 $file $pkgdir/usr/lib/uwsgi/$file + ln -s uwsgi $pkgdir/usr/bin/uwsgi_${file%_plugin.so} + done +} + +package_uwsgi-plugin-admin(){ + depends=( uwsgi-plugin-common) + pkgdesc="Plugin for Admin support" + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_admin + install -Dm755 $pkgbase-$pkgver/admin_plugin.so $pkgdir/usr/lib/uwsgi/admin_plugin.so +} + +package_uwsgi-plugin-ruby(){ + depends=(ruby uwsgi-plugin-common) + pkgdesc="Plugin for Ruby support" + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_ruby + install -Dm755 $pkgbase-$pkgver/ruby_plugin.so $pkgdir/usr/lib/uwsgi/ruby_plugin.so +} + + +package_uswgi-plugin-lua51(){ + depends=(lua uwsgi-plugin-common) + pkgdesc="Plugin for Lua support" + install -dm755 $pkgdir/usr/bin + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_lua51 + install -Dm755 $pkgbase-$pkgver/lua_plugin.so $pkgdir/usr/lib/uwsgi/lua51_plugin.so +} + +package_uswgi-plugin-greenlet(){ + depends=(python2-greenlet uwsgi-plugin-common) + pkgdesc="Plugin for Python Greenlet support" + cd $srcdir/$pkgbase-$pkgver + python2 uwsgiconfig.py --plugin plugins/greenlet archlinux.ini greenlet + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_greenlet + install -Dm755 greenlet_plugin.so $pkgdir/usr/lib/uwsgi/greenlet_plugin.so +} + +package_uswgi-plugin-php(){ + depends=(uwsgi-plugin-common) + pkgdesc="Plugin for PHP support" + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_php + install -Dm755 $pkgbase-$pkgver/php_plugin.so $pkgdir/usr/lib/uwsgi/php_plugin.so +} + +package_uwsgi-plugin-carbon(){ + depends=(uwsgi-plugin-common) + pkgdesc="Plugin for Carbon support" + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_carbon + install -Dm755 $pkgbase-$pkgver/carbon_plugin.so $pkgdir/usr/lib/uwsgi/carbon_plugin.so +} + +package_uwsgi-plugin-rrdtool(){ + depends=(uwsgi-plugin-common rrdtool) + pkgdesc="Plugin for Rrdtool support" + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_rrdtool + install -Dm755 $pkgbase-$pkgver/rrdtool_plugin.so $pkgdir/usr/lib/uwsgi/rrdtool_plugin.so +} + +package_uwsgi-plugin-erlang(){ + depends=(uwsgi-plugin-common erlang) + pkgdesc="Plugin for Erlang support" + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_erlang + install -Dm755 $pkgbase-$pkgver/erlang_plugin.so $pkgdir/usr/lib/uwsgi/erlang_plugin.so +} + + +package_uwsgi-plugin-pam(){ + depends=(uwsgi-plugin-common) + pkgdesc="Plugin for Pam support" + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_pam + install -Dm755 $pkgbase-$pkgver/pam_plugin.so $pkgdir/usr/lib/uwsgi/pam_plugin.so +} + +package_uwsgi-plugin-jvm(){ + depends=(uwsgi-plugin-common java-runtime=7) + pkgdesc="Plugin for Jvm support" + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_jvm + install -Dm755 $pkgbase-$pkgver/jvm_plugin.so $pkgdir/usr/lib/uwsgi/jvm_plugin.so +} + +package_uwsgi-plugin-zergpool(){ + depends=(uwsgi-plugin-common) + pkgdesc="Plugin for zergpool support" + install -dm755 $pkgdir/usr/bin + ln -s uwsgi $pkgdir/usr/bin/uwsgi_zergpool + install -Dm755 $pkgbase-$pkgver/zergpool_plugin.so $pkgdir/usr/lib/uwsgi/zergpool_plugin.so +} +md5sums=('ec9cf333534604f17ef4e24051d9d65d' + '1816524eb13705c20f6abc00557f4ea9' + 'b05ba1d796e1ea608a40635bc4f3ec67' + '0b79320fbae92715c96086cf51e60bc8' + 'db70315bbc8cb886a278ba59d5fd8d57' + '1a4516d5cdcf5b95b036f4eae2d0c152' + '4d09535ce379c8acd76160f35d5d6b55' + '0c09a52fdb88f08c36a8b380f451ce6d') diff --git a/community/uwsgi/archlinux.ini b/community/uwsgi/archlinux.ini new file mode 100644 index 000000000..791d4208f --- /dev/null +++ b/community/uwsgi/archlinux.ini @@ -0,0 +1,17 @@ +[uwsgi] +inherit = core +bin_name = uwsgi +xml = true +yaml = true +json = true +pcre = true +routing = true +debug = true +sqlite3 = true +ssl = true +xml_implementation = libxml2 +yaml_implementation = auto +malloc_implementation = libc +embedded_plugins = echo, ping, corerouter, http +plugin_dir = /usr/lib/uwsgi +plugins = rack, python2, python, nagios, fastrouter, admin, lua, ruby, cache, cgi, rpc, ugreen, php, carbon, rrdtool, erlang, pam, jvm, router_uwsgi, router_redirect, router_basicauth, zergpool, router_rewrite, router_http, router_cache, rawrouter, router_static, sslrouter, systemd_logger diff --git a/community/uwsgi/tmpfilesd b/community/uwsgi/tmpfilesd new file mode 100644 index 000000000..8609b38f0 --- /dev/null +++ b/community/uwsgi/tmpfilesd @@ -0,0 +1 @@ +d /run/uwsgi 0755 - - - - diff --git a/community/uwsgi/uwsgi.install b/community/uwsgi/uwsgi.install new file mode 100644 index 000000000..605d7fe2d --- /dev/null +++ b/community/uwsgi/uwsgi.install @@ -0,0 +1,11 @@ +post_install(){ + systemd-tmpfiles --create /usr/lib/tmpfiles.d/uwsgi.conf +} +post_update(){ + echo "To use uwsgi@.socket and uwsgi@.service:" + echo "\tAll you need to do is put the name of your .ini file after the @ sign" + echo "\tYou can use either the .socket or .service, but if you use the .socket" + echo "\tuwsgi@.service won't be started until the first time your http" + echo "\tserver touches the socket. You will also not need to specify the socket in" + echo "\tthe .ini file or in the .service file. Systemd will handle listening to" + echo "\tthe socket for you." diff --git a/community/uwsgi/uwsgi@.service b/community/uwsgi/uwsgi@.service new file mode 100644 index 000000000..c9e9789a0 --- /dev/null +++ b/community/uwsgi/uwsgi@.service @@ -0,0 +1,13 @@ +[Unit] +Description=uWSGI Emperor +After=syslog.target + +[Service] +ExecStart=/usr/bin/uwsgi --ini /etc/uwsgi/%I.ini +Restart=always +Type=notify +StandardError=syslog +NotifyAccess=main + +[Install] +WantedBy=multi-user.target diff --git a/community/uwsgi/uwsgi@.socket b/community/uwsgi/uwsgi@.socket new file mode 100644 index 000000000..012b33a7a --- /dev/null +++ b/community/uwsgi/uwsgi@.socket @@ -0,0 +1,9 @@ +[Unit] +Description=Socket for uWSGI Cgit + +[Socket] +# Change this to your uwsgi application port or unix socket location +ListenStream=/run/uwsgi/%I.sock + +[Install] +WantedBy=sockets.target diff --git a/community/uwsgi/uwsgi_fix_rpath.patch b/community/uwsgi/uwsgi_fix_rpath.patch new file mode 100644 index 000000000..3de66a771 --- /dev/null +++ b/community/uwsgi/uwsgi_fix_rpath.patch @@ -0,0 +1,66 @@ +diff --git a/plugins/jvm/uwsgiplugin.py b/plugins/jvm/uwsgiplugin.py +index ac7eb3e..0911288 100644 +--- a/plugins/jvm/uwsgiplugin.py ++++ b/plugins/jvm/uwsgiplugin.py +@@ -59,11 +59,6 @@ if "-framework JavaVM" in JVM_LIBPATH: + + GCC_LIST = ['jvm_plugin'] + +-if 'LD_RUN_PATH' in os.environ: +- os.environ['LD_RUN_PATH'] += ':' + JVM_LIBPATH[0][2:] +-else: +- os.environ['LD_RUN_PATH'] = JVM_LIBPATH[0][2:] +- + def post_build(config): + if os.system("javac %s/plugins/jvm/uwsgi.java" % os.getcwd()) != 0: + os._exit(1) +diff --git a/plugins/php/uwsgiplugin.py b/plugins/php/uwsgiplugin.py +index fb9e5bb..fd12c91 100644 +--- a/plugins/php/uwsgiplugin.py ++++ b/plugins/php/uwsgiplugin.py +@@ -22,7 +22,6 @@ CFLAGS = [os.popen(PHPPATH + ' --includes').read().rstrip(), '-Wno-error=sign-co + LDFLAGS = os.popen(PHPPATH + ' --ldflags').read().rstrip().split() + if ld_run_path: + LDFLAGS.append('-L%s' % ld_run_path) +- os.environ['LD_RUN_PATH'] = ld_run_path + + LIBS = [os.popen(PHPPATH + ' --libs').read().rstrip(), '-lphp5'] + +diff --git a/plugins/python/uwsgiplugin.py b/plugins/python/uwsgiplugin.py +index c4f03e1..8d4b2e0 100644 +--- a/plugins/python/uwsgiplugin.py ++++ b/plugins/python/uwsgiplugin.py +@@ -45,10 +45,8 @@ if not 'UWSGI_PYTHON_NOLIB' in os.environ: + else: + try: + LDFLAGS.append("-L%s" % sysconfig.get_config_var('LIBDIR')) +- os.environ['LD_RUN_PATH'] = "%s" % (sysconfig.get_config_var('LIBDIR')) + except: + LDFLAGS.append("-L%s/lib" % sysconfig.PREFIX) +- os.environ['LD_RUN_PATH'] = "%s/lib" % sysconfig.PREFIX + + LIBS.append('-lpython%s' % get_python_version()) + else: +diff --git a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py +index 8dee214..2375bc9 100644 +--- a/plugins/rack/uwsgiplugin.py ++++ b/plugins/rack/uwsgiplugin.py +@@ -44,7 +44,6 @@ LIBS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['LIBS']\"" + + if has_shared == 'yes': + LDFLAGS.append('-L' + libpath ) +- os.environ['LD_RUN_PATH'] = libpath + LIBS.append(os.popen(RUBYPATH + " -e \"require 'rbconfig';print '-l' + %s::CONFIG['RUBY_SO_NAME']\"" % rbconfig).read().rstrip()) + else: + GCC_LIST.append("%s/%s" % (libpath, os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['LIBRUBY_A']\"" % rbconfig).read().rstrip())) +diff --git a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py +index ecea48d..4f35984 100644 +--- a/plugins/ruby19/uwsgiplugin.py ++++ b/plugins/ruby19/uwsgiplugin.py +@@ -40,6 +40,5 @@ LDFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['LDFLAG + + libpath = os.popen(RUBYPATH + " -e \"require 'rbconfig';print %s::CONFIG['libdir']\"" % rbconfig).read().rstrip() + LDFLAGS.append('-L' + libpath ) +-os.environ['LD_RUN_PATH'] = libpath + LIBS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print '-l' + %s::CONFIG['RUBY_SO_NAME']\"" % rbconfig).read().rstrip().split() + diff --git a/community/uwsgi/uwsgi_ruby20_compatibility.patch b/community/uwsgi/uwsgi_ruby20_compatibility.patch new file mode 100644 index 000000000..b4bf20d38 --- /dev/null +++ b/community/uwsgi/uwsgi_ruby20_compatibility.patch @@ -0,0 +1,42 @@ +diff --git a/plugins/rack/uwsgiplugin.py b/plugins/rack/uwsgiplugin.py +index 2375bc9..b908417 100644 +--- a/plugins/rack/uwsgiplugin.py ++++ b/plugins/rack/uwsgiplugin.py +@@ -10,13 +10,14 @@ except: + rbconfig = 'Config' + + version = os.popen(RUBYPATH + " -e \"print RUBY_VERSION\"").read().rstrip() +-v = version.split('.') + + GCC_LIST = ['rack_plugin', 'rack_api'] + +-if (v[0] == '1' and v[1] == '9') or v[0] >= '2': ++if version >= '1.9': + CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split() + CFLAGS.append('-DRUBY19') ++ if version >= '2.0': ++ CFLAGS.append('-DRUBY20') + CFLAGS.append('-Wno-unused-parameter') + rbconfig = 'RbConfig' + else: +diff --git a/plugins/ruby19/uwsgiplugin.py b/plugins/ruby19/uwsgiplugin.py +index 4f35984..156018f 100644 +--- a/plugins/ruby19/uwsgiplugin.py ++++ b/plugins/ruby19/uwsgiplugin.py +@@ -10,13 +10,14 @@ except: + rbconfig = 'Config' + + version = os.popen(RUBYPATH + " -e \"print RUBY_VERSION\"").read().rstrip() +-v = version.split('.') + + GCC_LIST = ['../rack/rack_plugin', '../rack/rack_api'] + +-if v[0] == '1' and v[1] == '9': ++if version >= '1.9': + CFLAGS = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['CFLAGS']\"").read().rstrip().split() + CFLAGS.append('-DRUBY19') ++ if version >= '2.0': ++ CFLAGS.append('-DRUBY20') + CFLAGS.append('-Wno-unused-parameter') + rbconfig = 'RbConfig' + else: diff --git a/community/uwsgi/uwsgi_trick_chroot.patch b/community/uwsgi/uwsgi_trick_chroot.patch new file mode 100644 index 000000000..3bfb1ac22 --- /dev/null +++ b/community/uwsgi/uwsgi_trick_chroot.patch @@ -0,0 +1,16 @@ +diff --git a/uwsgiconfig.py b/uwsgiconfig.py +index e447123..4d55f2c 100644 +--- a/uwsgiconfig.py ++++ b/uwsgiconfig.py +@@ -1129,10 +1129,7 @@ def build_plugin(path, uc, cflags, ldflags, libs, name = None): + except: + pass + +- if uc: +- plugin_dest = uc.get('plugin_dir') + '/' + name + '_plugin' +- else: +- plugin_dest = name + '_plugin' ++ plugin_dest = name + '_plugin' + + shared_flag = '-shared' + -- cgit v1.2.3-54-g00ecf