##// END OF EJS Templates
packaging: don't crash building wix with python3.6 and earlier...
packaging: don't crash building wix with python3.6 and earlier `capture_output` was added in 3.7. I was tempted to just check and abort in build.py, since Windows doesn't have the Linux problem where some distros only ship an older python. But this is in a library that could be used elsewhere in the future.

File last commit:

r42216:1711f581 default
r42259:9c07d345 default
Show More
build.py
81 lines | 2.9 KiB | text/x-python | PythonLexer
Gregory Szorc
wix: functionality to automate building WiX installers...
r42087 #!/usr/bin/env python3
# Copyright 2019 Gregory Szorc <gregory.szorc@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
# no-check-code because Python 3 native.
"""Code to build Mercurial WiX installer."""
import argparse
import os
import pathlib
import sys
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--name',
help='Application name',
default='Mercurial')
parser.add_argument('--python',
help='Path to Python executable to use',
required=True)
parser.add_argument('--sign-sn',
help='Subject name (or fragment thereof) of certificate '
'to use for signing')
parser.add_argument('--sign-cert',
help='Path to certificate to use for signing')
parser.add_argument('--sign-password',
help='Password for signing certificate')
parser.add_argument('--sign-timestamp-url',
help='URL of timestamp server to use for signing')
parser.add_argument('--version',
help='Version string to use')
Augie Fackler
wix: add a hook for a prebuild script to inject extra libraries...
r42214 parser.add_argument('--extra-packages-script',
help=('Script to execute to include extra packages in '
'py2exe binary.'))
Augie Fackler
wix: add support for additional wxs files...
r42215 parser.add_argument('--extra-wxs',
help='CSV of path_to_wxs_file=working_dir_for_wxs_file')
Augie Fackler
wix: add functionality to inject additional Features into installer...
r42216 parser.add_argument('--extra-features',
help=('CSV of extra feature names to include '
'in the installer from the extra wxs files'))
Gregory Szorc
wix: functionality to automate building WiX installers...
r42087
args = parser.parse_args()
here = pathlib.Path(os.path.abspath(os.path.dirname(__file__)))
source_dir = here.parent.parent.parent
sys.path.insert(0, str(source_dir / 'contrib' / 'packaging'))
from hgpackaging.wix import (
build_installer,
build_signed_installer,
)
fn = build_installer
kwargs = {
'source_dir': source_dir,
'python_exe': pathlib.Path(args.python),
'version': args.version,
}
Augie Fackler
wix: add a hook for a prebuild script to inject extra libraries...
r42214 if args.extra_packages_script:
kwargs['extra_packages_script'] = args.extra_packages_script
Augie Fackler
wix: add support for additional wxs files...
r42215 if args.extra_wxs:
kwargs['extra_wxs'] = dict(
thing.split("=") for thing in args.extra_wxs.split(','))
Augie Fackler
wix: add functionality to inject additional Features into installer...
r42216 if args.extra_features:
kwargs['extra_features'] = args.extra_features.split(',')
Augie Fackler
wix: add a hook for a prebuild script to inject extra libraries...
r42214
Gregory Szorc
wix: functionality to automate building WiX installers...
r42087 if args.sign_sn or args.sign_cert:
fn = build_signed_installer
kwargs['name'] = args.name
kwargs['subject_name'] = args.sign_sn
kwargs['cert_path'] = args.sign_cert
kwargs['cert_password'] = args.sign_password
kwargs['timestamp_url'] = args.sign_timestamp_url
fn(**kwargs)