poky: subtree update:b66b9f7548..26ae42ded7

Adrian Bunk (1):
      dpkg: Remove workaound patch for host tar < 1.27

Alexander Kanavin (39):
      linux-yocto: exclude from version checks/automated version updates
      pciutils: upgrade 3.6.4 -> 3.7.0
      createrepo-c: upgrade 0.15.10 -> 0.15.11
      librepo: upgrade 1.11.3 -> 1.12.0
      pkgconf: upgrade 1.6.3 -> 1.7.3
      python3-numpy: upgrade 1.18.4 -> 1.18.5
      python3-git: upgrade 3.1.2 -> 3.1.3
      strace: upgrade 5.6 -> 5.7
      acpica: upgrade 20200430 -> 20200528
      man-db: upgrade 2.9.1 -> 2.9.2
      msmtp: upgrade 1.8.10 -> 1.8.11
      epiphany: upgrade 3.36.1 -> 3.36.2
      cogl-1.0: upgrade 1.22.6 -> 1.22.8
      libdrm: upgrade 2.4.101 -> 2.4.102
      vulkan-demos: upgrade to latest revision
      xkeyboard-config: upgrade 2.29 -> 2.30
      linux-firmware: upgrade 20200421 -> 20200519
      babeltrace2: upgrade 2.0.2 -> 2.0.3
      lttng-tools: upgrade 2.12.0 -> 2.12.1
      ffmpeg: upgrade 4.2.2 -> 4.2.3
      wpebackend-fdo: upgrade 1.6.0 -> 1.6.1
      gnutls: upgrade 3.6.13 -> 3.6.14
      libcap: upgrade 2.34 -> 2.36
      bison: upgrade 3.6.2 -> 3.6.3
      asciidoc: 8.6.10 -> 9.0.0
      debianutils: 4.9.1 -> 4.11
      git: upgrade 2.26.2 -> 2.27.0
      go: 1.14.3 -> 1.14.4
      iproute2: upgrade 5.6.0 -> 5.7.0
      libksba: 1.3.5 -> 1.4.0
      lttng-modules: update to 2.12.1
      mpg123: update to 1.26.1
      ovmf: update to 202005
      shared-mime-info: upgrade 1.15 -> 2.0
      subversion: upgrade 1.13.0 -> 1.14.0
      xinetd: 2.3.15 -> 2.3.15.4
      init-system-helpers: use https for fetching
      ca-certificates: correct upstream version check
      build-sysroots: add sysroot paths with native binaries to PATH

Andreas Müller (4):
      vte: tiny cleanup / renumber patch
      vte: upgrade 0.60.2 -> 0.60.3
      harfbuzz: upgrade 2.6.4 -> 2.6.7
      sqlite3: upgrade 3.32.1 -> 3.32.2

Changqing Li (1):
      cups.inc: remove template service from SYSTEMD_SERVICE

Chen Qi (2):
      db: do not install db_verify if 'verify' is not enabled
      vim: restore the 'chmod -x' workaround in do_install

Hongxu Jia (1):
      glib-networking/btrfs-tools/dosfstools/parted/bmap-tools/libsoup-2.4: add nativesdk support

Jacob Kroon (4):
      features_check: Factorize code for checking features
      meta: Don't inherit 'features_check' in recipes that don't utilize it
      features_check: Warn if not used
      insane: Check for feature check variables not being used

Joe Slater (2):
      qemu: force build type to production
      vim: _FORTIFY_SOURCE=2 be gone

Joshua Watt (12):
      bitbake: bitbake: cooker: Split file collections per multiconfig
      bitbake: bitbake: cache: Use multiconfig aware caches
      bitbake: bitbake: lib: Add support for Logging Adapters
      bitbake: bitbake: lib: Add PrefixLoggerAdapter helper
      bitbake: bitbake: cache: Improve logging
      bitbake: bitbake: cache: Cache size optimization
      bitbake: bitbake: tests: Add tests for BBMASK in multiconfig
      bitbake: bitbake: command: Move split_mc_pn to runqueue
      bitbake: bitbake: cache: Fix error when cache is rebuilt
      wic: Fix --extra-space argument handling
      bitbake: bitbake: siggen: Pass all data caches to hash functions
      bitbake: bitbake: tests: Add mcdepends test

Kai Kang (4):
      mdadm: remove service template from SYSTEMD_SERVICE
      wpa-supplicant: remove service templates from SYSTEMD_SERVICE
      encodings: clear postinst script
      avahi-dnsconfd: rdepends on avahi-daemon

Khem Raj (2):
      libunwind: Fix build on aarch64/musl
      stress-ng: Fix build on musl

Lee Chee Yang (1):
      qemu: fix CVE-2020-13361

Ming Liu (1):
      u-boot: support merging .cfg files for UBOOT_CONFIG

Mingli Yu (2):
      python3-magic: add the missing rdepends
      python3-setuptools: add missing rdepends for python3-pkg-resources

Paul Barker (5):
      selftest: git-submodule-test: New recipe for testing a gitsm SRC_URI
      archiver: Capture git submodules in mirror archiver
      selftest-ed: Support native builds
      selftest-nopackages: New recipe in meta-selftest
      archiver: Speed up tests

Pierre-Jean Texier (2):
      libarchive: upgrade 3.4.2 -> 3.4.3
      iptables: upgrade 1.8.4 -> 1.8.5

Rasmus Villemoes (1):
      glibc: move ld.so.conf back to main package

Richard Purdie (1):
      Revert "bitbake.conf: Remove unused DEPLOY_DIR_TOOLS variable"

Stefan Agner (1):
      initramfs-framework: check successful mount using mountpoint

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I047d0fa664dcc2864fd7c1a09d124e3d8c197e9f
diff --git a/poky/meta/classes/features_check.bbclass b/poky/meta/classes/features_check.bbclass
index 876d32e..b3c8047 100644
--- a/poky/meta/classes/features_check.bbclass
+++ b/poky/meta/classes/features_check.bbclass
@@ -1,23 +1,13 @@
-# Allow checking of required and conflicting DISTRO_FEATURES
+# Allow checking of required and conflicting features
 #
-# ANY_OF_DISTRO_FEATURES:     ensure at least one item on this list is included
-#                             in DISTRO_FEATURES.
-# REQUIRED_DISTRO_FEATURES:   ensure every item on this list is included
-#                             in DISTRO_FEATURES.
-# CONFLICT_DISTRO_FEATURES:   ensure no item in this list is included in
-#                             DISTRO_FEATURES.
-# ANY_OF_MACHINE_FEATURES:    ensure at least one item on this list is included
-#                             in MACHINE_FEATURES.
-# REQUIRED_MACHINE_FEATURES:  ensure every item on this list is included
-#                             in MACHINE_FEATURES.
-# CONFLICT_MACHINE_FEATURES:  ensure no item in this list is included in
-#                             MACHINE_FEATURES.
-# ANY_OF_COMBINED_FEATURES:   ensure at least one item on this list is included
-#                             in COMBINED_FEATURES.
-# REQUIRED_COMBINED_FEATURES: ensure every item on this list is included
-#                             in COMBINED_FEATURES.
-# CONFLICT_COMBINED_FEATURES: ensure no item in this list is included in
-#                             COMBINED_FEATURES.
+# xxx = [DISTRO,MACHINE,COMBINED]
+#
+# ANY_OF_xxx_FEATURES:        ensure at least one item on this list is included
+#                             in xxx_FEATURES.
+# REQUIRED_xxx_FEATURES:      ensure every item on this list is included
+#                             in xxx_FEATURES.
+# CONFLICT_xxx_FEATURES:      ensure no item in this list is included in
+#                             xxx_FEATURES.
 #
 # Copyright 2019 (C) Texas Instruments Inc.
 # Copyright 2013 (C) O.S. Systems Software LTDA.
@@ -26,63 +16,42 @@
     if d.getVar('PARSE_ALL_RECIPES', False):
         return
 
-    # Assume at least one var is set.
-    distro_features = set((d.getVar('DISTRO_FEATURES') or '').split())
+    unused = True
 
-    any_of_distro_features = set((d.getVar('ANY_OF_DISTRO_FEATURES') or '').split())
-    if any_of_distro_features:
-        if set.isdisjoint(any_of_distro_features, distro_features):
-            raise bb.parse.SkipRecipe("one of '%s' needs to be in DISTRO_FEATURES" % ' '.join(any_of_distro_features))
+    for kind in ['DISTRO', 'MACHINE', 'COMBINED']:
+        if d.getVar('ANY_OF_' + kind + '_FEATURES') is None and \
+           d.overridedata.get('ANY_OF_' + kind + '_FEATURES') is None and \
+           d.getVar('REQUIRED_' + kind + '_FEATURES') is None and \
+           d.overridedata.get('REQUIRED_' + kind + '_FEATURES') is None and \
+           d.getVar('CONFLICT_' + kind + '_FEATURES') is None and \
+           d.overridedata.get('CONFLICT_' + kind + '_FEATURES') is None:
+            continue
 
-    required_distro_features = set((d.getVar('REQUIRED_DISTRO_FEATURES') or '').split())
-    if required_distro_features:
-        missing = set.difference(required_distro_features, distro_features)
-        if missing:
-            raise bb.parse.SkipRecipe("missing required distro feature%s '%s' (not in DISTRO_FEATURES)" % ('s' if len(missing) > 1 else '', ' '.join(missing)))
+        unused = False
 
-    conflict_distro_features = set((d.getVar('CONFLICT_DISTRO_FEATURES') or '').split())
-    if conflict_distro_features:
-        conflicts = set.intersection(conflict_distro_features, distro_features)
-        if conflicts:
-            raise bb.parse.SkipRecipe("conflicting distro feature%s '%s' (in DISTRO_FEATURES)" % ('s' if len(conflicts) > 1 else '', ' '.join(conflicts)))
+        # Assume at least one var is set.
+        features = set((d.getVar(kind + '_FEATURES') or '').split())
 
-    # Assume at least one var is set.
-    machine_features = set((d.getVar('MACHINE_FEATURES') or '').split())
+        any_of_features = set((d.getVar('ANY_OF_' + kind + '_FEATURES') or '').split())
+        if any_of_features:
+            if set.isdisjoint(any_of_features, features):
+                raise bb.parse.SkipRecipe("one of '%s' needs to be in %s_FEATURES"
+                    % (' '.join(any_of_features), kind))
 
-    any_of_machine_features = set((d.getVar('ANY_OF_MACHINE_FEATURES') or '').split())
-    if any_of_machine_features:
-        if set.isdisjoint(any_of_machine_features, machine_features):
-            raise bb.parse.SkipRecipe("one of '%s' needs to be in MACHINE_FEATURES" % ' '.join(any_of_machine_features))
+        required_features = set((d.getVar('REQUIRED_' + kind + '_FEATURES') or '').split())
+        if required_features:
+            missing = set.difference(required_features, features)
+            if missing:
+                raise bb.parse.SkipRecipe("missing required %s feature%s '%s' (not in %s_FEATURES)"
+                    % (kind.lower(), 's' if len(missing) > 1 else '', ' '.join(missing), kind))
 
-    required_machine_features = set((d.getVar('REQUIRED_MACHINE_FEATURES') or '').split())
-    if required_machine_features:
-        missing = set.difference(required_machine_features, machine_features)
-        if missing:
-            raise bb.parse.SkipRecipe("missing required machine feature%s '%s' (not in MACHINE_FEATURES)" % ('s' if len(missing) > 1 else '', ' '.join(missing)))
+        conflict_features = set((d.getVar('CONFLICT_' + kind + '_FEATURES') or '').split())
+        if conflict_features:
+            conflicts = set.intersection(conflict_features, features)
+            if conflicts:
+                raise bb.parse.SkipRecipe("conflicting %s feature%s '%s' (in %s_FEATURES)"
+                    % (kind.lower(), 's' if len(conflicts) > 1 else '', ' '.join(conflicts), kind))
 
-    conflict_machine_features = set((d.getVar('CONFLICT_MACHINE_FEATURES') or '').split())
-    if conflict_machine_features:
-        conflicts = set.intersection(conflict_machine_features, machine_features)
-        if conflicts:
-            raise bb.parse.SkipRecipe("conflicting machine feature%s '%s' (in MACHINE_FEATURES)" % ('s' if len(conflicts) > 1 else '', ' '.join(conflicts)))
-
-    # Assume at least one var is set.
-    combined_features = set((d.getVar('COMBINED_FEATURES') or '').split())
-
-    any_of_combined_features = set((d.getVar('ANY_OF_COMBINED_FEATURES') or '').split())
-    if any_of_combined_features:
-        if set.isdisjoint(any_of_combined_features, combined_features):
-            raise bb.parse.SkipRecipe("one of '%s' needs to be in COMBINED_FEATURES" % ' '.join(any_of_combined_features))
-
-    required_combined_features = set((d.getVar('REQUIRED_COMBINED_FEATURES') or '').split())
-    if required_combined_features:
-        missing = set.difference(required_combined_features, combined_features)
-        if missing:
-            raise bb.parse.SkipRecipe("missing required machine feature%s '%s' (not in COMBINED_FEATURES)" % ('s' if len(missing) > 1 else '', ' '.join(missing)))
-
-    conflict_combined_features = set((d.getVar('CONFLICT_COMBINED_FEATURES') or '').split())
-    if conflict_combined_features:
-        conflicts = set.intersection(conflict_combined_features, combined_features)
-        if conflicts:
-            raise bb.parse.SkipRecipe("conflicting machine feature%s '%s' (in COMBINED_FEATURES)" % ('s' if len(conflicts) > 1 else '', ' '.join(conflicts)))
+    if unused:
+        bb.warn("Recipe inherits features_check but doesn't use it")
 }