This commit is contained in:
commit
f9602c68f3
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
42
README.openSUSE
Normal file
42
README.openSUSE
Normal file
@ -0,0 +1,42 @@
|
||||
====================
|
||||
openSUSE uWSGI Notes
|
||||
====================
|
||||
|
||||
Upgrading from 1.2.6
|
||||
--------------------
|
||||
|
||||
The init script and the sysconfig file /etc/sysconfig/uwsgi are now deprecated
|
||||
in favor of a systemd service and a default configuration file
|
||||
/etc/uwsgi/uwsgi.ini.
|
||||
|
||||
Emperor Mode
|
||||
------------
|
||||
|
||||
The included uwsgi service runs uWSGI in Emperor mode by default. It will
|
||||
monitor the /etc/uwsgi/vassals directory for configurations and will
|
||||
automatically load and restart uWSGI processes when configuration files are
|
||||
placed there or modified. Some example configurations are provided in the
|
||||
directory. To enable one, rename it without the .example at the end and edit
|
||||
for your application.
|
||||
|
||||
For more information on Emperor mode, see
|
||||
https://uwsgi-docs.readthedocs.org/en/latest/Emperor.html
|
||||
|
||||
|
||||
Plugins
|
||||
-------
|
||||
|
||||
This uWSGI package is fully modular. Some plugins, such as the Python plugin,
|
||||
are not embedded in the main server binary.
|
||||
|
||||
This means that your application configurations need to specify the plugins it
|
||||
uses. For example, a Python application will need the following option
|
||||
specified:
|
||||
|
||||
plugins = python
|
||||
|
||||
Alternatively, uWSGI has a autoload option that will load any plugins when it
|
||||
encounters options for those plugins in the configuration. To enable that, use
|
||||
the following in the configuration:
|
||||
|
||||
autoload = 1
|
10
django.ini.example
Normal file
10
django.ini.example
Normal file
@ -0,0 +1,10 @@
|
||||
[uwsgi]
|
||||
plugin = python
|
||||
socket = 127.0.0.1:3034
|
||||
threads = 40
|
||||
master = 1
|
||||
autoload = 1
|
||||
env = DJANGO_SETTINGS_MODULE=myapp.settings
|
||||
module = django.core.handlers.wsgi:WSGIHandler()
|
||||
chdir = /srv/djangoapp001
|
||||
|
5
opensuse.ini.in
Normal file
5
opensuse.ini.in
Normal file
@ -0,0 +1,5 @@
|
||||
[uwsgi]
|
||||
inherit = base
|
||||
plugin_dir = @@LIBDIR@@/uwsgi
|
||||
embedded_plugins = null
|
||||
plugins = @@PLUGINS@@
|
99
python313.patch
Normal file
99
python313.patch
Normal file
@ -0,0 +1,99 @@
|
||||
From 699dc20f8204ee18812951600b0221156d217530 Mon Sep 17 00:00:00 2001
|
||||
From: Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
|
||||
Date: Sun, 21 Jul 2024 16:32:31 +0200
|
||||
Subject: [PATCH] plugins/python: handle cframe removal from CPython thread
|
||||
state
|
||||
|
||||
Use current_frame instead
|
||||
---
|
||||
plugins/python/python_plugin.c | 16 ++++++++++++++++
|
||||
plugins/python/uwsgi_python.h | 12 ++++++++++++
|
||||
2 files changed, 28 insertions(+)
|
||||
|
||||
Index: uwsgi-2.0.28/plugins/python/python_plugin.c
|
||||
===================================================================
|
||||
--- uwsgi-2.0.28.orig/plugins/python/python_plugin.c
|
||||
+++ uwsgi-2.0.28/plugins/python/python_plugin.c
|
||||
@@ -1615,7 +1615,11 @@ void uwsgi_python_suspend(struct wsgi_re
|
||||
#elif defined UWSGI_PY312
|
||||
up.current_c_recursion_remaining[wsgi_req->async_id] = tstate->c_recursion_remaining;
|
||||
up.current_py_recursion_remaining[wsgi_req->async_id] = tstate->py_recursion_remaining;
|
||||
+#ifdef UWSGI_PY313
|
||||
+ up.current_frame[wsgi_req->async_id] = tstate->current_frame;
|
||||
+#else
|
||||
up.current_frame[wsgi_req->async_id] = tstate->cframe;
|
||||
+#endif
|
||||
#elif defined UWSGI_PY311
|
||||
up.current_recursion_remaining[wsgi_req->async_id] = tstate->recursion_remaining;
|
||||
up.current_frame[wsgi_req->async_id] = tstate->cframe;
|
||||
@@ -1632,7 +1636,11 @@ void uwsgi_python_suspend(struct wsgi_re
|
||||
#elif defined UWSGI_PY312
|
||||
up.current_main_c_recursion_remaining = tstate->c_recursion_remaining;
|
||||
up.current_main_py_recursion_remaining = tstate->py_recursion_remaining;
|
||||
+#ifdef UWSGI_PY313
|
||||
+ up.current_main_frame = tstate->current_frame;
|
||||
+#else
|
||||
up.current_main_frame = tstate->cframe;
|
||||
+#endif
|
||||
#elif defined UWSGI_PY311
|
||||
up.current_main_recursion_remaining = tstate->recursion_remaining;
|
||||
up.current_main_frame = tstate->cframe;
|
||||
@@ -1876,7 +1884,11 @@ void uwsgi_python_resume(struct wsgi_req
|
||||
#elif defined UWSGI_PY312
|
||||
tstate->c_recursion_remaining = up.current_c_recursion_remaining[wsgi_req->async_id];
|
||||
tstate->py_recursion_remaining = up.current_py_recursion_remaining[wsgi_req->async_id];
|
||||
+#ifdef UWSGI_PY313
|
||||
+ tstate->current_frame = up.current_frame[wsgi_req->async_id];
|
||||
+#else
|
||||
tstate->cframe = up.current_frame[wsgi_req->async_id];
|
||||
+#endif
|
||||
#elif defined UWSGI_PY311
|
||||
tstate->recursion_remaining = up.current_recursion_remaining[wsgi_req->async_id];
|
||||
tstate->cframe = up.current_frame[wsgi_req->async_id];
|
||||
@@ -1893,7 +1905,11 @@ void uwsgi_python_resume(struct wsgi_req
|
||||
#elif defined UWSGI_PY312
|
||||
tstate->c_recursion_remaining = up.current_main_c_recursion_remaining;
|
||||
tstate->py_recursion_remaining = up.current_main_py_recursion_remaining;
|
||||
+#ifdef UWSGI_PY313
|
||||
+ tstate->current_frame = up.current_main_frame;
|
||||
+#else
|
||||
tstate->cframe = up.current_main_frame;
|
||||
+#endif
|
||||
#elif defined UWSGI_PY311
|
||||
tstate->recursion_remaining = up.current_main_recursion_remaining;
|
||||
tstate->cframe = up.current_main_frame;
|
||||
Index: uwsgi-2.0.28/plugins/python/uwsgi_python.h
|
||||
===================================================================
|
||||
--- uwsgi-2.0.28.orig/plugins/python/uwsgi_python.h
|
||||
+++ uwsgi-2.0.28/plugins/python/uwsgi_python.h
|
||||
@@ -29,6 +29,10 @@
|
||||
# define UWSGI_PY313
|
||||
#endif
|
||||
|
||||
+#if (PY_VERSION_HEX >= 0x030d0000)
|
||||
+# define UWSGI_PY313
|
||||
+#endif
|
||||
+
|
||||
#if PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION < 7
|
||||
#define HAS_NOT_PyMemoryView_FromBuffer
|
||||
#endif
|
||||
@@ -183,11 +187,19 @@ struct uwsgi_python {
|
||||
#elif defined UWSGI_PY312
|
||||
int *current_c_recursion_remaining;
|
||||
int *current_py_recursion_remaining;
|
||||
+#ifdef UWSGI_PY313
|
||||
+ struct _PyInterpreterFrame **current_frame;
|
||||
+#else
|
||||
_PyCFrame **current_frame;
|
||||
+#endif
|
||||
|
||||
int current_main_c_recursion_remaining;
|
||||
int current_main_py_recursion_remaining;
|
||||
+#ifdef UWSGI_PY313
|
||||
+ struct _PyInterpreterFrame *current_main_frame;
|
||||
+#else
|
||||
_PyCFrame *current_main_frame;
|
||||
+#endif
|
||||
#elif defined UWSGI_PY311
|
||||
int *current_recursion_remaining;
|
||||
_PyCFrame **current_frame;
|
10
rails.yml.example
Normal file
10
rails.yml.example
Normal file
@ -0,0 +1,10 @@
|
||||
uwsgi:
|
||||
plugins: rack
|
||||
rack: config.ru
|
||||
master: 1
|
||||
autoload: 1
|
||||
processes: 8
|
||||
socket: 127.0.0.1:3033
|
||||
post-buffering: 4096
|
||||
chdir: /srv/railsapp001
|
||||
|
8
trac.ini.example
Normal file
8
trac.ini.example
Normal file
@ -0,0 +1,8 @@
|
||||
[uwsgi]
|
||||
master = true
|
||||
autoload = true
|
||||
processes = 2
|
||||
module = trac.web.main:dispatch_request
|
||||
env = TRAC_ENV=/srv/project001
|
||||
socket = 127.0.0.1:3032
|
||||
|
9
uwsgi-1.9.11-systemd_logger-old_systemd.patch
Normal file
9
uwsgi-1.9.11-systemd_logger-old_systemd.patch
Normal file
@ -0,0 +1,9 @@
|
||||
--- a/plugins/systemd_logger/systemd_logger.c
|
||||
+++ b/plugins/systemd_logger/systemd_logger.c
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "../../uwsgi.h"
|
||||
|
||||
+#include <syslog.h>
|
||||
#include <systemd/sd-journal.h>
|
||||
|
||||
ssize_t uwsgi_systemd_logger(struct uwsgi_logger *ul, char *message, size_t len) {
|
9
uwsgi-1.9.13-objc_gc-no-fobjc-gc.patch
Normal file
9
uwsgi-1.9.13-objc_gc-no-fobjc-gc.patch
Normal file
@ -0,0 +1,9 @@
|
||||
--- a/plugins/objc_gc/uwsgiplugin.py
|
||||
+++ b/plugins/objc_gc/uwsgiplugin.py
|
||||
@@ -1,5 +1,5 @@
|
||||
NAME="objc_gc"
|
||||
-CFLAGS=["-fobjc-gc"]
|
||||
+CFLAGS=[]
|
||||
LDFLAGS=[]
|
||||
LIBS=[]
|
||||
GCC_LIST=['objc_gc.m']
|
16
uwsgi-1.9.17-plugin_build_path.patch
Normal file
16
uwsgi-1.9.17-plugin_build_path.patch
Normal file
@ -0,0 +1,16 @@
|
||||
Index: uwsgi-2.0.25.1/uwsgiconfig.py
|
||||
===================================================================
|
||||
--- uwsgi-2.0.25.1.orig/uwsgiconfig.py
|
||||
+++ uwsgi-2.0.25.1/uwsgiconfig.py
|
||||
@@ -1444,10 +1444,7 @@ def build_plugin(path, uc, cflags, ldfla
|
||||
except:
|
||||
pass
|
||||
|
||||
- if uc:
|
||||
- plugin_dest = uc.get('plugin_build_dir', uc.get('plugin_dir')) + '/' + name + '_plugin'
|
||||
- else:
|
||||
- plugin_dest = name + '_plugin'
|
||||
+ plugin_dest = name + '_plugin'
|
||||
|
||||
shared_flag = '-shared'
|
||||
|
54
uwsgi-2.0.12-no-LD_RUN_PATH.patch
Normal file
54
uwsgi-2.0.12-no-LD_RUN_PATH.patch
Normal file
@ -0,0 +1,54 @@
|
||||
--- a/plugins/jvm/uwsgiplugin.py
|
||||
+++ b/plugins/jvm/uwsgiplugin.py
|
||||
@@ -69,11 +69,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 subprocess.call("javac %s/plugins/jvm/uwsgi.java" % os.getcwd(), shell=True) != 0:
|
||||
os._exit(1)
|
||||
--- a/plugins/php/uwsgiplugin.py
|
||||
+++ b/plugins/php/uwsgiplugin.py
|
||||
@@ -19,7 +19,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
|
||||
|
||||
# PHP8 and above does not add the version to the library
|
||||
# name
|
||||
--- a/plugins/python/uwsgiplugin.py
|
||||
+++ b/plugins/python/uwsgiplugin.py
|
||||
@@ -90,8 +90,6 @@ if not 'UWSGI_PYTHON_NOLIB' in os.enviro
|
||||
LDFLAGS.append("-L%s" % libdir)
|
||||
LDFLAGS.append("-Wl,-rpath,%s" % libdir)
|
||||
|
||||
- os.environ['LD_RUN_PATH'] = "%s" % libdir
|
||||
-
|
||||
LIBS.append('-lpython%s' % get_python_version())
|
||||
else:
|
||||
LIBS = []
|
||||
--- a/plugins/rack/uwsgiplugin.py
|
||||
+++ b/plugins/rack/uwsgiplugin.py
|
||||
@@ -48,7 +48,6 @@ LIBS = os.popen(RUBYPATH + " -e \"requir
|
||||
|
||||
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:
|
||||
rubylibdir = os.popen(RUBYPATH + " -e \"require 'rbconfig';print RbConfig::CONFIG['rubylibdir']\"").read().rstrip()
|
||||
--- a/plugins/ruby19/uwsgiplugin.py
|
||||
+++ b/plugins/ruby19/uwsgiplugin.py
|
||||
@@ -42,6 +42,5 @@ LDFLAGS = os.popen(RUBYPATH + " -e \"req
|
||||
|
||||
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()
|
||||
|
16
uwsgi-2.0.18-postgresql-config.patch
Normal file
16
uwsgi-2.0.18-postgresql-config.patch
Normal file
@ -0,0 +1,16 @@
|
||||
--- a/plugins/emperor_pg/uwsgiplugin.py
|
||||
+++ b/plugins/emperor_pg/uwsgiplugin.py
|
||||
@@ -2,11 +2,8 @@ import os
|
||||
|
||||
NAME = 'emperor_pg'
|
||||
|
||||
-CFLAGS = ['-I' + os.popen('pg_config --includedir').read().rstrip()]
|
||||
+CFLAGS = os.popen('pkg-config --cflags libpq').read().rstrip().split()
|
||||
LDFLAGS = []
|
||||
-LIBS = [
|
||||
- '-L' + os.popen('pg_config --libdir').read().rstrip(),
|
||||
- '-lpq'
|
||||
-]
|
||||
+LIBS = os.popen('pkg-config --libs libpq').read().rstrip().split()
|
||||
|
||||
GCC_LIST = ['emperor_pg']
|
3
uwsgi-2.0.25.1.tar.gz
Normal file
3
uwsgi-2.0.25.1.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a1e4a401f71d29e49d4762223412c32a42594c415f9d72d0f759680e5b8f4cf9
|
||||
size 811635
|
3
uwsgi-2.0.28.tar.gz
Normal file
3
uwsgi-2.0.28.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4bb0762c5becb0414352cca664957206df4d6847e9a1c472e87708dc2cdad610
|
||||
size 815887
|
23
uwsgi-93d07ec38b31.patch
Normal file
23
uwsgi-93d07ec38b31.patch
Normal file
@ -0,0 +1,23 @@
|
||||
From 93d07ec38b319c2fba7c71d3fd0d5acc2882d65a Mon Sep 17 00:00:00 2001
|
||||
From: Rosen Penev <rosenp@gmail.com>
|
||||
Date: Tue, 14 May 2024 21:08:14 -0700
|
||||
Subject: [PATCH] fix 32-bit compilation with GCC14
|
||||
|
||||
Wrong pointer type is used.
|
||||
---
|
||||
core/regexp.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/core/regexp.c b/core/regexp.c
|
||||
index 74bb77751..2b59f16fb 100644
|
||||
--- a/core/regexp.c
|
||||
+++ b/core/regexp.c
|
||||
@@ -23,7 +23,7 @@ int uwsgi_regexp_build(char *re, uwsgi_pcre ** pattern) {
|
||||
|
||||
#ifdef UWSGI_PCRE2
|
||||
int errnbr;
|
||||
- long unsigned int erroff;
|
||||
+ size_t erroff;
|
||||
|
||||
*pattern = pcre2_compile((const unsigned char *) re, PCRE2_ZERO_TERMINATED, 0, &errnbr, &erroff, NULL);
|
||||
#else
|
47
uwsgi-ld-noexecstack.patch
Normal file
47
uwsgi-ld-noexecstack.patch
Normal file
@ -0,0 +1,47 @@
|
||||
--- a/uwsgiconfig.py
|
||||
+++ b/uwsgiconfig.py
|
||||
@@ -535,7 +535,7 @@ def build_uwsgi(uc, print_only=False, gc
|
||||
gcc_list.append('%s/%s' % (path, cfile))
|
||||
for bfile in up.get('BINARY_LIST', []):
|
||||
try:
|
||||
- binary_link_cmd = "ld -r -b binary -o %s/%s.o %s/%s" % (path, bfile[1], path, bfile[1])
|
||||
+ binary_link_cmd = "ld -z noexecstack -r -b binary -o %s/%s.o %s/%s" % (path, bfile[1], path, bfile[1])
|
||||
print(binary_link_cmd)
|
||||
if subprocess.call(binary_link_cmd, shell=True) != 0:
|
||||
raise Exception('unable to link binary file')
|
||||
@@ -1150,7 +1150,7 @@ class uConf(object):
|
||||
if not self.embed_config:
|
||||
self.embed_config = self.get('embed_config')
|
||||
if self.embed_config:
|
||||
- binary_link_cmd = "ld -r -b binary -o %s.o %s" % (binarize(self.embed_config), self.embed_config)
|
||||
+ binary_link_cmd = "ld -z noexecstack -r -b binary -o %s.o %s" % (binarize(self.embed_config), self.embed_config)
|
||||
print(binary_link_cmd)
|
||||
subprocess.call(binary_link_cmd, shell=True)
|
||||
self.cflags.append("-DUWSGI_EMBED_CONFIG=_binary_%s_start" % binarize(self.embed_config))
|
||||
@@ -1169,7 +1169,7 @@ class uConf(object):
|
||||
for directory, directories, files in os.walk(ef):
|
||||
for f in files:
|
||||
fname = "%s/%s" % (directory, f)
|
||||
- binary_link_cmd = "ld -r -b binary -o %s.o %s" % (binarize(fname), fname)
|
||||
+ binary_link_cmd = "ld -z noexecstack -r -b binary -o %s.o %s" % (binarize(fname), fname)
|
||||
print(binary_link_cmd)
|
||||
subprocess.call(binary_link_cmd, shell=True)
|
||||
if symbase:
|
||||
@@ -1179,7 +1179,7 @@ class uConf(object):
|
||||
subprocess.call(objcopy_cmd, shell=True)
|
||||
binary_list.append(binarize(fname))
|
||||
else:
|
||||
- binary_link_cmd = "ld -r -b binary -o %s.o %s" % (binarize(ef), ef)
|
||||
+ binary_link_cmd = "ld -z noexecstack -r -b binary -o %s.o %s" % (binarize(ef), ef)
|
||||
print(binary_link_cmd)
|
||||
subprocess.call(binary_link_cmd, shell=True)
|
||||
binary_list.append(binarize(ef))
|
||||
@@ -1464,7 +1464,7 @@ def build_plugin(path, uc, cflags, ldfla
|
||||
gcc_list.append(path + '/' + cfile)
|
||||
for bfile in up.get('BINARY_LIST', []):
|
||||
try:
|
||||
- binary_link_cmd = "ld -r -b binary -o %s/%s.o %s/%s" % (path, bfile[1], path, bfile[1])
|
||||
+ binary_link_cmd = "ld -z noexecstack -r -b binary -o %s/%s.o %s/%s" % (path, bfile[1], path, bfile[1])
|
||||
print(binary_link_cmd)
|
||||
if subprocess.call(binary_link_cmd, shell=True) != 0:
|
||||
raise Exception('unable to link binary file')
|
1835
uwsgi.changes
Normal file
1835
uwsgi.changes
Normal file
File diff suppressed because it is too large
Load Diff
3
uwsgi.ini
Normal file
3
uwsgi.ini
Normal file
@ -0,0 +1,3 @@
|
||||
[uwsgi]
|
||||
# Directory containing application configs
|
||||
emperor = /etc/uwsgi/vassals
|
14
uwsgi.service
Normal file
14
uwsgi.service
Normal file
@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=Application Container Server for Networked/Clustered Web Applications
|
||||
Documentation=https://uwsgi-docs.readthedocs.io/en/latest/
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/sbin/uwsgi --autoload --ini /etc/uwsgi/uwsgi.ini
|
||||
Restart=always
|
||||
Type=notify
|
||||
NotifyAccess=all
|
||||
KillSignal=SIGINT
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
812
uwsgi.spec
Normal file
812
uwsgi.spec
Normal file
@ -0,0 +1,812 @@
|
||||
#
|
||||
# spec file for package uwsgi
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%{?sle15_python_module_pythons}
|
||||
%define with_php 1
|
||||
%if 0%{?suse_version} > 1320
|
||||
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150400
|
||||
%define php php8
|
||||
%else
|
||||
%define php php7
|
||||
%endif
|
||||
%else
|
||||
%define with_php 0
|
||||
%endif
|
||||
|
||||
Name: uwsgi
|
||||
Version: 2.0.28
|
||||
Release: 0
|
||||
Summary: Application Container Server for Networked/Clustered Web Applications
|
||||
License: Apache-2.0 AND GPL-2.0-only WITH GCC-exception-2.0
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
URL: https://uwsgi-docs.readthedocs.io/en/latest/
|
||||
Source: https://github.com/unbit/uwsgi/archive/refs/tags/%{version}.tar.gz#/uwsgi-%{version}.tar.gz
|
||||
Source1: opensuse.ini.in
|
||||
Source2: uwsgi.service
|
||||
Source3: django.ini.example
|
||||
Source4: rails.yml.example
|
||||
Source5: trac.ini.example
|
||||
Source6: werkzeug.xml.example
|
||||
Source7: README.openSUSE
|
||||
Source8: uwsgi.ini
|
||||
Source9: uwsgi.tmpfiles.d
|
||||
# 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-2.0.12-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
|
||||
Patch3: uwsgi-1.9.11-systemd_logger-old_systemd.patch
|
||||
# PATCH-FIX-OPENSUSE uwsgi-2.0.18-postgresql-config.patch - Use pkg-config instead of pg_config
|
||||
Patch4: uwsgi-2.0.18-postgresql-config.patch
|
||||
# PATCH-FIX-UPSTREAM uwsgi-ld-noexecstack.patch - Do not create executable stack
|
||||
Patch5: uwsgi-ld-noexecstack.patch
|
||||
# PATCH-FIX-UPSTREAM python313.patch - plugins/python: handle cframe removal from CPython thread state https://github.com/unbit/uwsgi/commit/699dc20f8204ee18812951600b0221156d217530
|
||||
Patch6: python313.patch
|
||||
BuildRequires: apache-rpm-macros
|
||||
%if 0%{suse_version} < 1500
|
||||
BuildRequires: apache2-devel
|
||||
%else
|
||||
BuildRequires: apache2-devel >= 2.4.33
|
||||
%endif
|
||||
%if 0%{?suse_version} >= 1500
|
||||
BuildRequires: argon2-devel
|
||||
%endif
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: gcc-objc
|
||||
%if 0%{?suse_version} > 1220
|
||||
BuildRequires: glusterfs-devel
|
||||
%endif
|
||||
#BuildRequires: go
|
||||
BuildRequires: java-devel
|
||||
#BuildRequires: krb5-devel
|
||||
BuildRequires: libattr-devel
|
||||
BuildRequires: libcap-devel
|
||||
BuildRequires: libcurl-devel
|
||||
BuildRequires: libffi-devel
|
||||
%if 0%{?suse_version} > 1210
|
||||
BuildRequires: libjansson-devel
|
||||
%endif
|
||||
#BuildRequires: libmono-2_0-devel
|
||||
BuildRequires: libuuid-devel
|
||||
BuildRequires: libxml2-devel
|
||||
BuildRequires: libxslt-devel
|
||||
BuildRequires: libyaml-devel
|
||||
%if 0%{?suse_version} > 1210
|
||||
BuildRequires: lua51-devel
|
||||
%else
|
||||
BuildRequires: lua-devel
|
||||
%endif
|
||||
#BuildRequires: mono-web
|
||||
BuildRequires: ncurses-devel
|
||||
BuildRequires: openldap2-devel
|
||||
BuildRequires: openssl-devel
|
||||
BuildRequires: pam-devel
|
||||
BuildRequires: pcre-devel
|
||||
%if %{with_php}
|
||||
BuildRequires: %{php}-devel
|
||||
BuildRequires: %{php}-embed
|
||||
%endif
|
||||
BuildRequires: %{python_module devel}
|
||||
BuildRequires: %{python_module greenlet-devel}
|
||||
BuildRequires: pkg-config
|
||||
BuildRequires: postgresql-devel
|
||||
BuildRequires: python-rpm-macros
|
||||
%if 0%{?suse_version} <= 1310
|
||||
BuildRequires: ruby19-devel
|
||||
%endif
|
||||
BuildRequires: sqlite3-devel
|
||||
BuildRequires: tcpd-devel
|
||||
BuildRequires: pkgconfig(libsystemd)
|
||||
%ifarch %{ix86} x86_64 %{arm}
|
||||
%if 0%{?suse_version} < 1310
|
||||
BuildRequires: v8-devel
|
||||
%endif
|
||||
%endif
|
||||
BuildRequires: zeromq-devel
|
||||
BuildRequires: pkgconfig(zlib)
|
||||
%{?systemd_requires}
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
Provides: uwsgi-carbon = %{version}
|
||||
Obsoletes: uwsgi-carbon < 1.9.11
|
||||
Provides: uwsgi-cgi = %{version}
|
||||
Obsoletes: uwsgi-cgi < 1.9.11
|
||||
Provides: uwsgi-fastrouter = %{version}
|
||||
Obsoletes: uwsgi-fastrouter < 1.9.11
|
||||
Provides: uwsgi-graylog2 = %{version}
|
||||
Obsoletes: uwsgi-graylog2 < 1.9.11
|
||||
Provides: uwsgi-http = %{version}
|
||||
Obsoletes: uwsgi-http < 1.9.11
|
||||
Provides: uwsgi-logsocket = %{version}
|
||||
Obsoletes: uwsgi-logsocket < 1.9.11
|
||||
Provides: uwsgi-nagios = %{version}
|
||||
Obsoletes: uwsgi-nagios < 1.9.11
|
||||
Provides: uwsgi-probepg = %{version}
|
||||
Obsoletes: uwsgi-probepg < 1.9.11
|
||||
Provides: uwsgi-redislog = %{version}
|
||||
Obsoletes: uwsgi-redislog < 1.9.11
|
||||
Provides: uwsgi-rrdtool = %{version}
|
||||
Obsoletes: uwsgi-rrdtool < 1.9.11
|
||||
Provides: uwsgi-rsyslog = %{version}
|
||||
Obsoletes: uwsgi-rsyslog < 1.9.11
|
||||
Provides: uwsgi-syslog = %{version}
|
||||
Obsoletes: uwsgi-syslog < 1.9.11
|
||||
Provides: uwsgi-ugreen = %{version}
|
||||
Obsoletes: uwsgi-ugreen < 1.9.11
|
||||
Provides: uwsgi-zergpool = %{version}
|
||||
Obsoletes: uwsgi-zergpool < 1.9.11
|
||||
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150500
|
||||
# these must be the last directives before the description
|
||||
%define python_subpackage_only 1
|
||||
%python_subpackages
|
||||
%endif
|
||||
|
||||
%description
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
It is a WSGI server with a stack for networked/clustered web applications,
|
||||
implementing message/object passing, caching, RPC and process management.
|
||||
|
||||
It uses the uwsgi protocol for all the networking/interprocess communications,
|
||||
but it can speak other protocols as well (http, fastcgi, mongrel2...)
|
||||
|
||||
It can be run in preforking mode, threaded, asynchronous/evented and supports
|
||||
various forms of green threads/coroutines (such as uGreen, Greenlet, Stackless,
|
||||
Gevent and Fiber).
|
||||
|
||||
Different plugins can be used in order to add compatibility with
|
||||
different technology on top of the same core.
|
||||
|
||||
|
||||
# This is part of the apache2 package now
|
||||
%if 0%{suse_version} < 1500
|
||||
%package -n apache2-mod_proxy_uwsgi
|
||||
Summary: uWSGI Proxy Module for Apache 2.0
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description -n apache2-mod_proxy_uwsgi
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains an Apache 2.0 proxy module for uWSGI.
|
||||
%endif
|
||||
|
||||
%package -n apache2-mod_uwsgi
|
||||
Summary: uWSGI Module for Apache 2.0
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description -n apache2-mod_uwsgi
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains an Apache 2.0 module for uWSGI.
|
||||
|
||||
%package emperor_pg
|
||||
Summary: PostgreSQL Emperor Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description emperor_pg
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains an emperor plugin allowing for configuration of
|
||||
applications (vassals) in a PostgreSQL database.
|
||||
|
||||
%package emperor_zeromq
|
||||
Summary: ZeroMQ Emperor Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description emperor_zeromq
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains an emperor plugin allowing for configuration of
|
||||
applications (vassals) via ZeroMQ.
|
||||
|
||||
%package gevent
|
||||
Summary: Gevent Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
Requires: %{name}-python3 = %{version}
|
||||
|
||||
%description gevent
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for Python Gevent, which is a non-blocking
|
||||
networking framework.
|
||||
|
||||
|
||||
%if 0%{?suse_version} > 1220
|
||||
%package glusterfs
|
||||
Summary: GlusterFS Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description glusterfs
|
||||
uWSGI is a self-healing application 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
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
Requires: %{name}-python3 = %{version}
|
||||
|
||||
%description greenlet
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for the Python Greenlet non-blocking network
|
||||
framework.
|
||||
|
||||
%package jvm
|
||||
Summary: JVM Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
Provides: uwsgi-jwsgi = %{version}
|
||||
Obsoletes: uwsgi-jwsgi < 1.9.11
|
||||
|
||||
%description jvm
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for embedding a Java virtual machine in uWSGI.
|
||||
|
||||
%package ldap
|
||||
Summary: LDAP Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description ldap
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for configuring uWSGI via LDAP.
|
||||
|
||||
%package libffi
|
||||
Summary: Plugin libffi for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description libffi
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for libffi.
|
||||
|
||||
%package logzmq
|
||||
Summary: ZMQ Logger for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description logzmq
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for ZMQ logging.
|
||||
|
||||
%package lua
|
||||
Summary: Lua Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description lua
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for Lua applications via the wsapi interface.
|
||||
|
||||
%package pam
|
||||
Summary: PAM Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description pam
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for PAM authentication.
|
||||
|
||||
%package psgi
|
||||
Summary: PSGI Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
%{?libperl_requires}
|
||||
|
||||
%description psgi
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains the PSGI plugin for running Perl applications that
|
||||
support the PSGI protocol.
|
||||
|
||||
%package pypy
|
||||
Summary: PyPy Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description pypy
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for Python applications using PyPy.
|
||||
|
||||
%if 0%{?sle_version} && 0%{?sle_version} <= 150400
|
||||
|
||||
%package python3
|
||||
Summary: Python 3 Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
Requires: python3-base >= 3.6
|
||||
Provides: python3-uwsgi-python3 = %{version}-%{release}
|
||||
|
||||
%description python3
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for Python 3 applications via the WSGI protocol.
|
||||
|
||||
%else
|
||||
|
||||
%package -n python-uwsgi-python3
|
||||
Summary: Python %{python_version} Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
%if "%{python_provides}" == "python3"
|
||||
Provides: uwsgi-python3 = %{version}-%{release}
|
||||
Obsoletes: uwsgi-python3 < %{version}-%{release}
|
||||
%endif
|
||||
# the plugin is linked to the python library, no reason the state -base explicitly
|
||||
|
||||
%description -n python-uwsgi-python3
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for Python %{python_version} applications via the WSGI protocol.
|
||||
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} <= 1310
|
||||
%package ruby
|
||||
Summary: Ruby Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
Requires: ruby19
|
||||
Provides: uwsgi-fiber = %{version}
|
||||
Obsoletes: uwsgi-fiber < 1.9.11
|
||||
|
||||
%description ruby
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for Ruby applications.
|
||||
%endif
|
||||
|
||||
%package sqlite3
|
||||
Summary: SQLite3 Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description sqlite3
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for storing application configuration in SQLite3
|
||||
databases.
|
||||
|
||||
%package v8
|
||||
Summary: V8 JavaScript Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description v8
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for JavaScript using V8.
|
||||
|
||||
%package xslt
|
||||
Summary: XSLT Plugin for uWSGI
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description xslt
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
This package contains support for rendering XML content using XSLT.
|
||||
|
||||
%if %{with_php}
|
||||
%package %{php}
|
||||
%if 0%{?suse_version} >= 1550
|
||||
Summary: PHP8 Plugin for uWSGI
|
||||
%else
|
||||
Summary: PHP7 Plugin for uWSGI
|
||||
%endif
|
||||
Group: Productivity/Networking/Web/Servers
|
||||
Requires: %{name} = %{version}
|
||||
Requires: %{php}-embed
|
||||
|
||||
%description %{php}
|
||||
uWSGI is a self-healing application container server coded in pure C.
|
||||
|
||||
%if 0%{?suse_version} >= 1550
|
||||
This package contains support for PHP version 8.
|
||||
%else
|
||||
This package contains support for PHP version 7.
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n uwsgi-%{version}
|
||||
|
||||
# Generate a config that builds all plugins except for examples and stuff we
|
||||
# can't satisfy the requirements for or are just broken
|
||||
excluded_plugins=""
|
||||
|
||||
# Still no mongodb in Factory
|
||||
excluded_plugins="$excluded_plugins stats_pusher_mongodb emperor_mongodb mongodb mongodblog gridfs"
|
||||
|
||||
# Mono plugin builds private key during build. It would not be a good idea to
|
||||
# distribute the same key to multiple systems
|
||||
excluded_plugins="$excluded_plugins mono"
|
||||
|
||||
# Only for OSX
|
||||
excluded_plugins="$excluded_plugins alarm_speech"
|
||||
|
||||
%if 0%{?suse_version} <= 1320
|
||||
# No php[57]-embed on openSUSE Leap for some reason
|
||||
excluded_plugins="$excluded_plugins php"
|
||||
%endif
|
||||
|
||||
# No stackless in openSUSE
|
||||
excluded_plugins="$excluded_plugins stackless"
|
||||
|
||||
# No perl-Coro in Factory (there is a broken unmaintained one under d:l:perl:CPAN-C)
|
||||
excluded_plugins="$excluded_plugins coroae"
|
||||
|
||||
# Requires libgloox, which is not in Factory
|
||||
excluded_plugins="$excluded_plugins alarm_xmpp"
|
||||
|
||||
# No gccgo in openSUSE yet
|
||||
excluded_plugins="$excluded_plugins gccgo"
|
||||
|
||||
# This plugin require a libuwsgi, which appears to conflict with core...
|
||||
excluded_plugins="$excluded_plugins pyuwsgi"
|
||||
|
||||
# The SPNEGO router is not complete
|
||||
excluded_plugins="$excluded_plugins router_spnego"
|
||||
|
||||
# These are example plugins and shouldn't be distributed
|
||||
excluded_plugins="$excluded_plugins cplusplus dummy example"
|
||||
|
||||
# Ceph/RADOS not yet in Factory
|
||||
excluded_plugins="$excluded_plugins rados"
|
||||
|
||||
# libtcc not yet in Factory
|
||||
excluded_plugins="$excluded_plugins libtcc"
|
||||
|
||||
# matheval is deprecated
|
||||
excluded_plugins="$excluded_plugins matheval"
|
||||
|
||||
# bsc#1156199 - python-txtorcon: GeoIP support is discontinued
|
||||
excluded_plugins="$excluded_plugins geoip"
|
||||
|
||||
# V8 is not yet available on all platforms and is broken in the v8 versions in
|
||||
# 13.1+
|
||||
%if 0%{?suse_version} >= 1310
|
||||
excluded_plugins="$excluded_plugins v8"
|
||||
%else
|
||||
%ifnarch %{ix86} x86_64 %{arm}
|
||||
excluded_plugins="$excluded_plugins v8"
|
||||
%endif
|
||||
%endif
|
||||
|
||||
# python3 modules are built separately
|
||||
excluded_plugins="$excluded_plugins python"
|
||||
|
||||
# Ruby 1.9 is no longer available after 13.1
|
||||
%if 0%{?suse_version} > 1310
|
||||
excluded_plugins="$excluded_plugins fiber mongrel2 rack rbthreads ruby19"
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} <= 1220
|
||||
# Requirements missing on openSUSE <= 12.2
|
||||
excluded_plugins="$excluded_plugins glusterfs"
|
||||
%endif
|
||||
|
||||
plugins=$(python3 -c "import sys, os; print(', '.join([p for p in sorted(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
|
||||
cp %{SOURCE7} .
|
||||
|
||||
%build
|
||||
# Find correct location for libjvm
|
||||
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} -Wno-error=deprecated-declarations -I%{_includedir}/glusterfs -I$(echo %{_libdir}/erlang/lib/erl_interface-*/include) -I%{_jvmdir}/java/include/linux -L$UWSGICONFIG_JVM_LIBPATH/jli"
|
||||
%{?jobs:export CPUCOUNT=%jobs}
|
||||
%python_expand PYTHON=$python $python uwsgiconfig.py --build opensuse
|
||||
|
||||
# Build python3 plugins
|
||||
%if 0%{?sle_version} && 0%{?sle_version} <= 150400
|
||||
python3 uwsgiconfig.py --plugin plugins/python opensuse python3
|
||||
%else
|
||||
# https://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html#bonus-multiple-python-versions-for-the-same-uwsgi-binary
|
||||
%python_expand PYTHON=$python $python uwsgiconfig.py --plugin plugins/python opensuse ${python_flavor}
|
||||
%endif
|
||||
|
||||
# Build Apache modules
|
||||
%if 0%{suse_version} < 1500
|
||||
%{apache_apxs} -c apache2/mod_proxy_uwsgi.c
|
||||
%endif
|
||||
%{apache_apxs} -c apache2/mod_uwsgi.c
|
||||
|
||||
# Build php plugin
|
||||
%if %{with_php}
|
||||
python3 uwsgiconfig.py --plugin plugins/php opensuse %{php}
|
||||
%endif
|
||||
|
||||
%install
|
||||
install -D -m 0755 uwsgi %{buildroot}%{_sbindir}/uwsgi
|
||||
install -d -m 0755 %{buildroot}%{_libdir}/uwsgi
|
||||
install -m 0755 *_plugin.so %{buildroot}%{_libdir}/uwsgi
|
||||
install -D -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/uwsgi.service
|
||||
install -d -m 0755 %{buildroot}%{_sysconfdir}/uwsgi/vassals
|
||||
install -D -m 0644 %{SOURCE8} %{buildroot}%{_sysconfdir}/uwsgi/uwsgi.ini
|
||||
install -m 0644 %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE6} %{buildroot}%{_sysconfdir}/uwsgi/vassals
|
||||
install -m 0644 vassals/broodlord.ini %{buildroot}%{_sysconfdir}/uwsgi/vassals/broodlord.ini.example
|
||||
install -m 0644 vassals/cc.ini %{buildroot}%{_sysconfdir}/uwsgi/vassals/cc.ini.example
|
||||
install -m 0644 vassals/multi.xml %{buildroot}%{_sysconfdir}/uwsgi/vassals/multi.xml.example
|
||||
%if 0%{?sle_version} && 0%{?sle_version} <= 150400
|
||||
install -D -m 0644 uwsgidecorators.py %{buildroot}%{python3_sitelib}/uwsgidecorators.py
|
||||
%else
|
||||
%{python_expand #
|
||||
install -D -m 0644 uwsgidecorators.py %{buildroot}%{$python_sitelib}/uwsgidecorators.py
|
||||
if [ "%{$python_provides}" == "python3" ]; then
|
||||
ln -s ${python_flavor}_plugin.so %{buildroot}%{_libdir}/uwsgi/python3_plugin.so
|
||||
fi
|
||||
}
|
||||
%endif
|
||||
install -D plugins/jvm/uwsgi.jar %{buildroot}%{_javadir}/uwsgi.jar
|
||||
install -d -m 0755 %{buildroot}/%{apache_libexecdir}
|
||||
install -m 0755 apache2/.libs/*.so %{buildroot}/%{apache_libexecdir}
|
||||
%if 0%{?suse_version} > 1220
|
||||
ln -sf /usr/sbin/service %{buildroot}%{_sbindir}/rcuwsgi
|
||||
%endif
|
||||
|
||||
install -d -m 0755 %{buildroot}%{_tmpfilesdir}
|
||||
install -m 0644 %{SOURCE9} %{buildroot}/%{_tmpfilesdir}/uwsgi.conf
|
||||
|
||||
%pre
|
||||
%service_add_pre uwsgi.service
|
||||
|
||||
%post
|
||||
%service_add_post uwsgi.service
|
||||
%tmpfiles_create %{_tmpfilesdir}/uwsgi.conf
|
||||
|
||||
%preun
|
||||
%service_del_preun uwsgi.service
|
||||
|
||||
%postun
|
||||
%service_del_postun uwsgi.service
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%license LICENSE
|
||||
%doc CONTRIBUTORS README contrib examples README.openSUSE
|
||||
%{_sbindir}/uwsgi
|
||||
%dir %{_sysconfdir}/uwsgi/
|
||||
%config(noreplace) %{_sysconfdir}/uwsgi/uwsgi.ini
|
||||
%dir %{_sysconfdir}/uwsgi/vassals
|
||||
%config %{_sysconfdir}/uwsgi/vassals/*
|
||||
%dir %{_libdir}/uwsgi
|
||||
%ghost %dir %attr(711,root,root) /run/uwsgi
|
||||
%{_unitdir}/uwsgi.service
|
||||
%{_tmpfilesdir}/uwsgi.conf
|
||||
%if 0%{?suse_version} > 1220
|
||||
%{_sbindir}/rcuwsgi
|
||||
%endif
|
||||
%{_libdir}/uwsgi/airbrake_plugin.so
|
||||
%{_libdir}/uwsgi/alarm_curl_plugin.so
|
||||
%{_libdir}/uwsgi/asyncio_plugin.so
|
||||
%{_libdir}/uwsgi/cache_plugin.so
|
||||
%{_libdir}/uwsgi/carbon_plugin.so
|
||||
%{_libdir}/uwsgi/cgi_plugin.so
|
||||
%{_libdir}/uwsgi/cheaper_backlog2_plugin.so
|
||||
%{_libdir}/uwsgi/cheaper_busyness_plugin.so
|
||||
%{_libdir}/uwsgi/clock_monotonic_plugin.so
|
||||
%{_libdir}/uwsgi/clock_realtime_plugin.so
|
||||
%{_libdir}/uwsgi/corerouter_plugin.so
|
||||
%{_libdir}/uwsgi/curl_cron_plugin.so
|
||||
%{_libdir}/uwsgi/dumbloop_plugin.so
|
||||
%{_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
|
||||
%{_libdir}/uwsgi/router_metrics_plugin.so
|
||||
%{_libdir}/uwsgi/router_radius_plugin.so
|
||||
%{_libdir}/uwsgi/router_redirect_plugin.so
|
||||
%{_libdir}/uwsgi/router_redis_plugin.so
|
||||
%{_libdir}/uwsgi/router_rewrite_plugin.so
|
||||
%{_libdir}/uwsgi/router_static_plugin.so
|
||||
%{_libdir}/uwsgi/router_uwsgi_plugin.so
|
||||
%{_libdir}/uwsgi/router_xmldir_plugin.so
|
||||
%{_libdir}/uwsgi/rpc_plugin.so
|
||||
%{_libdir}/uwsgi/rrdtool_plugin.so
|
||||
%{_libdir}/uwsgi/rsyslog_plugin.so
|
||||
%{_libdir}/uwsgi/signal_plugin.so
|
||||
%{_libdir}/uwsgi/spooler_plugin.so
|
||||
%{_libdir}/uwsgi/ssi_plugin.so
|
||||
%{_libdir}/uwsgi/sslrouter_plugin.so
|
||||
%{_libdir}/uwsgi/stats_pusher_file_plugin.so
|
||||
%{_libdir}/uwsgi/stats_pusher_socket_plugin.so
|
||||
%{_libdir}/uwsgi/stats_pusher_statsd_plugin.so
|
||||
%{_libdir}/uwsgi/symcall_plugin.so
|
||||
%{_libdir}/uwsgi/syslog_plugin.so
|
||||
%{_libdir}/uwsgi/systemd_logger_plugin.so
|
||||
%{_libdir}/uwsgi/tornado_plugin.so
|
||||
%{_libdir}/uwsgi/transformation_chunked_plugin.so
|
||||
%{_libdir}/uwsgi/transformation_gzip_plugin.so
|
||||
%{_libdir}/uwsgi/transformation_offload_plugin.so
|
||||
%{_libdir}/uwsgi/transformation_template_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
|
||||
%{_libdir}/uwsgi/zabbix_plugin.so
|
||||
%{_libdir}/uwsgi/zergpool_plugin.so
|
||||
|
||||
%if 0%{suse_version} < 1500
|
||||
%files -n apache2-mod_proxy_uwsgi
|
||||
%defattr(-,root,root,-)
|
||||
%{apache_libexecdir}/mod_proxy_uwsgi.so
|
||||
%endif
|
||||
|
||||
%files -n apache2-mod_uwsgi
|
||||
%defattr(-,root,root,-)
|
||||
%{apache_libexecdir}/mod_uwsgi.so
|
||||
|
||||
%files emperor_pg
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/emperor_pg_plugin.so
|
||||
|
||||
%files emperor_zeromq
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/emperor_zeromq_plugin.so
|
||||
|
||||
%files gevent
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/gevent_plugin.so
|
||||
|
||||
%files greenlet
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/greenlet_plugin.so
|
||||
|
||||
%if 0%{?suse_version} > 1220
|
||||
%files glusterfs
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/glusterfs_plugin.so
|
||||
%endif
|
||||
|
||||
%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
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/ldap_plugin.so
|
||||
|
||||
%files libffi
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/libffi_plugin.so
|
||||
|
||||
%files logzmq
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/logzmq_plugin.so
|
||||
|
||||
%files lua
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/lua_plugin.so
|
||||
|
||||
%files pam
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/pam_plugin.so
|
||||
|
||||
%files psgi
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/psgi_plugin.so
|
||||
|
||||
%files pypy
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/pypy_plugin.so
|
||||
|
||||
%if 0%{?sle_version} && 0%{?sle_version} <= 150400
|
||||
|
||||
%files python3
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/python3_plugin.so
|
||||
%{python3_sitelib}/uwsgidecorators.py*
|
||||
|
||||
%else
|
||||
|
||||
%files %{python_files uwsgi-python3}
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/%{python_flavor}_plugin.so
|
||||
%if "%{python_provides}" == "python3"
|
||||
%{_libdir}/uwsgi/python3_plugin.so
|
||||
%endif
|
||||
%{python_sitelib}/uwsgidecorators.py*
|
||||
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} <= 1310
|
||||
%files ruby
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/fiber_plugin.so
|
||||
%{_libdir}/uwsgi/mongrel2_plugin.so
|
||||
%{_libdir}/uwsgi/rack_plugin.so
|
||||
%{_libdir}/uwsgi/rbthreads_plugin.so
|
||||
%{_libdir}/uwsgi/ruby19_plugin.so
|
||||
%endif
|
||||
|
||||
%files sqlite3
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/sqlite3_plugin.so
|
||||
|
||||
%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,-)
|
||||
%{_libdir}/uwsgi/xslt_plugin.so
|
||||
|
||||
%if 0%{?suse_version} > 1320
|
||||
%files %{php}
|
||||
%defattr(-,root,root,-)
|
||||
%{_libdir}/uwsgi/php*_plugin.so
|
||||
%endif
|
||||
|
||||
%changelog
|
2
uwsgi.tmpfiles.d
Normal file
2
uwsgi.tmpfiles.d
Normal file
@ -0,0 +1,2 @@
|
||||
# Type Path Mode UID GID Age Argument
|
||||
d /run/uwsgi 0711 root root - -
|
7
werkzeug.xml.example
Normal file
7
werkzeug.xml.example
Normal file
@ -0,0 +1,7 @@
|
||||
<uwsgi>
|
||||
<module>werkzeug.testapp:test_app</module>
|
||||
<master/>
|
||||
<processes>4</processes>
|
||||
<socket>127.0.0.1:3031</socket>
|
||||
</uwsgi>
|
||||
|
Loading…
Reference in New Issue
Block a user