Skip to content
Snippets Groups Projects
user avatar
Matt Harbison authored
I assume this was meant to do the check gracefully.  After shoveling a bunch of
modules into the ignore list in order to get keyring to work out of the box on
CentOS 8, I hit the following error accessing the password, which the change
fixes.  Now the SecretStorage backend works out of the box, without any edits to
the ignore list.

    ** Unknown exception encountered with possibly-broken third-party extension mercurial_keyring
    ** which supports versions unknown of Mercurial.
    ** Please disable mercurial_keyring and try your action again.
    ** If that fixes the bug please report it to https://foss.heptapod.net/mercurial/mercurial_keyring/issues
    ** Python 3.6.8 (default, Apr 16 2020, 01:36:27) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
    ** Mercurial Distributed SCM (version 5.5.2)
    ** Extensions loaded: evolve, topic, rebase, absorb, mercurial_keyring
    Traceback (most recent call last):
      File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/mercurial_keyring.py", line 230, in _read_password_from_keyring
        password = keyring.get_password(KEYRING_SERVICE, pwdkey)
      File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/keyring/core.py", line 53, in get_password
        return _keyring_backend.get_password(service_name, username)
      File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/keyring/backends/chainer.py", line 51, in get_password
        password = keyring.get_password(service, username)
      File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/keyring/backends/SecretService.py", line 79, in get_password
        return item.get_secret().decode('utf-8')
      File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/secretstorage/item.py", line 105, in get_secret
        decryptor = Cipher(aes, modes.CBC(aes_iv), default_backend()).decryptor()
      File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/cryptography/hazmat/backends/__init__.py", line 15, in default_backend
        from cryptography.hazmat.backends.openssl.backend import backend
      File "<frozen importlib._bootstrap>", line 971, in _find_and_load
      File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
      File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/hgdemandimport/demandimportpy3.py", line 53, in exec_module
        self.loader.exec_module(module)
      File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/cryptography/hazmat/backends/openssl/__init__.py", line 7, in <module>
        from cryptography.hazmat.backends.openssl.backend import backend
      File "<frozen importlib._bootstrap>", line 971, in _find_and_load
      File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
      File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/hgdemandimport/demandimportpy3.py", line 53, in exec_module
        self.loader.exec_module(module)
      File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 14, in <module>
        from six.moves import range
      File "<frozen importlib._bootstrap>", line 971, in _find_and_load
      File "<frozen importlib._bootstrap>", line 951, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 894, in _find_spec
      File "/home/mharbison/hg_py3.6.8_venv/lib64/python3.6/site-packages/hgdemandimport/demandimportpy3.py", line 117, in find_spec
        and getattr(spec.loader, "exec_module")
    AttributeError: '_SixMetaPathImporter' object has no attribute 'exec_module'

Differential Revision: https://phab.mercurial-scm.org/D9243
8ed69bd4
History
Name Last commit Last update
..
__init__.py
demandimportpy2.py
demandimportpy3.py
tracing.py