Update parallel_emerge to the latest portage version

We are upreving portage. parallel_emerge need to be updated to work with some
refactored part of portage.

BUG=chromium:398269
TEST=./build_packages works for portage 2.2.10 and 2.1.11.

Change-Id: I38ac070c510acf009e988c7ae58cb6c3ec35391d
Reviewed-on: https://chromium-review.googlesource.com/210131
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Bertrand Simonnet <bsimonnet@chromium.org>
diff --git a/scripts/parallel_emerge.py b/scripts/parallel_emerge.py
index a0d9902..d196256 100644
--- a/scripts/parallel_emerge.py
+++ b/scripts/parallel_emerge.py
@@ -453,7 +453,7 @@
     # pylint: disable=W0212
     digraph = depgraph._dynamic_config.digraph
     root = emerge.settings["ROOT"]
-    final_db = depgraph._dynamic_config.mydbapi[root]
+    final_db = get_db(depgraph._dynamic_config, root)
     for node, node_deps in digraph.nodes.items():
       # Calculate dependency packages that need to be installed first. Each
       # child on the digraph is a dependency. The "operation" field specifies
@@ -1800,6 +1800,19 @@
         x.join(1)
 
 
+def get_db(config, root):
+  """ Return the dbapi.
+  Handles both portage 2.1.11 and 2.2.10 (where mydbapi has been removed).
+
+  TODO(bsimonnet): Remove this once portage has been uprevd.
+  """
+  try:
+    return config.mydbapi[root]
+  except AttributeError:
+    # pylint: disable=W0212
+    return config._filtered_trees[root]['graph_db']
+
+
 def real_main(argv):
   parallel_emerge_args = argv[:]
   deps = DepGraphGenerator()
@@ -1849,7 +1862,7 @@
   portage_upgrade = False
   root = emerge.settings["ROOT"]
   # pylint: disable=W0212
-  final_db = emerge.depgraph._dynamic_config.mydbapi[root]
+  final_db = get_db(emerge.depgraph._dynamic_config, root)
   if root == "/":
     for db_pkg in final_db.match_pkgs("sys-apps/portage"):
       portage_pkg = deps_graph.get(db_pkg.cpv)