scripts/install-dependencies.py

Wed, 10 Apr 2024 16:45:06 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 10 Apr 2024 16:45:06 +0200
branch
eric7
changeset 10679
4d3e0ce54322
parent 10439
21c28b0f9e41
child 10801
5859861e7a1f
permissions
-rw-r--r--

General
- Changed code from using `QFileSystemWatcher` to our own implementation (`EricFileSystemWatcher`) based on the `watchdog` Python package in order to get more fine grained control over the reported changes.

8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 #!/usr/bin/env python3
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3
10439
21c28b0f9e41 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10420
diff changeset
4 # Copyright (c) 2022 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5 #
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 # This script installs all packages eric depends on.
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 Installation script for the eric IDE dependencies.
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 """
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
12 import contextlib
9324
7f7f3e47b238 Set some security considerations to 'ok'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9314
diff changeset
13 import subprocess # secok
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 import sys
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
17 def exit(rcode=0):
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
18 """
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
19 Exit the install script.
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
20
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10341
diff changeset
21 @param rcode result code to report back
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10341
diff changeset
22 @type int
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
23 """
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
24 print()
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
25
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
26 if sys.platform.startswith(("win", "cygwin")):
9328
49a0a9cb2505 Fixed some code style issues detected by the new checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9324
diff changeset
27 with contextlib.suppress(EOFError):
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
28 input("Press enter to continue...") # secok
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
29
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
30 sys.exit(rcode)
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
31
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
32
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 def pipInstall(packageName):
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 Install the given package via pip.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
36
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @param packageName name of the package to be installed
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @type str
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @return flag indicating a successful installation
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @rtype bool
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 ok = False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43 exitCode = subprocess.run( # secok
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
44 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
45 sys.executable,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
46 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
47 "pip",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48 "install",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
49 "--prefer-binary",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
50 "--upgrade",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
51 packageName,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52 ]
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 ).returncode
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54 ok = exitCode == 0
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
55
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 return ok
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 def main():
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 """
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 Function to install the eric dependencies.
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
63 requiredPackages = (
9209
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
64 "PyQt6>=6.2.0",
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
65 "PyQt6-Charts>=6.2.0",
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
66 "PyQt6-WebEngine>=6.2.0",
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
67 "PyQt6-QScintilla>=2.13.0",
9107
8e9525a780ae Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
68 "tomlkit",
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 "asttokens",
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 "EditorConfig",
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 "Pygments",
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 "parso",
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 "jedi",
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 "packaging",
9209
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
75 "cyclonedx-python-lib",
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
76 "cyclonedx-bom",
b99e7fd55fd3 Reorganized the project structure to use the source layout in order to support up-to-date build systems with "pyproject.toml".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9107
diff changeset
77 "trove-classifiers",
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
78 "black>=22.6.0",
9632
dd907ee33b03 Removed use of 'send2trash'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9328
diff changeset
79 "isort>=5.10.0",
9694
90a7081e2837 Updated the various scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
80 "coverage>=6.5.0",
10679
4d3e0ce54322 General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
81 "semver",
4d3e0ce54322 General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
82 "pipdeptree",
4d3e0ce54322 General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
83 "watchdog>=3.0.0",
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 )
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
85 optionalPackages = (
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
86 "docutils",
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
87 "Markdown",
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
88 "pyyaml",
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
89 "chardet",
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
90 "pyenchant",
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
91 "wheel",
10341
3fdffd9cc21d Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9694
diff changeset
92 "esprima",
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
93 )
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
94
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
95 packages = []
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
96 if len(sys.argv) == 2:
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
97 if sys.argv[1] == "--all":
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
98 packages = requiredPackages + optionalPackages
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
99 elif sys.argv[1] == "--required":
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
100 packages = requiredPackages
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
101 elif sys.argv[1] == "--optional":
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
102 packages = optionalPackages
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
103
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
104 if not packages:
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
105 print("Usage:")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
106 print(" install-dependencies --all | --optional | --required")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
107 print("where:")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
108 print(" --all install all dependencies")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
109 print(" --optional install all optional dependencies")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
110 print(" --required install all required dependencies")
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
111
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
112 exit(42)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 failedPackages = []
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 for package in packages:
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 ok = pipInstall(package)
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 if not ok:
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 failedPackages.append(package)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 print()
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 print("Installation Summary")
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 print("--------------------")
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 if failedPackages:
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 print("These packages could not be installed:")
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 for package in failedPackages:
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 print(" " + package)
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 else:
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 print("All packages installed successfully.")
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129
9314
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
130 exit(0)
7ba79b00ea96 install scripts
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
131
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
132
8988
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 if __name__ == "__main__":
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 main()
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 #
ffa38e0415df Added a script to install all of eric's dependencies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 # eflag: noqa = M801

eric ide

mercurial