Dasharo / open-source-firmware-validation

OSFV infrastructure with automated tests and scripts for managing test results
Apache License 2.0
9 stars 2 forks source link

Can't install `requirements.txt` on Fedora 41, Python 3.13.0 #598

Open m-iwanicki opened 1 week ago

m-iwanicki commented 1 week ago

Device

-

RTE version

-

OSFV version

develop

Affected component(s) or functionality

No response

Brief summary

pip install -r requirements.txt ends in error

How reproducible

100%

How to reproduce

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Expected behavior

Successful installation of dependencies

Actual behavior

Failure

ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (cffi, greenlet)

Link to screenshots or logs

(venv) miwanicki@3M02 ➜  ~/projects/open-source-firmware-validation git:(591-duplicate-keywords) pip install -r requirements.txt
Collecting osfv@ git+https://github.com/Dasharo/osfv-scripts.git@6f7eb96d2f586e00f0f69d52ac0ed9dfc1208eec#subdirectory=osfv_cli (from -r requirements.txt (line 25))
  Using cached osfv-0.5.6-py3-none-any.whl
Collecting pyte@ git+https://github.com/3mdeb/pyte@b81646ec9f754aab34ed671b3c852b01cc72bdb4 (from -r requirements.txt (line 40))
  Using cached pyte-0.8.0-py3-none-any.whl
Collecting robotframework@ git+https://github.com/3mdeb/robotframework@6006ce0b3d5fc6b45c5eb040dc859acd64bfa846 (from -r requirements.txt (line 47))
  Using cached robotframework-5.0-py3-none-any.whl
Collecting bcrypt==4.1.2 (from -r requirements.txt (line 1))
  Using cached bcrypt-4.1.2-cp39-abi3-manylinux_2_28_x86_64.whl.metadata (9.5 kB)
Collecting certifi==2024.2.2 (from -r requirements.txt (line 2))
  Using cached certifi-2024.2.2-py3-none-any.whl.metadata (2.2 kB)
Collecting cffi==1.16.0 (from -r requirements.txt (line 3))
  Using cached cffi-1.16.0.tar.gz (512 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting cfgv==3.4.0 (from -r requirements.txt (line 4))
  Using cached cfgv-3.4.0-py2.py3-none-any.whl.metadata (8.5 kB)
Collecting charset-normalizer==3.3.2 (from -r requirements.txt (line 5))
  Downloading charset_normalizer-3.3.2-py3-none-any.whl.metadata (33 kB)
Collecting click==8.1.7 (from -r requirements.txt (line 6))
  Using cached click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting colorama==0.4.6 (from -r requirements.txt (line 7))
  Using cached colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB)
Collecting cryptography==42.0.5 (from -r requirements.txt (line 8))
  Using cached cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl.metadata (5.3 kB)
Collecting dbbot-sqlalchemy==0.2 (from -r requirements.txt (line 9))
  Using cached dbbot_sqlalchemy-0.2-py3-none-any.whl
Collecting distlib==0.3.8 (from -r requirements.txt (line 10))
  Using cached distlib-0.3.8-py2.py3-none-any.whl.metadata (5.1 kB)
Collecting Faker==24.11.0 (from -r requirements.txt (line 11))
  Using cached Faker-24.11.0-py3-none-any.whl.metadata (15 kB)
Collecting filelock==3.13.4 (from -r requirements.txt (line 12))
  Using cached filelock-3.13.4-py3-none-any.whl.metadata (2.8 kB)
Collecting greenlet==3.0.3 (from -r requirements.txt (line 13))
  Using cached greenlet-3.0.3.tar.gz (182 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting gspread==3.1.0 (from -r requirements.txt (line 14))
  Using cached gspread-3.1.0-py3-none-any.whl.metadata (1.2 kB)
Collecting httplib2==0.22.0 (from -r requirements.txt (line 15))
  Using cached httplib2-0.22.0-py3-none-any.whl.metadata (2.6 kB)
Collecting identify==2.5.36 (from -r requirements.txt (line 16))
  Using cached identify-2.5.36-py2.py3-none-any.whl.metadata (4.4 kB)
Collecting idna==3.7 (from -r requirements.txt (line 17))
  Using cached idna-3.7-py3-none-any.whl.metadata (9.9 kB)
Collecting importlib_resources==6.4.0 (from -r requirements.txt (line 18))
  Using cached importlib_resources-6.4.0-py3-none-any.whl.metadata (3.9 kB)
Collecting Jinja2==3.1.3 (from -r requirements.txt (line 19))
  Using cached Jinja2-3.1.3-py3-none-any.whl.metadata (3.3 kB)
Collecting markdown-it-py==3.0.0 (from -r requirements.txt (line 20))
  Using cached markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)
Collecting MarkupSafe==2.1.5 (from -r requirements.txt (line 21))
  Downloading MarkupSafe-2.1.5.tar.gz (19 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting mdurl==0.1.2 (from -r requirements.txt (line 22))
  Using cached mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
Collecting nodeenv==1.8.0 (from -r requirements.txt (line 23))
  Using cached nodeenv-1.8.0-py2.py3-none-any.whl.metadata (21 kB)
Collecting oauth2client==4.1.3 (from -r requirements.txt (line 24))
  Using cached oauth2client-4.1.3-py2.py3-none-any.whl.metadata (1.2 kB)
Collecting paramiko==3.4.0 (from -r requirements.txt (line 26))
  Using cached paramiko-3.4.0-py3-none-any.whl.metadata (4.4 kB)
Collecting pathspec==0.9.0 (from -r requirements.txt (line 27))
  Using cached pathspec-0.9.0-py2.py3-none-any.whl.metadata (12 kB)
Collecting pexpect==4.9.0 (from -r requirements.txt (line 28))
  Using cached pexpect-4.9.0-py2.py3-none-any.whl.metadata (2.5 kB)
Collecting platformdirs==4.2.1 (from -r requirements.txt (line 29))
  Using cached platformdirs-4.2.1-py3-none-any.whl.metadata (11 kB)
Collecting pre-commit==3.7.0 (from -r requirements.txt (line 30))
  Using cached pre_commit-3.7.0-py2.py3-none-any.whl.metadata (1.3 kB)
Collecting ptyprocess==0.7.0 (from -r requirements.txt (line 31))
  Using cached ptyprocess-0.7.0-py2.py3-none-any.whl.metadata (1.3 kB)
Collecting pyasn1==0.6.0 (from -r requirements.txt (line 32))
  Using cached pyasn1-0.6.0-py2.py3-none-any.whl.metadata (8.3 kB)
Collecting pyasn1_modules==0.4.0 (from -r requirements.txt (line 33))
  Using cached pyasn1_modules-0.4.0-py3-none-any.whl.metadata (3.4 kB)
Collecting pycparser==2.22 (from -r requirements.txt (line 34))
  Using cached pycparser-2.22-py3-none-any.whl.metadata (943 bytes)
Collecting Pygments==2.17.2 (from -r requirements.txt (line 35))
  Using cached pygments-2.17.2-py3-none-any.whl.metadata (2.6 kB)
Collecting PyNaCl==1.5.0 (from -r requirements.txt (line 36))
  Using cached PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl.metadata (8.6 kB)
Collecting pyOpenSSL==24.1.0 (from -r requirements.txt (line 37))
  Using cached pyOpenSSL-24.1.0-py3-none-any.whl.metadata (12 kB)
Collecting pyotp==2.9.0 (from -r requirements.txt (line 38))
  Using cached pyotp-2.9.0-py3-none-any.whl.metadata (9.8 kB)
Collecting pyparsing==3.1.2 (from -r requirements.txt (line 39))
  Using cached pyparsing-3.1.2-py3-none-any.whl.metadata (5.1 kB)
Collecting python-dateutil==2.9.0.post0 (from -r requirements.txt (line 41))
  Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting pytz==2024.1 (from -r requirements.txt (line 42))
  Using cached pytz-2024.1-py2.py3-none-any.whl.metadata (22 kB)
Collecting PyYAML==6.0.1 (from -r requirements.txt (line 43))
  Downloading PyYAML-6.0.1.tar.gz (125 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting requests==2.31.0 (from -r requirements.txt (line 44))
  Using cached requests-2.31.0-py3-none-any.whl.metadata (4.6 kB)
Collecting rich==13.7.1 (from -r requirements.txt (line 45))
  Using cached rich-13.7.1-py3-none-any.whl.metadata (18 kB)
Collecting rich-click==1.7.4 (from -r requirements.txt (line 46))
  Using cached rich_click-1.7.4-py3-none-any.whl.metadata (22 kB)
Collecting robotframework-faker==5.0.0 (from -r requirements.txt (line 48))
  Using cached robotframework_faker-5.0.0-py3-none-any.whl.metadata (3.1 kB)
Collecting robotframework-requests==0.9.4 (from -r requirements.txt (line 49))
  Using cached robotframework_requests-0.9.4-py3-none-any.whl.metadata (7.2 kB)
Collecting robotframework-robocop==5.0.4 (from -r requirements.txt (line 50))
  Using cached robotframework_robocop-5.0.4-py3-none-any.whl.metadata (14 kB)
Collecting robotframework-sherlock==0.3.0 (from -r requirements.txt (line 51))
  Using cached robotframework_sherlock-0.3.0-py3-none-any.whl.metadata (3.1 kB)
Collecting robotframework-sshlibrary==3.5.1 (from -r requirements.txt (line 52))
  Using cached robotframework_sshlibrary-3.5.1-py3-none-any.whl
Collecting robotframework-tidy==4.11.0 (from -r requirements.txt (line 53))
  Using cached robotframework_tidy-4.11.0-py3-none-any.whl.metadata (5.1 kB)
Collecting rsa==4.9 (from -r requirements.txt (line 54))
  Using cached rsa-4.9-py3-none-any.whl.metadata (4.2 kB)
Collecting scp==0.14.5 (from -r requirements.txt (line 55))
  Using cached scp-0.14.5-py2.py3-none-any.whl.metadata (4.3 kB)
Collecting semver==3.0.2 (from -r requirements.txt (line 56))
  Using cached semver-3.0.2-py3-none-any.whl.metadata (5.0 kB)
Collecting setuptools==69.5.1 (from -r requirements.txt (line 57))
  Using cached setuptools-69.5.1-py3-none-any.whl.metadata (6.2 kB)
Collecting six==1.16.0 (from -r requirements.txt (line 58))
  Using cached six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
Collecting SQLAlchemy==2.0.29 (from -r requirements.txt (line 59))
  Using cached SQLAlchemy-2.0.29-py3-none-any.whl.metadata (9.6 kB)
Collecting tabulate==0.8.9 (from -r requirements.txt (line 60))
  Using cached tabulate-0.8.9-py3-none-any.whl.metadata (23 kB)
Collecting toml==0.10.2 (from -r requirements.txt (line 61))
  Using cached toml-0.10.2-py2.py3-none-any.whl.metadata (7.1 kB)
Collecting tomli==2.0.1 (from -r requirements.txt (line 62))
  Using cached tomli-2.0.1-py3-none-any.whl.metadata (8.9 kB)
Collecting typing_extensions==4.11.0 (from -r requirements.txt (line 63))
  Using cached typing_extensions-4.11.0-py3-none-any.whl.metadata (3.0 kB)
Collecting Unidecode==1.3.8 (from -r requirements.txt (line 64))
  Using cached Unidecode-1.3.8-py3-none-any.whl.metadata (13 kB)
Collecting urllib3==2.2.1 (from -r requirements.txt (line 65))
  Using cached urllib3-2.2.1-py3-none-any.whl.metadata (6.4 kB)
Collecting virtualenv==20.26.0 (from -r requirements.txt (line 66))
  Using cached virtualenv-20.26.0-py3-none-any.whl.metadata (4.4 kB)
Collecting voluptuous==0.14.2 (from -r requirements.txt (line 67))
  Using cached voluptuous-0.14.2-py3-none-any.whl.metadata (20 kB)
Collecting wakeonlan==3.1.0 (from -r requirements.txt (line 68))
  Using cached wakeonlan-3.1.0-py3-none-any.whl.metadata (4.3 kB)
Collecting wcwidth==0.2.13 (from -r requirements.txt (line 69))
  Using cached wcwidth-0.2.13-py2.py3-none-any.whl.metadata (14 kB)
Collecting websocket-client==1.8.0 (from -r requirements.txt (line 70))
  Using cached websocket_client-1.8.0-py3-none-any.whl.metadata (8.0 kB)
Collecting wrapt==1.16.0 (from -r requirements.txt (line 71))
  Using cached wrapt-1.16.0-py3-none-any.whl.metadata (6.6 kB)
Using cached bcrypt-4.1.2-cp39-abi3-manylinux_2_28_x86_64.whl (698 kB)
Using cached certifi-2024.2.2-py3-none-any.whl (163 kB)
Using cached cfgv-3.4.0-py2.py3-none-any.whl (7.2 kB)
Downloading charset_normalizer-3.3.2-py3-none-any.whl (48 kB)
Using cached click-8.1.7-py3-none-any.whl (97 kB)
Using cached colorama-0.4.6-py2.py3-none-any.whl (25 kB)
Using cached cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl (4.6 MB)
Using cached distlib-0.3.8-py2.py3-none-any.whl (468 kB)
Using cached Faker-24.11.0-py3-none-any.whl (1.8 MB)
Using cached filelock-3.13.4-py3-none-any.whl (11 kB)
Using cached gspread-3.1.0-py3-none-any.whl (16 kB)
Using cached httplib2-0.22.0-py3-none-any.whl (96 kB)
Using cached identify-2.5.36-py2.py3-none-any.whl (98 kB)
Using cached idna-3.7-py3-none-any.whl (66 kB)
Using cached importlib_resources-6.4.0-py3-none-any.whl (38 kB)
Using cached Jinja2-3.1.3-py3-none-any.whl (133 kB)
Using cached markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
Using cached mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Using cached nodeenv-1.8.0-py2.py3-none-any.whl (22 kB)
Using cached oauth2client-4.1.3-py2.py3-none-any.whl (98 kB)
Using cached paramiko-3.4.0-py3-none-any.whl (225 kB)
Using cached pathspec-0.9.0-py2.py3-none-any.whl (31 kB)
Using cached pexpect-4.9.0-py2.py3-none-any.whl (63 kB)
Using cached platformdirs-4.2.1-py3-none-any.whl (17 kB)
Using cached pre_commit-3.7.0-py2.py3-none-any.whl (204 kB)
Using cached ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)
Using cached pyasn1-0.6.0-py2.py3-none-any.whl (85 kB)
Using cached pyasn1_modules-0.4.0-py3-none-any.whl (181 kB)
Using cached pycparser-2.22-py3-none-any.whl (117 kB)
Using cached pygments-2.17.2-py3-none-any.whl (1.2 MB)
Using cached PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (856 kB)
Using cached pyOpenSSL-24.1.0-py3-none-any.whl (56 kB)
Using cached pyotp-2.9.0-py3-none-any.whl (13 kB)
Using cached pyparsing-3.1.2-py3-none-any.whl (103 kB)
Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Using cached pytz-2024.1-py2.py3-none-any.whl (505 kB)
Using cached requests-2.31.0-py3-none-any.whl (62 kB)
Using cached rich-13.7.1-py3-none-any.whl (240 kB)
Using cached rich_click-1.7.4-py3-none-any.whl (32 kB)
Using cached robotframework_faker-5.0.0-py3-none-any.whl (4.3 kB)
Using cached robotframework_requests-0.9.4-py3-none-any.whl (21 kB)
Using cached robotframework_robocop-5.0.4-py3-none-any.whl (114 kB)
Using cached robotframework_sherlock-0.3.0-py3-none-any.whl (50 kB)
Using cached robotframework_tidy-4.11.0-py3-none-any.whl (109 kB)
Using cached rsa-4.9-py3-none-any.whl (34 kB)
Using cached scp-0.14.5-py2.py3-none-any.whl (8.7 kB)
Using cached semver-3.0.2-py3-none-any.whl (17 kB)
Using cached setuptools-69.5.1-py3-none-any.whl (894 kB)
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Using cached SQLAlchemy-2.0.29-py3-none-any.whl (1.9 MB)
Using cached tabulate-0.8.9-py3-none-any.whl (25 kB)
Using cached toml-0.10.2-py2.py3-none-any.whl (16 kB)
Using cached tomli-2.0.1-py3-none-any.whl (12 kB)
Using cached typing_extensions-4.11.0-py3-none-any.whl (34 kB)
Using cached Unidecode-1.3.8-py3-none-any.whl (235 kB)
Using cached urllib3-2.2.1-py3-none-any.whl (121 kB)
Using cached virtualenv-20.26.0-py3-none-any.whl (3.9 MB)
Using cached voluptuous-0.14.2-py3-none-any.whl (31 kB)
Using cached wakeonlan-3.1.0-py3-none-any.whl (5.0 kB)
Using cached wcwidth-0.2.13-py2.py3-none-any.whl (34 kB)
Using cached websocket_client-1.8.0-py3-none-any.whl (58 kB)
Using cached wrapt-1.16.0-py3-none-any.whl (23 kB)
Building wheels for collected packages: cffi, greenlet, MarkupSafe, PyYAML
  Building wheel for cffi (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for cffi (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [55 lines of output]
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      Package 'libffi' not found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      Package 'libffi' not found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      Package 'libffi' not found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      Package 'libffi' not found
      Package libffi was not found in the pkg-config search path.
      Perhaps you should add the directory containing `libffi.pc'
      to the PKG_CONFIG_PATH environment variable
      Package 'libffi' not found
      running bdist_wheel
      running build
      running build_py
      creating build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/__init__.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/_imp_emulation.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/_shimmed_dist_utils.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/api.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/backend_ctypes.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/cffi_opcode.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/commontypes.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/cparser.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/error.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/ffiplatform.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/lock.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/model.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/pkgconfig.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/recompiler.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/setuptools_ext.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/vengine_cpy.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/vengine_gen.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/verifier.py -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/_cffi_include.h -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/parse_c_type.h -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/_embedding.h -> build/lib.linux-x86_64-cpython-313/cffi
      copying src/cffi/_cffi_errors.h -> build/lib.linux-x86_64-cpython-313/cffi
      running build_ext
      building '_cffi_backend' extension
      creating build/temp.linux-x86_64-cpython-313/src/c
      gcc -fno-strict-overflow -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -fexceptions -fcf-protection -fexceptions -fcf-protection -fexceptions -fcf-protection -O3 -fPIC -DFFI_BUILDING=1 -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/ffi -I/usr/include/libffi -I/home/miwanicki/projects/open-source-firmware-validation/venv/include -I/usr/include/python3.13 -c src/c/_cffi_backend.c -o build/temp.linux-x86_64-cpython-313/src/c/_cffi_backend.o
      src/c/_cffi_backend.c:15:10: fatal error: ffi.h: No such file or directory
         15 | #include <ffi.h>
            |          ^~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for cffi
  Building wheel for greenlet (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for greenlet (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [203 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/__init__.py -> build/lib.linux-x86_64-cpython-313/greenlet
      creating build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/__init__.py -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      creating build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/__init__.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/fail_clearing_run_switches.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/fail_cpp_exception.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/fail_initialstub_already_started.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/fail_slp_switch.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/fail_switch_three_greenlets.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/fail_switch_three_greenlets2.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/fail_switch_two_greenlets.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/leakcheck.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_contextvars.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_cpp.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_extension_interface.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_gc.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_generator.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_generator_nested.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_greenlet.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_greenlet_trash.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_leaks.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_stack_saved.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_throw.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_tracing.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_version.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/test_weakref.py -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      running egg_info
      writing src/greenlet.egg-info/PKG-INFO
      writing dependency_links to src/greenlet.egg-info/dependency_links.txt
      writing requirements to src/greenlet.egg-info/requires.txt
      writing top-level names to src/greenlet.egg-info/top_level.txt
      reading manifest file 'src/greenlet.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files found matching 'benchmarks/*.json'
      no previously-included directories found matching 'docs/_build'
      warning: no files found matching '*.py' under directory 'appveyor'
      warning: no previously-included files matching '*.pyc' found anywhere in distribution
      warning: no previously-included files matching '*.pyd' found anywhere in distribution
      warning: no previously-included files matching '*.so' found anywhere in distribution
      warning: no previously-included files matching '.coverage' found anywhere in distribution
      adding license file 'LICENSE'
      adding license file 'LICENSE.PSF'
      adding license file 'AUTHORS'
      writing manifest file 'src/greenlet.egg-info/SOURCES.txt'
      copying src/greenlet/TBrokenGreenlet.cpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/TExceptionState.cpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/TGreenlet.cpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/TGreenletGlobals.cpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/TMainGreenlet.cpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/TPythonState.cpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/TStackState.cpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/TThreadStateDestroy.cpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/TUserGreenlet.cpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet.cpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet.h -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_allocator.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_compiler_compat.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_cpython_add_pending.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_cpython_compat.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_exceptions.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_greenlet.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_internal.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_refs.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_slp_switch.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_thread_state.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_thread_state_dict_cleanup.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/greenlet_thread_support.hpp -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/slp_platformselect.h -> build/lib.linux-x86_64-cpython-313/greenlet
      copying src/greenlet/platform/setup_switch_x64_masm.cmd -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_aarch64_gcc.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_alpha_unix.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_amd64_unix.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_arm32_gcc.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_arm32_ios.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_arm64_masm.asm -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_arm64_masm.obj -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_arm64_msvc.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_csky_gcc.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_loongarch64_linux.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_m68k_gcc.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_mips_unix.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_ppc64_aix.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_ppc64_linux.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_ppc_aix.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_ppc_linux.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_ppc_macosx.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_ppc_unix.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_riscv_unix.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_s390_unix.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_sparc_sun_gcc.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_x32_unix.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_x64_masm.asm -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_x64_masm.obj -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_x64_msvc.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_x86_msvc.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/platform/switch_x86_unix.h -> build/lib.linux-x86_64-cpython-313/greenlet/platform
      copying src/greenlet/tests/_test_extension.c -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      copying src/greenlet/tests/_test_extension_cpp.cpp -> build/lib.linux-x86_64-cpython-313/greenlet/tests
      running build_ext
      building 'greenlet._greenlet' extension
      creating build/temp.linux-x86_64-cpython-313/src/greenlet
      g++ -fno-strict-overflow -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -fexceptions -fcf-protection -fexceptions -fcf-protection -fexceptions -fcf-protection -O3 -fPIC -I/home/miwanicki/projects/open-source-firmware-validation/venv/include -I/usr/include/python3.13 -c src/greenlet/greenlet.cpp -o build/temp.linux-x86_64-cpython-313/src/greenlet/greenlet.o
      In file included from src/greenlet/greenlet_greenlet.hpp:26,
                       from src/greenlet/greenlet_internal.hpp:20,
                       from src/greenlet/greenlet.cpp:19:
      /usr/include/python3.13/internal/pycore_frame.h:8:4: error: #error "this header requires Py_BUILD_CORE define"
          8 | #  error "this header requires Py_BUILD_CORE define"
            |    ^~~~~
      In file included from /usr/include/python3.13/internal/pycore_frame.h:13:
      /usr/include/python3.13/internal/pycore_code.h:8:4: error: #error "this header requires Py_BUILD_CORE define"
          8 | #  error "this header requires Py_BUILD_CORE define"
            |    ^~~~~
      In file included from /usr/include/python3.13/internal/pycore_code.h:11:
      /usr/include/python3.13/internal/pycore_lock.h:13:4: error: #error "this header requires Py_BUILD_CORE define"
         13 | #  error "this header requires Py_BUILD_CORE define"
            |    ^~~~~
      In file included from /usr/include/python3.13/internal/pycore_code.h:12:
      /usr/include/python3.13/internal/pycore_backoff.h:9:4: error: #error "this header requires Py_BUILD_CORE define"
          9 | #  error "this header requires Py_BUILD_CORE define"
            |    ^~~~~
      src/greenlet/greenlet_greenlet.hpp:104:9: error: ‘_PyCFrame’ does not name a type; did you mean ‘_frame’?
        104 |         _PyCFrame* cframe;
            |         ^~~~~~~~~
            |         _frame
      src/greenlet/greenlet_greenlet.hpp:147:29: error: ‘_PyCFrame’ has not been declared
        147 |         void set_new_cframe(_PyCFrame& frame) noexcept;
            |                             ^~~~~~~~~
      In file included from src/greenlet/greenlet.cpp:33:
      src/greenlet/TUserGreenlet.cpp: In member function ‘virtual greenlet::Greenlet::switchstack_result_t greenlet::UserGreenlet::g_initialstub(void*)’:
      src/greenlet/TUserGreenlet.cpp:280:5: error: ‘_PyCFrame’ was not declared in this scope; did you mean ‘_frame’?
        280 |     _PyCFrame trace_info;
            |     ^~~~~~~~~
            |     _frame
      src/greenlet/TUserGreenlet.cpp:282:39: error: ‘trace_info’ was not declared in this scope
        282 |     this->python_state.set_new_cframe(trace_info);
            |                                       ^~~~~~~~~~
      In file included from src/greenlet/greenlet.cpp:36:
      src/greenlet/TPythonState.cpp: In constructor ‘greenlet::PythonState::PythonState()’:
      src/greenlet/TPythonState.cpp:12:6: error: class ‘greenlet::PythonState’ does not have any field named ‘cframe’
         12 |     ,cframe(nullptr)
            |      ^~~~~~
      src/greenlet/TPythonState.cpp:79:11: error: ‘class greenlet::PythonState’ has no member named ‘cframe’
         79 |     this->cframe = &PyThreadState_GET()->root_cframe;
            |           ^~~~~~
      src/greenlet/TPythonState.cpp:79:42: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘root_cframe’
         79 |     this->cframe = &PyThreadState_GET()->root_cframe;
            |                                          ^~~~~~~~~~~
      src/greenlet/TPythonState.cpp: In member function ‘void greenlet::PythonState::operator<<(const PyThreadState*)’:
      src/greenlet/TPythonState.cpp:125:11: error: ‘class greenlet::PythonState’ has no member named ‘cframe’
        125 |     this->cframe = tstate->cframe;
            |           ^~~~~~
      src/greenlet/TPythonState.cpp:125:28: error: ‘const PyThreadState’ {aka ‘const struct _ts’} has no member named ‘cframe’
        125 |     this->cframe = tstate->cframe;
            |                            ^~~~~~
      src/greenlet/TPythonState.cpp:133:31: error: ‘C_RECURSION_LIMIT’ was not declared in this scope; did you mean ‘Py_C_RECURSION_LIMIT’?
        133 |     this->c_recursion_depth = C_RECURSION_LIMIT - tstate->c_recursion_remaining;
            |                               ^~~~~~~~~~~~~~~~~
            |                               Py_C_RECURSION_LIMIT
      src/greenlet/TPythonState.cpp:137:35: error: ‘const PyThreadState’ {aka ‘const struct _ts’} has no member named ‘cframe’
        137 |     this->current_frame = tstate->cframe->current_frame;
            |                                   ^~~~~~
      src/greenlet/TPythonState.cpp:147:42: error: ‘const PyThreadState’ {aka ‘const struct _ts’} has no member named ‘trash’
        147 |     this->trash_delete_nesting = tstate->trash.delete_nesting;
            |                                          ^~~~~
      src/greenlet/TPythonState.cpp: In member function ‘void greenlet::PythonState::operator>>(PyThreadState*)’:
      src/greenlet/TPythonState.cpp:188:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘cframe’
        188 |     tstate->cframe = this->cframe;
            |             ^~~~~~
      src/greenlet/TPythonState.cpp:188:28: error: ‘class greenlet::PythonState’ has no member named ‘cframe’
        188 |     tstate->cframe = this->cframe;
            |                            ^~~~~~
      src/greenlet/TPythonState.cpp:202:37: error: ‘C_RECURSION_LIMIT’ was not declared in this scope; did you mean ‘Py_C_RECURSION_LIMIT’?
        202 |     tstate->c_recursion_remaining = C_RECURSION_LIMIT - this->c_recursion_depth;
            |                                     ^~~~~~~~~~~~~~~~~
            |                                     Py_C_RECURSION_LIMIT
      src/greenlet/TPythonState.cpp:207:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘cframe’
        207 |     tstate->cframe->current_frame = this->current_frame;
            |             ^~~~~~
      src/greenlet/TPythonState.cpp:213:13: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘trash’
        213 |     tstate->trash.delete_nesting = this->trash_delete_nesting;
            |             ^~~~~
      src/greenlet/TPythonState.cpp: At global scope:
      src/greenlet/TPythonState.cpp:273:6: error: variable or field ‘set_new_cframe’ declared void
        273 | void PythonState::set_new_cframe(_PyCFrame& frame) noexcept
            |      ^~~~~~~~~~~
      src/greenlet/TPythonState.cpp:273:34: error: ‘_PyCFrame’ was not declared in this scope; did you mean ‘_frame’?
        273 | void PythonState::set_new_cframe(_PyCFrame& frame) noexcept
            |                                  ^~~~~~~~~
            |                                  _frame
      src/greenlet/TPythonState.cpp:273:45: error: ‘frame’ was not declared in this scope; did you mean ‘_frame’?
        273 | void PythonState::set_new_cframe(_PyCFrame& frame) noexcept
            |                                             ^~~~~
            |                                             _frame
      src/greenlet/greenlet.cpp: In function ‘PyObject* mod_get_tstate_trash_delete_nesting(PyObject*)’:
      src/greenlet/greenlet.cpp:1341:36: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘trash’
       1341 |     return PyLong_FromLong(tstate->trash.delete_nesting);
            |                                    ^~~~~
      error: command '/usr/bin/g++' failed with exit code 1
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for greenlet
  Building wheel for MarkupSafe (pyproject.toml) ... done
  Created wheel for MarkupSafe: filename=MarkupSafe-2.1.5-cp313-cp313-linux_x86_64.whl size=15575 sha256=a122fdac4dd1733a9b25bfc3d5b07dcc2d17c3c290410e81dd9eb402a1ff7892
  Stored in directory: /home/miwanicki/.cache/pip/wheels/c2/0c/c0/d6d953ac80cacc2dd1d329d675c67d1e7775bad02a8faedef0
  Building wheel for PyYAML (pyproject.toml) ... done
  Created wheel for PyYAML: filename=PyYAML-6.0.1-cp313-cp313-linux_x86_64.whl size=45236 sha256=306f3217466d498d93347571d88f3e3c62c4ee40a8e6e95f1ebb9eb760432a91
  Stored in directory: /home/miwanicki/.cache/pip/wheels/9c/9e/34/1e1548811b63a9d001469f21797e8b7d5c216d8eb928e7d6ad
Successfully built MarkupSafe PyYAML
Failed to build cffi greenlet

[notice] A new release of pip is available: 24.2 -> 24.3.1
[notice] To update, run: pip install --upgrade pip
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (cffi, greenlet)

Additional context

Upgrading pip to version 24.3.1 didn't help.

Solutions you've tried

Updating failing dependencies: https://github.com/Dasharo/open-source-firmware-validation/pull/597

mysteriousCzrsX commented 3 days ago

To work around that, additional to fixes in #597 you have to create a virtual environment with older version of python that still supports telnetlib:

sudo dnf install python3.12
virtualenv --python=/usr/bin/python3.12 venv
source venv/bin/activate
pip install -r requirements.txt