diff options
| author | QMK Bot <hello@qmk.fm> | 2021-08-13 17:38:51 +0000 |
|---|---|---|
| committer | QMK Bot <hello@qmk.fm> | 2021-08-13 17:38:51 +0000 |
| commit | cdba934f86717fc7618fd8a5403383d8570f524e (patch) | |
| tree | 68adf6a238ebede5fb382c99898945a7a48aa8ef /lib | |
| parent | 4adb7d2176aecdb0e493a5fd40d158722fdb35e7 (diff) | |
| parent | 4742a3a48f7560ee4dd2b55d4ecad4cdf1d139cd (diff) | |
| download | qmk_firmware-cdba934f86717fc7618fd8a5403383d8570f524e.tar.gz qmk_firmware-cdba934f86717fc7618fd8a5403383d8570f524e.zip | |
Merge remote-tracking branch 'origin/master' into develop
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/python/qmk/cli/__init__.py | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py index dea0eaeaf..b22f1c0d2 100644 --- a/lib/python/qmk/cli/__init__.py +++ b/lib/python/qmk/cli/__init__.py | |||
| @@ -69,6 +69,26 @@ subcommands = [ | |||
| 69 | ] | 69 | ] |
| 70 | 70 | ||
| 71 | 71 | ||
| 72 | def _install_deps(requirements): | ||
| 73 | """Perform the installation of missing requirements. | ||
| 74 | |||
| 75 | If we detect that we are running in a virtualenv we can't write into we'll use sudo to perform the pip install. | ||
| 76 | """ | ||
| 77 | command = [sys.executable, '-m', 'pip', 'install'] | ||
| 78 | |||
| 79 | if sys.prefix != sys.base_prefix: | ||
| 80 | # We are in a virtualenv, check to see if we need to use sudo to write to it | ||
| 81 | if not os.access(sys.prefix, os.W_OK): | ||
| 82 | print('Notice: Using sudo to install modules to location owned by root:', sys.prefix) | ||
| 83 | command.insert(0, 'sudo') | ||
| 84 | |||
| 85 | elif not os.access(sys.prefix, os.W_OK): | ||
| 86 | # We can't write to sys.prefix, attempt to install locally | ||
| 87 | command.append('--local') | ||
| 88 | |||
| 89 | return _run_cmd(*command, '-r', requirements) | ||
| 90 | |||
| 91 | |||
| 72 | def _run_cmd(*command): | 92 | def _run_cmd(*command): |
| 73 | """Run a command in a subshell. | 93 | """Run a command in a subshell. |
| 74 | """ | 94 | """ |
| @@ -172,7 +192,7 @@ safe_command = args and args[0] in safe_commands | |||
| 172 | if not safe_command: | 192 | if not safe_command: |
| 173 | if _broken_module_imports('requirements.txt'): | 193 | if _broken_module_imports('requirements.txt'): |
| 174 | if yesno('Would you like to install the required Python modules?'): | 194 | if yesno('Would you like to install the required Python modules?'): |
| 175 | _run_cmd(sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt') | 195 | _install_deps('requirements.txt') |
| 176 | else: | 196 | else: |
| 177 | print() | 197 | print() |
| 178 | print(msg_install % (str(Path('requirements.txt').resolve()),)) | 198 | print(msg_install % (str(Path('requirements.txt').resolve()),)) |
| @@ -181,7 +201,7 @@ if not safe_command: | |||
| 181 | 201 | ||
| 182 | if cli.config.user.developer and _broken_module_imports('requirements-dev.txt'): | 202 | if cli.config.user.developer and _broken_module_imports('requirements-dev.txt'): |
| 183 | if yesno('Would you like to install the required developer Python modules?'): | 203 | if yesno('Would you like to install the required developer Python modules?'): |
| 184 | _run_cmd(sys.executable, '-m', 'pip', 'install', '-r', 'requirements-dev.txt') | 204 | _install_deps('requirements-dev.txt') |
| 185 | elif yesno('Would you like to disable developer mode?'): | 205 | elif yesno('Would you like to disable developer mode?'): |
| 186 | _run_cmd(sys.argv[0], 'config', 'user.developer=None') | 206 | _run_cmd(sys.argv[0], 'config', 'user.developer=None') |
| 187 | else: | 207 | else: |
