Read about our upcoming Code of Conduct on this issue

Commit 63c970a4 authored by Martin von Zweigbergk's avatar Martin von Zweigbergk
Browse files

extensions: make `hg nonexistent` not crash with PyOxidizer

When running `hg nonexistent`, we try to look for extensions that
provide that command. We do that by looking for files in the
`hgext.__file__` directory. However, PyOxidizer doesn't provide a
`__file__`, so we crash when running with PyOxidizer.

We should be able to look for the command in built-in extensions, but
we seem to already have code for skipping the scan when running in a
frozen binary, so I just modified that code instead.

By the way, it also seems like we should be able to search for
extensions in the `hgext3rd` module, but we don't do that yet either
(before or after this patch).

Differential Revision: https://phab.mercurial-scm.org/D8750
parent eb26a9cf7821
......@@ -706,12 +706,17 @@ def _disabledpaths():
'''find paths of disabled extensions. returns a dict of {name: path}'''
import hgext
extpath = os.path.dirname(
os.path.abspath(pycompat.fsencode(hgext.__file__))
)
try: # might not be a filesystem path
files = os.listdir(extpath)
except OSError:
# The hgext might not have a __file__ attribute (e.g. in PyOxidizer) and
# it might not be on a filesystem even if it does.
if util.safehasattr(hgext, '__file__'):
extpath = os.path.dirname(
os.path.abspath(pycompat.fsencode(hgext.__file__))
)
try:
files = os.listdir(extpath)
except OSError:
return {}
else:
return {}
exts = {}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment