author | Yuya Nishihara <yuya@tcha.org> |
Sun, 15 Mar 2020 15:12:44 +0900 | |
changeset 44589 | fc1fa3a07af6 |
parent 44384 | 6689cebacb32 |
permissions | -rw-r--r-- |
44216
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
1 |
# Instructions: |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
2 |
# |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
3 |
# 1. cargo install --version 0.5.0 pyoxidizer |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
4 |
# 2. cd /path/to/hg |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
5 |
# 3. pyoxidizer build --path contrib/packaging [--release] |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
6 |
# 4. Run build/pyoxidizer/<arch>/<debug|release>/app/hg |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
7 |
# |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
8 |
# If you need to build again, you need to remove the build/lib.* and |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
9 |
# build/temp.* directories, otherwise PyOxidizer fails to pick up C |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
10 |
# extensions. This is a bug in PyOxidizer. |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
11 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
12 |
ROOT = CWD + "/../.." |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
13 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
14 |
set_build_path(ROOT + "/build/pyoxidizer") |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
15 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
16 |
def make_exe(): |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
17 |
dist = default_python_distribution() |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
18 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
19 |
code = "import hgdemandimport; hgdemandimport.enable(); from mercurial import dispatch; dispatch.run()" |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
20 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
21 |
config = PythonInterpreterConfig( |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
22 |
raw_allocator = "system", |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
23 |
run_eval = code, |
44384
6689cebacb32
pyoxidizer: allow extensions to be loaded from the file system
Martin von Zweigbergk <martinvonz@google.com>
parents:
44288
diff
changeset
|
24 |
# We want to let the user load extensions from the file system |
6689cebacb32
pyoxidizer: allow extensions to be loaded from the file system
Martin von Zweigbergk <martinvonz@google.com>
parents:
44288
diff
changeset
|
25 |
filesystem_importer = True, |
44216
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
26 |
# We need this to make resourceutil happy, since it looks for sys.frozen. |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
27 |
sys_frozen = True, |
44288
cd8f248fead4
pyoxidizer: use `legacy_windows_stdio` on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
44216
diff
changeset
|
28 |
legacy_windows_stdio = True, |
44216
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
29 |
) |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
30 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
31 |
exe = dist.to_python_executable( |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
32 |
name = "hg", |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
33 |
config = config, |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
34 |
) |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
35 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
36 |
# Use setup.py install to build Mercurial and collect Python resources to |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
37 |
# embed in the executable. |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
38 |
resources = dist.setup_py_install(ROOT) |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
39 |
exe.add_python_resources(resources) |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
40 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
41 |
return exe |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
42 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
43 |
def make_install(exe): |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
44 |
m = FileManifest() |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
45 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
46 |
# `hg` goes in root directory. |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
47 |
m.add_python_resource(".", exe) |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
48 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
49 |
templates = glob( |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
50 |
include=[ROOT + "/mercurial/templates/**/*"], |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
51 |
strip_prefix = ROOT + "/mercurial/", |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
52 |
) |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
53 |
m.add_manifest(templates) |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
54 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
55 |
return m |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
56 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
57 |
register_target("exe", make_exe) |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
58 |
register_target("app", make_install, depends = ["exe"], default = True) |
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
59 |
|
281b6690e646
packaging: add support for PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
60 |
resolve_targets() |