##// 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
Jun Wu -
r34644:f42dec9c default
Show More
Name Size Modified Last Commit Author
contrib
doc
hgdemandimport
hgext
hgext3rd
i18n
mercurial
tests
.arcconfig Loading ...
.editorconfig Loading ...
.hgignore Loading ...
.hgsigs Loading ...
.hgtags Loading ...
CONTRIBUTING Loading ...
CONTRIBUTORS Loading ...
COPYING Loading ...
Makefile Loading ...
README.rst Loading ...
hg Loading ...
hgeditor Loading ...
hgweb.cgi Loading ...
setup.py Loading ...

Mercurial

Mercurial is a fast, easy to use, distributed revision control tool for software developers.

Basic install:

$ make            # see install targets
$ make install    # do a system-wide install
$ hg debuginstall # sanity-check setup
$ hg              # see help

Running without installing:

$ make local      # build for inplace usage
$ ./hg --version  # should show the latest version

See https://mercurial-scm.org/ for detailed installation instructions, platform-specific notes, and Mercurial user information.