# HG changeset patch # User Augie Fackler # Date 1626190677 14400 # Node ID be37bb8d0c7cb73a4c9b82c12ea85823bad03bbd # Parent 11f834e7177d02eb34c503d3562f28b80f452b08 packaging: add command line flag to add extra vars to pyoxidizer This felt simpler than the previous incarnation of injecting content into the WiX build. I decided the easiest way to pass an arbitrary map into the process was some json - I may regret this, but time will tell on that. Differential Revision: https://phab.mercurial-scm.org/D11093 diff -r 11f834e7177d -r be37bb8d0c7c contrib/packaging/hgpackaging/cli.py --- a/contrib/packaging/hgpackaging/cli.py Mon Jul 12 15:56:25 2021 -0400 +++ b/contrib/packaging/hgpackaging/cli.py Tue Jul 13 11:37:57 2021 -0400 @@ -64,6 +64,7 @@ extra_packages_script=None, extra_wxs=None, extra_features=None, + extra_pyoxidizer_vars=None, ): if not pyoxidizer_target and not python: raise Exception("--python required unless building with PyOxidizer") @@ -105,7 +106,7 @@ "timestamp_url": sign_timestamp_url, } - fn(**kwargs) + fn(**kwargs, extra_pyoxidizer_vars=extra_pyoxidizer_vars) def get_parser(): @@ -168,6 +169,12 @@ "in the installer from the extra wxs files" ), ) + + sp.add_argument( + "--extra-pyoxidizer-vars", + help="json map of extra variables to pass to pyoxidizer", + ) + sp.set_defaults(func=build_wix) return parser diff -r 11f834e7177d -r be37bb8d0c7c contrib/packaging/hgpackaging/wix.py --- a/contrib/packaging/hgpackaging/wix.py Mon Jul 12 15:56:25 2021 -0400 +++ b/contrib/packaging/hgpackaging/wix.py Tue Jul 13 11:37:57 2021 -0400 @@ -8,6 +8,7 @@ # no-check-code because Python 3 native. import collections +import json import os import pathlib import re @@ -386,6 +387,7 @@ extra_wxs: typing.Optional[typing.Dict[str, str]] = None, extra_features: typing.Optional[typing.List[str]] = None, signing_info: typing.Optional[typing.Dict[str, str]] = None, + extra_pyoxidizer_vars=None, ): """Build a WiX MSI installer using PyOxidizer.""" hg_build_dir = source_dir / "build" @@ -418,6 +420,9 @@ if signing_info["timestamp_url"]: build_vars["TIME_STAMP_SERVER_URL"] = signing_info["timestamp_url"] + if extra_pyoxidizer_vars: + build_vars.update(json.loads(extra_pyoxidizer_vars)) + if extra_wxs: raise Exception( "support for extra .wxs files has been temporarily dropped"