Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import logging | 5 import logging |
| 6 import os | 6 import os |
| 7 import stat | 7 import stat |
| 8 | 8 |
| 9 from catapult_base import cloud_storage | 9 from catapult_base import cloud_storage |
| 10 from catapult_base import support_binaries | 10 from catapult_base import support_binaries |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 207 | 207 |
| 208 Will not download the file. | 208 Will not download the file. |
| 209 | 209 |
| 210 Args: | 210 Args: |
| 211 dependency_info: A DependencyInfo instance for the dependency to be | 211 dependency_info: A DependencyInfo instance for the dependency to be |
| 212 found and the platform it should run on. | 212 found and the platform it should run on. |
| 213 | 213 |
| 214 Returns: A path to a local file, or None if not found. | 214 Returns: A path to a local file, or None if not found. |
| 215 """ | 215 """ |
| 216 if dependency_info: | 216 if dependency_info: |
| 217 paths = dependency_info.local_paths | 217 local_paths = dependency_info.local_paths |
| 218 for local_path in paths: | 218 found_path = None |
| 219 if os.path.exists(local_path): | 219 for priority_group in local_paths: |
| 220 return local_path | 220 # A list of paths in local_paths implies the same priority, so return |
| 221 # the most recently modified one. | |
| 222 found_path_mtime = 0 | |
| 223 for path in priority_group: | |
| 224 if os.path.exists(path): | |
| 225 mtime = os.stat(path).st_mtime | |
|
eakuefner
2015/10/09 16:29:17
mtime = os.path.getmtime(path)
| |
| 226 if mtime > found_path_mtime: | |
| 227 found_path = path | |
| 228 found_path_mtime = mtime | |
| 229 if found_path: | |
| 230 return found_path | |
| 221 return None | 231 return None |
| 222 | 232 |
| 223 @staticmethod | 233 @staticmethod |
| 224 def _CloudStoragePath(dependency_info): | 234 def _CloudStoragePath(dependency_info): |
| 225 """Return a path to a downloaded file for |dependency_info|. | 235 """Return a path to a downloaded file for |dependency_info|. |
| 226 | 236 |
| 227 May not download the file if it has already been downloaded. | 237 May not download the file if it has already been downloaded. |
| 228 | 238 |
| 229 Args: | 239 Args: |
| 230 dependency_info: A DependencyInfo instance for the dependency to be | 240 dependency_info: A DependencyInfo instance for the dependency to be |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 258 if not os.path.exists(download_dir): | 268 if not os.path.exists(download_dir): |
| 259 os.makedirs(download_dir) | 269 os.makedirs(download_dir) |
| 260 | 270 |
| 261 cloud_storage.GetIfHashChanged(cs_path, download_path, cs_bucket, cs_hash) | 271 cloud_storage.GetIfHashChanged(cs_path, download_path, cs_bucket, cs_hash) |
| 262 if not os.path.exists(download_path): | 272 if not os.path.exists(download_path): |
| 263 raise exceptions.FileNotFoundError(download_path) | 273 raise exceptions.FileNotFoundError(download_path) |
| 264 #TODO(aiolos): Add support for unzipping files. | 274 #TODO(aiolos): Add support for unzipping files. |
| 265 os.chmod(download_path, | 275 os.chmod(download_path, |
| 266 stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP) | 276 stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR | stat.S_IRGRP) |
| 267 return os.path.abspath(download_path) | 277 return os.path.abspath(download_path) |
| OLD | NEW |