This is an archive of the discontinued Mercurial Phabricator instance.

windows: disable pager when packaged with py2exe
AcceptedPublic

Authored by mharbison72 on Wed, Apr 13, 6:48 PM.

Details

Reviewers
Alphare
Group Reviewers
hg-reviewers
Summary

With Windows and py3, all output that got directed to the pager was lost. It
can be worked around by the user piping to more, but that's easy to forget,
and can be dangerous if hg diff or similar incorrectly shows no changes. The
problem appears to be the new WindowsConsoleIO in py3.6[1]. We've worked around
it with PyOxidizer by setting the Py_LegacyWindowsStdioFlag interpreter
option, and worked around it with hg.bat and exewrapper.c by internally
setting PYTHONLEGACYWINDOWSSTDIO=1.

Unfortunately, py2exe doesn't appear to be able to set the interpreter option,
and somehow seems to also ignore the environment variable. The latter isn't a
good fix anyway, since setting it in the environment would affect other python
programs too. We can't install a global config for this because a config closer
to the user (e.g. from before pager was turned on by default) can override it.

[1] https://peps.python.org/pep-0528/

Diff Detail

Repository
rHG Mercurial
Branch
default
Lint
No Linters Available
Unit
No Unit Test Coverage

Event Timeline

mharbison72 created this revision.Wed, Apr 13, 6:48 PM
Alphare accepted this revision.Thu, Apr 14, 4:50 AM
This revision is now accepted and ready to land.Thu, Apr 14, 4:50 AM