From 95f8787140c73c66d9b4fb0192773eeb90cb4333b63afa39fcbb0a018b3be1c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Schr=C3=B6der?= Date: Thu, 5 Sep 2013 16:43:19 +0000 Subject: [PATCH 1/8] - add libperl_requires OBS-URL: https://build.opensuse.org/package/show/server:http/uwsgi?expand=0&rev=16 --- uwsgi.changes | 6 ++++++ uwsgi.spec | 1 + 2 files changed, 7 insertions(+) diff --git a/uwsgi.changes b/uwsgi.changes index a4c7916..406f30c 100644 --- a/uwsgi.changes +++ b/uwsgi.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Sep 5 18:43:14 CEST 2013 - mls@suse.de + +- add libperl_requires, as we link against libperl and thus + need a specific version of perl + ------------------------------------------------------------------- Tue Jul 16 20:41:08 UTC 2013 - jfunk@funktronics.ca diff --git a/uwsgi.spec b/uwsgi.spec index 1079017..9f677be 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -281,6 +281,7 @@ This package contains support for PAM authentication. Summary: PSGI Plugin for uWSGI Group: Productivity/Networking/Web/Servers Requires: %{name} = %{version} +%{?libperl_requires} %description psgi uWSGI is a fast, self-healing and developer/sysadmin-friendly application From 9a1e1584664e52fab0b51e3749780cf88df2c297456b89a9f004ae23768dc739 Mon Sep 17 00:00:00 2001 From: James Oakley Date: Fri, 20 Sep 2013 17:58:22 +0000 Subject: [PATCH 2/8] Accepting request 199867 from home:k0da:ppc - enable v8 conditionally (enables build for powerpc and s390) OBS-URL: https://build.opensuse.org/request/show/199867 OBS-URL: https://build.opensuse.org/package/show/server:http/uwsgi?expand=0&rev=17 --- uwsgi.changes | 5 +++++ uwsgi.spec | 19 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/uwsgi.changes b/uwsgi.changes index 406f30c..3195899 100644 --- a/uwsgi.changes +++ b/uwsgi.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Fri Sep 20 15:06:48 UTC 2013 - dvaleev@suse.com + +- enable v8 conditionally (enables build for powerpc and s390) + ------------------------------------------------------------------- Thu Sep 5 18:43:14 CEST 2013 - mls@suse.de diff --git a/uwsgi.spec b/uwsgi.spec index 9f677be..fd722dc 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -16,6 +16,13 @@ # +# +%ifarch %{ix86} x86_64 %{arm} +%define enable_v8 1 +%else +%define enable_v8 0 +%endif + Name: uwsgi Version: 1.9.13 Release: 0 @@ -87,7 +94,9 @@ BuildRequires: systemd-devel BuildRequires: systemd %endif BuildRequires: tcpd-devel +%if %{enable_v8} BuildRequires: v8-devel +%endif BuildRequires: zeromq-devel BuildRequires: zlib-devel %{?systemd_requires} @@ -360,6 +369,7 @@ This package contains support for storing application configuration in SQLite3 databases. +%if %{enable_v8} %package v8 Summary: V8 JavaScript Plugin for uWSGI Group: Productivity/Networking/Web/Servers @@ -370,7 +380,7 @@ uWSGI is a fast, self-healing and developer/sysadmin-friendly application container server coded in pure C. This package contains support for JavaScript using V8. - +%endif %package xslt Summary: XSLT Plugin for uWSGI @@ -429,6 +439,11 @@ excluded_plugins="$excluded_plugins router_spnego" # These are example plugins and shouldn't be distributed excluded_plugins="$excluded_plugins cplusplus dummy example" +# V8 is not yet available on all platforms +%if !%{enable_v8} +excluded_plugins="$excluded_plugins v8" +%endif + %if 0%{?suse_version} && 0%{?suse_version} <= 1210 # Requirements missing on openSUSE <= 12.1 excluded_plugins="$excluded_plugins erlang fiber pyerl rack ruby19 systemd_logger" @@ -628,9 +643,11 @@ install -D plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar %defattr(-,root,root,-) %{_libdir}/uwsgi/sqlite3_plugin.so +%if %{enable_v8} %files v8 %defattr(-,root,root,-) %{_libdir}/uwsgi/v8_plugin.so +%endif %files xslt %defattr(-,root,root,-) From d2f8ca2668d8952910d1b1122289f18509b8187e84364efb5810fcc3efe70085 Mon Sep 17 00:00:00 2001 From: James Oakley Date: Mon, 23 Sep 2013 23:42:48 +0000 Subject: [PATCH 3/8] - Disable v8 on unsupported architectures, and on distributions with newer versions of v8, as it seems that upstream is not maintaining it - Update to 1.9.17 * Bugfixes * the pty client is now blocking (safer approach) * removed strtok() usage (substituted by a new uwsgi api function on top of strtok_r()) * fixed --pty-exec (Credits: C Anthony Risinger) * listen_queue/somaxconn linux check is now done even for UNIX sockets * New features * https://uwsgi-docs.readthedocs.org/en/latest/Changelog-1.9.17.html * The Master FIFO: a new management way in addition to UNIX signals * A new hook, named asap has been added. It will be run soon after the options are parsed * The TCC (libtcc) plugin: TCC is an embeddable c compiler. It includes a shared library (libtcc) you can use to compile strings of c code on the fly. The libtcc uWSGI plugins allows compiling strings of c to process symbols. Currently the "tcc" hook engine has been implemented: * The forkptyrouter gateway: While work on Linux containers/namespaces continues to improve we have added this special router/gateway allowing dynamic allocation of pseodoterminals in uWSGI instances. To access the sockets created by the forkptyrouter you can use the --pty-connect option exposed by the pty plugin. * added a new magic var for ANSI escaping. It allows you to define ANSI sequences in your logs * Routable log encoders: You can now attach log encoders to specific log routes * --vassals-include: This is like --vassal-inherit but the parsing will be "immediate" (so you can use placeholders) * The Emperor heartbeat system is now mercyless. The old approach for the OBS-URL: https://build.opensuse.org/package/show/server:http/uwsgi?expand=0&rev=18 --- uwsgi-1.9.13.tar.gz | 3 - ...patch => uwsgi-1.9.17-no-LD_RUN_PATH.patch | 6 +- ...ch => uwsgi-1.9.17-plugin_build_path.patch | 2 +- uwsgi-1.9.17.tar.gz | 3 + uwsgi.changes | 232 ++++++++++++++++++ uwsgi.spec | 68 +++-- 6 files changed, 290 insertions(+), 24 deletions(-) delete mode 100644 uwsgi-1.9.13.tar.gz rename uwsgi-1.9.11-no-LD_RUN_PATH.patch => uwsgi-1.9.17-no-LD_RUN_PATH.patch (87%) rename uwsgi-1.9.11-plugin_build_path.patch => uwsgi-1.9.17-plugin_build_path.patch (80%) create mode 100644 uwsgi-1.9.17.tar.gz diff --git a/uwsgi-1.9.13.tar.gz b/uwsgi-1.9.13.tar.gz deleted file mode 100644 index a15dd6c..0000000 --- a/uwsgi-1.9.13.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ac1532698493b117d1b95b0d0bab2113088fc3f0f23a765ddb59504bece3c26e -size 646437 diff --git a/uwsgi-1.9.11-no-LD_RUN_PATH.patch b/uwsgi-1.9.17-no-LD_RUN_PATH.patch similarity index 87% rename from uwsgi-1.9.11-no-LD_RUN_PATH.patch rename to uwsgi-1.9.17-no-LD_RUN_PATH.patch index 8b268f0..dd5ac69 100644 --- a/uwsgi-1.9.11-no-LD_RUN_PATH.patch +++ b/uwsgi-1.9.17-no-LD_RUN_PATH.patch @@ -14,8 +14,8 @@ os._exit(1) --- a/plugins/php/uwsgiplugin.py +++ b/plugins/php/uwsgiplugin.py -@@ -22,7 +22,6 @@ CFLAGS = [os.popen(PHPPATH + ' --include - LDFLAGS = os.popen(PHPPATH + ' --ldflags').read().rstrip().split() +@@ -17,7 +17,6 @@ LDFLAGS = os.popen(PHPPATH + ' --ldflags + if ld_run_path: LDFLAGS.append('-L%s' % ld_run_path) - os.environ['LD_RUN_PATH'] = ld_run_path @@ -44,7 +44,7 @@ - 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())) + rubylibdir = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['rubylibdir']\"").read().rstrip() --- a/plugins/ruby19/uwsgiplugin.py +++ b/plugins/ruby19/uwsgiplugin.py @@ -40,6 +40,5 @@ LDFLAGS = os.popen(RUBYPATH + " -e \"req diff --git a/uwsgi-1.9.11-plugin_build_path.patch b/uwsgi-1.9.17-plugin_build_path.patch similarity index 80% rename from uwsgi-1.9.11-plugin_build_path.patch rename to uwsgi-1.9.17-plugin_build_path.patch index d92f77a..7c6d900 100644 --- a/uwsgi-1.9.11-plugin_build_path.patch +++ b/uwsgi-1.9.17-plugin_build_path.patch @@ -1,6 +1,6 @@ --- a/uwsgiconfig.py +++ b/uwsgiconfig.py -@@ -1128,10 +1128,7 @@ def build_plugin(path, uc, cflags, ldfla +@@ -1192,10 +1192,7 @@ def build_plugin(path, uc, cflags, ldfla except: pass diff --git a/uwsgi-1.9.17.tar.gz b/uwsgi-1.9.17.tar.gz new file mode 100644 index 0000000..72a2f89 --- /dev/null +++ b/uwsgi-1.9.17.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:917ea3c1d784d8c3cc3dde760fd835cce82cb1ae237f59550ba16b3379ff833b +size 696399 diff --git a/uwsgi.changes b/uwsgi.changes index 3195899..92c651f 100644 --- a/uwsgi.changes +++ b/uwsgi.changes @@ -1,3 +1,235 @@ +------------------------------------------------------------------- +Mon Sep 23 18:47:59 UTC 2013 - jfunk@funktronics.ca + +- Disable v8 on unsupported architectures, and on distributions with newer + versions of v8, as it seems that upstream is not maintaining it +- Update to 1.9.17 + * Bugfixes + * the pty client is now blocking (safer approach) + * removed strtok() usage (substituted by a new uwsgi api function on top + of strtok_r()) + * fixed --pty-exec (Credits: C Anthony Risinger) + * listen_queue/somaxconn linux check is now done even for UNIX sockets + * New features + * https://uwsgi-docs.readthedocs.org/en/latest/Changelog-1.9.17.html + * The Master FIFO: a new management way in addition to UNIX signals + * A new hook, named asap has been added. It will be run soon after the + options are parsed + * The TCC (libtcc) plugin: TCC is an embeddable c compiler. It includes a + shared library (libtcc) you can use to compile strings of c code on the + fly. The libtcc uWSGI plugins allows compiling strings of c to process + symbols. Currently the "tcc" hook engine has been implemented: + * The forkptyrouter gateway: While work on Linux containers/namespaces + continues to improve we have added this special router/gateway allowing + dynamic allocation of pseodoterminals in uWSGI instances. To access the + sockets created by the forkptyrouter you can use the --pty-connect + option exposed by the pty plugin. + * added a new magic var for ANSI escaping. It allows you to define ANSI + sequences in your logs + * Routable log encoders: You can now attach log encoders to specific log + routes + * --vassals-include: This is like --vassal-inherit but the parsing will be + "immediate" (so you can use placeholders) + * The Emperor heartbeat system is now mercyless. The old approach for the + heartbeat Emperor subsystem was asking for "gentle" reload to bad + vassals. Now vassals not sending heartbeat (after being registered with + the heartbeat subsystem) are killed with -9 + * logpipe: You can now send loglines to the stdin of an external command + * Added "fd" logger to "logfile" plugin: you can directly send logs to a + file descriptor +- Changes from 1.9.16 + * Important change in the gevent plugin shutdown/reload procedure: The + shutdown/reload phase when in gevent mode has been changed to better + integrate with multithreaded (and multigreenlet) environments (most + notably the newrelic agent). Instead of "joining" the gevent hub, a new + "dummy" greenlet is spawned and "joined". During shutdown only the + greenlets spawned by uWSGI are taken in account, and after all of them are + destroyed the process will exit. This is different from the old approach + where the process wait for ALL the currently available greenlets (and + monkeypatched threads). If you prefer the old behaviour just specify the + option --gevent-wait-for-hub + * Bugfixes/Improvements + * fixed CPython reference counting bug in rpc and signal handlers + * improved smart-attach-daemon for slow processes + * follow Rack specifications for QUERY_STRING, SCRIPT_NAME,SERVER_NAME and + SERVER_PORT + * report missing internal routing support (it is only a warning when + libpcre is missing) + * better ipcsem support during shutdown and zerg mode (added + --persistent-ipcsem as special case) + * fixed fastcgi bug exposed by apache mod_fastcgi + * do not call pre-jail hook on reload + * force linking with -lrt on solaris + * report thunder lock status + * allow custom priority in rsyslog plugin + * New features + * https://uwsgi-docs.readthedocs.org/en/latest/Changelog-1.9.16.html + * FreeBSD jails native support + * The Rados plugin: Based on the The GlusterFS plugin plugin, a new one + allowing access to Rados object storage is available + * The TunTap router: A new method of providing virtual network interfaces + in namespaces + * Linux O_TMPFILE: Latest Linux kernel supports a new operational mode for + opening files: O_TMPFILE. This flag opens a temporary file (read: + unlinked) without any kind of race conditions. This mode is + automatically used if available (no options needed) + * Linux pivot-root: When dealing with Linux namespaces, changing the root + filesystem is one of the main task. chroot() is generally too simple, + while pivot-root allows you more advanced setup. The syntax is + --pivot-root + * Cheaper memlimit: This new check allows control of dynamic process + spawning based on the RSS usage + * Log encoders: A method of encoding logs for arbitrary external logging + systems. They are basically patterns you can apply to each logline + * New "advanced" Hooks: A new series of hooks for developers needing + little modifications to the uWSGI cores are available. + * New mount/umount hooks: When dealing with namespaces and jails, mounting + and unmounting filesystems is one of the most common tasks. As the mount + and umount commands could not be available during the setup phase, these + 2 hooks have been added directly calling the syscalls. +- Changes from 1.9.15 + * Bugfixes + * fixed jvm options hashmap (#364) + * fixed python3 wsgi.file_wrapper + * fixed python3 --catch-exceptions + * fixed type in pypy wsgi.input.read + * better symbol detection for pypy + * improved ruby libraries management on heroku + * fixed http-keepalive memleak + * fixed spooler body management under CPython + * fixed unshare() usage of 'fs' + * fixed UWSGI_PROFILE usage when building plugins with --plugin + * improved SmartOS support and added OmniOS support + * New features + * The PTY plugin: This new plugin allows you to generate pseudoterminals + and attach them to your workers. Pseudoterminals are then reachable via + network (UNIX or TCP sockets). You can use them for shared debugging or + to have input channels on your webapps. + * strict mode: If you want to check all of your config options, you can + now add the --strict option. Unknown options will trigger a fatal error. + * fallback configs: Being very cheap (in term of resources) and supporting + lot of operating systems and architectures, uWSGI is heavily used in + embedded systems. One of the common feature in such devices is the + "reset to factory defaults." uWSGI now natively support this kind of + operation, thanks to the --fallback-config option. + * --perl-exec and --perl-exec-post-fork: You can now run custom perl code + before and after the fork() calls. Both options simply take the perl + script as the argument + * uwsgi.cache_keys([cache]): This api function has been added to the + python and pypy plugins. It allows you to iterate the keys of a local + uWSGI cache. It returns a list. + * added %(ftime) to logformat: this is like 'ltime' but honouring the + --log-date format + * protect destruction of UNIX sockets when another instance binds them: on + startup uWSGI now get the inode of the just created unix socket. On + vacuum if the inode is changed the unlink of the socket is skipped. This + should help avoiding sysadmin destructive race conditions or + misconfigurations + * --worker-exec2: this is like --worker-exec but happens after post_fork + hooks + * allow post_fork hook on general plugins: general plugins (the ones + without the .request hook) can now expose the .post_fork hook + * --call hooks: In the same spirit of exec-* hooks, call hooks works in + the same way but directly calling functions in the current process + address space (they have to be exposed as valid symbols) + * init_func support for plugins, and --need-plugin variant: when loading a + plugin you can call a symbol defined in it soon after dlopen() + * added commodity loader for the pecan framework: A new python loader + (--pecan) has been added for the pecan WSGI framework + * UWSGI_REMOVE_INCLUDES: during the build phase you can remove include + headers with the UWSGI_REMOVE_INCLUDES environment variable. This is + useful for cross-compilation where some automatically detected includes + could be wrong + * router_expires: We already have various options in the uWSGI core to set + Expires header. This router has been added to allow customizing them + * announce Legion's death on reload/shutdown: Every legion member will now + announce its death as soon as a reload (or a shutdown) of the instance + is triggered + * The GlusterFS plugin (beta): This new plugin make use ot the new + glusterfs c api, avoiding the overhead of fuse when serving files stored + on glusterfs servers. The plugin supports the multiprocess and + multithreads modes, while async modes are currently in beta. + * --force-gateway: all of the gateways (fastrouter, httprouter, rawrouter, + sslrouter ...) has to be run under the master process. By specifying + --force-gateway, you will bypass this limit + * preliminary python3 profiler (beta): The --profiler pycall/pyline + profilers have been added to python3. They are beta quality (they leak + memory), but should be usable. + * file monitor support for OpenBSD,NetBSD,DragonFlyBSD: Both --fs-reload + and the @fmon decorator now work on these operating systems. + * --cwd: you can force the startup "current working directory" (used by + --vacuum and the reloading subsystem) with this option. It is useful in + chroot setups where the binary executable change its place. + * --add-gid: This options allows you to add additional group ids to the + current process. You can specify it multiple times. + * Emperor and Linux namespaces improvements: Thanks to the cooperation + with the pythonanywhere.com guys the Emperor has been improved for + better Linux namespaces integration. The --emperor-use-clone option + allows you to use clone() instead of fork() for your vassal's spawn. In + this way you can create the vassals directly in a new namespace. The + function takes the same parameters of the --unshare one + * --wait-for-interface: As dealing with the Linux network namespace + introduces lot of race conditions (expecially when working with virtual + ethernets), this new option allows you to pause an instance until a + network interface is available. This is useful when waiting for the + emperor to move a veth to the vassal namespace, avoiding the vassal to + run commands on the interface before is available +- Changes from 1.9.14 + * Bugfixes + * fixed python modifier1 management (was hardcoded to 0) + * fixed url decoding in http and http-socket (it now supports lowercase + hex, spotted by Miles Shang) + * more user-friendly error message for undeletable unix sockets + * fixed --http-auto-chunked in http 1.1 keepalive mode (André Cruz) + * fixed python wheel support (Fraser Nevett) + * fixed --safe-fd (was not correctly honoured by the Emperor) + * fixed ruby 2.x reloading + * improved support for OSX Tiger (yes, OSX 10.4) + * better computation of listen queue load + * fixed v8 build on OSX + * fixed pypy rpc + * improved chunked api performance + * fixed latin1 encoding with python3 + * fixed --spooler-ordered (Roberto Leandrini) + * fixed php status line reported in request logs + * New features + * Ruby 1.9.x/2.x native threads support: Ruby 1.9 (mri) introduced native + threads support (very similar to the CPython ones, governed by a global + lock named GVL). + * Filesystem monitoring interface (fsmon): Currently uWSGI is able to + monitor filesystem changes using the "simple" --touch-* facility or the + signal framework (using various operating system api like inotify or + kqueue). A new interface for plugin writers named "fsmon" has been + added, allowing easy implementation of realtime filesystem monitors. + * uClibc support: uWSGI can now be built on uclibc-based systems + (generally, embedded systems) + * Lua 5.2 support: the lua plugins now support Lua 5.2 + * setscheme, setdocroot: These two new routing actions allow you to + dynamically override DOCUMENT_ROOT and UWSGI_SCHEME + * sendfile, fastfile: These two actions (added to the router_static + plugin) allow you to return static files to the client bypassing the + DOCUMENT_ROOT check. + * --reload-on-fd and --brutal-reload-on-fd: Two new options allowing you + to reload an instance when a file descriptor is ready. Currently the + best usage scenario is for the oom_control cgroup interface (via + eventfd) + * Spooler improvements: You can now pass to all of the available + spooler-related decorators the "pass_arguments=True" option, to + automatically serialize the spooler function parameters. This is an + abstraction avoiding you the need to serialize/deserialize arguments. In + addition to this the decorators have been extended to implement __call__ + in this way you can directly call spoller decorated functions as normal + functions. + * --emperor-nofollow: Enabling this option will allow the Emperor to watch + for symbolic links mtime update instead of the mtime of the real file. + * daemontools envdir support: Albeit daemontools look old-fashioned, + things like envdirs (http://cr.yp.to/daemontools/envdir.html) are + heavily used in various context. uWSGI got two new options (--envdir + and --early-envdir ) allowing you to support this special + (archaic ?) configuration way. + * xmldir improvements: The xmldir plugins has been improved supporting + iconv-based utf8 encoding. Various minor fixes have been committed. + ------------------------------------------------------------------- Fri Sep 20 15:06:48 UTC 2013 - dvaleev@suse.com diff --git a/uwsgi.spec b/uwsgi.spec index fd722dc..9dffa57 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -16,15 +16,8 @@ # -# -%ifarch %{ix86} x86_64 %{arm} -%define enable_v8 1 -%else -%define enable_v8 0 -%endif - Name: uwsgi -Version: 1.9.13 +Version: 1.9.17 Release: 0 Summary: Application Container Server for Networked/Clustered Web Applications License: GPL-2.0+ @@ -39,10 +32,10 @@ Source5: trac.ini.example Source6: werkzeug.xml.example Source7: README.openSUSE Source8: uwsgi.ini -# PATCH-FIX-OPENSUSE uwsgi-1.9.11-plugin_build_path.patch - Don't attempt to install plugins to target dest during build -Patch0: uwsgi-1.9.11-plugin_build_path.patch -# PATCH-FIX-OPENSUSE uwsgi-1.9.11-no-LD_RUN_PATH.patch - Disable invalid rpath in plugins -Patch1: uwsgi-1.9.11-no-LD_RUN_PATH.patch +# PATCH-FIX-OPENSUSE uwsgi-1.9.17-plugin_build_path.patch - Don't attempt to install plugins to target dest during build +Patch0: uwsgi-1.9.17-plugin_build_path.patch +# PATCH-FIX-OPENSUSE uwsgi-1.9.17-no-LD_RUN_PATH.patch - Disable invalid rpath in plugins +Patch1: uwsgi-1.9.17-no-LD_RUN_PATH.patch # PATCH-FIX-OPENSUSE uwsgi-1.9.13-objc_gc-no-fobjc-gc.patch - No -fobjc-gc in CFLAGS, which is incorrect in GNU Patch2: uwsgi-1.9.13-objc_gc-no-fobjc-gc.patch # PATCH-FIX-OPENSUSE uwsgi-1.9.11-systemd_logger-old_systemd.patch - Older systemd in 12.2 does not implicity include syslog.h @@ -54,6 +47,7 @@ BuildRequires: erlang %endif BuildRequires: gcc-c++ BuildRequires: gcc-objc +BuildRequires: glusterfs-devel #BuildRequires: go BuildRequires: java-devel #BuildRequires: krb5-devel @@ -94,9 +88,11 @@ BuildRequires: systemd-devel BuildRequires: systemd %endif BuildRequires: tcpd-devel -%if %{enable_v8} +%ifarch %{ix86} x86_64 %{arm} +%if 0%{?suse_version} < 1310 BuildRequires: v8-devel %endif +%endif BuildRequires: zeromq-devel BuildRequires: zlib-devel %{?systemd_requires} @@ -222,6 +218,19 @@ This package contains support for Python Gevent, which is a non-blocking networking framework. +%package glusterfs +Summary: GlusterFS Plugin for uWSGI +Group: Productivity/Networking/Web/Servers +Requires: %{name} = %{version} + +%description glusterfs +uWSGI is a fast, self-healing and developer/sysadmin-friendly application +container server coded in pure C. + +This package contains support for returning objects directly from a GlusterFS +filesystem + + %package greenlet Summary: Greenlet Plugin for uWSGI Group: Productivity/Networking/Web/Servers @@ -369,7 +378,8 @@ This package contains support for storing application configuration in SQLite3 databases. -%if %{enable_v8} +%ifarch %{ix86} x86_64 %{arm} +%if 0%{?suse_version} < 1310 %package v8 Summary: V8 JavaScript Plugin for uWSGI Group: Productivity/Networking/Web/Servers @@ -381,6 +391,7 @@ container server coded in pure C. This package contains support for JavaScript using V8. %endif +%endif %package xslt Summary: XSLT Plugin for uWSGI @@ -439,10 +450,18 @@ excluded_plugins="$excluded_plugins router_spnego" # These are example plugins and shouldn't be distributed excluded_plugins="$excluded_plugins cplusplus dummy example" -# V8 is not yet available on all platforms -%if !%{enable_v8} +# Ceph/RADOS not yet in Factory +excluded_plugins="$excluded_plugins rados" + +# libtcc not yet in Factory +excluded_plugins="$excluded_plugins libtcc" + +# V8 is not yet available on all platforms and is broken in the v8 version in 13.1 +%ifarch %{ix86} x86_64 %{arm} +%if 0%{?suse_version} > 1230 excluded_plugins="$excluded_plugins v8" %endif +%endif %if 0%{?suse_version} && 0%{?suse_version} <= 1210 # Requirements missing on openSUSE <= 12.1 @@ -460,6 +479,7 @@ cp %{SOURCE7} . export UWSGICONFIG_JVM_LIBPATH=$(dirname $(find %{_jvmdir}/java/jre/lib -name "libjvm.so" | grep server)) export UWSGICONFIG_JVM_INCPATH="%{_jvmdir}/java/include" export UWSGICONFIG_LUALIB="lua" +export UWSGICONFIG_LUAPC="lua" export UWSGICONFIG_RUBYPATH="ruby1.9" export CFLAGS="%{optflags} -I$(echo %{_libdir}/erlang/lib/erl_interface-*/include) -I%{_jvmdir}/java/include/linux -L$UWSGICONFIG_JVM_LIBPATH/jli" %{?jobs:export CPUCOUNT=%jobs} @@ -518,22 +538,27 @@ install -D plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar %{_libdir}/uwsgi/emperor_amqp_plugin.so %{_libdir}/uwsgi/exception_log_plugin.so %{_libdir}/uwsgi/fastrouter_plugin.so +%{_libdir}/uwsgi/forkptyrouter_plugin.so %{_libdir}/uwsgi/echo_plugin.so %{_libdir}/uwsgi/graylog2_plugin.so %{_libdir}/uwsgi/http_plugin.so %{_libdir}/uwsgi/legion_cache_fetch_plugin.so %{_libdir}/uwsgi/logcrypto_plugin.so %{_libdir}/uwsgi/logfile_plugin.so +%{_libdir}/uwsgi/logpipe_plugin.so %{_libdir}/uwsgi/logsocket_plugin.so %{_libdir}/uwsgi/nagios_plugin.so %{_libdir}/uwsgi/objc_gc_plugin.so +%{_libdir}/uwsgi/msgpack_plugin.so %{_libdir}/uwsgi/notfound_plugin.so %{_libdir}/uwsgi/ping_plugin.so +%{_libdir}/uwsgi/pty_plugin.so %{_libdir}/uwsgi/rawrouter_plugin.so %{_libdir}/uwsgi/redislog_plugin.so %{_libdir}/uwsgi/router_access_plugin.so %{_libdir}/uwsgi/router_basicauth_plugin.so %{_libdir}/uwsgi/router_cache_plugin.so +%{_libdir}/uwsgi/router_expires_plugin.so %{_libdir}/uwsgi/router_hash_plugin.so %{_libdir}/uwsgi/router_http_plugin.so %{_libdir}/uwsgi/router_memcached_plugin.so @@ -562,6 +587,7 @@ install -D plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar %{_libdir}/uwsgi/transformation_offload_plugin.so %{_libdir}/uwsgi/transformation_tofile_plugin.so %{_libdir}/uwsgi/transformation_toupper_plugin.so +%{_libdir}/uwsgi/tuntap_plugin.so %{_libdir}/uwsgi/ugreen_plugin.so %{_libdir}/uwsgi/webdav_plugin.so %{_libdir}/uwsgi/xattr_plugin.so @@ -593,11 +619,16 @@ install -D plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar %defattr(-,root,root,-) %{_libdir}/uwsgi/greenlet_plugin.so +%files glusterfs +%defattr(-,root,root,-) +%{_libdir}/uwsgi/glusterfs_plugin.so + %files jvm %defattr(-,root,root,-) %{_libdir}/uwsgi/jvm_plugin.so %{_libdir}/uwsgi/jwsgi_plugin.so %{_libdir}/uwsgi/ring_plugin.so +%{_libdir}/uwsgi/servlet_plugin.so %{_javadir}/uwsgi.jar %files ldap @@ -636,6 +667,7 @@ install -D plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar %defattr(-,root,root,-) %{_libdir}/uwsgi/fiber_plugin.so %{_libdir}/uwsgi/rack_plugin.so +%{_libdir}/uwsgi/rbthreads_plugin.so %{_libdir}/uwsgi/ruby19_plugin.so %endif @@ -643,11 +675,13 @@ install -D plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar %defattr(-,root,root,-) %{_libdir}/uwsgi/sqlite3_plugin.so -%if %{enable_v8} +%ifarch %{ix86} x86_64 %{arm} +%if 0%{?suse_version} < 1310 %files v8 %defattr(-,root,root,-) %{_libdir}/uwsgi/v8_plugin.so %endif +%endif %files xslt %defattr(-,root,root,-) From 7e23e79c8fe7116875861c7541cb6b169675d885534f1582015f3dffa8e9e7ab Mon Sep 17 00:00:00 2001 From: James Oakley Date: Mon, 23 Sep 2013 23:48:27 +0000 Subject: [PATCH 4/8] Gluster not supported in < 12.3 OBS-URL: https://build.opensuse.org/package/show/server:http/uwsgi?expand=0&rev=19 --- uwsgi.spec | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 9dffa57..48ed542 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -47,7 +47,9 @@ BuildRequires: erlang %endif BuildRequires: gcc-c++ BuildRequires: gcc-objc +%if 0%{?suse_version} && 0%{?suse_version} <= 1230 BuildRequires: glusterfs-devel +%endif #BuildRequires: go BuildRequires: java-devel #BuildRequires: krb5-devel @@ -218,6 +220,7 @@ This package contains support for Python Gevent, which is a non-blocking networking framework. +%if 0%{?suse_version} && 0%{?suse_version} <= 1230 %package glusterfs Summary: GlusterFS Plugin for uWSGI Group: Productivity/Networking/Web/Servers @@ -229,7 +232,7 @@ container server coded in pure C. This package contains support for returning objects directly from a GlusterFS filesystem - +%endif %package greenlet Summary: Greenlet Plugin for uWSGI @@ -468,7 +471,12 @@ excluded_plugins="$excluded_plugins v8" excluded_plugins="$excluded_plugins erlang fiber pyerl rack ruby19 systemd_logger" %endif -plugins=$(python -c "import sys, os; print ', '.join([p for p in os.listdir('plugins') if p not in sys.argv[1:]])" $excluded_plugins) +%if 0%{?suse_version} && 0%{?suse_version} <= 1230 +# Requirements missing on openSUSE <= 12.3 +excluded_plugins="$excluded_plugins glusterfs" +%endif + +lugins=$(python -c "import sys, os; print ', '.join([p for p in os.listdir('plugins') if p not in sys.argv[1:]])" $excluded_plugins) sed -e "s#@@LIBDIR@@#%{_libdir}#" -e "s#@@PLUGINS@@#$plugins#" %{SOURCE1} > buildconf/opensuse.ini # README.openSUSE @@ -619,9 +627,11 @@ install -D plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar %defattr(-,root,root,-) %{_libdir}/uwsgi/greenlet_plugin.so +%if 0%{?suse_version} && 0%{?suse_version} <= 1230 %files glusterfs %defattr(-,root,root,-) %{_libdir}/uwsgi/glusterfs_plugin.so +%endif %files jvm %defattr(-,root,root,-) From 5cef53271ada6b2e0ca4a64a967c7cb73e330102ca76532f4cb6f0c24c1130d0 Mon Sep 17 00:00:00 2001 From: James Oakley Date: Tue, 24 Sep 2013 00:15:45 +0000 Subject: [PATCH 5/8] Fix accidental change in last revision OBS-URL: https://build.opensuse.org/package/show/server:http/uwsgi?expand=0&rev=20 --- uwsgi.spec | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 48ed542..4e25a74 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -47,7 +47,7 @@ BuildRequires: erlang %endif BuildRequires: gcc-c++ BuildRequires: gcc-objc -%if 0%{?suse_version} && 0%{?suse_version} <= 1230 +%if 0%{?suse_version} > 1220 BuildRequires: glusterfs-devel %endif #BuildRequires: go @@ -220,7 +220,7 @@ This package contains support for Python Gevent, which is a non-blocking networking framework. -%if 0%{?suse_version} && 0%{?suse_version} <= 1230 +%if 0%{?suse_version} > 1220 %package glusterfs Summary: GlusterFS Plugin for uWSGI Group: Productivity/Networking/Web/Servers @@ -466,17 +466,17 @@ excluded_plugins="$excluded_plugins v8" %endif %endif -%if 0%{?suse_version} && 0%{?suse_version} <= 1210 +%if 0%{?suse_version} <= 1210 # Requirements missing on openSUSE <= 12.1 excluded_plugins="$excluded_plugins erlang fiber pyerl rack ruby19 systemd_logger" %endif -%if 0%{?suse_version} && 0%{?suse_version} <= 1230 +%if 0%{?suse_version} <= 1230 # Requirements missing on openSUSE <= 12.3 excluded_plugins="$excluded_plugins glusterfs" %endif -lugins=$(python -c "import sys, os; print ', '.join([p for p in os.listdir('plugins') if p not in sys.argv[1:]])" $excluded_plugins) +plugins=$(python -c "import sys, os; print ', '.join([p for p in os.listdir('plugins') if p not in sys.argv[1:]])" $excluded_plugins) sed -e "s#@@LIBDIR@@#%{_libdir}#" -e "s#@@PLUGINS@@#$plugins#" %{SOURCE1} > buildconf/opensuse.ini # README.openSUSE @@ -627,7 +627,7 @@ install -D plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar %defattr(-,root,root,-) %{_libdir}/uwsgi/greenlet_plugin.so -%if 0%{?suse_version} && 0%{?suse_version} <= 1230 +%if 0%{?suse_version} <= 1230 %files glusterfs %defattr(-,root,root,-) %{_libdir}/uwsgi/glusterfs_plugin.so From e49114bf94691a970e2bea39ab90945d2c9260ef56c9567d981f3bd9a772544f Mon Sep 17 00:00:00 2001 From: James Oakley Date: Tue, 24 Sep 2013 00:18:35 +0000 Subject: [PATCH 6/8] Fix another issue with gluster conditional OBS-URL: https://build.opensuse.org/package/show/server:http/uwsgi?expand=0&rev=21 --- uwsgi.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uwsgi.spec b/uwsgi.spec index 4e25a74..8ceed48 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -627,7 +627,7 @@ install -D plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar %defattr(-,root,root,-) %{_libdir}/uwsgi/greenlet_plugin.so -%if 0%{?suse_version} <= 1230 +%if 0%{?suse_version} > 1220 %files glusterfs %defattr(-,root,root,-) %{_libdir}/uwsgi/glusterfs_plugin.so From 743d6b063c33802391952e11e2a1e76c020aef8dfcb855e9be81300144d7239e Mon Sep 17 00:00:00 2001 From: James Oakley Date: Tue, 24 Sep 2013 00:32:12 +0000 Subject: [PATCH 7/8] Fix gluster conditional OBS-URL: https://build.opensuse.org/package/show/server:http/uwsgi?expand=0&rev=22 --- uwsgi.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/uwsgi.spec b/uwsgi.spec index 8ceed48..afea052 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -471,8 +471,8 @@ excluded_plugins="$excluded_plugins v8" excluded_plugins="$excluded_plugins erlang fiber pyerl rack ruby19 systemd_logger" %endif -%if 0%{?suse_version} <= 1230 -# Requirements missing on openSUSE <= 12.3 +%if 0%{?suse_version} <= 1220 +# Requirements missing on openSUSE <= 12.2 excluded_plugins="$excluded_plugins glusterfs" %endif From 6c239f6ae5f6206727f6fc5dc2231a1c26dd45c3a1b8e3d5318e86bbe250d8a8 Mon Sep 17 00:00:00 2001 From: James Oakley Date: Tue, 24 Sep 2013 16:58:56 +0000 Subject: [PATCH 8/8] - Update to 1.9.17.1: * Emergency release fixing two bugs: * fixed inheriting of file descriptor 0 (this breaks fastcgi on dreamhost, and uwsgi on unbit.it) * fixed router_http REQUEST_URI rewrite (double free) OBS-URL: https://build.opensuse.org/package/show/server:http/uwsgi?expand=0&rev=23 --- uwsgi-1.9.17.1.tar.gz | 3 +++ uwsgi-1.9.17.tar.gz | 3 --- uwsgi.changes | 9 +++++++++ uwsgi.spec | 2 +- 4 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 uwsgi-1.9.17.1.tar.gz delete mode 100644 uwsgi-1.9.17.tar.gz diff --git a/uwsgi-1.9.17.1.tar.gz b/uwsgi-1.9.17.1.tar.gz new file mode 100644 index 0000000..800d31e --- /dev/null +++ b/uwsgi-1.9.17.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2558b918afe47640e3c4e75be4347e7e8dc7b19caf2120b6e1fb6bf17891c2a +size 696468 diff --git a/uwsgi-1.9.17.tar.gz b/uwsgi-1.9.17.tar.gz deleted file mode 100644 index 72a2f89..0000000 --- a/uwsgi-1.9.17.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:917ea3c1d784d8c3cc3dde760fd835cce82cb1ae237f59550ba16b3379ff833b -size 696399 diff --git a/uwsgi.changes b/uwsgi.changes index 92c651f..655b8bc 100644 --- a/uwsgi.changes +++ b/uwsgi.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Tue Sep 24 16:49:25 UTC 2013 - jfunk@funktronics.ca + +- Update to 1.9.17.1: + * Emergency release fixing two bugs: + * fixed inheriting of file descriptor 0 (this breaks fastcgi on dreamhost, + and uwsgi on unbit.it) + * fixed router_http REQUEST_URI rewrite (double free) + ------------------------------------------------------------------- Mon Sep 23 18:47:59 UTC 2013 - jfunk@funktronics.ca diff --git a/uwsgi.spec b/uwsgi.spec index afea052..4c5d600 100644 --- a/uwsgi.spec +++ b/uwsgi.spec @@ -17,7 +17,7 @@ Name: uwsgi -Version: 1.9.17 +Version: 1.9.17.1 Release: 0 Summary: Application Container Server for Networked/Clustered Web Applications License: GPL-2.0+