b3ea7e1 Require expat >= 2.6 to prevent errors when creating venvs with older expat

Authored and Committed by churchyard 16 days ago
    Require expat >= 2.6 to prevent errors when creating venvs with older expat
    
    The code in CPython uses XML_SetReparseDeferralEnabled when expat is >= 2.6 during the build.
    However, when users upgrade Python independently on the expat package,
    they may have expat 2.5 installed and see errors like:
    
        $ python3.1X -m venv venv
        Error: Command '['venv/bin/python3.1X', '-m', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
    
        $ venv/bin/python3.1X -m ensurepip --upgrade --default-pip
        Traceback (most recent call last):
          ...
          File "/tmp/.../pip-24.0-py3-none-any.whl/pip/_internal/commands/install.py", line 15, in <module>
            from pip._internal.cli.req_command import (
            ...<3 lines>...
            )
          File "/tmp/.../pip-24.0-py3-none-any.whl/pip/_internal/cli/req_command.py", line 21, in <module>
            from pip._internal.index.package_finder import PackageFinder
          File "/tmp/.../pip-24.0-py3-none-any.whl/pip/_internal/index/package_finder.py", line 30, in <module>
            from pip._internal.req import InstallRequirement
          File "/tmp/.../pip-24.0-py3-none-any.whl/pip/_internal/req/__init__.py", line 8, in <module>
            from .req_install import InstallRequirement
          File "/tmp/.../pip-24.0-py3-none-any.whl/pip/_internal/req/req_install.py", line 40, in <module>
            from pip._internal.operations.install.wheel import install_wheel
          File "/tmp/.../pip-24.0-py3-none-any.whl/pip/_internal/operations/install/wheel.py", line 39, in <module>
            from pip._vendor.distlib.scripts import ScriptMaker
          File "/tmp/.../pip-24.0-py3-none-any.whl/pip/_vendor/distlib/scripts.py", line 16, in <module>
            from .compat import sysconfig, detect_encoding, ZipFile
          File "/tmp/.../pip-24.0-py3-none-any.whl/pip/_vendor/distlib/compat.py", line 81, in <module>
            import xmlrpc.client as xmlrpclib
          File "/usr/lib64/python3.1X/xmlrpc/client.py", line 138, in <module>
            from xml.parsers import expat
          File "/usr/lib64/python3.1X/xml/parsers/expat.py", line 4, in <module>
            from pyexpat import *
        ImportError: /usr/lib64/python3.1X/lib-dynload/pyexpat.cpython-31X-x86_64-linux-gnu.so: undefined symbol: XML_SetReparseDeferralEnabled
        Traceback (most recent call last):
          ...
        subprocess.CalledProcessError: Command '['venv/bin/python3.1X', '-W', 'ignore::DeprecationWarning', '-c', '\nimport runpy\nimport sys\nsys.path = [\'/tmp/.../pip-24.0-py3-none-any.whl\'] + sys.path\nsys.argv[1:] = [\'install\', \'--no-cache-dir\', \'--no-index\', \'--find-links\', \'/tmp/...\', \'--upgrade\', \'pip\']\nrunpy.run_module("pip", run_name="__main__", alter_sys=True)\n']' returned non-zero exit status 1.
    
    Thanks to Markus Falb for discovering this problem.
    
    https://lists.fedoraproject.org/archives/list/python-devel@lists.fedoraproject.org/thread/7XHGWHBQDNFKNGSZTP44SSD6PQKZPG6C/
    
        
file modified
+14 -2