##// END OF EJS Templates
rust: introduce `dirstate-tree` cargo feature...
rust: introduce `dirstate-tree` cargo feature This feature gates (at compile-time) the use of the newly-added dirstate tree. The motivation for this is that the dirstate tree is currently *very* slow; replacing the current hashmap-based dirstate is not a viable solution in terms of performance... and why would you be using the Rust implementation if not for performance? The feature will also help reviewers better understand the differences that will slowly appear as the dirstate tree gets better. Differential Revision: https://phab.mercurial-scm.org/D9132

File last commit:

r44059:303bf312 default
r46184:e604a3c0 default
Show More
packaging.py
74 lines | 1.7 KiB | text/x-python | PythonLexer
#!/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)