--- a/scripts/install-server.py Tue Jun 25 14:44:19 2024 +0200 +++ b/scripts/install-server.py Tue Jun 25 16:15:59 2024 +0200 @@ -35,6 +35,7 @@ doCleanup = True doCompile = True doDepChecks = True +proxy = None sourceDir = "eric" eric7SourceDir = "" @@ -295,6 +296,8 @@ @return flag indicating a successful installation @rtype bool """ + global proxy + ok = False if force: answer = "y" @@ -307,17 +310,18 @@ ) answer = input() # secok if answer in ("", "Y", "y"): - exitCode = subprocess.run( # secok - [ - sys.executable, - "-m", - "pip", - "install", - "--prefer-binary", - "--upgrade", - packageName, - ] - ).returncode + args = [ + sys.executable, + "-m", + "pip", + "install", + "--prefer-binary", + "--upgrade", + ] + if proxy: + args.append(f"--proxy={proxy}") + args.append(packageName) + exitCode = subprocess.run(args).returncode # secok ok = exitCode == 0 return ok @@ -330,10 +334,22 @@ @return flag indicating an outdated pip @rtype bool """ + global proxy + try: + args = [ + sys.executable, + "-m", + "pip", + "list", + "--outdated", + "--format=json", + ] + if proxy: + args.append(f"--proxy={proxy}") pipOut = ( subprocess.run( # secok - [sys.executable, "-m", "pip", "list", "--outdated", "--format=json"], + args, check=True, capture_output=True, text=True, @@ -364,17 +380,22 @@ """ Update the installed pip package. """ - global yes2All + global proxy - if yes2All: - answer = "y" - else: - print("Shall 'pip' be updated (recommended)? (Y/n)", end=" ") - answer = input() # secok + print("Shall 'pip' be updated (recommended)? (Y/n)", end=" ") + answer = input() # secok if answer in ("", "Y", "y"): - subprocess.run( # secok - [sys.executable, "-m", "pip", "install", "--upgrade", "pip"] - ) + args = [ + sys.executable, + "-m", + "pip", + "install", + "--upgrade", + ] + if proxy: + args.append(f"--proxy={proxy}") + args.append("pip") + subprocess.run(args) # secok def doDependancyChecks(): @@ -544,6 +565,12 @@ action="store_false", help="don't perform dependency checks (use on your own risk)", ) + parser.add_argument( + "--proxy", + default=None, + metavar="url", + help="HTTP proxy url will be used with pip (default: no proxy used)", + ) return parser @@ -555,11 +582,11 @@ @param argv the list of command line arguments @type list of str """ - global modDir, doCleanup, doCompile, doDepChecks, distDir, scriptsDir + global modDir, doCleanup, doCompile, doDepChecks, distDir, scriptsDir, proxy global sourceDir, eric7SourceDir if sys.version_info < (3, 8, 0) or sys.version_info >= (4, 0, 0): - print("Sorry, the eric debugger requires Python 3.8 or better for running.") + print("Sorry, the eric-ide serverr requires Python 3.8 or better for running.") exit(5) if os.path.dirname(argv[0]): @@ -575,6 +602,7 @@ doDepChecks = args.x doCleanup = args.c doCompile = args.z + proxy = args.proxy if not sys.platform.startswith(("win", "cygwin")) and args.i: distDir = os.path.normpath(args.i)