Mercurial > hg
annotate contrib/packaging/packaging.py @ 50692:9d4a2ea3dcb9 stable
paths: add an argument to format the suboption display
We will use it in the next function to the delta policy display. It could also
be use to deal with the other special case in the command code, but that is
unnecessary churn for stable so that part will go on default.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 15 Jun 2023 09:50:46 +0200 |
parents | 303bf312d5ed |
children |
rev | line source |
---|---|
43660
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
1 #!/usr/bin/env python3 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
2 # |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
3 # packaging.py - Mercurial packaging functionality |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
4 # |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
5 # Copyright 2019 Gregory Szorc <gregory.szorc@gmail.com> |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
6 # |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
7 # This software may be used and distributed according to the terms of the |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
8 # GNU General Public License version 2 or any later version. |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
9 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
10 import os |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
11 import pathlib |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
12 import subprocess |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
13 import sys |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
14 import venv |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
15 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
16 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
17 HERE = pathlib.Path(os.path.abspath(__file__)).parent |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
18 REQUIREMENTS_TXT = HERE / "requirements.txt" |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
19 SOURCE_DIR = HERE.parent.parent |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
20 VENV = SOURCE_DIR / "build" / "venv-packaging" |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
21 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
22 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
23 def bootstrap(): |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
24 venv_created = not VENV.exists() |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
25 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
26 VENV.parent.mkdir(exist_ok=True) |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
27 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
28 venv.create(VENV, with_pip=True) |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
29 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
30 if os.name == "nt": |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
31 venv_bin = VENV / "Scripts" |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
32 pip = venv_bin / "pip.exe" |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
33 python = venv_bin / "python.exe" |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
34 else: |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
35 venv_bin = VENV / "bin" |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
36 pip = venv_bin / "pip" |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
37 python = venv_bin / "python" |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
38 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
39 args = [ |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
40 str(pip), |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
41 "install", |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
42 "-r", |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
43 str(REQUIREMENTS_TXT), |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
44 "--disable-pip-version-check", |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
45 ] |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
46 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
47 if not venv_created: |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
48 args.append("-q") |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
49 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
50 subprocess.run(args, check=True) |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
51 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
52 os.environ["HGPACKAGING_BOOTSTRAPPED"] = "1" |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
53 os.environ["PATH"] = "%s%s%s" % (venv_bin, os.pathsep, os.environ["PATH"]) |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
54 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
55 subprocess.run([str(python), __file__] + sys.argv[1:], check=True) |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
56 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
57 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
58 def run(): |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
59 import hgpackaging.cli as cli |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
60 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
61 # Need to strip off main Python executable. |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
62 cli.main() |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
63 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
64 |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
65 if __name__ == "__main__": |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
66 try: |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
67 if "HGPACKAGING_BOOTSTRAPPED" not in os.environ: |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
68 bootstrap() |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
69 else: |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
70 run() |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
71 except subprocess.CalledProcessError as e: |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
72 sys.exit(e.returncode) |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
73 except KeyboardInterrupt: |
303bf312d5ed
packaging: convert to UNIX line endings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43513
diff
changeset
|
74 sys.exit(1) |