scripts/install-debugclients.py

Tue, 29 Aug 2023 17:48:25 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 29 Aug 2023 17:48:25 +0200
branch
eric7
changeset 10170
6cf1ee737d8f
parent 10119
64147a7e6393
child 10300
60e8f2175b3b
permissions
-rw-r--r--

Corrected some more code style issues.

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
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
4 # Copyright (c) 2016 - 2023 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
8501
7b5f10581c35 Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
14 import compileall
7b5f10581c35 Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
15 import contextlib
7b5f10581c35 Removed the support for the deprecated distutils package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
16 import fnmatch
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9328
diff changeset
17 import getopt
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 progName = None
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 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
31 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
32 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
33 distDir = None
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
34 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
35 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
36 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
37 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
38 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
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
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 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
42 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 Exit the install script.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
44
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @param rcode result code to report back (integer)
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 usage(rcode=2):
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 Display a usage message and exit.
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 @param rcode the return code passed back to the calling process.
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 global progName, modDir, distDir
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 print()
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 print("Usage:")
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 if sys.platform == "darwin":
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 print(" {0} [-chz] [-d dir] [-i dir]".format(progName))
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 elif sys.platform.startswith("win"):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 print(" {0} [-chz] [-d dir]".format(progName))
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 else:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 print(" {0} [-chz][-d dir] [-i dir]".format(progName))
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 print("where:")
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 print(" -h, --help display this help message")
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
76 print(" -d dir where eric debug client files will be installed")
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 print(" (default: {0})".format(modDir))
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 if not sys.platform.startswith("win"):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 print(" -i dir temporary install prefix")
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 print(" (default: {0})".format(distDir))
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 print(" -c don't cleanup old installation first")
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 print(" -z don't compile the installed python files")
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 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
85
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 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
88 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 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
90 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
91 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 global modDir, pyModDir
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94 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
95 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
96 # 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
97 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
98 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
99 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
100 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
101 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
102 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
103 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
104 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
105
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
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
107 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
108 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 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
110
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 @param src name of the source directory
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 @param dst name of the destination directory
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 @param filters list of filter pattern determining the files to be copied
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 @param excludeDirs list of (sub)directories to exclude from copying
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7894
diff changeset
115 @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
116 be skipped
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
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
118 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
119 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
120 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
121 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
122 try:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 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
124 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
125 # 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
126 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 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
129 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
130 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
131 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
132 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
133 break
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 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
135 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
136 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
137 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
138 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
139 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
140 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
141 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
142 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
143 break
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 else:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 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
146 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
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
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 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
150 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 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
152 and directories.
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 @param dirName name of the directory to prune (string)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 # 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
157 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
158 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
159 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
160 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
161
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 # 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
163 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
164 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
165 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
166 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
167 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
168 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
169
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 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
172 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 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
174 """
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
175 global pyModDir, installPackage
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
176
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 try:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 # 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
179 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
180 if os.path.exists(dirname):
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 shutil.rmtree(dirname, 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
182 except OSError as msg:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
183 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
184 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
185
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 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
188 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 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
190
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 @param src source file name (string)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 @param dst destination file name or directory name (string)
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7894
diff changeset
193 @param perm permissions to be set (integer)
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 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
196 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
197 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
198 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
199
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 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
202 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 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
204
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 @return result code (integer)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 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
208
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 # 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
210 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
211 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
212 if distDir
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
213 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
214 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
215
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 try:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 # 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
218 # 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
219 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
220 os.path.join(eric7SourceDir, "DebugClients"),
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
221 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
222 ["*.py", "*.pyc", "*.pyo", "*.pyw"],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
223 excludePatterns=["eric7config.py*"],
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
224 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
225
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
226 # copy the top level package file
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
227 shutilCopy(os.path.join(eric7SourceDir, "__init__.py"), targetDir)
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
228
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 # 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
230 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
231
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
232 except OSError as msg:
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
233 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
234 return 7
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
235
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 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
237
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
239 def pipInstall(packageName, message, force=True):
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
240 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
241 Install the given package via pip.
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
242
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
243 @param packageName name of the package to be installed
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
244 @type str
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
245 @param message message to be shown to the user
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
246 @type str
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
247 @param force flag indicating to perform the installation
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
248 without asking the user
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
249 @type bool
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
250 @return flag indicating a successful installation
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
251 @rtype bool
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
252 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
253 ok = False
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
254 if force:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
255 answer = "y"
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
256 else:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
257 print(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
258 "{0}\nShall '{1}' be installed using pip? (Y/n)".format(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
259 message, packageName
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 end=" ",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
262 )
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
263 answer = input() # secok
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
264 if answer in ("", "Y", "y"):
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
265 exitCode = subprocess.run( # secok
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
266 [
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
267 sys.executable,
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
268 "-m",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
269 "pip",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
270 "install",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
271 "--prefer-binary",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
272 "--upgrade",
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
273 packageName,
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
274 ]
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
275 ).returncode
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
276 ok = exitCode == 0
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
277
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
278 return ok
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
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
281 def isPipOutdated():
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
282 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
283 Check, if pip is outdated.
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
284
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
285 @return flag indicating an outdated pip
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
286 @rtype bool
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
287 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
288 try:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
289 pipOut = (
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
290 subprocess.run( # secok
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
291 [sys.executable, "-m", "pip", "list", "--outdated", "--format=json"],
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
292 check=True,
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
293 capture_output=True,
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
294 text=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 .stdout.strip()
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
297 .splitlines()[0]
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 # only the first line contains the JSON data
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
300 except (OSError, subprocess.CalledProcessError):
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
301 pipOut = "[]" # default empty list
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
302 try:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
303 jsonList = json.loads(pipOut)
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
304 except Exception:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
305 jsonList = []
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
306 for package in jsonList:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
307 if isinstance(package, dict) and package["name"] == "pip":
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
308 print(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
309 "'pip' is outdated (installed {0}, available {1})".format(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
310 package["version"], package["latest_version"]
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
311 )
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
312 )
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
313 return True
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 return False
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
316
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 def updatePip():
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 Update the installed pip package.
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
321 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
322 global yes2All
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
323
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
324 if yes2All:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
325 answer = "y"
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
326 else:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
327 print("Shall 'pip' be updated (recommended)? (Y/n)", end=" ")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
328 answer = input() # secok
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
329 if answer in ("", "Y", "y"):
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
330 subprocess.run( # secok
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
331 [sys.executable, "-m", "pip", "install", "--upgrade", "pip"]
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
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
334
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
335 def doDependancyChecks():
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
336 """
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
337 Perform some dependency checks.
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 try:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
340 isSudo = os.getuid() == 0 and sys.platform != "darwin"
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
341 # disregard sudo installs on macOS
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
342 except AttributeError:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
343 isSudo = False
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 print("Checking dependencies")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
346
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
347 # 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
348 if not isSudo and isPipOutdated():
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
349 updatePip()
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
350 print("\n")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
351
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
352 # perform dependency checks
10119
64147a7e6393 Removed support for Python 3.7 because that is EOL.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10091
diff changeset
353 if sys.version_info < (3, 8, 0) or sys.version_info >= (3, 12, 0):
64147a7e6393 Removed support for Python 3.7 because that is EOL.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10091
diff changeset
354 print("Sorry, you must have Python 3.8.0 or higher, but less 3.12.0.")
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
355 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
356 exit(5)
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
357
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
358 requiredModulesList = {
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
359 # key is pip project name
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
360 # value is tuple of package name, pip install constraint
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
361 "coverage": ("coverage", ">=6.5.0"),
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
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
364 # check required modules
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
365 print("Required Packages")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
366 print("-----------------")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
367 requiredMissing = False
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
368 for requiredPackage in sorted(requiredModulesList):
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
369 try:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
370 importlib.import_module(requiredModulesList[requiredPackage][0])
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
371 print("Found", requiredPackage)
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
372 except ImportError as err:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
373 if isSudo:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
374 print("Required '{0}' could not be detected.".format(requiredPackage))
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
375 requiredMissing = True
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
376 else:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
377 pipInstall(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
378 requiredPackage + requiredModulesList[requiredPackage][1],
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
379 "Required '{0}' could not be detected.{1}".format(
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
380 requiredPackage, "\nError: {0}".format(err)
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
381 ),
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
382 force=True,
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
383 )
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
384 if requiredMissing:
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
385 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
386 print("Install them manually.")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
387
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
388 print()
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
389 print("All dependencies ok.")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
390 print()
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
391
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
392
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 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
394 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 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
396
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 @param argv the list of command line arguments.
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 """
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 # Parse the command line.
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 global progName, 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
401 global sourceDir, eric7SourceDir
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
402
10119
64147a7e6393 Removed support for Python 3.7 because that is EOL.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10091
diff changeset
403 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
404 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
405 exit(5)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
406
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 progName = os.path.basename(argv[0])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
408
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 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
410 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
411
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 initGlobals()
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 try:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 if sys.platform.startswith("win"):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
416 optlist, args = getopt.getopt(argv[1:], "chzd:", ["help"])
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 elif sys.platform == "darwin":
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
418 optlist, args = getopt.getopt(argv[1:], "chzd:i:", ["help"])
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 else:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
420 optlist, args = getopt.getopt(argv[1:], "chzd:i:", ["help"])
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 except getopt.GetoptError as err:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 print(err)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 usage()
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 for opt, arg in optlist:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 if opt in ["-h", "--help"]:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 usage(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 elif opt == "-d":
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 modDir = arg
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 elif opt == "-i":
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 distDir = os.path.normpath(arg)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 elif opt == "-c":
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 doCleanup = False
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 elif opt == "-z":
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 doCompile = False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
436
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
437 # check dependencies
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
438 doDependancyChecks()
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
439
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 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
441 if installFromSource:
6959
dfb8a57de154 install-debugclients: fixed an issue causing cleanup to fail.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
442 sourceDir = os.path.abspath("..")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
443
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
444 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
445 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
446 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
447 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
448 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
449
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 # 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
451 if installFromSource:
9694
90a7081e2837 Updated the various scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9690
diff changeset
452 print("Cleaning up source ...", end="", flush=True)
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8260
diff changeset
453 cleanupSource(os.path.join(eric7SourceDir, "DebugClients"))
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
454 print(" Done")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
455
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 # 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
457 try:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 if doCleanup:
9694
90a7081e2837 Updated the various scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9690
diff changeset
459 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
460 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
461 shutil.rmtree(distDir, True)
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 else:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 cleanUp()
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
464 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
465 except OSError as msg:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
466 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
467 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
468
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 if doCompile:
9694
90a7081e2837 Updated the various scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9690
diff changeset
470 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
471 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
472 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
473 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
474 compileall.compile_dir(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8260
diff changeset
475 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
476 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
477 rx=skipRe,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
478 quiet=True,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
479 )
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 else:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 compileall.compile_dir(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8260
diff changeset
482 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
483 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
484 rx=skipRe,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
485 quiet=True,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
486 )
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 sys.stdout = sys.__stdout__
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
488 print(" Done")
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
489
9694
90a7081e2837 Updated the various scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9690
diff changeset
490 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
491 res = installEricDebugClients()
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
492 print(" Done")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
493
9690
2dc33116df50 Debug Client - Python
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9674
diff changeset
494 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
495 print()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
496
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 exit(res)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
498
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
499
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 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
501 try:
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 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
503 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
504 raise
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 except Exception:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
506 print(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
507 """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
508 """ 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
509 """ 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
510 )
5053
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 raise
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 #
dac4920b55ad Added scripts to just install the eric6 debug clients in an eric6DebugClients package
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514 # eflag: noqa = M801

eric ide

mercurial