tests/test-convert-bzr-114.t
author Gregory Szorc <gregory.szorc@gmail.com>
Sun, 04 Oct 2020 22:32:41 -0700
changeset 45685 57b5452a55d5
parent 26066 89872688893f
child 47377 26127236b229
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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26066
89872688893f tests: move '#require bzr' into .t files
Gregory Szorc <gregory.szorc@gmail.com>
parents: 22046
diff changeset
     1
#require bzr bzr114
12513
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     2
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     3
  $ . "$TESTDIR/bzr-definitions"
8126
13b36eb14324 convert/bzr: handle files replaced by directories (issue1623)
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     4
12513
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     5
The file/directory replacement can only be reproduced on
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     6
bzr >= 1.4. Merge it back in test-convert-bzr-directories once
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     7
this version becomes mainstream.
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
     8
replace file with dir
8126
13b36eb14324 convert/bzr: handle files replaced by directories (issue1623)
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
     9
12513
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    10
  $ mkdir test-replace-file-with-dir
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    11
  $ cd test-replace-file-with-dir
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    12
  $ bzr init -q source
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    13
  $ cd source
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    14
  $ echo d > d
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    15
  $ bzr add -q d
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    16
  $ bzr commit -q -m 'add d file'
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    17
  $ rm d
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    18
  $ mkdir d
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    19
  $ bzr add -q d
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    20
  $ bzr commit -q -m 'replace with d dir'
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    21
  $ echo a > d/a
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    22
  $ bzr add -q d/a
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    23
  $ bzr commit -q -m 'add d/a'
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    24
  $ cd ..
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    25
  $ hg convert source source-hg
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    26
  initializing destination source-hg repository
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    27
  scanning source...
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    28
  sorting...
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    29
  converting...
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    30
  2 add d file
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    31
  1 replace with d dir
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    32
  0 add d/a
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    33
  $ manifest source-hg tip
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    34
  % manifest of tip
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    35
  644   d/a
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    36
  $ cd source-hg
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    37
  $ hg update
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    38
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
d1f88ae495b4 tests: unify test-convert-bzr-114
Matt Mackall <mpm@selenic.com>
parents: 8126
diff changeset
    39
  $ cd ../..