Drop Django 3.1 (EoL)
Add Django 4.0
Add Python 3.8 (Minimum version for Django 4.0)
Add Python 3.10 to the general matrix, not just for Djagno 3.2
Exclude Django 2.2 from Python 3.10 testing.
Exclude Django 4.0 from Python 3.7 testing.
Django 2.2 will EoL in a little over a month, at which point we can
trim the matrix down again by dropping it and Python 3.9 if we want
to.
Django 3.2.9 added support for python 3.10, but older versions still
list the maximum supported version as 3.9.
https://docs.djangoproject.com/en/3.2/faq/install/
This adds python 3.10 / django 3.2 to the test matrix, and builds a
xapian wheel for python 3.10.
Version numbers changed to strings for consistency. Python 3.10 needs
to be quoted because it would otherwise be interpreted as 3.1.
Use `coverage combine` with some more configuration in .coveragerc
to merge our own paths with the paths we copy to when running coverage
and tests in the django-haystack checkout.
Also, print the simple coverage report in the Github Actions workflow
for good measure.
Fixes: #205
1) `xapian_wheel_builder.sh` adds `xapian-delve` to the wheel
2) `tests/xapian_tests/tests/test_backend.py` learns to check the new `xapian-delve` location
3) drop support for delve from xapian<1.3 (support dropped along Python 2)
This adds a script to build a wheel containing xapian python3 bindings
along with a matching build of the xapian library.
I've been using this with xapian v1.4.9 for years now, and recently
merged the linux and macOS versions into a single script.
This should not be used to create wheels for uploading to PyPI, but
works well for building a deployable artefact for a known
target.
Django < 1.11 is no longer supported by Django or Haystack
Test against latest versions of Django 1.11, 2.0, 2.1.
Test against python 2.7 (django 1.11 only), 3.5, 3.6, 3.7 (on xenial).
Update xapian old-stable to 1.2.25, only for py27.
Update xapian old-dev to 1.3.6, only for py27, py34.
Update xapian stable to 1.4.9.
xapian 1.3.6 included just to keep coverage numbers up.
xapian 1.3.7 not included because it didn't build with install-xapian.sh.
As per https://stackoverflow.com/a/3112717/1067833,
os.path.exists sometimes delivers a wrong value. These are corner
cases, but mine is exactly one:
I run xapian-haystack in a multiprocess environment (indexing and
django server), on an LXC container, which has its mount probably
mounted from an NFS server (I have no control/information over it).
This corner case results the os.path.exists give `True` for one
process and `False` for another, resulting in the exception I
handle with this patch.