python: pin setuptools below v60.0.0
authorJohn Snow <jsnow@redhat.com>
Fri, 21 Jan 2022 00:52:21 +0000 (19:52 -0500)
committerJohn Snow <jsnow@redhat.com>
Fri, 21 Jan 2022 21:01:09 +0000 (16:01 -0500)
setuptools is a package that replaces the python stdlib 'distutils'. It
is generally installed by all venv-creating tools "by default". It isn't
actually needed at runtime for the qemu package, so our own setup.cfg
does not mention it as a dependency.

However, tox will create virtual environments that include it, and will
upgrade it to the very latest version. the 'venv' tool will also include
whichever version your host system happens to have.

Unfortunately, setuptools version 60.0.0 and above include a hack to
forcibly overwrite python's built-in distutils. The pylint tool that we
use to run code analysis checks on this package relies on distutils and
suffers regressions when setuptools >= 60.0.0 is present at all, see
https://github.com/PyCQA/pylint/issues/5704

Instruct tox and the 'check-dev' targets to avoid setuptools packages
that are too new, for now. Pipenv is unaffected, because setuptools 60
does not offer Python 3.6 support, and our pipenv config is pinned
against Python 3.6.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Beraldo Leal <bleal@redhat.com>
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Tested-by: Cleber Rosa <crosa@redhat.com>
Message-id: 20220121005221.142236-1-jsnow@redhat.com
Signed-off-by: John Snow <jsnow@redhat.com>
python/Makefile
python/setup.cfg

index 3334311362573a8b9f39efb12fed6acf65c96b8a..949c472624a38c3ebf1ededed094a544c2227ddf 100644 (file)
@@ -68,6 +68,8 @@ $(QEMU_VENV_DIR) $(QEMU_VENV_DIR)/bin/activate: setup.cfg
                echo "ACTIVATE $(QEMU_VENV_DIR)";               \
                . $(QEMU_VENV_DIR)/bin/activate;                \
                echo "INSTALL qemu[devel] $(QEMU_VENV_DIR)";    \
+               pip install --disable-pip-version-check         \
+                       "setuptools<60.0.0" 1>/dev/null;        \
                make develop 1>/dev/null;                       \
        )
        @touch $(QEMU_VENV_DIR)
index 417e937839b85eecd752b29ad7df6684b218aad6..aa238d8bc9b2973d46d40a743cda312ed5c3e47f 100644 (file)
@@ -163,6 +163,7 @@ deps =
     .[devel]
     .[fuse]  # Workaround to trigger tox venv rebuild
     .[tui]   # Workaround to trigger tox venv rebuild
+    setuptools < 60  # Workaround, please see commit msg.
 commands =
     make check