Bug 2466676

Summary: python-eth-keys: FTBFS in Fedora Rawhide: 6 tests fail with ImportError
Product: [Fedora] Fedora Reporter: Karolina Surma <ksurma>
Component: python-eth-keysAssignee: Peter Lemenkov <lemenkov>
Status: CLOSED RAWHIDE QA Contact:
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: lemenkov
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
URL: https://koschei.fedoraproject.org/package/python-eth-keys
Whiteboard:
Fixed In Version: python-eth-keys-0.7.0-7.fc45 Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2026-05-06 12:43:56 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2412434, 2433833    

Description Karolina Surma 2026-05-05 09:24:50 UTC
Description of problem:
Package python-eth-keys fails to build from source in Fedora Rawhide.

Version-Release number of selected component (if applicable):
0.7.0-6.fc44

Steps to Reproduce:
koji build --scratch f45 python-eth-keys-0.7.0-6.fc44.src.rpm

Additional info:
This package is tracked by Koschei. See:
https://koschei.fedoraproject.org/package/python-eth-keys

Reproducible: Always

Actual Results:
____________ ERROR at setup of test_public_key_generation_is_equal _____________
self = <eth_keys.backends.coincurve.CoinCurveECCBackend object at 0x7fffae5ab9d0>
    def __init__(self) -> None:
        try:
>           import coincurve
__class__  = <class 'eth_keys.backends.coincurve.CoinCurveECCBackend'>
self       = <eth_keys.backends.coincurve.CoinCurveECCBackend object at 0x7fffae5ab9d0>
../BUILDROOT/usr/lib/python3.14/site-packages/eth_keys/backends/coincurve.py:42: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/usr/lib/python3.14/site-packages/coincurve/__init__.py:1: in <module>
    from coincurve.context import GLOBAL_CONTEXT, Context
        __builtins__ = <builtins>
        __cached__ = '/usr/lib/python3.14/site-packages/coincurve/__pycache__/__init__.cpython-314.pyc'
        __doc__    = None
        __file__   = '/usr/lib/python3.14/site-packages/coincurve/__init__.py'
        __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7fffae2b8c50>
        __name__   = 'coincurve'
        __package__ = 'coincurve'
        __path__   = ['/usr/lib/python3.14/site-packages/coincurve']
        __spec__   = ModuleSpec(name='coincurve', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7fffae2b8c50>, origin='/u...n3.14/site-packages/coincurve/__init__.py', submodule_search_locations=['/usr/lib/python3.14/site-packages/coincurve'])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    from __future__ import annotations
    
    from os import urandom
    from threading import Lock
    
>   from coincurve._libsecp256k1 import ffi, lib
E   ModuleNotFoundError: No module named '_cffi_backend'
Lock       = <class '_thread.lock'>
__builtins__ = <builtins>
__cached__ = '/usr/lib/python3.14/site-packages/coincurve/__pycache__/context.cpython-314.pyc'
__doc__    = None
__file__   = '/usr/lib/python3.14/site-packages/coincurve/context.py'
__loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7fffae2b8cb0>
__name__   = 'coincurve.context'
__package__ = 'coincurve'
__spec__   = ModuleSpec(name='coincurve.context', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7fffae2b8cb0>, origin='/usr/lib/python3.14/site-packages/coincurve/context.py')
annotations = _Feature((3, 7, 0, 'beta', 1), None, 16777216)
urandom    = <built-in function urandom>
/usr/lib/python3.14/site-packages/coincurve/context.py:6: ModuleNotFoundError
During handling of the above exception, another exception occurred:
    @pytest.fixture(scope="module")
    def coincurve_key_api():
>       return KeyAPI(backend=CoinCurveECCBackend())
                              ^^^^^^^^^^^^^^^^^^^^^
tests/backends/test_native_backend_against_coincurve.py:49: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
self = <eth_keys.backends.coincurve.CoinCurveECCBackend object at 0x7fffae5ab9d0>
    def __init__(self) -> None:
        try:
            import coincurve
        except ImportError:
>           raise ImportError(
                "The CoinCurveECCBackend requires the coincurve "
                "library which is not available for import."
            )
E           ImportError: The CoinCurveECCBackend requires the coincurve library which is not available for import.
__class__  = <class 'eth_keys.backends.coincurve.CoinCurveECCBackend'>
self       = <eth_keys.backends.coincurve.CoinCurveECCBackend object at 0x7fffae5ab9d0>
../BUILDROOT/usr/lib/python3.14/site-packages/eth_keys/backends/coincurve.py:44: ImportError

Comment 1 Peter Lemenkov 2026-05-06 12:43:56 UTC
Fixed by adding python3-cffi to BuildRequires. The missing _cffi_backend module (provided by python3-cffi) was causing coincurve to fail to import during tests. python-eth-keys-0.7.0-7.fc45 fully addresses this FTBFS issue.