Mercurial > hg
view contrib/packaging/packaging.py @ 49487:e8481625c582
rust: add Debug constraint to Matcher trait
This makes sure we can easily debug which Matcher we're looking at when using
trait objects, and is just generally useful. Effort to make the debugging
output nicer has been kept to a minimum, please feel free to improve.
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Mon, 11 Jul 2022 11:59:13 +0200 |
parents | 303bf312d5ed |
children |
line wrap: on
line source
#!/usr/bin/env python3 # # packaging.py - Mercurial packaging functionality # # 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. import os import pathlib import subprocess import sys import venv HERE = pathlib.Path(os.path.abspath(__file__)).parent REQUIREMENTS_TXT = HERE / "requirements.txt" SOURCE_DIR = HERE.parent.parent VENV = SOURCE_DIR / "build" / "venv-packaging" def bootstrap(): venv_created = not VENV.exists() VENV.parent.mkdir(exist_ok=True) venv.create(VENV, with_pip=True) if os.name == "nt": venv_bin = VENV / "Scripts" pip = venv_bin / "pip.exe" python = venv_bin / "python.exe" else: venv_bin = VENV / "bin" pip = venv_bin / "pip" python = venv_bin / "python" args = [ str(pip), "install", "-r", str(REQUIREMENTS_TXT), "--disable-pip-version-check", ] if not venv_created: args.append("-q") subprocess.run(args, check=True) os.environ["HGPACKAGING_BOOTSTRAPPED"] = "1" os.environ["PATH"] = "%s%s%s" % (venv_bin, os.pathsep, os.environ["PATH"]) subprocess.run([str(python), __file__] + sys.argv[1:], check=True) def run(): import hgpackaging.cli as cli # Need to strip off main Python executable. cli.main() if __name__ == "__main__": try: if "HGPACKAGING_BOOTSTRAPPED" not in os.environ: bootstrap() else: run() except subprocess.CalledProcessError as e: sys.exit(e.returncode) except KeyboardInterrupt: sys.exit(1)