Skip to content

Commit 3c417a5

Browse files
Merge branch 'release/5.0.0'
2 parents ac1a8e6 + 26efe4a commit 3c417a5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+233
-173
lines changed

.github/workflows/main.yml

+17-11
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ on:
22
push:
33
branches:
44
- develop
5-
- master
5+
tags:
6+
- "[0-9]+.[0-9]+.[0-9]+"
7+
- "[0-9]+.[0-9]+.[0-9]+rc[0-9]+"
68
pull_request:
79
branches:
810
- develop
@@ -11,21 +13,25 @@ jobs:
1113
build:
1214
name: "Build mod_wsgi packages"
1315
runs-on: "ubuntu-20.04"
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
1420
steps:
15-
- uses: "actions/checkout@v2"
16-
- uses: "actions/setup-python@v2"
21+
- uses: "actions/checkout@v4"
22+
- uses: "actions/setup-python@v4"
1723
with:
18-
python-version: "3.9"
24+
python-version: "${{ matrix.python-version }}"
1925
- name: "Update package details"
2026
run: sudo apt --fix-missing update
2127
- name: "Install Apache package"
2228
run: sudo apt install -y apache2-dev
2329
- name: "Build mod_wsgi packages"
2430
run: ./package.sh && ls -las dist
2531
- name: "Store built packages"
26-
uses: actions/upload-artifact@v2
32+
uses: actions/upload-artifact@v3
2733
with:
28-
name: dist
34+
name: dist ${{ matrix.python-version }}
2935
path: dist/*
3036

3137
tests:
@@ -36,16 +42,16 @@ jobs:
3642
strategy:
3743
fail-fast: false
3844
matrix:
39-
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11-dev"]
45+
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
4046
steps:
41-
- uses: "actions/checkout@v2"
42-
- uses: "actions/setup-python@v2"
47+
- uses: "actions/checkout@v4"
48+
- uses: "actions/setup-python@v4"
4349
with:
4450
python-version: "${{ matrix.python-version }}"
4551
- name: "Download built packages"
46-
uses: actions/download-artifact@v2
52+
uses: actions/download-artifact@v3
4753
with:
48-
name: dist
54+
name: dist ${{ matrix.python-version }}
4955
path: dist
5056
- name: "Update package details"
5157
run: sudo apt --fix-missing update

.readthedocs.yaml

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# .readthedocs.yaml
2+
# Read the Docs configuration file
3+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4+
5+
# Required
6+
version: 2
7+
8+
# Set the version of Python and other tools you might need
9+
build:
10+
os: ubuntu-22.04
11+
tools:
12+
python: "3.11"
13+
14+
# Build documentation in the docs/ directory with Sphinx
15+
sphinx:
16+
configuration: docs/conf.py
17+
18+
# We recommend specifying your dependencies to enable reproducible builds:
19+
# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
20+
# python:
21+
# install:
22+
# - requirements: docs/requirements.txt

README.rst

+5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ The mod_wsgi package provides an Apache module that implements a WSGI
55
compliant interface for hosting Python based web applications on top of the
66
Apache web server.
77

8+
*Note that the major version 5.0 was introduced not because of any new major
9+
features but because from version 5.0 onwards compatability with Python 2.7 is
10+
no longer guaranteed. A minimum Python version of 3.8 will be enforced by the
11+
Python package installation configuration.*
12+
813
Installation of mod_wsgi from source code can be performed in one of two
914
ways.
1015

configure

+14-15
Original file line numberDiff line numberDiff line change
@@ -2850,23 +2850,23 @@ fi
28502850
28512851
28522852
PYTHON_VERSION=`${PYTHON} -c 'from sys import stdout; \
2853-
from distutils import sysconfig; \
2853+
import sysconfig; \
28542854
stdout.write(sysconfig.get_config_var("VERSION"))'`
28552855
28562856
PYTHON_LDVERSION=`${PYTHON} -c 'from sys import stdout; \
2857-
from distutils import sysconfig; \
2857+
import sysconfig; \
28582858
stdout.write(sysconfig.get_config_var("LDVERSION") or "")'`
28592859
28602860
if test x"${PYTHON_LDVERSION}" = x""; then
28612861
PYTHON_LDVERSION=${PYTHON_VERSION}
28622862
fi
28632863
28642864
CPPFLAGS1=`${PYTHON} -c 'from sys import stdout; \
2865-
from distutils import sysconfig; \
2865+
import sysconfig; \
28662866
stdout.write("-I" + sysconfig.get_config_var("INCLUDEPY"))'`
28672867
28682868
CPPFLAGS2=`${PYTHON} -c 'from sys import stdout; \
2869-
from distutils import sysconfig; \
2869+
import sysconfig; \
28702870
stdout.write(" ".join(filter(lambda x: x.startswith("-D"), \
28712871
sysconfig.get_config_var("CFLAGS").split())))'`
28722872
@@ -2881,20 +2881,19 @@ CPPFLAGS="${CPPFLAGS} ${CPPFLAGS1} ${CPPFLAGS2} ${CPPFLAGS3}"
28812881
28822882
28832883
PYTHONLIBDIR=`${PYTHON} -c 'from sys import stdout; \
2884-
from distutils import sysconfig; \
2884+
import sysconfig; \
28852885
stdout.write(sysconfig.get_config_var("LIBDIR"))'`
28862886
PYTHONCFGDIR=`${PYTHON} -c 'from sys import stdout; \
2887-
import distutils.sysconfig; \
2888-
stdout.write(distutils.sysconfig.get_python_lib(plat_specific=1, \
2889-
standard_lib=1) +"/config")'`
2887+
import sysconfig; \
2888+
stdout.write(sysconfig.get_path("platstdlib") +"/config")'`
28902889
PYTHONFRAMEWORKDIR=`${PYTHON} -c 'from sys import stdout; \
2891-
from distutils import sysconfig; \
2890+
import sysconfig; \
28922891
stdout.write(sysconfig.get_config_var("PYTHONFRAMEWORKDIR"))'`
28932892
PYTHONFRAMEWORKPREFIX=`${PYTHON} -c 'from sys import stdout; \
2894-
from distutils import sysconfig; \
2893+
import sysconfig; \
28952894
stdout.write(sysconfig.get_config_var("PYTHONFRAMEWORKPREFIX"))'`
28962895
PYTHONFRAMEWORK=`${PYTHON} -c 'from sys import stdout; \
2897-
from distutils import sysconfig; \
2896+
import sysconfig; \
28982897
stdout.write(sysconfig.get_config_var("PYTHONFRAMEWORK"))'`
28992898
29002899
if test "${PYTHON_LDVERSION}" != "${PYTHON_VERSION}"; then
@@ -2920,24 +2919,24 @@ if test "${PYTHONFRAMEWORKDIR}" = "no-framework" -o \
29202919
fi
29212920
29222921
LDLIBS2=`${PYTHON} -c 'from sys import stdout; \
2923-
from distutils import sysconfig; \
2922+
import sysconfig; \
29242923
stdout.write(sysconfig.get_config_var("LIBS"))'`
29252924
LDLIBS3=`${PYTHON} -c 'from sys import stdout; \
2926-
from distutils import sysconfig; \
2925+
import sysconfig; \
29272926
stdout.write(sysconfig.get_config_var("SYSLIBS"))'`
29282927
else
29292928
LDFLAGS1="-Wl,-F${PYTHONFRAMEWORKPREFIX} -framework ${PYTHONFRAMEWORK}"
29302929
29312930
VERSION="${PYTHON_VERSION}"
29322931
STRING="${PYTHONFRAMEWORKDIR}/Versions/${VERSION}/${PYTHONFRAMEWORK}"
29332932
LDFLAGS2=`${PYTHON} -c "from sys import stdout; \
2934-
from distutils import sysconfig; \
2933+
import sysconfig; \
29352934
stdout.write(sysconfig.get_config_var(
29362935
\"LINKFORSHARED\").replace(\"${STRING}\", ''))" | \
29372936
sed -e 's/-Wl,-stack_size,[0-9]*//'`
29382937
29392938
LDLIBS1=`${PYTHON} -c 'from sys import stdout; \
2940-
from distutils import sysconfig; \
2939+
import sysconfig; \
29412940
stdout.write(sysconfig.get_config_var("LIBS"))'`
29422941
fi
29432942

configure.ac

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
dnl vim: set sw=4 expandtab :
22
dnl
3-
dnl Copyright 2007-2022 GRAHAM DUMPLETON
3+
dnl Copyright 2007-2023 GRAHAM DUMPLETON
44
dnl
55
dnl Licensed under the Apache License, Version 2.0 (the "License");
66
dnl you may not use this file except in compliance with the License.
@@ -141,9 +141,8 @@ PYTHONLIBDIR=`${PYTHON} -c 'from sys import stdout; \
141141
import sysconfig; \
142142
stdout.write(sysconfig.get_config_var("LIBDIR"))'`
143143
PYTHONCFGDIR=`${PYTHON} -c 'from sys import stdout; \
144-
import distutils.sysconfig; \
145-
stdout.write(distutils.sysconfig.get_python_lib(plat_specific=1, \
146-
standard_lib=1) +"/config")'`
144+
import sysconfig; \
145+
stdout.write(sysconfig.get_path("platstdlib") +"/config")'`
147146
PYTHONFRAMEWORKDIR=`${PYTHON} -c 'from sys import stdout; \
148147
import sysconfig; \
149148
stdout.write(sysconfig.get_config_var("PYTHONFRAMEWORKDIR"))'`

docs/conf.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141

4242
# General information about the project.
4343
project = u'mod_wsgi'
44-
copyright = u'2007-2022, Graham Dumpleton'
44+
copyright = u'2007-2023, Graham Dumpleton'
4545

4646
# The version info for the project you're documenting, acts as replacement for
4747
# |version| and |release|, also used in various other places throughout the

docs/release-notes.rst

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ Release Notes
55
.. toctree::
66
:maxdepth: 2
77

8+
release-notes/version-5.0.0
9+
810
release-notes/version-4.9.4
911
release-notes/version-4.9.3
1012
release-notes/version-4.9.2

docs/release-notes/version-1.1.rst

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Bug Fixes
1212
1. Fix bug which could result in processes crashing when multiple threads
1313
attempt to write to sys.stderr or sys.stdout at the same time. See:
1414

15-
http://code.google.com/p/modwsgi/issues/detail?id=30
15+
https://code.google.com/archive/p/modwsgi/issues/30
1616

1717
Chance of this occuring was small, as was contingent on code writing out
1818
strings which contained an embedded newline but no terminating new line,
@@ -46,7 +46,7 @@ insert their own connection level input/output filters. This is needed as
4646
running WSGI applications in daemon processes where requests were arriving
4747
to Apache as HTTPS requests could cause daemon processes to crash. See:
4848

49-
http://code.google.com/p/modwsgi/issues/detail?id=33
49+
https://code.google.com/archive/p/modwsgi/issues/33
5050

5151
This was only occuring for some HTTPS configurations, but not known what
5252
exactly was different about those configurations to cause the problem.
@@ -57,4 +57,4 @@ mod_logio module when loaded and when handling request in daemon process.
5757
This is needed to prevent core output filters calling this function and
5858
triggering a crash due to configuration for mod_logio not being setup. See:
5959

60-
http://code.google.com/p/modwsgi/issues/detail?id=34
60+
https://code.google.com/archive/p/modwsgi/issues/34

docs/release-notes/version-1.2.rst

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ the WSGI specification. In particular the specification says:
2525
In mod_wsgi when an iterable was returned from the application, the headers
2626
were being flushed even if the string was empty. See:
2727

28-
http://code.google.com/p/modwsgi/issues/detail?id=35
28+
https://code.google.com/archive/p/modwsgi/issues/35
2929

3030
2. Calling start_response() a second time to supply exception information
3131
and status to replace prior response headers and status, was resulting in
3232
a process crash when there had actually been response content sent and the
3333
existing response headers and status flushed and written back to the client.
3434
See:
3535

36-
http://code.google.com/p/modwsgi/issues/detail?id=36
36+
https://code.google.com/archive/p/modwsgi/issues/36
3737

3838
3. Added additional logging to highlight instance where WSGI script file was
3939
removed in between the time that Apache matched request to it and the WSGI
@@ -52,7 +52,7 @@ name would be wrong where the URL had repeating slashes in it after the
5252
leading portion of the URL which mapped to the mount point of the WSGI
5353
application. See:
5454

55-
http://code.google.com/p/modwsgi/issues/detail?id=39
55+
https://code.google.com/archive/p/modwsgi/issues/39
5656

5757
In particular, for a URL with the repeating slash the application group
5858
name would have a trailing slash appended when it shouldn't. The
@@ -77,4 +77,4 @@ the default.
7777
daemon processes were not being caught properly. This was because mod_wsgi
7878
was wrongly blocking SIGCHLD signal. See:
7979

80-
http://code.google.com/p/modwsgi/issues/detail?id=38
80+
https://code.google.com/archive/p/modwsgi/issues/38

docs/release-notes/version-1.4.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ status was being returned instead of a 500 error.
1616
2. Fix bug which was resulting in logging destined for !VirtualHost !ErrorLog
1717
going missing or ending up in main Apache error log.
1818

19-
http://code.google.com/p/modwsgi/issues/detail?id=79
19+
https://code.google.com/archive/p/modwsgi/issues/79
2020

2121
Features Added
2222
--------------

docs/release-notes/version-1.5.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ being leaked in Apache parent process on a graceful restart. Also fixes
1414
problem where UNIX listener socket was left in filesystem on both graceful
1515
restart and graceful shutdown. For details see:
1616

17-
http://code.google.com/p/modwsgi/issues/detail?id=95
17+
https://code.google.com/archive/p/modwsgi/issues/95
1818

1919
This is a backport of change from version 2.2 of mod_wsgi.

docs/release-notes/version-2.0.rst

+5-5
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ just the script file will apply.
7373

7474
For more details see:
7575

76-
http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode
76+
https://code.google.com/archive/p/modwsgi/wikis/ReloadingSourceCode
7777

7878
2. When application is running in embedded mode, and WSGIApacheExtensions
7979
directive is set to On, then a Python CObject reference is added to the
@@ -93,7 +93,7 @@ The 'ap_swig_py' package has not yet been released and is still in
9393
development. The package can be obtained from the Subversion repository
9494
at:
9595

96-
https://bitbucket.org/grahamdumpleton/apswigpy/wiki/Home
96+
https://bitbucket.org/grahamdumpleton/apswigpy/wikis/Home
9797

9898
With the SWIG binding for the Apache API, the intention is that many of
9999
the internal features of Apache would then be available. For example::
@@ -269,7 +269,7 @@ the auth provider::
269269

270270
For more details see:
271271

272-
http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms
272+
https://code.google.com/archive/p/modwsgi/wikis/AccessControlMechanisms
273273

274274
4. When Apache 2.2 is being used, now possible to provide a script file
275275
containing a callable which returns the groups that a user is a member of.
@@ -305,7 +305,7 @@ and 'groups_for_user()' function with a sample as shown below::
305305

306306
For more details see:
307307

308-
http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms
308+
https://code.google.com/archive/p/modwsgi/wikis/AccessControlMechanisms
309309

310310
5. Implemented WSGIDispatchScript directive. This directive can be used
311311
to designate a script file in which can be optionally defined any of the
@@ -444,7 +444,7 @@ file itself.
444444

445445
For more details see:
446446

447-
http://code.google.com/p/modwsgi/wiki/VirtualEnvironments
447+
https://code.google.com/archive/p/modwsgi/wikis/VirtualEnvironments
448448

449449
11. Added WSGIPythonEggs directive and corresponding 'python-eggs' option
450450
for WSGIDaemonProcess directive. These allow the location of the Python

docs/release-notes/version-2.1.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ Bug Fixes
1212
1. Fix bug which was resulting in logging destined for !VirtualHost !ErrorLog
1313
going missing or ending up in main Apache error log.
1414

15-
http://code.google.com/p/modwsgi/issues/detail?id=79
15+
https://code.google.com/archive/p/modwsgi/issues/79
1616

1717
2. Fix bug where WSGI application returning None rather than valid iterable
1818
causes process to crash.
1919

20-
http://code.google.com/p/modwsgi/issues/detail?id=88
20+
https://code.google.com/archive/p/modwsgi/issues/88

docs/release-notes/version-2.2.rst

+5-5
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Features Changed
1515
1. Use official way of setting process names on FreeBSD, NetBSD and OpenBSD.
1616
For details see:
1717

18-
http://code.google.com/p/modwsgi/issues/detail?id=90
18+
https://code.google.com/archive/p/modwsgi/issues/90
1919

2020
This is a backport of change from version 3.0 of mod_wsgi.
2121

@@ -26,23 +26,23 @@ Bug Fixes
2626
WSGIImportScript directive can cause Apache child processes to crash.
2727
For details see:
2828

29-
http://code.google.com/p/modwsgi/issues/detail?id=91
29+
https://code.google.com/archive/p/modwsgi/issues/91
3030

3131
2. Fix bug where mod_wsgi daemon process startup could fail due to old stale
3232
UNIX listener socket file as described in:
3333

34-
http://code.google.com/p/modwsgi/issues/detail?id=77
34+
https://code.google.com/archive/p/modwsgi/issues/77
3535

3636
3. Fix bug where listener socket file descriptors for daemon processes were
3737
being leaked in Apache parent process on a graceful restart. Also fixes
3838
problem where UNIX listener socket was left in filesystem on both graceful
3939
restart and graceful shutdown. For details see:
4040

41-
http://code.google.com/p/modwsgi/issues/detail?id=95
41+
https://code.google.com/archive/p/modwsgi/issues/95
4242

4343
4. Fix bug where response was truncated when a null character appeared as
4444
first character in block of data being returned from wsgi.file_wrapper. Only
4545
occurred when code fell back to using iteration over supplied file like
4646
object, rather than optimised method such as sendfile().
4747

48-
http://code.google.com/p/modwsgi/issues/detail?id=100
48+
https://code.google.com/archive/p/modwsgi/issues/100

docs/release-notes/version-2.3.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,4 @@ process to crash as corresponding arguments wouldn't have ben provided.
3434

3535
For details see:
3636

37-
http://code.google.com/p/modwsgi/issues/detail?id=90
37+
https://code.google.com/archive/p/modwsgi/issues/90

0 commit comments

Comments
 (0)