Patchwork [V2] debuginstall: add a line about re2 availability

login
register
mail settings
Submitter Boris Feld
Date Nov. 30, 2017, 4:39 a.m.
Message ID <436617b471ed303bc28e.1512016747@FB>
Download mbox | patch
Permalink /patch/25822/
State Changes Requested
Headers show

Comments

Boris Feld - Nov. 30, 2017, 4:39 a.m.
# HG changeset patch
# User Boris Feld <boris.feld@octobus.net>
# Date 1511826516 18000
#      Mon Nov 27 18:48:36 2017 -0500
# Node ID 436617b471ed303bc28e977ff335086d3d7d0f3c
# Parent  8287df8b7be545fdafa22b771012ac65f6264d12
# EXP-Topic debugpyre2
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 436617b471ed
debuginstall: add a line about re2 availability

Using re2 engine can massively speed up regexp. We make it simpler to check if
it is available in a given install.
Yuya Nishihara - Nov. 30, 2017, 12:04 p.m.
On Wed, 29 Nov 2017 23:39:07 -0500, Boris Feld wrote:
> # HG changeset patch
> # User Boris Feld <boris.feld@octobus.net>
> # Date 1511826516 18000
> #      Mon Nov 27 18:48:36 2017 -0500
> # Node ID 436617b471ed303bc28e977ff335086d3d7d0f3c
> # Parent  8287df8b7be545fdafa22b771012ac65f6264d12
> # EXP-Topic debugpyre2
> # Available At https://bitbucket.org/octobus/mercurial-devel/
> #              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 436617b471ed
> debuginstall: add a line about re2 availability
> 
> Using re2 engine can massively speed up regexp. We make it simpler to check if
> it is available in a given install.
> 
> diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py
> --- a/mercurial/debugcommands.py
> +++ b/mercurial/debugcommands.py
> @@ -1120,6 +1120,10 @@ def debuginstall(ui, **opts):
>               fm.formatlist([e.name() for e in wirecompengines
>                              if e.wireprotosupport()],
>                             name='compengine', fmt='%s', sep=', '))
> +    re2 = 'missing'
> +    if util._re2:
> +        re2 = 'available'
> +    fm.write('re2', _('checking "re2" regexp engine (%s)\n'), re2)

Just a nitpick, but raw boolean value is preferred in JSON output, and
'missing'/'available' should be translated in plain output.
Augie Fackler - Dec. 11, 2017, 7 p.m.
On Thu, Nov 30, 2017 at 09:04:56PM +0900, Yuya Nishihara wrote:
> On Wed, 29 Nov 2017 23:39:07 -0500, Boris Feld wrote:
> > # HG changeset patch
> > # User Boris Feld <boris.feld@octobus.net>
> > # Date 1511826516 18000
> > #      Mon Nov 27 18:48:36 2017 -0500
> > # Node ID 436617b471ed303bc28e977ff335086d3d7d0f3c
> > # Parent  8287df8b7be545fdafa22b771012ac65f6264d12
> > # EXP-Topic debugpyre2
> > # Available At https://bitbucket.org/octobus/mercurial-devel/
> > #              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 436617b471ed
> > debuginstall: add a line about re2 availability
> >
> > Using re2 engine can massively speed up regexp. We make it simpler to check if
> > it is available in a given install.
> >
> > diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py
> > --- a/mercurial/debugcommands.py
> > +++ b/mercurial/debugcommands.py
> > @@ -1120,6 +1120,10 @@ def debuginstall(ui, **opts):
> >               fm.formatlist([e.name() for e in wirecompengines
> >                              if e.wireprotosupport()],
> >                             name='compengine', fmt='%s', sep=', '))
> > +    re2 = 'missing'
> > +    if util._re2:
> > +        re2 = 'available'
> > +    fm.write('re2', _('checking "re2" regexp engine (%s)\n'), re2)
>
> Just a nitpick, but raw boolean value is preferred in JSON output, and
> 'missing'/'available' should be translated in plain output.

+1 - let's go ahead and get this submitted. Boris, let us know if you
need help with the formatter for v3?

Patch

diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py
--- a/mercurial/debugcommands.py
+++ b/mercurial/debugcommands.py
@@ -1120,6 +1120,10 @@  def debuginstall(ui, **opts):
              fm.formatlist([e.name() for e in wirecompengines
                             if e.wireprotosupport()],
                            name='compengine', fmt='%s', sep=', '))
+    re2 = 'missing'
+    if util._re2:
+        re2 = 'available'
+    fm.write('re2', _('checking "re2" regexp engine (%s)\n'), re2)
 
     # templates
     p = templater.templatepaths()
diff --git a/tests/test-install.t b/tests/test-install.t
--- a/tests/test-install.t
+++ b/tests/test-install.t
@@ -14,6 +14,7 @@  hg debuginstall
   checking registered compression engines (*zlib*) (glob)
   checking available compression engines (*zlib*) (glob)
   checking available compression engines for wire protocol (*zlib*) (glob)
+  checking "re2" regexp engine \((available|missing)\) (re)
   checking templates (*mercurial?templates)... (glob)
   checking default template (*mercurial?templates?map-cmdline.default) (glob)
   checking commit editor... (* -c "import sys; sys.exit(0)") (glob)
@@ -44,6 +45,7 @@  hg debuginstall JSON
     "pythonlib": "*", (glob)
     "pythonsecurity": [*], (glob)
     "pythonver": "*.*.*", (glob)
+    "re2": "(available|missing)", (re)
     "templatedirs": "*mercurial?templates", (glob)
     "username": "test",
     "usernameerror": null,
@@ -67,6 +69,7 @@  hg debuginstall with no username
   checking registered compression engines (*zlib*) (glob)
   checking available compression engines (*zlib*) (glob)
   checking available compression engines for wire protocol (*zlib*) (glob)
+  checking "re2" regexp engine \((available|missing)\) (re)
   checking templates (*mercurial?templates)... (glob)
   checking default template (*mercurial?templates?map-cmdline.default) (glob)
   checking commit editor... (* -c "import sys; sys.exit(0)") (glob)
@@ -110,6 +113,7 @@  path variables are expanded (~ is the sa
   checking registered compression engines (*zlib*) (glob)
   checking available compression engines (*zlib*) (glob)
   checking available compression engines for wire protocol (*zlib*) (glob)
+  checking "re2" regexp engine \((available|missing)\) (re)
   checking templates (*mercurial?templates)... (glob)
   checking default template (*mercurial?templates?map-cmdline.default) (glob)
   checking commit editor... (* -c "import sys; sys.exit(0)") (glob)
@@ -217,6 +221,7 @@  since it's bin on most platforms but Scr
   checking registered compression engines (*) (glob)
   checking available compression engines (*) (glob)
   checking available compression engines for wire protocol (*) (glob)
+  checking "re2" regexp engine \((available|missing)\) (re)
   checking templates ($TESTTMP/installenv/*/site-packages/mercurial/templates)... (glob)
   checking default template ($TESTTMP/installenv/*/site-packages/mercurial/templates/map-cmdline.default) (glob)
   checking commit editor... (*) (glob)