Mercurial > kallithea
view scripts/validate-minimum-dependency-versions @ 8986:0a9ddb8cd8c1 stable
setup: avoid setuptools 67 - it can't handle celery's broken pytz dependency
With setuptools 67 or later, launching Kallithea fails as:
$ gearbox serve -c my.ini --reload
15:56:54,111 ERROR [gearbox] Expected closing RIGHT_PARENTHESIS
pytz (>dev)
~^
The `packaging` vendored in setuptools cannot handle the broken syntax
`Requires-Dist: pytz (>dev)` in
venv/lib/python3.11/site-packages/celery-5.0.5.dist-info/METADATA .
The old celery version currently used by Kallithea is wrong, and setuptools has
moved on after a reasonable grace period. We thus have to work around and avoid
latest setuptools.
See https://github.com/pypa/setuptools/issues/3889 .
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Thu, 13 Apr 2023 13:54:24 +0200 |
parents | 01aca0a4f876 |
children |
line wrap: on
line source
#!/bin/bash # Test that installation of all dependencies works fine if versions are set to # the minimum ones. set -e if [ -n "$VIRTUAL_ENV" ]; then echo "This script will create its own virtualenv - please don't run it inside an existing one." >&2 exit 1 fi cd "$(hg root)" venv=build/minimum-dependency-versions-venv log=build/minimum-dependency-versions.log min_requirements=build/minimum-dependency-versions-requirements.txt echo "virtualenv: $venv" echo "log: $log" echo "minimum requirements file: $min_requirements" # clean up previous runs rm -rf "$venv" "$log" mkdir -p "$venv" # Make a light weight parsing of setup.py and dev_requirements.txt, # finding all >= requirements and dumping into a custom requirements.txt # while fixating the requirement at the lower bound. sed -n 's/.*"\(.*\)>=\(.*\)".*/\1==\2/p' setup.py > "$min_requirements" sed 's/>=/==/p' dev_requirements.txt >> "$min_requirements" python3 -m venv "$venv" source "$venv/bin/activate" pip install --upgrade pip "setuptools<67" pip install -e . -r "$min_requirements" python-ldap python-pam 2> >(tee "$log" >&2) # Treat any message on stderr as a problem, for the caller to interpret. if [ -s "$log" ]; then echo echo "Error: pip detected following problems:" cat "$log" echo exit 1 fi freeze_txt=build/minimum-dependency-versions.txt pip freeze > $freeze_txt echo "Installation of minimum packages was successful, providing a set of packages as in $freeze_txt . Now running test suite..." pytest echo "Test suite execution was successful." echo "You can now do additional validation using virtual env '$venv'."