scikit-build / scikit-build-core

A next generation Python CMake adaptor and Python API for plugins
https://scikit-build-core.readthedocs.io
Apache License 2.0
223 stars 47 forks source link

0.4.5: pytest is failing in few units #368

Closed kloczek closed 2 months ago

kloczek commented 1 year ago

I'm packaging your module as an rpm package so I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

Here is list of installed modules in build env

```console Package Version ----------------------------- ----------- alabaster 0.7.13 asttokens 2.2.1 attrs 23.1.0 Babel 2.12.1 backcall 0.2.0 build 0.10.0 cattrs 22.2.0 charset-normalizer 3.1.0 decorator 5.1.1 distro 1.8.0 docutils 0.19 editables 0.3 exceptiongroup 1.1.1 executing 1.2.0 gpg 1.20.0 hatch-vcs 0.3.0 hatchling 1.17.1 idna 3.4 imagesize 1.4.1 importlib-metadata 6.6.0 importlib-resources 5.12.0 iniconfig 2.0.0 installer 0.7.0 ipython 8.12.0 jedi 0.18.2 Jinja2 3.1.2 libcomps 0.1.19 markdown-it-py 3.0.0 MarkupSafe 2.1.2 matplotlib-inline 0.1.6 mdit-py-plugins 0.4.0 mdurl 0.1.2 myst-parser 1.0.0 numpy 1.24.3 packaging 23.1 parso 0.8.3 pathspec 0.11.1 pexpect 4.8.0 pickleshare 0.7.5 pluggy 1.0.0 prompt-toolkit 3.0.38 ptyprocess 0.7.0 pure-eval 0.2.2 Pygments 2.15.1 pyproject_hooks 1.0.0 pyproject-metadata 0.7.1 pytest 7.3.1 pytest-subprocess 1.5.0 python-dateutil 2.8.2 pytz 2023.2 PyYAML 6.0 requests 2.30.0 setuptools 67.7.2 setuptools-scm 7.1.0 six 1.16.0 snowballstemmer 2.2.0 Sphinx 6.2.1 sphinx-copybutton 0.5.1 sphinx_inline_tabs 2022.1.2b11 sphinxcontrib-applehelp 1.0.4 sphinxcontrib-devhelp 1.0.2 sphinxcontrib-htmlhelp 2.0.0 sphinxcontrib-jsmath 1.0.1 sphinxcontrib-qthelp 1.0.3 sphinxcontrib-serializinghtml 1.1.5 stack-data 0.6.2 tomli 2.0.1 traitlets 5.9.0 trove-classifiers 2023.5.25 typing_extensions 4.5.0 urllib3 1.26.15 wcwidth 0.2.6 wheel 0.40.0 zipp 3.15.0 ```
kloczek commented 1 year ago

Here is pytest output:

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.4.5-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.4.5-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.8.17, pytest-7.3.1, pluggy-1.0.0 installed packages of interest: build==0.10.0 packaging==23.1 pathspec==0.11.1 pip==23.1.2 pyproject_metadata==0.7.1 scikit_build_core==0.4.5 setuptools==67.7.2 wheel==0.40.0 sysconfig platform: linux-x86_64 rootdir: /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5 configfile: pyproject.toml testpaths: tests plugins: subprocess-1.5.0 collected 129 items tests/test_builder.py .........Xs......... [ 15%] tests/test_cmake_config.py .... [ 18%] tests/test_custom_modules.py E [ 19%] tests/test_dynamic_metadata.py .s.....E [ 25%] tests/test_file_processor.py . [ 26%] tests/test_fileapi.py .... [ 29%] tests/test_fortran.py s [ 30%] tests/test_generator_default.py ... [ 32%] tests/test_get_requires.py ....... [ 37%] tests/test_logging.py .. [ 39%] tests/test_module_dir.py .. [ 41%] tests/test_name_main.py ... [ 43%] tests/test_prepare_metadata.py .. [ 44%] tests/test_process_scripts.py . [ 45%] tests/test_program_search.py ss... [ 49%] tests/test_pyproject_abi3.py E [ 50%] tests/test_pyproject_extra_dirs.py .. [ 51%] tests/test_pyproject_pep517.py .F..FFEEs. [ 59%] tests/test_pyproject_pep518.py FEEEEE [ 64%] tests/test_pyproject_pep660.py FEE [ 66%] tests/test_settings.py ....................... [ 84%] tests/test_setuptools_abi3.py E [ 85%] tests/test_setuptools_pep517.py .EE [ 87%] tests/test_setuptools_pep518.py EE [ 89%] tests/test_simple_pure.py ... [ 91%] tests/test_simplest_c.py .EE [ 93%] tests/test_skbuild_settings.py ...... [ 98%] tests/test_wheelfile_utils.py .. [100%] ========================================================================================== ERRORS =========================================================================================== _________________________________________________________________________________ ERROR at setup of test_ep _________________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_ep0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_ep0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_ep0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ----------------------------------------------------------------------------------- Captured stdout setup ----------------------------------------------------------------------------------- Processing /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5 Installing build dependencies: started Installing build dependencies: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Preparing metadata (pyproject.toml): started Preparing metadata (pyproject.toml): finished with status 'done' Collecting exceptiongroup (from scikit_build_core==0.4.5) Using cached exceptiongroup-1.1.1-py3-none-any.whl (14 kB) Collecting importlib-resources>=1.3 (from scikit_build_core==0.4.5) Using cached importlib_resources-5.12.0-py3-none-any.whl (36 kB) Collecting packaging>=20.9 (from scikit_build_core==0.4.5) Using cached packaging-23.1-py3-none-any.whl (48 kB) Collecting tomli>=1.1 (from scikit_build_core==0.4.5) Using cached tomli-2.0.1-py3-none-any.whl (12 kB) Collecting pathspec>=0.10.1 (from scikit_build_core==0.4.5) Using cached pathspec-0.11.1-py3-none-any.whl (29 kB) Collecting pyproject-metadata>=0.5 (from scikit_build_core==0.4.5) Using cached pyproject_metadata-0.7.1-py3-none-any.whl (7.4 kB) Collecting zipp>=3.1.0 (from importlib-resources>=1.3->scikit_build_core==0.4.5) Using cached zipp-3.15.0-py3-none-any.whl (6.8 kB) Saved /tmp/pytest-of-tkloczko/pytest-10/wheelhouse0/importlib_resources-5.12.0-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-10/wheelhouse0/packaging-23.1-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-10/wheelhouse0/pathspec-0.11.1-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-10/wheelhouse0/pyproject_metadata-0.7.1-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-10/wheelhouse0/tomli-2.0.1-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-10/wheelhouse0/exceptiongroup-1.1.1-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-10/wheelhouse0/zipp-3.15.0-py3-none-any.whl Building wheels for collected packages: scikit_build_core Building wheel for scikit_build_core (pyproject.toml): started Building wheel for scikit_build_core (pyproject.toml): finished with status 'done' Created wheel for scikit_build_core: filename=scikit_build_core-0.4.5-py3-none-any.whl size=116633 sha256=10a3d57428623243a58472c94c3fbb127edd75970fc7675d35ea87f9b9c8c4cc Stored in directory: /home/tkloczko/.cache/pip/wheels/f5/9e/f4/750bd22e2a860023899f07cd2a30e1f3a65958d3441b9d9068 Successfully built scikit_build_core ____________________________________________________________________________ ERROR at setup of test_pep517_wheel ____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________________ ERROR at setup of test_abi3_wheel _____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_abi3_wheel0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_abi3_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_abi3_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ____________________________________________________________________________ ERROR at setup of test_pep517_wheel ____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel1') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ______________________________________________________________________ ERROR at setup of test_pep517_wheel_source_dir _______________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel_source_dir0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel_source_dir0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel_source_dir0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ____________________________________________________________________ ERROR at setup of test_pep518_wheel[sdist_to_wheel] ____________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel_sdist_to_whe0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel_sdist_to_whe0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1}, process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel_sdist_to_whe0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ____________________________________________________________________ ERROR at setup of test_pep518_wheel[wheel_directly] ____________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel_wheel_direct0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel_wheel_direct0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1}, process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel_wheel_direct0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ______________________________________________________________ ERROR at setup of test_pep518_rebuild_build_dir[sdist_to_wheel] ______________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep518_rebuild_build_dir_0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_rebuild_build_dir_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1}, process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_rebuild_build_dir_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ______________________________________________________________ ERROR at setup of test_pep518_rebuild_build_dir[wheel_directly] ______________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep518_rebuild_build_dir_1'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_rebuild_build_dir_1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1}, process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_rebuild_build_dir_1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________________ ERROR at setup of test_pep518_pip _____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep518_pip0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_pip0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_pip0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________ ERROR at setup of test_pep660_pip_isolated[True] ______________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep660_pip_isolated_True_0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep660_pip_isolated_True_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1}, process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep660_pip_isolated_True_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________ ERROR at setup of test_pep660_pip_isolated[False] _____________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep660_pip_isolated_False0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep660_pip_isolated_False0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1}, process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep660_pip_isolated_False0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________________ ERROR at setup of test_abi3_wheel _____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_abi3_wheel1') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_abi3_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_abi3_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ____________________________________________________________________________ ERROR at setup of test_pep517_wheel ____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel2') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel2/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel2/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _________________________________________________________________________ ERROR at setup of test_pep517_mixed_wheel _________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep517_mixed_wheel0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_mixed_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_mixed_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ____________________________________________________________________________ ERROR at setup of test_pep518_wheel ____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________________ ERROR at setup of test_pep518_pip _____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep518_pip1'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_pip1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_pip1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ____________________________________________________________________________ ERROR at setup of test_pep517_wheel ____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel3') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel3/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel3/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ________________________________________________________________________ ERROR at setup of test_pep517_wheel_incexl _________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel_incexl0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel_incexl0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel_incexl0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ========================================================================================= FAILURES ========================================================================================== __________________________________________________________________________________ test_pep517_sdist_hash ___________________________________________________________________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6b8d1c8fa0> package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b...739b32a0ef7a7a02ec987b5c4a210b', sdist_dated_hash38='feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8') @mark_hashes_different def test_pep517_sdist_hash(monkeypatch, package_simple_pyproject_ext): # Unset SOURCE_DATE_EPOCH in order to guarantee the hash match monkeypatch.delenv("SOURCE_DATE_EPOCH", raising=False) dist = Path("dist") out = build_sdist("dist") sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_hash E AssertionError: assert '1f7448eb0386...ff3affeb25c4a' == 'cbf3102cf86f...6d9bad96660b3' E - cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b3 E + 1f7448eb0386671773e8952d0209f34ffe36e7203a9873e73b3ff3affeb25c4a /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/test_pyproject_pep517.py:75: AssertionError _______________________________________________________________________ test_pep517_sdist_time_hash_set_epoch[False] ________________________________________________________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6b8ceb4130>, reverse_order = False package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b...739b32a0ef7a7a02ec987b5c4a210b', sdist_dated_hash38='feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8') @mark_hashes_different @pytest.mark.parametrize("reverse_order", [False, True]) def test_pep517_sdist_time_hash_set_epoch( monkeypatch, reverse_order, package_simple_pyproject_ext ): dist = Path("dist") monkeypatch.setenv( "SOURCE_DATE_EPOCH", package_simple_pyproject_ext.source_date_epoch ) _each_unignored_file = _file_processor.each_unignored_file def each_unignored_file_ordered(*args, **kwargs): return sorted(_each_unignored_file(*args, **kwargs), reverse=reverse_order) monkeypatch.setattr( _file_processor, "each_unignored_file", each_unignored_file_ordered ) out = build_sdist(str(dist), {"sdist.reproducible": "true"}) sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_dated_hash E AssertionError: assert '15f7041621d7...c04ab21c73927' == 'feeedcb0070a...07348e40e44e8' E - feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8 E + 15f7041621d7c226964709546002e1a7b6755983f96daa3fa8bc04ab21c73927 /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/test_pyproject_pep517.py:143: AssertionError ________________________________________________________________________ test_pep517_sdist_time_hash_set_epoch[True] ________________________________________________________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f6b8d030c10>, reverse_order = True package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b...739b32a0ef7a7a02ec987b5c4a210b', sdist_dated_hash38='feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8') @mark_hashes_different @pytest.mark.parametrize("reverse_order", [False, True]) def test_pep517_sdist_time_hash_set_epoch( monkeypatch, reverse_order, package_simple_pyproject_ext ): dist = Path("dist") monkeypatch.setenv( "SOURCE_DATE_EPOCH", package_simple_pyproject_ext.source_date_epoch ) _each_unignored_file = _file_processor.each_unignored_file def each_unignored_file_ordered(*args, **kwargs): return sorted(_each_unignored_file(*args, **kwargs), reverse=reverse_order) monkeypatch.setattr( _file_processor, "each_unignored_file", each_unignored_file_ordered ) out = build_sdist(str(dist), {"sdist.reproducible": "true"}) sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_dated_hash E AssertionError: assert '15f7041621d7...c04ab21c73927' == 'feeedcb0070a...07348e40e44e8' E - feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8 E + 15f7041621d7c226964709546002e1a7b6755983f96daa3fa8bc04ab21c73927 /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/test_pyproject_pep517.py:143: AssertionError _____________________________________________________________________________________ test_pep518_sdist _____________________________________________________________________________________ package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b...739b32a0ef7a7a02ec987b5c4a210b', sdist_dated_hash38='feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8') @pytest.mark.isolated() @pytest.mark.integration() def test_pep518_sdist(package_simple_pyproject_ext): correct_metadata = textwrap.dedent( """\ Metadata-Version: 2.1 Name: cmake-example Version: 0.0.1 Requires-Python: >=3.7 Provides-Extra: test Requires-Dist: pytest>=6.0; extra == "test" """ ) > subprocess.run([sys.executable, "-m", "build", "--sdist"], check=True) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/test_pyproject_pep518.py:27: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True, popenargs = (['/usr/bin/python3', '-m', 'build', '--sdist'],), kwargs = {} process = , stdout = None, stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'build', '--sdist']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ----------------------------------------------------------------------------------- Captured stdout call ------------------------------------------------------------------------------------ * Creating venv isolated environment... ERROR Failed to create venv. Maybe try installing virtualenv. Command '/tmp/build-env-ppynrf4u/bin/python3 -Im ensurepip --upgrade --default-pip' failed with return code 1 stdout: Traceback (most recent call last): File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main mod_name, mod_spec, code = _get_module_details(mod_name, _Error) File "/usr/lib64/python3.8/runpy.py", line 144, in _get_module_details return _get_module_details(pkg_main_name, error) File "/usr/lib64/python3.8/runpy.py", line 111, in _get_module_details __import__(pkg_name) File "/usr/lib64/python3.8/ensurepip/__init__.py", line 29, in _SETUPTOOLS_VERSION = _get_most_recent_wheel_version("setuptools") File "/usr/lib64/python3.8/ensurepip/__init__.py", line 26, in _get_most_recent_wheel_version return str(max(_wheels[pkg], key=distutils.version.LooseVersion)) ValueError: max() arg is an empty sequence _____________________________________________________________________________________ test_pep660_wheel _____________________________________________________________________________________ @pytest.mark.compile() @pytest.mark.configure() @pytest.mark.xfail( sys.platform.startswith("cygwin"), strict=False, reason="No idea why this fails on Cygwin", ) @pytest.mark.usefixtures("package_simplest_c") def test_pep660_wheel(): dist = Path("dist") > out = build_editable("dist") /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/test_pyproject_pep660.py:21: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wheel_directory = 'dist', config_settings = None, metadata_directory = None def build_editable( wheel_directory: str, config_settings: dict[str, list[str] | str] | None = None, metadata_directory: str | None = None, ) -> str: from .._logging import rich_print from ..errors import FailedLiveProcessError from .wheel import _build_wheel_impl try: return _build_wheel_impl( wheel_directory, config_settings, metadata_directory, editable=True, ).wheel_filename except FailedLiveProcessError as err: sys.stdout.flush() rich_print(f"\n[red bold]*** {' '.join(err.args)}", file=sys.stderr) > raise SystemExit(1) from None E SystemExit: 1 /home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.4.5-2.fc35.x86_64/usr/lib/python3.8/site-packages/scikit_build_core/build/__init__.py:63: SystemExit ----------------------------------------------------------------------------------- Captured stdout call ------------------------------------------------------------------------------------ *** scikit-build-core 0.4.5 using CMake 3.26.4 (editable) *** Configuring CMake... loading initial cache file /tmp/tmpesyw3zfe/build/CMakeInit.txt -- The C compiler identification is GNU 13.1.1 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Could NOT find Python (missing: Interpreter Development.Module) (found version "..") -- Configuring incomplete, errors occurred! ----------------------------------------------------------------------------------- Captured stderr call ------------------------------------------------------------------------------------ 2023-06-11 12:56:56,994 - scikit_build_core - WARNING - No license files found, set wheel.license-files to [] to suppress this warning 2023-06-11 12:56:57,028 - scikit_build_core - WARNING - libdir/ldlibrary: /usr/lib64/libpython3.8.so is not a real file! 2023-06-11 12:56:57,028 - scikit_build_core - WARNING - Can't find a Python library, got libdir=/usr/lib64, ldlibrary=libpython3.8.so, multiarch=x86_64-linux-gnu, masd=None CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:706 (file): file STRINGS file "/usr/include/python3.8/patchlevel.h" cannot be read. Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:711 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:712 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:713 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:706 (file): file STRINGS file "/usr/include/python3.8/patchlevel.h" cannot be read. Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:711 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:712 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:713 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at CMakeLists.txt:10 (python_add_library): Unknown CMake command "python_add_library". *** CMake configuration failed ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG scikit_build_core:_shutil.py:63 RUN: /usr/bin/cmake --version INFO scikit_build_core:program_search.py:84 CMake version: 3.26.4 INFO scikit_build_core:wheel.py:126 Build directory: /tmp/tmpesyw3zfe/build WARNING scikit_build_core:wheel.py:159 No license files found, set wheel.license-files to [] to suppress this warning DEBUG scikit_build_core:builder.py:106 SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:builder.py:109 Extra SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:generator.py:69 Default generator: Unix Makefiles DEBUG scikit_build_core:_shutil.py:63 RUN: /usr/bin/ninja --version INFO scikit_build_core:program_search.py:107 Ninja version: 1.11.1 DEBUG scikit_build_core:generator.py:95 CMAKE_GENERATOR: Using ninja: /usr/bin/ninja WARNING scikit_build_core:sysconfig.py:68 libdir/ldlibrary: /usr/lib64/libpython3.8.so is not a real file! WARNING scikit_build_core:sysconfig.py:78 Can't find a Python library, got libdir=/usr/lib64, ldlibrary=libpython3.8.so, multiarch=x86_64-linux-gnu, masd=None DEBUG scikit_build_core:cmake.py:155 /tmp/tmpesyw3zfe/build/CMakeInit.txt: set(SKBUILD [===[2]===] CACHE STRING "" FORCE) set(SKBUILD_CORE_VERSION [===[0.4.5]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_NAME [===[simplest]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_VERSION [===[0.0.1]===] CACHE STRING "" FORCE) set(PYTHON_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(PYTHON_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(Python3_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python3_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python3_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python3_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(SKBUILD_SOABI [===[cpython-38-x86_64-linux-gnu]===] CACHE STRING "" FORCE) set(SKBUILD_SABI_COMPONENT [===[]===] CACHE STRING "" FORCE) set(SKBUILD_PLATLIB_DIR [===[/tmp/tmpesyw3zfe/wheel/platlib]===] CACHE PATH "" FORCE) set(SKBUILD_DATA_DIR [===[/tmp/tmpesyw3zfe/wheel/data]===] CACHE PATH "" FORCE) set(SKBUILD_HEADERS_DIR [===[/tmp/tmpesyw3zfe/wheel/headers]===] CACHE PATH "" FORCE) set(SKBUILD_SCRIPTS_DIR [===[/tmp/tmpesyw3zfe/wheel/scripts]===] CACHE PATH "" FORCE) set(SKBUILD_NULL_DIR [===[/tmp/tmpesyw3zfe/wheel/null]===] CACHE PATH "" FORCE) set(CMAKE_PREFIX_PATH [===[/usr/lib/python3.8/site-packages;/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.4.5-2.fc35.x86_64/usr/lib/python3.8/site-packages]===] CACHE PATH "" FORCE) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "BOTH" CACHE PATH "") DEBUG scikit_build_core:_shutil.py:60 RUNENV - changes since last run only: PYTEST_CURRENT_TEST=tests/test_pyproject_pep660.py::test_pep660_wheel (call) - SKBUILD_CMAKE_ARGS= - SKBUILD_CMAKE_DEFINE= DEBUG scikit_build_core:_shutil.py:63 RUN: /usr/bin/cmake -S. -B/tmp/tmpesyw3zfe/build -C/tmp/tmpesyw3zfe/build/CMakeInit.txt -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja ================================================================================== short test summary info ================================================================================== SKIPPED [1] tests/test_builder.py:66: MSVC only SKIPPED [1] tests/test_dynamic_metadata.py:117: install hatch-fancy-pypi-readme and setuptools-scm to test the dynamic metadata plugins SKIPPED [1] tests/test_fortran.py:27: gfortran not available SKIPPED [1] tests/test_program_search.py:17: could not import 'cmake': No module named 'cmake' SKIPPED [1] tests/test_program_search.py:26: could not import 'ninja': No module named 'ninja' SKIPPED [1] tests/test_pyproject_pep517.py:242: Doesn't work yet XPASS tests/test_builder.py::test_get_python_library Doesn't matter if this fails, usually not used ERROR tests/test_custom_modules.py::test_ep - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_ep0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. ERROR tests/test_dynamic_metadata.py::test_pep517_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero e... ERROR tests/test_pyproject_abi3.py::test_abi3_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_abi3_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exi... ERROR tests/test_pyproject_pep517.py::test_pep517_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero e... ERROR tests/test_pyproject_pep517.py::test_pep517_wheel_source_dir - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel_source_dir0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned... ERROR tests/test_pyproject_pep518.py::test_pep518_wheel[sdist_to_wheel] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel_sdist_to_whe0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' return... ERROR tests/test_pyproject_pep518.py::test_pep518_wheel[wheel_directly] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel_wheel_direct0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' return... ERROR tests/test_pyproject_pep518.py::test_pep518_rebuild_build_dir[sdist_to_wheel] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_rebuild_build_dir_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' return... ERROR tests/test_pyproject_pep518.py::test_pep518_rebuild_build_dir[wheel_directly] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_rebuild_build_dir_1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' return... ERROR tests/test_pyproject_pep518.py::test_pep518_pip - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_pip0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exi... ERROR tests/test_pyproject_pep660.py::test_pep660_pip_isolated[True] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep660_pip_isolated_True_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' return... ERROR tests/test_pyproject_pep660.py::test_pep660_pip_isolated[False] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep660_pip_isolated_False0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' return... ERROR tests/test_setuptools_abi3.py::test_abi3_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_abi3_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exi... ERROR tests/test_setuptools_pep517.py::test_pep517_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel2/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero e... ERROR tests/test_setuptools_pep517.py::test_pep517_mixed_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_mixed_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-... ERROR tests/test_setuptools_pep518.py::test_pep518_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero e... ERROR tests/test_setuptools_pep518.py::test_pep518_pip - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep518_pip1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exi... ERROR tests/test_simplest_c.py::test_pep517_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel3/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero e... ERROR tests/test_simplest_c.py::test_pep517_wheel_incexl - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_pep517_wheel_incexl0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non... FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_hash - AssertionError: assert '1f7448eb0386...ff3affeb25c4a' == 'cbf3102cf86f...6d9bad96660b3' FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[False] - AssertionError: assert '15f7041621d7...c04ab21c73927' == 'feeedcb0070a...07348e40e44e8' FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[True] - AssertionError: assert '15f7041621d7...c04ab21c73927' == 'feeedcb0070a...07348e40e44e8' FAILED tests/test_pyproject_pep518.py::test_pep518_sdist - subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'build', '--sdist']' returned non-zero exit status 1. FAILED tests/test_pyproject_pep660.py::test_pep660_wheel - SystemExit: 1 ============================================================== 5 failed, 98 passed, 6 skipped, 1 xpassed, 19 errors in 19.89s =============================================================== ```
LecrisUT commented 1 year ago

Can you provide more details on your environment? Did you edit the rpm spec file? Are these errors reproducible in copr/mock? I think the issue is with calling pytests marked as isolated

kloczek commented 1 year ago

Can you provide more details on your environment? Did you edit the rpm spec file?

Of course. Usually when I'm building package I'm usually editing spec file.

Are these errors reproducible in copr/mock?

I have no idea. Im not using copr/mock and I'm not using Fedora either.

I think the issue is with calling pytests marked as isolated

I'm not passing such partam to pytest.

Reported issue has nothing to do with rpm.

LecrisUT commented 1 year ago

I have no idea. Im not using copr/mock and I'm not using Fedora either.

Oh what OS are you working on? mock is basically the equivalent of a container, and it is usually used on the backend for build tools like copr and packit. copr is CI/CD like Github Action but specifically for rpms. It supports all distros that use rpms including open suse, centos, redhat.

In this project we are using packit to automate the CI/CD using copr and downstream. I think it supports centos as well, and they are happy if there is more people who would want to use it for other downstreams. If you can replicate the issue with packit build in-mock -r /etc/mock/centos-stream-9-x86_64.cfg or equivalent, that would help a bunch to replicate the issue.

I'm not passing such partam to pytest.

We are passing those arguments though, check: https://github.com/scikit-build/scikit-build-core/blob/cf8b29449f1ff44e453a98c0ced3018811483b7f/.distro/python-scikit-build-core.spec#L51-L53

henryiii commented 1 year ago

We don't have a "network" marker in scikit-build-core, but we could (should?) add one. It's currently pretty much synonymous with "isolated" at the moment. Though it does worry me - some of the errors you are seeing are before the network is accessed, during the setup phase. I think I saw the same thing with scikit-build in some cases, and ended up using virtualenv instead of venv there; maybe I should do the same thing here. (I've seen venv broken by default with pypa/build, too).

LecrisUT commented 1 year ago

Aren't they all failing at basically calling pip upgrade like in:

E               subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-10/test_abi3_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

Or am I reading the log wrong?


We don't have a "network" marker in scikit-build-core, but we could (should?) add one. It's currently pretty much synonymous with "isolated" at the moment.

What would be logical difference between isolated and network? Presumably not network is a subset of not isolated, but what else would the latter contain?

henryiii commented 1 year ago

Ahh, yes, I might have missed the --upgrade, yes, that would access the network. @kloczek, could you try again with -m "not isolated"? I can add a network marker, but to start it will be identical to isolated.

kloczek commented 1 year ago

network mark is more widely used and as looks as those units are accessing to to the public network it make s more sense to use network than another one.

Here is pyest output with -m "not isolated"

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.4.5-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.4.5-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' -m 'not isolated' ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.8.17, pytest-7.3.1, pluggy-1.0.0 installed packages of interest: build==0.10.0 packaging==23.1 pathspec==0.11.1 pip==23.1.2 pyproject_metadata==0.7.1 scikit_build_core==0.4.5 setuptools==67.7.2 wheel==0.40.0 sysconfig platform: linux-x86_64 rootdir: /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5 configfile: pyproject.toml testpaths: tests plugins: subprocess-1.5.0 collected 129 items / 11 deselected / 118 selected tests/test_builder.py .........Xs......... [ 16%] tests/test_cmake_config.py .... [ 20%] tests/test_dynamic_metadata.py .s.....E [ 27%] tests/test_file_processor.py . [ 27%] tests/test_fileapi.py .... [ 31%] tests/test_fortran.py s [ 32%] tests/test_generator_default.py ... [ 34%] tests/test_get_requires.py ....... [ 40%] tests/test_logging.py .. [ 42%] tests/test_module_dir.py .. [ 44%] tests/test_name_main.py ... [ 46%] tests/test_prepare_metadata.py .. [ 48%] tests/test_process_scripts.py . [ 49%] tests/test_program_search.py ss... [ 53%] tests/test_pyproject_abi3.py E [ 54%] tests/test_pyproject_extra_dirs.py .. [ 55%] tests/test_pyproject_pep517.py .F..FFEEs. [ 64%] tests/test_pyproject_pep660.py F [ 65%] tests/test_settings.py ....................... [ 84%] tests/test_setuptools_abi3.py E [ 85%] tests/test_setuptools_pep517.py .EE [ 88%] tests/test_simple_pure.py ... [ 90%] tests/test_simplest_c.py .EE [ 93%] tests/test_skbuild_settings.py ...... [ 98%] tests/test_wheelfile_utils.py .. [100%] ========================================================================================== ERRORS =========================================================================================== ____________________________________________________________________________ ERROR at setup of test_pep517_wheel ____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________________ ERROR at setup of test_abi3_wheel _____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-2/test_abi3_wheel0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-2/test_abi3_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_abi3_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ____________________________________________________________________________ ERROR at setup of test_pep517_wheel ____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel1') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ______________________________________________________________________ ERROR at setup of test_pep517_wheel_source_dir _______________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel_source_dir0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel_source_dir0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel_source_dir0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________________ ERROR at setup of test_abi3_wheel _____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-2/test_abi3_wheel1') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-2/test_abi3_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_abi3_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ____________________________________________________________________________ ERROR at setup of test_pep517_wheel ____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel2') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel2/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel2/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _________________________________________________________________________ ERROR at setup of test_pep517_mixed_wheel _________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-2/test_pep517_mixed_wheel0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_mixed_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_mixed_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ____________________________________________________________________________ ERROR at setup of test_pep517_wheel ____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel3') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel3/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel3/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ________________________________________________________________________ ERROR at setup of test_pep517_wheel_incexl _________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel_incexl0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel_incexl0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel_incexl0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ========================================================================================= FAILURES ========================================================================================== __________________________________________________________________________________ test_pep517_sdist_hash ___________________________________________________________________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7fdb52d372e0> package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b...739b32a0ef7a7a02ec987b5c4a210b', sdist_dated_hash38='feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8') @mark_hashes_different def test_pep517_sdist_hash(monkeypatch, package_simple_pyproject_ext): # Unset SOURCE_DATE_EPOCH in order to guarantee the hash match monkeypatch.delenv("SOURCE_DATE_EPOCH", raising=False) dist = Path("dist") out = build_sdist("dist") sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_hash E AssertionError: assert '1f7448eb0386...ff3affeb25c4a' == 'cbf3102cf86f...6d9bad96660b3' E - cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b3 E + 1f7448eb0386671773e8952d0209f34ffe36e7203a9873e73b3ff3affeb25c4a /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/test_pyproject_pep517.py:75: AssertionError _______________________________________________________________________ test_pep517_sdist_time_hash_set_epoch[False] ________________________________________________________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7fdb52b85640>, reverse_order = False package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b...739b32a0ef7a7a02ec987b5c4a210b', sdist_dated_hash38='feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8') @mark_hashes_different @pytest.mark.parametrize("reverse_order", [False, True]) def test_pep517_sdist_time_hash_set_epoch( monkeypatch, reverse_order, package_simple_pyproject_ext ): dist = Path("dist") monkeypatch.setenv( "SOURCE_DATE_EPOCH", package_simple_pyproject_ext.source_date_epoch ) _each_unignored_file = _file_processor.each_unignored_file def each_unignored_file_ordered(*args, **kwargs): return sorted(_each_unignored_file(*args, **kwargs), reverse=reverse_order) monkeypatch.setattr( _file_processor, "each_unignored_file", each_unignored_file_ordered ) out = build_sdist(str(dist), {"sdist.reproducible": "true"}) sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_dated_hash E AssertionError: assert '15f7041621d7...c04ab21c73927' == 'feeedcb0070a...07348e40e44e8' E - feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8 E + 15f7041621d7c226964709546002e1a7b6755983f96daa3fa8bc04ab21c73927 /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/test_pyproject_pep517.py:143: AssertionError ________________________________________________________________________ test_pep517_sdist_time_hash_set_epoch[True] ________________________________________________________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7fdb52dce520>, reverse_order = True package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b...739b32a0ef7a7a02ec987b5c4a210b', sdist_dated_hash38='feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8') @mark_hashes_different @pytest.mark.parametrize("reverse_order", [False, True]) def test_pep517_sdist_time_hash_set_epoch( monkeypatch, reverse_order, package_simple_pyproject_ext ): dist = Path("dist") monkeypatch.setenv( "SOURCE_DATE_EPOCH", package_simple_pyproject_ext.source_date_epoch ) _each_unignored_file = _file_processor.each_unignored_file def each_unignored_file_ordered(*args, **kwargs): return sorted(_each_unignored_file(*args, **kwargs), reverse=reverse_order) monkeypatch.setattr( _file_processor, "each_unignored_file", each_unignored_file_ordered ) out = build_sdist(str(dist), {"sdist.reproducible": "true"}) sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_dated_hash E AssertionError: assert '15f7041621d7...c04ab21c73927' == 'feeedcb0070a...07348e40e44e8' E - feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8 E + 15f7041621d7c226964709546002e1a7b6755983f96daa3fa8bc04ab21c73927 /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/test_pyproject_pep517.py:143: AssertionError _____________________________________________________________________________________ test_pep660_wheel _____________________________________________________________________________________ @pytest.mark.compile() @pytest.mark.configure() @pytest.mark.xfail( sys.platform.startswith("cygwin"), strict=False, reason="No idea why this fails on Cygwin", ) @pytest.mark.usefixtures("package_simplest_c") def test_pep660_wheel(): dist = Path("dist") > out = build_editable("dist") /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/test_pyproject_pep660.py:21: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wheel_directory = 'dist', config_settings = None, metadata_directory = None def build_editable( wheel_directory: str, config_settings: dict[str, list[str] | str] | None = None, metadata_directory: str | None = None, ) -> str: from .._logging import rich_print from ..errors import FailedLiveProcessError from .wheel import _build_wheel_impl try: return _build_wheel_impl( wheel_directory, config_settings, metadata_directory, editable=True, ).wheel_filename except FailedLiveProcessError as err: sys.stdout.flush() rich_print(f"\n[red bold]*** {' '.join(err.args)}", file=sys.stderr) > raise SystemExit(1) from None E SystemExit: 1 /home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.4.5-2.fc35.x86_64/usr/lib/python3.8/site-packages/scikit_build_core/build/__init__.py:63: SystemExit ----------------------------------------------------------------------------------- Captured stdout call ------------------------------------------------------------------------------------ *** scikit-build-core 0.4.5 using CMake 3.26.4 (editable) *** Configuring CMake... loading initial cache file /tmp/tmpruqykj_k/build/CMakeInit.txt -- The C compiler identification is GNU 13.1.1 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/gcc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Could NOT find Python (missing: Interpreter Development.Module) (found version "..") -- Configuring incomplete, errors occurred! ----------------------------------------------------------------------------------- Captured stderr call ------------------------------------------------------------------------------------ 2023-06-12 13:47:44,596 - scikit_build_core - WARNING - No license files found, set wheel.license-files to [] to suppress this warning 2023-06-12 13:47:44,634 - scikit_build_core - WARNING - libdir/ldlibrary: /usr/lib64/libpython3.8.so is not a real file! 2023-06-12 13:47:44,634 - scikit_build_core - WARNING - Can't find a Python library, got libdir=/usr/lib64, ldlibrary=libpython3.8.so, multiarch=x86_64-linux-gnu, masd=None CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:706 (file): file STRINGS file "/usr/include/python3.8/patchlevel.h" cannot be read. Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:711 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:712 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:713 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:706 (file): file STRINGS file "/usr/include/python3.8/patchlevel.h" cannot be read. Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:711 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:712 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at /usr/share/cmake/Modules/FindPython/Support.cmake:713 (list): list GET given empty list Call Stack (most recent call first): /usr/share/cmake/Modules/FindPython/Support.cmake:3468 (_python_get_version) /usr/share/cmake/Modules/FindPython.cmake:591 (include) CMakeLists.txt:8 (find_package) CMake Error at CMakeLists.txt:10 (python_add_library): Unknown CMake command "python_add_library". *** CMake configuration failed ------------------------------------------------------------------------------------- Captured log call ------------------------------------------------------------------------------------- DEBUG scikit_build_core:_shutil.py:63 RUN: /usr/bin/cmake --version INFO scikit_build_core:program_search.py:84 CMake version: 3.26.4 INFO scikit_build_core:wheel.py:126 Build directory: /tmp/tmpruqykj_k/build WARNING scikit_build_core:wheel.py:159 No license files found, set wheel.license-files to [] to suppress this warning DEBUG scikit_build_core:builder.py:106 SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:builder.py:109 Extra SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:generator.py:69 Default generator: Unix Makefiles DEBUG scikit_build_core:_shutil.py:63 RUN: /usr/bin/ninja --version INFO scikit_build_core:program_search.py:107 Ninja version: 1.11.1 DEBUG scikit_build_core:generator.py:95 CMAKE_GENERATOR: Using ninja: /usr/bin/ninja WARNING scikit_build_core:sysconfig.py:68 libdir/ldlibrary: /usr/lib64/libpython3.8.so is not a real file! WARNING scikit_build_core:sysconfig.py:78 Can't find a Python library, got libdir=/usr/lib64, ldlibrary=libpython3.8.so, multiarch=x86_64-linux-gnu, masd=None DEBUG scikit_build_core:cmake.py:155 /tmp/tmpruqykj_k/build/CMakeInit.txt: set(SKBUILD [===[2]===] CACHE STRING "" FORCE) set(SKBUILD_CORE_VERSION [===[0.4.5]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_NAME [===[simplest]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_VERSION [===[0.0.1]===] CACHE STRING "" FORCE) set(PYTHON_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(PYTHON_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(Python3_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python3_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python3_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python3_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(SKBUILD_SOABI [===[cpython-38-x86_64-linux-gnu]===] CACHE STRING "" FORCE) set(SKBUILD_SABI_COMPONENT [===[]===] CACHE STRING "" FORCE) set(SKBUILD_PLATLIB_DIR [===[/tmp/tmpruqykj_k/wheel/platlib]===] CACHE PATH "" FORCE) set(SKBUILD_DATA_DIR [===[/tmp/tmpruqykj_k/wheel/data]===] CACHE PATH "" FORCE) set(SKBUILD_HEADERS_DIR [===[/tmp/tmpruqykj_k/wheel/headers]===] CACHE PATH "" FORCE) set(SKBUILD_SCRIPTS_DIR [===[/tmp/tmpruqykj_k/wheel/scripts]===] CACHE PATH "" FORCE) set(SKBUILD_NULL_DIR [===[/tmp/tmpruqykj_k/wheel/null]===] CACHE PATH "" FORCE) set(CMAKE_PREFIX_PATH [===[/usr/lib/python3.8/site-packages;/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.4.5-2.fc35.x86_64/usr/lib/python3.8/site-packages]===] CACHE PATH "" FORCE) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "BOTH" CACHE PATH "") DEBUG scikit_build_core:_shutil.py:60 RUNENV - changes since last run only: PYTEST_CURRENT_TEST=tests/test_pyproject_pep660.py::test_pep660_wheel (call) - SKBUILD_CMAKE_ARGS= - SKBUILD_CMAKE_DEFINE= DEBUG scikit_build_core:_shutil.py:63 RUN: /usr/bin/cmake -S. -B/tmp/tmpruqykj_k/build -C/tmp/tmpruqykj_k/build/CMakeInit.txt -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja ================================================================================== short test summary info ================================================================================== SKIPPED [1] tests/test_builder.py:66: MSVC only SKIPPED [1] tests/test_dynamic_metadata.py:117: install hatch-fancy-pypi-readme and setuptools-scm to test the dynamic metadata plugins SKIPPED [1] tests/test_fortran.py:27: gfortran not available SKIPPED [1] tests/test_program_search.py:17: could not import 'cmake': No module named 'cmake' SKIPPED [1] tests/test_program_search.py:26: could not import 'ninja': No module named 'ninja' SKIPPED [1] tests/test_pyproject_pep517.py:242: Doesn't work yet XPASS tests/test_builder.py::test_get_python_library Doesn't matter if this fails, usually not used ERROR tests/test_dynamic_metadata.py::test_pep517_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero ex... ERROR tests/test_pyproject_abi3.py::test_abi3_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_abi3_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit... ERROR tests/test_pyproject_pep517.py::test_pep517_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero ex... ERROR tests/test_pyproject_pep517.py::test_pep517_wheel_source_dir - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel_source_dir0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned ... ERROR tests/test_setuptools_abi3.py::test_abi3_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_abi3_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit... ERROR tests/test_setuptools_pep517.py::test_pep517_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel2/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero ex... ERROR tests/test_setuptools_pep517.py::test_pep517_mixed_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_mixed_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-z... ERROR tests/test_simplest_c.py::test_pep517_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel3/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero ex... ERROR tests/test_simplest_c.py::test_pep517_wheel_incexl - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-2/test_pep517_wheel_incexl0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-... FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_hash - AssertionError: assert '1f7448eb0386...ff3affeb25c4a' == 'cbf3102cf86f...6d9bad96660b3' FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[False] - AssertionError: assert '15f7041621d7...c04ab21c73927' == 'feeedcb0070a...07348e40e44e8' FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[True] - AssertionError: assert '15f7041621d7...c04ab21c73927' == 'feeedcb0070a...07348e40e44e8' FAILED tests/test_pyproject_pep660.py::test_pep660_wheel - SystemExit: 1 ======================================================= 4 failed, 98 passed, 6 skipped, 11 deselected, 1 xpassed, 9 errors in 12.01s ======================================================== ```

and with -m "isolated"

```console + /usr/bin/pytest -ra -m 'not network' -m isolated ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.8.17, pytest-7.3.1, pluggy-1.0.0 installed packages of interest: build==0.10.0 packaging==23.1 pathspec==0.11.1 pip==23.1.2 pyproject_metadata==0.7.1 scikit_build_core==0.4.5 setuptools==67.7.2 wheel==0.40.0 sysconfig platform: linux-x86_64 rootdir: /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5 configfile: pyproject.toml testpaths: tests plugins: subprocess-1.5.0 collected 129 items / 118 deselected / 11 selected tests/test_custom_modules.py E [ 9%] tests/test_pyproject_pep518.py FEEEEE [ 63%] tests/test_pyproject_pep660.py EE [ 81%] tests/test_setuptools_pep518.py EE [100%] ========================================================================================== ERRORS =========================================================================================== _________________________________________________________________________________ ERROR at setup of test_ep _________________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/test_ep0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-1/test_ep0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_ep0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ----------------------------------------------------------------------------------- Captured stdout setup ----------------------------------------------------------------------------------- Processing /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5 Installing build dependencies: started Installing build dependencies: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Preparing metadata (pyproject.toml): started Preparing metadata (pyproject.toml): finished with status 'done' Collecting exceptiongroup (from scikit_build_core==0.4.5) Using cached exceptiongroup-1.1.1-py3-none-any.whl (14 kB) Collecting importlib-resources>=1.3 (from scikit_build_core==0.4.5) Using cached importlib_resources-5.12.0-py3-none-any.whl (36 kB) Collecting packaging>=20.9 (from scikit_build_core==0.4.5) Using cached packaging-23.1-py3-none-any.whl (48 kB) Collecting tomli>=1.1 (from scikit_build_core==0.4.5) Using cached tomli-2.0.1-py3-none-any.whl (12 kB) Collecting pathspec>=0.10.1 (from scikit_build_core==0.4.5) Using cached pathspec-0.11.1-py3-none-any.whl (29 kB) Collecting pyproject-metadata>=0.5 (from scikit_build_core==0.4.5) Using cached pyproject_metadata-0.7.1-py3-none-any.whl (7.4 kB) Collecting zipp>=3.1.0 (from importlib-resources>=1.3->scikit_build_core==0.4.5) Using cached zipp-3.15.0-py3-none-any.whl (6.8 kB) Saved /tmp/pytest-of-tkloczko/pytest-1/wheelhouse0/importlib_resources-5.12.0-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-1/wheelhouse0/packaging-23.1-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-1/wheelhouse0/pathspec-0.11.1-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-1/wheelhouse0/pyproject_metadata-0.7.1-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-1/wheelhouse0/tomli-2.0.1-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-1/wheelhouse0/exceptiongroup-1.1.1-py3-none-any.whl Saved /tmp/pytest-of-tkloczko/pytest-1/wheelhouse0/zipp-3.15.0-py3-none-any.whl Building wheels for collected packages: scikit_build_core Building wheel for scikit_build_core (pyproject.toml): started Building wheel for scikit_build_core (pyproject.toml): finished with status 'done' Created wheel for scikit_build_core: filename=scikit_build_core-0.4.5-py3-none-any.whl size=116633 sha256=a7cae45c7345cf34d293226cdcd891a04c4707a2c044cc2e8bf51ad0d0211915 Stored in directory: /home/tkloczko/.cache/pip/wheels/f5/9e/f4/750bd22e2a860023899f07cd2a30e1f3a65958d3441b9d9068 Successfully built scikit_build_core ____________________________________________________________________ ERROR at setup of test_pep518_wheel[sdist_to_wheel] ____________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel_sdist_to_whe0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel_sdist_to_whe0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel_sdist_to_whe0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ____________________________________________________________________ ERROR at setup of test_pep518_wheel[wheel_directly] ____________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel_wheel_direct0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel_wheel_direct0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel_wheel_direct0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ______________________________________________________________ ERROR at setup of test_pep518_rebuild_build_dir[sdist_to_wheel] ______________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/test_pep518_rebuild_build_dir_0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_rebuild_build_dir_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_rebuild_build_dir_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ______________________________________________________________ ERROR at setup of test_pep518_rebuild_build_dir[wheel_directly] ______________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/test_pep518_rebuild_build_dir_1'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_rebuild_build_dir_1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_rebuild_build_dir_1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________________ ERROR at setup of test_pep518_pip _____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/test_pep518_pip0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_pip0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_pip0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________ ERROR at setup of test_pep660_pip_isolated[True] ______________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/test_pep660_pip_isolated_True_0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-1/test_pep660_pip_isolated_True_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep660_pip_isolated_True_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________ ERROR at setup of test_pep660_pip_isolated[False] _____________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/test_pep660_pip_isolated_False0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-1/test_pep660_pip_isolated_False0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep660_pip_isolated_False0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ____________________________________________________________________________ ERROR at setup of test_pep518_wheel ____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel0'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________________________________________________________________ ERROR at setup of test_pep518_pip _____________________________________________________________________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/test_pep518_pip1'), pep518_wheelhouse = PosixPath('/tmp/pytest-of-tkloczko/pytest-1/wheelhouse0') @pytest.fixture() def isolated(tmp_path: Path, pep518_wheelhouse: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path, wheelhouse=pep518_wheelhouse) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:171: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_pip1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],), kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_pip1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ========================================================================================= FAILURES ========================================================================================== _____________________________________________________________________________________ test_pep518_sdist _____________________________________________________________________________________ package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b...739b32a0ef7a7a02ec987b5c4a210b', sdist_dated_hash38='feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8') @pytest.mark.isolated() @pytest.mark.integration() def test_pep518_sdist(package_simple_pyproject_ext): correct_metadata = textwrap.dedent( """\ Metadata-Version: 2.1 Name: cmake-example Version: 0.0.1 Requires-Python: >=3.7 Provides-Extra: test Requires-Dist: pytest>=6.0; extra == "test" """ ) > subprocess.run([sys.executable, "-m", "build", "--sdist"], check=True) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.5/tests/test_pyproject_pep518.py:27: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True, popenargs = (['/usr/bin/python3', '-m', 'build', '--sdist'],), kwargs = {} process = , stdout = None, stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'build', '--sdist']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ----------------------------------------------------------------------------------- Captured stdout call ------------------------------------------------------------------------------------ * Creating venv isolated environment... ERROR Failed to create venv. Maybe try installing virtualenv. Command '/tmp/build-env-k5v84qhj/bin/python3 -Im ensurepip --upgrade --default-pip' failed with return code 1 stdout: Traceback (most recent call last): File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main mod_name, mod_spec, code = _get_module_details(mod_name, _Error) File "/usr/lib64/python3.8/runpy.py", line 144, in _get_module_details return _get_module_details(pkg_main_name, error) File "/usr/lib64/python3.8/runpy.py", line 111, in _get_module_details __import__(pkg_name) File "/usr/lib64/python3.8/ensurepip/__init__.py", line 29, in _SETUPTOOLS_VERSION = _get_most_recent_wheel_version("setuptools") File "/usr/lib64/python3.8/ensurepip/__init__.py", line 26, in _get_most_recent_wheel_version return str(max(_wheels[pkg], key=distutils.version.LooseVersion)) ValueError: max() arg is an empty sequence ================================================================================== short test summary info ================================================================================== ERROR tests/test_custom_modules.py::test_ep - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_ep0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. ERROR tests/test_pyproject_pep518.py::test_pep518_wheel[sdist_to_wheel] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel_sdist_to_whe0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returne... ERROR tests/test_pyproject_pep518.py::test_pep518_wheel[wheel_directly] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel_wheel_direct0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returne... ERROR tests/test_pyproject_pep518.py::test_pep518_rebuild_build_dir[sdist_to_wheel] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_rebuild_build_dir_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returne... ERROR tests/test_pyproject_pep518.py::test_pep518_rebuild_build_dir[wheel_directly] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_rebuild_build_dir_1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returne... ERROR tests/test_pyproject_pep518.py::test_pep518_pip - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_pip0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit... ERROR tests/test_pyproject_pep660.py::test_pep660_pip_isolated[True] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep660_pip_isolated_True_0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returne... ERROR tests/test_pyproject_pep660.py::test_pep660_pip_isolated[False] - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep660_pip_isolated_False0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returne... ERROR tests/test_setuptools_pep518.py::test_pep518_wheel - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero ex... ERROR tests/test_setuptools_pep518.py::test_pep518_pip - subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-1/test_pep518_pip1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit... FAILED tests/test_pyproject_pep518.py::test_pep518_sdist - subprocess.CalledProcessError: Command '['/usr/bin/python3', '-m', 'build', '--sdist']' returned non-zero exit status 1. ======================================================================= 1 failed, 118 deselected, 10 errors in 8.56s ======================================================================== ```
LecrisUT commented 1 year ago

This is odd, I double-checked and indeed on copr the internet connection is disabled, but we don't see the same issues.

Let's navigate test_dynamic_metadata.test_pep517_wheel https://github.com/scikit-build/scikit-build-core/blob/cf8b29449f1ff44e453a98c0ced3018811483b7f/tests/test_dynamic_metadata.py#L226-L229 This one is run on Fedora (reference) and passes, so it should also create the test_fixture virtualenv which seems to be the problematic part here.

In the VEnv constructor https://github.com/scikit-build/scikit-build-core/blob/cf8b29449f1ff44e453a98c0ced3018811483b7f/tests/conftest.py#L83-L84 it calls the EnvBuilder constructor, which in your Python 3.8 distro seems to be calling self._setup_pip(context) which in turn calls the problematic pip upgrade.


Other than that are are other concerning test failures like tests/test_pyproject_pep517.py::test_pep517_sdist_hash, which I thought we have solved here. test_pyproject_pep660.py::test_pep660_wheel is another puzzling one.


So can you also output the virtualenv version that was used there? Probably this is solved in a specific version of virtualenv that needs to be requested. And we need more information on the OS you are developing to see what is different from the Fedora packaging and figure out if the fix should be on the spec file side or built-in.

henryiii commented 1 year ago

We are using venv for testing in scikit-build-core, while I used virtualenv in scikit-build. I might need to move scikit-build-core to virtualenv, too.

I'd expect any use of virtualenv (the fixture, not the package) to prefer the network due to the upgrade, though it could be that "--upgrade" is a no-op if there's no network, but not on older versions of Python? What version of Python are you (@LecrisUT) testing on?

I think virtualenv doesn't auto-upgrade and instead bundles what it needs.

LecrisUT commented 1 year ago

What version of Python are you (@LecrisUT) testing on?

Python 3.11. Should be the same on supported fedora coprs. (Surprised there are no other test failures that made us only build for fedora 38 and higher).

We are using venv for testing in scikit-build-core, while I used virtualenv in scikit-build.

Are these different packages (pyenv vs virtualenv?). Isn't one of them deprecated in favor of the other? I think the current documentation is to use python3 -m venv (which is from pyenv?).

henryiii commented 1 year ago

Are these different packages

venv is part of the Python standard library (sometimes broken out by distro packaging, but it's part of the stdlib), while virtualenv is a package on PyPI. virtualenv is faster and up-to-date, since it's not tied to Python's release cycle. It also fixes issues while venv requires a Python update to fix anything.

kloczek commented 1 year ago

FYI: I'm working on Linux/Solaris distribution which provides set of packaged python modules. I'm not interested to test anything against downloaded from pypi .whl archives but to test whatever is packaged against exactly that set of modules. I saw many times that something tested using evnv/tox against pypi where working and have been failing on use. So far have packaged +1150 python modules and with few minor exceptions everything is consistent. This is why exactly I'm using ONLY pytest to test anything. In such case using pip to update modules wold cause more harm than positive results.

I've reported fails and set of modules installed in build env during package your module. In such env are installed only components which are NEEDED by build/install/test procedures and nothing more. Using in such condition venv/tox/etc would be waste of time/resources.

Did you try to have a look on list of installed in build env modules and/or try to reproduce that issue? 🤔

LecrisUT commented 1 year ago

In such case using pip to update modules wold cause more harm than positive results.

We do not explicitly call, NOR do we want to call pip upgrade (see my traceback breakdown). This is a wrong implementation of venv, somewhere between 3.8 (or earlier) and 3.11, where the constructor itself automatically calls pip upgrade. Presumably this commit allows us to ignore the actual pip upgrade, but it looks like it is only introduced in 3.11 (or maybe 3.4?). Maybe this was fixed before that, but it is hard to tell. Again, we are not relying on pip upgrade for the pytests to succeed, and we are trying to disable downloading/updateing packages see:

https://github.com/scikit-build/scikit-build-core/blob/cf8b29449f1ff44e453a98c0ced3018811483b7f/tests/conftest.py#L126

(Shouldn't this be moved to the constructor @henryiii? But if virtualenv can do a better job :thinking:)

Using in such condition venv/tox/etc would be waste of time/resources.

No, because people will want to do pytest in their local environment outside a CI environment. If a venv is not created, we would be installing random test packages wherever they are running pytest, which is absolutely a bad approach. This is a build system, so naturally we are touching the installation process in one test or another.

In such env are installed only components which are NEEDED by build/install/test procedures and nothing more.

Yes, that is normally handled by the pytest environment, which is evident in that Fedora does not run pip upgrade (the copr environment does not have internet access and the tests run without an issue for Fedora).

Did you try to have a look on list of installed in build env modules and/or try to reproduce that issue? :thinking:

That is why I was asking for the .spec file and OS environment so I could reproduce and investigate what differences there are. Solaris is not available in mock, but probably it uses oracle-linux as its base?

kloczek commented 1 year ago

Again this issue has nothing to with rpm. Here is my spec

# BUG: sphinx warnings https://github.com/scikit-build/scikit-build-core/issues/369
%bcond_with     failing_tests   # By default skip some failing test units

Summary:        Build backend for CMake based projects
Name:           python-scikit-build-core
Version:        0.4.5
Release:        2%{?dist}
License:        Apache-2.0 (https://spdx.org/licenses/Apache-2.0.html)
URL:            https://pypi.org/project/scikit-build-core/
VCS:            https://github.com/scikit-build/scikit-build-core/
Source:         %{VCS}/archive/v%{version}/%{name}-%{version}.tar.gz
Patch:          %{name}-add_module_path_in_conf.py.patch
Patch:          %{name}-man3_level.patch
BuildArch:      noarch
BuildRequires:  cmake
BuildRequires:  ninja-build
BuildRequires:  python3dist(build)
BuildRequires:  python3dist(hatch-vcs)
BuildRequires:  python3dist(hatchling)
BuildRequires:  python3dist(installer)
BuildRequires:  python3dist(myst-parser)
BuildRequires:  python3dist(sphinx)
BuildRequires:  python3dist(sphinx-copybutton)
BuildRequires:  python3dist(sphinx-inline-tabs)
BuildRequires:  python3dist(wheel)
# ChcekRequires:
BuildRequires:  gcc
BuildRequires:  gcc-c++
#BuildRequires: python3dist(cmake)
#BuildRequires: python3dist(ninja)
BuildRequires:  python3dist(cattrs)
BuildRequires:  python3dist(importlib-resources)
BuildRequires:  python3dist(numpy)
BuildRequires:  python3dist(pip)
BuildRequires:  python3dist(pyproject-metadata)
BuildRequires:  python3dist(pytest)
BuildRequires:  python3dist(pytest-subprocess)
Obsoletes:      python3-scikit-build-core

%description
A next generation Python CMake adaptor and Python API for plugins.

%prep
%autosetup -p1 -n scikit-build-core-%{version}

%build
%pyproject_wheel
%sphinx_build_man

%install
%pyproject_install

%__install -Dm644 build/sphinx/man/*.3 -t %{buildroot}%{_mandir}/man3

%check
%pytest -m "isolated" %{!?with_failing_tests: \
        --deselect tests/test_custom_modules.py::test_ep \
        --deselect tests/test_dynamic_metadata.py::test_pep517_wheel \
        --deselect tests/test_pyproject_abi3.py::test_abi3_wheel \
        --deselect tests/test_pyproject_pep517.py::test_pep517_sdist_hash \
        --deselect tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[False] \
        --deselect tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[True] \
        --deselect tests/test_pyproject_pep517.py::test_pep517_wheel \
        --deselect tests/test_pyproject_pep517.py::test_pep517_wheel_source_dir \
        --deselect tests/test_pyproject_pep518.py::test_pep518_pip \
        --deselect tests/test_pyproject_pep518.py::test_pep518_rebuild_build_dir[sdist_to_wheel] \
        --deselect tests/test_pyproject_pep518.py::test_pep518_rebuild_build_dir[wheel_directly] \
        --deselect tests/test_pyproject_pep518.py::test_pep518_sdist \
        --deselect tests/test_pyproject_pep518.py::test_pep518_wheel[sdist_to_wheel] \
        --deselect tests/test_pyproject_pep518.py::test_pep518_wheel[wheel_directly] \
        --deselect tests/test_pyproject_pep660.py::test_pep660_pip_isolated[False] \
        --deselect tests/test_pyproject_pep660.py::test_pep660_pip_isolated[True] \
        --deselect tests/test_pyproject_pep660.py::test_pep660_wheel \
        --deselect tests/test_setuptools_abi3.py::test_abi3_wheel \
        --deselect tests/test_setuptools_pep517.py::test_pep517_mixed_wheel \
        --deselect tests/test_setuptools_pep517.py::test_pep517_wheel \
        --deselect tests/test_setuptools_pep518.py::test_pep518_pip \
        --deselect tests/test_setuptools_pep518.py::test_pep518_wheel \
        --deselect tests/test_simplest_c.py::test_pep517_wheel \
        --deselect tests/test_simplest_c.py::test_pep517_wheel_incexl \
}

%files
%{_mandir}/man3/*
%{python3_sitelib}/scikit_build_core
%{python3_sitelib}/scikit_build_core-*.*-info
LecrisUT commented 1 year ago

I have tried to investigate solaris and it just seems to be a huge rabbit-hole. I get the gist that solaris is a closed-sourced OS that doesn't use rpms. But then I don't understand the build setup you have with RPMBUILD. If you meant oracle-linux, than that one is different and that one follows RHEL distribution and I can reproduce the environment if you can share the oracle-linux version as well.

That information is important to address tests/test_pyproject_pep517.py::test_pep517_sdist_hash, which I am 90% sure it is fully RPM related. (Check the previous comments about that test for more context)

If you can't share the OS environment, at least share a link to the full build.log. My suspicion is that your OS is using a different non-standard environment variable to set the build date.

kloczek commented 1 year ago

Oracle Solaris is not only Solaris version. Please try to have look on OIpenSolaris derivates like OmniOS.

henryiii commented 1 year ago
%pytest -m "isolated"

Shouldn't that be %pytest -m "not isolated"? The isolated tests require a network to setup (they build from a collection of wheels downloaded from the network). Isolated in this case means PEP 517 build isolation.

kloczek commented 1 year ago

Shouldn't that be %pytest -m "not isolated"?

I'm not interested to test anything against modules installed out of .whl archives downloaded from pypi.

henryiii commented 1 year ago

That’s exactly what isolated does. So don’t you want not isolated?

kloczek commented 1 year ago

On my devel system I'm able to reach public network however prod build system is intentionally cut off from access to public network.

henryiii commented 1 year ago

Next release will have a network marker. But for now, “isolated” refers to setting up an isolated virtual environment and testing modules installed out of .whl archives downloaded from pypi. So -m isolated will only run the isolated environment tests. It was called pep518 originally, but using peps for naming is discouraged.

kloczek commented 1 year ago

Perfect. Thank you 😄 👍

kloczek commented 1 year ago

Just tested 0.4.6 and still I see 3 failing units

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.4.6-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.4.6-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' ============================= test session starts ============================== platform linux -- Python 3.8.17, pytest-7.4.0, pluggy-1.0.0 installed packages of interest: build==0.10.0 packaging==23.1 pathspec==0.11.1 pip==23.1.2 pyproject_metadata==0.7.1 scikit_build_core==0.4.6 setuptools==68.0.0 wheel==0.40.0 sysconfig platform: linux-x86_64 rootdir: /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6 configfile: pyproject.toml testpaths: tests plugins: subprocess-1.5.0 collected 132 items / 12 deselected / 120 selected tests/test_builder.py .........xs......... [ 16%] tests/test_cmake_config.py .... [ 20%] tests/test_dynamic_metadata.py .s.....E [ 26%] tests/test_file_processor.py . [ 27%] tests/test_fileapi.py .... [ 30%] tests/test_generator_default.py ... [ 33%] tests/test_get_requires.py ....... [ 39%] tests/test_logging.py .. [ 40%] tests/test_module_dir.py .. [ 42%] tests/test_name_main.py ... [ 45%] tests/test_prepare_metadata.py .. [ 46%] tests/test_process_scripts.py . [ 47%] tests/test_program_search.py ss... [ 51%] tests/test_pyproject_abi3.py E [ 52%] tests/test_pyproject_extra_dirs.py .. [ 54%] tests/test_pyproject_pep517.py .F..FFEEs. [ 62%] tests/test_pyproject_pep660.py . [ 63%] tests/test_settings.py ....................... [ 82%] tests/test_setuptools_abi3.py E [ 83%] tests/test_setuptools_pep517.py .EE [ 85%] tests/test_shutil.py ... [ 88%] tests/test_simple_pure.py ... [ 90%] tests/test_simplest_c.py .EE [ 93%] tests/test_skbuild_settings.py ...... [ 98%] tests/test_wheelfile_utils.py .. [100%] ==================================== ERRORS ==================================== _____________________ ERROR at setup of test_pep517_wheel ______________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ______________________ ERROR at setup of test_abi3_wheel _______________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-26/test_abi3_wheel0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-26/test_abi3_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-26/test_abi3_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________ ERROR at setup of test_pep517_wheel ______________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel1') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ________________ ERROR at setup of test_pep517_wheel_source_dir ________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel_source_dir0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel_source_dir0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel_source_dir0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError ______________________ ERROR at setup of test_abi3_wheel _______________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-26/test_abi3_wheel1') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-26/test_abi3_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-26/test_abi3_wheel1/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________ ERROR at setup of test_pep517_wheel ______________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel2') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel2/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel2/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError __________________ ERROR at setup of test_pep517_mixed_wheel ___________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-26/test_pep517_mixed_wheel0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_mixed_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_mixed_wheel0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError _____________________ ERROR at setup of test_pep517_wheel ______________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel3') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel3/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel3/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError __________________ ERROR at setup of test_pep517_wheel_incexl __________________ tmp_path = PosixPath('/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel_incexl0') @pytest.fixture() def virtualenv(tmp_path: Path) -> Generator[VEnv, None, None]: path = tmp_path / "venv" try: > yield VEnv(path) tests/conftest.py:180: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/conftest.py:94: in __init__ self.create(env_dir) /usr/lib64/python3.8/venv/__init__.py:68: in create self._setup_pip(context) /usr/lib64/python3.8/venv/__init__.py:289: in _setup_pip subprocess.check_output(cmd, stderr=subprocess.STDOUT) /usr/lib64/python3.8/subprocess.py:415: in check_output return run(*popenargs, stdout=PIPE, timeout=timeout, check=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ input = None, capture_output = False, timeout = None, check = True popenargs = (['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel_incexl0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip'],) kwargs = {'stderr': -2, 'stdout': -1} process = stdout = b'Traceback (most recent call last):\n File "/usr/lib64/python3.8/runpy.py", line 185, in _run_module_as_main\n mo...n\n return str(max(_wheels[pkg], key=distutils.version.LooseVersion))\nValueError: max() arg is an empty sequence\n' stderr = None, retcode = 1 def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): """Run command with arguments and return a CompletedProcess instance. The returned instance will have attributes args, returncode, stdout and stderr. By default, stdout and stderr are not captured, and those attributes will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them. If check is True and the exit code was non-zero, it raises a CalledProcessError. The CalledProcessError object will have the return code in the returncode attribute, and output & stderr attributes if those streams were captured. If timeout is given, and the process takes too long, a TimeoutExpired exception will be raised. There is an optional argument "input", allowing you to pass bytes or a string to the subprocess's stdin. If you use this argument you may not also use the Popen constructor's "stdin" argument, as it will be used internally. By default, all communication is in bytes, and therefore any "input" should be bytes, and the stdout and stderr will be bytes. If in text mode, any "input" should be a string, and stdout and stderr will be strings decoded according to locale encoding, or by "encoding" if set. Text mode is triggered by setting any of text, encoding, errors or universal_newlines. The other arguments are the same as for the Popen constructor. """ if input is not None: if kwargs.get('stdin') is not None: raise ValueError('stdin and input arguments may not both be used.') kwargs['stdin'] = PIPE if capture_output: if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None: raise ValueError('stdout and stderr arguments may not be used ' 'with capture_output.') kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE with Popen(*popenargs, **kwargs) as process: try: stdout, stderr = process.communicate(input, timeout=timeout) except TimeoutExpired as exc: process.kill() if _mswindows: # Windows accumulates the output in a single blocking # read() call run on child threads, with the timeout # being done in a join() on those threads. communicate() # _after_ kill() is required to collect that and add it # to the exception. exc.stdout, exc.stderr = process.communicate() else: # POSIX _communicate already populated the output so # far into the TimeoutExpired exception. process.wait() raise except: # Including KeyboardInterrupt, communicate handled that. process.kill() # We don't call process.wait() as .__exit__ does that for us. raise retcode = process.poll() if check and retcode: > raise CalledProcessError(retcode, process.args, output=stdout, stderr=stderr) E subprocess.CalledProcessError: Command '['/tmp/pytest-of-tkloczko/pytest-26/test_pep517_wheel_incexl0/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1. /usr/lib64/python3.8/subprocess.py:516: CalledProcessError =================================== FAILURES =================================== ____________________________ test_pep517_sdist_hash ____________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f183699d970> package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b...739b32a0ef7a7a02ec987b5c4a210b', sdist_dated_hash38='feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8') @mark_hashes_different def test_pep517_sdist_hash(monkeypatch, package_simple_pyproject_ext): # Unset SOURCE_DATE_EPOCH in order to guarantee the hash match monkeypatch.delenv("SOURCE_DATE_EPOCH", raising=False) dist = Path("dist") out = build_sdist("dist") sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_hash E AssertionError: assert '1f7448eb0386...ff3affeb25c4a' == 'cbf3102cf86f...6d9bad96660b3' E - cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b3 E + 1f7448eb0386671773e8952d0209f34ffe36e7203a9873e73b3ff3affeb25c4a /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/test_pyproject_pep517.py:75: AssertionError _________________ test_pep517_sdist_time_hash_set_epoch[False] _________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f18368375b0> reverse_order = False package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b...739b32a0ef7a7a02ec987b5c4a210b', sdist_dated_hash38='feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8') @mark_hashes_different @pytest.mark.parametrize("reverse_order", [False, True]) def test_pep517_sdist_time_hash_set_epoch( monkeypatch, reverse_order, package_simple_pyproject_ext ): dist = Path("dist") monkeypatch.setenv( "SOURCE_DATE_EPOCH", package_simple_pyproject_ext.source_date_epoch ) _each_unignored_file = _file_processor.each_unignored_file def each_unignored_file_ordered(*args, **kwargs): return sorted(_each_unignored_file(*args, **kwargs), reverse=reverse_order) monkeypatch.setattr( _file_processor, "each_unignored_file", each_unignored_file_ordered ) out = build_sdist(str(dist), {"sdist.reproducible": "true"}) sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_dated_hash E AssertionError: assert '15f7041621d7...c04ab21c73927' == 'feeedcb0070a...07348e40e44e8' E - feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8 E + 15f7041621d7c226964709546002e1a7b6755983f96daa3fa8bc04ab21c73927 /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/test_pyproject_pep517.py:143: AssertionError _________________ test_pep517_sdist_time_hash_set_epoch[True] __________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f183674c100> reverse_order = True package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='cbf3102cf86f709dfd3f244b69e5ee3faff9e3c94c53ef85f146d9bad96660b...739b32a0ef7a7a02ec987b5c4a210b', sdist_dated_hash38='feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8') @mark_hashes_different @pytest.mark.parametrize("reverse_order", [False, True]) def test_pep517_sdist_time_hash_set_epoch( monkeypatch, reverse_order, package_simple_pyproject_ext ): dist = Path("dist") monkeypatch.setenv( "SOURCE_DATE_EPOCH", package_simple_pyproject_ext.source_date_epoch ) _each_unignored_file = _file_processor.each_unignored_file def each_unignored_file_ordered(*args, **kwargs): return sorted(_each_unignored_file(*args, **kwargs), reverse=reverse_order) monkeypatch.setattr( _file_processor, "each_unignored_file", each_unignored_file_ordered ) out = build_sdist(str(dist), {"sdist.reproducible": "true"}) sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_dated_hash E AssertionError: assert '15f7041621d7...c04ab21c73927' == 'feeedcb0070a...07348e40e44e8' E - feeedcb0070a211d93b967fe083aa31e448842eb9b93d5e428807348e40e44e8 E + 15f7041621d7c226964709546002e1a7b6755983f96daa3fa8bc04ab21c73927 /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.4.6/tests/test_pyproject_pep517.py:143: AssertionError =========================== short test summary info ============================ SKIPPED [1] tests/test_builder.py:66: MSVC only SKIPPED [1] tests/test_dynamic_metadata.py:117: install hatch-fancy-pypi-readme and setuptools-scm to test the dynamic metadata plugins SKIPPED [1] tests/test_program_search.py:17: could not import 'cmake': No module named 'cmake' SKIPPED [1] tests/test_program_search.py:26: could not import 'ninja': No module named 'ninja' SKIPPED [1] tests/test_pyproject_pep517.py:242: Doesn't work yet XFAIL tests/test_builder.py::test_get_python_library - Doesn't matter if this fails, usually not used ERROR tests/test_dynamic_metadata.py::test_pep517_wheel - subprocess.CalledPr... ERROR tests/test_pyproject_abi3.py::test_abi3_wheel - subprocess.CalledProces... ERROR tests/test_pyproject_pep517.py::test_pep517_wheel - subprocess.CalledPr... ERROR tests/test_pyproject_pep517.py::test_pep517_wheel_source_dir - subproce... ERROR tests/test_setuptools_abi3.py::test_abi3_wheel - subprocess.CalledProce... ERROR tests/test_setuptools_pep517.py::test_pep517_wheel - subprocess.CalledP... ERROR tests/test_setuptools_pep517.py::test_pep517_mixed_wheel - subprocess.C... ERROR tests/test_simplest_c.py::test_pep517_wheel - subprocess.CalledProcessE... ERROR tests/test_simplest_c.py::test_pep517_wheel_incexl - subprocess.CalledP... FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_hash - AssertionErro... FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[False] FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[True] = 3 failed, 102 passed, 5 skipped, 12 deselected, 1 xfailed, 9 errors in 12.07s = /usr/lib/python3.8/site-packages/_pytest/pathlib.py:95: PytestWarning: (rm_rf) error removing /tmp/pytest-of-tkloczko/garbage-20d957e9-541a-4547-8888-b6c43e4af0f0/test_rmtree_errorhandler_rerai0 : [Errno 39] Directory not empty: 'test_rmtree_errorhandler_rerai0' warnings.warn( /usr/lib/python3.8/site-packages/_pytest/pathlib.py:95: PytestWarning: (rm_rf) error removing /tmp/pytest-of-tkloczko/garbage-20d957e9-541a-4547-8888-b6c43e4af0f0/test_rmtree_errorhandler_reado0 : [Errno 39] Directory not empty: 'test_rmtree_errorhandler_reado0' warnings.warn( /usr/lib/python3.8/site-packages/_pytest/pathlib.py:95: PytestWarning: (rm_rf) error removing /tmp/pytest-of-tkloczko/garbage-20d957e9-541a-4547-8888-b6c43e4af0f0/test_safe_delete_no_perms0 : [Errno 39] Directory not empty: 'test_safe_delete_no_perms0' warnings.warn( /usr/lib/python3.8/site-packages/_pytest/pathlib.py:95: PytestWarning: (rm_rf) error removing /tmp/pytest-of-tkloczko/garbage-20d957e9-541a-4547-8888-b6c43e4af0f0/test_safe_set_no_perms0 : [Errno 39] Directory not empty: 'test_safe_set_no_perms0' warnings.warn( /usr/lib/python3.8/site-packages/_pytest/pathlib.py:95: PytestWarning: (rm_rf) error removing /tmp/pytest-of-tkloczko/garbage-20d957e9-541a-4547-8888-b6c43e4af0f0/test_safe_get_no_perms0 : [Errno 39] Directory not empty: 'test_safe_get_no_perms0' warnings.warn( /usr/lib/python3.8/site-packages/_pytest/pathlib.py:95: PytestWarning: (rm_rf) error removing /tmp/pytest-of-tkloczko/garbage-20d957e9-541a-4547-8888-b6c43e4af0f0 : [Errno 39] Directory not empty: '/tmp/pytest-of-tkloczko/garbage-20d957e9-541a-4547-8888-b6c43e4af0f0' warnings.warn( ```

On first look it looks like those units are trying to upgrade something.

henryiii commented 1 year ago

I think #371 might be needed to fix those last three tests. I just need to figure out why there's sometimes an unfinished process in that PR.

kloczek commented 1 year ago

Do you want me to test this PR? 🤔

kloczek commented 11 months ago

Just updated to 0.5.1 and looks like I made some progress after add few .whl files to build env and pybind11 cmake module. However now looks like now some cmake commands are failing because they are expecting pybind11 header files in python sitelib instead in /usr/include where pybind11 installs those files.. Here is update pytest output:

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' ============================= test session starts ============================== platform linux -- Python 3.8.18, pytest-7.4.2, pluggy-1.3.0 installed packages of interest: build==1.0.3 cattrs==22.2.0 exceptiongroup==1.1.3 fastjsonschema==2.18.0 importlib-metadata==6.8.0 importlib-resources==6.1.0 myst-parser==2.0.0 numpy==1.24.4 packaging==23.1 pathspec==0.11.2 pip==23.2.1 pybind11==2.11.1 pyproject-metadata==0.7.1 pytest==7.4.2 pytest-subprocess==1.5.0 scikit_build_core==0.5.1 setuptools==68.2.2 setuptools-scm==8.0.3 sphinx==7.0.1 sphinx-autodoc-typehints==1.24.0 sphinx-copybutton==0.5.1 sphinx-inline-tabs==2023.4.21 sphinx-jsonschema==1.19.0 tomli==2.0.1 typing-extensions==4.8.0 validate-pyproject==0.14 wheel==0.41.1 sysconfig platform: linux-x86_64 rootdir: /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.5.1 configfile: pyproject.toml testpaths: tests plugins: subprocess-1.5.0 collected 190 items / 15 deselected / 175 selected tests/test_builder.py .........xs......... [ 11%] tests/test_cmake_config.py .... [ 13%] tests/test_dynamic_metadata.py .s........ [ 19%] tests/test_file_processor.py . [ 20%] tests/test_fileapi.py .... [ 22%] tests/test_generator_default.py ... [ 24%] tests/test_get_requires.py ........ [ 28%] tests/test_json_schema.py ........ [ 33%] tests/test_logging.py ... [ 34%] tests/test_module_dir.py .. [ 36%] tests/test_name_main.py ... [ 37%] tests/test_prepare_metadata.py .. [ 38%] tests/test_process_scripts.py . [ 39%] tests/test_program_search.py ss... [ 42%] tests/test_pyproject_abi3.py . [ 42%] tests/test_pyproject_extra_dirs.py .. [ 44%] tests/test_pyproject_pep517.py .F..FFFFs. [ 49%] tests/test_pyproject_pep660.py . [ 50%] tests/test_schema.py ............................... [ 68%] tests/test_settings.py ................................ [ 86%] tests/test_setuptools_abi3.py . [ 86%] tests/test_setuptools_pep517.py .FF [ 88%] tests/test_shutil.py ... [ 90%] tests/test_simple_pure.py ... [ 92%] tests/test_simplest_c.py ..... [ 94%] tests/test_skbuild_settings.py ....... [ 98%] tests/test_wheelfile_utils.py .. [100%] =================================== FAILURES =================================== ____________________________ test_pep517_sdist_hash ____________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f87b2d619a0> package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='c75641407303f3f3a0fd76d24e3d12447b31286fa5d0f687c0f8f8eb804d839...f4bca4605ad04c6c82871b5f75840e', sdist_dated_hash38='7558e1db89e62b0941671796e1a35983a0b50a0701736566ca3ae5dd9ba09846') @mark_hashes_different def test_pep517_sdist_hash(monkeypatch, package_simple_pyproject_ext): # Unset SOURCE_DATE_EPOCH in order to guarantee the hash match monkeypatch.delenv("SOURCE_DATE_EPOCH", raising=False) dist = Path("dist") out = build_sdist("dist") sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_hash E AssertionError: assert 'f5f96b38b665...472cf91193a50' == 'c75641407303...8f8eb804d839f' E - c75641407303f3f3a0fd76d24e3d12447b31286fa5d0f687c0f8f8eb804d839f E + f5f96b38b6658f3eb0c19ea46c9fb84defe528d9543574a77d6472cf91193a50 /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.5.1/tests/test_pyproject_pep517.py:75: AssertionError ----------------------------- Captured stdout call ----------------------------- *** scikit-build-core 0.5.1 (sdist) _________________ test_pep517_sdist_time_hash_set_epoch[False] _________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f87b2940730> reverse_order = False package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='c75641407303f3f3a0fd76d24e3d12447b31286fa5d0f687c0f8f8eb804d839...f4bca4605ad04c6c82871b5f75840e', sdist_dated_hash38='7558e1db89e62b0941671796e1a35983a0b50a0701736566ca3ae5dd9ba09846') @mark_hashes_different @pytest.mark.parametrize("reverse_order", [False, True]) def test_pep517_sdist_time_hash_set_epoch( monkeypatch, reverse_order, package_simple_pyproject_ext ): dist = Path("dist") monkeypatch.setenv( "SOURCE_DATE_EPOCH", package_simple_pyproject_ext.source_date_epoch ) _each_unignored_file = _file_processor.each_unignored_file def each_unignored_file_ordered(*args, **kwargs): return sorted(_each_unignored_file(*args, **kwargs), reverse=reverse_order) monkeypatch.setattr( _file_processor, "each_unignored_file", each_unignored_file_ordered ) out = build_sdist(str(dist), {"sdist.reproducible": "true"}) sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_dated_hash E AssertionError: assert '4339fbc7ffc3...043ffe9604c7c' == '7558e1db89e6...ae5dd9ba09846' E - 7558e1db89e62b0941671796e1a35983a0b50a0701736566ca3ae5dd9ba09846 E + 4339fbc7ffc355f5c697a00b9b3abbc8ded818508576535b217043ffe9604c7c /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.5.1/tests/test_pyproject_pep517.py:143: AssertionError ----------------------------- Captured stdout call ----------------------------- *** scikit-build-core 0.5.1 (sdist) _________________ test_pep517_sdist_time_hash_set_epoch[True] __________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f87b29320a0> reverse_order = True package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='c75641407303f3f3a0fd76d24e3d12447b31286fa5d0f687c0f8f8eb804d839...f4bca4605ad04c6c82871b5f75840e', sdist_dated_hash38='7558e1db89e62b0941671796e1a35983a0b50a0701736566ca3ae5dd9ba09846') @mark_hashes_different @pytest.mark.parametrize("reverse_order", [False, True]) def test_pep517_sdist_time_hash_set_epoch( monkeypatch, reverse_order, package_simple_pyproject_ext ): dist = Path("dist") monkeypatch.setenv( "SOURCE_DATE_EPOCH", package_simple_pyproject_ext.source_date_epoch ) _each_unignored_file = _file_processor.each_unignored_file def each_unignored_file_ordered(*args, **kwargs): return sorted(_each_unignored_file(*args, **kwargs), reverse=reverse_order) monkeypatch.setattr( _file_processor, "each_unignored_file", each_unignored_file_ordered ) out = build_sdist(str(dist), {"sdist.reproducible": "true"}) sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_dated_hash E AssertionError: assert '4339fbc7ffc3...043ffe9604c7c' == '7558e1db89e6...ae5dd9ba09846' E - 7558e1db89e62b0941671796e1a35983a0b50a0701736566ca3ae5dd9ba09846 E + 4339fbc7ffc355f5c697a00b9b3abbc8ded818508576535b217043ffe9604c7c /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.5.1/tests/test_pyproject_pep517.py:143: AssertionError ----------------------------- Captured stdout call ----------------------------- *** scikit-build-core 0.5.1 (sdist) ______________________________ test_pep517_wheel _______________________________ virtualenv = @pytest.mark.compile() @pytest.mark.configure() @pytest.mark.usefixtures("package_simple_pyproject_ext") def test_pep517_wheel(virtualenv): dist = Path("dist") > out = build_wheel("dist", {"cmake.targets": ["cmake_example"]}) # Could leave empty /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.5.1/tests/test_pyproject_pep517.py:151: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wheel_directory = 'dist', config_settings = {'cmake.targets': ['cmake_example']} metadata_directory = None def build_wheel( wheel_directory: str, config_settings: dict[str, list[str] | str] | None = None, metadata_directory: str | None = None, ) -> str: from .._logging import rich_print from ..errors import FailedLiveProcessError from .wheel import _build_wheel_impl try: return _build_wheel_impl( wheel_directory, config_settings, metadata_directory, editable=False, ).wheel_filename except FailedLiveProcessError as err: sys.stdout.flush() rich_print(f"\n[red bold]*** {' '.join(err.args)}", file=sys.stderr) > raise SystemExit(1) from None E SystemExit: 1 /home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/scikit_build_core/build/__init__.py:41: SystemExit ---------------------------- Captured stdout setup ----------------------------- Requirement already satisfied: pip>=21.3.1 in /tmp/pytest-of-tkloczko/pytest-30/test_pep517_wheel1/venv/lib/python3.8/site-packages (23.2.1) ----------------------------- Captured stdout call ----------------------------- *** scikit-build-core 0.5.1 using CMake 3.27.6 (wheel) *** Configuring CMake... loading initial cache file /tmp/tmp_1b83w5l/build/CMakeInit.txt -- The CXX compiler identification is GNU 13.2.1 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found Python: /usr/bin/python3 (found version "3.8.18") found components: Interpreter Development.Module -- Performing Test HAS_FLTO -- Performing Test HAS_FLTO - Success -- Found pybind11: /usr/lib/python3.8/site-packages/pybind11/include (found version "2.11.1") -- Configuring done (1.2s) -- Generating done (0.0s) ----------------------------- Captured stderr call ----------------------------- CMake Error in CMakeLists.txt: Imported target "pybind11::headers" includes non-existent path "/usr/lib/python3.8/site-packages/pybind11/include" in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include: * The path was deleted, renamed, or moved to another location. * An install or uninstall procedure did not complete successfully. * The installation package was faulty and references files it does not provide. CMake Generate step failed. Build files cannot be regenerated correctly. *** CMake configuration failed ------------------------------ Captured log call ------------------------------- DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/cmake --version INFO scikit_build_core:program_search.py:86 CMake version: 3.27.6 INFO scikit_build_core:wheel.py:140 Build directory: /tmp/tmp_1b83w5l/build DEBUG scikit_build_core:builder.py:113 SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:builder.py:116 Extra SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:generator.py:71 Default generator: Unix Makefiles DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/ninja --version INFO scikit_build_core:program_search.py:109 Ninja version: 1.11.1 DEBUG scikit_build_core:generator.py:98 CMAKE_GENERATOR: Using ninja: /usr/bin/ninja DEBUG scikit_build_core:cmake.py:158 /tmp/tmp_1b83w5l/build/CMakeInit.txt: set(SKBUILD [===[2]===] CACHE STRING "" FORCE) set(SKBUILD_CORE_VERSION [===[0.5.1]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_NAME [===[CMake_Example]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_VERSION [===[0.0.1]===] CACHE STRING "" FORCE) set(PYTHON_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(PYTHON_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(PYTHON_LIBRARY [===[/usr/lib64/libpython3.8.so]===] CACHE PATH "" FORCE) set(Python_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(Python_NumPy_INCLUDE_DIR [===[/usr/lib64/python3.8/site-packages/numpy/core/include]===] CACHE PATH "" FORCE) set(Python3_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python3_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python3_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python3_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(Python3_NumPy_INCLUDE_DIR [===[/usr/lib64/python3.8/site-packages/numpy/core/include]===] CACHE PATH "" FORCE) set(SKBUILD_SOABI [===[cpython-38-x86_64-linux-gnu]===] CACHE STRING "" FORCE) set(SKBUILD_SABI_COMPONENT [===[]===] CACHE STRING "" FORCE) set(SKBUILD_PLATLIB_DIR [===[/tmp/tmp_1b83w5l/wheel/platlib]===] CACHE PATH "" FORCE) set(SKBUILD_DATA_DIR [===[/tmp/tmp_1b83w5l/wheel/data]===] CACHE PATH "" FORCE) set(SKBUILD_HEADERS_DIR [===[/tmp/tmp_1b83w5l/wheel/headers]===] CACHE PATH "" FORCE) set(SKBUILD_SCRIPTS_DIR [===[/tmp/tmp_1b83w5l/wheel/scripts]===] CACHE PATH "" FORCE) set(SKBUILD_NULL_DIR [===[/tmp/tmp_1b83w5l/wheel/null]===] CACHE PATH "" FORCE) set(SKBUILD_STATE [===[wheel]===] CACHE STRING "" FORCE) set(CMAKE_PREFIX_PATH [===[/usr/lib/python3.8/site-packages;/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages]===] CACHE PATH "" FORCE) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "BOTH" CACHE PATH "") DEBUG scikit_build_core:_shutil.py:66 RUNENV - changes since last run only: PYTEST_CURRENT_TEST='tests/test_pyproject_pep517.py::test_pep517_wheel (call)' - SKBUILD_CMAKE_ARGS='' - SKBUILD_CMAKE_DEFINE='' DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/cmake -S. -B/tmp/tmp_1b83w5l/build -C/tmp/tmp_1b83w5l/build/CMakeInit.txt -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja _________________________ test_pep517_wheel_source_dir _________________________ virtualenv = @pytest.mark.compile() @pytest.mark.configure() @pytest.mark.usefixtures("package_simple_pyproject_source_dir") def test_pep517_wheel_source_dir(virtualenv): dist = Path("dist") > out = build_wheel("dist") /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.5.1/tests/test_pyproject_pep517.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ wheel_directory = 'dist', config_settings = None, metadata_directory = None def build_wheel( wheel_directory: str, config_settings: dict[str, list[str] | str] | None = None, metadata_directory: str | None = None, ) -> str: from .._logging import rich_print from ..errors import FailedLiveProcessError from .wheel import _build_wheel_impl try: return _build_wheel_impl( wheel_directory, config_settings, metadata_directory, editable=False, ).wheel_filename except FailedLiveProcessError as err: sys.stdout.flush() rich_print(f"\n[red bold]*** {' '.join(err.args)}", file=sys.stderr) > raise SystemExit(1) from None E SystemExit: 1 /home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/scikit_build_core/build/__init__.py:41: SystemExit ---------------------------- Captured stdout setup ----------------------------- Requirement already satisfied: pip>=21.3.1 in /tmp/pytest-of-tkloczko/pytest-30/test_pep517_wheel_source_dir0/venv/lib/python3.8/site-packages (23.2.1) ----------------------------- Captured stdout call ----------------------------- *** scikit-build-core 0.5.1 using CMake 3.27.6 (wheel) *** Configuring CMake... loading initial cache file /tmp/tmpcr9l27qj/build/CMakeInit.txt -- The CXX compiler identification is GNU 13.2.1 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found Python: /usr/bin/python3 (found version "3.8.18") found components: Interpreter Development.Module -- Performing Test HAS_FLTO -- Performing Test HAS_FLTO - Success -- Found pybind11: /usr/lib/python3.8/site-packages/pybind11/include (found version "2.11.1") -- Configuring done (1.2s) -- Generating done (0.0s) ----------------------------- Captured stderr call ----------------------------- CMake Error in CMakeLists.txt: Imported target "pybind11::headers" includes non-existent path "/usr/lib/python3.8/site-packages/pybind11/include" in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include: * The path was deleted, renamed, or moved to another location. * An install or uninstall procedure did not complete successfully. * The installation package was faulty and references files it does not provide. CMake Generate step failed. Build files cannot be regenerated correctly. *** CMake configuration failed ------------------------------ Captured log call ------------------------------- DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/cmake --version INFO scikit_build_core:program_search.py:86 CMake version: 3.27.6 INFO scikit_build_core:wheel.py:140 Build directory: /tmp/tmpcr9l27qj/build DEBUG scikit_build_core:builder.py:113 SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:builder.py:116 Extra SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:generator.py:71 Default generator: Unix Makefiles DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/ninja --version INFO scikit_build_core:program_search.py:109 Ninja version: 1.11.1 DEBUG scikit_build_core:generator.py:98 CMAKE_GENERATOR: Using ninja: /usr/bin/ninja DEBUG scikit_build_core:cmake.py:158 /tmp/tmpcr9l27qj/build/CMakeInit.txt: set(SKBUILD [===[2]===] CACHE STRING "" FORCE) set(SKBUILD_CORE_VERSION [===[0.5.1]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_NAME [===[CMake_Example]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_VERSION [===[0.0.1]===] CACHE STRING "" FORCE) set(PYTHON_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(PYTHON_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(PYTHON_LIBRARY [===[/usr/lib64/libpython3.8.so]===] CACHE PATH "" FORCE) set(Python_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(Python_NumPy_INCLUDE_DIR [===[/usr/lib64/python3.8/site-packages/numpy/core/include]===] CACHE PATH "" FORCE) set(Python3_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python3_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python3_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python3_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(Python3_NumPy_INCLUDE_DIR [===[/usr/lib64/python3.8/site-packages/numpy/core/include]===] CACHE PATH "" FORCE) set(SKBUILD_SOABI [===[cpython-38-x86_64-linux-gnu]===] CACHE STRING "" FORCE) set(SKBUILD_SABI_COMPONENT [===[]===] CACHE STRING "" FORCE) set(SKBUILD_PLATLIB_DIR [===[/tmp/tmpcr9l27qj/wheel/platlib]===] CACHE PATH "" FORCE) set(SKBUILD_DATA_DIR [===[/tmp/tmpcr9l27qj/wheel/data]===] CACHE PATH "" FORCE) set(SKBUILD_HEADERS_DIR [===[/tmp/tmpcr9l27qj/wheel/headers]===] CACHE PATH "" FORCE) set(SKBUILD_SCRIPTS_DIR [===[/tmp/tmpcr9l27qj/wheel/scripts]===] CACHE PATH "" FORCE) set(SKBUILD_NULL_DIR [===[/tmp/tmpcr9l27qj/wheel/null]===] CACHE PATH "" FORCE) set(SKBUILD_STATE [===[wheel]===] CACHE STRING "" FORCE) set(CMAKE_PREFIX_PATH [===[/usr/lib/python3.8/site-packages;/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages]===] CACHE PATH "" FORCE) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "BOTH" CACHE PATH "") DEBUG scikit_build_core:_shutil.py:66 RUNENV - changes since last run only: PYTEST_CURRENT_TEST='tests/test_pyproject_pep517.py::test_pep517_wheel_source_dir (call)' DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/cmake -Ssrc -B/tmp/tmpcr9l27qj/build -C/tmp/tmpcr9l27qj/build/CMakeInit.txt -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja ______________________________ test_pep517_wheel _______________________________ virtualenv = @pytest.mark.compile() @pytest.mark.configure() @pytest.mark.broken_on_urct() @pytest.mark.usefixtures("package_simple_setuptools_ext") @pytest.mark.xfail( sys.platform.startswith("cygwin"), reason="Cygwin fails here with ld errors", strict=False, ) def test_pep517_wheel(virtualenv): dist = Path("dist") > out = build_wheel("dist") /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.5.1/tests/test_setuptools_pep517.py:75: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/build_meta.py:434: in build_wheel return self._build_with_temp_dir( /usr/lib/python3.8/site-packages/setuptools/build_meta.py:419: in _build_with_temp_dir self.run_setup() /usr/lib/python3.8/site-packages/setuptools/build_meta.py:341: in run_setup exec(code, locals()) :3: in ??? /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: in setup return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:185: in setup return run_commands(dist) /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:201: in run_commands dist.run_commands() /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:969: in run_commands self.run_command(cmd) /usr/lib/python3.8/site-packages/setuptools/dist.py:989: in run_command super().run_command(command) /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:988: in run_command cmd_obj.run() /usr/lib/python3.8/site-packages/wheel/bdist_wheel.py:349: in run self.run_command("build") /usr/lib/python3.8/site-packages/setuptools/_distutils/cmd.py:318: in run_command self.distribution.run_command(command) /usr/lib/python3.8/site-packages/setuptools/dist.py:989: in run_command super().run_command(command) /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:988: in run_command cmd_obj.run() /usr/lib/python3.8/site-packages/setuptools/_distutils/command/build.py:131: in run self.run_command(cmd_name) /usr/lib/python3.8/site-packages/setuptools/_distutils/cmd.py:318: in run_command self.distribution.run_command(command) /usr/lib/python3.8/site-packages/setuptools/dist.py:989: in run_command super().run_command(command) /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:988: in run_command cmd_obj.run() /home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/scikit_build_core/setuptools/build_cmake.py:144: in run builder.configure( /home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/scikit_build_core/builder/builder.py:200: in configure self.config.configure( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = CMaker(cmake=CMake(version=, cmake_path=PosixPath('/usr/bin/cmake')), source_dir=PosixPath('.'), bu...NT_TEST': 'tests/test_setuptools_pep517.py::test_pep517_wheel (call)', 'CMAKE_GENERATOR': 'Ninja'}, single_config=True) def configure( self, *, defines: Mapping[str, str | os.PathLike[str] | bool] | None = None, cmake_args: Sequence[str] = (), ) -> None: if "CMAKE_GENERATOR" in self.env: gen = self.env["CMAKE_GENERATOR"] self.single_config = gen == "Ninja" or "Makefiles" in gen _cmake_args = self._compute_cmake_args(defines or {}) try: Run(env=self.env).live(self.cmake, *_cmake_args, *cmake_args) except subprocess.CalledProcessError: msg = "CMake configuration failed" > raise FailedLiveProcessError(msg) from None E scikit_build_core.errors.FailedLiveProcessError: CMake configuration failed /home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/scikit_build_core/cmake.py:202: FailedLiveProcessError ---------------------------- Captured stdout setup ----------------------------- Requirement already satisfied: pip>=21.3.1 in /tmp/pytest-of-tkloczko/pytest-30/test_pep517_wheel2/venv/lib/python3.8/site-packages (23.2.1) ----------------------------- Captured stdout call ----------------------------- loading initial cache file build/temp.linux-x86_64-cpython-38/_skbuild/CMakeInit.txt -- The CXX compiler identification is GNU 13.2.1 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found PythonInterp: /usr/bin/python3 (found suitable version "3.8.18", minimum required is "3.6") -- Found PythonLibs: /usr/lib64/libpython3.8.so -- Performing Test HAS_FLTO -- Performing Test HAS_FLTO - Success -- Found pybind11: /usr/lib/python3.8/site-packages/pybind11/include (found version "2.11.1") -- Configuring done (0.8s) -- Generating done (0.0s) ----------------------------- Captured stderr call ----------------------------- CMake Warning (dev) at /usr/lib/python3.8/site-packages/pybind11/share/cmake/pybind11/FindPythonLibsNew.cmake:98 (find_package): Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules are removed. Run "cmake --help-policy CMP0148" for policy details. Use the cmake_policy command to set the policy and suppress this warning. Call Stack (most recent call first): /usr/lib/python3.8/site-packages/pybind11/share/cmake/pybind11/pybind11Tools.cmake:50 (find_package) /usr/lib/python3.8/site-packages/pybind11/share/cmake/pybind11/pybind11Common.cmake:188 (include) /usr/lib/python3.8/site-packages/pybind11/share/cmake/pybind11/pybind11Config.cmake:250 (include) CMakeLists.txt:7 (find_package) This warning is for project developers. Use -Wno-dev to suppress it. CMake Error in CMakeLists.txt: Imported target "pybind11::module" includes non-existent path "/usr/lib/python3.8/site-packages/pybind11/include" in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include: * The path was deleted, renamed, or moved to another location. * An install or uninstall procedure did not complete successfully. * The installation package was faulty and references files it does not provide. CMake Generate step failed. Build files cannot be regenerated correctly. ------------------------------ Captured log call ------------------------------- INFO root:dist.py:985 running bdist_wheel INFO root:dist.py:985 running build INFO root:dist.py:985 running build_ext INFO root:dist.py:985 running build_cmake DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/cmake --version INFO scikit_build_core:program_search.py:86 CMake version: 3.27.6 DEBUG scikit_build_core:builder.py:113 SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:builder.py:116 Extra SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:generator.py:71 Default generator: Unix Makefiles DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/ninja --version INFO scikit_build_core:program_search.py:109 Ninja version: 1.11.1 DEBUG scikit_build_core:generator.py:98 CMAKE_GENERATOR: Using ninja: /usr/bin/ninja DEBUG scikit_build_core:cmake.py:158 build/temp.linux-x86_64-cpython-38/_skbuild/CMakeInit.txt: set(SKBUILD [===[2]===] CACHE STRING "" FORCE) set(SKBUILD_CORE_VERSION [===[0.5.1]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_NAME [===[cmake_example]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_VERSION [===[0.0.1]===] CACHE STRING "" FORCE) set(PYTHON_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(PYTHON_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(PYTHON_LIBRARY [===[/usr/lib64/libpython3.8.so]===] CACHE PATH "" FORCE) set(Python_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(Python_NumPy_INCLUDE_DIR [===[/usr/lib64/python3.8/site-packages/numpy/core/include]===] CACHE PATH "" FORCE) set(Python3_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python3_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python3_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python3_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(Python3_NumPy_INCLUDE_DIR [===[/usr/lib64/python3.8/site-packages/numpy/core/include]===] CACHE PATH "" FORCE) set(SKBUILD_SOABI [===[cpython-38-x86_64-linux-gnu]===] CACHE STRING "" FORCE) set(SKBUILD_SABI_COMPONENT [===[]===] CACHE STRING "" FORCE) set(CMAKE_PREFIX_PATH [===[/usr/lib/python3.8/site-packages;/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages]===] CACHE PATH "" FORCE) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "BOTH" CACHE PATH "") DEBUG scikit_build_core:_shutil.py:66 RUNENV - changes since last run only: PYTEST_CURRENT_TEST='tests/test_setuptools_pep517.py::test_pep517_wheel (call)' DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/cmake -S. -Bbuild/temp.linux-x86_64-cpython-38/_skbuild -Cbuild/temp.linux-x86_64-cpython-38/_skbuild/CMakeInit.txt -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja ___________________________ test_pep517_mixed_wheel ____________________________ virtualenv = @pytest.mark.compile() @pytest.mark.configure() @pytest.mark.usefixtures("package_mixed_setuptools") def test_pep517_mixed_wheel(virtualenv): dist = Path("dist") > out = build_wheel("dist") /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.5.1/tests/test_setuptools_pep517.py:108: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3.8/site-packages/setuptools/build_meta.py:434: in build_wheel return self._build_with_temp_dir( /usr/lib/python3.8/site-packages/setuptools/build_meta.py:419: in _build_with_temp_dir self.run_setup() /usr/lib/python3.8/site-packages/setuptools/build_meta.py:341: in run_setup exec(code, locals()) :3: in ??? /usr/lib/python3.8/site-packages/setuptools/__init__.py:103: in setup return distutils.core.setup(**attrs) /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:185: in setup return run_commands(dist) /usr/lib/python3.8/site-packages/setuptools/_distutils/core.py:201: in run_commands dist.run_commands() /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:969: in run_commands self.run_command(cmd) /usr/lib/python3.8/site-packages/setuptools/dist.py:989: in run_command super().run_command(command) /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:988: in run_command cmd_obj.run() /usr/lib/python3.8/site-packages/wheel/bdist_wheel.py:349: in run self.run_command("build") /usr/lib/python3.8/site-packages/setuptools/_distutils/cmd.py:318: in run_command self.distribution.run_command(command) /usr/lib/python3.8/site-packages/setuptools/dist.py:989: in run_command super().run_command(command) /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:988: in run_command cmd_obj.run() /usr/lib/python3.8/site-packages/setuptools/_distutils/command/build.py:131: in run self.run_command(cmd_name) /usr/lib/python3.8/site-packages/setuptools/_distutils/cmd.py:318: in run_command self.distribution.run_command(command) /usr/lib/python3.8/site-packages/setuptools/dist.py:989: in run_command super().run_command(command) /usr/lib/python3.8/site-packages/setuptools/_distutils/dist.py:988: in run_command cmd_obj.run() /home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/scikit_build_core/setuptools/build_cmake.py:144: in run builder.configure( /home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/scikit_build_core/builder/builder.py:200: in configure self.config.configure( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = CMaker(cmake=CMake(version=, cmake_path=PosixPath('/usr/bin/cmake')), source_dir=PosixPath('.'), bu...T': 'tests/test_setuptools_pep517.py::test_pep517_mixed_wheel (call)', 'CMAKE_GENERATOR': 'Ninja'}, single_config=True) def configure( self, *, defines: Mapping[str, str | os.PathLike[str] | bool] | None = None, cmake_args: Sequence[str] = (), ) -> None: if "CMAKE_GENERATOR" in self.env: gen = self.env["CMAKE_GENERATOR"] self.single_config = gen == "Ninja" or "Makefiles" in gen _cmake_args = self._compute_cmake_args(defines or {}) try: Run(env=self.env).live(self.cmake, *_cmake_args, *cmake_args) except subprocess.CalledProcessError: msg = "CMake configuration failed" > raise FailedLiveProcessError(msg) from None E scikit_build_core.errors.FailedLiveProcessError: CMake configuration failed /home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages/scikit_build_core/cmake.py:202: FailedLiveProcessError ---------------------------- Captured stdout setup ----------------------------- Requirement already satisfied: pip>=21.3.1 in /tmp/pytest-of-tkloczko/pytest-30/test_pep517_mixed_wheel0/venv/lib/python3.8/site-packages (23.2.1) ----------------------------- Captured stdout call ----------------------------- loading initial cache file build/temp.linux-x86_64-cpython-38/_skbuild/CMakeInit.txt -- The CXX compiler identification is GNU 13.2.1 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/g++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found PythonInterp: /usr/bin/python3 (found suitable version "3.8.18", minimum required is "3.6") -- Found PythonLibs: /usr/lib64/libpython3.8.so -- Performing Test HAS_FLTO -- Performing Test HAS_FLTO - Success -- Found pybind11: /usr/lib/python3.8/site-packages/pybind11/include (found version "2.11.1") -- Configuring done (0.8s) -- Generating done (0.0s) ----------------------------- Captured stderr call ----------------------------- ERROR setuptools_scm._integration.setuptools pyproject.toml does not contain a tool.setuptools_scm section Traceback (most recent call last): File "/usr/lib/python3.8/site-packages/setuptools_scm/_integration/pyproject_reading.py", line 53, in read_pyproject section = defn.get("tool", {})[tool_name] KeyError: 'setuptools_scm' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/lib/python3.8/site-packages/setuptools_scm/_integration/setuptools.py", line 121, in infer_version config = _config.Configuration.from_file(dist_name=dist_name) File "/usr/lib/python3.8/site-packages/setuptools_scm/_config.py", line 128, in from_file pyproject_data = _read_pyproject(name, _load_toml=_load_toml) File "/usr/lib/python3.8/site-packages/setuptools_scm/_integration/pyproject_reading.py", line 55, in read_pyproject raise LookupError(f"{name} does not contain a tool.{tool_name} section") from e LookupError: pyproject.toml does not contain a tool.setuptools_scm section CMake Warning (dev) at /usr/lib/python3.8/site-packages/pybind11/share/cmake/pybind11/FindPythonLibsNew.cmake:98 (find_package): Policy CMP0148 is not set: The FindPythonInterp and FindPythonLibs modules are removed. Run "cmake --help-policy CMP0148" for policy details. Use the cmake_policy command to set the policy and suppress this warning. Call Stack (most recent call first): /usr/lib/python3.8/site-packages/pybind11/share/cmake/pybind11/pybind11Tools.cmake:50 (find_package) /usr/lib/python3.8/site-packages/pybind11/share/cmake/pybind11/pybind11Common.cmake:188 (include) /usr/lib/python3.8/site-packages/pybind11/share/cmake/pybind11/pybind11Config.cmake:250 (include) CMakeLists.txt:24 (find_package) This warning is for project developers. Use -Wno-dev to suppress it. CMake Error in CMakeLists.txt: Imported target "pybind11::module" includes non-existent path "/usr/lib/python3.8/site-packages/pybind11/include" in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include: * The path was deleted, renamed, or moved to another location. * An install or uninstall procedure did not complete successfully. * The installation package was faulty and references files it does not provide. CMake Generate step failed. Build files cannot be regenerated correctly. ------------------------------ Captured log call ------------------------------- INFO root:dist.py:985 running bdist_wheel INFO root:dist.py:985 running build INFO root:dist.py:985 running build_py INFO root:dir_util.py:71 creating build INFO root:dir_util.py:71 creating build/lib.linux-x86_64-cpython-38 INFO root:dir_util.py:71 creating build/lib.linux-x86_64-cpython-38/mixed_setuptools INFO root:file_util.py:137 copying src/mixed_setuptools/__init__.py -> build/lib.linux-x86_64-cpython-38/mixed_setuptools WARNING root:cmd.py:336 warning: build_py: byte-compiling is disabled, skipping. INFO root:dist.py:985 running build_ext INFO root:dist.py:985 running build_cmake DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/cmake --version INFO scikit_build_core:program_search.py:86 CMake version: 3.27.6 DEBUG scikit_build_core:builder.py:113 SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:builder.py:116 Extra SITE_PACKAGES: /usr/lib/python3.8/site-packages DEBUG scikit_build_core:generator.py:71 Default generator: Unix Makefiles DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/ninja --version INFO scikit_build_core:program_search.py:109 Ninja version: 1.11.1 DEBUG scikit_build_core:generator.py:98 CMAKE_GENERATOR: Using ninja: /usr/bin/ninja DEBUG scikit_build_core:cmake.py:158 build/temp.linux-x86_64-cpython-38/_skbuild/CMakeInit.txt: set(SKBUILD [===[2]===] CACHE STRING "" FORCE) set(SKBUILD_CORE_VERSION [===[0.5.1]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_NAME [===[mixed_setuptools]===] CACHE STRING "" FORCE) set(SKBUILD_PROJECT_VERSION [===[3.1.4]===] CACHE STRING "" FORCE) set(PYTHON_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(PYTHON_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(PYTHON_LIBRARY [===[/usr/lib64/libpython3.8.so]===] CACHE PATH "" FORCE) set(Python_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(Python_NumPy_INCLUDE_DIR [===[/usr/lib64/python3.8/site-packages/numpy/core/include]===] CACHE PATH "" FORCE) set(Python3_EXECUTABLE [===[/usr/bin/python3]===] CACHE STRING "" FORCE) set(Python3_ROOT_DIR [===[/usr]===] CACHE STRING "" FORCE) set(Python3_INCLUDE_DIR [===[/usr/include/python3.8]===] CACHE PATH "" FORCE) set(Python3_FIND_REGISTRY [===[NEVER]===] CACHE STRING "" FORCE) set(Python3_NumPy_INCLUDE_DIR [===[/usr/lib64/python3.8/site-packages/numpy/core/include]===] CACHE PATH "" FORCE) set(SKBUILD_SOABI [===[cpython-38-x86_64-linux-gnu]===] CACHE STRING "" FORCE) set(SKBUILD_SABI_COMPONENT [===[]===] CACHE STRING "" FORCE) set(CMAKE_PREFIX_PATH [===[/usr/lib/python3.8/site-packages;/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.5.1-2.fc35.x86_64/usr/lib/python3.8/site-packages]===] CACHE PATH "" FORCE) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE "BOTH" CACHE PATH "") DEBUG scikit_build_core:_shutil.py:66 RUNENV - changes since last run only: PYTEST_CURRENT_TEST='tests/test_setuptools_pep517.py::test_pep517_mixed_wheel (call)' DEBUG scikit_build_core:_shutil.py:69 RUN: /usr/bin/cmake -S. -Bbuild/temp.linux-x86_64-cpython-38/_skbuild -Cbuild/temp.linux-x86_64-cpython-38/_skbuild/CMakeInit.txt -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja -DEXAMPLE_DEFINE4=4 -DEXAMPLE_DEFINE3=3 -DEXAMPLE_DEFINE1=1 -DEXAMPLE_DEFINE2=2 -DEXAMPLE_DEFINE5=5 =========================== short test summary info ============================ SKIPPED [1] tests/test_builder.py:66: MSVC only SKIPPED [1] tests/test_dynamic_metadata.py:118: install hatch-fancy-pypi-readme and setuptools-scm to test the dynamic metadata plugins SKIPPED [1] tests/test_program_search.py:17: could not import 'cmake': No module named 'cmake' SKIPPED [1] tests/test_program_search.py:26: could not import 'ninja': No module named 'ninja' SKIPPED [1] tests/test_pyproject_pep517.py:242: Doesn't work yet XFAIL tests/test_builder.py::test_get_python_library - Doesn't matter if this fails, usually not used FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_hash - AssertionErro... FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[False] FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[True] FAILED tests/test_pyproject_pep517.py::test_pep517_wheel - SystemExit: 1 FAILED tests/test_pyproject_pep517.py::test_pep517_wheel_source_dir - SystemE... FAILED tests/test_setuptools_pep517.py::test_pep517_wheel - scikit_build_core... FAILED tests/test_setuptools_pep517.py::test_pep517_mixed_wheel - scikit_buil... = 7 failed, 162 passed, 5 skipped, 15 deselected, 1 xfailed in 75.24s (0:01:15) = ```
kloczek commented 11 months ago

Just found that I'm building pybind11 with -D USE_PYTHON_INCLUDE_DIR=OFF so it causes that header files are installed in /usr/include however looks like installed pybind11 cmake module is not adapted for that and it expects pybind11 header files in python sitelib. Will try to open for that issue ticket.

LecrisUT commented 11 months ago

pybind11 on fedora is installed in /usr/include as well, and so far that issue has not appeared there. Try to reference for probable packaging issues.

For reference latest copr build:

[ 44%] tests/test_pyproject_pep517.py ........s.

From what I can see in the pybind11 main branch, the include directory is from CMAKE_INSTALL_INCLUDEDIR, so make sure you are installing the cmake project correctly. Make sure there are no cp/mv commands after the %cmake_install. Also for reference pybind11.spec

kloczek commented 11 months ago

My spec file for pybind11 uses:

%build
%cmake \
        -D PYBIND11_CUDA_TESTS=OFF \
        -D PYBIND11_INSTALL=ON \
        -D PYBIND11_TEST=ON \
        -D PYTHON_EXECUTABLE=%__python3 \
        -D USE_PYTHON_INCLUDE_DIR=OFF \
        %{nil}
%cmake_build

%pyproject_wheel

%install
%cmake_install

PYBIND11_USE_CMAKE=true \
%pyproject_install

%check
%ctest

Only difference which I see is use pep517 based build for python module (fedora one still uses setuptools setuup.py).

kloczek commented 11 months ago

OK I see what is going on. %files from my spec file

%files
%doc README.*
%attr(755,root,root) %{_bindir}/pybind11-config
%{_datadir}/cmake/*
%{_datadir}/pkgconfig/*.pc
%{_includedir}/pybind11
%{python3_sitelib}/pybind11
%{python3_sitelib}/pybind11-*.*-info
%exclude %{python3_sitelib}/pybind11/include

So in case of fedora it works because they've include %{python3_sitelib}/pybind11/include symlink. IMO cmake module should use different paths when is used -D USE_PYTHON_INCLUDE_DIR=OFF and that symlink should ne be installed.

LecrisUT commented 11 months ago

Interesting, indeed fedora does seem to package apparently symlinks, even though there doesn't seem to be such symlink instructions. I will investigate the files tomorrow to confirm where the files are taken from. Looking at the setup.py I have a concern that it might overwrite the previous files https://github.com/pybind/pybind11/blob/0a756c0bb2f7e7ac6cf4e2c4de26211409fadbe4/setup.py#L125. Both the fedora spec file and pybind11 upstream could use some modernization? @henryiii are there plans on pybind11 to use scikit-build-core? Anything blocking that?

kloczek commented 11 months ago

IMO issue is that looks like pybind11 cmake -D USE_PYTHON_INCLUDE_DIR={ON|OFF} seems is not fully finished and it works only becase this symlink is added .. Because I've decided to skip packaging that symlink I was forced me to add kind of pybind11 JFDI patch

--- a/pybind11/commands.py
+++ b/pybind11/commands.py
@@ -4,26 +4,10 @@

 def get_include(user: bool = False) -> str:  # noqa: ARG001
-    """
-    Return the path to the pybind11 include directory. The historical "user"
-    argument is unused, and may be removed.
-    """
-    installed_path = os.path.join(DIR, "include")
-    source_path = os.path.join(os.path.dirname(DIR), "include")
-    return installed_path if os.path.exists(installed_path) else source_path
-
+    return "/usr/include/pybind11"

 def get_cmake_dir() -> str:
-    """
-    Return the path to the pybind11 CMake module directory.
-    """
-    cmake_installed_path = os.path.join(DIR, "share", "cmake", "pybind11")
-    if os.path.exists(cmake_installed_path):
-        return cmake_installed_path
-
-    msg = "pybind11 not installed, installation required to access the CMake files"
-    raise ImportError(msg)
-
+    return "/usr/share/cmake/pybind11"

 def get_pkgconfig_dir() -> str:

To return by pybind11/commands.py proper path to header files.

That symling "solves" this issue however it hides as well that on use -D USE_PYTHON_INCLUDE_DIR={ON|OFF} notjing else is not propagated into cmake module and pybind11/commands.py.

It is only coincidence that as I found that on use -D USE_PYTHON_INCLUDE_DIR=OFF that symlink theoretically should not be necessary so I've excluded on packaging .. and that exposed that 😋

It is yet another thing in pybind11 generated pybind11.pc file

prefix=/usr
includedir=${prefix}/include

Name: pybind11
Description: Seamless operability between C++11 and Python
Version: 2.11.1
Cflags: -I${includedir}

Here includedir looks like it should be ${prefix}/include/pybind11. Theoretically to obtain by cmake pybind11 could uses pkgconfi to obtain CFLAGS (and the same pybind11/commands.py) however as pybind11.pc has incorrect includedir it cannot be used (now).

LecrisUT commented 11 months ago

Indeed you've exposed quite a flaw in their design. My suspicion is that PYBIND11_USE_CMAKE=true clashes with %cmake_build. If pybind11 can install only the python files and metadata there could be a workaround for this issue.

Just for curiosity can you invert the cmake and Python commands in the spec file?

kloczek commented 11 months ago

Just for curiosity can you invert the cmake and Python commands in the spec file?

No problem 😋 Just send build request with modified build procedure however result may be in 2-3h because build queue is a bit clogged now (will back with result ASP).

kloczek commented 10 months ago

Just tested 0.6.1 and now I see that only 3 units are failing

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.6.1-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.6.1-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' ============================= test session starts ============================== platform linux -- Python 3.8.18, pytest-7.4.3, pluggy-1.3.0 installed packages of interest: build==1.0.3 cattrs==23.1.2 exceptiongroup==1.1.3 fastjsonschema==2.18.0 importlib-metadata==6.8.0 importlib-resources==6.1.1 myst-parser==2.0.0 numpy==1.24.4 packaging==23.2 pathspec==0.11.2 pip==23.2.1 pybind11==2.11.1 pyproject-metadata==0.7.1 pytest==7.4.3 pytest-subprocess==1.5.0 scikit_build_core==0.6.1 setuptools==68.2.2 setuptools-scm==8.0.4 sphinx==7.1.2 sphinx-autodoc-typehints==1.24.1 sphinx-copybutton==0.5.2 sphinx-inline-tabs==2023.4.21 sphinx-jsonschema==1.19.0 tomli==2.0.1 typing-extensions==4.8.0 validate-pyproject==0.15 virtualenv==20.24.5 wheel==0.41.3 sysconfig platform: linux-x86_64 rootdir: /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.6.1 configfile: pyproject.toml testpaths: tests plugins: subprocess-1.5.0 collected 227 items / 19 deselected / 208 selected tests/test_builder.py .........xs......... [ 9%] tests/test_cmake_config.py .... [ 11%] tests/test_dynamic_metadata.py .s........ [ 16%] tests/test_editable_unit.py .. [ 17%] tests/test_file_processor.py . [ 17%] tests/test_fileapi.py .... [ 19%] tests/test_generator_default.py ... [ 21%] tests/test_get_requires.py ........ [ 25%] tests/test_json_schema.py ........ [ 28%] tests/test_logging.py ... [ 30%] tests/test_module_dir.py .. [ 31%] tests/test_name_main.py ... [ 32%] tests/test_prepare_metadata.py .. [ 33%] tests/test_process_scripts.py . [ 34%] tests/test_program_search.py ss... [ 36%] tests/test_pyproject_abi3.py . [ 37%] tests/test_pyproject_extra_dirs.py .. [ 37%] tests/test_pyproject_pep517.py .F..FF..s. [ 42%] tests/test_pyproject_pep660.py . [ 43%] tests/test_schema.py ......................................... [ 62%] tests/test_settings.py ................................ [ 78%] tests/test_settings_overrides.py ..................... [ 88%] tests/test_setuptools_abi3.py . [ 88%] tests/test_setuptools_pep517.py ... [ 90%] tests/test_shutil.py ... [ 91%] tests/test_simple_pure.py ... [ 93%] tests/test_simplest_c.py ..... [ 95%] tests/test_skbuild_settings.py ....... [ 99%] tests/test_wheelfile_utils.py .. [100%] =================================== FAILURES =================================== ____________________________ test_pep517_sdist_hash ____________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f8f834829a0> package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='c75641407303f3f3a0fd76d24e3d12447b31286fa5d0f687c0f8f8eb804d839...f4bca4605ad04c6c82871b5f75840e', sdist_dated_hash38='7558e1db89e62b0941671796e1a35983a0b50a0701736566ca3ae5dd9ba09846') @mark_hashes_different def test_pep517_sdist_hash(monkeypatch, package_simple_pyproject_ext): # Unset SOURCE_DATE_EPOCH in order to guarantee the hash match monkeypatch.delenv("SOURCE_DATE_EPOCH", raising=False) dist = Path("dist") out = build_sdist("dist") sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_hash E AssertionError: assert 'f5f96b38b665...472cf91193a50' == 'c75641407303...8f8eb804d839f' E - c75641407303f3f3a0fd76d24e3d12447b31286fa5d0f687c0f8f8eb804d839f E + f5f96b38b6658f3eb0c19ea46c9fb84defe528d9543574a77d6472cf91193a50 /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.6.1/tests/test_pyproject_pep517.py:75: AssertionError ----------------------------- Captured stdout call ----------------------------- *** scikit-build-core 0.6.1 (sdist) _________________ test_pep517_sdist_time_hash_set_epoch[False] _________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f8f835b50d0> reverse_order = False package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='c75641407303f3f3a0fd76d24e3d12447b31286fa5d0f687c0f8f8eb804d839...f4bca4605ad04c6c82871b5f75840e', sdist_dated_hash38='7558e1db89e62b0941671796e1a35983a0b50a0701736566ca3ae5dd9ba09846') @mark_hashes_different @pytest.mark.parametrize("reverse_order", [False, True]) def test_pep517_sdist_time_hash_set_epoch( monkeypatch, reverse_order, package_simple_pyproject_ext ): dist = Path("dist") monkeypatch.setenv( "SOURCE_DATE_EPOCH", package_simple_pyproject_ext.source_date_epoch ) _each_unignored_file = _file_processor.each_unignored_file def each_unignored_file_ordered(*args, **kwargs): return sorted(_each_unignored_file(*args, **kwargs), reverse=reverse_order) monkeypatch.setattr( _file_processor, "each_unignored_file", each_unignored_file_ordered ) out = build_sdist(str(dist), {"sdist.reproducible": "true"}) sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_dated_hash E AssertionError: assert '4339fbc7ffc3...043ffe9604c7c' == '7558e1db89e6...ae5dd9ba09846' E - 7558e1db89e62b0941671796e1a35983a0b50a0701736566ca3ae5dd9ba09846 E + 4339fbc7ffc355f5c697a00b9b3abbc8ded818508576535b217043ffe9604c7c /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.6.1/tests/test_pyproject_pep517.py:143: AssertionError ----------------------------- Captured stdout call ----------------------------- *** scikit-build-core 0.6.1 (sdist) _________________ test_pep517_sdist_time_hash_set_epoch[True] __________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f8f8347af70> reverse_order = True package_simple_pyproject_ext = PackageInfo(name='simple_pyproject_ext', sdist_hash38='c75641407303f3f3a0fd76d24e3d12447b31286fa5d0f687c0f8f8eb804d839...f4bca4605ad04c6c82871b5f75840e', sdist_dated_hash38='7558e1db89e62b0941671796e1a35983a0b50a0701736566ca3ae5dd9ba09846') @mark_hashes_different @pytest.mark.parametrize("reverse_order", [False, True]) def test_pep517_sdist_time_hash_set_epoch( monkeypatch, reverse_order, package_simple_pyproject_ext ): dist = Path("dist") monkeypatch.setenv( "SOURCE_DATE_EPOCH", package_simple_pyproject_ext.source_date_epoch ) _each_unignored_file = _file_processor.each_unignored_file def each_unignored_file_ordered(*args, **kwargs): return sorted(_each_unignored_file(*args, **kwargs), reverse=reverse_order) monkeypatch.setattr( _file_processor, "each_unignored_file", each_unignored_file_ordered ) out = build_sdist(str(dist), {"sdist.reproducible": "true"}) sdist = dist / out hash = hashlib.sha256(sdist.read_bytes()).hexdigest() > assert hash == package_simple_pyproject_ext.sdist_dated_hash E AssertionError: assert '4339fbc7ffc3...043ffe9604c7c' == '7558e1db89e6...ae5dd9ba09846' E - 7558e1db89e62b0941671796e1a35983a0b50a0701736566ca3ae5dd9ba09846 E + 4339fbc7ffc355f5c697a00b9b3abbc8ded818508576535b217043ffe9604c7c /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.6.1/tests/test_pyproject_pep517.py:143: AssertionError ----------------------------- Captured stdout call ----------------------------- *** scikit-build-core 0.6.1 (sdist) =========================== short test summary info ============================ SKIPPED [1] tests/test_builder.py:66: MSVC only SKIPPED [1] tests/test_dynamic_metadata.py:118: install hatch-fancy-pypi-readme and setuptools-scm to test the dynamic metadata plugins SKIPPED [1] tests/test_program_search.py:17: could not import 'cmake': No module named 'cmake' SKIPPED [1] tests/test_program_search.py:26: could not import 'ninja': No module named 'ninja' SKIPPED [1] tests/test_pyproject_pep517.py:242: Doesn't work yet XFAIL tests/test_builder.py::test_get_python_library - Doesn't matter if this fails, usually not used FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_hash - AssertionErro... FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[False] FAILED tests/test_pyproject_pep517.py::test_pep517_sdist_time_hash_set_epoch[True] = 3 failed, 199 passed, 5 skipped, 19 deselected, 1 xfailed in 72.20s (0:01:12) = ```
LecrisUT commented 10 months ago

Can you compare the + commands in the build.log. Here are the Fedora ones. I think the issue is that your system uses something similar to SOURCE_DATE_EPOCH that we need to patch out as well.

casperdcl commented 9 months ago

Unsure if related, but I have an Unknown CMake command "python_add_library" error. I noticed the same error in the logs above^1.

After comparing the CMake docs for SWIG & C, my work-around in https://github.com/AMYPAD/CuVec/pull/34 is to replace:

- python_add_library(example MODULE example.c WITH_SOABI)
+ add_library(example MODULE example.c)
+ if(WIN32)
+   set_property(TARGET example PROPERTY SUFFIX ".${Python_SOABI}.pyd")
+ else()
+   set_property(TARGET example PROPERTY SUFFIX ".${Python_SOABI}${CMAKE_SHARED_MODULE_SUFFIX}")
+ endif()
+ target_link_libraries(example PRIVATE Python::Module)
+ # remove shared lib prefix to make importable
+ set_target_properties(example PROPERTIES PREFIX "")

Does that make sense? Should I open a separate issue?

LecrisUT commented 9 months ago

Separate issue, some more details on the OS/python environment would be needed. At first glance, if it's an issue in your CMakeLists.txt, then it's probably that you did not run find_package(Python) beforehand, or you had find_package(Python3)

LecrisUT commented 7 months ago

@kloczek Are the 3 unit tests you had still failing with 0.8.0?

kloczek commented 2 months ago

Closing. Just tested 0.9.6 and all looks good now

Here is pytest output: ```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.9.6-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-scikit-build-core-0.9.6-2.fc37.x86_64/usr/lib/python3.10/site-packages + /usr/bin/pytest -ra -m 'not network' ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.10.14, pytest-8.2.2, pluggy-1.5.0 installed packages of interest: build==1.2.1 cattrs==23.2.3 exceptiongroup==1.1.3 fastjsonschema==2.19.1 hatchling==1.24.2 importlib-metadata==7.1.0 myst-parser==3.0.1 numpy==1.26.4 packaging==24.0 pathspec==0.12.1 pip==24.0 pybind11==2.12.0 pytest==8.2.2 pytest-subprocess==1.5.0 scikit_build_core==0.9.6 setuptools==69.4.0 setuptools-scm==8.1.0 sphinx==7.3.7 sphinx-autodoc-typehints==2.1.1 sphinx-copybutton==0.5.2 sphinx-inline-tabs==2023.4.21 sphinx-jsonschema==1.19.0 tomli==2.0.1 typing-extensions==4.12.2 validate-pyproject==0.18 virtualenv==20.26.2 wheel==0.43.0 sysconfig platform: linux-x86_64 rootdir: /home/tkloczko/rpmbuild/BUILD/scikit-build-core-0.9.6 configfile: pyproject.toml testpaths: tests plugins: time-machine-2.14.1, asyncio-0.23.7, subprocess-1.5.0 asyncio: mode=strict collected 302 items / 27 deselected / 275 selected tests/test_builder.py .........xs............... [ 9%] tests/test_cmake_config.py ..... [ 11%] tests/test_dynamic_metadata.py .s........ [ 14%] tests/test_editable_redirect.py . [ 15%] tests/test_editable_unit.py .. [ 16%] tests/test_file_processor.py . [ 16%] tests/test_fileapi.py .... [ 17%] tests/test_generator_default.py ... [ 18%] tests/test_get_requires.py ........... [ 22%] tests/test_json_schema.py ........ [ 25%] tests/test_logging.py .... [ 27%] tests/test_module_dir.py .. [ 28%] tests/test_name_main.py ... [ 29%] tests/test_prepare_metadata.py ... [ 30%] tests/test_printouts.py . [ 30%] tests/test_process_scripts.py . [ 30%] tests/test_program_search.py ss... [ 32%] tests/test_pyproject_abi3.py . [ 33%] tests/test_pyproject_extra_dirs.py .. [ 33%] tests/test_pyproject_pep517.py ..........s.. [ 38%] tests/test_pyproject_pep660.py .. [ 39%] tests/test_pyproject_purelib.py . [ 39%] tests/test_schema.py ................................................... [ 58%] tests/test_settings.py ................................. [ 70%] tests/test_settings_overrides.py ...................................................... [ 89%] tests/test_setuptools_abi3.py . [ 90%] tests/test_setuptools_pep517.py ... [ 91%] tests/test_shutil.py ... [ 92%] tests/test_simple_pure.py ... [ 93%] tests/test_simplest_c.py ..... [ 95%] tests/test_skbuild_settings.py ........... [ 99%] tests/test_wheelfile_utils.py .. [100%] ========================================================================================= XFAILURES ========================================================================================= __________________________________________________________________________________ test_get_python_library __________________________________________________________________________________ @pytest.mark.xfail( strict=False, reason="Doesn't matter if this fails, usually not used" ) def test_get_python_library(): pprint.pprint( { k: v for k, v in sysconfig.get_config_vars().items() if isinstance(v, str) and 128 > len(v) > 2 and not k.startswith("MODULE") } ) lib = get_python_library({}) if sysconfig.get_platform().startswith("win"): assert lib assert lib.is_file() else: > assert lib is None E AssertionError: assert PosixPath('/usr/lib64/libpython3.10.so') is None tests/test_builder.py:74: AssertionError ----------------------------------------------------------------------------------- Captured stdout call ------------------------------------------------------------------------------------ {'AR': '/usr/bin/gcc-ar', 'ARFLAGS': 'rcs', 'BASECFLAGS': '-Wno-unused-result -Wsign-compare', 'BASECPPFLAGS': '-IObjects -IInclude -IPython', 'BINDIR': '/usr/bin', 'BINLIBDEST': '/usr/lib64/python3.10', 'BLDLIBRARY': '-L. -lpython3.10', 'BUILDPYTHON': 'python', 'BUILD_GNU_TYPE': 'x86_64-redhat-linux-gnu', 'CC': '/usr/bin/gcc', 'CCSHARED': '-fPIC', 'CFLAGSFORSHARED': '-fPIC', 'CONFIGFILES': 'configure configure.ac acconfig.h pyconfig.h.in ' 'Makefile.pre.in', 'CONFINCLUDEDIR': '/usr/include', 'CONFINCLUDEPY': '/usr/include/python3.10', 'COVERAGE_INFO': '/home/tkloczko/rpmbuild/BUILD/Python-3.10.14/x86_64-redhat-linux-gnu-optimized/coverage.info', 'COVERAGE_REPORT': '/home/tkloczko/rpmbuild/BUILD/Python-3.10.14/x86_64-redhat-linux-gnu-optimized/lcov-report', 'COVERAGE_REPORT_OPTIONS': '--no-branch-coverage --title "CPython lcov ' 'report"', 'CPPFLAGS': '-IObjects -IInclude -IPython -I. -I../Include', 'CXX': '/usr/bin/g++', 'DESTDIRS': '/usr /usr/lib64 /usr/lib64/python3.10 ' '/usr/lib64/python3.10/lib-dynload', 'DESTLIB': '/usr/lib64/python3.10', 'DESTSHARED': '/usr/lib64/python3.10/lib-dynload', 'DIST': 'README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in ' 'Makefile.pre.in Include Lib Misc Ext-dummy', 'DISTDIRS': 'Include Lib Misc Ext-dummy', 'DISTFILES': 'README.rst ChangeLog configure configure.ac acconfig.h ' 'pyconfig.h.in Makefile.pre.in', 'DTRACE': '/usr/bin/dtrace', 'DTRACE_HEADERS': 'Include/pydtrace_probes.h', 'DTRACE_OBJS': 'Python/pydtrace.o', 'DYNLOADFILE': 'dynload_shlib.o', 'EXT_SUFFIX': '.cpython-310-x86_64-linux-gnu.so', 'GNULD': 'yes', 'HOST_GNU_TYPE': 'x86_64-redhat-linux-gnu', 'INCLDIRSTOMAKE': '/usr/include /usr/include /usr/include/python3.10 ' '/usr/include/python3.10', 'INCLUDEDIR': '/usr/include', 'INCLUDEPY': '/usr/include/python3.10', 'INSTALL': '/usr/bin/install -c', 'INSTALL_DATA': '/usr/bin/install -c -m 644', 'INSTALL_PROGRAM': '/usr/bin/install -c', 'INSTALL_SCRIPT': '/usr/bin/install -c', 'INSTALL_SHARED': '/usr/bin/install -c -m 755', 'INSTSONAME': 'libpython3.10.so.1.0', 'IO_H': 'Modules/_io/_iomodule.h', 'LDCXXSHARED': '/usr/bin/g++ -shared', 'LDLIBRARY': 'libpython3.10.so', 'LDVERSION': '3.10', 'LIBDEST': '/usr/lib64/python3.10', 'LIBDIR': '/usr/lib64', 'LIBM': '-lm', 'LIBOBJDIR': 'Python/', 'LIBPC': '/usr/lib64/pkgconfig', 'LIBPL': '/usr/lib64/python3.10/config-3.10-x86_64-linux-gnu', 'LIBRARY': 'libpython3.10.a', 'LIBRARY_DEPS': 'libpython3.10.a libpython3.10.so libpython3.so', 'LIBS': '-lcrypt -ldl -lm', 'LIBSUBDIRS': 'asyncio \\', 'LINKCC': '/usr/bin/gcc', 'LINKFORSHARED': '-Xlinker -export-dynamic', 'LLVM_PROF_MERGER': 'true', 'MACHDEP': 'linux', 'MACHDESTLIB': '/usr/lib64/python3.10', 'MAINCC': '/usr/bin/gcc', 'MAKESETUP': '../Modules/makesetup', 'MANDIR': '/usr/share/man', 'MKDIR_P': '/usr/bin/mkdir -p', 'MULTIARCH': 'x86_64-linux-gnu', 'MULTIARCH_CPPFLAGS': '-DMULTIARCH=\\"x86_64-linux-gnu\\"', 'NO_AS_NEEDED': '-Wl,--no-as-needed', 'OPENSSL_LIBS': '-lssl -lcrypto', 'OPT': '-DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -g -fwrapv -O3 -Wall', 'PARSER_OBJS': '\\ \\ Parser/myreadline.o Parser/tokenizer.o', 'PGO_PROF_GEN_FLAG': '-fprofile-generate', 'PGO_PROF_USE_FLAG': '-fprofile-use -fprofile-correction', 'PLATLIBDIR': 'lib64', 'PROFILE_TASK': '-m test --pgo --timeout=1200', 'PY3LIBRARY': 'libpython3.so', 'PYTHON': 'python', 'PYTHONFRAMEWORKDIR': 'no-framework', 'PYTHON_FOR_BUILD': './python -E', 'PY_BUILTIN_HASHLIB_HASHES': '"md5,sha1,sha256,sha512,sha3,blake2"', 'PY_CPPFLAGS': '-IObjects -IInclude -IPython -I. -I../Include', 'PY_FORMAT_SIZE_T': '"z"', 'QUICKTESTOPTS': '-x test_subprocess test_io test_lib2to3 \\', 'READELF': 'readelf', 'RESSRCDIR': 'Mac/Resources/framework', 'RETSIGTYPE': 'void', 'RUNSHARED': 'LD_LIBRARY_PATH=/home/tkloczko/rpmbuild/BUILD/Python-3.10.14/x86_64-redhat-linux-gnu-optimized', 'SCRIPTDIR': '/usr/lib64', 'SHELL': '/bin/sh', 'SHLIBS': '-lcrypt -ldl -lm', 'SHLIB_SUFFIX': '.so', 'SO': '.cpython-310-x86_64-linux-gnu.so', 'SOABI': 'cpython-310-x86_64-linux-gnu', 'SRCDIRS': 'Parser Objects Python Modules Modules/_io Programs', 'SRC_GDB_HOOKS': '../Tools/gdb/libpython.py', 'STRICT_SYSV_CURSES': "/* Don't use ncurses extensions */", 'SUBDIRSTOO': 'Include Lib Misc', 'SYSLIBS': '-lm', 'TCLTK_LIBS': '-ltk8.6 -ltkstub8.6 -ltcl8.6 -ltclstub8.6 -lX11', 'TESTPYTHON': 'LD_LIBRARY_PATH=/home/tkloczko/rpmbuild/BUILD/Python-3.10.14/x86_64-redhat-linux-gnu-optimized ' './python', 'TESTSUBDIRS': 'ctypes/test \\', 'TEST_MODULES': 'yes', 'TZPATH': '/usr/share/zoneinfo', 'UPDATE_FILE': '../Tools/scripts/update_file.py', 'VERSION': '3.10', 'XMLLIBSUBDIRS': 'xml xml/dom xml/etree xml/parsers xml/sax', 'abs_builddir': '/home/tkloczko/rpmbuild/BUILD/Python-3.10.14/x86_64-redhat-linux-gnu-optimized', 'abs_srcdir': '/home/tkloczko/rpmbuild/BUILD/Python-3.10.14/x86_64-redhat-linux-gnu-optimized/..', 'base': '/usr', 'datarootdir': '/usr/share', 'exec_prefix': '/usr', 'installed_base': '/usr', 'installed_platbase': '/usr', 'platbase': '/usr', 'platlibdir': 'lib64', 'prefix': '/usr', 'projectbase': '/usr/bin', 'py_version': '3.10.14', 'py_version_nodot': '310', 'py_version_short': '3.10', 'srcdir': '/usr/lib64/python3.10/config-3.10-x86_64-linux-gnu', 'userbase': '/home/tkloczko/.local'} ================================================================================== short test summary info ================================================================================== SKIPPED [1] tests/test_builder.py:77: MSVC only SKIPPED [1] tests/test_dynamic_metadata.py:118: install hatch-fancy-pypi-readme and setuptools-scm to test the dynamic metadata plugins SKIPPED [1] tests/test_program_search.py:18: could not import 'cmake': No module named 'cmake' SKIPPED [1] tests/test_program_search.py:27: could not import 'ninja': No module named 'ninja' SKIPPED [1] tests/test_pyproject_pep517.py:294: Doesn't work yet XFAIL tests/test_builder.py::test_get_python_library - Doesn't matter if this fails, usually not used ============================================================ 269 passed, 5 skipped, 27 deselected, 1 xfailed in 78.50s (0:01:18) ============================================================ ```
henryiii commented 2 months ago

Great!

And pytest will fix the verbose xfail output next release.