Gregory Szorc <gregory.szorc@gmail.com> [Fri, 09 Oct 2020 09:22:59 -0700] rev 45692
automation: upgrade packages in Linux environment
It's been a while since we've ran `pip-compile -U`. Let's do that.
When I ran this command, black was upgraded and newer versions of
black complains about formatting differences. I didn't feel like
shaving a yak, so I pinned the current black version to avoid
churn.
I manually ran tests against all major Python versions and I'm fairly
certain no new test failures were introduced.
Differential Revision: https://phab.mercurial-scm.org/D9188
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 Oct 2020 18:17:20 -0700] rev 45691
packaging: upgrade packages in Windows environment
I ran `pip-compile -U` to update all packages to latest versions.
I did this so the Windows environment is more modern.
dulwich 0.20 dropped support for Python 2.7. Rather than add
yet another requirements.txt file, I decided to just pin at an
older release to minimize complexity.
Differential Revision: https://phab.mercurial-scm.org/D9187
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 Oct 2020 18:07:34 -0700] rev 45690
contrib: install Python 3.9.0
We update the Windows and Linux environments to install CPython 3.9.0,
which was released a few days ago.
Differential Revision: https://phab.mercurial-scm.org/D9186
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 08 Oct 2020 18:02:47 -0700] rev 45689
contrib: stop installing Python 3.5 and 3.6 in Windows environment
We're only publishing Python 3.7+ wheels and other builds on Windows.
Python 3.5 and 3.6 are not supported on this platform. Let's stop
installing them in the development environment.
Differential Revision: https://phab.mercurial-scm.org/D9185
Martin von Zweigbergk <martinvonz@google.com> [Fri, 09 Oct 2020 09:17:47 -0700] rev 45688
py3: convert an exception message to bytes
One of our users ran into this (unrelated to my recent work on
more specific errors).
Differential Revision: https://phab.mercurial-scm.org/D9184
Martin von Zweigbergk <martinvonz@google.com> [Fri, 09 Oct 2020 08:08:54 -0700] rev 45687
tests: fix test-url.py on py3, broken by D9179
Differential Revision: https://phab.mercurial-scm.org/D9180
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Oct 2020 16:14:06 +0200] rev 45686
revset: add a `node` key for sorting
Sorting by node give an arbitrary, but stable order which is useful for
sampling.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 04 Oct 2020 22:32:41 -0700] rev 45685
pyoxidizer: produce working Python 3 Windows installers (issue6366)
While we've had code to produce Python 3 Windows installers with
PyOxidizer, we haven't been advertising them on the web site due to
a bug in making TLS connections and issues around resource handling.
This commit upgrades our PyOxidizer install and configuration to
use a recent Git commit of PyOxidizer. This new version of PyOxidizer
contains a *ton* of changes, improvements, and bug fixes. Notably,
Windows shared distributions now mostly "just work" and the TLS bug
and random problems with Python extension modules in the standard
library go away. And Python has been upgraded from 3.7 to 3.8.6.
The price we pay for this upgrade is a ton of backwards incompatible
changes to Starlark.
I applied this commit (the overall series actually) on stable to
produce Windows installers for Mercurial 5.5.2, which I published
shortly before submitting this commit for review.
In order to get the stable branch working, I decided to take a
less aggressive approach to Python resource management. Previously,
we were attempting to load all Python modules from memory and were
performing some hacks to copy Mercurial's non-module resources
into additional directories in Starlark. This commit implements
a resource callback function in Starlark (a new feature since
PyOxidizer 0.7) to dynamically assign standard library resources
to in-memory loading and all other resources to filesystem loading.
This means that Mercurial's files and all the other packages we ship
in the Windows installers (e.g. certifi and pygments) are loaded
from the filesystem instead of from memory. This avoids issues
due to lack of __file__ and enables us to ship a working Python
3 installer on Windows.
The end state of the install layout after this patch is not
ideal for @: we still copy resource files like templates and
help text to directories next to the hg.exe executable. There
is code in @ to use importlib.resources to load these files and
we could likely remove these copies once this lands on @. But for
now, the install layout mimics what we've shipped for seemingly
forever and is backwards compatible. It allows us to achieve the
milestone of working Python 3 Windows installers and gets us a
giant step closer to deleting Python 2.
Differential Revision: https://phab.mercurial-scm.org/D9148
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 13:19:18 -0700] rev 45684
tests: set git config using `git config` for simplicity
I also took the liberty to not set the same config value twice as we
did before.
Differential Revision: https://phab.mercurial-scm.org/D9176
Martin von Zweigbergk <martinvonz@google.com> [Thu, 08 Oct 2020 13:10:16 -0700] rev 45683
tests: use `git init` instead of unusual synonym `git init-db`
I had never heard of `git init-db` until I saw our tests.
Differential Revision: https://phab.mercurial-scm.org/D9175