Mercurial > public > mercurial-scm > hg
annotate rust/hgcli/pyoxidizer.bzl @ 47643:11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
We need this type of hook to inject our internal extension and resource files
at Google. Presumably this could be useful to others, so instead of trying to
carry an internal patch we've done this in a modular way that should be of
value upstream.
I'm extremely puzzled by the behavior of glob() on Windows, and I'll
be filing at least one (probably two) bugs upstream about it.
Differential Revision: https://phab.mercurial-scm.org/D11092
author | Augie Fackler <augie@google.com> |
---|---|
date | Mon, 12 Jul 2021 15:56:25 -0400 |
parents | 159d2de3286c |
children | 5f2b0d34f24d |
rev | line source |
---|---|
47205
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
1 # The following variables can be passed in as parameters: |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
2 # |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
3 # VERSION |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
4 # Version string of program being produced. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
5 # |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
6 # MSI_NAME |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
7 # Root name of MSI installer. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
8 # |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
9 # EXTRA_MSI_FEATURES |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
10 # ; delimited string of extra features to advertise in the built MSA. |
47206
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
11 # |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
12 # SIGNING_PFX_PATH |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
13 # Path to code signing certificate to use. |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
14 # |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
15 # SIGNING_PFX_PASSWORD |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
16 # Password to code signing PFX file defined by SIGNING_PFX_PATH. |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
17 # |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
18 # SIGNING_SUBJECT_NAME |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
19 # String fragment in code signing certificate subject name used to find |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
20 # code signing certificate in Windows certificate store. |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
21 # |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
22 # TIME_STAMP_SERVER_URL |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
23 # URL of time-stamp token authority (RFC 3161) servers to stamp code signatures. |
47205
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
24 |
44639
bc847878f4c0
hgcli: customize for Mercurial
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44638
diff
changeset
|
25 ROOT = CWD + "/../.." |
44638
af739894a4c1
hgcli: add stub PyOxidizer project
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
26 |
47205
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
27 VERSION = VARS.get("VERSION", "5.8") |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
28 MSI_NAME = VARS.get("MSI_NAME", "mercurial") |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
29 EXTRA_MSI_FEATURES = VARS.get("EXTRA_MSI_FEATURES") |
47206
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
30 SIGNING_PFX_PATH = VARS.get("SIGNING_PFX_PATH") |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
31 SIGNING_PFX_PASSWORD = VARS.get("SIGNING_PFX_PASSWORD", "") |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
32 SIGNING_SUBJECT_NAME = VARS.get("SIGNING_SUBJECT_NAME") |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
33 TIME_STAMP_SERVER_URL = VARS.get("TIME_STAMP_SERVER_URL", "http://timestamp.digicert.com") |
47205
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
34 |
45685
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
35 IS_WINDOWS = "windows" in BUILD_TARGET_TRIPLE |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
36 |
44763
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
37 # Code to run in Python interpreter. |
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
38 RUN_CODE = "import hgdemandimport; hgdemandimport.enable(); from mercurial import dispatch; dispatch.run()" |
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
39 |
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
40 set_build_path(ROOT + "/build/pyoxidizer") |
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
41 |
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
42 def make_distribution(): |
47211
159d2de3286c
pyoxidizer: use Python 3.9 (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47206
diff
changeset
|
43 return default_python_distribution(python_version = "3.9") |
44763
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
44 |
45685
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
45 def resource_callback(policy, resource): |
45831
f14c33b2e497
pyoxidizer: default to one-file binary on non-Windows platforms
Augie Fackler <augie@google.com>
parents:
45752
diff
changeset
|
46 if not IS_WINDOWS: |
f14c33b2e497
pyoxidizer: default to one-file binary on non-Windows platforms
Augie Fackler <augie@google.com>
parents:
45752
diff
changeset
|
47 resource.add_location = "in-memory" |
f14c33b2e497
pyoxidizer: default to one-file binary on non-Windows platforms
Augie Fackler <augie@google.com>
parents:
45752
diff
changeset
|
48 return |
45879
5d73d3053d92
pyoxidizer: run buildifier
Augie Fackler <augie@google.com>
parents:
45832
diff
changeset
|
49 |
45685
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
50 # We use a custom resource routing policy to influence where things are loaded |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
51 # from. |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
52 # |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
53 # For Python modules and resources, we load from memory if they are in |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
54 # the standard library and from the filesystem if not. This is because |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
55 # parts of Mercurial and some 3rd party packages aren't yet compatible |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
56 # with memory loading. |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
57 # |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
58 # For Python extension modules, we load from the filesystem because |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
59 # this yields greatest compatibility. |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
60 if type(resource) in ("PythonModuleSource", "PythonPackageResource", "PythonPackageDistributionResource"): |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
61 if resource.is_stdlib: |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
62 resource.add_location = "in-memory" |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
63 else: |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
64 resource.add_location = "filesystem-relative:lib" |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
65 |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
66 elif type(resource) == "PythonExtensionModule": |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
67 resource.add_location = "filesystem-relative:lib" |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
68 |
44763
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
69 def make_exe(dist): |
44822
118f067f6bd1
pyoxidizer: formatting bazel definitions
Rodrigo Damazio Bovendorp <rdamazio@google.com>
parents:
44763
diff
changeset
|
70 """Builds a Rust-wrapped Mercurial binary.""" |
45685
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
71 packaging_policy = dist.make_python_packaging_policy() |
45879
5d73d3053d92
pyoxidizer: run buildifier
Augie Fackler <augie@google.com>
parents:
45832
diff
changeset
|
72 |
45685
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
73 # Extension may depend on any Python functionality. Include all |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
74 # extensions. |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
75 packaging_policy.extension_module_filter = "all" |
45749
f95b16796688
pyoxidizer: update to PyOxidizer 0.9
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45685
diff
changeset
|
76 packaging_policy.resources_location = "in-memory" |
45831
f14c33b2e497
pyoxidizer: default to one-file binary on non-Windows platforms
Augie Fackler <augie@google.com>
parents:
45752
diff
changeset
|
77 if IS_WINDOWS: |
f14c33b2e497
pyoxidizer: default to one-file binary on non-Windows platforms
Augie Fackler <augie@google.com>
parents:
45752
diff
changeset
|
78 packaging_policy.resources_location_fallback = "filesystem-relative:lib" |
45685
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
79 packaging_policy.register_resource_callback(resource_callback) |
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
80 |
45749
f95b16796688
pyoxidizer: update to PyOxidizer 0.9
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45685
diff
changeset
|
81 config = dist.make_python_interpreter_config() |
47204
3380848c6e04
pyoxidizer: use allocator_backend instead of raw_allocator
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47203
diff
changeset
|
82 config.allocator_backend = "default" |
45832
867385f45559
pyoxidizer: switch to modern config using run_command instead of run_mode
Augie Fackler <augie@google.com>
parents:
45831
diff
changeset
|
83 config.run_command = RUN_CODE |
45879
5d73d3053d92
pyoxidizer: run buildifier
Augie Fackler <augie@google.com>
parents:
45832
diff
changeset
|
84 |
45749
f95b16796688
pyoxidizer: update to PyOxidizer 0.9
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45685
diff
changeset
|
85 # We want to let the user load extensions from the file system |
f95b16796688
pyoxidizer: update to PyOxidizer 0.9
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45685
diff
changeset
|
86 config.filesystem_importer = True |
45879
5d73d3053d92
pyoxidizer: run buildifier
Augie Fackler <augie@google.com>
parents:
45832
diff
changeset
|
87 |
45749
f95b16796688
pyoxidizer: update to PyOxidizer 0.9
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45685
diff
changeset
|
88 # We need this to make resourceutil happy, since it looks for sys.frozen. |
f95b16796688
pyoxidizer: update to PyOxidizer 0.9
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45685
diff
changeset
|
89 config.sys_frozen = True |
f95b16796688
pyoxidizer: update to PyOxidizer 0.9
Gregory Szorc <gregory.szorc@gmail.com>
parents:
45685
diff
changeset
|
90 config.legacy_windows_stdio = True |
44638
af739894a4c1
hgcli: add stub PyOxidizer project
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
91 |
af739894a4c1
hgcli: add stub PyOxidizer project
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
92 exe = dist.to_python_executable( |
44639
bc847878f4c0
hgcli: customize for Mercurial
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44638
diff
changeset
|
93 name = "hg", |
45685
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
94 packaging_policy = packaging_policy, |
44639
bc847878f4c0
hgcli: customize for Mercurial
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44638
diff
changeset
|
95 config = config, |
44638
af739894a4c1
hgcli: add stub PyOxidizer project
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
96 ) |
af739894a4c1
hgcli: add stub PyOxidizer project
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
97 |
44763
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
98 # Add Mercurial to resources. |
45685
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
99 exe.add_python_resources(exe.pip_install(["--verbose", ROOT])) |
44763
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
100 |
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
101 # On Windows, we install extra packages for convenience. |
45685
57b5452a55d5
pyoxidizer: produce working Python 3 Windows installers (issue6366)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44822
diff
changeset
|
102 if IS_WINDOWS: |
44763
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
103 exe.add_python_resources( |
46022
cd7f36337741
pyoxidizer: point to the py3 requirements instead of py2 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
45752
diff
changeset
|
104 exe.pip_install(["-r", ROOT + "/contrib/packaging/requirements-windows-py3.txt"]), |
44763
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
105 ) |
47643
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
106 extra_packages = VARS.get("extra_py_packages", "") |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
107 if extra_packages: |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
108 for extra in extra_packages.split(","): |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
109 extra_src, pkgs = extra.split("=") |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
110 pkgs = pkgs.split(":") |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
111 exe.add_python_resources(exe.read_package_root(extra_src, pkgs)) |
44638
af739894a4c1
hgcli: add stub PyOxidizer project
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
112 |
44639
bc847878f4c0
hgcli: customize for Mercurial
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44638
diff
changeset
|
113 return exe |
bc847878f4c0
hgcli: customize for Mercurial
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44638
diff
changeset
|
114 |
44763
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
115 def make_manifest(dist, exe): |
44639
bc847878f4c0
hgcli: customize for Mercurial
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44638
diff
changeset
|
116 m = FileManifest() |
bc847878f4c0
hgcli: customize for Mercurial
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44638
diff
changeset
|
117 m.add_python_resource(".", exe) |
44638
af739894a4c1
hgcli: add stub PyOxidizer project
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
118 |
44763
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
119 return m |
44638
af739894a4c1
hgcli: add stub PyOxidizer project
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
120 |
47205
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
121 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
122 # This adjusts the InstallManifest produced from exe generation to provide |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
123 # additional files found in a Windows install layout. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
124 def make_windows_install_layout(manifest): |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
125 # Copy various files to new install locations. This can go away once |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
126 # we're using the importlib resource reader. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
127 RECURSIVE_COPIES = { |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
128 "lib/mercurial/locale/": "locale/", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
129 "lib/mercurial/templates/": "templates/", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
130 } |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
131 for (search, replace) in RECURSIVE_COPIES.items(): |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
132 for path in manifest.paths(): |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
133 if path.startswith(search): |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
134 new_path = path.replace(search, replace) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
135 print("copy %s to %s" % (path, new_path)) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
136 file = manifest.get_file(path) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
137 manifest.add_file(file, path = new_path) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
138 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
139 # Similar to above, but with filename pattern matching. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
140 # lib/mercurial/helptext/**/*.txt -> helptext/ |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
141 # lib/mercurial/defaultrc/*.rc -> defaultrc/ |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
142 for path in manifest.paths(): |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
143 if path.startswith("lib/mercurial/helptext/") and path.endswith(".txt"): |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
144 new_path = path[len("lib/mercurial/"):] |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
145 elif path.startswith("lib/mercurial/defaultrc/") and path.endswith(".rc"): |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
146 new_path = path[len("lib/mercurial/"):] |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
147 else: |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
148 continue |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
149 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
150 print("copying %s to %s" % (path, new_path)) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
151 manifest.add_file(manifest.get_file(path), path = new_path) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
152 |
47643
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
153 extra_install_files = VARS.get("extra_install_files", "") |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
154 if extra_install_files: |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
155 for extra in extra_install_files.split(","): |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
156 print("adding extra files from %s" % extra) |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
157 # TODO: I expected a ** glob to work, but it didn't. |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
158 # |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
159 # TODO: I know this has forward-slash paths. As far as I can tell, |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
160 # backslashes don't ever match glob() expansions in |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
161 # tugger-starlark, even on Windows. |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
162 manifest.add_manifest(glob(include=[extra + "/*/*"], strip_prefix=extra+"/")) |
11f834e7177d
pyoxidizer: add hooks to inject extra python packages and install files
Augie Fackler <augie@google.com>
parents:
47211
diff
changeset
|
163 |
47205
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
164 # We also install a handful of additional files. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
165 EXTRA_CONTRIB_FILES = [ |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
166 "bash_completion", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
167 "hgweb.fcgi", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
168 "hgweb.wsgi", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
169 "logo-droplets.svg", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
170 "mercurial.el", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
171 "mq.el", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
172 "tcsh_completion", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
173 "tcsh_completion_build.sh", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
174 "xml.rnc", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
175 "zsh_completion", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
176 ] |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
177 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
178 for f in EXTRA_CONTRIB_FILES: |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
179 manifest.add_file(FileContent(path = ROOT + "/contrib/" + f), directory = "contrib") |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
180 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
181 # Individual files with full source to destination path mapping. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
182 EXTRA_FILES = { |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
183 "contrib/hgk": "contrib/hgk.tcl", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
184 "contrib/win32/postinstall.txt": "ReleaseNotes.txt", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
185 "contrib/win32/ReadMe.html": "ReadMe.html", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
186 "doc/style.css": "doc/style.css", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
187 "COPYING": "Copying.txt", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
188 } |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
189 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
190 for source, dest in EXTRA_FILES.items(): |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
191 print("adding extra file %s" % dest) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
192 manifest.add_file(FileContent(path = ROOT + "/" + source), path = dest) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
193 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
194 # And finally some wildcard matches. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
195 manifest.add_manifest(glob( |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
196 include = [ROOT + "/contrib/vim/*"], |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
197 strip_prefix = ROOT + "/" |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
198 )) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
199 manifest.add_manifest(glob( |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
200 include = [ROOT + "/doc/*.html"], |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
201 strip_prefix = ROOT + "/" |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
202 )) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
203 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
204 # But we don't ship hg-ssh on Windows, so exclude its documentation. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
205 manifest.remove("doc/hg-ssh.8.html") |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
206 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
207 return manifest |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
208 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
209 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
210 def make_msi(manifest): |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
211 manifest = make_windows_install_layout(manifest) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
212 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
213 if "x86_64" in BUILD_TARGET_TRIPLE: |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
214 platform = "x64" |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
215 else: |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
216 platform = "x86" |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
217 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
218 manifest.add_file( |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
219 FileContent(path = ROOT + "/contrib/packaging/wix/COPYING.rtf"), |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
220 path = "COPYING.rtf", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
221 ) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
222 manifest.remove("Copying.txt") |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
223 manifest.add_file( |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
224 FileContent(path = ROOT + "/contrib/win32/mercurial.ini"), |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
225 path = "defaultrc/mercurial.rc", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
226 ) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
227 manifest.add_file( |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
228 FileContent(filename = "editor.rc", content = "[ui]\neditor = notepad\n"), |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
229 path = "defaultrc/editor.rc", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
230 ) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
231 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
232 wix = WiXInstaller("hg", "%s-%s.msi" % (MSI_NAME, VERSION)) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
233 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
234 # Materialize files in the manifest to the install layout. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
235 wix.add_install_files(manifest) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
236 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
237 # From mercurial.wxs. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
238 wix.install_files_root_directory_id = "INSTALLDIR" |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
239 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
240 # Pull in our custom .wxs files. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
241 defines = { |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
242 "PyOxidizer": "1", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
243 "Platform": platform, |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
244 "Version": VERSION, |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
245 "Comments": "Installs Mercurial version %s" % VERSION, |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
246 "PythonVersion": "3", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
247 "MercurialHasLib": "1", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
248 } |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
249 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
250 if EXTRA_MSI_FEATURES: |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
251 defines["MercurialExtraFeatures"] = EXTRA_MSI_FEATURES |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
252 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
253 wix.add_wxs_file( |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
254 ROOT + "/contrib/packaging/wix/mercurial.wxs", |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
255 preprocessor_parameters=defines, |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
256 ) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
257 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
258 # Our .wxs references to other files. Pull those into the build environment. |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
259 for f in ("defines.wxi", "guids.wxi", "COPYING.rtf"): |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
260 wix.add_build_file(f, ROOT + "/contrib/packaging/wix/" + f) |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
261 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
262 wix.add_build_file("mercurial.ico", ROOT + "/contrib/win32/mercurial.ico") |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
263 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
264 return wix |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
265 |
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
266 |
47206
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
267 def register_code_signers(): |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
268 if not IS_WINDOWS: |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
269 return |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
270 |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
271 if SIGNING_PFX_PATH: |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
272 signer = code_signer_from_pfx_file(SIGNING_PFX_PATH, SIGNING_PFX_PASSWORD) |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
273 elif SIGNING_SUBJECT_NAME: |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
274 signer = code_signer_from_windows_store_subject(SIGNING_SUBJECT_NAME) |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
275 else: |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
276 signer = None |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
277 |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
278 if signer: |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
279 signer.set_time_stamp_server(TIME_STAMP_SERVER_URL) |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
280 signer.activate() |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
281 |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
282 |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
283 register_code_signers() |
c8001d9c26f5
pyoxidizer: support code signing
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47205
diff
changeset
|
284 |
47203
9438e9b7321a
pyoxidizer: simplify targets
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47201
diff
changeset
|
285 register_target("distribution", make_distribution) |
9438e9b7321a
pyoxidizer: simplify targets
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47201
diff
changeset
|
286 register_target("exe", make_exe, depends = ["distribution"]) |
9438e9b7321a
pyoxidizer: simplify targets
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47201
diff
changeset
|
287 register_target("app", make_manifest, depends = ["distribution", "exe"], default = True) |
47205
603efb3845ba
pyoxidizer: support producing MSI installers
Gregory Szorc <gregory.szorc@gmail.com>
parents:
47204
diff
changeset
|
288 register_target("msi", make_msi, depends = ["app"]) |
44763
94f4f2ec7dee
packaging: support building Inno installer with PyOxidizer
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44639
diff
changeset
|
289 |
44638
af739894a4c1
hgcli: add stub PyOxidizer project
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
290 resolve_targets() |