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: