eric7/UI/upgrader.py

Sat, 05 Mar 2022 18:01:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 05 Mar 2022 18:01:12 +0100
branch
eric7
changeset 8970
188ff9ce8657
child 8972
54816b8f740f
permissions
-rw-r--r--

Added capability to upgrade PyQt packages eric depends on from within eric.

8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 #!/usr/bin/env python3
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 # Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5 #
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 Script to upgrade the packages eric depends on.
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 This process must be performed while eric is closed. The script will upgrade
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 the requested packages and will restart eric.
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 import os
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 import subprocess
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 import sys
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 import time
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from eric7config import getConfig
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 def upgradePyQt():
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Function to upgrade the PyQt packages via pip.
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @return flag indicating a successful installation
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 @rtype bool
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 pyqtPackages = [
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 "pyqt6", "pyqt6-sip", "pyqt6-webengine", "pyqt6-charts",
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 "pyqt6-qscintilla", "pyqt6-qt6", "pyqt6-webengine-qt6",
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 "pyqt6-charts-qt6"
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 ]
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 exitCode = subprocess.run( # secok
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 [sys.executable, "-m", "pip", "install", "--prefer-binary",
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 "--upgrade"] + pyqtPackages
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 ).returncode
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 ok = (exitCode == 0)
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 return ok
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 def upgradeEric():
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 Function to upgrade the eric-ide package via pip.
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @return flag indicating a successful installation
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @rtype bool
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 exitCode = subprocess.run( # secok
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 [sys.executable, "-m", "pip", "install", "--prefer-binary",
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 "--upgrade", "eric-ide"]
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 ).returncode
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 ok = (exitCode == 0)
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 return ok
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 def startEric(args):
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 Function to start eric with the given arguments.
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @param args list containing the start arguments
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @type list of str
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 args = [sys.executable] + args
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 subprocess.Popen(args)
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 def main():
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 Main entry point into the upgrader.
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 # wait a few seconds to give eric the chance to fully shut down
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 time.sleep(2)
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 try:
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 ddindex = sys.argv.index("--")
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 except ValueError:
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 # '--' was not found. Start eric with all parameters given.
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 ddindex = 1
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 ericStartArgs = sys.argv[ddindex + 1:]
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 if not ericStartArgs:
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 # create default start arguments
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 ericStartArgs = [
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 os.path.join(getConfig("ericDir"), "eric7.py"),
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 "--start-session",
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 ]
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 upgraderArgs = sys.argv[1:ddindex]
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 # now perform the upgrade and start eric, if it was successful
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 if upgraderArgs[0] == "--pyqt":
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 ok = upgradePyQt()
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 elif upgraderArgs[0] == "--eric":
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 ok = upgradeEric()
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 else:
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 ok = False
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 if ok:
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 startEric(ericStartArgs)
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 sys.exit(0)
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 else:
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 sys.exit(1)
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 if __name__ == "__main__":
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 main()

eric ide

mercurial