##// END OF EJS Templates
hgweb: do not import uuid immediately to avoid its side effect...
hgweb: do not import uuid immediately to avoid its side effect With hgdemandimport disabled (chg's case), `import uuid` has an immediate side effect calling `ctypes.util.find_library` trying to locate the `libuuid` library. This happens at `import` time before `dispatch.run()`. The call trace is like: File "hg/hg", line 54, in <module> from mercurial import ( File "hg/mercurial/dispatch.py", line 24, in <module> from . import ( File "hg/mercurial/commands.py", line 23, in <module> from . import ( File "hg/mercurial/help.py", line 33, in <module> from .hgweb import ( File "hg/mercurial/hgweb/__init__.py", line 20, in <module> from . import ( File "hg/mercurial/hgweb/hgweb_mod.py", line 14, in <module> from .common import ( File "hg/mercurial/hgweb/common.py", line 15, in <module> import uuid File "/usr/lib64/python2.7/uuid.py", line 404, in <module> lib = ctypes.CDLL(ctypes.util.find_library(libname)) The problem is, `ctypes.util.find_library` will execute `sh -c '/sbin/ldconfig -p 2>/dev/null'` on Python <= 2.7.12. The output of `sh` may pollute the terminal: shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory This patch moves `import uuid` so its side-effect can only happen after the cwd check in `dispatch._getlocal`. Therefore the terminal won't be polluted by importing `uuid`. Differential Revision: https://phab.mercurial-scm.org/D1024

File last commit:

r19429:c8490dcc default
r34644:f42dec9c default
Show More
map
42 lines | 1.2 KiB | text/plain | TextLexer
default = 'shortlog'
shortlog = "'raw' is not a browsable style"
changelog = changelog.tmpl
changelogentry = logentry.tmpl
search = search.tmpl
searchentry = logentry.tmpl
mimetype = 'text/plain; charset={encoding}'
header = ''
footer = ''
changeset = changeset.tmpl
difflineplus = '{line}'
difflineminus = '{line}'
difflineat = '{line}'
diffline = '{line}'
changesetparent = '# Parent {node}'
changesetchild = '# Child {node}'
filenodelink = ''
filenolink = ''
fileline = '{line}'
diffblock = '{lines}'
filediff = filediff.tmpl
fileannotate = fileannotate.tmpl
annotateline = '{author|user}@{rev}: {line}'
manifest = manifest.tmpl
direntry = 'drwxr-xr-x {basename}\n'
fileentry = '{permissions|permissions} {size} {basename}\n'
index = index.tmpl
notfound = notfound.tmpl
error = error.tmpl
indexentry = '{url}\n'
tags = '{entries%tagentry}'
tagentry = '{tag} {node}\n'
bookmarks = '{entries%bookmarkentry}'
bookmarkentry = '{bookmark} {node}\n'
branches = '{entries%branchentry}'
branchentry = '{branch} {node} {status}\n'
graph = graph.tmpl
graphnode = graphnode.tmpl
graphedge = graphedge.tmpl
bookmarkname = 'bookmark: {name}\n'
branchname = 'branch: {name}\n'
tagname = 'tag: {name}\n'