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 hashlib | 5 import hashlib |
6 | 6 |
7 from slave import recipe_api | 7 from slave import recipe_api |
8 | 8 |
9 """ | 9 """ |
10 The 'git_clone_bundler' creates and uploads 'clone.bundle' packages to | 10 The 'git_clone_bundler' creates and uploads 'clone.bundle' packages to |
(...skipping 12 matching lines...) Expand all Loading... |
23 | 23 |
24 @property | 24 @property |
25 def bundle_dir(self): | 25 def bundle_dir(self): |
26 return self.base_path.join('bundles') | 26 return self.base_path.join('bundles') |
27 | 27 |
28 @staticmethod | 28 @staticmethod |
29 def _hashname(base): | 29 def _hashname(base): |
30 return hashlib.md5(base).hexdigest() | 30 return hashlib.md5(base).hexdigest() |
31 | 31 |
32 def _setup(self): | 32 def _setup(self): |
33 self.m.path.rmtree('old bundles', self.bundle_dir) | 33 self.m.file.rmtree('old bundles', self.bundle_dir) |
34 self.m.path.makedirs('bundles', self.bundle_dir) | 34 self.m.file.makedirs('bundles', self.bundle_dir) |
35 | 35 |
36 def _bundle(self, git_path, gs_bucket, gs_subpath, refs, name, | 36 def _bundle(self, git_path, gs_bucket, gs_subpath, refs, name, |
37 unauthenticated_url): | 37 unauthenticated_url): |
38 """ | 38 """ |
39 Creates a Git bundle from a Git repository and uploads it to Google Storage. | 39 Creates a Git bundle from a Git repository and uploads it to Google Storage. |
40 | 40 |
41 Args: | 41 Args: |
42 git_path: (Path) The path of the Git repository to bundle. | 42 git_path: (Path) The path of the Git repository to bundle. |
43 gs_bucket: (str) The name of the Google Storage bucket. | 43 gs_bucket: (str) The name of the Google Storage bucket. |
44 gs_subpath: (str) The path within the Google Storage bucket. | 44 gs_subpath: (str) The path within the Google Storage bucket. |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 that repository's bundle was uploaded. | 120 that repository's bundle was uploaded. |
121 """ | 121 """ |
122 self._setup() | 122 self._setup() |
123 | 123 |
124 # Checkout the repository. | 124 # Checkout the repository. |
125 checkout_root = self.base_path.join( | 125 checkout_root = self.base_path.join( |
126 'repo', | 126 'repo', |
127 hashlib.md5(repo_manifest_url).hexdigest()) | 127 hashlib.md5(repo_manifest_url).hexdigest()) |
128 | 128 |
129 # Initialize the 'repo' checkout. | 129 # Initialize the 'repo' checkout. |
130 self.m.path.makedirs('repo', checkout_root) | 130 self.m.file.makedirs('repo', checkout_root) |
131 self.m.repo.init(repo_manifest_url, cwd=checkout_root) | 131 self.m.repo.init(repo_manifest_url, cwd=checkout_root) |
132 self.m.repo.sync('--no-clone-bundle', cwd=checkout_root) | 132 self.m.repo.sync('--no-clone-bundle', cwd=checkout_root) |
133 | 133 |
134 # The repository list produces absolute paths, so we want to convert our | 134 # The repository list produces absolute paths, so we want to convert our |
135 # 'checkout_root' to an absolute path for relative path calculation. | 135 # 'checkout_root' to an absolute path for relative path calculation. |
136 abs_checkout_root = self.m.path.abspath(checkout_root) | 136 abs_checkout_root = self.m.path.abspath(checkout_root) |
137 errors = [] | 137 errors = [] |
138 bundle_map = {} | 138 bundle_map = {} |
139 visited = set() | 139 visited = set() |
140 for path, name in self.m.repo.list(cwd=checkout_root): | 140 for path, name in self.m.repo.list(cwd=checkout_root): |
(...skipping 17 matching lines...) Expand all Loading... |
158 except self.m.step.StepFailure as e: | 158 except self.m.step.StepFailure as e: |
159 result = self.m.step.active_result | 159 result = self.m.step.active_result |
160 result.presentation.step_text = 'Exception: %s' % (e,) | 160 result.presentation.step_text = 'Exception: %s' % (e,) |
161 result.presentation.status = self.m.step.FAILURE | 161 result.presentation.status = self.m.step.FAILURE |
162 errors.append(e) | 162 errors.append(e) |
163 | 163 |
164 if errors: | 164 if errors: |
165 raise self.m.step.StepFailure("Encountered %d bundler failure(s)" % ( | 165 raise self.m.step.StepFailure("Encountered %d bundler failure(s)" % ( |
166 len(errors,))) | 166 len(errors,))) |
167 return bundle_map | 167 return bundle_map |
OLD | NEW |