meta-openembedded and poky: subtree updates

Squash of the following due to dependencies among them
and OpenBMC changes:

meta-openembedded: subtree update:d0748372d2..9201611135
meta-openembedded: subtree update:9201611135..17fd382f34
poky: subtree update:9052e5b32a..2e11d97b6c
poky: subtree update:2e11d97b6c..a8544811d7

The change log was too large for the jenkins plugin
to handle therefore it has been removed. Here is
the first and last commit of each subtree:

meta-openembedded:d0748372d2
      cppzmq: bump to version 4.6.0
meta-openembedded:17fd382f34
      mpv: Remove X11 dependency
poky:9052e5b32a
      package_ipk: Remove pointless comment to trigger rebuild
poky:a8544811d7
      pbzip2: Fix license warning

Change-Id: If0fc6c37629642ee207a4ca2f7aa501a2c673cd6
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
diff --git a/poky/meta/lib/oeqa/selftest/cases/distrodata.py b/poky/meta/lib/oeqa/selftest/cases/distrodata.py
index 68ba556..e1cfc3b 100644
--- a/poky/meta/lib/oeqa/selftest/cases/distrodata.py
+++ b/poky/meta/lib/oeqa/selftest/cases/distrodata.py
@@ -42,8 +42,9 @@
 
     def test_maintainers(self):
         """
-        Summary:     Test that oe-core recipes have a maintainer
+        Summary:     Test that oe-core recipes have a maintainer and entries in maintainers list have a recipe
         Expected:    All oe-core recipes (except a few special static/testing ones) should have a maintainer listed in maintainers.inc file.
+        Expected:    All entries in maintainers list should have a recipe file that matches them
         Product:     oe-core
         Author:      Alexander Kanavin <alex.kanavin@gmail.com>
         """
@@ -54,7 +55,15 @@
                      return True
             return False
 
-        feature = 'require conf/distro/include/maintainers.inc\n'
+        def is_maintainer_exception(entry):
+            exceptions = ["musl", "newlib", "linux-yocto", "linux-dummy", "mesa-gl", "libgfortran",
+                          "cve-update-db-native"]
+            for i in exceptions:
+                 if i in entry:
+                     return True
+            return False
+
+        feature = 'require conf/distro/include/maintainers.inc\nLICENSE_FLAGS_WHITELIST += " commercial"\nPARSE_ALL_RECIPES = "1"\n'
         self.write_config(feature)
 
         with bb.tinfoil.Tinfoil() as tinfoil:
@@ -62,6 +71,11 @@
 
             with_maintainer_list = []
             no_maintainer_list = []
+
+            missing_recipes = []
+            recipes = []
+            prefix = "RECIPE_MAINTAINER_pn-"
+
             # We could have used all_recipes() here, but this method will find
             # every recipe if we ever move to setting RECIPE_MAINTAINER in recipe files
             # instead of maintainers.inc
@@ -71,6 +85,7 @@
                     continue
                 rd = tinfoil.parse_recipe_file(fn, appends=False)
                 pn = rd.getVar('PN')
+                recipes.append(pn)
                 if is_exception(pn):
                     continue
                 if rd.getVar('RECIPE_MAINTAINER'):
@@ -78,6 +93,15 @@
                 else:
                     no_maintainer_list.append((pn, fn))
 
+            maintainers = tinfoil.config_data.keys()
+            for key in maintainers:
+                 if key.startswith(prefix):
+                     recipe = tinfoil.config_data.expand(key[len(prefix):])
+                     if is_maintainer_exception(recipe):
+                         continue
+                     if recipe not in recipes:
+                         missing_recipes.append(recipe)
+
         if no_maintainer_list:
             self.fail("""
 The following recipes do not have a maintainer assigned to them. Please add an entry to meta/conf/distro/include/maintainers.inc file.
@@ -87,3 +111,8 @@
             self.fail("""
 The list of oe-core recipes with maintainers is empty. This may indicate that the test has regressed and needs fixing.
 """)
+
+        if missing_recipes:
+                self.fail("""
+Unable to find recipes for the following entries in maintainers.inc:
+""" + "\n".join(['%s' % i for i in missing_recipes]))