More robust choco install and helpful install_deps.py messages (#7461)

* Only show error/success conditionally

* Make choco install more robust

* Improve deps script to remind about restarting shells

* Add note about Mac Qt

* Update ChangeLog
This commit is contained in:
Nick Bolton 2024-09-02 14:00:24 +01:00 committed by GitHub
parent bcdf70a298
commit 8778a305f4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 47 additions and 9 deletions

View file

@ -7,6 +7,7 @@ Enhancements:
- #7445 Update `config.yaml` to support Linux Mint build target
- #7453 Change default value for dev thanks message
- #7455 Use EI screen when XDG_SESSION_TYPE is "wayland"
- #7461 More robust `choco` install and helpful `install_deps.py` messages
# 1.15.1

View file

@ -52,9 +52,23 @@ def main():
colors = env.import_colors()
print()
print(f"{colors.SUCCESS_TEXT} Dependencies installed")
if error:
print(f"{colors.ERROR_TEXT} Failed to install dependencies")
else:
print(f"{colors.SUCCESS_TEXT} Dependencies installed")
# On Windows and macOS, we set env vars for cmake, but for them to be picked up,
# either the shell needs to be restarted or the env vars need to be re-sourced.
# Restarting the shell is easier for most people.
if not env.is_linux():
print(f"{colors.WARNING_TEXT} Please restart your shells for new env vars")
# Useful on Windows, when elevated, Python is opened in a new window and closes
# immediately after the script finishes. This keeps the script window open so that
# the user can see the output.
if args.pause_on_exit:
print()
input("Press enter to continue...")
if error:
@ -138,6 +152,10 @@ class Dependencies:
"""Installs dependencies on macOS."""
import lib.mac as mac
# On macOS, brew does have a Qt package available, but it is always built against the
# current macOS version and the brew version also does some really weird stuff with the
# library symbols, which confuses the heck out of `macqtdeploy`. So, using the official
# Qt library binaries seems to be the most reliable option for distribution.
qt = qt_utils.MacQt(*self.config.get_qt_config())
qt.install()

View file

@ -3,7 +3,7 @@ from colorama import Fore # type: ignore
colorama.init()
SUCCESS_TEXT = f"{Fore.GREEN}Success:{Fore.RESET}"
SUCCESS_TEXT = f"{Fore.LIGHTGREEN_EX}Success:{Fore.RESET}"
ERROR_TEXT = f"{Fore.RED}Error:{Fore.RESET}"
WARNING_TEXT = f"{Fore.YELLOW}Warning:{Fore.RESET}"
WARNING_TEXT = f"{Fore.LIGHTYELLOW_EX}Warning:{Fore.RESET}"
HINT_TEXT = f"{Fore.LIGHTBLUE_EX}Hint:{Fore.RESET}"

View file

@ -147,12 +147,8 @@ class WindowsChoco:
print_cmd=True,
)
else:
cmd_utils.run(
"winget install chocolatey",
check=False,
shell=True,
print_cmd=True,
)
self.ensure_choco_installed()
cmd_utils.run(
command,
shell=True,
@ -186,3 +182,26 @@ class WindowsChoco:
print(f"Removed package from choco config: {remove}")
tree.write(choco_config_file)
def ensure_choco_installed(self):
if cmd_utils.has_command("choco"):
return
if not cmd_utils.has_command("winget"):
print("The winget command was not found", file=sys.stderr)
sys.exit(1)
print("The choco command was not found, installing Chocolatey...")
cmd_utils.run(
"winget install chocolatey",
check=False,
shell=True,
print_cmd=True,
)
if not cmd_utils.has_command("choco"):
print(
"The choco command was still not found, please re-run this script...",
file=sys.stderr,
)
sys.exit(1)