Mercurial > public > mercurial-scm > hg-stable
annotate hg @ 40450:41f0529b5112 stable
commandserver: get around ETIMEDOUT raised by selectors2
selector.select() should exits with an empty event list on timed out, but
selectors2 raises OSError if timeout expires while recovering from EINTR.
Spotted while debugging new chg feature.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Mon, 03 Dec 2018 21:45:15 +0900 |
parents | 5e78c100a215 |
children | 5c9c71cde1c9 |
rev | line source |
---|---|
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
1 #!/usr/bin/env python |
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
2 # |
1698 | 3 # mercurial - scalable distributed SCM |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
4 # |
4635
63b9d2deed48
Updated copyright notices and add "and others" to "hg version"
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3877
diff
changeset
|
5 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
6 # |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
7672
diff
changeset
|
7 # This software may be used and distributed according to the terms of the |
10263 | 8 # GNU General Public License version 2 or any later version. |
33914
1900381b6a6e
hg: update top-level script to use modern import conventions
Augie Fackler <raf@durin42.com>
parents:
32462
diff
changeset
|
9 from __future__ import absolute_import |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
10 |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10263
diff
changeset
|
11 import os |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10263
diff
changeset
|
12 import sys |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10263
diff
changeset
|
13 |
21812
73e4a02e6d23
hg: add support for HGUNICODEPEDANTRY environment variable
Augie Fackler <raf@durin42.com>
parents:
14233
diff
changeset
|
14 if os.environ.get('HGUNICODEPEDANTRY', False): |
29172
2ea9c9aa6e60
hg: limit HGUNICODEPEDANTRY to py2
timeless <timeless@mozdev.org>
parents:
21812
diff
changeset
|
15 try: |
2ea9c9aa6e60
hg: limit HGUNICODEPEDANTRY to py2
timeless <timeless@mozdev.org>
parents:
21812
diff
changeset
|
16 reload(sys) |
2ea9c9aa6e60
hg: limit HGUNICODEPEDANTRY to py2
timeless <timeless@mozdev.org>
parents:
21812
diff
changeset
|
17 sys.setdefaultencoding("undefined") |
2ea9c9aa6e60
hg: limit HGUNICODEPEDANTRY to py2
timeless <timeless@mozdev.org>
parents:
21812
diff
changeset
|
18 except NameError: |
2ea9c9aa6e60
hg: limit HGUNICODEPEDANTRY to py2
timeless <timeless@mozdev.org>
parents:
21812
diff
changeset
|
19 pass |
21812
73e4a02e6d23
hg: add support for HGUNICODEPEDANTRY environment variable
Augie Fackler <raf@durin42.com>
parents:
14233
diff
changeset
|
20 |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10263
diff
changeset
|
21 libdir = '@LIBDIR@' |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10263
diff
changeset
|
22 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10263
diff
changeset
|
23 if libdir != '@' 'LIBDIR' '@': |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10263
diff
changeset
|
24 if not os.path.isabs(libdir): |
12805
cae1c187abd4
setup/hg: handle hg being a symlink when appending relative libdir to sys.path
L. David Baron <dbaron@dbaron.org>
parents:
12661
diff
changeset
|
25 libdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), |
cae1c187abd4
setup/hg: handle hg being a symlink when appending relative libdir to sys.path
L. David Baron <dbaron@dbaron.org>
parents:
12661
diff
changeset
|
26 libdir) |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10263
diff
changeset
|
27 libdir = os.path.abspath(libdir) |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10263
diff
changeset
|
28 sys.path.insert(0, libdir) |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10263
diff
changeset
|
29 |
39608
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
30 from hgdemandimport import tracing |
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
31 with tracing.log('hg script'): |
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
32 # enable importing on demand to reduce startup time |
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
33 try: |
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
34 if sys.version_info[0] < 3 or sys.version_info >= (3, 6): |
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
35 import hgdemandimport; hgdemandimport.enable() |
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
36 except ImportError: |
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
37 sys.stderr.write("abort: couldn't find mercurial libraries in [%s]\n" % |
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
38 ' '.join(sys.path)) |
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
39 sys.stderr.write("(check your install and PYTHONPATH)\n") |
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
40 sys.exit(-1) |
5197
55860a45bbf2
Enable demandimport only in scripts, not in importable modules (issue605)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
5178
diff
changeset
|
41 |
39608
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
42 from mercurial import dispatch |
5e78c100a215
hg: wrap the highest layer in the `hg` script possible in trace event
Augie Fackler <augie@google.com>
parents:
34533
diff
changeset
|
43 dispatch.run() |