Description
Environment:
- Fail2Ban version : 1.1.0, master
- OS, including release name/version : Gentoo Linux
- Fail2Ban installed via OS/distribution mechanisms
- You have not applied any additional foreign patches to the codebase
The issue:
fail2ban currently relies on setuptools setup.py install
, but this has been marked deprecated for quite some time. In setuptools-80.1.0, they've finally set a removal date for 2025-10-31.
Steps to reproduce
/tmp/fail2ban $ python setup.py install --prefix="/usr" --root="/tmp/foo"
/usr/lib/python3.13/site-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'test_suite'
warnings.warn(msg)
running install
/tmp/fail2ban/setup.py:111: SetuptoolsDeprecationWarning: setup.py install is deprecated.
!!
********************************************************************************
Please avoid running ``setup.py`` directly.
Instead, use pypa/build, pypa/installer or other
standards-based tools.
See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
********************************************************************************
!!
install.initialize_options(self)
[...]
After 2025-10-31, that deprecation warning will become fatal, and setup.py install
won't work at all.
In summary, the Python ecosystem decided that the setup.py install
way of doing things was too haphazard. There are two models now:
- Installing software via PEP517, which has restrictions on the installation of data files and other auxiliary files, and is intended for software that is meant to be imported as a library, or a Python tool with little-to-no configuration or extra files;
- Installing software via a real build system like Meson, that happens to just be installing software written in Python.
A lot of software written in Python was relying on setup.py install
because it seemed like the right thing to do, but there's no reason that software just written in Python that isn't intended to be imported or must live in site-packages
has to be installed by the Python packaging setup (especially if it's not intended to be installed via pip
or on pypi
at all).
I personally recommend Meson for this case.
Expected behavior
No deprecation warnings.
Observed behavior
Deprecation warnings indicating imminent breakage.
Any additional information
See also #3361, pypa/setuptools#2088 (comment), and pypa/packaging-problems#576 (comment)