- 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
This commit is contained in:
James Oakley 2013-09-23 23:42:48 +00:00 committed by Git OBS Bridge
parent 9a1e158466
commit d2f8ca2668
6 changed files with 290 additions and 24 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ac1532698493b117d1b95b0d0bab2113088fc3f0f23a765ddb59504bece3c26e
size 646437

View File

@ -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

View File

@ -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

3
uwsgi-1.9.17.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:917ea3c1d784d8c3cc3dde760fd835cce82cb1ae237f59550ba16b3379ff833b
size 696399

View File

@ -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 <new_root> <old_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
<path> and --early-envdir <path>) 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

View File

@ -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,-)