aboutsummaryrefslogtreecommitdiffstats
path: root/python/mach_bootstrap.py
diff options
context:
space:
mode:
authorAidan Hobson Sayers <aidanhs@cantab.net>2015-09-14 20:45:48 +0100
committerAidan Hobson Sayers <aidanhs@cantab.net>2015-09-14 20:55:22 +0100
commit9737b2375e94be0aaad346b2468c3f60743fdb7d (patch)
tree259d0cb3faab118e225df98da8537e116b176c25 /python/mach_bootstrap.py
parente10c5c74cc48a203aaeb7da3fd51b062c1311eac (diff)
downloadservo-9737b2375e94be0aaad346b2468c3f60743fdb7d.tar.gz
servo-9737b2375e94be0aaad346b2468c3f60743fdb7d.zip
Create a marker file to avoid running pip when possible
Diffstat (limited to 'python/mach_bootstrap.py')
-rw-r--r--python/mach_bootstrap.py19
1 files changed, 14 insertions, 5 deletions
diff --git a/python/mach_bootstrap.py b/python/mach_bootstrap.py
index 19b1ad666e8..d32b6f8be45 100644
--- a/python/mach_bootstrap.py
+++ b/python/mach_bootstrap.py
@@ -96,12 +96,21 @@ def _activate_virtualenv(topdir):
# chain each of the requirements files into the same `pip install` call
# and it will check for conflicts.
requirements_paths = [
- os.path.join(topdir, "python", "requirements.txt"),
- os.path.join(topdir, "tests", "wpt", "harness", "requirements.txt"),
- os.path.join(topdir, "tests", "wpt", "harness", "requirements_servo.txt"),
+ os.path.join("python", "requirements.txt"),
+ os.path.join("tests", "wpt", "harness", "requirements.txt"),
+ os.path.join("tests", "wpt", "harness", "requirements_servo.txt"),
]
- for path in requirements_paths:
- subprocess.check_call(["pip", "install", "-q", "-r", path])
+ for req_rel_path in requirements_paths:
+ req_path = os.path.join(topdir, req_rel_path)
+ marker_file = req_rel_path.replace(os.path.sep, '-')
+ marker_path = os.path.join(virtualenv_path, marker_file)
+ try:
+ if os.path.getmtime(req_path) + 10 < os.path.getmtime(marker_path):
+ continue
+ except OSError:
+ open(marker_path, 'w').close()
+ subprocess.check_call(["pip", "install", "-q", "-r", req_path])
+ os.utime(marker_path, None)
def bootstrap(topdir):