##// END OF EJS Templates
packaging: drop Disco (19.04) and add Focal (20.04)...
packaging: drop Disco (19.04) and add Focal (20.04) Disco support ended in January 2020, and Focal does not have an announced EOL. Something is now installing and configuring `tzdata`, which was throwing up an interactive prompt to configure the timezone. Aside from being hostile to automation, the prompt didn't actually accept input and hung the process. This propagates the host's timezone into the image via environment variable in order to skip the prompt, and avoid hardcoding a value. Differential Revision: https://phab.mercurial-scm.org/D9396

File last commit:

r44059:303bf312 default
r46582:97142451 default
Show More
packaging.py
74 lines | 1.7 KiB | text/x-python | PythonLexer
Gregory Szorc
packaging: convert to UNIX line endings...
r44059 #!/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)