Skip to content

Commit

Permalink
use sudo to install modules if needed (qmk#13984)
Browse files Browse the repository at this point in the history
  • Loading branch information
skullydazed committed Aug 13, 2021
1 parent 0c175d6 commit 4742a3a
Showing 1 changed file with 22 additions and 2 deletions.
24 changes: 22 additions & 2 deletions lib/python/qmk/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,26 @@
]


def _install_deps(requirements):
"""Perform the installation of missing requirements.
If we detect that we are running in a virtualenv we can't write into we'll use sudo to perform the pip install.
"""
command = [sys.executable, '-m', 'pip', 'install']

if sys.prefix != sys.base_prefix:
# We are in a virtualenv, check to see if we need to use sudo to write to it
if not os.access(sys.prefix, os.W_OK):
print('Notice: Using sudo to install modules to location owned by root:', sys.prefix)
command.insert(0, 'sudo')

elif not os.access(sys.prefix, os.W_OK):
# We can't write to sys.prefix, attempt to install locally
command.append('--local')

return _run_cmd(*command, '-r', requirements)


def _run_cmd(*command):
"""Run a command in a subshell.
"""
Expand Down Expand Up @@ -168,7 +188,7 @@ def _broken_module_imports(requirements):
if not safe_command:
if _broken_module_imports('requirements.txt'):
if yesno('Would you like to install the required Python modules?'):
_run_cmd(sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt')
_install_deps('requirements.txt')
else:
print()
print(msg_install % (str(Path('requirements.txt').resolve()),))
Expand All @@ -177,7 +197,7 @@ def _broken_module_imports(requirements):

if cli.config.user.developer and _broken_module_imports('requirements-dev.txt'):
if yesno('Would you like to install the required developer Python modules?'):
_run_cmd(sys.executable, '-m', 'pip', 'install', '-r', 'requirements-dev.txt')
_install_deps('requirements-dev.txt')
elif yesno('Would you like to disable developer mode?'):
_run_cmd(sys.argv[0], 'config', 'user.developer=None')
else:
Expand Down

0 comments on commit 4742a3a

Please sign in to comment.