Description of problem: We want to update pip from 25.2 to 25.3 in Rawhide but python-setuptools fails to build: https://copr.fedorainfracloud.org/coprs/churchyard/pip-25.3/package/python-setuptools/ =================================== FAILURES =================================== __________________________ test_dist_fetch_build_egg ___________________________ dist = <setuptools.dist.Distribution object at 0x7fb71ce58690> req = <Requirement('barbazquux-runner')> def _fetch_build_egg_no_warn(dist, req): # noqa: C901 # is too complex (16) # FIXME # Ignore environment markers; if supplied, it is required. req = strip_marker(req) # Take easy_install options into account, but do not override relevant # pip environment variables (like PIP_INDEX_URL or PIP_QUIET); they'll # take precedence. opts = dist.get_option_dict('easy_install') if 'allow_hosts' in opts: raise DistutilsError( 'the `allow-hosts` option is not supported ' 'when using pip to install requirements.' ) quiet = 'PIP_QUIET' not in os.environ and 'PIP_VERBOSE' not in os.environ if 'PIP_INDEX_URL' in os.environ: index_url = None elif 'index_url' in opts: index_url = opts['index_url'][1] else: index_url = None find_links = ( _fixup_find_links(opts['find_links'][1])[:] if 'find_links' in opts else [] ) if dist.dependency_links: find_links.extend(dist.dependency_links) eggs_dir = os.path.realpath(dist.get_egg_cache_dir()) cached_dists = metadata.Distribution.discover(path=glob.glob(f'{eggs_dir}/*.egg')) for egg_dist in cached_dists: if _dist_matches_req(egg_dist, req): return egg_dist with tempfile.TemporaryDirectory() as tmpdir: cmd = [ sys.executable, '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', tmpdir, ] if quiet: cmd.append('--quiet') if index_url is not None: cmd.extend(('--index-url', index_url)) for link in find_links or []: cmd.extend(('--find-links', link)) # If requirement is a PEP 508 direct URL, directly pass # the URL to pip, as `req @ url` does not work on the # command line. cmd.append(req.url or str(req)) try: > subprocess.check_call(cmd) setuptools/installer.py:121: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ popenargs = (['/usr/bin/python3', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', ...],) kwargs = {}, retcode = 1 cmd = ['/usr/bin/python3', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', ...] def check_call(*popenargs, **kwargs): """Run command with arguments. Wait for command to complete. If the exit code was zero then return, otherwise raise CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute. The arguments are the same as for the call function. Example: check_call(["ls", "-l"]) """ retcode = call(*popenargs, **kwargs) if retcode: cmd = kwargs.get("args") if cmd is None: cmd = popenargs[0] > raise CalledProcessError(retcode, cmd) E subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpr5pew8t3', '--quiet', '--index-url', 'file:///tmp/pytest-of-mockbuild/pytest-0/test_dist_fetch_build_egg0/index', 'barbazquux-runner']' returned non-zero exit status 1. /usr/lib64/python3.14/subprocess.py:419: CalledProcessError The above exception was the direct cause of the following exception: tmpdir = local('/tmp/pytest-of-mockbuild/pytest-0/test_dist_fetch_build_egg0') def test_dist_fetch_build_egg(tmpdir): """ Check multiple calls to `Distribution.fetch_build_egg` work as expected. """ index = tmpdir.mkdir('index') index_url = urllib.parse.urljoin('file://', urllib.request.pathname2url(str(index))) def sdist_with_index(distname, version): dist_dir = index.mkdir(distname) dist_sdist = f'{distname}-{version}.tar.gz' make_trivial_sdist(str(dist_dir.join(dist_sdist)), distname, version) with dist_dir.join('index.html').open('w') as fp: fp.write( DALS( """ <!DOCTYPE html><html><body> <a href="{dist_sdist}" rel="internal">{dist_sdist}</a><br/> </body></html> """ ).format(dist_sdist=dist_sdist) ) sdist_with_index('barbazquux', '3.2.0') sdist_with_index('barbazquux-runner', '2.11.1') with tmpdir.join('setup.cfg').open('w') as fp: fp.write( DALS( """ [easy_install] index_url = {index_url} """ ).format(index_url=index_url) ) reqs = """ barbazquux-runner barbazquux """.split() with tmpdir.as_cwd(): dist = Distribution() dist.parse_config_files() > resolved_dists = [dist.fetch_build_egg(r) for r in reqs] ^^^^^^^^^^^^^^^^^^^^^^^ setuptools/tests/test_dist.py:58: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ setuptools/dist.py:831: in fetch_build_egg return fetch_build_egg(self, req) ^^^^^^^^^^^^^^^^^^^^^^^^^^ setuptools/installer.py:36: in fetch_build_egg return _fetch_build_egg_no_warn(dist, req) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ dist = <setuptools.dist.Distribution object at 0x7fb71ce58690> req = <Requirement('barbazquux-runner')> def _fetch_build_egg_no_warn(dist, req): # noqa: C901 # is too complex (16) # FIXME # Ignore environment markers; if supplied, it is required. req = strip_marker(req) # Take easy_install options into account, but do not override relevant # pip environment variables (like PIP_INDEX_URL or PIP_QUIET); they'll # take precedence. opts = dist.get_option_dict('easy_install') if 'allow_hosts' in opts: raise DistutilsError( 'the `allow-hosts` option is not supported ' 'when using pip to install requirements.' ) quiet = 'PIP_QUIET' not in os.environ and 'PIP_VERBOSE' not in os.environ if 'PIP_INDEX_URL' in os.environ: index_url = None elif 'index_url' in opts: index_url = opts['index_url'][1] else: index_url = None find_links = ( _fixup_find_links(opts['find_links'][1])[:] if 'find_links' in opts else [] ) if dist.dependency_links: find_links.extend(dist.dependency_links) eggs_dir = os.path.realpath(dist.get_egg_cache_dir()) cached_dists = metadata.Distribution.discover(path=glob.glob(f'{eggs_dir}/*.egg')) for egg_dist in cached_dists: if _dist_matches_req(egg_dist, req): return egg_dist with tempfile.TemporaryDirectory() as tmpdir: cmd = [ sys.executable, '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', tmpdir, ] if quiet: cmd.append('--quiet') if index_url is not None: cmd.extend(('--index-url', index_url)) for link in find_links or []: cmd.extend(('--find-links', link)) # If requirement is a PEP 508 direct URL, directly pass # the URL to pip, as `req @ url` does not work on the # command line. cmd.append(req.url or str(req)) try: subprocess.check_call(cmd) except subprocess.CalledProcessError as e: > raise DistutilsError(str(e)) from e E distutils.errors.DistutilsError: Command '['/usr/bin/python3', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmpr5pew8t3', '--quiet', '--index-url', 'file:///tmp/pytest-of-mockbuild/pytest-0/test_dist_fetch_build_egg0/index', 'barbazquux-runner']' returned non-zero exit status 1. setuptools/installer.py:123: DistutilsError ----------------------------- Captured stderr call ----------------------------- error: subprocess-exited-with-error × installing build dependencies for barbazquux-runner did not run successfully. │ exit code: 1 ╰─> [4 lines of output] Looking in indexes: file:///tmp/pytest-of-mockbuild/pytest-0/test_dist_fetch_build_egg0/index WARNING: Location 'file:///tmp/pytest-of-mockbuild/pytest-0/test_dist_fetch_build_egg0/index/setuptools/' is ignored: it is neither a file nor a directory. ERROR: Could not find a version that satisfies the requirement setuptools>=40.8.0 (from versions: none) ERROR: No matching distribution found for setuptools>=40.8.0 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed to build 'barbazquux-runner' when installing build dependencies for barbazquux-runner _________________ TestNamespaces.test_mixed_site_and_non_site __________________ self = <setuptools.tests.test_namespaces.TestNamespaces object at 0x7fb71ee5a0d0> tmpdir = local('/tmp/pytest-of-mockbuild/pytest-0/test_mixed_site_and_non_site0') def test_mixed_site_and_non_site(self, tmpdir): """ Installing two packages sharing the same namespace, one installed to a site dir and the other installed just to a path on PYTHONPATH should leave the namespace in tact and both packages reachable by import. """ pkg_A = namespaces.build_namespace_package(tmpdir, 'myns.pkgA') pkg_B = namespaces.build_namespace_package(tmpdir, 'myns.pkgB') site_packages = tmpdir / 'site-packages' path_packages = tmpdir / 'path-packages' targets = site_packages, path_packages # use pip to install to the target directory install_cmd = [ sys.executable, '-m', 'pip.__main__', 'install', str(pkg_A), '-t', str(site_packages), ] > subprocess.check_call(install_cmd) setuptools/tests/test_namespaces.py:32: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ popenargs = (['/usr/bin/python3', '-m', 'pip.__main__', 'install', '/tmp/pytest-of-mockbuild/pytest-0/test_mixed_site_and_non_site0/myns.pkgA', '-t', ...],) kwargs = {}, retcode = 1 cmd = ['/usr/bin/python3', '-m', 'pip.__main__', 'install', '/tmp/pytest-of-mockbuild/pytest-0/test_mixed_site_and_non_site0/myns.pkgA', '-t', ...] def check_call(*popenargs, **kwargs): """Run command with arguments. Wait for command to complete. If the exit code was zero then return, otherwise raise CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute. The arguments are the same as for the call function. Example: check_call(["ls", "-l"]) """ retcode = call(*popenargs, **kwargs) if retcode: cmd = kwargs.get("args") if cmd is None: cmd = popenargs[0] > raise CalledProcessError(retcode, cmd) E subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'pip.__main__', 'install', '/tmp/pytest-of-mockbuild/pytest-0/test_mixed_site_and_non_site0/myns.pkgA', '-t', '/tmp/pytest-of-mockbuild/pytest-0/test_mixed_site_and_non_site0/site-packages']' returned non-zero exit status 1. /usr/lib64/python3.14/subprocess.py:419: CalledProcessError ----------------------------- Captured stdout call ----------------------------- Processing /tmp/pytest-of-mockbuild/pytest-0/test_mixed_site_and_non_site0/myns.pkgA Installing build dependencies: started Installing build dependencies: finished with status 'error' ----------------------------- Captured stderr call ----------------------------- error: subprocess-exited-with-error × installing build dependencies did not run successfully. │ exit code: 1 ╰─> [7 lines of output] WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f61f29b2510>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f61f297b390>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f61f297b4d0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f61f297b610>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f61f297b750>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ ERROR: Could not find a version that satisfies the requirement setuptools>=40.8.0 (from versions: none) ERROR: No matching distribution found for setuptools>=40.8.0 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed to build 'file:///tmp/pytest-of-mockbuild/pytest-0/test_mixed_site_and_non_site0/myns.pkgA' when installing build dependencies ___________________ TestNamespaces.test_pkg_resources_import ___________________ self = <setuptools.tests.test_namespaces.TestNamespaces object at 0x7fb71ee5a210> tmpdir = local('/tmp/pytest-of-mockbuild/pytest-0/test_pkg_resources_import0') def test_pkg_resources_import(self, tmpdir): """ Ensure that a namespace package doesn't break on import of pkg_resources. """ pkg = namespaces.build_namespace_package(tmpdir, 'myns.pkgA') target = tmpdir / 'packages' target.mkdir() install_cmd = [ sys.executable, '-m', 'pip', 'install', '-t', str(target), str(pkg), ] with paths_on_pythonpath([str(target)]): > subprocess.check_call(install_cmd) setuptools/tests/test_namespaces.py:70: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ popenargs = (['/usr/bin/python3', '-m', 'pip', 'install', '-t', '/tmp/pytest-of-mockbuild/pytest-0/test_pkg_resources_import0/packages', ...],) kwargs = {}, retcode = 1 cmd = ['/usr/bin/python3', '-m', 'pip', 'install', '-t', '/tmp/pytest-of-mockbuild/pytest-0/test_pkg_resources_import0/packages', ...] def check_call(*popenargs, **kwargs): """Run command with arguments. Wait for command to complete. If the exit code was zero then return, otherwise raise CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute. The arguments are the same as for the call function. Example: check_call(["ls", "-l"]) """ retcode = call(*popenargs, **kwargs) if retcode: cmd = kwargs.get("args") if cmd is None: cmd = popenargs[0] > raise CalledProcessError(retcode, cmd) E subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'pip', 'install', '-t', '/tmp/pytest-of-mockbuild/pytest-0/test_pkg_resources_import0/packages', '/tmp/pytest-of-mockbuild/pytest-0/test_pkg_resources_import0/myns.pkgA']' returned non-zero exit status 1. /usr/lib64/python3.14/subprocess.py:419: CalledProcessError ----------------------------- Captured stdout call ----------------------------- Processing /tmp/pytest-of-mockbuild/pytest-0/test_pkg_resources_import0/myns.pkgA Installing build dependencies: started Installing build dependencies: finished with status 'error' ----------------------------- Captured stderr call ----------------------------- error: subprocess-exited-with-error × installing build dependencies did not run successfully. │ exit code: 1 ╰─> [7 lines of output] WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f1bd6d0e7b0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f1bd6cd7610>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f1bd6cd7750>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f1bd6cd7890>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f1bd6cd79d0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ ERROR: Could not find a version that satisfies the requirement setuptools>=40.8.0 (from versions: none) ERROR: No matching distribution found for setuptools>=40.8.0 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed to build 'file:///tmp/pytest-of-mockbuild/pytest-0/test_pkg_resources_import0/myns.pkgA' when installing build dependencies ___________ TestNamespaces.test_namespace_package_installed_and_cwd ____________ self = <setuptools.tests.test_namespaces.TestNamespaces object at 0x7fb71ee1bbb0> tmpdir = local('/tmp/pytest-of-mockbuild/pytest-0/test_namespace_package_install0') def test_namespace_package_installed_and_cwd(self, tmpdir): """ Installing a namespace packages but also having it in the current working directory, only one version should take precedence. """ pkg_A = namespaces.build_namespace_package(tmpdir, 'myns.pkgA') target = tmpdir / 'packages' # use pip to install to the target directory install_cmd = [ sys.executable, '-m', 'pip.__main__', 'install', str(pkg_A), '-t', str(target), ] > subprocess.check_call(install_cmd) setuptools/tests/test_namespaces.py:97: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ popenargs = (['/usr/bin/python3', '-m', 'pip.__main__', 'install', '/tmp/pytest-of-mockbuild/pytest-0/test_namespace_package_install0/myns.pkgA', '-t', ...],) kwargs = {}, retcode = 1 cmd = ['/usr/bin/python3', '-m', 'pip.__main__', 'install', '/tmp/pytest-of-mockbuild/pytest-0/test_namespace_package_install0/myns.pkgA', '-t', ...] def check_call(*popenargs, **kwargs): """Run command with arguments. Wait for command to complete. If the exit code was zero then return, otherwise raise CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute. The arguments are the same as for the call function. Example: check_call(["ls", "-l"]) """ retcode = call(*popenargs, **kwargs) if retcode: cmd = kwargs.get("args") if cmd is None: cmd = popenargs[0] > raise CalledProcessError(retcode, cmd) E subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'pip.__main__', 'install', '/tmp/pytest-of-mockbuild/pytest-0/test_namespace_package_install0/myns.pkgA', '-t', '/tmp/pytest-of-mockbuild/pytest-0/test_namespace_package_install0/packages']' returned non-zero exit status 1. /usr/lib64/python3.14/subprocess.py:419: CalledProcessError ----------------------------- Captured stdout call ----------------------------- Processing /tmp/pytest-of-mockbuild/pytest-0/test_namespace_package_install0/myns.pkgA Installing build dependencies: started Installing build dependencies: finished with status 'error' ----------------------------- Captured stderr call ----------------------------- error: subprocess-exited-with-error × installing build dependencies did not run successfully. │ exit code: 1 ╰─> [7 lines of output] WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7fc0a878e510>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7fc0a8757390>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7fc0a87574d0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7fc0a8757610>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7fc0a8757750>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ ERROR: Could not find a version that satisfies the requirement setuptools>=40.8.0 (from versions: none) ERROR: No matching distribution found for setuptools>=40.8.0 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed to build 'file:///tmp/pytest-of-mockbuild/pytest-0/test_namespace_package_install0/myns.pkgA' when installing build dependencies _____ TestNamespaces.test_packages_in_the_same_namespace_installed_and_cwd _____ self = <setuptools.tests.test_namespaces.TestNamespaces object at 0x7fb71ee1b5c0> tmpdir = local('/tmp/pytest-of-mockbuild/pytest-0/test_packages_in_the_same_name0') def test_packages_in_the_same_namespace_installed_and_cwd(self, tmpdir): """ Installing one namespace package and also have another in the same namespace in the current working directory, both of them must be importable. """ pkg_A = namespaces.build_namespace_package(tmpdir, 'myns.pkgA') pkg_B = namespaces.build_namespace_package(tmpdir, 'myns.pkgB') target = tmpdir / 'packages' # use pip to install to the target directory install_cmd = [ sys.executable, '-m', 'pip.__main__', 'install', str(pkg_A), '-t', str(target), ] > subprocess.check_call(install_cmd) setuptools/tests/test_namespaces.py:128: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ popenargs = (['/usr/bin/python3', '-m', 'pip.__main__', 'install', '/tmp/pytest-of-mockbuild/pytest-0/test_packages_in_the_same_name0/myns.pkgA', '-t', ...],) kwargs = {}, retcode = 1 cmd = ['/usr/bin/python3', '-m', 'pip.__main__', 'install', '/tmp/pytest-of-mockbuild/pytest-0/test_packages_in_the_same_name0/myns.pkgA', '-t', ...] def check_call(*popenargs, **kwargs): """Run command with arguments. Wait for command to complete. If the exit code was zero then return, otherwise raise CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute. The arguments are the same as for the call function. Example: check_call(["ls", "-l"]) """ retcode = call(*popenargs, **kwargs) if retcode: cmd = kwargs.get("args") if cmd is None: cmd = popenargs[0] > raise CalledProcessError(retcode, cmd) E subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'pip.__main__', 'install', '/tmp/pytest-of-mockbuild/pytest-0/test_packages_in_the_same_name0/myns.pkgA', '-t', '/tmp/pytest-of-mockbuild/pytest-0/test_packages_in_the_same_name0/packages']' returned non-zero exit status 1. /usr/lib64/python3.14/subprocess.py:419: CalledProcessError ----------------------------- Captured stdout call ----------------------------- Processing /tmp/pytest-of-mockbuild/pytest-0/test_packages_in_the_same_name0/myns.pkgA Installing build dependencies: started Installing build dependencies: finished with status 'error' ----------------------------- Captured stderr call ----------------------------- error: subprocess-exited-with-error × installing build dependencies did not run successfully. │ exit code: 1 ╰─> [7 lines of output] WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f519c8e6510>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f519c8b7390>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f519c8b74d0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f519c8b7610>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f519c8b7750>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/setuptools/ ERROR: Could not find a version that satisfies the requirement setuptools>=40.8.0 (from versions: none) ERROR: No matching distribution found for setuptools>=40.8.0 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed to build 'file:///tmp/pytest-of-mockbuild/pytest-0/test_packages_in_the_same_name0/myns.pkgA' when installing build dependencies =========================== short test summary info ============================ FAILED setuptools/tests/test_dist.py::test_dist_fetch_build_egg - distutils.e... FAILED setuptools/tests/test_namespaces.py::TestNamespaces::test_mixed_site_and_non_site FAILED setuptools/tests/test_namespaces.py::TestNamespaces::test_pkg_resources_import FAILED setuptools/tests/test_namespaces.py::TestNamespaces::test_namespace_package_installed_and_cwd FAILED setuptools/tests/test_namespaces.py::TestNamespaces::test_packages_in_the_same_namespace_installed_and_cwd = 5 failed, 1017 passed, 21 skipped, 27 deselected, 9 xfailed, 2 xpassed in 119.34s (0:01:59) = This looks like the following change in pip: https://pip.pypa.io/en/stable/news/#v25-3 """ Remove support for the deprecated setup.py bdist_wheel mechanism. Consequently, --use-pep517 is now always on, and --no-use-pep517 has been removed. """ https://github.com/pypa/pip/issues/6334 As a workaround, try building the package with PIP_NO_BUILD_ISOLATION=0 set -- that disables build isolation (which is a tad confusing, see https://github.com/pypa/pip/issues/5735). However, in seuptools, this might indicate a more serious problem :/ Version-Release number of selected component (if applicable): 80.9.0-1.fc44 Steps to Reproduce: Build the package from distgit using our copr linked above. E.g.: fedpkg --release rawhide mockbuild -- --addrepo=https://download.copr.fedorainfracloud.org/results/churchyard/pip-25.3/fedora-rawhide-x86_64
I can reproduce similar but not the same failures from the v80.9.0 upstream tag, but not from the main branch. Will bisect. Found https://github.com/pypa/setuptools/commit/1ca1ee8237e3c7152f91ef83035597fb0552d1a2 Setting SETUPTOOLS_ENFORCE_DEPRECATION=0 in %check, however, does not help with the failures we see in %check unless we also enable internet.
https://github.com/pypa/setuptools/pull/5109 https://github.com/pypa/setuptools/commit/3b0d2d930d1a62bb7d1504acc3a010f848bdb87e This seems to fix at least the test_dist_fetch_build_egg thing. The rest I am not sure. Perhaps we need to treat them as "online only".
I verified that the problem here is only based on the fact that some test packages are now installed in isolated mode and they want to fetch setuptools from the internet. Since the purpose of the tests is not to test pip build isolation, setting PIP_NO_BUILD_ISOLATION=0 in %check seems like a safe option.
FEDORA-2025-4d0508b318 (python-setuptools-80.9.0-2.fc44) has been submitted as an update to Fedora 44. https://bodhi.fedoraproject.org/updates/FEDORA-2025-4d0508b318
FEDORA-2025-4d0508b318 (python-setuptools-80.9.0-2.fc44) has been pushed to the Fedora 44 stable repository. If problem still persists, please make note of it in this bug report.