Closed
Description
c7d65dd switched over to pathlib for performing config file checks. Specifically moving from os.path.isfile(...)
to pathlib.Path(...).is_file()
. The behavior of pathlib
seems different than os
. Pathlib is propagating permission errors in certain situations where the file doesn't exist or can't be accessed.
It seems like adding error handling in distutils.dist.file_config_files
could resolve the issue.
Here's the result of running python -m build
with setuptools 65.0.4 (includes the most vendored commit) as the root user in ci.
* Creating venv isolated environment...\n' +
'* Installing packages in isolated environment... (setuptools >= 40.9.0, wheel)\n' +
'* Getting dependencies for sdist...\n' +
'\n' +
'ERROR Backend subprocess exited when trying to invoke get_requires_for_build_sdist',
stderr: 'Traceback (most recent call last):\n' +
' File "/usr/local/lib/python3.9/dist-packages/pep517/in_process/_in_process.py", line 351, in <module>\n' +
' main()\n' +
' File "/usr/local/lib/python3.9/dist-packages/pep517/in_process/_in_process.py", line 333, in main\n' +
" json_out['return_val'] = hook(**hook_input['kwargs'])\n" +
' File "/usr/local/lib/python3.9/dist-packages/pep517/in_process/_in_process.py", line 285, in get_requires_for_build_sdist\n' +
' return hook(config_settings)\n' +
' File "/tmp/build-env-eq3q247f/lib/python3.9/site-packages/setuptools/build_meta.py", line 341, in get_requires_for_build_sdist\n' +
' return self._get_build_requires(config_settings, requirements=[])\n' +
' File "/tmp/build-env-eq3q247f/lib/python3.9/site-packages/setuptools/build_meta.py", line 320, in _get_build_requires\n' +
' self.run_setup()\n' +
' File "/tmp/build-env-eq3q247f/lib/python3.9/site-packages/setuptools/build_meta.py", line 335, in run_setup\n' +
' exec(code, locals())\n' +
' File "<string>", line 4, in <module>\n' +
' File "/tmp/build-env-eq3q247f/lib/python3.9/site-packages/setuptools/__init__.py", line 86, in setup\n' +
' _install_setup_requires(attrs)\n' +
' File "/tmp/build-env-eq3q247f/lib/python3.9/site-packages/setuptools/__init__.py", line 78, in _install_setup_requires\n' +
' dist.parse_config_files(ignore_option_errors=True)\n' +
' File "/tmp/build-env-eq3q247f/lib/python3.9/site-packages/setuptools/dist.py", line 862, in parse_config_files\n' +
' self._parse_config_files(filenames=inifiles)\n' +
' File "/tmp/build-env-eq3q247f/lib/python3.9/site-packages/setuptools/dist.py", line 704, in _parse_config_files\n' +
' filenames = self.find_config_files()\n' +
' File "/tmp/build-env-eq3q247f/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 337, in find_config_files\n' +
' files = [str(path) for path in self._gen_paths() if path.is_file()]\n' +
' File "/tmp/build-env-eq3q247f/lib/python3.9/site-packages/setuptools/_distutils/dist.py", line 337, in <listcomp>\n' +
' files = [str(path) for path in self._gen_paths() if path.is_file()]\n' +
' File "/usr/lib/python3.9/pathlib.py", line 1456, in is_file\n' +
' return S_ISREG(self.stat().st_mode)\n' +
' File "/usr/lib/python3.9/pathlib.py", line 1232, in stat\n' +
' return self._accessor.stat(self)\n' +
"PermissionError: [Errno 13] Permission denied: '/root/.pydistutils.cfg'"
Metadata
Metadata
Assignees
Labels
No labels