Mercurial > hg
annotate hgext/narrow/narrowtemplates.py @ 42961:460f8bf58020
osutil: allow disabling setprocname via a define passed to the compiler
In some situations, we run a custom python launcher that appears to not set up
Py_GetArgcArgv correctly. We then proceed to promptly crash when we attempt to
dereference NULL. Being able to completely disable setprocname is beneficial in
these situations, since we won't even attempt to use it, even if the case that
causes the crash is fixed.
Right now, if I compile osutil.so with -DSETPROCNAME_USE_NONE, the compilation
fails on python3 due to SETPROCNAME_USE_NONE redefinition. I could possibly
work around that, but it's likely helpful to have a way of disabling this
completely without it being brittle (i.e. if python3 ever gains the ability to
perform this operation).
Differential Revision: https://phab.mercurial-scm.org/D6865
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Tue, 17 Sep 2019 14:57:42 -0700 |
parents | 45c18f7345c1 |
children | 2372284d9457 |
rev | line source |
---|---|
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1 # narrowtemplates.py - added template keywords for narrow clones |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
2 # |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
3 # Copyright 2017 Google, Inc. |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 # |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
6 # GNU General Public License version 2 or any later version. |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
8 from __future__ import absolute_import |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
9 |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
10 from mercurial import ( |
36091
ea02be8665ef
narrowtemplates: update to use registrar mechanism
Augie Fackler <augie@google.com>
parents:
36090
diff
changeset
|
11 registrar, |
36090
9445a3141501
narrow: move from ELLIPSIS_NODE_FLAG to revlog.REVIDX_ELLIPSIS
Augie Fackler <augie@google.com>
parents:
36079
diff
changeset
|
12 revlog, |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
13 ) |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
14 |
36091
ea02be8665ef
narrowtemplates: update to use registrar mechanism
Augie Fackler <augie@google.com>
parents:
36090
diff
changeset
|
15 keywords = {} |
ea02be8665ef
narrowtemplates: update to use registrar mechanism
Augie Fackler <augie@google.com>
parents:
36090
diff
changeset
|
16 templatekeyword = registrar.templatekeyword(keywords) |
ea02be8665ef
narrowtemplates: update to use registrar mechanism
Augie Fackler <augie@google.com>
parents:
36090
diff
changeset
|
17 revsetpredicate = registrar.revsetpredicate() |
ea02be8665ef
narrowtemplates: update to use registrar mechanism
Augie Fackler <augie@google.com>
parents:
36090
diff
changeset
|
18 |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
19 def _isellipsis(repo, rev): |
36090
9445a3141501
narrow: move from ELLIPSIS_NODE_FLAG to revlog.REVIDX_ELLIPSIS
Augie Fackler <augie@google.com>
parents:
36079
diff
changeset
|
20 if repo.changelog.flags(rev) & revlog.REVIDX_ELLIPSIS: |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
21 return True |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
22 return False |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
23 |
36514
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
24 @templatekeyword('ellipsis', requires={'repo', 'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
25 def ellipsis(context, mapping): |
36439
02cd2fb6de72
narrow: drop redundant templatekw/revset names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36091
diff
changeset
|
26 """String. 'ellipsis' if the change is an ellipsis node, else ''.""" |
36514
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
27 repo = context.resource(mapping, 'repo') |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
28 ctx = context.resource(mapping, 'ctx') |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
29 if _isellipsis(repo, ctx.rev()): |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
30 return 'ellipsis' |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
31 return '' |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
32 |
36514
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
33 @templatekeyword('outsidenarrow', requires={'repo', 'ctx'}) |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
34 def outsidenarrow(context, mapping): |
36439
02cd2fb6de72
narrow: drop redundant templatekw/revset names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36091
diff
changeset
|
35 """String. 'outsidenarrow' if the change affects no tracked files, |
02cd2fb6de72
narrow: drop redundant templatekw/revset names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36091
diff
changeset
|
36 else ''.""" |
36514
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
37 repo = context.resource(mapping, 'repo') |
7b74afec6772
templatekw: switch non-showlist template keywords to new API
Yuya Nishihara <yuya@tcha.org>
parents:
36472
diff
changeset
|
38 ctx = context.resource(mapping, 'ctx') |
36472
d0d5eef57fb0
narrow: drop safehasattr() checks for always-present repo.narrowmatch
Martin von Zweigbergk <martinvonz@google.com>
parents:
36439
diff
changeset
|
39 m = repo.narrowmatch() |
42358
45c18f7345c1
narrow: consider empty commits to be "inside the narrow spec" for templates
Danny Hooper <hooper@google.com>
parents:
38964
diff
changeset
|
40 if ctx.files() and not m.always(): |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
41 if not any(m(f) for f in ctx.files()): |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
42 return 'outsidenarrow' |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
43 return '' |
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
44 |
38964
05ded838c997
narrow: add '()' to ellipsis in the revset help
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
36514
diff
changeset
|
45 @revsetpredicate('ellipsis()') |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
46 def ellipsisrevset(repo, subset, x): |
36439
02cd2fb6de72
narrow: drop redundant templatekw/revset names from help text
Yuya Nishihara <yuya@tcha.org>
parents:
36091
diff
changeset
|
47 """Changesets that are ellipsis nodes.""" |
36079
a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
48 return subset.filter(lambda r: _isellipsis(repo, r)) |