service: needs_chrome_source: search for binpkgs in virtual/target depgraph
Rather than trying to emerge the chrome package directly to see if it
has a binpkg, emerge the high-level virtual/target-os packages. This
will take into account things like changing deps/subslots that would
cause a binpkg to be ignored that testing a package directly misses.
BUG=b:292138028
TEST=CQ passes
Change-Id: I54d69afa88bd3346b4074c4dc2cfacc2d56e687e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4908599
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Auto-Submit: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/service/packages_unittest.py b/service/packages_unittest.py
index 0c0e938..95e0762 100644
--- a/service/packages_unittest.py
+++ b/service/packages_unittest.py
@@ -927,7 +927,10 @@
packages.has_prebuilt("cat/pkg-1.2.3", useflags="useflag")
patch.assert_called_with(
- "cat/pkg-1.2.3", board=None, extra_env={"USE": "useflag"}
+ "cat/pkg-1.2.3",
+ board=None,
+ extra_env={"USE": "useflag"},
+ depgraph_root_packages=None,
)
def test_env_use_flags(self):
@@ -942,7 +945,27 @@
packages.has_prebuilt("cat/pkg-1.2.3", useflags=new_flags)
expected = "%s %s" % (existing_flags, new_flags)
patch.assert_called_with(
- "cat/pkg-1.2.3", board=None, extra_env={"USE": expected}
+ "cat/pkg-1.2.3",
+ board=None,
+ extra_env={"USE": expected},
+ depgraph_root_packages=None,
+ )
+
+ def test_depgraph_root_packages(self):
+ """Test root depgraph packages."""
+ # We don't really care about the result, just the package handling.
+ patch = self.PatchObject(portage_util, "HasPrebuilt", return_value=True)
+ os.unsetenv("USE")
+
+ depgraph_pkgs = ["virtual/target-os"]
+ packages.has_prebuilt(
+ "cat/pkg-1.2.3", depgraph_root_packages=depgraph_pkgs
+ )
+ patch.assert_called_with(
+ "cat/pkg-1.2.3",
+ board=None,
+ extra_env=mock.ANY,
+ depgraph_root_packages=depgraph_pkgs,
)