parallel_emerge: Recognize buildtime_slot_op and runtime_slot_op.
Update parallel_emerge to recognize buildtime_slot_op and
runtime_slot_op, and to fail if we recognize any unknown types of
dependencies.
BUG=chromium:418296
TEST=rush-paladin, lumpy-release, chromiumos-sdk
Change-Id: Ifbefc5bd665053515b880a5745464857618e778f
Reviewed-on: https://chromium-review.googlesource.com/220449
Reviewed-by: Bertrand Simonnet <bsimonnet@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: David James <davidjames@chromium.org>
Commit-Queue: David James <davidjames@chromium.org>
diff --git a/scripts/parallel_emerge.py b/scripts/parallel_emerge.py
index 1963632..ff49359 100644
--- a/scripts/parallel_emerge.py
+++ b/scripts/parallel_emerge.py
@@ -566,7 +566,10 @@
Unsanitized digraph.
"""
binpkg_phases = set(["setup", "preinst", "postinst"])
- needed_dep_types = set(["blocker", "buildtime", "runtime"])
+ needed_dep_types = set(["blocker", "buildtime", "buildtime_slot_op",
+ "runtime", "runtime_slot_op"])
+ ignored_dep_types = set(["ignored", "optional", "runtime_post", "soft"])
+ all_dep_types = ignored_dep_types | needed_dep_types
for pkg in packages:
# Create an entry for the package
@@ -603,6 +606,13 @@
deps_map[dep]["provides"].add(pkg)
this_pkg["needs"][dep] = "/".join(dep_types)
+ # Verify we processed all appropriate dependency types.
+ unknown_dep_types = set(dep_types) - all_dep_types
+ if unknown_dep_types:
+ print("Unknown dependency types found:")
+ print(" %s -> %s (%s)" % (pkg, dep, "/".join(unknown_dep_types)))
+ sys.exit(1)
+
# If there's a blocker, Portage may need to move files from one
# package to another, which requires editing the CONTENTS files of
# both packages. To avoid race conditions while editing this file,