dependency: prefer sysroot in GetBuildDependencyGraphRequest
Also freshen API python bindings.
BUG=chromium:1081828, chromium:1053703
TEST=unit tests pass
Cq-Depend: chromium:2197281
Change-Id: I27b98a40b4dbc6197c8a07fc1098c5c45ebc4be6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2197226
Tested-by: LaMont Jones <lamontjones@chromium.org>
Commit-Queue: LaMont Jones <lamontjones@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Sean Abraham <seanabraham@chromium.org>
diff --git a/api/controller/dependency.py b/api/controller/dependency.py
index ea243c1..fd3a434 100644
--- a/api/controller/dependency.py
+++ b/api/controller/dependency.py
@@ -16,6 +16,8 @@
from chromite.api import faux
from chromite.api import validate
from chromite.api.controller import controller_util
+# TODO(crbug/1081828): stop using build_target and drop it from the proto.
+from chromite.lib import cros_build_lib
from chromite.lib import portage_util
from chromite.service import dependency
@@ -32,6 +34,9 @@
graph: the proto object that represents the dependency graph (see DepGraph
message in chromite/api/depgraph.proto)
"""
+ graph.sysroot.build_target.name = json_map['target_board']
+ graph.sysroot.path = json_map['sysroot_path']
+ # TODO(crbug/1081828): Drop this when no longer used.
graph.build_target.name = json_map['target_board']
for data in json_map['package_deps'].values():
@@ -62,7 +67,6 @@
@faux.success(_GetBuildDependencyGraphResponse)
@faux.empty_error
-@validate.require('build_target.name')
@validate.validation_complete
def GetBuildDependencyGraph(input_proto, output_proto, _config):
"""Create the build dependency graph.
@@ -72,10 +76,18 @@
output_proto (GetBuildDependencyGraphResponse): The empty output message.
_config (api_config.ApiConfig): The API call config.
"""
- board = input_proto.build_target.name
+ if input_proto.HasField('sysroot'):
+ board = input_proto.sysroot.build_target.name
+ sysroot_path = input_proto.sysroot.path
+ else:
+ # TODO(crbug/1081828): stop using build_target and drop it from the proto.
+ board = input_proto.build_target.name
+ sysroot_path = cros_build_lib.GetSysroot(board or None)
+
packages = [controller_util.PackageInfoToCPV(x) for x in input_proto.packages]
- json_map, sdk_json_map = dependency.GetBuildDependency(board, packages)
+ json_map, sdk_json_map = dependency.GetBuildDependency(sysroot_path, board,
+ packages)
AugmentDepGraphProtoFromJsonMap(json_map, output_proto.dep_graph)
AugmentDepGraphProtoFromJsonMap(sdk_json_map, output_proto.sdk_dep_graph)
diff --git a/api/controller/dependency_unittest.py b/api/controller/dependency_unittest.py
index 34758c6..9e97b78 100644
--- a/api/controller/dependency_unittest.py
+++ b/api/controller/dependency_unittest.py
@@ -30,6 +30,7 @@
self.response = depgraph_pb2.GetBuildDependencyGraphResponse()
self.json_deps = {
'target_board': 'deathstar',
+ 'sysroot_path': '/build/deathstar',
'package_deps': {
'commander/darthvader-1.49.3.3': {
'action': 'merge',
@@ -120,7 +121,7 @@
self.api_config)
self.assertEqual(self.response.dep_graph.build_target.name, 'deathstar')
pkg_to_cpv.assert_called_once_with(package)
- get_dep.assert_called_once_with('target', [pkg_mock])
+ get_dep.assert_called_once_with('/build/target', 'target', [pkg_mock])
def testValidateOnly(self):
"""Sanity check that a validate only call does not execute any logic."""