##// END OF EJS Templates
packaging: add support for PyOxidizer...
Gregory Szorc -
r44697:281b6690 default
parent child Browse files
Show More
@@ -0,0 +1,57 b''
1 # Instructions:
2 #
3 # 1. cargo install --version 0.5.0 pyoxidizer
4 # 2. cd /path/to/hg
5 # 3. pyoxidizer build --path contrib/packaging [--release]
6 # 4. Run build/pyoxidizer/<arch>/<debug|release>/app/hg
7 #
8 # If you need to build again, you need to remove the build/lib.* and
9 # build/temp.* directories, otherwise PyOxidizer fails to pick up C
10 # extensions. This is a bug in PyOxidizer.
11
12 ROOT = CWD + "/../.."
13
14 set_build_path(ROOT + "/build/pyoxidizer")
15
16 def make_exe():
17 dist = default_python_distribution()
18
19 code = "import hgdemandimport; hgdemandimport.enable(); from mercurial import dispatch; dispatch.run()"
20
21 config = PythonInterpreterConfig(
22 raw_allocator = "system",
23 run_eval = code,
24 # We need this to make resourceutil happy, since it looks for sys.frozen.
25 sys_frozen = True,
26 )
27
28 exe = dist.to_python_executable(
29 name = "hg",
30 config = config,
31 )
32
33 # Use setup.py install to build Mercurial and collect Python resources to
34 # embed in the executable.
35 resources = dist.setup_py_install(ROOT)
36 exe.add_python_resources(resources)
37
38 return exe
39
40 def make_install(exe):
41 m = FileManifest()
42
43 # `hg` goes in root directory.
44 m.add_python_resource(".", exe)
45
46 templates = glob(
47 include=[ROOT + "/mercurial/templates/**/*"],
48 strip_prefix = ROOT + "/mercurial/",
49 )
50 m.add_manifest(templates)
51
52 return m
53
54 register_target("exe", make_exe)
55 register_target("app", make_install, depends = ["exe"], default = True)
56
57 resolve_targets()
General Comments 0
You need to be logged in to leave comments. Login now