Bug 1460402 - Create a new class to manage pip install r=ahal
☠☠ backed out by bca28818826b ☠ ☠
authorSylvestre Ledru <sledru@mozilla.com>
Thu, 10 May 2018 19:05:30 +0200
changeset 417814 06ceda084d694d1687a669995d457ebd6fd0b08e
parent 417813 d03f75986f626938142bd5bde293773506a2fc14
child 417815 e1caff997e5a61de20d04af799caa120f41ecb2f
push id103165
push userebalazs@mozilla.com
push dateFri, 11 May 2018 09:45:25 +0000
treeherdermozilla-inbound@59a49b12b268 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersahal
bugs1460402
milestone62.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1460402 - Create a new class to manage pip install r=ahal MozReview-Commit-ID: JnscCmC4gBt
python/mozlint/mozlint/util/__init__.py
python/mozlint/mozlint/util/pip.py
new file mode 100644
new file mode 100644
--- /dev/null
+++ b/python/mozlint/mozlint/util/pip.py
@@ -0,0 +1,34 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import print_function
+from __future__ import absolute_import
+
+import subprocess
+
+
+def _run_pip(*args):
+    """
+    Helper function that runs pip with subprocess
+    """
+    try:
+        subprocess.check_output(['pip'] + list(args),
+                                stderr=subprocess.STDOUT)
+        return True
+    except subprocess.CalledProcessError as e:
+        print(e.output)
+        return False
+
+
+def reinstall_program(REQ_PATH):
+    """
+    Try to install flake8 at the target version, returns True on success
+    otherwise prints the otuput of the pip command and returns False
+    """
+    if _run_pip('install', '-U',
+                '--require-hashes', '-r',
+                REQ_PATH):
+        return True
+
+    return False