commit ab8e2af6aa4e1d96782f20c1c414a5a1756869f9 Author: eabdullin Date: Mon Apr 1 07:59:28 2024 +0000 import CS python3.12-mod_wsgi-4.9.4-2.el8 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.12-mod_wsgi.metadata b/.python3.12-mod_wsgi.metadata new file mode 100644 index 0000000..819c313 --- /dev/null +++ b/.python3.12-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/stop-adding-PYTHON_CFGDIR-to-LD_RUN_PATH-and-PYTHON_LDFLAGS.patch b/SOURCES/stop-adding-PYTHON_CFGDIR-to-LD_RUN_PATH-and-PYTHON_LDFLAGS.patch new file mode 100644 index 0000000..ea19701 --- /dev/null +++ b/SOURCES/stop-adding-PYTHON_CFGDIR-to-LD_RUN_PATH-and-PYTHON_LDFLAGS.patch @@ -0,0 +1,22 @@ +diff --git a/setup.py b/setup.py +index e0c8c84..f315b01 100644 +--- a/setup.py ++++ b/setup.py +@@ -300,7 +300,7 @@ else: + if not os.path.exists(PYTHON_CFGDIR): + PYTHON_CFGDIR = '%s-%s' % (PYTHON_CFGDIR, sys.platform) + +- PYTHON_LDFLAGS = ['-L%s' % PYTHON_CFGDIR] ++ PYTHON_LDFLAGS = [] + if PYTHON_LIBDIR != APXS_LIBDIR: + PYTHON_LDFLAGS.insert(0, '-L%s' % PYTHON_LIBDIR) + +@@ -326,7 +326,7 @@ EXTRA_LINK_ARGS = PYTHON_LDFLAGS + PYTHON_LDLIBS + LD_RUN_PATHS = [] + if os.name != 'nt': + LD_RUN_PATH = os.environ.get('LD_RUN_PATH', '') +- LD_RUN_PATHS = [PYTHON_CFGDIR] ++ LD_RUN_PATHS = [] + if PYTHON_LIBDIR != APXS_LIBDIR: + LD_RUN_PATHS.insert(0, PYTHON_LIBDIR) + LD_RUN_PATH += ':' + ':'.join(LD_RUN_PATHS) 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.12-mod_wsgi.spec b/SPECS/python3.12-mod_wsgi.spec new file mode 100644 index 0000000..febb5b2 --- /dev/null +++ b/SPECS/python3.12-mod_wsgi.spec @@ -0,0 +1,203 @@ +%global __python3 /usr/bin/python3.12 +%global python3_pkgversion 3.12 + +%{!?_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: 2%{?dist} +Summary: A WSGI interface for Python web applications in Apache +License: ASL 2.0 and CC-BY +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 +# Stop adding PYTHON_CFGDIR to LD_RUN_PATH and PYTHON_LDFLAGS +# rpminspect reports invalid DT_RUNPATH: /usr/lib64/python3.12/config +# Following patch is a simplified unconditional version of our upstream PR: +# https://github.com/GrahamDumpleton/mod_wsgi/pull/873 +Patch2: stop-adding-PYTHON_CFGDIR-to-LD_RUN_PATH-and-PYTHON_LDFLAGS.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 +%global __provides_exclude_from %{_httpd_moddir}/.*\\.so$ + +# 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 +Conflicts: python3.11-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 +* Tue Jan 23 2024 Miro Hrončok - 4.9.4-2 +- Rebuilt for timestamp .pyc invalidation mode + +* Tue Oct 17 2023 Tomáš Hrnčiar - 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 + Tomas Orsava + Tom Stellard + Troy Dawson + Zbigniew Jędrzejewski-Szmek +