diff --git a/.mod_wsgi.metadata b/.mod_wsgi.metadata new file mode 100644 index 0000000..8f9d399 --- /dev/null +++ b/.mod_wsgi.metadata @@ -0,0 +1 @@ +92ebc48e60ab658a984f97fd40cb71e0ae895469 SOURCES/mod_wsgi-3.4.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/mod_wsgi-3.4-connsbh.patch b/SOURCES/mod_wsgi-3.4-connsbh.patch new file mode 100644 index 0000000..2f0c73e --- /dev/null +++ b/SOURCES/mod_wsgi-3.4-connsbh.patch @@ -0,0 +1,23 @@ + +Fix scoreboard handling. + +https://bugzilla.redhat.com/show_bug.cgi?id=867276 + +http://code.google.com/p/modwsgi/source/detail?path=/mod_wsgi.c&name=mod_wsgi-3.X&r=bdbeacb88f348909845445e9d52eb7be401abaf1 + +--- mod_wsgi-3.4/mod_wsgi.c.connsbh ++++ mod_wsgi-3.4/mod_wsgi.c +@@ -10600,7 +10600,13 @@ static void wsgi_process_socket(apr_pool + * will add their own input/output filters to the chain. + */ + ++#if AP_MODULE_MAGIC_AT_LEAST(20110619,0) ++ /* For 2.4 a NULL sbh pointer should work. */ ++ sbh = NULL; ++#else ++ /* For 2.2 a dummy sbh pointer is needed. */ + ap_create_sb_handle(&sbh, p, -1, 0); ++#endif + + c = (conn_rec *)apr_pcalloc(p, sizeof(conn_rec)); + diff --git a/SOURCES/mod_wsgi-3.4-coredump.patch b/SOURCES/mod_wsgi-3.4-coredump.patch new file mode 100644 index 0000000..07c4081 --- /dev/null +++ b/SOURCES/mod_wsgi-3.4-coredump.patch @@ -0,0 +1,47 @@ + +Enable core dumps. In upstream 3.x branch: + +http://code.google.com/p/modwsgi/source/detail?r=b4f55d756fa816a7eae0f7edc13d5f2da3f3d5c1&name=mod_wsgi-3.X&path=/mod_wsgi.c# + +--- mod_wsgi-3.4/configure.ac.dumpcore ++++ mod_wsgi-3.4/configure.ac +@@ -39,6 +39,8 @@ fi + + AC_SUBST(APXS) + ++AC_CHECK_FUNCS(prctl) ++ + AC_MSG_CHECKING(Apache version) + HTTPD="`${APXS} -q SBINDIR`/`${APXS} -q TARGET`" + HTTPD_INCLUDEDIR="`${APXS} -q INCLUDEDIR`" +--- mod_wsgi-3.4/mod_wsgi.c.coredump ++++ mod_wsgi-3.4/mod_wsgi.c +@@ -139,6 +139,10 @@ typedef regmatch_t ap_regmatch_t; + #include + #endif + ++#ifdef HAVE_SYS_PRCTL_H ++#include ++#endif ++ + #include "Python.h" + + #if !defined(PY_VERSION_HEX) +@@ -10485,6 +10489,17 @@ static void wsgi_setup_access(WSGIDaemon + "mod_wsgi (pid=%d): Unable to change to uid=%ld.", + getpid(), (long)daemon->group->uid); + } ++ ++#if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE) ++ /* this applies to Linux 2.4+ */ ++ if (ap_coredumpdir_configured) { ++ if (prctl(PR_SET_DUMPABLE, 1)) { ++ ap_log_error(APLOG_MARK, WSGI_LOG_ALERT(errno), wsgi_server, ++ "mod_wsgi (pid=%d): set dumpable failed - this child will not coredump" ++ " after software errors", getpid()); ++ } ++ } ++#endif + } + + static int wsgi_setup_socket(WSGIProcessGroup *process) diff --git a/SOURCES/mod_wsgi-3.4-procexit.patch b/SOURCES/mod_wsgi-3.4-procexit.patch new file mode 100644 index 0000000..7bb1690 --- /dev/null +++ b/SOURCES/mod_wsgi-3.4-procexit.patch @@ -0,0 +1,28 @@ + +Log exit status in daemon manager; improves diagnosics. + +http://code.google.com/p/modwsgi/source/detail?path=/mod_wsgi.c&name=mod_wsgi-3.X&r=b4f55d756fa816a7eae0f7edc13d5f2da3f3d5c1 + +--- mod_wsgi-3.3/mod_wsgi.c.procexit ++++ mod_wsgi-3.3/mod_wsgi.c +@@ -9845,6 +9845,20 @@ static void wsgi_manage_process(int reas + wsgi_server, "mod_wsgi (pid=%d): " + "Process '%s' has died, restarting.", + daemon->process.pid, daemon->group->name); ++ if (WIFEXITED(status)) { ++ ap_log_error(APLOG_MARK, WSGI_LOG_INFO(0), ++ wsgi_server, "mod_wsgi (pid=%d): " ++ "Process '%s' terminated normally, exit code %d", ++ daemon->process.pid, daemon->group->name, ++ WEXITSTATUS(status)); ++ } ++ else if (WIFSIGNALED(status)) { ++ ap_log_error(APLOG_MARK, WSGI_LOG_INFO(0), ++ wsgi_server, "mod_wsgi (pid=%d): " ++ "Process '%s' terminated by signal %d", ++ daemon->process.pid, daemon->group->name, ++ WTERMSIG(status)); ++ } + + wsgi_start_process(wsgi_parent_pool, daemon); + } diff --git a/SOURCES/wsgi.conf b/SOURCES/wsgi.conf new file mode 100644 index 0000000..19f3567 --- /dev/null +++ b/SOURCES/wsgi.conf @@ -0,0 +1 @@ +LoadModule wsgi_module modules/mod_wsgi.so diff --git a/SPECS/mod_wsgi.spec b/SPECS/mod_wsgi.spec new file mode 100644 index 0000000..af19467 --- /dev/null +++ b/SPECS/mod_wsgi.spec @@ -0,0 +1,174 @@ +%{!?_httpd_apxs: %{expand: %%global _httpd_apxs %%{_sbindir}/apxs}} +%{!?_httpd_mmn: %{expand: %%global _httpd_mmn %%(cat %{_includedir}/httpd/.mmn || echo missing-httpd-devel)}} +%{!?_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}} + +Name: mod_wsgi +Version: 3.4 +Release: 8%{?dist} +Summary: A WSGI interface for Python web applications in Apache +Group: System Environment/Libraries +License: ASL 2.0 +URL: http://modwsgi.org +Source0: http://modwsgi.googlecode.com/files/%{name}-%{version}.tar.gz +Source1: wsgi.conf +Patch0: mod_wsgi-3.4-connsbh.patch +Patch1: mod_wsgi-3.4-procexit.patch +Patch2: mod_wsgi-3.4-coredump.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: httpd-devel, python-devel, autoconf +Requires: httpd-mmn = %{_httpd_mmn} + +# Suppress auto-provides for module DSO +%{?filter_provides_in: %filter_provides_in %{_httpd_moddir}/.*\.so$} +%{?filter_setup} + +%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. + + +%prep +%setup -q +%patch0 -p1 -b .connsbh +%patch1 -p1 -b .procexit +%patch2 -p1 -b .coredump + +%build +# Regenerate configure for -coredump patch change to configure.in +autoconf +export LDFLAGS="$RPM_LD_FLAGS -L%{_libdir}" +export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" +%configure --enable-shared --with-apxs=%{_httpd_apxs} +make %{?_smp_mflags} + + +%install +rm -rf $RPM_BUILD_ROOT +make install DESTDIR=$RPM_BUILD_ROOT LIBEXECDIR=%{_httpd_moddir} + +install -d -m 755 $RPM_BUILD_ROOT%{_httpd_modconfdir} +%if "%{_httpd_modconfdir}" == "%{_httpd_confdir}" +# httpd <= 2.2.x +install -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_httpd_confdir}/wsgi.conf +%else +# httpd >= 2.4.x +install -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_httpd_modconfdir}/10-wsgi.conf +%endif + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root,-) +%doc LICENCE README +%config(noreplace) %{_httpd_modconfdir}/*.conf +%{_httpd_moddir}/mod_wsgi.so + + +%changelog +* Thu Feb 14 2013 Fedora Release Engineering - 3.4-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Dec 11 2012 Jan Kaluza - 3.4-7 +- compile with -fno-strict-aliasing to workaround Python + bug http://www.python.org/dev/peps/pep-3123/ + +* Thu Nov 22 2012 Joe Orton - 3.4-6 +- use _httpd_moddir macro + +* Thu Nov 22 2012 Joe Orton - 3.4-5 +- spec file cleanups + +* Wed Oct 17 2012 Joe Orton - 3.4-4 +- enable PR_SET_DUMPABLE in daemon process to enable core dumps + +* Wed Oct 17 2012 Joe Orton - 3.4-3 +- use a NULL c->sbh pointer with httpd 2.4 (possible fix for #867276) +- add logging for unexpected daemon process loss + +* Wed Oct 17 2012 Matthias Runge - 3.4-2 +- also use RPM_LD_FLAGS for build bz. #867137 + +* Mon Oct 15 2012 Matthias Runge - 3.4-1 +- update to upstream release 3.4 + +* Fri Jul 20 2012 Fedora Release Engineering - 3.3-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jun 13 2012 Joe Orton - 3.3-6 +- add possible fix for daemon mode crash (#831701) + +* Mon Mar 26 2012 Joe Orton - 3.3-5 +- move wsgi.conf to conf.modules.d + +* Mon Mar 26 2012 Joe Orton - 3.3-4 +- rebuild for httpd 2.4 + +* Tue Mar 13 2012 Joe Orton - 3.3-3 +- prepare for httpd 2.4.x + +* Fri Jan 13 2012 Fedora Release Engineering - 3.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Nov 01 2011 James Bowes 3.3-1 +- update to 3.3 + +* Tue Feb 08 2011 Fedora Release Engineering - 3.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Jul 27 2010 David Malcolm - 3.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Tue Mar 9 2010 Josh Kayse - 3.2-1 +- update to 3.2 + +* Sun Mar 07 2010 Josh Kayse - 3.1-2 +- removed conflicts as it violates fedora packaging policy + +* Sun Mar 07 2010 Josh Kayse - 3.1-1 +- update to 3.1 +- add explicit enable-shared +- add conflicts mod_python < 3.3.1 + +* Sat Jul 25 2009 Fedora Release Engineering - 2.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu Jul 02 2009 James Bowes 2.5-1 +- Update to 2.5 + +* Wed Feb 25 2009 Fedora Release Engineering - 2.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Nov 30 2008 Ignacio Vazquez-Abrams - 2.3-2 +- Rebuild for Python 2.6 + +* Tue Oct 28 2008 Luke Macken 2.3-1 +- Update to 2.3 + +* Mon Sep 29 2008 James Bowes 2.1-2 +- Remove requires on httpd-devel + +* Wed Jul 02 2008 James Bowes 2.1-1 +- Update to 2.1 + +* Mon Jun 16 2008 Ricky Zhou 1.3-4 +- Build against the shared python lib. + +* Tue Feb 19 2008 Fedora Release Engineering - 1.3-3 +- Autorebuild for GCC 4.3 + +* Sun Jan 06 2008 James Bowes 1.3-2 +- Require httpd + +* Sat Jan 05 2008 James Bowes 1.3-1 +- Update to 1.3 + +* Sun Sep 30 2007 James Bowes 1.0-1 +- Initial packaging for Fedora +