Mercurial > hg
view contrib/packaging/packaging.py @ 49495:59a72267f5ce
fsmonitor: migrate Python ABCs from collections to collections.abc
The Collections Abstract Base Classes in the collections module are
deprecated since Python 3.3 in favor of collections.abc, and removed
in Python 3.10.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Fri, 09 Sep 2022 12:45:26 -0700 |
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)