From 3ed5aea41fb63df3b8903f6a012c272377fd7d4e Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 28 Mar 2023 11:56:30 +0000 Subject: [PATCH] import python3.11-mod_wsgi-4.9.4-1.el9 --- .gitignore | 1 + .python3.11-mod_wsgi.metadata | 1 + SOURCES/mod_wsgi-4.5.20-exports.patch | 11 ++ SOURCES/mod_wsgi-4.7.1-remove-rpath.patch | 33 ++++ SOURCES/wsgi-python3.conf | 6 + SOURCES/wsgi.conf | 7 + SPECS/python3.11-mod_wsgi.spec | 197 ++++++++++++++++++++++ 7 files changed, 256 insertions(+) create mode 100644 .gitignore create mode 100644 .python3.11-mod_wsgi.metadata create mode 100644 SOURCES/mod_wsgi-4.5.20-exports.patch create mode 100644 SOURCES/mod_wsgi-4.7.1-remove-rpath.patch create mode 100644 SOURCES/wsgi-python3.conf create mode 100644 SOURCES/wsgi.conf create mode 100644 SPECS/python3.11-mod_wsgi.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8ed1ae4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/mod_wsgi-4.9.4.tar.gz diff --git a/.python3.11-mod_wsgi.metadata b/.python3.11-mod_wsgi.metadata new file mode 100644 index 0000000..819c313 --- /dev/null +++ b/.python3.11-mod_wsgi.metadata @@ -0,0 +1 @@ +fddc6889c4e3ecb1e8569f5856d0ca11b06cce80 SOURCES/mod_wsgi-4.9.4.tar.gz diff --git a/SOURCES/mod_wsgi-4.5.20-exports.patch b/SOURCES/mod_wsgi-4.5.20-exports.patch new file mode 100644 index 0000000..97e5671 --- /dev/null +++ b/SOURCES/mod_wsgi-4.5.20-exports.patch @@ -0,0 +1,11 @@ +--- mod_wsgi-4.5.20/Makefile.in.exports ++++ mod_wsgi-4.5.20/Makefile.in +@@ -28,7 +28,7 @@ + all : src/server/mod_wsgi.la + + src/server/mod_wsgi.la : $(SRCFILES) +- $(APXS) -c $(CPPFLAGS) $(CFLAGS) $(SRCFILES) $(LDFLAGS) $(LDLIBS) ++ $(APXS) -Wl,-export-symbols-regex -Wl,wsgi_module -c $(CPPFLAGS) $(CFLAGS) $(SRCFILES) $(LDFLAGS) $(LDLIBS) + + $(DESTDIR)$(LIBEXECDIR) : + mkdir -p $@ diff --git a/SOURCES/mod_wsgi-4.7.1-remove-rpath.patch b/SOURCES/mod_wsgi-4.7.1-remove-rpath.patch new file mode 100644 index 0000000..bcbfd10 --- /dev/null +++ b/SOURCES/mod_wsgi-4.7.1-remove-rpath.patch @@ -0,0 +1,33 @@ +diff --git a/setup.py b/setup.py +index e0c8c84..a3e24f1 100644 +--- a/setup.py ++++ b/setup.py +@@ -321,19 +321,6 @@ EXTRA_COMPILE_FLAGS = (EXTRA_INCLUDES + CPPFLAGS + EXTRA_CPPFLAGS + + CFLAGS + EXTRA_CFLAGS + APR_INCLUDES + APU_INCLUDES) + EXTRA_LINK_ARGS = PYTHON_LDFLAGS + PYTHON_LDLIBS + +-# Force adding of LD_RUN_PATH for platforms that may need it. +- +-LD_RUN_PATHS = [] +-if os.name != 'nt': +- LD_RUN_PATH = os.environ.get('LD_RUN_PATH', '') +- LD_RUN_PATHS = [PYTHON_CFGDIR] +- if PYTHON_LIBDIR != APXS_LIBDIR: +- LD_RUN_PATHS.insert(0, PYTHON_LIBDIR) +- LD_RUN_PATH += ':' + ':'.join(LD_RUN_PATHS) +- LD_RUN_PATH = LD_RUN_PATH.lstrip(':') +- +- os.environ['LD_RUN_PATH'] = LD_RUN_PATH +- + # On MacOS X, recent versions of Apple's Apache do not support compiling + # Apache modules with a target older than 10.8. This is because it + # screws up Apache APR % formats for apr_time_t, which breaks daemon +@@ -362,7 +349,7 @@ else: + + extension = Extension(extension_name, source_files, + include_dirs=INCLUDE_DIRS, extra_compile_args=EXTRA_COMPILE_FLAGS, +- extra_link_args=EXTRA_LINK_ARGS, runtime_library_dirs=LD_RUN_PATHS) ++ extra_link_args=EXTRA_LINK_ARGS) + + def _documentation(): + result = [] diff --git a/SOURCES/wsgi-python3.conf b/SOURCES/wsgi-python3.conf new file mode 100644 index 0000000..eb2c5e5 --- /dev/null +++ b/SOURCES/wsgi-python3.conf @@ -0,0 +1,6 @@ +# NOTE: mod_wsgi_python3 can not coexist in the same apache process as +# mod_wsgi (python2). Only load if mod_wsgi is not already loaded. + + + LoadModule wsgi_module modules/mod_wsgi_python3.so + diff --git a/SOURCES/wsgi.conf b/SOURCES/wsgi.conf new file mode 100644 index 0000000..0797bce --- /dev/null +++ b/SOURCES/wsgi.conf @@ -0,0 +1,7 @@ +# NOTE: mod_wsgi can not coexist in the same apache process as +# mod_wsgi_python3. Only load if mod_wsgi_python3 is not +# already loaded. + + +LoadModule wsgi_module modules/mod_wsgi.so + diff --git a/SPECS/python3.11-mod_wsgi.spec b/SPECS/python3.11-mod_wsgi.spec new file mode 100644 index 0000000..ae6ae01 --- /dev/null +++ b/SPECS/python3.11-mod_wsgi.spec @@ -0,0 +1,197 @@ +%global __python3 /usr/bin/python3.11 +%global python3_pkgversion 3.11 + +%{!?_httpd_apxs: %{expand: %%global _httpd_apxs %%{_sbindir}/apxs}} + +%{!?_httpd_mmn: %{expand: %%global _httpd_mmn %%(cat %{_includedir}/httpd/.mmn 2>/dev/null || echo 0-0)}} +%{!?_httpd_confdir: %{expand: %%global _httpd_confdir %%{_sysconfdir}/httpd/conf.d}} +# /etc/httpd/conf.d with httpd < 2.4 and defined as /etc/httpd/conf.modules.d with httpd >= 2.4 +%{!?_httpd_modconfdir: %{expand: %%global _httpd_modconfdir %%{_sysconfdir}/httpd/conf.d}} +%{!?_httpd_moddir: %{expand: %%global _httpd_moddir %%{_libdir}/httpd/modules}} + +%if 0%{?fedora} || 0%{?rhel} > 7 +%bcond_without python3 +%bcond_with python2 +%else +%bcond_with python3 +%bcond_without python2 +%endif + +Name: python%{python3_pkgversion}-mod_wsgi +Version: 4.9.4 +Release: 1%{?dist} +Summary: A WSGI interface for Python web applications in Apache +License: ASL 2.0 +URL: https://modwsgi.readthedocs.io/ +Source0: https://github.com/GrahamDumpleton/mod_wsgi/archive/%{version}.tar.gz#/mod_wsgi-%{version}.tar.gz +Source1: wsgi.conf +Source2: wsgi-python3.conf +Patch1: mod_wsgi-4.5.20-exports.patch +Patch2: mod_wsgi-4.7.1-remove-rpath.patch + +BuildRequires: httpd-devel +BuildRequires: gcc +BuildRequires: make + + +Requires: httpd-mmn = %{_httpd_mmn} +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-rpm-macros +BuildRequires: python%{python3_pkgversion}-setuptools + +# Suppress auto-provides for module DSO +%{?filter_provides_in: %filter_provides_in %{_httpd_moddir}/.*\.so$} +%{?filter_setup} + +# httpd can only load one Python 3 version of mod_wsgi at the time, and +# therefore we use a Conflicts tag to only allow one to be installed. The +# alternative would be to define a priority between them (e.g. python3- has +# priority over python38-), however, it would be potentially confusing and +# tricky to notice why the other version is not working. +Conflicts: python3-mod_wsgi +Conflicts: python38-mod_wsgi +Conflicts: python39-mod_wsgi + +%global _description\ +The mod_wsgi adapter is an Apache module that provides a WSGI compliant\ +interface for hosting Python based web applications within Apache. The\ +adapter is written completely in C code against the Apache C runtime and\ +for hosting WSGI applications within Apache has a lower overhead than using\ +existing WSGI adapters for mod_python or CGI.\ + + +%description %_description + +%if %{with python2} +%package -n python2-%{name} +Summary: %summary +Requires: httpd-mmn = %{_httpd_mmn} +BuildRequires: python2-devel, python2-setuptools +%{?python_provide:%python_provide python2-%{name}} +%if 0%{?rhel} && 0%{?rhel} <= 7 +Provides: mod_wsgi = %{version}-%{release} +Provides: mod_wsgi%{?_isa} = %{version}-%{release} +Obsoletes: mod_wsgi < %{version}-%{release} +%endif + +%description -n python2-%{name} %_description + +%endif + + + +%prep +%autosetup -p1 -n mod_wsgi-%{version} + +: Python2=%{with python2} Python3=%{with python3} + +%build + +export LDFLAGS="$RPM_LD_FLAGS -L%{_libdir}" +export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" + +%if %{with python3} +mkdir py3build/ +# this always produces an error (because of trying to copy py3build +# into itself) but we don't mind, so || : +cp -R * py3build/ || : +pushd py3build +%configure --enable-shared --with-apxs=%{_httpd_apxs} --with-python=%{__python3} +%make_build +%py3_build +popd +%endif + +%if %{with python2} +%configure --enable-shared --with-apxs=%{_httpd_apxs} --with-python=%{python2} +%make_build +%py2_build +%endif + +%install +# first install python3 variant and rename the so file +%if %{with python3} +pushd py3build +%make_install LIBEXECDIR=%{_httpd_moddir} +mv $RPM_BUILD_ROOT%{_httpd_moddir}/mod_wsgi{,_python3}.so + +install -d -m 755 $RPM_BUILD_ROOT%{_httpd_modconfdir} +# httpd >= 2.4.x +install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_httpd_modconfdir}/10-wsgi-python3.conf + +%py3_install +mv $RPM_BUILD_ROOT%{_bindir}/mod_wsgi-express{,-3} +ln -s %{_bindir}/mod_wsgi-express-3 $RPM_BUILD_ROOT%{_bindir}/mod_wsgi-express-%{python3_version} +popd + +%endif + +# second install python2 variant +%if %{with python2} +%make_install LIBEXECDIR=%{_httpd_moddir} + +install -d -m 755 $RPM_BUILD_ROOT%{_httpd_modconfdir} +# httpd >= 2.4.x +install -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_httpd_modconfdir}/10-wsgi.conf + +%py2_install +mv $RPM_BUILD_ROOT%{_bindir}/mod_wsgi-express{,-2} +ln -s %{_bindir}/mod_wsgi-express-2 $RPM_BUILD_ROOT%{_bindir}/mod_wsgi-express +%endif + +%if %{with python2} +%files -n python2-%{name} +%license LICENSE +%doc CREDITS.rst README.rst +%config(noreplace) %{_httpd_modconfdir}/*wsgi.conf +%{_httpd_moddir}/mod_wsgi.so +%{python2_sitearch}/mod_wsgi-*.egg-info +%{python2_sitearch}/mod_wsgi +%{_bindir}/mod_wsgi-express-2 +%{_bindir}/mod_wsgi-express +%endif + +%if %{with python3} +%files -n python%{python3_pkgversion}-mod_wsgi +%license LICENSE +%doc CREDITS.rst README.rst +%config(noreplace) %{_httpd_modconfdir}/*wsgi-python3.conf +%{_httpd_moddir}/mod_wsgi_python3.so +%{python3_sitearch}/mod_wsgi-*.egg-info +%{python3_sitearch}/mod_wsgi +%{_bindir}/mod_wsgi-express-%{python3_version} +%{_bindir}/mod_wsgi-express-3 +%endif + +%changelog +* Thu Dec 01 2022 Charalampos Stratakis - 4.9.4-1 +- Initial package +- Fedora contributions by: + Adam Williamson + Alexander Bokovoy + Bill Nottingham + Dennis Gilmore + dmalcolm + Ignacio Vazquez-Abrams + Igor Gnatenko + Iryna Shcherbina + Jakub Dorňák + James Bowes + Jan Kaluza + jbowes + Jesse Keating + Joe Orton + joshkayse + Kevin Fenzi + Luboš Uhliarik + Luke Macken + Matthias Runge + Miro Hrončok + Orion Poplawski + Peter Robinson + Richard W.M. Jones + Ricky Zhou (周家杰) + Tomas Hrnciar + Tom Stellard + Troy Dawson + Zbigniew Jędrzejewski-Szmek