Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

protobuf issue with keepkey_agent 0.9.0 #461

Open
chenrui333 opened this issue Oct 17, 2023 · 0 comments
Open

protobuf issue with keepkey_agent 0.9.0 #461

chenrui333 opened this issue Oct 17, 2023 · 0 comments
Labels

Comments

@chenrui333
Copy link

While trying to upgrade keepkey_agent 0.9.0 to build against py3.12 (along with some dependency updates), I ran into some runtime failure as below:

2023-10-17 16:52:35,198 WARNING      DISPLAY not defined                                                                                  [ui.py:92]
Traceback (most recent call last):
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/bin/keepkey-agent\", line 8, in <module>
    sys.exit(ssh_agent())
             ^^^^^^^^^^^
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/bin/keepkey_agent.py\", line 5, in <lambda>
    ssh_agent = lambda: libagent.ssh.main(keepkey.KeepKey)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/libagent/ssh/__init__.py\", line 173, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/libagent/ssh/__init__.py\", line 308, in main
    for pk in conn.public_keys():
              ^^^^^^^^^^^^^^^^^^
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/libagent/ssh/__init__.py\", line 209, in public_keys
    self.public_keys_cache = conn.export_public_keys(self.identities)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/libagent/ssh/client.py\", line 24, in export_public_keys
    with self.device:
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/libagent/device/interface.py\", line 126, in __enter__
    self.conn = self.connect()
                ^^^^^^^^^^^^^^
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/libagent/device/trezor.py\", line 50, in connect
    transport = self._defs.find_device()
                ^^^^^^^^^^
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/libagent/device/keepkey.py\", line 30, in _defs
    from . import keepkey_defs
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/libagent/device/keepkey_defs.py\", line 5, in <module>
    from keepkeylib.client import CallException
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/keepkeylib/client.py\", line 37, in <module>
    from . import mapping
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/keepkeylib/mapping.py\", line 1, in <module>
    from . import messages_pb2 as proto
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/keepkeylib/messages_pb2.py\", line 17, in <module>
    from . import types_pb2 as types__pb2
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/keepkeylib/types_pb2.py\", line 18, in <module>
    from . import exchange_pb2 as exchange__pb2
  File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/keepkeylib/exchange_pb2.py\", line 32, in <module>
    _descriptor.EnumValueDescriptor(
    File \"/home/linuxbrew/.linuxbrew/Cellar/keepkey-agent/0.9.0_7/libexec/lib/python3.12/site-packages/google/protobuf/descriptor.py\", line 796, in __new__
    _message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
 1. Downgrade the protobuf package to 3.20.x or lower.
 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates

relates to Homebrew/homebrew-core#151437

For now i am gonna downgrade protobuf dependency to 3.20.3

@romanz romanz added the keepkey label Oct 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants