Mercurial > hg
annotate 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 |
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) |