tests/test-ui-verbosity.py.out
author Gregory Szorc <gregory.szorc@gmail.com>
Sun, 04 Oct 2020 22:32:41 -0700
changeset 45685 57b5452a55d5
parent 8449 807f3f5c60e9
permissions -rw-r--r--
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

      hgrc settings    command line options      final result   
    quiet verbo debug   quiet verbo debug      quiet verbo debug
 0  False False False   False False False  ->  False False False
 1   True False False   False False False  ->   True False False
 2  False  True False   False False False  ->  False  True False
 3   True  True False   False False False  ->  False False False
 4  False False  True   False False False  ->  False  True  True
 5   True False  True   False False False  ->  False  True  True
 6  False  True  True   False False False  ->  False  True  True
 7   True  True  True   False False False  ->  False  True  True
 8  False False False    True False False  ->   True False False
 9   True False False    True False False  ->   True False False
10  False  True False    True False False  ->   True False False
11   True  True False    True False False  ->   True False False
12  False False  True    True False False  ->   True False False
13   True False  True    True False False  ->   True False False
14  False  True  True    True False False  ->   True False False
15   True  True  True    True False False  ->   True False False
16  False False False   False  True False  ->  False  True False
17   True False False   False  True False  ->  False  True False
18  False  True False   False  True False  ->  False  True False
19   True  True False   False  True False  ->  False  True False
20  False False  True   False  True False  ->  False  True False
21   True False  True   False  True False  ->  False  True False
22  False  True  True   False  True False  ->  False  True False
23   True  True  True   False  True False  ->  False  True False
24  False False False    True  True False  ->  False False False
25   True False False    True  True False  ->  False False False
26  False  True False    True  True False  ->  False False False
27   True  True False    True  True False  ->  False False False
28  False False  True    True  True False  ->  False False False
29   True False  True    True  True False  ->  False False False
30  False  True  True    True  True False  ->  False False False
31   True  True  True    True  True False  ->  False False False
32  False False False   False False  True  ->  False  True  True
33   True False False   False False  True  ->  False  True  True
34  False  True False   False False  True  ->  False  True  True
35   True  True False   False False  True  ->  False  True  True
36  False False  True   False False  True  ->  False  True  True
37   True False  True   False False  True  ->  False  True  True
38  False  True  True   False False  True  ->  False  True  True
39   True  True  True   False False  True  ->  False  True  True
40  False False False    True False  True  ->  False  True  True
41   True False False    True False  True  ->  False  True  True
42  False  True False    True False  True  ->  False  True  True
43   True  True False    True False  True  ->  False  True  True
44  False False  True    True False  True  ->  False  True  True
45   True False  True    True False  True  ->  False  True  True
46  False  True  True    True False  True  ->  False  True  True
47   True  True  True    True False  True  ->  False  True  True
48  False False False   False  True  True  ->  False  True  True
49   True False False   False  True  True  ->  False  True  True
50  False  True False   False  True  True  ->  False  True  True
51   True  True False   False  True  True  ->  False  True  True
52  False False  True   False  True  True  ->  False  True  True
53   True False  True   False  True  True  ->  False  True  True
54  False  True  True   False  True  True  ->  False  True  True
55   True  True  True   False  True  True  ->  False  True  True
56  False False False    True  True  True  ->  False  True  True
57   True False False    True  True  True  ->  False  True  True
58  False  True False    True  True  True  ->  False  True  True
59   True  True False    True  True  True  ->  False  True  True
60  False False  True    True  True  True  ->  False  True  True
61   True False  True    True  True  True  ->  False  True  True
62  False  True  True    True  True  True  ->  False  True  True
63   True  True  True    True  True  True  ->  False  True  True