cli: Consider subslots in deploy --deep calculations
BUG=b:295550926
TEST=CQ passes
Change-Id: I1ded5ffe258757b507dc0439eaae1a558fef134a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4775884
Auto-Submit: Matt Turner <msturner@google.com>
Commit-Queue: Matt Turner <msturner@google.com>
Tested-by: Matt Turner <msturner@google.com>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/cli/deploy.py b/cli/deploy.py
index c8d777b..7745924 100644
--- a/cli/deploy.py
+++ b/cli/deploy.py
@@ -257,10 +257,10 @@
if "[" in cp:
cp = cp[: cp.index("[")] + cp[cp.index("]") + 1 :]
- # Separate the slot qualifier and strip off subslots.
+ # Separate the slot qualifier and strip off subslot binding operator
if ":" in cp:
cp, slot = cp.split(":")
- for delim in ("/", "="):
+ for delim in ("=",):
slot = slot.split(delim, 1)[0]
# Strip version wildcards (right), comparators (left).
@@ -796,6 +796,15 @@
)
num_processed = 0
for slot, pkg_info in cp_slots.items():
+ if required_slot and "/" not in slot:
+ logging.debug(
+ " Dropping subslot from required_slot (%s) "
+ "because package does not have a subslot (%s)",
+ required_slot,
+ slot,
+ )
+ required_slot = required_slot.split("/", 1)[0]
+
if not required_slot:
logging.debug(" Including because no required_slot")
elif slot == required_slot: