Chromium Code Reviews| Index: recipe_engine/package.py |
| diff --git a/recipe_engine/package.py b/recipe_engine/package.py |
| index dd235ffedfbd55b677be3bffb0de9019a75633ab..5dd68716939c09ab26ba0af1854e742705f1bf64 100644 |
| --- a/recipe_engine/package.py |
| +++ b/recipe_engine/package.py |
| @@ -30,7 +30,7 @@ class InconsistentDependencyGraphError(Exception): |
| def __str__(self): |
| return 'Package specs for %s do not match: %s vs %s' % ( |
| - project_id, self.specs[0], self.specs[1]) |
| + self.project_id, self.specs[0], self.specs[1]) |
| class CyclicDependencyError(Exception): |
| @@ -166,7 +166,7 @@ class RepoSpec(object): |
| return not (self == other) |
| def proto_file(self, context): |
| - """Returns the ProtoFile of the recipes config file in this repository. |
| + """Returns the ProtoFile of the recipes config file in this repository. |
| Requires a good checkout.""" |
| return ProtoFile(InfraRepoConfig().to_recipes_cfg(self.repo_root(context))) |
| @@ -303,11 +303,15 @@ class GitRepoSpec(RepoSpec): |
| class PathRepoSpec(RepoSpec): |
| """A RepoSpec implementation that uses a local filesystem path.""" |
| - def __init__(self, path): |
| + def __init__(self, project_id, path): |
| + self.project_id = project_id |
| self.path = path |
| def __str__(self): |
| - return 'PathRepoSpec{path="%(path)s"}' % self.__dict__ |
| + return ( |
| + 'PathRepoSpec{project_id="%(project_id)s", path="%(path)s"}' |
| + % self.__dict__ |
| + ) |
| def checkout(self, context): |
| pass |
| @@ -316,10 +320,20 @@ class PathRepoSpec(RepoSpec): |
| return self.path |
| def proto_file(self, context): |
| - """Returns the ProtoFile of the recipes config file in this repository. |
| + """Returns the ProtoFile of the recipes config file in this repository. |
| Requires a good checkout.""" |
| return ProtoFile(InfraRepoConfig().to_recipes_cfg(self.path)) |
| + def updates(self, _context, _other_revision=None): |
| + """Returns (empty) list of potential updates for this spec.""" |
| + return [] |
| + |
| + def dump(self): |
| + """Returns the package.proto DepSpec form of this RepoSpec.""" |
| + return package_pb2.DepSpec( |
| + project_id=self.project_id, |
| + url="file://"+self.path) |
|
iannucci
2017/02/03 00:00:05
These are used by the autoroller tests.
|
| + |
| def __eq__(self, other): |
| if not isinstance(other, type(self)): |
| return False |
| @@ -509,6 +523,9 @@ class PackageSpec(object): |
| @classmethod |
| def spec_for_dep(cls, dep): |
| """Returns a RepoSpec for the given dependency protobuf.""" |
| + url = str(dep.url) |
| + if url.startswith("file://"): |
| + return PathRepoSpec(str(dep.project_id), url[len("file://"):]) |
| if dep.repo_type in (package_pb2.DepSpec.GIT, package_pb2.DepSpec.GITILES): |
| if dep.repo_type == package_pb2.DepSpec.GIT: |
| @@ -516,7 +533,7 @@ class PackageSpec(object): |
| elif dep.repo_type == package_pb2.DepSpec.GITILES: |
| backend = fetch.GitilesBackend() |
| return GitRepoSpec(str(dep.project_id), |
| - str(dep.url), |
| + url, |
| str(dep.branch), |
| str(dep.revision), |
| str(dep.path_override), |
| @@ -612,7 +629,7 @@ class PackageDeps(object): |
| deps_path=deps_path) |
| if overrides: |
| - overrides = {project_id: PathRepoSpec(path) |
| + overrides = {project_id: PathRepoSpec(project_id, path) |
| for project_id, path in overrides.iteritems()} |
| package_deps = cls(context, overrides=overrides) |