Bug 2045884 - Review Request: uwsgi - Fast, self-healing, application container server [unretire]
Summary: Review Request: uwsgi - Fast, self-healing, application container server [unr...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Terje Røsten
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2022-01-25 20:53 UTC by Ralf Ertzinger
Modified: 2022-02-13 09:29 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2022-02-13 09:29:17 UTC
Type: ---
Embargoed:
terje.rosten: fedora-review+


Attachments (Terms of Use)

Description Ralf Ertzinger 2022-01-25 20:53:17 UTC
Copr build: https://copr.fedorainfracloud.org/coprs/ertzing/scratch_x64/build/3253136/
Description:
uWSGI is a fast (pure C), self-healing, developer/sysadmin-friendly
application container server.  Born as a WSGI-only server, over time it has
evolved in a complete stack for networked/clustered web applications,
implementing message/object passing, caching, RPC and process management.
It uses the uwsgi (all lowercase, already included by default in the Nginx
and Cherokee releases) protocol for all the networking/interprocess
communications.  Can be run in preforking mode, threaded,
asynchronous/evented and supports various form of green threads/co-routine
(like uGreen and Fiber).  Sysadmin will love it as it can be configured via
command line, environment variables, xml, .ini and yaml files and via LDAP.
Being fully modular can use tons of different technology on top of the same
core.

Fedora Account System Username: ertzing

This is a review request to un-retire uwsgi, following the process at https://docs.fedoraproject.org/en-US/package-maintainers/Package_Retirement_Process/#claiming

The package is based on the last built version for F34, https://koji.fedoraproject.org/koji/buildinfo?buildID=1695849 with the below changes:

- Updated to 2.0.20
- Removal of patches upstreamed since 2.0.18
- Add patches to make it build/work cleanly with PHP8 in F35
- Some minor cleanups of more eregious rpmlint errors

Comment 1 Terje Røsten 2022-01-26 12:54:33 UTC
Can you provide direct link to yoor spec file and a diff between your spec file and latest in Fedora?

Comment 2 Terje Røsten 2022-01-26 14:41:07 UTC
https://download.copr.fedorainfracloud.org/results/ertzing/scratch_x64/fedora-rawhide-x86_64/03253136-uwsgi/uwsgi.spec

--- uwsgi.spec.old	2022-01-26 15:39:13.334611499 +0100
+++ uwsgi.spec	2022-01-26 15:38:21.991128327 +0100
@@ -1,5 +1,5 @@
 # Documentation sources:
-%global commit 8d868eadfb460785a735030271afa233ac854763
+%global commit 9b4ef5fa68fe42929a5e5410165d36fcc7b2d2c7
 %global shortcommit %(c=%{commit}; echo ${c:0:7})
 %global docrepo uwsgi-docs
 
@@ -130,8 +130,8 @@
 %endif
 
 Name:           uwsgi
-Version:        2.0.18
-Release:        16%{?dist}
+Version:        2.0.20
+Release:        0.3%{?dist}
 Summary:        Fast, self-healing, application container server
 # uwsgi is licensed under GPLv2 with a linking exception
 # docs are licensed under MIT
@@ -155,12 +155,11 @@
 Patch5:         uwsgi_fix_mongodb.patch
 Patch6:         uwsgi_v8-314_compatibility.patch
 Patch7:         uwsgi_fix_mono.patch
-# https://github.com/unbit/uwsgi/pull/1772
-Patch9:         uwsgi-2.0.16-glfs.patch
-# https://github.com/unbit/uwsgi/pull/2141
-Patch10:        uwsgi_fix_psgi.patch
-# https://github.com/unbit/uwsgi/pull/2105
-Patch11:        uwsgi_fix_php74_zend.patch
+# https://github.com/unbit/uwsgi/issues/2283
+Patch12:        uwsgi_fix_php8.patch
+Patch13:        uwsgi_fix_chroot_chdir.patch
+# https://github.com/unbit/uwsgi/issues/2356
+Patch14:        uwsgi_fix_php_arginfo.patch
 
 BuildRequires:  curl, libxml2-devel, libuuid-devel, jansson-devel
 BuildRequires:  libyaml-devel, ruby-devel
@@ -292,7 +291,8 @@
 %endif
 
 %description -n python%{python3_pkgversion}-uwsgidecorators
-The uwsgidecorators Python %{python3_version} module provides higher-level access to the uWSGI API.
+The uwsgidecorators Python %{python3_version} module provides higher-level
+access to the uWSGI API.
 %endif
 
 %if %{with python3_other}
@@ -302,7 +302,8 @@
 Requires:       uwsgi-plugin-python%{python3_other_pkgversion} = %{version}-%{release}
 
 %description -n python%{python3_other_pkgversion}-uwsgidecorators
-The uwsgidecorators Python %{python3_other_version} module provides higher-level access to the uWSGI API.
+The uwsgidecorators Python %{python3_other_version} module provides
+higher-level access to the uWSGI API.
 %endif
 
 %package -n uwsgi-docs
@@ -363,7 +364,7 @@
 
 %package -n uwsgi-alarm-curl
 Summary:  uWSGI - Curl alarm plugin
-Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-alarm-curl
 This package contains the alarm_curl alarm plugin for uWSGI
@@ -446,7 +447,7 @@
 
 %package -n uwsgi-logger-graylog2
 Summary:   uWSGI - Graylog2 logger plugin
-Requires:  uwsgi-plugin-common = %{version}-%{release}, zlib
+Requires:  uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-logger-graylog2
 This package contains the graylog2 logger plugin for uWSGI
@@ -527,7 +528,7 @@
 
 %package -n uwsgi-plugin-airbrake
 Summary:  uWSGI - Plugin for AirBrake support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-airbrake
 This package contains the airbrake plugin for uWSGI
@@ -571,14 +572,14 @@
 
 %package -n uwsgi-plugin-cplusplus
 Summary:  uWSGI - Plugin for C++ support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libstdc++
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-cplusplus
 This package contains the cplusplus plugin for uWSGI
 
 %package -n uwsgi-plugin-curl-cron
 Summary:  uWSGI - Plugin for CURL Cron support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-curl-cron
 This package contains the curl_cron plugin for uWSGI
@@ -623,7 +624,7 @@
 %if %{with python2}
 %package -n uwsgi-plugin-python2-gevent
 Summary:  uWSGI - Plugin for Python 2 GEvent support
-Requires: uwsgi-plugin-python2 = %{version}-%{release}, libevent
+Requires: uwsgi-plugin-python2 = %{version}-%{release}
 Obsoletes: uwsgi-plugin-gevent < 2.0.16-4
 Provides: uwsgi-plugin-gevent = %{version}-%{release}
 
@@ -634,7 +635,7 @@
 %if %{with python3}
 %package -n uwsgi-plugin-python%{python3_pkgversion}-gevent
 Summary:  uWSGI - Plugin for Python %{python3_version} GEvent support
-Requires: uwsgi-plugin-python%{python3_pkgversion} = %{version}-%{release}, libevent
+Requires: uwsgi-plugin-python%{python3_pkgversion} = %{version}-%{release}
 
 %description -n uwsgi-plugin-python%{python3_pkgversion}-gevent
 This package contains the Python %{python3_version} gevent plugin for uWSGI
@@ -913,21 +914,21 @@
 
 %package -n uwsgi-plugin-webdav
 Summary:  uWSGI - Plugin for WebDAV support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libattr
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-webdav
 This package contains the webdav plugin for uWSGI
 
 %package -n uwsgi-plugin-xattr
 Summary:  uWSGI - Plugin for Extra Attributes support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libattr
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-xattr
 This package contains the xattr plugin for uWSGI
 
 %package -n uwsgi-plugin-xslt
 Summary:  uWSGI - Plugin for XSLT transformation support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libxslt
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-xslt
 This package contains the xslt plugin for uWSGI
@@ -1142,11 +1143,9 @@
 %if %{with mono}
 %patch7 -p1
 %endif
-%patch9 -p1
-%if 0%{?fedora} >= 32
-%patch10 -p1
-%endif
-%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
 
 #disable plug-ins
 %if %{without mongodblibs}
@@ -1775,6 +1774,9 @@
 
 
 %changelog
+* Sun Jan 23 2022 Ralf Ertzinger <ralf> - 2.0.20-0.3
+- Update to 2.0.20
+
 * Wed Jan 27 2021 Fedora Release Engineering <releng> - 2.0.18-16
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

Comment 3 Terje Røsten 2022-01-26 19:08:26 UTC
spec could need some clean up:

 - remove support for el6 and python 2.
 - remove legacy stuff like:
    %if 0%{?fedora} >= 28
 - I prefer to list one BR: per line, but it's ok as
 - if el6 goes, remove non systemd stuff etc
 


===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: Development (unversioned) .so files in -devel subpackage, if present.
     Note: Unversioned so-files in private %_libdir subdirectory (see
     attachment). Verify they are not in ld path.
[x]: Header files in -devel subpackage, if present.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
[x]: License file installed when any subpackage combination is installed.
[x]: If the package is under multiple licenses, the licensing breakdown
     must be documented in the spec.
[x]: Package must own all directories that it creates.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[x]: Development files must be in a -devel package
[x ]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[x ]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[-]: Package is not known to require an ExcludeArch tag.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: Package requires other packages for directories it uses.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: %config files are marked noreplace or the reason is justified.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package must not depend on deprecated() packages.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: No %config files under /usr.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

Python:
[x]: Python eggs must not download any dependencies during the build
     process.
[x]: A package which is used by another package via an egg interface should
     provide egg info.
[-]: Package meets the Packaging Guidelines::Python
[x]: Package contains BR: python2-devel or python3-devel
[x]: Packages MUST NOT have dependencies (either build-time or runtime) on
     packages named with the unversioned python- prefix unless no properly
     versioned package exists. Dependencies on Python packages instead MUST
     use names beginning with python2- or python3- as appropriate.
[x]: Python packages must not contain %{pythonX_site(lib|arch)}/* in %files
[x]: Binary eggs must be removed in %prep

===== SHOULD items =====

Generic:
[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Fully versioned dependency in subpackages if applicable.
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Patches link to upstream bugs/comments/lists or are otherwise
     justified.
[-]: Sources are verified with gpgverify first in %prep if upstream
[x]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[-]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
     Note: Arch-ed rpms have a total of 1648640 bytes in /usr/share
[x]: Rpmlint is run on debuginfo package(s).
[x]: Rpmlint is run on all installed packages.

Rpmlint
-------
uwsgi.x86_64: W: spelling-error %description -l en_US interprocess -> inter process, inter-process, intercession
uwsgi.x86_64: W: spelling-error %description -l en_US preforking -> preforming, pitchforking
uwsgi.x86_64: W: spelling-error %description -l en_US evented -> evened, vented, e vented
uwsgi.x86_64: W: spelling-error %description -l en_US uGreen -> u Green, Green, green
uwsgi.x86_64: W: spelling-error %description -l en_US xml -> XML, ml
uwsgi.x86_64: W: spelling-error %description -l en_US ini -> uni, in, ii
uwsgi.x86_64: W: spelling-error %description -l en_US yaml -> yam, yams, yawl
uwsgi.x86_64: W: obsolete-not-provided uwsgi-loggers
uwsgi.x86_64: W: obsolete-not-provided uwsgi-plugin-admin
uwsgi.x86_64: W: obsolete-not-provided uwsgi-plugin-erlang
uwsgi.x86_64: W: obsolete-not-provided uwsgi-router-access
uwsgi.x86_64: W: obsolete-not-provided uwsgi-routers
uwsgi.x86_64: W: crypto-policy-non-compliance-openssl /usr/sbin/uwsgi SSL_CTX_set_cipher_list
uwsgi.x86_64: W: no-manual-page-for-binary uwsgi
uwsgi-devel.x86_64: W: no-documentation

A bit strange source is packaged as normal RPM under /usr/src, but it's ok.

uwsgi-devel.x86_64: W: hidden-file-or-dir /usr/src/uwsgi/2.0.20/.github
uwsgi-devel.x86_64: W: hidden-file-or-dir /usr/src/uwsgi/2.0.20/.github
uwsgi-devel.x86_64: E: version-control-internal-file /usr/src/uwsgi/2.0.20/.gitignore
uwsgi-devel.x86_64: E: zero-length /usr/src/uwsgi/2.0.20/INSTALL
uwsgi-devel.x86_64: E: non-executable-script /usr/src/uwsgi/2.0.20/contrib/centos_init_script 644 /bin/bash 
uwsgi-devel.x86_64: E: non-executable-script /usr/src/uwsgi/2.0.20/contrib/securesubscribe.pl 644 /usr/bin/perl 
uwsgi-devel.x86_64: E: non-executable-script /usr/src/uwsgi/2.0.20/contrib/subscribe.pl 644 /usr/bin/perl 
uwsgi-devel.x86_64: E: non-executable-script /usr/src/uwsgi/2.0.20/contrib/upython 644 /bin/bash 
uwsgi-devel.x86_64: E: zero-length /usr/src/uwsgi/2.0.20/core/logging.
uwsgi-devel.x86_64: E: non-executable-script /usr/src/uwsgi/2.0.20/t/core/read_body_and_send.pl 644 /usr/bin/perl 
uwsgi-devel.x86_64: E: non-executable-script /usr/src/uwsgi/2.0.20/t/core/url_sanitize.pl 644 /usr/bin/perl 
uwsgi-devel.x86_64: E: non-executable-script /usr/src/uwsgi/2.0.20/t/perl/test_input_with_offset.pl 644 /usr/bin/perl 
uwsgi-devel.x86_64: E: non-executable-script /usr/src/uwsgi/2.0.20/t/python/manage_script_name/test_manage_script_name.py 644 /usr/bin/env python3
uwsgi-devel.x86_64: E: version-control-internal-file /usr/src/uwsgi/2.0.20/t/spooler/spooldir/.gitignore
uwsgi-devel.x86_64: E: zero-length /usr/src/uwsgi/2.0.20/t/spooler/spooldir/.gitignore

python3-uwsgidecorators.x86_64: W: spelling-error %description -l en_US uWSGI -> busgirl
python3-uwsgidecorators.x86_64: W: no-documentation

Would be nice to fix these:

uwsgi-docs.x86_64: W: wrong-file-end-of-line-encoding /usr/share/doc/uwsgi-docs/docs/PyPy.rst
uwsgi-docs.x86_64: E: zero-length /usr/share/doc/uwsgi-docs/docs/examples/README.rst
uwsgi-docs.x86_64: E: zero-length /usr/share/doc/uwsgi-docs/docs/tips_and_tricks/README.rst
uwsgi-docs.x86_64: E: zero-length /usr/share/doc/uwsgi-docs/docs/tutorials/README.rst


I guess these are plugins of some sort, ok.

Unversioned so-files
uwsgi-plugin-common: /usr/lib64/uwsgi/cgi_plugin.so
uwsgi-plugin-common: /usr/lib64/uwsgi/http_plugin.so
uwsgi-stats-pusher-file: /usr/lib64/uwsgi/stats_pusher_file_plugin.so
uwsgi-stats-pusher-socket: /usr/lib64/uwsgi/stats_pusher_socket_plugin.so
uwsgi-stats-pusher-statsd: /usr/lib64/uwsgi/stats_pusher_statsd_plugin.so
uwsgi-stats-pusher-zabbix: /usr/lib64/uwsgi/zabbix_plugin.so
uwsgi-alarm-curl: /usr/lib64/uwsgi/alarm_curl_plugin.so
uwsgi-alarm-xmpp: /usr/lib64/uwsgi/alarm_xmpp_plugin.so
uwsgi-transformation-chunked: /usr/lib64/uwsgi/transformation_chunked_plugin.so
uwsgi-transformation-gzip: /usr/lib64/uwsgi/transformation_gzip_plugin.so
uwsgi-transformation-offload: /usr/lib64/uwsgi/transformation_offload_plugin.so
uwsgi-transformation-template: /usr/lib64/uwsgi/transformation_template_plugin.so
uwsgi-transformation-tofile: /usr/lib64/uwsgi/transformation_tofile_plugin.so
uwsgi-transformation-toupper: /usr/lib64/uwsgi/transformation_toupper_plugin.so
uwsgi-log-encoder-msgpack: /usr/lib64/uwsgi/msgpack_plugin.so
uwsgi-logger-crypto: /usr/lib64/uwsgi/logcrypto_plugin.so
uwsgi-logger-file: /usr/lib64/uwsgi/logfile_plugin.so
uwsgi-logger-graylog2: /usr/lib64/uwsgi/graylog2_plugin.so
uwsgi-logger-pipe: /usr/lib64/uwsgi/logpipe_plugin.so
uwsgi-logger-redis: /usr/lib64/uwsgi/redislog_plugin.so
uwsgi-logger-rsyslog: /usr/lib64/uwsgi/rsyslog_plugin.so
uwsgi-logger-socket: /usr/lib64/uwsgi/logsocket_plugin.so
uwsgi-logger-syslog: /usr/lib64/uwsgi/syslog_plugin.so
uwsgi-logger-systemd: /usr/lib64/uwsgi/systemd_logger_plugin.so
uwsgi-logger-zeromq: /usr/lib64/uwsgi/logzmq_plugin.so
uwsgi-plugin-airbrake: /usr/lib64/uwsgi/airbrake_plugin.so
uwsgi-plugin-cache: /usr/lib64/uwsgi/cache_plugin.so
uwsgi-plugin-carbon: /usr/lib64/uwsgi/carbon_plugin.so
uwsgi-plugin-psgi: /usr/lib64/uwsgi/psgi_plugin.so
uwsgi-plugin-coroae: /usr/lib64/uwsgi/coroae_plugin.so
uwsgi-plugin-cheaper-busyness: /usr/lib64/uwsgi/cheaper_busyness_plugin.so
uwsgi-plugin-cplusplus: /usr/lib64/uwsgi/cplusplus_plugin.so
uwsgi-plugin-curl-cron: /usr/lib64/uwsgi/curl_cron_plugin.so
uwsgi-plugin-dumbloop: /usr/lib64/uwsgi/dumbloop_plugin.so
uwsgi-plugin-dummy: /usr/lib64/uwsgi/dummy_plugin.so
uwsgi-plugin-fiber: /usr/lib64/uwsgi/fiber_plugin.so
uwsgi-plugin-gccgo: /usr/lib64/uwsgi/gccgo_plugin.so
uwsgi-plugin-geoip: /usr/lib64/uwsgi/geoip_plugin.so
uwsgi-plugin-python3-gevent: /usr/lib64/uwsgi/python3_gevent_plugin.so
uwsgi-plugin-glusterfs: /usr/lib64/uwsgi/glusterfs_plugin.so
uwsgi-plugin-python3-greenlet: /usr/lib64/uwsgi/python3_greenlet_plugin.so
uwsgi-plugin-ldap: /usr/lib64/uwsgi/ldap_plugin.so
uwsgi-plugin-lua: /usr/lib64/uwsgi/lua_plugin.so
uwsgi-plugin-mongrel2: /usr/lib64/uwsgi/mongrel2_plugin.so
uwsgi-plugin-mono: /usr/lib64/uwsgi/mono_plugin.so
uwsgi-plugin-nagios: /usr/lib64/uwsgi/nagios_plugin.so
uwsgi-plugin-notfound: /usr/lib64/uwsgi/notfound_plugin.so
uwsgi-plugin-pam: /usr/lib64/uwsgi/pam_plugin.so
uwsgi-plugin-php: /usr/lib64/uwsgi/php_plugin.so
uwsgi-plugin-pty: /usr/lib64/uwsgi/pty_plugin.so
uwsgi-plugin-python3: /usr/lib64/uwsgi/python3_plugin.so
uwsgi-plugin-rack: /usr/lib64/uwsgi/rack_plugin.so
uwsgi-plugin-rbthreads: /usr/lib64/uwsgi/rbthreads_plugin.so
uwsgi-plugin-rpc: /usr/lib64/uwsgi/rpc_plugin.so
uwsgi-plugin-rrdtool: /usr/lib64/uwsgi/rrdtool_plugin.so
uwsgi-plugin-ruby: /usr/lib64/uwsgi/ruby19_plugin.so
uwsgi-plugin-spooler: /usr/lib64/uwsgi/spooler_plugin.so
uwsgi-plugin-sqlite3: /usr/lib64/uwsgi/sqlite3_plugin.so
uwsgi-plugin-ssi: /usr/lib64/uwsgi/ssi_plugin.so
uwsgi-plugin-python3-tornado: /usr/lib64/uwsgi/python3_tornado_plugin.so
uwsgi-plugin-ugreen: /usr/lib64/uwsgi/ugreen_plugin.so
uwsgi-plugin-webdav: /usr/lib64/uwsgi/webdav_plugin.so
uwsgi-plugin-xattr: /usr/lib64/uwsgi/xattr_plugin.so
uwsgi-plugin-xslt: /usr/lib64/uwsgi/xslt_plugin.so
uwsgi-plugin-zergpool: /usr/lib64/uwsgi/zergpool_plugin.so
uwsgi-router-basicauth: /usr/lib64/uwsgi/router_basicauth_plugin.so
uwsgi-router-cache: /usr/lib64/uwsgi/router_cache_plugin.so
uwsgi-router-expires: /usr/lib64/uwsgi/router_expires_plugin.so
uwsgi-router-fast: /usr/lib64/uwsgi/fastrouter_plugin.so
uwsgi-router-forkpty: /usr/lib64/uwsgi/forkptyrouter_plugin.so
uwsgi-router-hash: /usr/lib64/uwsgi/router_hash_plugin.so
uwsgi-router-http: /usr/lib64/uwsgi/router_http_plugin.so
uwsgi-router-memcached: /usr/lib64/uwsgi/router_memcached_plugin.so
uwsgi-router-metrics: /usr/lib64/uwsgi/router_metrics_plugin.so
uwsgi-router-radius: /usr/lib64/uwsgi/router_radius_plugin.so
uwsgi-router-raw: /usr/lib64/uwsgi/rawrouter_plugin.so
uwsgi-router-redirect: /usr/lib64/uwsgi/router_redirect_plugin.so
uwsgi-router-redis: /usr/lib64/uwsgi/router_redis_plugin.so
uwsgi-router-rewrite: /usr/lib64/uwsgi/router_rewrite_plugin.so
uwsgi-router-spnego: /usr/lib64/uwsgi/router_spnego_plugin.so
uwsgi-router-ssl: /usr/lib64/uwsgi/sslrouter_plugin.so
uwsgi-router-static: /usr/lib64/uwsgi/router_static_plugin.so
uwsgi-router-tuntap: /usr/lib64/uwsgi/tuntap_plugin.so
uwsgi-router-uwsgi: /usr/lib64/uwsgi/router_uwsgi_plugin.so
uwsgi-router-xmldir: /usr/lib64/uwsgi/router_xmldir_plugin.so


All good here:

Source checksums
----------------
Using local file  uwsgi/uwsgi.tmpfiles as upstream
file:///uwsgi/uwsgi.tmpfiles :
  CHECKSUM(SHA256) this package     : 0b2d563704a1f1997ede3696523cbd34546797c3ada453df4649857695439cb7
  CHECKSUM(SHA256) upstream package : 0b2d563704a1f1997ede3696523cbd34546797c3ada453df4649857695439cb7

Both ok fine:

Requires
--------
Provides
--------

All in all:
 package is APPROVED.

Comment 4 Ralf Ertzinger 2022-01-26 20:54:37 UTC
Thanks for the review so far, I'll try and address some of the comments.

- I removed/simplified fedora version checks, where appropriate
- EL6 support is gone
- I kept python2 support, as the EL7 build can still use it. EL* doesn't build at all right now for different reasons, but I'll see if I can clean that up.
- non-systemd stuff is gone
- I _guess_ the "source in /usr/src" stuff is related to how uwsgi works when trying to build stuff against it, it's not really meant for that and you need the actual source tree for it.
- All the .so files are plugins, yes

There's a new copr currently building at https://copr.fedorainfracloud.org/coprs/build/3255155 with the above changes. spec diff is below.


-------------------------------

--- uwsgi.orig/uwsgi.spec	2021-01-29 06:39:14.000000000 +0100
+++ uwsgi/uwsgi.spec	2022-01-26 21:43:49.120985037 +0100
@@ -1,5 +1,5 @@
 # Documentation sources:
-%global commit 8d868eadfb460785a735030271afa233ac854763
+%global commit 9b4ef5fa68fe42929a5e5410165d36fcc7b2d2c7
 %global shortcommit %(c=%{commit}; echo ${c:0:7})
 %global docrepo uwsgi-docs
 
@@ -8,12 +8,7 @@
 
 # This is primarily built for fedora, make it easy right now
 %if 0%{?fedora}
-%bcond_without systemd
 %bcond_without go
-%if 0%{?fedora} < 31
-%bcond_without python2
-%bcond_without python2_greenlet
-%endif
 %bcond_without python3
 %bcond_without ruby19
 %bcond_without tuntap
@@ -45,38 +40,12 @@
 #Fedora endif
 %endif
 
-# Conditionally disable some things in epel6
-%if 0%{?rhel} == 6
-# javapackages-tools retired in epel (apache-ivy orphanage)
-%bcond_with java
-# el6 doesn't ship with systemd
-%bcond_with systemd
-# el6 doesn't have go
-%bcond_with go
-%bcond_without python2
-%bcond_without python2_greenlet
-# el6 ships with ruby 1.8 but fiberloop/rbthreads needs 1.9
-%bcond_with ruby19
-# el6 doesn't have perl-PSGI
-# el6 does have perl-Coro
-%bcond_with perl
-# el6 httpd does not include mod_proxy_uwsgi
-%bcond_without mod_proxy_uwsgi
-# this fails in el not sure why
-%bcond_with gridfs
-%bcond_with tuntap
-%bcond_with mongodblibs
-%global manual_py_compile 0
-%else
 %global manual_py_compile 1
-%endif
 
 # Conditionally enable/disable some things in epel7
 %if 0%{?rhel} == 7
 # el7 does have java
 %bcond_without java
-# el7 does have systemd
-%bcond_without systemd
 %bcond_without python2
 %bcond_without python3
 %bcond_without python3_other
@@ -107,8 +76,8 @@
 %global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
 %endif
 
-# Disable router_access in fedora >= 28 because tcp_wrappers deprecation
-%if 0%{?fedora} >= 28
+# Disable router_access in fedora because tcp_wrappers deprecation
+%if 0%{?fedora}
 %bcond_with tcp_wrappers
 %else
 %bcond_without tcp_wrappers
@@ -130,8 +99,8 @@
 %endif
 
 Name:           uwsgi
-Version:        2.0.18
-Release:        16%{?dist}
+Version:        2.0.20
+Release:        0.5%{?dist}
 Summary:        Fast, self-healing, application container server
 # uwsgi is licensed under GPLv2 with a linking exception
 # docs are licensed under MIT
@@ -144,7 +113,6 @@
 Source3:        emperor.ini
 Source4:        https://github.com/unbit/%{docrepo}/archive/%{commit}/%{docrepo}-%{shortcommit}.tar.gz
 Source5:        README.Fedora
-Source6:        uwsgi.init
 Source7:        uwsgi.tmpfiles
 
 Patch0:         uwsgi_trick_chroot_rpmbuild.patch
@@ -155,12 +123,11 @@
 Patch5:         uwsgi_fix_mongodb.patch
 Patch6:         uwsgi_v8-314_compatibility.patch
 Patch7:         uwsgi_fix_mono.patch
-# https://github.com/unbit/uwsgi/pull/1772
-Patch9:         uwsgi-2.0.16-glfs.patch
-# https://github.com/unbit/uwsgi/pull/2141
-Patch10:        uwsgi_fix_psgi.patch
-# https://github.com/unbit/uwsgi/pull/2105
-Patch11:        uwsgi_fix_php74_zend.patch
+# https://github.com/unbit/uwsgi/issues/2283
+Patch12:        uwsgi_fix_php8.patch
+Patch13:        uwsgi_fix_chroot_chdir.patch
+# https://github.com/unbit/uwsgi/issues/2356
+Patch14:        uwsgi_fix_php_arginfo.patch
 
 BuildRequires:  curl, libxml2-devel, libuuid-devel, jansson-devel
 BuildRequires:  libyaml-devel, ruby-devel
@@ -202,28 +169,26 @@
 %if %{with go}
 BuildRequires:  gcc-go
 %endif
-%if %{with systemd}
 BuildRequires:  systemd-devel, systemd-units
-%endif
 %if %{with mono}
 BuildRequires:  mono-devel, mono-web, glib2-devel
 %endif
 %if %{with v8}
-%if 0%{?fedora} >= 25
+%if 0%{?fedora}
 BuildRequires:  v8-314-devel
 %else
 BuildRequires:  v8-devel
 %endif
 %endif
 %if %{with mongodblibs}
-%if 0%{?fedora} >= 30
+%if 0%{?fedora}
 BuildRequires:  mongo-cxx-driver-legacy-devel
 %else
 BuildRequires:  mongo-cxx-driver-devel
 %endif
 %endif
 
-%if 0%{?fedora} >= 28
+%if 0%{?fedora}
 BuildRequires:  libargon2-devel
 Obsoletes:      uwsgi-router-access <= 2.0.16
 %endif
@@ -234,13 +199,7 @@
 Obsoletes:      uwsgi-plugin-admin <= 2.0.6
 
 Requires(pre):    shadow-utils
-%if %{with systemd}
 %{?systemd_requires}
-%else
-Requires(post): chkconfig
-Requires(preun): chkconfig
-Requires(preun): initscripts
-%endif
 
 %filter_requires_in %{_usrsrc}
 %filter_provides_in %{_usrsrc}
@@ -292,7 +251,8 @@
 %endif
 
 %description -n python%{python3_pkgversion}-uwsgidecorators
-The uwsgidecorators Python %{python3_version} module provides higher-level access to the uWSGI API.
+The uwsgidecorators Python %{python3_version} module provides higher-level
+access to the uWSGI API.
 %endif
 
 %if %{with python3_other}
@@ -302,7 +262,8 @@
 Requires:       uwsgi-plugin-python%{python3_other_pkgversion} = %{version}-%{release}
 
 %description -n python%{python3_other_pkgversion}-uwsgidecorators
-The uwsgidecorators Python %{python3_other_version} module provides higher-level access to the uWSGI API.
+The uwsgidecorators Python %{python3_other_version} module provides
+higher-level access to the uWSGI API.
 %endif
 
 %package -n uwsgi-docs
@@ -363,7 +324,7 @@
 
 %package -n uwsgi-alarm-curl
 Summary:  uWSGI - Curl alarm plugin
-Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-alarm-curl
 This package contains the alarm_curl alarm plugin for uWSGI
@@ -446,7 +407,7 @@
 
 %package -n uwsgi-logger-graylog2
 Summary:   uWSGI - Graylog2 logger plugin
-Requires:  uwsgi-plugin-common = %{version}-%{release}, zlib
+Requires:  uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-logger-graylog2
 This package contains the graylog2 logger plugin for uWSGI
@@ -505,14 +466,12 @@
 %description -n uwsgi-logger-syslog
 This package contains the syslog logger plugin for uWSGI
 
-%if %{with systemd}
 %package -n uwsgi-logger-systemd
 Summary:  uWSGI - systemd journal logger plugin
 Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-logger-systemd
 This package contains the systemd journal logger plugin for uWSGI
-%endif
 
 %if %{with zeromq}
 %package -n uwsgi-logger-zeromq
@@ -527,7 +486,7 @@
 
 %package -n uwsgi-plugin-airbrake
 Summary:  uWSGI - Plugin for AirBrake support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-airbrake
 This package contains the airbrake plugin for uWSGI
@@ -571,14 +530,14 @@
 
 %package -n uwsgi-plugin-cplusplus
 Summary:  uWSGI - Plugin for C++ support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libstdc++
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-cplusplus
 This package contains the cplusplus plugin for uWSGI
 
 %package -n uwsgi-plugin-curl-cron
 Summary:  uWSGI - Plugin for CURL Cron support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-curl-cron
 This package contains the curl_cron plugin for uWSGI
@@ -623,7 +582,7 @@
 %if %{with python2}
 %package -n uwsgi-plugin-python2-gevent
 Summary:  uWSGI - Plugin for Python 2 GEvent support
-Requires: uwsgi-plugin-python2 = %{version}-%{release}, libevent
+Requires: uwsgi-plugin-python2 = %{version}-%{release}
 Obsoletes: uwsgi-plugin-gevent < 2.0.16-4
 Provides: uwsgi-plugin-gevent = %{version}-%{release}
 
@@ -634,7 +593,7 @@
 %if %{with python3}
 %package -n uwsgi-plugin-python%{python3_pkgversion}-gevent
 Summary:  uWSGI - Plugin for Python %{python3_version} GEvent support
-Requires: uwsgi-plugin-python%{python3_pkgversion} = %{version}-%{release}, libevent
+Requires: uwsgi-plugin-python%{python3_pkgversion} = %{version}-%{release}
 
 %description -n uwsgi-plugin-python%{python3_pkgversion}-gevent
 This package contains the Python %{python3_version} gevent plugin for uWSGI
@@ -886,10 +845,6 @@
 %package -n uwsgi-plugin-python%{python3_pkgversion}-tornado
 Summary:  uWSGI - Plugin for Tornado (Python %{python3_version}) support
 Requires: uwsgi-plugin-common = %{version}-%{release}, python%{python3_pkgversion}-tornado
-%if 0%{?fedora} && 0%{?fedora} < 29
-Obsoletes: uwsgi-plugin-tornado3 < 2.0.16-4
-Provides: uwsgi-plugin-tornado3 = %{version}-%{release}
-%endif
 
 %description -n uwsgi-plugin-python%{python3_pkgversion}-tornado
 This package contains the tornado (Python %{python3_version}) plugin for uWSGI
@@ -913,21 +868,21 @@
 
 %package -n uwsgi-plugin-webdav
 Summary:  uWSGI - Plugin for WebDAV support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libattr
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-webdav
 This package contains the webdav plugin for uWSGI
 
 %package -n uwsgi-plugin-xattr
 Summary:  uWSGI - Plugin for Extra Attributes support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libattr
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-xattr
 This package contains the xattr plugin for uWSGI
 
 %package -n uwsgi-plugin-xslt
 Summary:  uWSGI - Plugin for XSLT transformation support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libxslt
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-xslt
 This package contains the xslt plugin for uWSGI
@@ -1133,20 +1088,18 @@
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
-%if 0%{?fedora} >= 22
+%if 0%{?fedora}
 %patch5 -p1
 %endif
-%if %{with v8} && 0%{?fedora} >= 25
+%if %{with v8} && 0%{?fedora}
 %patch6 -p1
 %endif
 %if %{with mono}
 %patch7 -p1
 %endif
-%patch9 -p1
-%if 0%{?fedora} >= 32
-%patch10 -p1
-%endif
-%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
 
 #disable plug-ins
 %if %{without mongodblibs}
@@ -1201,9 +1154,7 @@
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/fiber fedora
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/rbthreads fedora
 %endif
-%if %{with systemd}
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/systemd_logger fedora
-%endif
 %if %{with tuntap}
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/tuntap fedora
 %endif
@@ -1245,9 +1196,6 @@
 install -d %{buildroot}%{_usrsrc}/uwsgi/%{version}
 install -d %{buildroot}%{_includedir}/uwsgi
 install -d %{buildroot}%{_libdir}/uwsgi
-%if %{without systemd}
-install -d -m 0775 %{buildroot}%{_localstatedir}/run/uwsgi
-%endif
 %if %{with mono}
 install -d %{buildroot}%{_monogacdir}
 %endif
@@ -1287,12 +1235,8 @@
 gacutil -i plugins/mono/uwsgi.dll -f -package uwsgi -root %{buildroot}/usr/lib
 %endif
 install -D -p -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/uwsgi.ini
-%if %{with systemd}
 install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/uwsgi.service
 install -D -p -m 0644 %{SOURCE7} %{buildroot}%{_tmpfilesdir}/uwsgi.conf
-%else
-install -D -p -m 0755 %{SOURCE6} %{buildroot}%{_initddir}/uwsgi
-%endif
 %if %{with mod_proxy_uwsgi}
 install -D -p -m 0755 apache2/.libs/mod_proxy_uwsgi.so %{buildroot}%{_httpd_moddir}/mod_proxy_uwsgi.so
 %endif
@@ -1301,13 +1245,11 @@
 %pre
 getent group uwsgi >/dev/null || groupadd -r uwsgi
 getent passwd uwsgi >/dev/null || \
-    useradd -r -g uwsgi -d %{!?with_systemd:%{_localstatedir}}/run/uwsgi -s /sbin/nologin \
+    useradd -r -g uwsgi -d /run/uwsgi -s /sbin/nologin \
     -c "uWSGI daemon user" uwsgi
 exit 0
 
 %post
-%if %{with systemd}
-echo "Executing systemd post-install tasks"
 %if 0%{?systemd_post:1}
     %systemd_post uwsgi.service
 %else
@@ -1316,14 +1258,8 @@
         /bin/systemctl daemon-reload >/dev/null 2>&1 || :
     fi
 %endif
-%else
-echo "Executing System V post-install tasks"
-/sbin/chkconfig --add uwsgi
-%endif
 
 %preun
-%if %{with systemd}
-echo "Executing systemd pre-uninstall tasks"
 %if 0%{?systemd_preun:1}
     %systemd_preun uwsgi.service
 %else
@@ -1333,17 +1269,8 @@
         /bin/systemctl stop uwsgi.service > /dev/null 2>&1 || :
     fi
 %endif
-%else
-echo "Executing System V pre-uninstall tasks"
-if [ $1 -eq 0 ] ; then
-    /sbin/service uwsgi stop >/dev/null 2>&1
-    /sbin/chkconfig --del uwsgi
-fi
-%endif
 
 %postun
-%if %{with systemd}
-echo "Executing systemd post-uninstall tasks"
 %if 0%{?systemd_postun:1}
     %systemd_postun uwsgi.service
 %else
@@ -1353,27 +1280,14 @@
         /bin/systemctl try-restart uwsgi.service >/dev/null 2>&1 || :
     fi
 %endif
-%else
-echo "Executing System V post-uninstall tasks"
-if [ "$1" -ge "1" ] ; then
-    /sbin/service uwsgi condrestart >/dev/null 2>&1 || :
-fi
-%endif
 
 
 %files
 %{_sbindir}/uwsgi
 %config(noreplace) %{_sysconfdir}/uwsgi.ini
-%if %{with systemd}
 %{_unitdir}/uwsgi.service
 %{_tmpfilesdir}/uwsgi.conf
-%else
-%{_initddir}/uwsgi
-%endif
 %dir %{_sysconfdir}/uwsgi.d
-%if %{without systemd}
-%attr(0775,uwsgi,uwsgi) %dir %{_localstatedir}/run/uwsgi
-%endif
 %doc README README.Fedora CHANGELOG
 %license LICENSE
 
@@ -1487,10 +1401,8 @@
 %files -n uwsgi-logger-syslog
 %{_libdir}/uwsgi/syslog_plugin.so
 
-%if %{with systemd}
 %files -n uwsgi-logger-systemd
 %{_libdir}/uwsgi/systemd_logger_plugin.so
-%endif
 
 %if %{with zeromq}
 %files -n uwsgi-logger-zeromq
@@ -1775,6 +1687,9 @@
 
 
 %changelog
+* Sun Jan 23 2022 Ralf Ertzinger <ralf> - 2.0.20-0.5
+- Update to 2.0.20
+
 * Wed Jan 27 2021 Fedora Release Engineering <releng> - 2.0.18-16
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

Comment 5 Terje Røsten 2022-01-27 08:50:41 UTC
Thanks,

+# Disable router_access in fedora because tcp_wrappers deprecation
+%if 0%{?fedora}
 %bcond_with tcp_wrappers
 %else
 %bcond_without tcp_wrappers
@@ -130,8 +99,8 @@
 %endif

Just remove tcp_wrappers support everywhere? It's gone from el8 too, leaving el7 as sole user.

Comment 6 Ralf Ertzinger 2022-01-28 19:42:35 UTC
Final version, probably.

https://copr.fedorainfracloud.org/coprs/ertzing/scratch_x64/build/3258602/

Builds in F34, F35, EL7 and EL8, doesn't build in rawhide which I'll blame on rawhide.

------------------------
--- uwsgi.orig/uwsgi.spec	2021-01-29 06:39:14.000000000 +0100
+++ uwsgi/uwsgi.spec	2022-01-28 18:26:20.980948342 +0100
@@ -1,5 +1,5 @@
 # Documentation sources:
-%global commit 8d868eadfb460785a735030271afa233ac854763
+%global commit 9b4ef5fa68fe42929a5e5410165d36fcc7b2d2c7
 %global shortcommit %(c=%{commit}; echo ${c:0:7})
 %global docrepo uwsgi-docs
 
@@ -8,18 +8,14 @@
 
 # This is primarily built for fedora, make it easy right now
 %if 0%{?fedora}
-%bcond_without systemd
 %bcond_without go
-%if 0%{?fedora} < 31
-%bcond_without python2
-%bcond_without python2_greenlet
-%endif
 %bcond_without python3
 %bcond_without ruby19
 %bcond_without tuntap
 %bcond_without zeromq
 %bcond_without perl
 %bcond_without glusterfs
+%bcond_without php
 # javapackages-tools retired (apache-ivy orphanage)
 %bcond_with java
 # Fedora httpd includes mod_proxy_uwsgi
@@ -45,41 +41,15 @@
 #Fedora endif
 %endif
 
-# Conditionally disable some things in epel6
-%if 0%{?rhel} == 6
-# javapackages-tools retired in epel (apache-ivy orphanage)
-%bcond_with java
-# el6 doesn't ship with systemd
-%bcond_with systemd
-# el6 doesn't have go
-%bcond_with go
-%bcond_without python2
-%bcond_without python2_greenlet
-# el6 ships with ruby 1.8 but fiberloop/rbthreads needs 1.9
-%bcond_with ruby19
-# el6 doesn't have perl-PSGI
-# el6 does have perl-Coro
-%bcond_with perl
-# el6 httpd does not include mod_proxy_uwsgi
-%bcond_without mod_proxy_uwsgi
-# this fails in el not sure why
-%bcond_with gridfs
-%bcond_with tuntap
-%bcond_with mongodblibs
-%global manual_py_compile 0
-%else
-%global manual_py_compile 1
-%endif
-
 # Conditionally enable/disable some things in epel7
 %if 0%{?rhel} == 7
 # el7 does have java
 %bcond_without java
-# el7 does have systemd
-%bcond_without systemd
 %bcond_without python2
 %bcond_without python3
 %bcond_without python3_other
+# This only exists on EL7
+%bcond_without tcp_wrappers
 # el7 doesn't have zeromq
 %bcond_with zeromq
 # el7 does have python-greenlet, but only on x86_64
@@ -99,21 +69,53 @@
 %endif
 # this fails in el7 not sure why
 %bcond_with gridfs
+# EL7 PHP is too old
+%bcond_with php
+%endif
+
+# epel8 builds pretty similar to Fedora for now
+%if 0%{?rhel} == 8
+%bcond_without go
+%bcond_without python3
+%bcond_without ruby19
+%bcond_without tuntap
+%bcond_without zeromq
+%bcond_without perl
+%bcond_without glusterfs
+%bcond_without php
+# javapackages-tools retired (apache-ivy orphanage)
+%bcond_with java
+# Fedora httpd includes mod_proxy_uwsgi
+# https://bugzilla.redhat.com/show_bug.cgi?id=1574335
+%bcond_with mod_proxy_uwsgi
+#mono
+%ifarch %{mono_arches}
+%bcond_without mono
+%else
+%bcond_with mono
+%endif
+# mongodblibs
+# mongo-cxx-driver-legacy broken in rawhide rhbz#1675407
+%bcond_with mongodblibs
+# v8-314 retired
+%bcond_with v8
+#mongodblibs dependency
+%if %{without mongodblibs}
+%bcond_with gridfs
+%else
+%bcond_without gridfs
+%endif
+#EL8 endif
 %endif
 
+%global manual_py_compile 1
+
 # Turn off byte compilation so it doesn't try
 # to auto-optimize the code in /usr/src/uwsgi
 %if %{manual_py_compile} == 1
 %global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
 %endif
 
-# Disable router_access in fedora >= 28 because tcp_wrappers deprecation
-%if 0%{?fedora} >= 28
-%bcond_with tcp_wrappers
-%else
-%bcond_without tcp_wrappers
-%endif
-
 # Set %%__python to the newest possible version
 %if %{with python3}
 %global __python %{__python3}
@@ -130,8 +132,8 @@
 %endif
 
 Name:           uwsgi
-Version:        2.0.18
-Release:        16%{?dist}
+Version:        2.0.20
+Release:        0.7%{?dist}
 Summary:        Fast, self-healing, application container server
 # uwsgi is licensed under GPLv2 with a linking exception
 # docs are licensed under MIT
@@ -144,7 +146,6 @@
 Source3:        emperor.ini
 Source4:        https://github.com/unbit/%{docrepo}/archive/%{commit}/%{docrepo}-%{shortcommit}.tar.gz
 Source5:        README.Fedora
-Source6:        uwsgi.init
 Source7:        uwsgi.tmpfiles
 
 Patch0:         uwsgi_trick_chroot_rpmbuild.patch
@@ -155,12 +156,11 @@
 Patch5:         uwsgi_fix_mongodb.patch
 Patch6:         uwsgi_v8-314_compatibility.patch
 Patch7:         uwsgi_fix_mono.patch
-# https://github.com/unbit/uwsgi/pull/1772
-Patch9:         uwsgi-2.0.16-glfs.patch
-# https://github.com/unbit/uwsgi/pull/2141
-Patch10:        uwsgi_fix_psgi.patch
-# https://github.com/unbit/uwsgi/pull/2105
-Patch11:        uwsgi_fix_php74_zend.patch
+# https://github.com/unbit/uwsgi/issues/2283
+Patch12:        uwsgi_fix_php8.patch
+Patch13:        uwsgi_fix_chroot_chdir.patch
+# https://github.com/unbit/uwsgi/issues/2356
+Patch14:        uwsgi_fix_php_arginfo.patch
 
 BuildRequires:  curl, libxml2-devel, libuuid-devel, jansson-devel
 BuildRequires:  libyaml-devel, ruby-devel
@@ -184,7 +184,10 @@
 BuildRequires:  glusterfs-devel, glusterfs-api-devel
 %endif
 BuildRequires:  lua-devel, ruby, pcre-devel
-BuildRequires:  php-devel, php-embedded, libedit-devel, krb5-devel
+%if %{with php}
+BuildRequires:  php-devel, php-embedded
+%endif
+BuildRequires:  libedit-devel, krb5-devel
 BuildRequires:  openssl-devel
 BuildRequires:  bzip2-devel, gmp-devel, pam-devel
 BuildRequires:  sqlite-devel, libcap-devel
@@ -202,28 +205,26 @@
 %if %{with go}
 BuildRequires:  gcc-go
 %endif
-%if %{with systemd}
 BuildRequires:  systemd-devel, systemd-units
-%endif
 %if %{with mono}
 BuildRequires:  mono-devel, mono-web, glib2-devel
 %endif
 %if %{with v8}
-%if 0%{?fedora} >= 25
+%if 0%{?fedora}
 BuildRequires:  v8-314-devel
 %else
 BuildRequires:  v8-devel
 %endif
 %endif
 %if %{with mongodblibs}
-%if 0%{?fedora} >= 30
+%if 0%{?fedora}
 BuildRequires:  mongo-cxx-driver-legacy-devel
 %else
 BuildRequires:  mongo-cxx-driver-devel
 %endif
 %endif
 
-%if 0%{?fedora} >= 28
+%if 0%{?fedora}
 BuildRequires:  libargon2-devel
 Obsoletes:      uwsgi-router-access <= 2.0.16
 %endif
@@ -234,13 +235,7 @@
 Obsoletes:      uwsgi-plugin-admin <= 2.0.6
 
 Requires(pre):    shadow-utils
-%if %{with systemd}
 %{?systemd_requires}
-%else
-Requires(post): chkconfig
-Requires(preun): chkconfig
-Requires(preun): initscripts
-%endif
 
 %filter_requires_in %{_usrsrc}
 %filter_provides_in %{_usrsrc}
@@ -292,7 +287,8 @@
 %endif
 
 %description -n python%{python3_pkgversion}-uwsgidecorators
-The uwsgidecorators Python %{python3_version} module provides higher-level access to the uWSGI API.
+The uwsgidecorators Python %{python3_version} module provides higher-level
+access to the uWSGI API.
 %endif
 
 %if %{with python3_other}
@@ -302,7 +298,8 @@
 Requires:       uwsgi-plugin-python%{python3_other_pkgversion} = %{version}-%{release}
 
 %description -n python%{python3_other_pkgversion}-uwsgidecorators
-The uwsgidecorators Python %{python3_other_version} module provides higher-level access to the uWSGI API.
+The uwsgidecorators Python %{python3_other_version} module provides
+higher-level access to the uWSGI API.
 %endif
 
 %package -n uwsgi-docs
@@ -363,7 +360,7 @@
 
 %package -n uwsgi-alarm-curl
 Summary:  uWSGI - Curl alarm plugin
-Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-alarm-curl
 This package contains the alarm_curl alarm plugin for uWSGI
@@ -446,7 +443,7 @@
 
 %package -n uwsgi-logger-graylog2
 Summary:   uWSGI - Graylog2 logger plugin
-Requires:  uwsgi-plugin-common = %{version}-%{release}, zlib
+Requires:  uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-logger-graylog2
 This package contains the graylog2 logger plugin for uWSGI
@@ -505,14 +502,12 @@
 %description -n uwsgi-logger-syslog
 This package contains the syslog logger plugin for uWSGI
 
-%if %{with systemd}
 %package -n uwsgi-logger-systemd
 Summary:  uWSGI - systemd journal logger plugin
 Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-logger-systemd
 This package contains the systemd journal logger plugin for uWSGI
-%endif
 
 %if %{with zeromq}
 %package -n uwsgi-logger-zeromq
@@ -527,7 +522,7 @@
 
 %package -n uwsgi-plugin-airbrake
 Summary:  uWSGI - Plugin for AirBrake support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-airbrake
 This package contains the airbrake plugin for uWSGI
@@ -571,14 +566,14 @@
 
 %package -n uwsgi-plugin-cplusplus
 Summary:  uWSGI - Plugin for C++ support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libstdc++
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-cplusplus
 This package contains the cplusplus plugin for uWSGI
 
 %package -n uwsgi-plugin-curl-cron
 Summary:  uWSGI - Plugin for CURL Cron support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libcurl
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-curl-cron
 This package contains the curl_cron plugin for uWSGI
@@ -623,7 +618,7 @@
 %if %{with python2}
 %package -n uwsgi-plugin-python2-gevent
 Summary:  uWSGI - Plugin for Python 2 GEvent support
-Requires: uwsgi-plugin-python2 = %{version}-%{release}, libevent
+Requires: uwsgi-plugin-python2 = %{version}-%{release}
 Obsoletes: uwsgi-plugin-gevent < 2.0.16-4
 Provides: uwsgi-plugin-gevent = %{version}-%{release}
 
@@ -634,7 +629,7 @@
 %if %{with python3}
 %package -n uwsgi-plugin-python%{python3_pkgversion}-gevent
 Summary:  uWSGI - Plugin for Python %{python3_version} GEvent support
-Requires: uwsgi-plugin-python%{python3_pkgversion} = %{version}-%{release}, libevent
+Requires: uwsgi-plugin-python%{python3_pkgversion} = %{version}-%{release}
 
 %description -n uwsgi-plugin-python%{python3_pkgversion}-gevent
 This package contains the Python %{python3_version} gevent plugin for uWSGI
@@ -759,12 +754,14 @@
 %description -n uwsgi-plugin-pam
 This package contains the PAM plugin for uWSGI
 
+%if %{with php}
 %package -n uwsgi-plugin-php
 Summary:  uWSGI - Plugin for PHP support
 Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-php
 This package contains the PHP plugin for uWSGI
+%endif
 
 %package -n uwsgi-plugin-pty
 Summary:  uWSGI - Plugin for PTY support
@@ -886,10 +883,6 @@
 %package -n uwsgi-plugin-python%{python3_pkgversion}-tornado
 Summary:  uWSGI - Plugin for Tornado (Python %{python3_version}) support
 Requires: uwsgi-plugin-common = %{version}-%{release}, python%{python3_pkgversion}-tornado
-%if 0%{?fedora} && 0%{?fedora} < 29
-Obsoletes: uwsgi-plugin-tornado3 < 2.0.16-4
-Provides: uwsgi-plugin-tornado3 = %{version}-%{release}
-%endif
 
 %description -n uwsgi-plugin-python%{python3_pkgversion}-tornado
 This package contains the tornado (Python %{python3_version}) plugin for uWSGI
@@ -913,21 +906,21 @@
 
 %package -n uwsgi-plugin-webdav
 Summary:  uWSGI - Plugin for WebDAV support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libattr
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-webdav
 This package contains the webdav plugin for uWSGI
 
 %package -n uwsgi-plugin-xattr
 Summary:  uWSGI - Plugin for Extra Attributes support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libattr
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-xattr
 This package contains the xattr plugin for uWSGI
 
 %package -n uwsgi-plugin-xslt
 Summary:  uWSGI - Plugin for XSLT transformation support
-Requires: uwsgi-plugin-common = %{version}-%{release}, libxslt
+Requires: uwsgi-plugin-common = %{version}-%{release}
 
 %description -n uwsgi-plugin-xslt
 This package contains the xslt plugin for uWSGI
@@ -1133,41 +1126,23 @@
 %patch1 -p1
 %patch2 -p1
 %patch3 -p1
-%if 0%{?fedora} >= 22
+%if 0%{?fedora}
 %patch5 -p1
 %endif
-%if %{with v8} && 0%{?fedora} >= 25
+%if %{with v8} && 0%{?fedora}
 %patch6 -p1
 %endif
 %if %{with mono}
 %patch7 -p1
 %endif
-%patch9 -p1
-%if 0%{?fedora} >= 32
-%patch10 -p1
-%endif
-%patch11 -p1
-
-#disable plug-ins
-%if %{without mongodblibs}
-sed -in "s/mongodblog, //" buildconf/fedora.ini
-sed -in "s/stats_pusher_mongodb, //" buildconf/fedora.ini
-%endif
-%if %{without v8}
-sed -in "s/v8, //" buildconf/fedora.ini
-%endif
-%if %{without gridfs}
-sed -in "s/gridfs, //" buildconf/fedora.ini
-%endif
-%if %{without mono}
-sed -in "s/mono, //" buildconf/fedora.ini
-%endif
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
 
 %if %{with perl} && (%{with python3} || %{with python3_other})
 %{__python} -m lib2to3 --write --nobackups plugins/coroae/uwsgiplugin.py
 %endif
 
-
 %build
 CFLAGS="%{optflags} -Wno-error -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --build fedora.ini
 %if %{with python2}
@@ -1191,19 +1166,22 @@
 %if %{with mono}
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/mono fedora
 %endif
+%if %{with php}
+CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/php fedora
+%endif
 %if %{with v8}
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/v8 fedora
 %endif
 %if %{with go}
-CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/gccgo fedora
+# In EL* distributions, the gccgo compiler needs to be explicitly used to
+# compile Go code, gcc will not work. However, gccgo can compile C code,
+# so use that instead
+CC="gccgo" CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/gccgo fedora
 %endif
 %if %{with ruby19}
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/fiber fedora
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/rbthreads fedora
 %endif
-%if %{with systemd}
-CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/systemd_logger fedora
-%endif
 %if %{with tuntap}
 CFLAGS="%{optflags} -Wno-unused-but-set-variable" %{__python} uwsgiconfig.py --plugin plugins/tuntap fedora
 %endif
@@ -1245,9 +1223,6 @@
 install -d %{buildroot}%{_usrsrc}/uwsgi/%{version}
 install -d %{buildroot}%{_includedir}/uwsgi
 install -d %{buildroot}%{_libdir}/uwsgi
-%if %{without systemd}
-install -d -m 0775 %{buildroot}%{_localstatedir}/run/uwsgi
-%endif
 %if %{with mono}
 install -d %{buildroot}%{_monogacdir}
 %endif
@@ -1287,12 +1262,8 @@
 gacutil -i plugins/mono/uwsgi.dll -f -package uwsgi -root %{buildroot}/usr/lib
 %endif
 install -D -p -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/uwsgi.ini
-%if %{with systemd}
 install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/uwsgi.service
 install -D -p -m 0644 %{SOURCE7} %{buildroot}%{_tmpfilesdir}/uwsgi.conf
-%else
-install -D -p -m 0755 %{SOURCE6} %{buildroot}%{_initddir}/uwsgi
-%endif
 %if %{with mod_proxy_uwsgi}
 install -D -p -m 0755 apache2/.libs/mod_proxy_uwsgi.so %{buildroot}%{_httpd_moddir}/mod_proxy_uwsgi.so
 %endif
@@ -1301,13 +1272,11 @@
 %pre
 getent group uwsgi >/dev/null || groupadd -r uwsgi
 getent passwd uwsgi >/dev/null || \
-    useradd -r -g uwsgi -d %{!?with_systemd:%{_localstatedir}}/run/uwsgi -s /sbin/nologin \
+    useradd -r -g uwsgi -d /run/uwsgi -s /sbin/nologin \
     -c "uWSGI daemon user" uwsgi
 exit 0
 
 %post
-%if %{with systemd}
-echo "Executing systemd post-install tasks"
 %if 0%{?systemd_post:1}
     %systemd_post uwsgi.service
 %else
@@ -1316,14 +1285,8 @@
         /bin/systemctl daemon-reload >/dev/null 2>&1 || :
     fi
 %endif
-%else
-echo "Executing System V post-install tasks"
-/sbin/chkconfig --add uwsgi
-%endif
 
 %preun
-%if %{with systemd}
-echo "Executing systemd pre-uninstall tasks"
 %if 0%{?systemd_preun:1}
     %systemd_preun uwsgi.service
 %else
@@ -1333,17 +1296,8 @@
         /bin/systemctl stop uwsgi.service > /dev/null 2>&1 || :
     fi
 %endif
-%else
-echo "Executing System V pre-uninstall tasks"
-if [ $1 -eq 0 ] ; then
-    /sbin/service uwsgi stop >/dev/null 2>&1
-    /sbin/chkconfig --del uwsgi
-fi
-%endif
 
 %postun
-%if %{with systemd}
-echo "Executing systemd post-uninstall tasks"
 %if 0%{?systemd_postun:1}
     %systemd_postun uwsgi.service
 %else
@@ -1353,27 +1307,14 @@
         /bin/systemctl try-restart uwsgi.service >/dev/null 2>&1 || :
     fi
 %endif
-%else
-echo "Executing System V post-uninstall tasks"
-if [ "$1" -ge "1" ] ; then
-    /sbin/service uwsgi condrestart >/dev/null 2>&1 || :
-fi
-%endif
 
 
 %files
 %{_sbindir}/uwsgi
 %config(noreplace) %{_sysconfdir}/uwsgi.ini
-%if %{with systemd}
 %{_unitdir}/uwsgi.service
 %{_tmpfilesdir}/uwsgi.conf
-%else
-%{_initddir}/uwsgi
-%endif
 %dir %{_sysconfdir}/uwsgi.d
-%if %{without systemd}
-%attr(0775,uwsgi,uwsgi) %dir %{_localstatedir}/run/uwsgi
-%endif
 %doc README README.Fedora CHANGELOG
 %license LICENSE
 
@@ -1487,10 +1428,8 @@
 %files -n uwsgi-logger-syslog
 %{_libdir}/uwsgi/syslog_plugin.so
 
-%if %{with systemd}
 %files -n uwsgi-logger-systemd
 %{_libdir}/uwsgi/systemd_logger_plugin.so
-%endif
 
 %if %{with zeromq}
 %files -n uwsgi-logger-zeromq
@@ -1615,8 +1554,10 @@
 %files -n uwsgi-plugin-pam
 %{_libdir}/uwsgi/pam_plugin.so
 
+%if %{with php}
 %files -n uwsgi-plugin-php
 %{_libdir}/uwsgi/php_plugin.so
+%endif
 
 %files -n uwsgi-plugin-pty
 %{_libdir}/uwsgi/pty_plugin.so
@@ -1775,6 +1716,9 @@
 
 
 %changelog
+* Sun Jan 23 2022 Ralf Ertzinger <ralf> - 2.0.20-0.7
+- Update to 2.0.20
+
 * Wed Jan 27 2021 Fedora Release Engineering <releng> - 2.0.18-16
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

Comment 7 Terje Røsten 2022-01-29 09:32:07 UTC
Very nice, thanks for your work! Please feel free to import!

I guess Fedora 35 (which is missing the package) is most important at the moment.

Comment 8 Terje Røsten 2022-02-13 09:29:17 UTC
Import done:

 https://bodhi.fedoraproject.org/updates/FEDORA-2022-db55087b8f

Closing report. 

Thanks!


Note You need to log in before you can comment on or make changes to this bug.