scripts/install-debugclients.py

Sat, 23 Dec 2023 15:48:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 23 Dec 2023 15:48:12 +0100
branch
eric7
changeset 10439
21c28b0f9e41
parent 10420
5ac83a87954d
child 10781
0e3d6e22efaf
permissions
-rw-r--r--

Updated copyright for 2024.

5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 #!/usr/bin/env python3
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
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) 2016 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5 #
7960
e8fc383322f7 Harmonized some user visible strings and changed the term 'eric6' to the more generic 'eric'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
6 # This is the install script for the eric debug client. It may be used
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 # to just install the debug clients for remote debugging.
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 #
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 """
7960
e8fc383322f7 Harmonized some user visible strings and changed the term 'eric6' to the more generic 'eric'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
11 Installation script for the eric debug clients.
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
10300
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
14 import argparse
8501
7b5f10581c35 Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
15 import compileall
7b5f10581c35 Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
16 import contextlib
7b5f10581c35 Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
17 import fnmatch
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
18 import importlib
7639
422fd05e9c91 Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7637
diff changeset
19 import io
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
20 import json
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 import os
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 import re
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 import shutil
10170
6cf1ee737d8f Corrected some more code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10119
diff changeset
24 import subprocess # secok
8501
7b5f10581c35 Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
25 import sys
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9328
diff changeset
26 import sysconfig
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 # Define the globals.
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 currDir = os.getcwd()
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 modDir = None
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 pyModDir = None
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 distDir = None
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
33 installPackage = "eric7"
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 doCleanup = True
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 doCompile = True
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 sourceDir = "eric"
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: 8918
diff changeset
37 eric7SourceDir = ""
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 def exit(rcode=0):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 Exit the install script.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
44 @param rcode result code to report back
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
45 @type int
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 global currDir
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 if sys.platform.startswith("win"):
9328
49a0a9cb2505 Fixed some code style issues detected by the new checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
50 with contextlib.suppress(EOFError):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
51 input("Press enter to continue...") # secok
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 os.chdir(currDir)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 sys.exit(rcode)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 def initGlobals():
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 Module function to set the values of globals that need more than a
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 simple assignment.
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 global modDir, pyModDir
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
64
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
65 modDir = sysconfig.get_path("platlib")
10091
ac6edcfe7831 Corrected the install and uninstall scripts to cope use the user site-packages if a global install without admin rights is done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9694
diff changeset
66 if not os.access(modDir, os.W_OK):
ac6edcfe7831 Corrected the install and uninstall scripts to cope use the user site-packages if a global install without admin rights is done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9694
diff changeset
67 # can't write to the standard path, use the 'user' path instead
ac6edcfe7831 Corrected the install and uninstall scripts to cope use the user site-packages if a global install without admin rights is done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9694
diff changeset
68 if sys.platform.startswith(("win", "cygwin")):
ac6edcfe7831 Corrected the install and uninstall scripts to cope use the user site-packages if a global install without admin rights is done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9694
diff changeset
69 scheme = "nt_user"
ac6edcfe7831 Corrected the install and uninstall scripts to cope use the user site-packages if a global install without admin rights is done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9694
diff changeset
70 elif sys.platform == "darwin":
ac6edcfe7831 Corrected the install and uninstall scripts to cope use the user site-packages if a global install without admin rights is done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9694
diff changeset
71 scheme = "osx_framework_user"
ac6edcfe7831 Corrected the install and uninstall scripts to cope use the user site-packages if a global install without admin rights is done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9694
diff changeset
72 else:
ac6edcfe7831 Corrected the install and uninstall scripts to cope use the user site-packages if a global install without admin rights is done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9694
diff changeset
73 scheme = "posix_user"
ac6edcfe7831 Corrected the install and uninstall scripts to cope use the user site-packages if a global install without admin rights is done.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9694
diff changeset
74 modDir = sysconfig.get_path("platlib", scheme)
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 pyModDir = modDir
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
5651
982465f8389c Fixed a few code style issues related to the usage of mutable types for default arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
78 def copyTree(src, dst, filters, excludeDirs=None, excludePatterns=None):
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Copy files of a directory tree.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 @param src name of the source directory
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
83 @type str
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @param dst name of the destination directory
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
85 @type str
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 @param filters list of filter pattern determining the files to be copied
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
87 @type list of str
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @param excludeDirs list of (sub)directories to exclude from copying
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
89 @type list of str
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7894
diff changeset
90 @param excludePatterns list of filter pattern determining the files to
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 be skipped
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
92 @type str
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
5651
982465f8389c Fixed a few code style issues related to the usage of mutable types for default arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
94 if excludeDirs is None:
982465f8389c Fixed a few code style issues related to the usage of mutable types for default arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
95 excludeDirs = []
982465f8389c Fixed a few code style issues related to the usage of mutable types for default arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
96 if excludePatterns is None:
982465f8389c Fixed a few code style issues related to the usage of mutable types for default arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5597
diff changeset
97 excludePatterns = []
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 try:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 names = os.listdir(src)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 except OSError:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 # ignore missing directories
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
103
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 for name in names:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 skipIt = False
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 for excludePattern in excludePatterns:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 if fnmatch.fnmatch(name, excludePattern):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 skipIt = True
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 break
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 if not skipIt:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 srcname = os.path.join(src, name)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 dstname = os.path.join(dst, name)
5597
3d88d53f8c2b Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
113 for fileFilter in filters:
3d88d53f8c2b Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
114 if fnmatch.fnmatch(srcname, fileFilter):
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 if not os.path.isdir(dst):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 os.makedirs(dst)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 shutil.copy2(srcname, dstname)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 os.chmod(dstname, 0o644)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 break
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 else:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 if os.path.isdir(srcname) and srcname not in excludeDirs:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
122 copyTree(srcname, dstname, filters, excludePatterns=excludePatterns)
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 def cleanupSource(dirName):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 Cleanup the sources directory to get rid of leftover files
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 and directories.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
130 @param dirName name of the directory to prune
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
131 @type str
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 # step 1: delete the __pycache__ directory and all *.pyc files
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 if os.path.exists(os.path.join(dirName, "__pycache__")):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 shutil.rmtree(os.path.join(dirName, "__pycache__"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
136 for name in [f for f in os.listdir(dirName) if fnmatch.fnmatch(f, "*.pyc")]:
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 os.remove(os.path.join(dirName, name))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 # step 2: descent into subdirectories and delete them if empty
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 for name in os.listdir(dirName):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 name = os.path.join(dirName, name)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 if os.path.isdir(name):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 cleanupSource(name)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 if len(os.listdir(name)) == 0:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 os.rmdir(name)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 def cleanUp():
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 Uninstall the old eric debug client files.
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 """
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: 8918
diff changeset
152 global pyModDir, installPackage
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
153
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 try:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 # Cleanup the install directories
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 dirname = os.path.join(pyModDir, installPackage)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 if os.path.exists(dirname):
10403
ea3320d5e8e9 Changed code using "shutil.rmtree()" more readable by adding "ignore_errors=" where this parameter is non-default.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10300
diff changeset
158 shutil.rmtree(dirname, ignore_errors=True)
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7639
diff changeset
159 except OSError as msg:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
160 sys.stderr.write("Error: {0}\nTry install with admin rights.\n".format(msg))
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 exit(7)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 def shutilCopy(src, dst, perm=0o644):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 Wrapper function around shutil.copy() to ensure the permissions.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
167
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
168 @param src source file name
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
169 @type str
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
170 @param dst destination file name or directory name
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
171 @type str
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
172 @param perm permissions to be set
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
173 @type int
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 shutil.copy(src, dst)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 if os.path.isdir(dst):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 dst = os.path.join(dst, os.path.basename(src))
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 os.chmod(dst, perm)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 def installEricDebugClients():
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 Actually perform the installation steps.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
184
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
185 @return result code
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
186 @rtype int
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 global distDir, doCleanup, sourceDir, modDir
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
189
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 # set install prefix, if not None
8260
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
191 targetDir = (
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
192 os.path.normpath(os.path.join(distDir, installPackage))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
193 if distDir
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
194 else os.path.join(modDir, installPackage)
8260
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
195 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
196
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 try:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 # Install the files
7960
e8fc383322f7 Harmonized some user visible strings and changed the term 'eric6' to the more generic 'eric'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
199 # copy the various parts of eric debug clients
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 copyTree(
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: 8918
diff changeset
201 os.path.join(eric7SourceDir, "DebugClients"),
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
202 os.path.join(targetDir, "DebugClients"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
203 ["*.py", "*.pyc", "*.pyo", "*.pyw"],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
204 excludePatterns=["eric7config.py*"],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
205 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
206
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
207 # copy the top level package file
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
208 shutilCopy(os.path.join(eric7SourceDir, "__init__.py"), targetDir)
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
209
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 # copy the license file
9674
43dd357b3bff Modified the pyproject.toml file to include a reference to the license file and changed its extension to be .txt.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
211 shutilCopy(os.path.join(sourceDir, "docs", "LICENSE.txt"), targetDir)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
212
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7639
diff changeset
213 except OSError as msg:
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
214 sys.stderr.write("\nError: {0}\nTry install with admin rights.\n".format(msg))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
215 return 7
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
216
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 return 0
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
220 def pipInstall(packageName, message, force=True):
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
221 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
222 Install the given package via pip.
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
223
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
224 @param packageName name of the package to be installed
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
225 @type str
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
226 @param message message to be shown to the user
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
227 @type str
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
228 @param force flag indicating to perform the installation
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
229 without asking the user
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
230 @type bool
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
231 @return flag indicating a successful installation
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
232 @rtype bool
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
233 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
234 ok = False
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
235 if force:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
236 answer = "y"
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
237 else:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
238 print(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
239 "{0}\nShall '{1}' be installed using pip? (Y/n)".format(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
240 message, packageName
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
241 ),
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
242 end=" ",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
243 )
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
244 answer = input() # secok
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
245 if answer in ("", "Y", "y"):
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
246 exitCode = subprocess.run( # secok
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
247 [
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
248 sys.executable,
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
249 "-m",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
250 "pip",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
251 "install",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
252 "--prefer-binary",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
253 "--upgrade",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
254 packageName,
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
255 ]
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
256 ).returncode
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
257 ok = exitCode == 0
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
258
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
259 return ok
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
260
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
261
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
262 def isPipOutdated():
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
263 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
264 Check, if pip is outdated.
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
265
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
266 @return flag indicating an outdated pip
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
267 @rtype bool
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
268 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
269 try:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
270 pipOut = (
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
271 subprocess.run( # secok
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
272 [sys.executable, "-m", "pip", "list", "--outdated", "--format=json"],
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
273 check=True,
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
274 capture_output=True,
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
275 text=True,
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
276 )
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
277 .stdout.strip()
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
278 .splitlines()[0]
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
279 )
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
280 # only the first line contains the JSON data
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
281 except (OSError, subprocess.CalledProcessError):
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
282 pipOut = "[]" # default empty list
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
283 try:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
284 jsonList = json.loads(pipOut)
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
285 except Exception:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
286 jsonList = []
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
287 for package in jsonList:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
288 if isinstance(package, dict) and package["name"] == "pip":
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
289 print(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
290 "'pip' is outdated (installed {0}, available {1})".format(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
291 package["version"], package["latest_version"]
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
292 )
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
293 )
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
294 return True
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
295
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
296 return False
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
297
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
298
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
299 def updatePip():
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
300 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
301 Update the installed pip package.
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
302 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
303 global yes2All
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
304
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
305 if yes2All:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
306 answer = "y"
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
307 else:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
308 print("Shall 'pip' be updated (recommended)? (Y/n)", end=" ")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
309 answer = input() # secok
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
310 if answer in ("", "Y", "y"):
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
311 subprocess.run( # secok
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
312 [sys.executable, "-m", "pip", "install", "--upgrade", "pip"]
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
313 )
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
314
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
315
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
316 def doDependancyChecks():
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
317 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
318 Perform some dependency checks.
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
319 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
320 try:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
321 isSudo = os.getuid() == 0 and sys.platform != "darwin"
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
322 # disregard sudo installs on macOS
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
323 except AttributeError:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
324 isSudo = False
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
325
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
326 print("Checking dependencies")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
327
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
328 # update pip first even if we don't need to install anything
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
329 if not isSudo and isPipOutdated():
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
330 updatePip()
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
331 print("\n")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
332
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
333 # perform dependency checks
10300
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
334 if sys.version_info < (3, 8, 0) or sys.version_info >= (3, 13, 0):
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
335 print("Sorry, you must have Python 3.8.0 or higher, but less 3.13.0.")
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
336 print("Yours is {0}.".format(".".join(str(v) for v in sys.version_info[:3])))
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
337 exit(5)
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
338
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
339 requiredModulesList = {
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
340 # key is pip project name
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
341 # value is tuple of package name, pip install constraint
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
342 "coverage": ("coverage", ">=6.5.0"),
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
343 }
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
344
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
345 # check required modules
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
346 print("Required Packages")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
347 print("-----------------")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
348 requiredMissing = False
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
349 for requiredPackage in sorted(requiredModulesList):
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
350 try:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
351 importlib.import_module(requiredModulesList[requiredPackage][0])
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
352 print("Found", requiredPackage)
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
353 except ImportError as err:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
354 if isSudo:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
355 print("Required '{0}' could not be detected.".format(requiredPackage))
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
356 requiredMissing = True
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
357 else:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
358 pipInstall(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
359 requiredPackage + requiredModulesList[requiredPackage][1],
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
360 "Required '{0}' could not be detected.{1}".format(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
361 requiredPackage, "\nError: {0}".format(err)
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
362 ),
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
363 force=True,
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
364 )
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
365 if requiredMissing:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
366 print("Some required packages are missing and could not be installed.")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
367 print("Install them manually.")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
368
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
369 print()
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
370 print("All dependencies ok.")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
371 print()
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
372
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
373
10300
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
374 def createArgumentParser():
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
375 """
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
376 Function to create an argument parser.
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
377
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
378 @return created argument parser object
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
379 @rtype argparse.ArgumentParser
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
380 """
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
381 parser = argparse.ArgumentParser(
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
382 description="Install eric7 debug clients from the source code tree."
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
383 )
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
384
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
385 parser.add_argument(
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
386 "-d",
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
387 metavar="dir",
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
388 default=modDir,
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
389 help="directory where eric debug client files will be installed"
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
390 " (default: {0})".format(modDir),
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
391 )
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
392 if not sys.platform.startswith(("win", "cygwin")):
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
393 parser.add_argument(
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
394 "-i",
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
395 metavar="dir",
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
396 default=distDir,
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
397 help="temporary install prefix (default: {0})".format(distDir),
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
398 )
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
399 parser.add_argument(
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
400 "-c",
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
401 action="store_false",
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
402 help="don't cleanup old installation first",
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
403 )
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
404 parser.add_argument(
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
405 "-z",
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
406 action="store_false",
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
407 help="don't compile the installed python files",
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
408 )
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
409
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
410 return parser
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
411
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
412
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 def main(argv):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 The main function of the script.
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416
10420
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
417 @param argv the list of command line arguments
5ac83a87954d Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10403
diff changeset
418 @type list of str
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 """
10300
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
420 global modDir, doCleanup, doCompile, distDir
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: 8918
diff changeset
421 global sourceDir, eric7SourceDir
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
422
10119
64147a7e6393 Removed support for Python 3.7 because that is EOL.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10091
diff changeset
423 if sys.version_info < (3, 8, 0) or sys.version_info >= (4, 0, 0):
64147a7e6393 Removed support for Python 3.7 because that is EOL.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10091
diff changeset
424 print("Sorry, the eric debugger requires Python 3.8 or better for running.")
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 exit(5)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
426
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 if os.path.dirname(argv[0]):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 os.chdir(os.path.dirname(argv[0]))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
429
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 initGlobals()
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431
10300
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
432 parser = createArgumentParser()
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
433 args = parser.parse_args()
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434
10300
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
435 modDir = args.d
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
436 doCleanup = args.c
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
437 doCompile = args.z
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
438 if not sys.platform.startswith(("win", "cygwin")) and args.i:
60e8f2175b3b Changed the install and uninstall scripts to use 'argparse' instead of 'getopt'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
439 distDir = os.path.normpath(args.i)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
440
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
441 # check dependencies
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
442 doDependancyChecks()
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
443
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 installFromSource = not os.path.isdir(sourceDir)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 if installFromSource:
6959
dfb8a57de154 install-debugclients: fixed an issue causing cleanup to fail.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
446 sourceDir = os.path.abspath("..")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
447
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: 8918
diff changeset
448 eric7SourceDir = (
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: 8918
diff changeset
449 os.path.join(sourceDir, "eric7")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
450 if os.path.exists(os.path.join(sourceDir, "eric7"))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
451 else os.path.join(sourceDir, "src", "eric7")
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: 8918
diff changeset
452 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
453
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 # cleanup source if installing from source
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 if installFromSource:
9694
90a7081e2837 Updated the various scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9690
diff changeset
456 print("Cleaning up source ...", end="", flush=True)
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8260
diff changeset
457 cleanupSource(os.path.join(eric7SourceDir, "DebugClients"))
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
458 print(" Done")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
459
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 # cleanup old installation
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 try:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 if doCleanup:
9694
90a7081e2837 Updated the various scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9690
diff changeset
463 print("Cleaning up old installation ...", end="", flush=True)
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 if distDir:
10403
ea3320d5e8e9 Changed code using "shutil.rmtree()" more readable by adding "ignore_errors=" where this parameter is non-default.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10300
diff changeset
465 shutil.rmtree(distDir, ignore_errors=True)
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 else:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 cleanUp()
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
468 print(" Done")
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7639
diff changeset
469 except OSError as msg:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
470 sys.stderr.write("Error: {0}\nTry install as root.\n".format(msg))
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 exit(7)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 if doCompile:
9694
90a7081e2837 Updated the various scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9690
diff changeset
474 print("Compiling source files ...", end="", flush=True)
5179
5f56410e7624 Combined version of the Python debugger.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 5145
diff changeset
475 skipRe = re.compile(r"DebugClients[\\/]Python[\\/]")
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 sys.stdout = io.StringIO()
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 if distDir:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 compileall.compile_dir(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8260
diff changeset
479 os.path.join(eric7SourceDir, "DebugClients"),
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 ddir=os.path.join(distDir, modDir, installPackage),
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 rx=skipRe,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
482 quiet=True,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
483 )
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 else:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 compileall.compile_dir(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8260
diff changeset
486 os.path.join(eric7SourceDir, "DebugClients"),
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 ddir=os.path.join(modDir, installPackage),
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 rx=skipRe,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
489 quiet=True,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
490 )
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 sys.stdout = sys.__stdout__
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
492 print(" Done")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
493
9694
90a7081e2837 Updated the various scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9690
diff changeset
494 print("Installing eric debug clients ...", end="", flush=True)
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 res = installEricDebugClients()
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
496 print(" Done")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
497
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
498 print("Installation complete.")
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 print()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
500
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 exit(res)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
502
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
503
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 if __name__ == "__main__":
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 try:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 main(sys.argv)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 except SystemExit:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 raise
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 except Exception:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
510 print(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
511 """An internal error occured. Please report all the output"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
512 """ of the program,\nincluding the following traceback, to"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
513 """ eric-bugs@eric-ide.python-projects.org.\n"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
514 )
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 raise
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517 #
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 # eflag: noqa = M801

eric ide

mercurial