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/bitbake/lib/bb/__init__.py b/poky/bitbake/lib/bb/__init__.py
index b96466e..4e2f97b 100644
--- a/poky/bitbake/lib/bb/__init__.py
+++ b/poky/bitbake/lib/bb/__init__.py
@@ -35,12 +35,14 @@
     def emit(self, record):
         pass
 
-Logger = logging.getLoggerClass()
-class BBLogger(Logger):
-    def __init__(self, name):
+class BBLoggerMixin(object):
+    def __init__(self, *args, **kwargs):
+        # Does nothing to allow calling super() from derived classes
+        pass
+
+    def setup_bblogger(self, name):
         if name.split(".")[0] == "BitBake":
             self.debug = self.bbdebug
-        Logger.__init__(self, name)
 
     def bbdebug(self, level, msg, *args, **kwargs):
         loglevel = logging.DEBUG - level + 1
@@ -60,16 +62,56 @@
     def verbnote(self, msg, *args, **kwargs):
         return self.log(logging.INFO + 2, msg, *args, **kwargs)
 
+Logger = logging.getLoggerClass()
+class BBLogger(Logger, BBLoggerMixin):
+    def __init__(self, name, *args, **kwargs):
+        self.setup_bblogger(name)
+        super().__init__(name, *args, **kwargs)
 
 logging.raiseExceptions = False
 logging.setLoggerClass(BBLogger)
 
+class BBLoggerAdapter(logging.LoggerAdapter, BBLoggerMixin):
+    def __init__(self, logger, *args, **kwargs):
+        self.setup_bblogger(logger.name)
+        super().__init__(logger, *args, **kwargs)
+
+    if sys.version_info < (3, 6):
+        # These properties were added in Python 3.6. Add them in older versions
+        # for compatibility
+        @property
+        def manager(self):
+            return self.logger.manager
+
+        @manager.setter
+        def manager(self, value):
+            self.logger.manager = value
+
+        @property
+        def name(self):
+            return self.logger.name
+
+        def __repr__(self):
+            logger = self.logger
+            level = getLevelName(logger.getEffectiveLevel())
+            return '<%s %s (%s)>' % (self.__class__.__name__, logger.name, level)
+
+logging.LoggerAdapter = BBLoggerAdapter
+
 logger = logging.getLogger("BitBake")
 logger.addHandler(NullHandler())
 logger.setLevel(logging.DEBUG - 2)
 
 mainlogger = logging.getLogger("BitBake.Main")
 
+class PrefixLoggerAdapter(logging.LoggerAdapter):
+    def __init__(self, prefix, logger):
+        super().__init__(logger, {})
+        self.__msg_prefix = prefix
+
+    def process(self, msg, kwargs):
+        return "%s%s" %(self.__msg_prefix, msg), kwargs
+
 # This has to be imported after the setLoggerClass, as the import of bb.msg
 # can result in construction of the various loggers.
 import bb.msg
diff --git a/poky/bitbake/lib/bb/cache.py b/poky/bitbake/lib/bb/cache.py
index d1be836..be5ea6a 100644
--- a/poky/bitbake/lib/bb/cache.py
+++ b/poky/bitbake/lib/bb/cache.py
@@ -19,16 +19,20 @@
 import os
 import logging
 import pickle
-from collections import defaultdict
+from collections import defaultdict, Mapping
 import bb.utils
+from bb import PrefixLoggerAdapter
 import re
 
 logger = logging.getLogger("BitBake.Cache")
 
 __cache_version__ = "152"
 
-def getCacheFile(path, filename, data_hash):
-    return os.path.join(path, filename + "." + data_hash)
+def getCacheFile(path, filename, mc, data_hash):
+    mcspec = ''
+    if mc:
+        mcspec = ".%s" % mc
+    return os.path.join(path, filename + mcspec + "." + data_hash)
 
 # RecipeInfoCommon defines common data retrieving methods
 # from meta data for caches. CoreRecipeInfo as well as other
@@ -324,7 +328,7 @@
         bb_data = self.load_bbfile(virtualfn, appends, virtonly=True)
         return bb_data[virtual]
 
-    def load_bbfile(self, bbfile, appends, virtonly = False):
+    def load_bbfile(self, bbfile, appends, virtonly = False, mc=None):
         """
         Load and parse one .bb build file
         Return the data and whether parsing resulted in the file being skipped
@@ -337,6 +341,10 @@
             datastores = parse_recipe(bb_data, bbfile, appends, mc)
             return datastores
 
+        if mc is not None:
+            bb_data = self.databuilder.mcdata[mc].createCopy()
+            return parse_recipe(bb_data, bbfile, appends, mc)
+
         bb_data = self.data.createCopy()
         datastores = parse_recipe(bb_data, bbfile, appends)
 
@@ -354,14 +362,15 @@
     """
     BitBake Cache implementation
     """
-
-    def __init__(self, databuilder, data_hash, caches_array):
+    def __init__(self, databuilder, mc, data_hash, caches_array):
         super().__init__(databuilder)
         data = databuilder.data
 
         # Pass caches_array information into Cache Constructor
         # It will be used later for deciding whether we
         # need extra cache file dump/load support
+        self.mc = mc
+        self.logger = PrefixLoggerAdapter("Cache: %s: " % (mc if mc else "default"), logger)
         self.caches_array = caches_array
         self.cachedir = data.getVar("CACHE")
         self.clean = set()
@@ -374,31 +383,47 @@
 
         if self.cachedir in [None, '']:
             self.has_cache = False
-            logger.info("Not using a cache. "
-                        "Set CACHE = <directory> to enable.")
+            self.logger.info("Not using a cache. "
+                             "Set CACHE = <directory> to enable.")
             return
 
         self.has_cache = True
-        self.cachefile = getCacheFile(self.cachedir, "bb_cache.dat", self.data_hash)
 
-        logger.debug(1, "Cache dir: %s", self.cachedir)
+    def getCacheFile(self, cachefile):
+        return getCacheFile(self.cachedir, cachefile, self.mc, self.data_hash)
+
+    def prepare_cache(self, progress):
+        if not self.has_cache:
+            return 0
+
+        loaded = 0
+
+        self.cachefile = self.getCacheFile("bb_cache.dat")
+
+        self.logger.debug(1, "Cache dir: %s", self.cachedir)
         bb.utils.mkdirhier(self.cachedir)
 
         cache_ok = True
         if self.caches_array:
             for cache_class in self.caches_array:
-                cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
-                cache_ok = cache_ok and os.path.exists(cachefile)
+                cachefile = self.getCacheFile(cache_class.cachefile)
+                cache_exists = os.path.exists(cachefile)
+                self.logger.debug(2, "Checking if %s exists: %r", cachefile, cache_exists)
+                cache_ok = cache_ok and cache_exists
                 cache_class.init_cacheData(self)
         if cache_ok:
-            self.load_cachefile()
+            loaded = self.load_cachefile(progress)
         elif os.path.isfile(self.cachefile):
-            logger.info("Out of date cache found, rebuilding...")
+            self.logger.info("Out of date cache found, rebuilding...")
         else:
-            logger.debug(1, "Cache file %s not found, building..." % self.cachefile)
+            self.logger.debug(1, "Cache file %s not found, building..." % self.cachefile)
 
         # We don't use the symlink, its just for debugging convinience
-        symlink = os.path.join(self.cachedir, "bb_cache.dat")
+        if self.mc:
+            symlink = os.path.join(self.cachedir, "bb_cache.dat.%s" % self.mc)
+        else:
+            symlink = os.path.join(self.cachedir, "bb_cache.dat")
+
         if os.path.exists(symlink):
             bb.utils.remove(symlink)
         try:
@@ -406,22 +431,31 @@
         except OSError:
             pass
 
-    def load_cachefile(self):
+        return loaded
+
+    def cachesize(self):
+        if not self.has_cache:
+            return 0
+
         cachesize = 0
+        for cache_class in self.caches_array:
+            cachefile = self.getCacheFile(cache_class.cachefile)
+            try:
+                with open(cachefile, "rb") as cachefile:
+                    cachesize += os.fstat(cachefile.fileno()).st_size
+            except FileNotFoundError:
+                pass
+
+        return cachesize
+
+    def load_cachefile(self, progress):
+        cachesize = self.cachesize()
         previous_progress = 0
         previous_percent = 0
 
-        # Calculate the correct cachesize of all those cache files
         for cache_class in self.caches_array:
-            cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
-            with open(cachefile, "rb") as cachefile:
-                cachesize += os.fstat(cachefile.fileno()).st_size
-
-        bb.event.fire(bb.event.CacheLoadStarted(cachesize), self.data)
-
-        for cache_class in self.caches_array:
-            cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
-            logger.debug(1, 'Loading cache file: %s' % cachefile)
+            cachefile = self.getCacheFile(cache_class.cachefile)
+            self.logger.debug(1, 'Loading cache file: %s' % cachefile)
             with open(cachefile, "rb") as cachefile:
                 pickled = pickle.Unpickler(cachefile)
                 # Check cache version information
@@ -429,15 +463,15 @@
                     cache_ver = pickled.load()
                     bitbake_ver = pickled.load()
                 except Exception:
-                    logger.info('Invalid cache, rebuilding...')
-                    return
+                    self.logger.info('Invalid cache, rebuilding...')
+                    return 0
 
                 if cache_ver != __cache_version__:
-                    logger.info('Cache version mismatch, rebuilding...')
-                    return
+                    self.logger.info('Cache version mismatch, rebuilding...')
+                    return 0
                 elif bitbake_ver != bb.__version__:
-                    logger.info('Bitbake version mismatch, rebuilding...')
-                    return
+                    self.logger.info('Bitbake version mismatch, rebuilding...')
+                    return 0
 
                 # Load the rest of the cache file
                 current_progress = 0
@@ -460,29 +494,17 @@
                         self.depends_cache[key] = [value]
                     # only fire events on even percentage boundaries
                     current_progress = cachefile.tell() + previous_progress
-                    if current_progress > cachesize:
-                        # we might have calculated incorrect total size because a file
-                        # might've been written out just after we checked its size
-                        cachesize = current_progress
-                    current_percent = 100 * current_progress / cachesize
-                    if current_percent > previous_percent:
-                        previous_percent = current_percent
-                        bb.event.fire(bb.event.CacheLoadProgress(current_progress, cachesize),
-                                      self.data)
+                    progress(cachefile.tell() + previous_progress)
 
                 previous_progress += current_progress
 
-        # Note: depends cache number is corresponding to the parsing file numbers.
-        # The same file has several caches, still regarded as one item in the cache
-        bb.event.fire(bb.event.CacheLoadCompleted(cachesize,
-                                                  len(self.depends_cache)),
-                      self.data)
+        return len(self.depends_cache)
 
     def parse(self, filename, appends):
         """Parse the specified filename, returning the recipe information"""
-        logger.debug(1, "Parsing %s", filename)
+        self.logger.debug(1, "Parsing %s", filename)
         infos = []
-        datastores = self.load_bbfile(filename, appends)
+        datastores = self.load_bbfile(filename, appends, mc=self.mc)
         depends = []
         variants = []
         # Process the "real" fn last so we can store variants list
@@ -534,7 +556,7 @@
         cached, infos = self.load(fn, appends)
         for virtualfn, info_array in infos:
             if info_array[0].skipped:
-                logger.debug(1, "Skipping %s: %s", virtualfn, info_array[0].skipreason)
+                self.logger.debug(1, "Skipping %s: %s", virtualfn, info_array[0].skipreason)
                 skipped += 1
             else:
                 self.add_info(virtualfn, info_array, cacheData, not cached)
@@ -570,21 +592,21 @@
 
         # File isn't in depends_cache
         if not fn in self.depends_cache:
-            logger.debug(2, "Cache: %s is not cached", fn)
+            self.logger.debug(2, "%s is not cached", fn)
             return False
 
         mtime = bb.parse.cached_mtime_noerror(fn)
 
         # Check file still exists
         if mtime == 0:
-            logger.debug(2, "Cache: %s no longer exists", fn)
+            self.logger.debug(2, "%s no longer exists", fn)
             self.remove(fn)
             return False
 
         info_array = self.depends_cache[fn]
         # Check the file's timestamp
         if mtime != info_array[0].timestamp:
-            logger.debug(2, "Cache: %s changed", fn)
+            self.logger.debug(2, "%s changed", fn)
             self.remove(fn)
             return False
 
@@ -595,14 +617,14 @@
                 fmtime = bb.parse.cached_mtime_noerror(f)
                 # Check if file still exists
                 if old_mtime != 0 and fmtime == 0:
-                    logger.debug(2, "Cache: %s's dependency %s was removed",
-                                    fn, f)
+                    self.logger.debug(2, "%s's dependency %s was removed",
+                                         fn, f)
                     self.remove(fn)
                     return False
 
                 if (fmtime != old_mtime):
-                    logger.debug(2, "Cache: %s's dependency %s changed",
-                                    fn, f)
+                    self.logger.debug(2, "%s's dependency %s changed",
+                                         fn, f)
                     self.remove(fn)
                     return False
 
@@ -618,14 +640,14 @@
                         continue
                     f, exist = f.split(":")
                     if (exist == "True" and not os.path.exists(f)) or (exist == "False" and os.path.exists(f)):
-                        logger.debug(2, "Cache: %s's file checksum list file %s changed",
-                                        fn, f)
+                        self.logger.debug(2, "%s's file checksum list file %s changed",
+                                             fn, f)
                         self.remove(fn)
                         return False
 
-        if appends != info_array[0].appends:
-            logger.debug(2, "Cache: appends for %s changed", fn)
-            logger.debug(2, "%s to %s" % (str(appends), str(info_array[0].appends)))
+        if tuple(appends) != tuple(info_array[0].appends):
+            self.logger.debug(2, "appends for %s changed", fn)
+            self.logger.debug(2, "%s to %s" % (str(appends), str(info_array[0].appends)))
             self.remove(fn)
             return False
 
@@ -634,10 +656,10 @@
             virtualfn = variant2virtual(fn, cls)
             self.clean.add(virtualfn)
             if virtualfn not in self.depends_cache:
-                logger.debug(2, "Cache: %s is not cached", virtualfn)
+                self.logger.debug(2, "%s is not cached", virtualfn)
                 invalid = True
             elif len(self.depends_cache[virtualfn]) != len(self.caches_array):
-                logger.debug(2, "Cache: Extra caches missing for %s?" % virtualfn)
+                self.logger.debug(2, "Extra caches missing for %s?" % virtualfn)
                 invalid = True
 
         # If any one of the variants is not present, mark as invalid for all
@@ -645,10 +667,10 @@
             for cls in info_array[0].variants:
                 virtualfn = variant2virtual(fn, cls)
                 if virtualfn in self.clean:
-                    logger.debug(2, "Cache: Removing %s from cache", virtualfn)
+                    self.logger.debug(2, "Removing %s from cache", virtualfn)
                     self.clean.remove(virtualfn)
             if fn in self.clean:
-                logger.debug(2, "Cache: Marking %s as not clean", fn)
+                self.logger.debug(2, "Marking %s as not clean", fn)
                 self.clean.remove(fn)
             return False
 
@@ -661,10 +683,10 @@
         Called from the parser in error cases
         """
         if fn in self.depends_cache:
-            logger.debug(1, "Removing %s from cache", fn)
+            self.logger.debug(1, "Removing %s from cache", fn)
             del self.depends_cache[fn]
         if fn in self.clean:
-            logger.debug(1, "Marking %s as unclean", fn)
+            self.logger.debug(1, "Marking %s as unclean", fn)
             self.clean.remove(fn)
 
     def sync(self):
@@ -677,12 +699,13 @@
             return
 
         if self.cacheclean:
-            logger.debug(2, "Cache is clean, not saving.")
+            self.logger.debug(2, "Cache is clean, not saving.")
             return
 
         for cache_class in self.caches_array:
             cache_class_name = cache_class.__name__
-            cachefile = getCacheFile(self.cachedir, cache_class.cachefile, self.data_hash)
+            cachefile = self.getCacheFile(cache_class.cachefile)
+            self.logger.debug(2, "Writing %s", cachefile)
             with open(cachefile, "wb") as f:
                 p = pickle.Pickler(f, pickle.HIGHEST_PROTOCOL)
                 p.dump(__cache_version__)
@@ -701,8 +724,18 @@
         return bb.parse.cached_mtime_noerror(cachefile)
 
     def add_info(self, filename, info_array, cacheData, parsed=None, watcher=None):
+        if self.mc is not None:
+            (fn, cls, mc) = virtualfn2realfn(filename)
+            if mc:
+                self.logger.error("Unexpected multiconfig %s", virtualfn)
+                return
+
+            vfn = realfn2virtual(fn, cls, self.mc)
+        else:
+            vfn = filename
+
         if isinstance(info_array[0], CoreRecipeInfo) and (not info_array[0].skipped):
-            cacheData.add_from_recipeinfo(filename, info_array)
+            cacheData.add_from_recipeinfo(vfn, info_array)
 
             if watcher:
                 watcher(info_array[0].file_depends)
@@ -727,6 +760,65 @@
             info_array.append(cache_class(realfn, data))
         self.add_info(file_name, info_array, cacheData, parsed)
 
+class MulticonfigCache(Mapping):
+    def __init__(self, databuilder, data_hash, caches_array):
+        def progress(p):
+            nonlocal current_progress
+            nonlocal previous_progress
+            nonlocal previous_percent
+            nonlocal cachesize
+
+            current_progress = previous_progress + p
+
+            if current_progress > cachesize:
+                # we might have calculated incorrect total size because a file
+                # might've been written out just after we checked its size
+                cachesize = current_progress
+            current_percent = 100 * current_progress / cachesize
+            if current_percent > previous_percent:
+                previous_percent = current_percent
+                bb.event.fire(bb.event.CacheLoadProgress(current_progress, cachesize),
+                                databuilder.data)
+
+
+        cachesize = 0
+        current_progress = 0
+        previous_progress = 0
+        previous_percent = 0
+        self.__caches = {}
+
+        for mc, mcdata in databuilder.mcdata.items():
+            self.__caches[mc] = Cache(databuilder, mc, data_hash, caches_array)
+
+            cachesize += self.__caches[mc].cachesize()
+
+        bb.event.fire(bb.event.CacheLoadStarted(cachesize), databuilder.data)
+        loaded = 0
+
+        for c in self.__caches.values():
+            loaded += c.prepare_cache(progress)
+            previous_progress = current_progress
+
+        # Note: depends cache number is corresponding to the parsing file numbers.
+        # The same file has several caches, still regarded as one item in the cache
+        bb.event.fire(bb.event.CacheLoadCompleted(cachesize, loaded), databuilder.data)
+
+    def __len__(self):
+        return len(self.__caches)
+
+    def __getitem__(self, key):
+        return self.__caches[key]
+
+    def __contains__(self, key):
+        return key in self.__caches
+
+    def __iter__(self):
+        for k in self.__caches:
+            yield k
+
+    def keys(self):
+        return self.__caches[key]
+
 
 def init(cooker):
     """
diff --git a/poky/bitbake/lib/bb/command.py b/poky/bitbake/lib/bb/command.py
index 6abf386..3902ccc 100644
--- a/poky/bitbake/lib/bb/command.py
+++ b/poky/bitbake/lib/bb/command.py
@@ -138,12 +138,6 @@
     def reset(self):
         self.remotedatastores = bb.remotedata.RemoteDatastores(self.cooker)
 
-def split_mc_pn(pn):
-    if pn.startswith("multiconfig:"):
-        _, mc, pn = pn.split(":", 2)
-        return (mc, pn)
-    return ('', pn)
-
 class CommandsSync:
     """
     A class of synchronous commands
@@ -232,7 +226,11 @@
 
     def matchFile(self, command, params):
         fMatch = params[0]
-        return command.cooker.matchFile(fMatch)
+        try:
+            mc = params[0]
+        except IndexError:
+            mc = ''
+        return command.cooker.matchFile(fMatch, mc)
     matchFile.needconfig = False
 
     def getUIHandlerNum(self, command, params):
@@ -395,22 +393,38 @@
     def getSkippedRecipes(self, command, params):
         # Return list sorted by reverse priority order
         import bb.cache
-        skipdict = OrderedDict(sorted(command.cooker.skiplist.items(),
-                                      key=lambda x: (-command.cooker.collection.calc_bbfile_priority(bb.cache.virtualfn2realfn(x[0])[0]), x[0])))
+        def sortkey(x):
+            vfn, _ = x
+            realfn, _, mc = bb.cache.virtualfn2realfn(vfn)
+            return (-command.cooker.collections[mc].calc_bbfile_priority(realfn), vfn)
+
+        skipdict = OrderedDict(sorted(command.cooker.skiplist.items(), key=sortkey))
         return list(skipdict.items())
     getSkippedRecipes.readonly = True
 
     def getOverlayedRecipes(self, command, params):
-        return list(command.cooker.collection.overlayed.items())
+        try:
+            mc = params[0]
+        except IndexError:
+            mc = ''
+        return list(command.cooker.collections[mc].overlayed.items())
     getOverlayedRecipes.readonly = True
 
     def getFileAppends(self, command, params):
         fn = params[0]
-        return command.cooker.collection.get_file_appends(fn)
+        try:
+            mc = params[1]
+        except IndexError:
+            mc = ''
+        return command.cooker.collections[mc].get_file_appends(fn)
     getFileAppends.readonly = True
 
     def getAllAppends(self, command, params):
-        return command.cooker.collection.bbappends
+        try:
+            mc = params[0]
+        except IndexError:
+            mc = ''
+        return command.cooker.collections[mc].bbappends
     getAllAppends.readonly = True
 
     def findProviders(self, command, params):
@@ -422,7 +436,7 @@
     findProviders.readonly = True
 
     def findBestProvider(self, command, params):
-        (mc, pn) = split_mc_pn(params[0])
+        (mc, pn) = bb.runqueue.split_mc(params[0])
         return command.cooker.findBestProvider(pn, mc)
     findBestProvider.readonly = True
 
@@ -496,6 +510,7 @@
         for the recipe.
         """
         fn = params[0]
+        mc = bb.runqueue.mc_from_tid(fn)
         appends = params[1]
         appendlist = params[2]
         if len(params) > 3:
@@ -507,7 +522,7 @@
             if appendlist is not None:
                 appendfiles = appendlist
             else:
-                appendfiles = command.cooker.collection.get_file_appends(fn)
+                appendfiles = command.cooker.collections[mc].get_file_appends(fn)
         else:
             appendfiles = []
         # We are calling bb.cache locally here rather than on the server,
@@ -517,7 +532,7 @@
         if config_data:
             # We have to use a different function here if we're passing in a datastore
             # NOTE: we took a copy above, so we don't do it here again
-            envdata = bb.cache.parse_recipe(config_data, fn, appendfiles)['']
+            envdata = bb.cache.parse_recipe(config_data, fn, appendfiles, mc)['']
         else:
             # Use the standard path
             parser = bb.cache.NoCache(command.cooker.databuilder)
diff --git a/poky/bitbake/lib/bb/cooker.py b/poky/bitbake/lib/bb/cooker.py
index e527e23..effd024 100644
--- a/poky/bitbake/lib/bb/cooker.py
+++ b/poky/bitbake/lib/bb/cooker.py
@@ -525,7 +525,7 @@
             self.parseConfiguration()
 
             fn, cls, mc = bb.cache.virtualfn2realfn(buildfile)
-            fn = self.matchFile(fn)
+            fn = self.matchFile(fn, mc)
             fn = bb.cache.realfn2virtual(fn, cls, mc)
         elif len(pkgs_to_build) == 1:
             mc = mc_base(pkgs_to_build[0])
@@ -541,8 +541,8 @@
 
         if fn:
             try:
-                bb_cache = bb.cache.Cache(self.databuilder, self.data_hash, self.caches_array)
-                envdata = bb_cache.loadDataFull(fn, self.collection.get_file_appends(fn))
+                bb_caches = bb.cache.MulticonfigCache(self.databuilder, self.data_hash, self.caches_array)
+                envdata = bb_caches[mc].loadDataFull(fn, self.collections[mc].get_file_appends(fn))
             except Exception as e:
                 parselog.exception("Unable to read %s", fn)
                 raise
@@ -929,26 +929,33 @@
         logger.info("Task dependencies saved to 'task-depends.dot'")
 
     def show_appends_with_no_recipes(self):
+        appends_without_recipes = {}
         # Determine which bbappends haven't been applied
+        for mc in self.multiconfigs:
+            # First get list of recipes, including skipped
+            recipefns = list(self.recipecaches[mc].pkg_fn.keys())
+            recipefns.extend(self.skiplist.keys())
 
-        # First get list of recipes, including skipped
-        recipefns = list(self.recipecaches[''].pkg_fn.keys())
-        recipefns.extend(self.skiplist.keys())
+            # Work out list of bbappends that have been applied
+            applied_appends = []
+            for fn in recipefns:
+                applied_appends.extend(self.collections[mc].get_file_appends(fn))
 
-        # Work out list of bbappends that have been applied
-        applied_appends = []
-        for fn in recipefns:
-            applied_appends.extend(self.collection.get_file_appends(fn))
+            appends_without_recipes[mc] = []
+            for _, appendfn in self.collections[mc].bbappends:
+                if not appendfn in applied_appends:
+                    appends_without_recipes[mc].append(appendfn)
 
-        appends_without_recipes = []
-        for _, appendfn in self.collection.bbappends:
-            if not appendfn in applied_appends:
-                appends_without_recipes.append(appendfn)
+        msgs = []
+        for mc in sorted(appends_without_recipes.keys()):
+            if appends_without_recipes[mc]:
+                msgs.append('No recipes in %s available for:\n  %s' % (mc if mc else 'default',
+                                                                        '\n  '.join(appends_without_recipes[mc])))
 
-        if appends_without_recipes:
-            msg = 'No recipes available for:\n  %s' % '\n  '.join(appends_without_recipes)
-            warn_only = self.data.getVar("BB_DANGLINGAPPENDS_WARNONLY", \
-                 False) or "no"
+        if msgs:
+            msg = "\n".join(msgs)
+            warn_only = self.databuilder.mcdata[mc].getVar("BB_DANGLINGAPPENDS_WARNONLY", \
+                False) or "no"
             if warn_only.lower() in ("1", "yes", "true"):
                 bb.warn(msg)
             else:
@@ -1249,15 +1256,15 @@
         if siggen_cache:
             bb.parse.siggen.checksum_cache.mtime_cache.clear()
 
-    def matchFiles(self, bf):
+    def matchFiles(self, bf, mc=''):
         """
         Find the .bb files which match the expression in 'buildfile'.
         """
         if bf.startswith("/") or bf.startswith("../"):
             bf = os.path.abspath(bf)
 
-        self.collection = CookerCollectFiles(self.bbfile_config_priorities)
-        filelist, masked, searchdirs = self.collection.collect_bbfiles(self.data, self.data)
+        self.collections = {mc: CookerCollectFiles(self.bbfile_config_priorities, mc)}
+        filelist, masked, searchdirs = self.collections[mc].collect_bbfiles(self.databuilder.mcdata[mc], self.databuilder.mcdata[mc])
         try:
             os.stat(bf)
             bf = os.path.abspath(bf)
@@ -1270,12 +1277,12 @@
                     matches.append(f)
             return matches
 
-    def matchFile(self, buildfile):
+    def matchFile(self, buildfile, mc=''):
         """
         Find the .bb file which matches the expression in 'buildfile'.
         Raise an error if multiple files
         """
-        matches = self.matchFiles(buildfile)
+        matches = self.matchFiles(buildfile, mc)
         if len(matches) != 1:
             if matches:
                 msg = "Unable to match '%s' to a specific recipe file - %s matches found:" % (buildfile, len(matches))
@@ -1316,14 +1323,14 @@
             task = "do_%s" % task
 
         fn, cls, mc = bb.cache.virtualfn2realfn(buildfile)
-        fn = self.matchFile(fn)
+        fn = self.matchFile(fn, mc)
 
         self.buildSetVars()
         self.reset_mtime_caches()
 
-        bb_cache = bb.cache.Cache(self.databuilder, self.data_hash, self.caches_array)
+        bb_caches = bb.cache.MulticonfigCache(self.databuilder, self.data_hash, self.caches_array)
 
-        infos = bb_cache.parse(fn, self.collection.get_file_appends(fn))
+        infos = bb_caches[mc].parse(fn, self.collections[mc].get_file_appends(fn))
         infos = dict(infos)
 
         fn = bb.cache.realfn2virtual(fn, cls, mc)
@@ -1552,14 +1559,24 @@
                 for dep in self.configuration.extra_assume_provided:
                     self.recipecaches[mc].ignored_dependencies.add(dep)
 
-            self.collection = CookerCollectFiles(self.bbfile_config_priorities)
-            (filelist, masked, searchdirs) = self.collection.collect_bbfiles(self.data, self.data)
+            self.collections = {}
+
+            mcfilelist = {}
+            total_masked = 0
+            searchdirs = set()
+            for mc in self.multiconfigs:
+                self.collections[mc] = CookerCollectFiles(self.bbfile_config_priorities, mc)
+                (filelist, masked, search) = self.collections[mc].collect_bbfiles(self.databuilder.mcdata[mc], self.databuilder.mcdata[mc])
+
+                mcfilelist[mc] = filelist
+                total_masked += masked
+                searchdirs |= set(search)
 
             # Add inotify watches for directories searched for bb/bbappend files
             for dirent in searchdirs:
                 self.add_filewatch([[dirent]], dirs=True)
 
-            self.parser = CookerParser(self, filelist, masked)
+            self.parser = CookerParser(self, mcfilelist, total_masked)
             self.parsecache_valid = True
 
         self.state = state.parsing
@@ -1571,7 +1588,7 @@
             self.show_appends_with_no_recipes()
             self.handlePrefProviders()
             for mc in self.multiconfigs:
-                self.recipecaches[mc].bbfile_priority = self.collection.collection_priorities(self.recipecaches[mc].pkg_fn, self.data)
+                self.recipecaches[mc].bbfile_priority = self.collections[mc].collection_priorities(self.recipecaches[mc].pkg_fn, self.data)
             self.state = state.running
 
             # Send an event listing all stamps reachable after parsing
@@ -1679,7 +1696,8 @@
 
 
 class CookerCollectFiles(object):
-    def __init__(self, priorities):
+    def __init__(self, priorities, mc=''):
+        self.mc = mc
         self.bbappends = []
         # Priorities is a list of tupples, with the second element as the pattern.
         # We need to sort the list with the longest pattern first, and so on to
@@ -1846,7 +1864,7 @@
             (bbappend, filename) = b
             if (bbappend == f) or ('%' in bbappend and bbappend.startswith(f[:bbappend.index('%')])):
                 filelist.append(filename)
-        return filelist
+        return tuple(filelist)
 
     def collection_priorities(self, pkgfns, d):
 
@@ -1882,7 +1900,8 @@
         for collection, pattern, regex, _ in self.bbfile_config_priorities:
             if regex in unmatched:
                 if d.getVar('BBFILE_PATTERN_IGNORE_EMPTY_%s' % collection) != '1':
-                    collectlog.warning("No bb files matched BBFILE_PATTERN_%s '%s'" % (collection, pattern))
+                    collectlog.warning("No bb files in %s matched BBFILE_PATTERN_%s '%s'" % (self.mc if self.mc else 'default',
+                                                                                             collection, pattern))
 
         return priorities
 
@@ -1949,7 +1968,7 @@
             except queue.Full:
                 pending.append(result)
 
-    def parse(self, filename, appends):
+    def parse(self, mc, cache, filename, appends):
         try:
             origfilter = bb.event.LogHandler.filter
             # Record the filename we're parsing into any events generated
@@ -1963,7 +1982,7 @@
             bb.event.set_class_handlers(self.handlers.copy())
             bb.event.LogHandler.filter = parse_filter
 
-            return True, self.bb_cache.parse(filename, appends)
+            return True, mc, cache.parse(filename, appends)
         except Exception as exc:
             tb = sys.exc_info()[2]
             exc.recipe = filename
@@ -1978,8 +1997,8 @@
             bb.event.LogHandler.filter = origfilter
 
 class CookerParser(object):
-    def __init__(self, cooker, filelist, masked):
-        self.filelist = filelist
+    def __init__(self, cooker, mcfilelist, masked):
+        self.mcfilelist = mcfilelist
         self.cooker = cooker
         self.cfgdata = cooker.data
         self.cfghash = cooker.data_hash
@@ -1993,25 +2012,27 @@
 
         self.skipped = 0
         self.virtuals = 0
-        self.total = len(filelist)
 
         self.current = 0
         self.process_names = []
 
-        self.bb_cache = bb.cache.Cache(self.cfgbuilder, self.cfghash, cooker.caches_array)
-        self.fromcache = []
-        self.willparse = []
-        for filename in self.filelist:
-            appends = self.cooker.collection.get_file_appends(filename)
-            if not self.bb_cache.cacheValid(filename, appends):
-                self.willparse.append((filename, appends))
-            else:
-                self.fromcache.append((filename, appends))
-        self.toparse = self.total - len(self.fromcache)
+        self.bb_caches = bb.cache.MulticonfigCache(self.cfgbuilder, self.cfghash, cooker.caches_array)
+        self.fromcache = set()
+        self.willparse = set()
+        for mc in self.cooker.multiconfigs:
+            for filename in self.mcfilelist[mc]:
+                appends = self.cooker.collections[mc].get_file_appends(filename)
+                if not self.bb_caches[mc].cacheValid(filename, appends):
+                    self.willparse.add((mc, self.bb_caches[mc], filename, appends))
+                else:
+                    self.fromcache.add((mc, self.bb_caches[mc], filename, appends))
+
+        self.total = len(self.fromcache) + len(self.willparse)
+        self.toparse = len(self.willparse)
         self.progress_chunk = int(max(self.toparse / 100, 1))
 
         self.num_processes = min(int(self.cfgdata.getVar("BB_NUMBER_PARSE_THREADS") or
-                                 multiprocessing.cpu_count()), len(self.willparse))
+                                 multiprocessing.cpu_count()), self.toparse)
 
         self.start()
         self.haveshutdown = False
@@ -2022,7 +2043,6 @@
         if self.toparse:
             bb.event.fire(bb.event.ParseStarted(self.toparse), self.cfgdata)
             def init():
-                Parser.bb_cache = self.bb_cache
                 bb.utils.set_process_name(multiprocessing.current_process().name)
                 multiprocessing.util.Finalize(None, bb.codeparser.parser_cache_save, exitpriority=1)
                 multiprocessing.util.Finalize(None, bb.fetch.fetcher_parse_save, exitpriority=1)
@@ -2032,7 +2052,7 @@
 
             def chunkify(lst,n):
                 return [lst[i::n] for i in range(n)]
-            self.jobs = chunkify(self.willparse, self.num_processes)
+            self.jobs = chunkify(list(self.willparse), self.num_processes)
 
             for i in range(0, self.num_processes):
                 parser = Parser(self.jobs[i], self.result_queue, self.parser_quit, init, self.cooker.configuration.profile)
@@ -2078,7 +2098,11 @@
             else:
                 process.join()
 
-        sync = threading.Thread(target=self.bb_cache.sync)
+        def sync_caches():
+            for c in self.bb_caches.values():
+                c.sync()
+
+        sync = threading.Thread(target=sync_caches)
         sync.start()
         multiprocessing.util.Finalize(None, sync.join, exitpriority=-100)
         bb.codeparser.parser_cache_savemerge()
@@ -2095,9 +2119,9 @@
             print("Processed parsing statistics saved to %s" % (pout))
 
     def load_cached(self):
-        for filename, appends in self.fromcache:
-            cached, infos = self.bb_cache.load(filename, appends)
-            yield not cached, infos
+        for mc, cache, filename, appends in self.fromcache:
+            cached, infos = cache.load(filename, appends)
+            yield not cached, mc, infos
 
     def parse_generator(self):
         while True:
@@ -2119,7 +2143,7 @@
         result = []
         parsed = None
         try:
-            parsed, result = next(self.results)
+            parsed, mc, result = next(self.results)
         except StopIteration:
             self.shutdown()
             return False
@@ -2175,13 +2199,16 @@
             if info_array[0].skipped:
                 self.skipped += 1
                 self.cooker.skiplist[virtualfn] = SkippedPackage(info_array[0])
-            (fn, cls, mc) = bb.cache.virtualfn2realfn(virtualfn)
-            self.bb_cache.add_info(virtualfn, info_array, self.cooker.recipecaches[mc],
+            self.bb_caches[mc].add_info(virtualfn, info_array, self.cooker.recipecaches[mc],
                                         parsed=parsed, watcher = self.cooker.add_filewatch)
         return True
 
     def reparse(self, filename):
-        infos = self.bb_cache.parse(filename, self.cooker.collection.get_file_appends(filename))
-        for vfn, info_array in infos:
-            (fn, cls, mc) = bb.cache.virtualfn2realfn(vfn)
-            self.cooker.recipecaches[mc].add_from_recipeinfo(vfn, info_array)
+        to_reparse = set()
+        for mc in self.cooker.multiconfigs:
+            to_reparse.add((mc, filename, self.cooker.collections[mc].get_file_appends(filename)))
+
+        for mc, filename, appends in to_reparse:
+            infos = self.bb_caches[mc].parse(filename, appends)
+            for vfn, info_array in infos:
+                self.cooker.recipecaches[mc].add_from_recipeinfo(vfn, info_array)
diff --git a/poky/bitbake/lib/bb/runqueue.py b/poky/bitbake/lib/bb/runqueue.py
index 16f076f..adb34a8 100644
--- a/poky/bitbake/lib/bb/runqueue.py
+++ b/poky/bitbake/lib/bb/runqueue.py
@@ -46,6 +46,12 @@
     (mc, fn, taskname, _) = split_tid_mcfn(tid)
     return (mc, fn, taskname)
 
+def split_mc(n):
+    if n.startswith("mc:"):
+        _, mc, n = n.split(":", 2)
+        return (mc, n)
+    return ('', n)
+
 def split_tid_mcfn(tid):
     if tid.startswith('mc:'):
         elems = tid.split(':')
@@ -1184,8 +1190,9 @@
         return len(self.runtaskentries)
 
     def prepare_task_hash(self, tid):
-        bb.parse.siggen.prep_taskhash(tid, self.runtaskentries[tid].depends, self.dataCaches[mc_from_tid(tid)])
-        self.runtaskentries[tid].hash = bb.parse.siggen.get_taskhash(tid, self.runtaskentries[tid].depends, self.dataCaches[mc_from_tid(tid)])
+        dc = bb.parse.siggen.get_data_caches(self.dataCaches, mc_from_tid(tid))
+        bb.parse.siggen.prep_taskhash(tid, self.runtaskentries[tid].depends, dc)
+        self.runtaskentries[tid].hash = bb.parse.siggen.get_taskhash(tid, self.runtaskentries[tid].depends, dc)
         self.runtaskentries[tid].unihash = bb.parse.siggen.get_unihash(tid)
 
     def dump_data(self):
@@ -1557,7 +1564,8 @@
 
     def rq_dump_sigfn(self, fn, options):
         bb_cache = bb.cache.NoCache(self.cooker.databuilder)
-        the_data = bb_cache.loadDataFull(fn, self.cooker.collection.get_file_appends(fn))
+        mc = bb.runqueue.mc_from_tid(fn)
+        the_data = bb_cache.loadDataFull(fn, self.cooker.collections[mc].get_file_appends(fn))
         siggen = bb.parse.siggen
         dataCaches = self.rqdata.dataCaches
         siggen.dump_sigfn(fn, dataCaches, options)
@@ -2042,10 +2050,10 @@
             if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run:
                 if not mc in self.rq.fakeworker:
                     self.rq.start_fakeworker(self, mc)
-                self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, True, self.cooker.collection.get_file_appends(taskfn), taskdepdata, False)) + b"</runtask>")
+                self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, True, self.cooker.collections[mc].get_file_appends(taskfn), taskdepdata, False)) + b"</runtask>")
                 self.rq.fakeworker[mc].process.stdin.flush()
             else:
-                self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, True, self.cooker.collection.get_file_appends(taskfn), taskdepdata, False)) + b"</runtask>")
+                self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, True, self.cooker.collections[mc].get_file_appends(taskfn), taskdepdata, False)) + b"</runtask>")
                 self.rq.worker[mc].process.stdin.flush()
 
             self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True)
@@ -2129,10 +2137,10 @@
                         self.rq.state = runQueueFailed
                         self.stats.taskFailed()
                         return True
-                self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, False, self.cooker.collection.get_file_appends(taskfn), taskdepdata, self.rqdata.setscene_enforce)) + b"</runtask>")
+                self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, False, self.cooker.collections[mc].get_file_appends(taskfn), taskdepdata, self.rqdata.setscene_enforce)) + b"</runtask>")
                 self.rq.fakeworker[mc].process.stdin.flush()
             else:
-                self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, False, self.cooker.collection.get_file_appends(taskfn), taskdepdata, self.rqdata.setscene_enforce)) + b"</runtask>")
+                self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, False, self.cooker.collections[mc].get_file_appends(taskfn), taskdepdata, self.rqdata.setscene_enforce)) + b"</runtask>")
                 self.rq.worker[mc].process.stdin.flush()
 
             self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True)
@@ -2298,7 +2306,8 @@
                 if len(self.rqdata.runtaskentries[p].depends) and not self.rqdata.runtaskentries[tid].depends.isdisjoint(total):
                     continue
                 orighash = self.rqdata.runtaskentries[tid].hash
-                newhash = bb.parse.siggen.get_taskhash(tid, self.rqdata.runtaskentries[tid].depends, self.rqdata.dataCaches[mc_from_tid(tid)])
+                dc = bb.parse.siggen.get_data_caches(self.rqdata.dataCaches, mc_from_tid(tid))
+                newhash = bb.parse.siggen.get_taskhash(tid, self.rqdata.runtaskentries[tid].depends, dc)
                 origuni = self.rqdata.runtaskentries[tid].unihash
                 newuni = bb.parse.siggen.get_unihash(tid)
                 # FIXME, need to check it can come from sstate at all for determinism?
diff --git a/poky/bitbake/lib/bb/siggen.py b/poky/bitbake/lib/bb/siggen.py
index 4c8d81c..872333d 100644
--- a/poky/bitbake/lib/bb/siggen.py
+++ b/poky/bitbake/lib/bb/siggen.py
@@ -38,6 +38,11 @@
     """
     name = "noop"
 
+    # If the derived class supports multiconfig datacaches, set this to True
+    # The default is False for backward compatibility with derived signature
+    # generators that do not understand multiconfig caches
+    supports_multiconfig_datacaches = False
+
     def __init__(self, data):
         self.basehash = {}
         self.taskhash = {}
@@ -58,10 +63,10 @@
     def get_unihash(self, tid):
         return self.taskhash[tid]
 
-    def prep_taskhash(self, tid, deps, dataCache):
+    def prep_taskhash(self, tid, deps, dataCaches):
         return
 
-    def get_taskhash(self, tid, deps, dataCache):
+    def get_taskhash(self, tid, deps, dataCaches):
         self.taskhash[tid] = hashlib.sha256(tid.encode("utf-8")).hexdigest()
         return self.taskhash[tid]
 
@@ -105,6 +110,38 @@
     def set_setscene_tasks(self, setscene_tasks):
         return
 
+    @classmethod
+    def get_data_caches(cls, dataCaches, mc):
+        """
+        This function returns the datacaches that should be passed to signature
+        generator functions. If the signature generator supports multiconfig
+        caches, the entire dictionary of data caches is sent, otherwise a
+        special proxy is sent that support both index access to all
+        multiconfigs, and also direct access for the default multiconfig.
+
+        The proxy class allows code in this class itself to always use
+        multiconfig aware code (to ease maintenance), but derived classes that
+        are unaware of multiconfig data caches can still access the default
+        multiconfig as expected.
+
+        Do not override this function in derived classes; it will be removed in
+        the future when support for multiconfig data caches is mandatory
+        """
+        class DataCacheProxy(object):
+            def __init__(self):
+                pass
+
+            def __getitem__(self, key):
+                return dataCaches[key]
+
+            def __getattr__(self, name):
+                return getattr(dataCaches[mc], name)
+
+        if cls.supports_multiconfig_datacaches:
+            return dataCaches
+
+        return DataCacheProxy()
+
 class SignatureGeneratorBasic(SignatureGenerator):
     """
     """
@@ -200,7 +237,7 @@
         self.lookupcache = {}
         self.taskdeps = {}
 
-    def rundep_check(self, fn, recipename, task, dep, depname, dataCache):
+    def rundep_check(self, fn, recipename, task, dep, depname, dataCaches):
         # Return True if we should keep the dependency, False to drop it
         # We only manipulate the dependencies for packages not in the whitelist
         if self.twl and not self.twl.search(recipename):
@@ -218,37 +255,40 @@
             pass
         return taint
 
-    def prep_taskhash(self, tid, deps, dataCache):
+    def prep_taskhash(self, tid, deps, dataCaches):
 
         (mc, _, task, fn) = bb.runqueue.split_tid_mcfn(tid)
 
-        self.basehash[tid] = dataCache.basetaskhash[tid]
+        self.basehash[tid] = dataCaches[mc].basetaskhash[tid]
         self.runtaskdeps[tid] = []
         self.file_checksum_values[tid] = []
-        recipename = dataCache.pkg_fn[fn]
+        recipename = dataCaches[mc].pkg_fn[fn]
 
         self.tidtopn[tid] = recipename
 
         for dep in sorted(deps, key=clean_basepath):
-            (depmc, _, deptaskname, depfn) = bb.runqueue.split_tid_mcfn(dep)
-            if mc != depmc:
+            (depmc, _, _, depmcfn) = bb.runqueue.split_tid_mcfn(dep)
+            depname = dataCaches[depmc].pkg_fn[depmcfn]
+            if not self.supports_multiconfig_datacaches and mc != depmc:
+                # If the signature generator doesn't understand multiconfig
+                # data caches, any dependency not in the same multiconfig must
+                # be skipped for backward compatibility
                 continue
-            depname = dataCache.pkg_fn[depfn]
-            if not self.rundep_check(fn, recipename, task, dep, depname, dataCache):
+            if not self.rundep_check(fn, recipename, task, dep, depname, dataCaches):
                 continue
             if dep not in self.taskhash:
                 bb.fatal("%s is not in taskhash, caller isn't calling in dependency order?" % dep)
             self.runtaskdeps[tid].append(dep)
 
-        if task in dataCache.file_checksums[fn]:
+        if task in dataCaches[mc].file_checksums[fn]:
             if self.checksum_cache:
-                checksums = self.checksum_cache.get_checksums(dataCache.file_checksums[fn][task], recipename, self.localdirsexclude)
+                checksums = self.checksum_cache.get_checksums(dataCaches[mc].file_checksums[fn][task], recipename, self.localdirsexclude)
             else:
-                checksums = bb.fetch2.get_file_checksums(dataCache.file_checksums[fn][task], recipename, self.localdirsexclude)
+                checksums = bb.fetch2.get_file_checksums(dataCaches[mc].file_checksums[fn][task], recipename, self.localdirsexclude)
             for (f,cs) in checksums:
                 self.file_checksum_values[tid].append((f,cs))
 
-        taskdep = dataCache.task_deps[fn]
+        taskdep = dataCaches[mc].task_deps[fn]
         if 'nostamp' in taskdep and task in taskdep['nostamp']:
             # Nostamp tasks need an implicit taint so that they force any dependent tasks to run
             if tid in self.taints and self.taints[tid].startswith("nostamp:"):
@@ -259,14 +299,14 @@
                 taint = str(uuid.uuid4())
                 self.taints[tid] = "nostamp:" + taint
 
-        taint = self.read_taint(fn, task, dataCache.stamp[fn])
+        taint = self.read_taint(fn, task, dataCaches[mc].stamp[fn])
         if taint:
             self.taints[tid] = taint
             logger.warning("%s is tainted from a forced run" % tid)
 
         return
 
-    def get_taskhash(self, tid, deps, dataCache):
+    def get_taskhash(self, tid, deps, dataCaches):
 
         data = self.basehash[tid]
         for dep in self.runtaskdeps[tid]:
@@ -640,6 +680,12 @@
         self.server = data.getVar('BB_HASHSERVE')
         self.method = "sstate_output_hash"
 
+#
+# Dummy class used for bitbake-selftest
+#
+class SignatureGeneratorTestMulticonfigDepends(SignatureGeneratorBasicHash):
+    name = "TestMulticonfigDepends"
+    supports_multiconfig_datacaches = True
 
 def dump_this_task(outfile, d):
     import bb.parse
diff --git a/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf b/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf
index 5e451fc..efebf00 100644
--- a/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf
+++ b/poky/bitbake/lib/bb/tests/runqueue-tests/conf/bitbake.conf
@@ -1,7 +1,8 @@
 CACHE = "${TOPDIR}/cache"
 THISDIR = "${@os.path.dirname(d.getVar('FILE'))}"
 COREBASE := "${@os.path.normpath(os.path.dirname(d.getVar('FILE')+'/../../'))}"
-BBFILES = "${COREBASE}/recipes/*.bb"
+EXTRA_BBFILES ?= ""
+BBFILES = "${COREBASE}/recipes/*.bb ${EXTRA_BBFILES}"
 PROVIDES = "${PN}"
 PN = "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[0]}"
 PF = "${BB_CURRENT_MC}:${PN}"
diff --git a/poky/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc1.conf b/poky/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc1.conf
index ecf23e1..f34b8dc 100644
--- a/poky/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc1.conf
+++ b/poky/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc1.conf
@@ -1 +1,2 @@
 TMPDIR = "${TOPDIR}/mc1/"
+BBMASK += "recipes/fails-mc/fails-mc1.bb"
diff --git a/poky/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc2.conf b/poky/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc2.conf
index eef338e..c3360fc 100644
--- a/poky/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc2.conf
+++ b/poky/bitbake/lib/bb/tests/runqueue-tests/conf/multiconfig/mc2.conf
@@ -1 +1,2 @@
 TMPDIR = "${TOPDIR}/mc2/"
+BBMASK += "recipes/fails-mc/fails-mc2.bb"
diff --git a/poky/bitbake/lib/bb/tests/runqueue-tests/recipes/f1.bb b/poky/bitbake/lib/bb/tests/runqueue-tests/recipes/f1.bb
new file mode 100644
index 0000000..d45a4cf
--- /dev/null
+++ b/poky/bitbake/lib/bb/tests/runqueue-tests/recipes/f1.bb
@@ -0,0 +1 @@
+do_install[mcdepends] = "mc:mc1:mc2:a1:do_build"
diff --git a/poky/bitbake/lib/bb/tests/runqueue-tests/recipes/fails-mc/fails-mc1.bb b/poky/bitbake/lib/bb/tests/runqueue-tests/recipes/fails-mc/fails-mc1.bb
new file mode 100644
index 0000000..17a181f
--- /dev/null
+++ b/poky/bitbake/lib/bb/tests/runqueue-tests/recipes/fails-mc/fails-mc1.bb
@@ -0,0 +1,5 @@
+python () {
+    if d.getVar("BB_CURRENT_MC") == "mc1":
+        bb.fatal("Multiconfig is mc1")
+}
+
diff --git a/poky/bitbake/lib/bb/tests/runqueue-tests/recipes/fails-mc/fails-mc2.bb b/poky/bitbake/lib/bb/tests/runqueue-tests/recipes/fails-mc/fails-mc2.bb
new file mode 100644
index 0000000..cc69e7b
--- /dev/null
+++ b/poky/bitbake/lib/bb/tests/runqueue-tests/recipes/fails-mc/fails-mc2.bb
@@ -0,0 +1,4 @@
+python () {
+    if d.getVar("BB_CURRENT_MC") == "mc2":
+        bb.fatal("Multiconfig is mc2")
+}
diff --git a/poky/bitbake/lib/bb/tests/runqueue.py b/poky/bitbake/lib/bb/tests/runqueue.py
index 4ba12a0..d3d62b9 100644
--- a/poky/bitbake/lib/bb/tests/runqueue.py
+++ b/poky/bitbake/lib/bb/tests/runqueue.py
@@ -232,6 +232,51 @@
                 expected.remove(x)
             self.assertEqual(set(tasks), set(expected))
 
+    def test_multiconfig_bbmask(self):
+        # This test validates that multiconfigs can independently mask off
+        # recipes they do not want with BBMASK. It works by having recipes
+        # that will fail to parse for mc1 and mc2, then making each multiconfig
+        # build the one that does parse. This ensures that the recipes are in
+        # each multiconfigs BBFILES, but each is masking only the one that
+        # doesn't parse
+        with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir:
+            extraenv = {
+                "BBMULTICONFIG" : "mc1 mc2",
+                "BB_SIGNATURE_HANDLER" : "basic",
+                "EXTRA_BBFILES": "${COREBASE}/recipes/fails-mc/*.bb",
+            }
+            cmd = ["bitbake", "mc:mc1:fails-mc2", "mc:mc2:fails-mc1"]
+            self.run_bitbakecmd(cmd, tempdir, "", extraenv=extraenv)
+
+    def test_multiconfig_mcdepends(self):
+        with tempfile.TemporaryDirectory(prefix="runqueuetest") as tempdir:
+            extraenv = {
+                "BBMULTICONFIG" : "mc1 mc2",
+                "BB_SIGNATURE_HANDLER" : "TestMulticonfigDepends",
+                "EXTRA_BBFILES": "${COREBASE}/recipes/fails-mc/*.bb",
+            }
+            tasks = self.run_bitbakecmd(["bitbake", "mc:mc1:f1"], tempdir, "", extraenv=extraenv, cleanup=True)
+            expected = ["mc1:f1:%s" % t for t in self.alltasks] + \
+                       ["mc2:a1:%s" % t for t in self.alltasks]
+            self.assertEqual(set(tasks), set(expected))
+
+            # A rebuild does nothing
+            tasks = self.run_bitbakecmd(["bitbake", "mc:mc1:f1"], tempdir, "", extraenv=extraenv, cleanup=True)
+            self.assertEqual(set(tasks), set())
+
+            # Test that a signature change in the dependent task causes
+            # mcdepends to rebuild
+            tasks = self.run_bitbakecmd(["bitbake", "mc:mc2:a1", "-c", "compile", "-f"], tempdir, "", extraenv=extraenv, cleanup=True)
+            expected = ["mc2:a1:compile"]
+            self.assertEqual(set(tasks), set(expected))
+
+            rerun_tasks = self.alltasks[:]
+            for x in ("fetch", "unpack", "patch", "prepare_recipe_sysroot", "configure", "compile"):
+                rerun_tasks.remove(x)
+            tasks = self.run_bitbakecmd(["bitbake", "mc:mc1:f1"], tempdir, "", extraenv=extraenv, cleanup=True)
+            expected = ["mc1:f1:%s" % t for t in rerun_tasks] + \
+                       ["mc2:a1:%s" % t for t in rerun_tasks]
+            self.assertEqual(set(tasks), set(expected))
 
     @unittest.skipIf(sys.version_info < (3, 5, 0), 'Python 3.5 or later required')
     def test_hashserv_single(self):
diff --git a/poky/bitbake/lib/bb/tinfoil.py b/poky/bitbake/lib/bb/tinfoil.py
index 8c9b6b8..dccbe0e 100644
--- a/poky/bitbake/lib/bb/tinfoil.py
+++ b/poky/bitbake/lib/bb/tinfoil.py
@@ -117,15 +117,16 @@
 
     class TinfoilCookerCollectionAdapter:
         """ cooker.collection adapter """
-        def __init__(self, tinfoil):
+        def __init__(self, tinfoil, mc=''):
             self.tinfoil = tinfoil
+            self.mc = mc
         def get_file_appends(self, fn):
-            return self.tinfoil.get_file_appends(fn)
+            return self.tinfoil.get_file_appends(fn, self.mc)
         def __getattr__(self, name):
             if name == 'overlayed':
-                return self.tinfoil.get_overlayed_recipes()
+                return self.tinfoil.get_overlayed_recipes(self.mc)
             elif name == 'bbappends':
-                return self.tinfoil.run_command('getAllAppends')
+                return self.tinfoil.run_command('getAllAppends', self.mc)
             else:
                 raise AttributeError("%s instance has no attribute '%s'" % (self.__class__.__name__, name))
 
@@ -185,10 +186,11 @@
 
     def __init__(self, tinfoil):
         self.tinfoil = tinfoil
-        self.collection = self.TinfoilCookerCollectionAdapter(tinfoil)
+        self.multiconfigs = [''] + (tinfoil.config_data.getVar('BBMULTICONFIG') or '').split()
+        self.collections = {}
         self.recipecaches = {}
-        self.recipecaches[''] = self.TinfoilRecipeCacheAdapter(tinfoil)
-        for mc in (tinfoil.config_data.getVar('BBMULTICONFIG') or '').split():
+        for mc in self.multiconfigs:
+            self.collections[mc] = self.TinfoilCookerCollectionAdapter(tinfoil, mc)
             self.recipecaches[mc] = self.TinfoilRecipeCacheAdapter(tinfoil, mc)
         self._cache = {}
     def __getattr__(self, name):
@@ -492,11 +494,11 @@
             raise Exception('Not connected to server (did you call .prepare()?)')
         return self.server_connection.events.waitEvent(timeout)
 
-    def get_overlayed_recipes(self):
+    def get_overlayed_recipes(self, mc=''):
         """
         Find recipes which are overlayed (i.e. where recipes exist in multiple layers)
         """
-        return defaultdict(list, self.run_command('getOverlayedRecipes'))
+        return defaultdict(list, self.run_command('getOverlayedRecipes', mc))
 
     def get_skipped_recipes(self):
         """
@@ -534,11 +536,11 @@
                 raise bb.providers.NoProvider('Unable to find any recipe file matching "%s"' % pn)
         return best[3]
 
-    def get_file_appends(self, fn):
+    def get_file_appends(self, fn, mc=''):
         """
         Find the bbappends for a recipe file
         """
-        return self.run_command('getFileAppends', fn)
+        return self.run_command('getFileAppends', fn, mc)
 
     def all_recipes(self, mc='', sort=True):
         """
diff --git a/poky/bitbake/lib/bblayers/action.py b/poky/bitbake/lib/bblayers/action.py
index d6459d6..5b78195 100644
--- a/poky/bitbake/lib/bblayers/action.py
+++ b/poky/bitbake/lib/bblayers/action.py
@@ -143,11 +143,12 @@
 
         applied_appends = []
         for layer in layers:
-            overlayed = []
-            for f in self.tinfoil.cooker.collection.overlayed.keys():
-                for of in self.tinfoil.cooker.collection.overlayed[f]:
-                    if of.startswith(layer):
-                        overlayed.append(of)
+            overlayed = set()
+            for mc in self.tinfoil.cooker.multiconfigs:
+                for f in self.tinfoil.cooker.collections[mc].overlayed.keys():
+                    for of in self.tinfoil.cooker.collections[mc].overlayed[f]:
+                        if of.startswith(layer):
+                            overlayed.add(of)
 
             logger.plain('Copying files from %s...' % layer )
             for root, dirs, files in os.walk(layer):
@@ -174,14 +175,21 @@
                                     logger.warning('Overwriting file %s', fdest)
                             bb.utils.copyfile(f1full, fdest)
                             if ext == '.bb':
-                                for append in self.tinfoil.cooker.collection.get_file_appends(f1full):
+                                appends = set()
+                                for mc in self.tinfoil.cooker.multiconfigs:
+                                    appends |= set(self.tinfoil.cooker.collections[mc].get_file_appends(f1full))
+                                for append in appends:
                                     if layer_path_match(append):
                                         logger.plain('  Applying append %s to %s' % (append, fdest))
                                         self.apply_append(append, fdest)
                                         applied_appends.append(append)
 
         # Take care of when some layers are excluded and yet we have included bbappends for those recipes
-        for b in self.tinfoil.cooker.collection.bbappends:
+        bbappends = set()
+        for mc in self.tinfoil.cooker.multiconfigs:
+            bbappends |= set(self.tinfoil.cooker.collections[mc].bbappends)
+
+        for b in bbappends:
             (recipename, appendname) = b
             if appendname not in applied_appends:
                 first_append = None
diff --git a/poky/bitbake/lib/bblayers/query.py b/poky/bitbake/lib/bblayers/query.py
index e2cc310..ee2db0e 100644
--- a/poky/bitbake/lib/bblayers/query.py
+++ b/poky/bitbake/lib/bblayers/query.py
@@ -320,12 +320,12 @@
     def get_appends_for_files(self, filenames):
         appended, notappended = [], []
         for filename in filenames:
-            _, cls, _ = bb.cache.virtualfn2realfn(filename)
+            _, cls, mc = bb.cache.virtualfn2realfn(filename)
             if cls:
                 continue
 
             basename = os.path.basename(filename)
-            appends = self.tinfoil.cooker.collection.get_file_appends(basename)
+            appends = self.tinfoil.cooker.collections[mc].get_file_appends(basename)
             if appends:
                 appended.append((basename, list(appends)))
             else:
diff --git a/poky/meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb b/poky/meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb
new file mode 100644
index 0000000..08089b4
--- /dev/null
+++ b/poky/meta-selftest/recipes-test/git-submodule-test/git-submodule-test.bb
@@ -0,0 +1,8 @@
+SUMMARY = "Test recipe for fetching git submodules"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+SRC_URI = "gitsm://git.yoctoproject.org/git-submodule-test"
+SRCREV = "a2885dd7d25380d23627e7544b7bbb55014b16ee"
diff --git a/poky/meta-selftest/recipes-test/nopackages/selftest-nopackages.bb b/poky/meta-selftest/recipes-test/nopackages/selftest-nopackages.bb
new file mode 100644
index 0000000..154df91
--- /dev/null
+++ b/poky/meta-selftest/recipes-test/nopackages/selftest-nopackages.bb
@@ -0,0 +1,6 @@
+SUMMARY = "Test recipe for nopackages bbclass"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+INHIBIT_DEFAULT_DEPS = "1"
+inherit nopackages
diff --git a/poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb b/poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb
index 8e0d1cd..4f713f5 100644
--- a/poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb
+++ b/poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_0.5.bb
@@ -20,3 +20,5 @@
 CONFIGUREOPTS_remove = "--disable-dependency-tracking"
 CONFIGUREOPTS_remove = "--disable-silent-rules"
 EXTRA_OECONF_remove = "--disable-static"
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.14.1.bb b/poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.14.1.bb
index 8a2b565c..08fb415 100644
--- a/poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.14.1.bb
+++ b/poky/meta-selftest/recipes-test/selftest-ed/selftest-ed_1.14.1.bb
@@ -34,3 +34,5 @@
 		rm -f ${D}${infodir}/dir
 	fi
 }
+
+BBCLASSEXTEND = "native"
diff --git a/poky/meta/classes/archiver.bbclass b/poky/meta/classes/archiver.bbclass
index 780c562..c2c049c 100644
--- a/poky/meta/classes/archiver.bbclass
+++ b/poky/meta/classes/archiver.bbclass
@@ -345,13 +345,12 @@
 
     fetcher = bb.fetch2.Fetch(src_uri, d)
 
-    for url in fetcher.urls:
-        if is_excluded(url):
-            bb.note('Skipping excluded url: %s' % (url))
+    for ud in fetcher.expanded_urldata():
+        if is_excluded(ud.url):
+            bb.note('Skipping excluded url: %s' % (ud.url))
             continue
 
-        bb.note('Archiving url: %s' % (url))
-        ud = fetcher.ud[url]
+        bb.note('Archiving url: %s' % (ud.url))
         ud.setup_localpath(d)
         localpath = None
 
@@ -367,7 +366,7 @@
         if len(ud.mirrortarballs) and not localpath:
             bb.warn('Mirror tarballs are listed for a source but none are present. ' \
                     'Falling back to original download.\n' \
-                    'SRC_URI = %s' % (url))
+                    'SRC_URI = %s' % (ud.url))
 
         # Check original download
         if not localpath:
@@ -376,7 +375,7 @@
 
         if not localpath or not os.path.exists(localpath):
             bb.fatal('Original download is missing for a source.\n' \
-                        'SRC_URI = %s' % (url))
+                        'SRC_URI = %s' % (ud.url))
 
         # We now have an appropriate localpath
         bb.note('Copying source mirror')
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")
 }
diff --git a/poky/meta/classes/insane.bbclass b/poky/meta/classes/insane.bbclass
index b7c6138..649aea1 100644
--- a/poky/meta/classes/insane.bbclass
+++ b/poky/meta/classes/insane.bbclass
@@ -26,7 +26,7 @@
             textrel incompatible-license files-invalid \
             infodir build-deps src-uri-bad symlink-to-sysroot multilib \
             invalid-packageconfig host-user-contaminated uppercase-pn patch-fuzz \
-            mime mime-xdg unlisted-pkg-lics \
+            mime mime-xdg unlisted-pkg-lics unhandled-features-check \
             "
 ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
             perms dep-cmp pkgvarcheck perm-config perm-line perm-link \
@@ -980,6 +980,16 @@
         if re.search(r"github\.com/.+/.+/archive/.+", url):
             package_qa_handle_error("src-uri-bad", "%s: SRC_URI uses unstable GitHub archives" % pn, d)
 
+QARECIPETEST[unhandled-features-check] = "package_qa_check_unhandled_features_check"
+def package_qa_check_unhandled_features_check(pn, d, messages):
+    if not bb.data.inherits_class('features_check', d):
+        var_set = False
+        for kind in ['DISTRO', 'MACHINE', 'COMBINED']:
+            for var in ['ANY_OF_' + kind + '_FEATURES', 'REQUIRED_' + kind + '_FEATURES', 'CONFLICT_' + kind + '_FEATURES']:
+                if d.getVar(var) is not None or d.overridedata.get(var) is not None:
+                    var_set = True
+        if var_set:
+            package_qa_handle_error("unhandled-features-check", "%s: recipe doesn't inherit features_check" % pn, d)
 
 # The PACKAGE FUNC to scan each package
 python do_package_qa () {
diff --git a/poky/meta/conf/bitbake.conf b/poky/meta/conf/bitbake.conf
index 9336c24..f7700f1 100644
--- a/poky/meta/conf/bitbake.conf
+++ b/poky/meta/conf/bitbake.conf
@@ -410,6 +410,7 @@
 DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"
 DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
 DEPLOY_DIR_IMAGE ?= "${DEPLOY_DIR}/images/${MACHINE}"
+DEPLOY_DIR_TOOLS = "${DEPLOY_DIR}/tools"
 
 PKGDATA_DIR = "${TMPDIR}/pkgdata/${MACHINE}"
 
diff --git a/poky/meta/lib/oe/rootfs.py b/poky/meta/lib/oe/rootfs.py
index cd65e62..a0ac33a 100644
--- a/poky/meta/lib/oe/rootfs.py
+++ b/poky/meta/lib/oe/rootfs.py
@@ -297,7 +297,7 @@
 
     def _run_ldconfig(self):
         if self.d.getVar('LDCONFIGDEPEND'):
-            bb.note("Executing: ldconfig -r" + self.image_rootfs + "-c new -v")
+            bb.note("Executing: ldconfig -r " + self.image_rootfs + " -c new -v")
             self._exec_shell_cmd(['ldconfig', '-r', self.image_rootfs, '-c',
                                   'new', '-v'])
 
diff --git a/poky/meta/lib/oeqa/selftest/cases/archiver.py b/poky/meta/lib/oeqa/selftest/cases/archiver.py
index bc5447d..ddd08ec 100644
--- a/poky/meta/lib/oeqa/selftest/cases/archiver.py
+++ b/poky/meta/lib/oeqa/selftest/cases/archiver.py
@@ -19,8 +19,8 @@
         AutomatedBy: Daniel Istrate <daniel.alexandrux.istrate@intel.com>
         """
 
-        include_recipe = 'busybox'
-        exclude_recipe = 'zlib'
+        include_recipe = 'selftest-ed'
+        exclude_recipe = 'initscripts'
 
         features = 'INHERIT += "archiver"\n'
         features += 'ARCHIVER_MODE[src] = "original"\n'
@@ -51,8 +51,8 @@
         Author:      André Draszik <adraszik@tycoint.com>
         """
 
-        target_recipe = 'initscripts'
-        native_recipe = 'zlib-native'
+        target_recipe = 'selftest-ed'
+        native_recipe = 'selftest-ed-native'
 
         features = 'INHERIT += "archiver"\n'
         features += 'ARCHIVER_MODE[src] = "original"\n'
@@ -86,8 +86,8 @@
         Author:      André Draszik <adraszik@tycoint.com>
         """
 
-        target_recipes = [ 'initscripts', 'zlib' ]
-        native_recipes = [ 'update-rc.d-native', 'zlib-native' ]
+        target_recipes = [ 'initscripts', 'selftest-ed' ]
+        native_recipes = [ 'update-rc.d-native', 'selftest-ed-native' ]
 
         features = 'INHERIT += "archiver"\n'
         features += 'ARCHIVER_MODE[src] = "original"\n'
@@ -129,10 +129,10 @@
         features += 'PACKAGE_CLASSES = "package_rpm"\n'
         self.write_config(features)
 
-        bitbake('-n core-image-sato')
+        bitbake('-n selftest-nopackages selftest-ed')
 
     def _test_archiver_mode(self, mode, target_file_name, extra_config=None):
-        target = "selftest-ed"
+        target = 'selftest-ed-native'
 
         features = 'INHERIT += "archiver"\n'
         features +=  'ARCHIVER_MODE[src] = "%s"\n' % (mode)
@@ -143,8 +143,8 @@
         bitbake('-c clean %s' % (target))
         bitbake('-c deploy_archives %s' % (target))
 
-        bb_vars = get_bb_vars(['DEPLOY_DIR_SRC', 'TARGET_SYS'])
-        glob_str = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['TARGET_SYS'], '%s-*' % (target))
+        bb_vars = get_bb_vars(['DEPLOY_DIR_SRC', 'BUILD_SYS'])
+        glob_str = os.path.join(bb_vars['DEPLOY_DIR_SRC'], bb_vars['BUILD_SYS'], '%s-*' % (target))
         glob_result = glob.glob(glob_str)
         self.assertTrue(glob_result, 'Missing archiver directory for %s' % (target))
 
@@ -163,21 +163,21 @@
         Test that the archiver works with `ARCHIVER_MODE[src] = "patched"`.
         """
 
-        self._test_archiver_mode('patched', 'selftest-ed-1.14.1-r0-patched.tar.gz')
+        self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-patched.tar.gz')
 
     def test_archiver_mode_configured(self):
         """
         Test that the archiver works with `ARCHIVER_MODE[src] = "configured"`.
         """
 
-        self._test_archiver_mode('configured', 'selftest-ed-1.14.1-r0-configured.tar.gz')
+        self._test_archiver_mode('configured', 'selftest-ed-native-1.14.1-r0-configured.tar.gz')
 
     def test_archiver_mode_recipe(self):
         """
         Test that the archiver works with `ARCHIVER_MODE[recipe] = "1"`.
         """
 
-        self._test_archiver_mode('patched', 'selftest-ed-1.14.1-r0-recipe.tar.gz',
+        self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-recipe.tar.gz',
                                  'ARCHIVER_MODE[recipe] = "1"\n')
 
     def test_archiver_mode_diff(self):
@@ -186,7 +186,7 @@
         Exclusions controlled by `ARCHIVER_MODE[diff-exclude]` are not yet tested.
         """
 
-        self._test_archiver_mode('patched', 'selftest-ed-1.14.1-r0-diff.gz',
+        self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-diff.gz',
                                  'ARCHIVER_MODE[diff] = "1"\n')
 
     def test_archiver_mode_dumpdata(self):
@@ -194,7 +194,7 @@
         Test that the archiver works with `ARCHIVER_MODE[dumpdata] = "1"`.
         """
 
-        self._test_archiver_mode('patched', 'selftest-ed-1.14.1-r0-showdata.dump',
+        self._test_archiver_mode('patched', 'selftest-ed-native-1.14.1-r0-showdata.dump',
                                  'ARCHIVER_MODE[dumpdata] = "1"\n')
 
     def test_archiver_mode_mirror(self):
@@ -255,3 +255,57 @@
             glob_str = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name)
             glob_result = glob.glob(glob_str)
             self.assertTrue(glob_result, 'Missing archive file %s' % (target_file_name))
+
+    def test_archiver_mode_mirror_gitsm(self):
+        """
+        Test that the archiver correctly handles git submodules with
+        `ARCHIVER_MODE[src] = "mirror"`.
+        """
+        features = 'INHERIT += "archiver"\n'
+        features += 'ARCHIVER_MODE[src] = "mirror"\n'
+        features += 'ARCHIVER_MODE[mirror] = "combined"\n'
+        features += 'BB_GENERATE_MIRROR_TARBALLS = "1"\n'
+        features += 'COPYLEFT_LICENSE_INCLUDE = "*"\n'
+        self.write_config(features)
+
+        bitbake('-c clean git-submodule-test')
+        bitbake('-c deploy_archives -f git-submodule-test')
+
+        bb_vars = get_bb_vars(['DEPLOY_DIR_SRC'])
+        for target_file_name in [
+            'git2_git.yoctoproject.org.git-submodule-test.tar.gz',
+            'git2_git.yoctoproject.org.bitbake-gitsm-test1.tar.gz',
+            'git2_git.yoctoproject.org.bitbake-gitsm-test2.tar.gz',
+            'git2_git.openembedded.org.bitbake.tar.gz'
+        ]:
+            target_path = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name)
+            self.assertTrue(os.path.exists(target_path))
+
+    def test_archiver_mode_mirror_gitsm_shallow(self):
+        """
+        Test that the archiver correctly handles git submodules with
+        `ARCHIVER_MODE[src] = "mirror"`.
+        """
+        features = 'INHERIT += "archiver"\n'
+        features += 'ARCHIVER_MODE[src] = "mirror"\n'
+        features += 'ARCHIVER_MODE[mirror] = "combined"\n'
+        features += 'BB_GENERATE_MIRROR_TARBALLS = "1"\n'
+        features += 'COPYLEFT_LICENSE_INCLUDE = "*"\n'
+        features += 'BB_GIT_SHALLOW = "1"\n'
+        features += 'BB_GENERATE_SHALLOW_TARBALLS = "1"\n'
+        features += 'DL_DIR = "${TOPDIR}/downloads-shallow"\n'
+        self.write_config(features)
+
+        bitbake('-c clean git-submodule-test')
+        bitbake('-c deploy_archives -f git-submodule-test')
+
+        bb_vars = get_bb_vars(['DEPLOY_DIR_SRC'])
+        for target_file_name in [
+            'gitsmshallow_git.yoctoproject.org.git-submodule-test_a2885dd-1_master.tar.gz',
+            'gitsmshallow_git.yoctoproject.org.bitbake-gitsm-test1_bare_120f4c7-1.tar.gz',
+            'gitsmshallow_git.yoctoproject.org.bitbake-gitsm-test2_bare_f66699e-1.tar.gz',
+            'gitsmshallow_git.openembedded.org.bitbake_bare_52a144a-1.tar.gz',
+            'gitsmshallow_git.openembedded.org.bitbake_bare_c39b997-1.tar.gz'
+        ]:
+            target_path = os.path.join(bb_vars['DEPLOY_DIR_SRC'], 'mirror', target_file_name)
+            self.assertTrue(os.path.exists(target_path))
diff --git a/poky/meta/lib/oeqa/selftest/cases/wic.py b/poky/meta/lib/oeqa/selftest/cases/wic.py
index 9e7be61..8b58285 100644
--- a/poky/meta/lib/oeqa/selftest/cases/wic.py
+++ b/poky/meta/lib/oeqa/selftest/cases/wic.py
@@ -908,6 +908,21 @@
             p, _ = self._get_wic_partitions(tempf.name, ignore_status=True)
             self.assertNotEqual(p.status, 0, "wic exited successfully when an error was expected:\n%s" % p.output)
 
+    def test_extra_space(self):
+        native_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "wic-tools")
+
+        with NamedTemporaryFile("w", suffix=".wks") as tempf:
+            tempf.write("bootloader --ptable gpt\n" \
+                        "part /     --source rootfs --ondisk hda --extra-space 200M --fstype=ext4\n")
+            tempf.flush()
+
+            _, partlns = self._get_wic_partitions(tempf.name, native_sysroot)
+            self.assertEqual(len(partlns), 1)
+            size = partlns[0].split(':')[3]
+            self.assertRegex(size, r'^[0-9]+kiB$')
+            size = int(size[:-3])
+            self.assertGreaterEqual(size, 204800)
+
     @only_for_arch(['i586', 'i686', 'x86_64'])
     def test_rawcopy_plugin_qemu(self):
         """Test rawcopy plugin in qemu"""
diff --git a/poky/meta/recipes-bsp/pciutils/pciutils_3.6.4.bb b/poky/meta/recipes-bsp/pciutils/pciutils_3.7.0.bb
similarity index 92%
rename from poky/meta/recipes-bsp/pciutils/pciutils_3.6.4.bb
rename to poky/meta/recipes-bsp/pciutils/pciutils_3.7.0.bb
index 034bb63..4f0edc0 100644
--- a/poky/meta/recipes-bsp/pciutils/pciutils_3.6.4.bb
+++ b/poky/meta/recipes-bsp/pciutils/pciutils_3.7.0.bb
@@ -11,8 +11,7 @@
 SRC_URI = "${KERNELORG_MIRROR}/software/utils/pciutils/pciutils-${PV}.tar.xz \
            file://configure.patch"
 
-SRC_URI[md5sum] = "4343b37e19f319ce8f3d59c30031790e"
-SRC_URI[sha256sum] = "f67ff732976e2db2a5ccdf3960020796526ba6b05f6b1cdd24b7b206af706055"
+SRC_URI[sha256sum] = "9d40b97be8b6a2cdf96aead5a61881d1f7e4e0da9544a9bac4fba1ae9dcd40eb"
 
 inherit multilib_header pkgconfig
 
diff --git a/poky/meta/recipes-bsp/u-boot/u-boot.inc b/poky/meta/recipes-bsp/u-boot/u-boot.inc
index 6fa2d08..f6a68da 100644
--- a/poky/meta/recipes-bsp/u-boot/u-boot.inc
+++ b/poky/meta/recipes-bsp/u-boot/u-boot.inc
@@ -81,7 +81,23 @@
     return sources_list
 
 do_configure () {
-    if [ -z "${UBOOT_CONFIG}" ]; then
+    if [ -n "${UBOOT_CONFIG}" ]; then
+        unset i j
+        for config in ${UBOOT_MACHINE}; do
+            i=$(expr $i + 1);
+            for type in ${UBOOT_CONFIG}; do
+                j=$(expr $j + 1);
+                if [ $j -eq $i ]; then
+                    oe_runmake -C ${S} O=${B}/${config} ${config}
+                    merge_config.sh -m -O ${B}/${config} ${B}/${config}/.config ${@" ".join(find_cfgs(d))}
+                    oe_runmake -C ${S} O=${B}/${config} oldconfig
+                fi
+            done
+            unset j
+        done
+        unset i
+        DEVTOOL_DISABLE_MENUCONFIG=true
+    else
         if [ -n "${UBOOT_MACHINE}" ]; then
             oe_runmake -C ${S} O=${B} ${UBOOT_MACHINE}
         else
@@ -89,8 +105,6 @@
         fi
         merge_config.sh -m .config ${@" ".join(find_cfgs(d))}
         cml1_do_configure
-    else
-        DEVTOOL_DISABLE_MENUCONFIG=true
     fi
 }
 
@@ -118,7 +132,6 @@
                 j=$(expr $j + 1);
                 if [ $j -eq $i ]
                 then
-                    oe_runmake -C ${S} O=${B}/${config} ${config}
                     oe_runmake -C ${S} O=${B}/${config} ${UBOOT_MAKE_TARGET}
                     for binary in ${UBOOT_BINARIES}; do
                         k=$(expr $k + 1);
diff --git a/poky/meta/recipes-bsp/usbutils/usbutils_012.bb b/poky/meta/recipes-bsp/usbutils/usbutils_012.bb
index b670fa4..28031e7 100644
--- a/poky/meta/recipes-bsp/usbutils/usbutils_012.bb
+++ b/poky/meta/recipes-bsp/usbutils/usbutils_012.bb
@@ -15,7 +15,7 @@
 SRC_URI[md5sum] = "7484445cbcf04b3eacac892fe58f8d9f"
 SRC_URI[sha256sum] = "ae2e10aad530d95839b6f4d46cd41715eae6f0f1789310d793e9be21b3e7ae20"
 
-inherit autotools pkgconfig features_check update-alternatives
+inherit autotools pkgconfig update-alternatives
 
 ALTERNATIVE_${PN} = "lsusb"
 ALTERNATIVE_PRIORITY = "100"
diff --git a/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb b/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb
index 2b0c711..35d0c3e 100644
--- a/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb
+++ b/poky/meta/recipes-connectivity/avahi/avahi_0.8.bb
@@ -144,6 +144,7 @@
 
 RDEPENDS_${PN}-dev = "avahi-daemon (= ${EXTENDPKGV}) libavahi-core (= ${EXTENDPKGV})"
 RDEPENDS_${PN}-dev += "${@["", " libavahi-client (= ${EXTENDPKGV})"][bb.utils.contains('PACKAGECONFIG', 'dbus', 1, 0, d)]}"
+RDEPENDS_${PN}-dnsconfd = "${PN}-daemon"
 
 RRECOMMENDS_avahi-daemon_append_libc-glibc = " libnss-mdns"
 
diff --git a/poky/meta/recipes-connectivity/bluez5/bluez5.inc b/poky/meta/recipes-connectivity/bluez5/bluez5.inc
index 150d909..eee7a53 100644
--- a/poky/meta/recipes-connectivity/bluez5/bluez5.inc
+++ b/poky/meta/recipes-connectivity/bluez5/bluez5.inc
@@ -57,7 +57,7 @@
 
 CVE_PRODUCT = "bluez"
 
-inherit autotools pkgconfig systemd update-rc.d features_check ptest gobject-introspection-data
+inherit autotools pkgconfig systemd update-rc.d ptest gobject-introspection-data
 
 EXTRA_OECONF = "\
   --enable-test \
diff --git a/poky/meta/recipes-connectivity/iproute2/iproute2/0001-devlink.c-add-missing-include.patch b/poky/meta/recipes-connectivity/iproute2/iproute2/0001-devlink.c-add-missing-include.patch
new file mode 100644
index 0000000..f9580b7
--- /dev/null
+++ b/poky/meta/recipes-connectivity/iproute2/iproute2/0001-devlink.c-add-missing-include.patch
@@ -0,0 +1,23 @@
+From 5df629d825df4ccc4283228bc0739da126326072 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex.kanavin@gmail.com>
+Date: Sat, 6 Jun 2020 18:00:13 +0000
+Subject: [PATCH] devlink.c: add missing include
+
+Upstream-Status: Pending
+Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
+---
+ devlink/devlink.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/devlink/devlink.c b/devlink/devlink.c
+index 16602ab..c278e6d 100644
+--- a/devlink/devlink.c
++++ b/devlink/devlink.c
+@@ -26,6 +26,7 @@
+ #include <libmnl/libmnl.h>
+ #include <netinet/ether.h>
+ #include <sys/types.h>
++#include <signal.h>
+ 
+ #include "SNAPSHOT.h"
+ #include "list.h"
diff --git a/poky/meta/recipes-connectivity/iproute2/iproute2_5.6.0.bb b/poky/meta/recipes-connectivity/iproute2/iproute2_5.7.0.bb
similarity index 61%
rename from poky/meta/recipes-connectivity/iproute2/iproute2_5.6.0.bb
rename to poky/meta/recipes-connectivity/iproute2/iproute2_5.7.0.bb
index 9ab9053..276afea 100644
--- a/poky/meta/recipes-connectivity/iproute2/iproute2_5.6.0.bb
+++ b/poky/meta/recipes-connectivity/iproute2/iproute2_5.7.0.bb
@@ -2,10 +2,10 @@
 
 SRC_URI = "${KERNELORG_MIRROR}/linux/utils/net/${BPN}/${BP}.tar.xz \
            file://0001-libc-compat.h-add-musl-workaround.patch \
-          "
+           file://0001-devlink.c-add-missing-include.patch \
+           "
 
-SRC_URI[md5sum] = "9da0c352707c34b8b1fec3bf42fcfd09"
-SRC_URI[sha256sum] = "1b5b0e25ce6e23da7526ea1da044e814ad85ba761b10dd29c2b027c056b04692"
+SRC_URI[sha256sum] = "725dc7ba94aae54c6f8d4223ca055d9fb4fe89d6994b1c03bfb4411c4dd10f21"
 
 # CFLAGS are computed in Makefile and reference CCOPTS
 #
diff --git a/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb b/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb
index 3e92427..2936e89 100644
--- a/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb
+++ b/poky/meta/recipes-connectivity/wpa-supplicant/wpa-supplicant_2.9.bb
@@ -15,7 +15,7 @@
 
 inherit pkgconfig systemd
 
-SYSTEMD_SERVICE_${PN} = "wpa_supplicant.service wpa_supplicant-nl80211@.service wpa_supplicant-wired@.service"
+SYSTEMD_SERVICE_${PN} = "wpa_supplicant.service"
 SYSTEMD_AUTO_ENABLE = "disable"
 
 SRC_URI = "http://w1.fi/releases/wpa_supplicant-${PV}.tar.gz  \
@@ -37,13 +37,13 @@
 PACKAGES_prepend = "wpa-supplicant-passphrase wpa-supplicant-cli "
 FILES_wpa-supplicant-passphrase = "${bindir}/wpa_passphrase"
 FILES_wpa-supplicant-cli = "${sbindir}/wpa_cli"
-FILES_${PN} += "${datadir}/dbus-1/system-services/*"
+FILES_${PN} += "${datadir}/dbus-1/system-services/* ${systemd_system_unitdir}/*"
 CONFFILES_${PN} += "${sysconfdir}/wpa_supplicant.conf"
 
 do_configure () {
 	${MAKE} -C wpa_supplicant clean
 	install -m 0755 ${WORKDIR}/defconfig wpa_supplicant/.config
-	
+
 	if echo "${PACKAGECONFIG}" | grep -qw "openssl"; then
         	ssl=openssl
 	elif echo "${PACKAGECONFIG}" | grep -qw "gnutls"; then
diff --git a/poky/meta/recipes-core/glib-2.0/glib.inc b/poky/meta/recipes-core/glib-2.0/glib.inc
index fb84db8..a0055d8 100644
--- a/poky/meta/recipes-core/glib-2.0/glib.inc
+++ b/poky/meta/recipes-core/glib-2.0/glib.inc
@@ -28,7 +28,7 @@
 
 LEAD_SONAME = "libglib-2.0.*"
 
-inherit meson gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion gio-module-cache manpages features_check
+inherit meson gettext gtk-doc pkgconfig ptest-gnome upstream-version-is-even bash-completion gio-module-cache manpages
 
 DEPENDS_append_class-target = "${@' gtk-doc' if d.getVar('GTKDOC_ENABLED') == 'True' else ''}"
 
diff --git a/poky/meta/recipes-core/glib-networking/glib-networking_2.64.3.bb b/poky/meta/recipes-core/glib-networking/glib-networking_2.64.3.bb
index a79e0e4..c34ae50 100644
--- a/poky/meta/recipes-core/glib-networking/glib-networking_2.64.3.bb
+++ b/poky/meta/recipes-core/glib-networking/glib-networking_2.64.3.bb
@@ -31,4 +31,4 @@
 FILES_${PN}-dev += "${libdir}/gio/modules/libgio*.la"
 FILES_${PN}-staticdev += "${libdir}/gio/modules/libgio*.a"
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-core/glibc/glibc-package.inc b/poky/meta/recipes-core/glibc/glibc-package.inc
index ff25fd4..5f1ab60 100644
--- a/poky/meta/recipes-core/glibc/glibc-package.inc
+++ b/poky/meta/recipes-core/glibc/glibc-package.inc
@@ -23,9 +23,9 @@
 libc_baselibs_append = " ${@oe.utils.conditional('ARCH_DYNAMIC_LOADER', '', '', '${root_prefix}/lib/${ARCH_DYNAMIC_LOADER}', d)}"
 INSANE_SKIP_${PN}_append_aarch64 = " libdir"
 
-FILES_${PN} = "${libc_baselibs} ${libexecdir}/*"
+FILES_${PN} = "${libc_baselibs} ${libexecdir}/* ${sysconfdir}/ld.so.conf"
 RRECOMMENDS_${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'ldconfig', '${MLPREFIX}ldconfig', '', d)}"
-FILES_ldconfig = "${base_sbindir}/ldconfig ${sysconfdir}/ld.so.conf"
+FILES_ldconfig = "${base_sbindir}/ldconfig"
 FILES_ldd = "${bindir}/ldd"
 FILES_libsegfault = "${base_libdir}/libSegFault*"
 FILES_libcidn = "${base_libdir}/libcidn-*.so ${base_libdir}/libcidn.so.*"
diff --git a/poky/meta/recipes-core/glibc/glibc.inc b/poky/meta/recipes-core/glibc/glibc.inc
index 23a6ca9..d2f02ad 100644
--- a/poky/meta/recipes-core/glibc/glibc.inc
+++ b/poky/meta/recipes-core/glibc/glibc.inc
@@ -5,7 +5,7 @@
 
 PROVIDES = "virtual/libc"
 PROVIDES += "virtual/libintl virtual/libiconv"
-inherit autotools texinfo features_check systemd
+inherit autotools texinfo systemd
 
 LEAD_SONAME = "libc.so"
 
diff --git a/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs b/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
index 748c939..ee24e82 100644
--- a/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
+++ b/poky/meta/recipes-core/initrdscripts/initramfs-framework/rootfs
@@ -13,7 +13,7 @@
 	C=0
 	delay=${bootparam_rootdelay:-1}
 	timeout=${bootparam_roottimeout:-5}
-	while [ ! -d $ROOTFS_DIR/dev ]; do
+	while ! mountpoint -q $ROOTFS_DIR; do
 		if [ $(( $C * $delay )) -gt $timeout ]; then
 			fatal "root '$bootparam_root' doesn't exist or does not contain a /dev."
 		fi
@@ -61,7 +61,7 @@
 					flags="$flags -t$bootparam_rootfstype"
 				fi
 				mount $flags $bootparam_root $ROOTFS_DIR
-				if [ -d $ROOTFS_DIR/dev ]; then
+				if mountpoint -q $ROOTFS_DIR; then
 					break
 				else
 					# It is unlikely to change, but keep trying anyway.
diff --git a/poky/meta/recipes-core/initscripts/init-system-helpers_1.57.bb b/poky/meta/recipes-core/initscripts/init-system-helpers_1.57.bb
index 46f5bbf..e41ac21 100644
--- a/poky/meta/recipes-core/initscripts/init-system-helpers_1.57.bb
+++ b/poky/meta/recipes-core/initscripts/init-system-helpers_1.57.bb
@@ -17,7 +17,7 @@
 LIC_FILES_CHKSUM = "file://debian/copyright;md5=ee2b1830fcfead84d07bc060ec43e072"
 
 SRCREV = "760c625ec0e1ffebec2e391d891d389da0f65726"
-SRC_URI = "git://salsa.debian.org/debian/init-system-helpers.git"
+SRC_URI = "git://salsa.debian.org/debian/init-system-helpers.git;protocol=https"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-core/libxml/libxml2_2.9.10.bb b/poky/meta/recipes-core/libxml/libxml2_2.9.10.bb
index 097aceb..d11b083 100644
--- a/poky/meta/recipes-core/libxml/libxml2_2.9.10.bb
+++ b/poky/meta/recipes-core/libxml/libxml2_2.9.10.bb
@@ -37,7 +37,7 @@
 PACKAGECONFIG[python] = "--with-python=${PYTHON},--without-python,python3"
 PACKAGECONFIG[ipv6] = "--enable-ipv6,--disable-ipv6,"
 
-inherit autotools pkgconfig binconfig-disabled ptest features_check
+inherit autotools pkgconfig binconfig-disabled ptest
 
 inherit ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3native', '', d)}
 
diff --git a/poky/meta/recipes-core/meta/build-sysroots.bb b/poky/meta/recipes-core/meta/build-sysroots.bb
index 7a712e2..ad22a75 100644
--- a/poky/meta/recipes-core/meta/build-sysroots.bb
+++ b/poky/meta/recipes-core/meta/build-sysroots.bb
@@ -20,6 +20,8 @@
 python do_build_native_sysroot () {
     targetsysroot = d.getVar("STANDALONE_SYSROOT")
     nativesysroot = d.getVar("STANDALONE_SYSROOT_NATIVE")
+    import os
+    os.environ['PATH'] = "%s/bin:%s/usr/bin:%s" % (nativesysroot, nativesysroot, os.environ['PATH'])
     staging_populate_sysroot_dir(targetsysroot, nativesysroot, True, d)
 }
 do_build_native_sysroot[cleandirs] = "${STANDALONE_SYSROOT_NATIVE}"
@@ -29,6 +31,8 @@
 python do_build_target_sysroot () {
     targetsysroot = d.getVar("STANDALONE_SYSROOT")
     nativesysroot = d.getVar("STANDALONE_SYSROOT_NATIVE")
+    import os
+    os.environ['PATH'] = "%s/bin:%s/usr/bin:%s" % (nativesysroot, nativesysroot, os.environ['PATH'])
     staging_populate_sysroot_dir(targetsysroot, nativesysroot, False, d)
 }
 do_build_target_sysroot[cleandirs] = "${STANDALONE_SYSROOT}"
diff --git a/poky/meta/recipes-core/ovmf/ovmf_git.bb b/poky/meta/recipes-core/ovmf/ovmf_git.bb
index c089627..91c1b6b 100644
--- a/poky/meta/recipes-core/ovmf/ovmf_git.bb
+++ b/poky/meta/recipes-core/ovmf/ovmf_git.bb
@@ -19,8 +19,8 @@
            file://0001-ovmf-Update-to-latest.patch \
         "
 
-PV = "edk2-stable202002"
-SRCREV = "4c0f6e349d32cf27a7104ddd3e729d6ebc88ea70"
+PV = "edk2-stable202005"
+SRCREV = "ca407c7246bf405da6d9b1b9d93e5e7f17b4b1f9"
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>edk2-stable.*)"
 
 inherit deploy
diff --git a/poky/meta/recipes-devtools/bison/bison_3.6.2.bb b/poky/meta/recipes-devtools/bison/bison_3.6.3.bb
similarity index 94%
rename from poky/meta/recipes-devtools/bison/bison_3.6.2.bb
rename to poky/meta/recipes-devtools/bison/bison_3.6.3.bb
index 2ec9381..1d0f599 100644
--- a/poky/meta/recipes-devtools/bison/bison_3.6.2.bb
+++ b/poky/meta/recipes-devtools/bison/bison_3.6.3.bb
@@ -13,7 +13,7 @@
            file://add-with-bisonlocaledir.patch \
            file://0001-bison-fix-the-parallel-build.patch \
            "
-SRC_URI[sha256sum] = "4a164b5cc971b896ce976bf4b624fab7279e0729cf983a5135df7e4df0970f6e"
+SRC_URI[sha256sum] = "06db793651de9dd5f0a85a6fe4bdbca413c0806bf2432377523da96ca0b4b73d"
 
 # No point in hardcoding path to m4, just use PATH
 EXTRA_OECONF += "M4=m4"
diff --git a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.6.1.bb b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.6.1.bb
index 885d79d..29f14d9 100644
--- a/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.6.1.bb
+++ b/poky/meta/recipes-devtools/btrfs-tools/btrfs-tools_5.6.1.bb
@@ -49,4 +49,4 @@
     fi
 }
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.15.10.bb b/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.15.11.bb
similarity index 95%
rename from poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.15.10.bb
rename to poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.15.11.bb
index 13bfa21..969894e 100644
--- a/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.15.10.bb
+++ b/poky/meta/recipes-devtools/createrepo-c/createrepo-c_0.15.11.bb
@@ -8,7 +8,7 @@
            file://0001-Do-not-set-PYTHON_INSTALL_DIR-by-running-python.patch \
            "
 
-SRCREV = "9f3f3be6359d8f9b6b269e28d9ae1f279cc5f3aa"
+SRCREV = "ea3bcf302c1a071040e1a8b6ad77861c12a2ae99"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-devtools/dosfstools/dosfstools_4.1.bb b/poky/meta/recipes-devtools/dosfstools/dosfstools_4.1.bb
index 23b8836..97ce449 100644
--- a/poky/meta/recipes-devtools/dosfstools/dosfstools_4.1.bb
+++ b/poky/meta/recipes-devtools/dosfstools/dosfstools_4.1.bb
@@ -22,7 +22,7 @@
 
 CFLAGS += "-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
 
 # Add codepage437 to avoid error from `dosfsck -l`
 RRECOMMENDS_${PN}_append_libc-glibc = " glibc-gconv-ibm437"
diff --git a/poky/meta/recipes-devtools/dpkg/dpkg/tweak-options-require-tar-1.27.patch b/poky/meta/recipes-devtools/dpkg/dpkg/tweak-options-require-tar-1.27.patch
deleted file mode 100644
index ac59dce..0000000
--- a/poky/meta/recipes-devtools/dpkg/dpkg/tweak-options-require-tar-1.27.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 48bcc51ce042d1b779b34fae454c52b15bdd9cae Mon Sep 17 00:00:00 2001
-From: Kai Kang <kai.kang@windriver.com>
-Date: Fri, 22 Feb 2019 01:47:16 -0500
-Subject: [PATCH] dpkg: 1.18.25 -> 1.19.4
-
-GNU tar >= 1.27 is required for --owner=NAME:ID and --group=NAME:ID. And fails
-to build .deb packages with error:
-
-| dpkg-deb: building package 'linux-libc-headers-dbg' in '.../tmp/work/i586-poky-linux/linux-libc-headers/4.19-r0/deploy-debs/i586/linux-libc-headers-dbg_ 4.19-r0.0_i386.deb'.
-| tar: root\:0: Invalid owner
-| tar: Error is not recoverable: exiting now
-| dpkg-deb: error: tar -cf subprocess returned error exit status 2
-
-Tweak tar options in dpkg-deb source code to make it work on old machines.
-
-Upstream-Status: Inappropriate [cross build specific]
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-
----
- dpkg-deb/build.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/dpkg-deb/build.c b/dpkg-deb/build.c
-index 8436839..67c0c20 100644
---- a/dpkg-deb/build.c
-+++ b/dpkg-deb/build.c
-@@ -462,7 +462,7 @@ tarball_pack(const char *dir, filenames_feed_func *tar_filenames_feeder,
-     if (options->mode)
-       command_add_args(&cmd, "--mode", options->mode, NULL);
-     if (options->root_owner_group)
--      command_add_args(&cmd, "--owner", "root:0", "--group", "root:0", NULL);
-+      command_add_args(&cmd, "--owner", "root", "--group", "root", NULL);
-     command_add_args(&cmd, "--null", "--no-unquote", "--no-recursion",
-                            "-T", "-", NULL);
-     command_exec(&cmd);
diff --git a/poky/meta/recipes-devtools/dpkg/dpkg_1.20.0.bb b/poky/meta/recipes-devtools/dpkg/dpkg_1.20.0.bb
index 1e822bb..d539c57 100644
--- a/poky/meta/recipes-devtools/dpkg/dpkg_1.20.0.bb
+++ b/poky/meta/recipes-devtools/dpkg/dpkg_1.20.0.bb
@@ -15,9 +15,6 @@
            file://pager.patch \
            file://0001-Add-support-for-riscv32-CPU.patch \
            "
-SRC_URI_append_class-native = " \
-                                file://tweak-options-require-tar-1.27.patch \
-"
 
 SRC_URI[md5sum] = "f88f077236a3ff3decae3b25c989893d"
 SRC_URI[sha256sum] = "b633cc2b0e030efb61e11029d8a3fb1123f719864c9992da2e52b471c96d0900"
diff --git a/poky/meta/recipes-devtools/git/git_2.26.2.bb b/poky/meta/recipes-devtools/git/git_2.26.2.bb
deleted file mode 100644
index ae7aa26..0000000
--- a/poky/meta/recipes-devtools/git/git_2.26.2.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-require git.inc
-
-EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
-                 ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
-                 "
-EXTRA_OEMAKE += "NO_GETTEXT=1"
-
-SRC_URI[tarball.sha256sum] = "e1c17777528f55696815ef33587b1d20f5eec246669f3b839d15dbfffad9c121"
-SRC_URI[manpages.sha256sum] = "b3c6cfc980f3c593d0cd0c63e0c97d6f1cafe7b72321fc3a94948758b9529c5b"
-
diff --git a/poky/meta/recipes-devtools/git/git_2.27.0.bb b/poky/meta/recipes-devtools/git/git_2.27.0.bb
new file mode 100644
index 0000000..8022659
--- /dev/null
+++ b/poky/meta/recipes-devtools/git/git_2.27.0.bb
@@ -0,0 +1,10 @@
+require git.inc
+
+EXTRA_OECONF += "ac_cv_snprintf_returns_bogus=no \
+                 ac_cv_fread_reads_directories=${ac_cv_fread_reads_directories=yes} \
+                 "
+EXTRA_OEMAKE += "NO_GETTEXT=1"
+
+SRC_URI[tarball.sha256sum] = "77ded85cbe42b1ffdc2578b460a1ef5d23bcbc6683eabcafbb0d394dffe2e787"
+SRC_URI[manpages.sha256sum] = "414e4b17133e54d846f6bfa2479f9757c50e16c013eb76167a492ae5409b8947"
+
diff --git a/poky/meta/recipes-devtools/go/go-1.14.inc b/poky/meta/recipes-devtools/go/go-1.14.inc
index d729b65..1050116 100644
--- a/poky/meta/recipes-devtools/go/go-1.14.inc
+++ b/poky/meta/recipes-devtools/go/go-1.14.inc
@@ -1,7 +1,7 @@
 require go-common.inc
 
 GO_BASEVERSION = "1.14"
-GO_MINOR = ".3"
+GO_MINOR = ".4"
 PV .= "${GO_MINOR}"
 FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:"
 
@@ -18,4 +18,4 @@
     file://0008-use-GOBUILDMODE-to-set-buildmode.patch \
 "
 SRC_URI_append_libc-musl = " file://0009-ld-replace-glibc-dynamic-linker-with-musl.patch"
-SRC_URI[main.sha256sum] = "93023778d4d1797b7bc6a53e86c3a9b150c923953225f8a48a2d5fabc971af56"
+SRC_URI[main.sha256sum] = "7011af3bbc2ac108d1b82ea8abb87b2e63f78844f0259be20cde4d42c5c40584"
diff --git a/poky/meta/recipes-devtools/librepo/librepo_1.11.3.bb b/poky/meta/recipes-devtools/librepo/librepo_1.12.0.bb
similarity index 93%
rename from poky/meta/recipes-devtools/librepo/librepo_1.11.3.bb
rename to poky/meta/recipes-devtools/librepo/librepo_1.12.0.bb
index 3e74531..2d9cac8 100644
--- a/poky/meta/recipes-devtools/librepo/librepo_1.11.3.bb
+++ b/poky/meta/recipes-devtools/librepo/librepo_1.12.0.bb
@@ -8,7 +8,7 @@
            file://0004-Set-gpgme-variables-with-pkg-config-not-with-cmake-m.patch \
            "
 
-SRCREV = "59b3f76ca6e79786a213cda72ecafa232d30553f"
+SRCREV = "9c173f1110bb30f4ae842a8e3532b275966c2d83"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-devtools/mtools/mtools_4.0.24.bb b/poky/meta/recipes-devtools/mtools/mtools_4.0.24.bb
index d7cc72d..f11cdad 100644
--- a/poky/meta/recipes-devtools/mtools/mtools_4.0.24.bb
+++ b/poky/meta/recipes-devtools/mtools/mtools_4.0.24.bb
@@ -35,7 +35,7 @@
 
 SRC_URI_append_class-native = " file://disable-hardcoded-configs.patch"
 
-inherit autotools texinfo features_check
+inherit autotools texinfo
 
 EXTRA_OECONF = "--without-x"
 
diff --git a/poky/meta/recipes-devtools/pkgconf/pkgconf_1.6.3.bb b/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.3.bb
similarity index 94%
rename from poky/meta/recipes-devtools/pkgconf/pkgconf_1.6.3.bb
rename to poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.3.bb
index 732ca2a..12496c3 100644
--- a/poky/meta/recipes-devtools/pkgconf/pkgconf_1.6.3.bb
+++ b/poky/meta/recipes-devtools/pkgconf/pkgconf_1.7.3.bb
@@ -20,8 +20,7 @@
     file://pkg-config-native.in \
     file://pkg-config-esdk.in \
 "
-SRC_URI[md5sum] = "f93fb1be95a5cb62e43c219c82b5791a"
-SRC_URI[sha256sum] = "61f0b31b0d5ea0e862b454a80c170f57bad47879c0c42bd8de89200ff62ea210"
+SRC_URI[sha256sum] = "b846aea51cf696c3392a0ae58bef93e2e72f8e7073ca6ad1ed8b01c85871f9c0"
 
 inherit autotools
 
diff --git a/poky/meta/recipes-devtools/python-numpy/python-numpy.inc b/poky/meta/recipes-devtools/python-numpy/python-numpy.inc
index 6a437e7..75309e3 100644
--- a/poky/meta/recipes-devtools/python-numpy/python-numpy.inc
+++ b/poky/meta/recipes-devtools/python-numpy/python-numpy.inc
@@ -9,8 +9,7 @@
            file://0001-Don-t-search-usr-and-so-on-for-libraries-by-default-.patch \
            file://0001-convert-shebang-from-python-to-python3.patch \
            "
-SRC_URI[md5sum] = "70e6c294f8dffa8d630eda1b0d42ae4d"
-SRC_URI[sha256sum] = "e0781ec6627e85f2a618478ee278893343fb8b40577b4c74b2ec15c7a5b8f698"
+SRC_URI[sha256sum] = "2c095bd1c5290966cceee8b6ef5cd66f13cd0e9d6d0e8d6fc8961abd64a8e51f"
 
 UPSTREAM_CHECK_URI = "https://github.com/numpy/numpy/releases"
 UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.tar"
diff --git a/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.18.4.bb b/poky/meta/recipes-devtools/python-numpy/python3-numpy_1.18.5.bb
similarity index 100%
rename from poky/meta/recipes-devtools/python-numpy/python3-numpy_1.18.4.bb
rename to poky/meta/recipes-devtools/python-numpy/python3-numpy_1.18.5.bb
diff --git a/poky/meta/recipes-devtools/python/python-setuptools.inc b/poky/meta/recipes-devtools/python/python-setuptools.inc
index c91cca9..032d337 100644
--- a/poky/meta/recipes-devtools/python/python-setuptools.inc
+++ b/poky/meta/recipes-devtools/python/python-setuptools.inc
@@ -48,6 +48,12 @@
 # minimal distributions.
 PACKAGES =+ "${PYTHON_PN}-pkg-resources "
 FILES_${PYTHON_PN}-pkg-resources = "${PYTHON_SITEPACKAGES_DIR}/pkg_resources/*"
+RDEPENDS_${PYTHON_PN}-pkg-resources = "\
+  ${PYTHON_PN}-compression \
+  ${PYTHON_PN}-email \
+  ${PYTHON_PN}-plistlib \
+  ${PYTHON_PN}-pprint \
+"
 # Due to the way OE-Core implemented native recipes, the native class cannot
 # have a dependency on something that is not a recipe name. Work around that by
 # manually setting RPROVIDES.
diff --git a/poky/meta/recipes-devtools/python/python3-git_3.1.2.bb b/poky/meta/recipes-devtools/python/python3-git_3.1.3.bb
similarity index 87%
rename from poky/meta/recipes-devtools/python/python3-git_3.1.2.bb
rename to poky/meta/recipes-devtools/python/python3-git_3.1.3.bb
index 72280ec..064868d 100644
--- a/poky/meta/recipes-devtools/python/python3-git_3.1.2.bb
+++ b/poky/meta/recipes-devtools/python/python3-git_3.1.3.bb
@@ -12,8 +12,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[md5sum] = "2397bea2d7c36ef9f874ab6355abae59"
-SRC_URI[sha256sum] = "864a47472548f3ba716ca202e034c1900f197c0fb3a08f641c20c3cafd15ed94"
+SRC_URI[sha256sum] = "e107af4d873daed64648b4f4beb89f89f0cfbe3ef558fc7821ed2331c2f8da1a"
 
 DEPENDS += " ${PYTHON_PN}-gitdb"
 
diff --git a/poky/meta/recipes-devtools/python/python3-magic_0.4.18.bb b/poky/meta/recipes-devtools/python/python3-magic_0.4.18.bb
index be423ad..101b96d 100644
--- a/poky/meta/recipes-devtools/python/python3-magic_0.4.18.bb
+++ b/poky/meta/recipes-devtools/python/python3-magic_0.4.18.bb
@@ -14,6 +14,9 @@
 SRC_URI[md5sum] = "5edc6caa39cc62641850f6b1b6f284ba"
 SRC_URI[sha256sum] = "b757db2a5289ea3f1ced9e60f072965243ea43a2221430048fd8cacab17be0ce"
 
-RDEPENDS_${PN} += "file"
+RDEPENDS_${PN} += "file \
+                   ${PYTHON_PN}-ctypes \
+                   ${PYTHON_PN}-io \
+                   ${PYTHON_PN}-shell"
 
 BBCLASSEXTEND = "native"
diff --git a/poky/meta/recipes-devtools/qemu/qemu.inc b/poky/meta/recipes-devtools/qemu/qemu.inc
index 126e7d4..3e50069 100644
--- a/poky/meta/recipes-devtools/qemu/qemu.inc
+++ b/poky/meta/recipes-devtools/qemu/qemu.inc
@@ -38,6 +38,7 @@
 	   file://0001-qemu-Do-not-include-file-if-not-exists.patch \
            file://CVE-2020-11102.patch \
 	   file://CVE-2020-11869.patch \
+	   file://CVE-2020-13361.patch \
 	   "
 UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
 
diff --git a/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-13361.patch b/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-13361.patch
new file mode 100644
index 0000000..e0acc70
--- /dev/null
+++ b/poky/meta/recipes-devtools/qemu/qemu/CVE-2020-13361.patch
@@ -0,0 +1,61 @@
+From 369ff955a8497988d079c4e3fa1e93c2570c1c69 Mon Sep 17 00:00:00 2001
+From: Prasad J Pandit <pjp@fedoraproject.org>
+Date: Fri, 15 May 2020 01:36:08 +0530
+Subject: [PATCH] es1370: check total frame count against current frame
+
+A guest user may set channel frame count via es1370_write()
+such that, in es1370_transfer_audio(), total frame count
+'size' is lesser than the number of frames that are processed
+'cnt'.
+
+    int cnt = d->frame_cnt >> 16;
+    int size = d->frame_cnt & 0xffff;
+
+if (size < cnt), it results in incorrect calculations leading
+to OOB access issue(s). Add check to avoid it.
+
+Reported-by: Ren Ding <rding@gatech.edu>
+Reported-by: Hanqing Zhao <hanqing@gatech.edu>
+Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
+Message-id: 20200514200608.1744203-1-ppandit@redhat.com
+Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
+
+Upstream-Status: Backport [https://lists.gnu.org/archive/html/qemu-devel/2020-05/msg03983.html]
+CVE: CVE-2020-13361
+Signed-off-by: Chee Yang Lee <chee.yang.lee@intel.com>
+---
+ hw/audio/es1370.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/hw/audio/es1370.c b/hw/audio/es1370.c
+index 89c4dabcd44..5f8a83ff562 100644
+--- a/hw/audio/es1370.c
++++ b/hw/audio/es1370.c
+@@ -643,6 +643,9 @@ static void es1370_transfer_audio (ES1370State *s, struct chan *d, int loop_sel,
+     int csc_bytes = (csc + 1) << d->shift;
+     int cnt = d->frame_cnt >> 16;
+     int size = d->frame_cnt & 0xffff;
++    if (size < cnt) {
++        return;
++    }
+     int left = ((size - cnt + 1) << 2) + d->leftover;
+     int transferred = 0;
+     int temp = MIN (max, MIN (left, csc_bytes));
+@@ -651,7 +654,7 @@ static void es1370_transfer_audio (ES1370State *s, struct chan *d, int loop_sel,
+     addr += (cnt << 2) + d->leftover;
+ 
+     if (index == ADC_CHANNEL) {
+-        while (temp) {
++        while (temp > 0) {
+             int acquired, to_copy;
+ 
+             to_copy = MIN ((size_t) temp, sizeof (tmpbuf));
+@@ -669,7 +672,7 @@ static void es1370_transfer_audio (ES1370State *s, struct chan *d, int loop_sel,
+     else {
+         SWVoiceOut *voice = s->dac_voice[index];
+ 
+-        while (temp) {
++        while (temp > 0) {
+             int copied, to_copy;
+ 
+             to_copy = MIN ((size_t) temp, sizeof (tmpbuf));
diff --git a/poky/meta/recipes-devtools/qemu/qemu_4.2.0.bb b/poky/meta/recipes-devtools/qemu/qemu_4.2.0.bb
index a4018cc..9b09490 100644
--- a/poky/meta/recipes-devtools/qemu/qemu_4.2.0.bb
+++ b/poky/meta/recipes-devtools/qemu/qemu_4.2.0.bb
@@ -10,6 +10,11 @@
 
 RDEPENDS_${PN}_class-target += "bash"
 
+# Does not compile for -Og because that level does not clean up dead-code.
+# See lockable.h.
+#
+DEBUG_BUILD = "0"
+
 EXTRA_OECONF_append_class-target = " --target-list=${@get_qemu_target_list(d)}"
 EXTRA_OECONF_append_class-target_mipsarcho32 = "${@bb.utils.contains('BBEXTENDCURR', 'multilib', ' --disable-capstone', '', d)}"
 EXTRA_OECONF_append_class-nativesdk = " --target-list=${@get_qemu_target_list(d)}"
diff --git a/poky/meta/recipes-devtools/strace/strace_5.6.bb b/poky/meta/recipes-devtools/strace/strace_5.7.bb
similarity index 92%
rename from poky/meta/recipes-devtools/strace/strace_5.6.bb
rename to poky/meta/recipes-devtools/strace/strace_5.7.bb
index 53679cd..c184d03 100644
--- a/poky/meta/recipes-devtools/strace/strace_5.6.bb
+++ b/poky/meta/recipes-devtools/strace/strace_5.7.bb
@@ -15,8 +15,7 @@
            file://uintptr_t.patch \
            file://0001-strace-fix-reproducibilty-issues.patch \
            "
-SRC_URI[md5sum] = "f8e0394d4e537b3faadf0a72f5d1d17e"
-SRC_URI[sha256sum] = "189968eeae06ed9e20166ec55a830943c84374676a457c9fe010edc7541f1b01"
+SRC_URI[sha256sum] = "b284b59f9bcd95b9728cea5bd5c0edc5ebe360af73dc76fbf6334f11c777ccd8"
 
 inherit autotools ptest
 
diff --git a/poky/meta/recipes-devtools/subversion/subversion_1.13.0.bb b/poky/meta/recipes-devtools/subversion/subversion_1.14.0.bb
similarity index 95%
rename from poky/meta/recipes-devtools/subversion/subversion_1.13.0.bb
rename to poky/meta/recipes-devtools/subversion/subversion_1.14.0.bb
index 6879f12..b988415 100644
--- a/poky/meta/recipes-devtools/subversion/subversion_1.13.0.bb
+++ b/poky/meta/recipes-devtools/subversion/subversion_1.14.0.bb
@@ -13,10 +13,9 @@
            file://serfmacro.patch \
            "
 
-SRC_URI[md5sum] = "3004b4dae18bf45a0b6ea4ef8820064d"
-SRC_URI[sha256sum] = "bc50ce2c3faa7b1ae9103c432017df98dfd989c4239f9f8270bb3a314ed9e5bd"
+SRC_URI[sha256sum] = "6ba8e218f9f97a83a799e58a3c6da1221d034b18d9d8cbbcb6ec52ab11722102"
 
-inherit autotools pkgconfig gettext
+inherit autotools pkgconfig gettext python3native
 
 CVE_PRODUCT = "apache:subversion"
 
diff --git a/poky/meta/recipes-extended/acpica/acpica_20200430.bb b/poky/meta/recipes-extended/acpica/acpica_20200528.bb
similarity index 94%
rename from poky/meta/recipes-extended/acpica/acpica_20200430.bb
rename to poky/meta/recipes-extended/acpica/acpica_20200528.bb
index 478be7f..d68afd8 100644
--- a/poky/meta/recipes-extended/acpica/acpica_20200430.bb
+++ b/poky/meta/recipes-extended/acpica/acpica_20200528.bb
@@ -17,7 +17,7 @@
 DEPENDS = "m4-native flex-native bison-native"
 
 SRC_URI = "https://acpica.org/sites/acpica/files/acpica-unix-${PV}.tar.gz"
-SRC_URI[sha256sum] = "fb807f1dec31664f972af37d213abf72987afe33abf68c83051e298da35d297c"
+SRC_URI[sha256sum] = "e69f81c6924c8d30f9b9005bb002307f07b5a1538e13c909bea2f8a44e0d8610"
 
 UPSTREAM_CHECK_URI = "https://acpica.org/downloads"
 
diff --git a/poky/meta/recipes-extended/asciidoc/asciidoc_8.6.10.bb b/poky/meta/recipes-extended/asciidoc/asciidoc_9.0.0.bb
similarity index 80%
rename from poky/meta/recipes-extended/asciidoc/asciidoc_8.6.10.bb
rename to poky/meta/recipes-extended/asciidoc/asciidoc_9.0.0.bb
index 751bf0f..63e02ce 100644
--- a/poky/meta/recipes-extended/asciidoc/asciidoc_8.6.10.bb
+++ b/poky/meta/recipes-extended/asciidoc/asciidoc_9.0.0.bb
@@ -5,13 +5,12 @@
 HOMEPAGE = "http://asciidoc.org/"
 
 LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b \
-                    file://COPYRIGHT;md5=029ad5428ba5efa20176b396222d4069"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=4e5d1baf6f20559e3bec172226a47e4e \
+                    file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263 "
 
 SRC_URI = "git://github.com/asciidoc/asciidoc-py3;protocol=https \
            file://auto-catalogs.patch"
-SRCREV = "618f6e6f6b558ed1e5f2588cd60a5a6b4f881ca0"
-PV .= "+py3-git${SRCPV}"
+SRCREV = "c44cb22b0cb110b69e4909c93c1cc6e2be5470cc"
 
 DEPENDS = "libxml2-native libxslt-native docbook-xml-dtd4-native docbook-xsl-stylesheets-native"
 
diff --git a/poky/meta/recipes-extended/cups/cups.inc b/poky/meta/recipes-extended/cups/cups.inc
index e389d8a..1765944 100644
--- a/poky/meta/recipes-extended/cups/cups.inc
+++ b/poky/meta/recipes-extended/cups/cups.inc
@@ -29,7 +29,7 @@
 USERADD_PACKAGES = "${PN}"
 GROUPADD_PARAM_${PN} = "--system lpadmin"
 
-SYSTEMD_SERVICE_${PN} = "org.cups.cupsd.socket org.cups.cupsd.path org.cups.cupsd.service org.cups.cups-lpd.socket org.cups.cups-lpd@.service"
+SYSTEMD_SERVICE_${PN} = "org.cups.cupsd.socket org.cups.cupsd.path org.cups.cupsd.service org.cups.cups-lpd.socket"
 
 PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'avahi', '', d)} \
                    ${@bb.utils.filter('DISTRO_FEATURES', 'pam systemd', d)}"
diff --git a/poky/meta/recipes-extended/iptables/iptables_1.8.4.bb b/poky/meta/recipes-extended/iptables/iptables_1.8.5.bb
similarity index 96%
rename from poky/meta/recipes-extended/iptables/iptables_1.8.4.bb
rename to poky/meta/recipes-extended/iptables/iptables_1.8.5.bb
index cf1388c..fa1e5c2 100644
--- a/poky/meta/recipes-extended/iptables/iptables_1.8.4.bb
+++ b/poky/meta/recipes-extended/iptables/iptables_1.8.5.bb
@@ -16,8 +16,7 @@
            file://ip6tables.service \
            file://ip6tables.rules \
 "
-SRC_URI[md5sum] = "9b201107957fbf62709c3d8226239b0d"
-SRC_URI[sha256sum] = "993a3a5490a544c2cbf2ef15cf7e7ed21af1845baf228318d5c36ef8827e157c"
+SRC_URI[sha256sum] = "d457d74512e63aa3f50336e0597d4023c0e3c6845594d38532efb6ebcb294309"
 
 SYSTEMD_SERVICE_${PN} = "\
     iptables.service \
diff --git a/poky/meta/recipes-extended/libarchive/libarchive_3.4.2.bb b/poky/meta/recipes-extended/libarchive/libarchive_3.4.3.bb
similarity index 93%
rename from poky/meta/recipes-extended/libarchive/libarchive_3.4.2.bb
rename to poky/meta/recipes-extended/libarchive/libarchive_3.4.3.bb
index 0ab40fc..dbfc067 100644
--- a/poky/meta/recipes-extended/libarchive/libarchive_3.4.2.bb
+++ b/poky/meta/recipes-extended/libarchive/libarchive_3.4.3.bb
@@ -34,8 +34,7 @@
 
 SRC_URI = "http://libarchive.org/downloads/libarchive-${PV}.tar.gz"
 
-SRC_URI[md5sum] = "d953ed6b47694dadf0e6042f8f9ff451"
-SRC_URI[sha256sum] = "b60d58d12632ecf1e8fad7316dc82c6b9738a35625746b47ecdcaf4aed176176"
+SRC_URI[sha256sum] = "ee1e749213c108cb60d53147f18c31a73d6717d7e3d2481c157e1b34c881ea39"
 
 inherit autotools update-alternatives pkgconfig
 
diff --git a/poky/meta/recipes-extended/man-db/man-db_2.9.1.bb b/poky/meta/recipes-extended/man-db/man-db_2.9.2.bb
similarity index 92%
rename from poky/meta/recipes-extended/man-db/man-db_2.9.1.bb
rename to poky/meta/recipes-extended/man-db/man-db_2.9.2.bb
index 87149dc..53ebc85 100644
--- a/poky/meta/recipes-extended/man-db/man-db_2.9.1.bb
+++ b/poky/meta/recipes-extended/man-db/man-db_2.9.2.bb
@@ -7,8 +7,7 @@
 SRC_URI = "${SAVANNAH_NONGNU_MIRROR}/man-db/man-db-${PV}.tar.xz \
            file://99_mandb \
            file://man_db.conf-avoid-multilib-install-file-conflict.patch"
-SRC_URI[md5sum] = "593f4f0a26ab4f66f5b81cf6c0c7364c"
-SRC_URI[sha256sum] = "ba3d8afc5c09a7265a8dabfa0e7c1f4b3ab97df9abf1f6810faa8f301056c74f"
+SRC_URI[sha256sum] = "7b383f26c67525205f96a4a3bfb27993396992794adda6fe05ad565f369f047c"
 
 DEPENDS = "libpipeline gdbm groff-native base-passwd"
 RDEPENDS_${PN} += "base-passwd"
diff --git a/poky/meta/recipes-extended/mdadm/mdadm_4.1.bb b/poky/meta/recipes-extended/mdadm/mdadm_4.1.bb
index 40c5273..001d333 100644
--- a/poky/meta/recipes-extended/mdadm/mdadm_4.1.bb
+++ b/poky/meta/recipes-extended/mdadm/mdadm_4.1.bb
@@ -19,8 +19,8 @@
            file://0001-fix-gcc-8-format-truncation-warning.patch \
            file://debian-no-Werror.patch \
            file://0001-Revert-tests-wait-for-complete-rebuild-in-integrity-.patch \
-	   file://mdadm.init \
-	   file://0001-mdadm-add-option-y-for-use-syslog-to-recive-event-re.patch \
+           file://mdadm.init \
+           file://0001-mdadm-add-option-y-for-use-syslog-to-recive-event-re.patch \
            file://include_sysmacros.patch \
            file://0001-mdadm-skip-test-11spare-migration.patch \
            "
@@ -30,7 +30,7 @@
 
 inherit autotools-brokensep ptest systemd
 
-SYSTEMD_SERVICE_${PN} = "mdmonitor.service mdmon@.service"
+SYSTEMD_SERVICE_${PN} = "mdmonitor.service"
 SYSTEMD_AUTO_ENABLE = "disable"
 
 CFLAGS_append_toolchain-clang = " -Wno-error=address-of-packed-member"
diff --git a/poky/meta/recipes-extended/msmtp/msmtp_1.8.10.bb b/poky/meta/recipes-extended/msmtp/msmtp_1.8.11.bb
similarity index 86%
rename from poky/meta/recipes-extended/msmtp/msmtp_1.8.10.bb
rename to poky/meta/recipes-extended/msmtp/msmtp_1.8.11.bb
index 42cf630..804ed59 100644
--- a/poky/meta/recipes-extended/msmtp/msmtp_1.8.10.bb
+++ b/poky/meta/recipes-extended/msmtp/msmtp_1.8.11.bb
@@ -11,8 +11,7 @@
 UPSTREAM_CHECK_URI = "https://marlam.de/msmtp/download/"
 
 SRC_URI = "https://marlam.de/${BPN}/releases/${BP}.tar.xz"
-SRC_URI[md5sum] = "168430e48f351b5a157ad930d7db3ecc"
-SRC_URI[sha256sum] = "caba7f39d19df7a31782fe7336dd640c61ea33b92f987bd5423bca9683482f10"
+SRC_URI[sha256sum] = "f25f0fa177ce9e0ad65c127e790a37f35fb64fee9e33d90345844c5c86780e60"
 
 inherit gettext autotools update-alternatives pkgconfig
 
diff --git a/poky/meta/recipes-extended/parted/parted_3.3.bb b/poky/meta/recipes-extended/parted/parted_3.3.bb
index 1cfd9ec..aa4d804 100644
--- a/poky/meta/recipes-extended/parted/parted_3.3.bb
+++ b/poky/meta/recipes-extended/parted/parted_3.3.bb
@@ -22,7 +22,7 @@
 
 inherit autotools pkgconfig gettext texinfo ptest
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
 
 do_compile_ptest() {
 	oe_runmake -C tests print-align print-max dup-clobber duplicate fs-resize print-flags
diff --git a/poky/meta/recipes-extended/stress-ng/stress-ng/no_daddr_t.patch b/poky/meta/recipes-extended/stress-ng/stress-ng/no_daddr_t.patch
new file mode 100644
index 0000000..877f4f0
--- /dev/null
+++ b/poky/meta/recipes-extended/stress-ng/stress-ng/no_daddr_t.patch
@@ -0,0 +1,22 @@
+Define daddr_t if __DADDR_T_TYPE is not defined
+
+glibc defined daddr_t but musl does not, ideally it should not be used
+and simple int type is enough. However, its better to leave glibc behavior
+as it is and only define it to int if daddr_t is not provided by libc
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+--- a/stress-ng.h
++++ b/stress-ng.h
+@@ -3750,6 +3750,10 @@ struct shim_statx {
+ 	uint64_t __spare2[14];
+ };
+ 
++#ifndef __DADDR_T_TYPE
++typedef int daddr_t;
++#endif
++
+ /* old ustat struct */
+ struct shim_ustat {
+ 	daddr_t	f_tfree;
diff --git a/poky/meta/recipes-extended/stress-ng/stress-ng_0.11.12.bb b/poky/meta/recipes-extended/stress-ng/stress-ng_0.11.12.bb
index 45f4bb4..c00086c 100644
--- a/poky/meta/recipes-extended/stress-ng/stress-ng_0.11.12.bb
+++ b/poky/meta/recipes-extended/stress-ng/stress-ng_0.11.12.bb
@@ -7,6 +7,7 @@
 
 SRC_URI = "https://kernel.ubuntu.com/~cking/tarballs/${BPN}/${BP}.tar.xz \
            file://0001-Do-not-preserve-ownership-when-installing-example-jo.patch \
+           file://no_daddr_t.patch \
            "
 SRC_URI[sha256sum] = "0ccf437ca1876a3e8a55986c6481697045203a17f5994cb2f5096cd461d18031"
 
@@ -23,4 +24,3 @@
     oe_runmake DESTDIR=${D} install
 }
 
-COMPATIBLE_HOST_libc-musl = 'null'
diff --git a/poky/meta/recipes-extended/xinetd/xinetd/0001-configure-Use-HAVE_SYS_RESOURCE_H-to-guard-sys-resou.patch b/poky/meta/recipes-extended/xinetd/xinetd/0001-configure-Use-HAVE_SYS_RESOURCE_H-to-guard-sys-resou.patch
deleted file mode 100644
index 3c1b2f6..0000000
--- a/poky/meta/recipes-extended/xinetd/xinetd/0001-configure-Use-HAVE_SYS_RESOURCE_H-to-guard-sys-resou.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From e8b0ffc7ea04cc71dba97a38e1a134aaf2285c2d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 30 Dec 2015 07:14:50 +0000
-Subject: [PATCH] configure: Use HAVE_SYS_RESOURCE_H to guard sys/resource.h
- inclusion
-
-HAVE_RLIM_T check will not let sys/resource.h to be checked and
-rlim_t is defined in sys/resource.h so the check would fail.
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- aclocal.m4 |  2 +-
- configure  | 14 +++++++-------
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/aclocal.m4 b/aclocal.m4
-index 6e6f32c..70e7076 100644
---- a/aclocal.m4
-+++ b/aclocal.m4
-@@ -11,7 +11,7 @@ AC_CACHE_VAL(xinetd_cv_type_$1,
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-diff --git a/configure b/configure
-index b507d38..bec56ea 100755
---- a/configure
-+++ b/configure
-@@ -7640,7 +7640,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7686,7 +7686,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7732,7 +7732,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7778,7 +7778,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7824,7 +7824,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7870,7 +7870,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
-@@ -7916,7 +7916,7 @@ cat >>conftest.$ac_ext <<_ACEOF
- #if HAVE_NETDB_H
- #include <netdb.h>
- #endif
--#if HAVE_RLIM_T
-+#if HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif
- #if HAVE_STDINT_H
--- 
-2.6.4
-
diff --git a/poky/meta/recipes-extended/xinetd/xinetd/Disable-services-from-inetd.conf-if-a-service-with-t.patch b/poky/meta/recipes-extended/xinetd/xinetd/Disable-services-from-inetd.conf-if-a-service-with-t.patch
deleted file mode 100644
index cd6e6c1..0000000
--- a/poky/meta/recipes-extended/xinetd/xinetd/Disable-services-from-inetd.conf-if-a-service-with-t.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-Upstream-Status: Pending [from other distro Debian]
-
-From d588b6530e1382a624898b3f4307f636c72c80a9 Mon Sep 17 00:00:00 2001
-From: Pierre Habouzit <madcoder@debian.org>
-Date: Wed, 28 Nov 2007 10:13:08 +0100
-Subject: [PATCH] Disable services from inetd.conf if a service with the same id exists.
-
-  This way, if a service is enabled in /etc/xinetd* _and_ in
-/etc/inetd.conf, the one (even if disabled) from /etc/xinetd* takes
-precedence.
-
-Signed-off-by: Pierre Habouzit <madcoder@debian.org>
----
- xinetd/inet.c |   22 +++++++++++++++++++---
- 1 files changed, 19 insertions(+), 3 deletions(-)
-
-diff --git a/xinetd/inet.c b/xinetd/inet.c
-index 1cb2ba2..8caab45 100644
---- a/xinetd/inet.c
-+++ b/xinetd/inet.c
-@@ -23,6 +23,8 @@
- #include "parsesup.h"
- #include "nvlists.h"
- 
-+static psi_h iter ;
-+
- static int get_next_inet_entry( int fd, pset_h sconfs, 
-                           struct service_config *defaults);
- 
-@@ -32,12 +34,15 @@ void parse_inet_conf_file( int fd, struct configuration *confp )
-    struct service_config *default_config = CNF_DEFAULTS( confp );
-    
-    line_count = 0;
-+   iter = psi_create (sconfs);
- 
-    for( ;; )
-    {   
-       if (get_next_inet_entry(fd, sconfs, default_config) == -2)
-          break;
-    }
-+
-+   psi_destroy(iter);
- }
- 
- static int get_next_inet_entry( int fd, pset_h sconfs, 
-@@ -46,7 +51,7 @@ static int get_next_inet_entry( int fd, pset_h sconfs,
-    char *p;
-    str_h strp;
-    char *line = next_line(fd);
--   struct service_config *scp;
-+   struct service_config *scp, *tmp;
-    unsigned u, i;
-    const char *func = "get_next_inet_entry";
-    char *name = NULL, *rpcvers = NULL, *rpcproto = NULL;
-@@ -405,7 +410,16 @@ static int get_next_inet_entry( int fd, pset_h sconfs,
-    SC_SPECIFY( scp, A_SOCKET_TYPE );
-    SC_SPECIFY( scp, A_WAIT );
- 
--   if( ! pset_add(sconfs, scp) )
-+   for ( tmp = SCP( psi_start( iter ) ) ; tmp ; tmp = SCP( psi_next(iter)) ){
-+      if (EQ(SC_ID(scp), SC_ID(tmp))) {
-+         parsemsg(LOG_DEBUG, func, "removing duplicate service %s", SC_NAME(scp));
-+         sc_free(scp);
-+         scp = NULL;
-+         break;
-+      }
-+   }
-+
-+   if( scp && ! pset_add(sconfs, scp) )
-    {
-       out_of_memory( func );
-       pset_destroy(args);
-@@ -414,7 +428,9 @@ static int get_next_inet_entry( int fd, pset_h sconfs,
-    }
- 
-    pset_destroy(args);
--   parsemsg( LOG_DEBUG, func, "added service %s", SC_NAME(scp));
-+   if (scp) {
-+      parsemsg( LOG_DEBUG, func, "added service %s", SC_NAME(scp));
-+   }
-    return 0;
- }
- 
--- 
-1.5.3.6.2040.g15e6
-
diff --git a/poky/meta/recipes-extended/xinetd/xinetd/Various-fixes-from-the-previous-maintainer.patch b/poky/meta/recipes-extended/xinetd/xinetd/Various-fixes-from-the-previous-maintainer.patch
deleted file mode 100644
index 8e59cdc..0000000
--- a/poky/meta/recipes-extended/xinetd/xinetd/Various-fixes-from-the-previous-maintainer.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-Upstream-Status: Pending [from other distro Debian]
-
-From a3410b0bc81ab03a889d9ffc14e351badf8372f1 Mon Sep 17 00:00:00 2001
-From: Pierre Habouzit <madcoder@debian.org>
-Date: Mon, 26 Nov 2007 16:02:04 +0100
-Subject: [PATCH] Various fixes from the previous maintainer.
-
----
- xinetd/child.c   |   20 +++++++++++++++++---
- xinetd/service.c |    8 ++++----
- 2 files changed, 21 insertions(+), 7 deletions(-)
-
-diff --git a/xinetd/child.c b/xinetd/child.c
-index 89ee54c..48e9615 100644
---- a/xinetd/child.c
-+++ b/xinetd/child.c
-@@ -284,6 +284,7 @@ void child_process( struct server *serp )
-    connection_s            *cp  = SERVER_CONNECTION( serp ) ;
-    struct service_config   *scp = SVC_CONF( sp ) ;
-    const char              *func = "child_process" ;
-+   int                     fd, null_fd;
- 
-    signal_default_state();
- 
-@@ -296,9 +297,22 @@ void child_process( struct server *serp )
-    signals_pending[0] = -1;
-    signals_pending[1] = -1;
- 
--   Sclose(0);
--   Sclose(1);
--   Sclose(2);
-+   if ( ( null_fd = open( "/dev/null", O_RDONLY ) ) == -1 )
-+   {
-+      msg( LOG_ERR, func, "open('/dev/null') failed: %m") ;
-+      _exit( 1 ) ;
-+   }
-+
-+   for ( fd = 0 ; fd <= MAX_PASS_FD ; fd++ )
-+   {
-+      if ( fd != null_fd && dup2( null_fd, fd ) == -1 )
-+      {
-+         msg( LOG_ERR, func, "dup2(%d, %d) failed: %m") ;
-+         _exit( 1 ) ;
-+      }
-+   }
-+   if ( null_fd > MAX_PASS_FD )
-+      (void) Sclose( null_fd ) ;
- 
- 
- #ifdef DEBUG_SERVER
-diff --git a/xinetd/service.c b/xinetd/service.c
-index 3d68d78..0132d6c 100644
---- a/xinetd/service.c
-+++ b/xinetd/service.c
-@@ -745,8 +745,8 @@ static status_e failed_service(struct service *sp,
-                return FAILED;
- 
-             if ( last == NULL ) {
--               last = SAIN( calloc( 1, sizeof(union xsockaddr) ) );
--	       SVC_LAST_DGRAM_ADDR(sp) = (union xsockaddr *)last;
-+	    SVC_LAST_DGRAM_ADDR(sp) =  SAIN( calloc( 1, sizeof(union xsockaddr) ) );
-+	    last = SAIN( SVC_LAST_DGRAM_ADDR(sp) );
-             }
- 
-             (void) time( &current_time ) ;
-@@ -772,8 +772,8 @@ static status_e failed_service(struct service *sp,
-                return FAILED;
- 
- 	    if( last == NULL ) {
--               last = SAIN6(calloc( 1, sizeof(union xsockaddr) ) );
--	       SVC_LAST_DGRAM_ADDR( sp ) = (union xsockaddr *)last;
-+	    SVC_LAST_DGRAM_ADDR(sp) = SAIN6(calloc( 1, sizeof(union xsockaddr) ) );
-+            last = SAIN6(SVC_LAST_DGRAM_ADDR(sp));
-             }
- 
-             (void) time( &current_time ) ;
--- 
-1.5.3.6.2040.g15e6
-
diff --git a/poky/meta/recipes-extended/xinetd/xinetd/xinetd-CVE-2013-4342.patch b/poky/meta/recipes-extended/xinetd/xinetd/xinetd-CVE-2013-4342.patch
deleted file mode 100644
index 852a43f..0000000
--- a/poky/meta/recipes-extended/xinetd/xinetd/xinetd-CVE-2013-4342.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-xinetd: CVE-2013-4342
-
-xinetd does not enforce the user and group configuration directives
-for TCPMUX services, which causes these services to be run as root
-and makes it easier for remote attackers to gain privileges by
-leveraging another vulnerability in a service.
-http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-4342
-
-the patch come from:
-https://bugzilla.redhat.com/attachment.cgi?id=799732&action=diff
-
-CVE: CVE-2013-4342
-Signed-off-by: Li Wang <li.wang@windriver.com>
-Upstream-Status: Backport
----
- xinetd/builtins.c |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/xinetd/builtins.c b/xinetd/builtins.c
-index 3b85579..34a5bac 100644
---- a/xinetd/builtins.c
-+++ b/xinetd/builtins.c
-@@ -617,7 +617,7 @@ static void tcpmux_handler( const struct server *serp )
-    if( SC_IS_INTERNAL( scp ) ) {
-       SC_INTERNAL(scp, nserp);
-    } else {
--      exec_server(nserp);
-+      child_process(nserp);
-    }
- }
- 
--- 
-1.7.9.5
-
diff --git a/poky/meta/recipes-extended/xinetd/xinetd/xinetd-should-be-able-to-listen-on-IPv6-even-in-ine.patch b/poky/meta/recipes-extended/xinetd/xinetd/xinetd-should-be-able-to-listen-on-IPv6-even-in-ine.patch
deleted file mode 100644
index 2365ca1..0000000
--- a/poky/meta/recipes-extended/xinetd/xinetd/xinetd-should-be-able-to-listen-on-IPv6-even-in-ine.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-Upstream-Status: Pending [from other distro Debian]
-
-From f44b218ccc779ab3f4aed072390ccf129d94b58d Mon Sep 17 00:00:00 2001
-From: David Madore <david@pleiades.stars>
-Date: Mon, 24 Mar 2008 12:45:36 +0100
-Subject: [PATCH] xinetd should be able to listen on IPv6 even in -inetd_compat mode
-
-xinetd does not bind to IPv6 addresses (and does not seem to have an
-option to do so) when used in -inetd_compat mode.  As current inetd's
-are IPv6-aware, this is a problem: this means xinetd cannot be used as
-a drop-in inetd replacement.
-
-The attached patch is a suggestion: it adds a -inetd_ipv6 global
-option that, if used, causes inetd-compatibility lines to have an
-implicit "IPv6" option.  Perhaps this is not the best solution, but
-there should definitely be a way to get inetd.conf to be read in
-IPv6-aware mode.
----
- xinetd/confparse.c |    1 +
- xinetd/inet.c      |   17 +++++++++++++++++
- xinetd/options.c   |    3 +++
- xinetd/xinetd.man  |    6 ++++++
- 4 files changed, 27 insertions(+), 0 deletions(-)
-
-diff --git a/xinetd/confparse.c b/xinetd/confparse.c
-index db9f431..d7b0bcc 100644
---- a/xinetd/confparse.c
-+++ b/xinetd/confparse.c
-@@ -40,6 +40,7 @@
- #include "inet.h"
- #include "main.h"
- 
-+extern int inetd_ipv6;
- extern int inetd_compat;
- 
- /*
-diff --git a/xinetd/inet.c b/xinetd/inet.c
-index 8caab45..2e617ae 100644
---- a/xinetd/inet.c
-+++ b/xinetd/inet.c
-@@ -25,6 +25,8 @@
- 
- static psi_h iter ;
- 
-+extern int inetd_ipv6;
-+
- static int get_next_inet_entry( int fd, pset_h sconfs, 
-                           struct service_config *defaults);
- 
-@@ -360,6 +362,21 @@ static int get_next_inet_entry( int fd, pset_h sconfs,
-          }
-          SC_SERVER_ARGV(scp)[u] = p;
-       }
-+
-+      /* Set the IPv6 flag if we were passed the -inetd_ipv6 option */
-+      if ( inetd_ipv6 )
-+      {
-+         nvp = nv_find_value( service_flags, "IPv6" );
-+         if ( nvp == NULL )
-+         {
-+            parsemsg( LOG_WARNING, func, "inetd.conf - Bad foo %s", name ) ;
-+            pset_destroy(args);
-+            sc_free(scp);
-+            return -1;
-+         }
-+         M_SET(SC_XFLAGS(scp), nvp->value);
-+      }
-+
-       /* Set the reuse flag, as this is the default for inetd */
-       nvp = nv_find_value( service_flags, "REUSE" );
-       if ( nvp == NULL )
-diff --git a/xinetd/options.c b/xinetd/options.c
-index b058b6a..dc2f3a0 100644
---- a/xinetd/options.c
-+++ b/xinetd/options.c
-@@ -30,6 +30,7 @@ int logprocs_option ;
- unsigned logprocs_option_arg ;
- int stayalive_option=0;
- char *program_name ;
-+int inetd_ipv6 = 0 ;
- int inetd_compat = 0 ;
- int dont_fork = 0;
- 
-@@ -128,6 +129,8 @@ int opt_recognize( int argc, char *argv[] )
-             fprintf(stderr, "\n");
-             exit(0);
-          }
-+         else if ( strcmp ( &argv[ arg ][ 1 ], "inetd_ipv6" ) == 0 )
-+            inetd_ipv6 = 1;
-          else if ( strcmp ( &argv[ arg ][ 1 ], "inetd_compat" ) == 0 )
-             inetd_compat = 1;
-       }
-diff --git a/xinetd/xinetd.man b/xinetd/xinetd.man
-index c76c3c6..c9dd803 100644
---- a/xinetd/xinetd.man
-+++ b/xinetd/xinetd.man
-@@ -106,6 +106,12 @@ This option causes xinetd to read /etc/inetd.conf in addition to the
- standard xinetd config files.  /etc/inetd.conf is read after the
- standard xinetd config files.
- .TP
-+.BI \-inetd_ipv6
-+This option causes xinetd to bind to IPv6 (AF_INET6) addresses for
-+inetd compatibility lines (see previous option).  This only affects
-+how /etc/inetd.conf is interpreted and thus only has any effect if
-+the \-inetd_compat option is also used.
-+.TP
- .BI \-cc " interval"
- This option instructs
- .B xinetd
--- 
-1.5.5.rc0.127.gb4337
-
diff --git a/poky/meta/recipes-extended/xinetd/xinetd/xinetd.conf b/poky/meta/recipes-extended/xinetd/xinetd/xinetd.conf
deleted file mode 100644
index 9e6ea25..0000000
--- a/poky/meta/recipes-extended/xinetd/xinetd/xinetd.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-# Simple configuration file for xinetd
-#
-# Some defaults, and include /etc/xinetd.d/
-
-defaults
-{
-
-
-}
-
-includedir /etc/xinetd.d
diff --git a/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb b/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb
new file mode 100644
index 0000000..4f0f953
--- /dev/null
+++ b/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.4.bb
@@ -0,0 +1,47 @@
+SUMMARY = "Socket-based service activation daemon"
+HOMEPAGE = "https://github.com/xinetd-org/xinetd"
+
+# xinetd is a BSD-like license
+# Apple and Gentoo say BSD here.
+LICENSE = "BSD"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=55c5fdf02cfcca3fc9621b6f2ceae10f"
+
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
+
+SRC_URI = "git://github.com/openSUSE/xinetd.git;protocol=https \
+           file://xinetd.init \
+           file://xinetd.default \
+           file://xinetd.service \
+           "
+
+SRCREV = "6a4af7786630ce48747d9687e2f18f45ea6684c4"
+
+S = "${WORKDIR}/git"
+
+inherit autotools update-rc.d systemd pkgconfig
+
+SYSTEMD_SERVICE_${PN} = "xinetd.service"
+
+INITSCRIPT_NAME = "xinetd"
+INITSCRIPT_PARAMS = "defaults"
+
+PACKAGECONFIG ??= "tcp-wrappers"
+PACKAGECONFIG[tcp-wrappers] = "--with-libwrap,,tcp-wrappers"
+
+CONFFILES_${PN} = "${sysconfdir}/xinetd.conf"
+
+do_install_append() {
+       install -d "${D}${sysconfdir}/init.d"
+       install -d "${D}${sysconfdir}/default"
+       install -m 755 "${WORKDIR}/xinetd.init" "${D}${sysconfdir}/init.d/xinetd"
+       install -m 644 "${WORKDIR}/xinetd.default" "${D}${sysconfdir}/default/xinetd"
+
+       # Install systemd unit files
+       install -d ${D}${systemd_unitdir}/system
+       install -m 0644 ${WORKDIR}/xinetd.service ${D}${systemd_unitdir}/system
+       sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
+              -e 's,@SBINDIR@,${sbindir},g' \
+              ${D}${systemd_unitdir}/system/xinetd.service
+}
+
+RDEPENDS_${PN} += "perl"
diff --git a/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.bb b/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.bb
deleted file mode 100644
index 8f8f846..0000000
--- a/poky/meta/recipes-extended/xinetd/xinetd_2.3.15.bb
+++ /dev/null
@@ -1,75 +0,0 @@
-SUMMARY = "Socket-based service activation daemon"
-HOMEPAGE = "https://github.com/xinetd-org/xinetd"
-
-# xinetd is a BSD-like license
-# Apple and Gentoo say BSD here.
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=8ad8615198542444f84d28a6cf226dd8"
-
-DEPENDS += "libtirpc"
-PR = "r2"
-
-UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
-
-SRC_URI = "git://github.com/openSUSE/xinetd.git;protocol=https \
-      file://xinetd.init \
-      file://xinetd.conf \
-      file://xinetd.default \
-      file://Various-fixes-from-the-previous-maintainer.patch \
-      file://Disable-services-from-inetd.conf-if-a-service-with-t.patch \
-      file://xinetd-should-be-able-to-listen-on-IPv6-even-in-ine.patch \
-      file://xinetd-CVE-2013-4342.patch \
-      file://0001-configure-Use-HAVE_SYS_RESOURCE_H-to-guard-sys-resou.patch \
-      file://xinetd.service \
-      "
-
-SRCREV = "68bb9ab9e9f214ad8a2322f28ac1d6733e70bc24"
-
-S = "${WORKDIR}/git"
-
-inherit autotools update-rc.d systemd
-
-SYSTEMD_SERVICE_${PN} = "xinetd.service"
-
-INITSCRIPT_NAME = "xinetd"
-INITSCRIPT_PARAMS = "defaults"
-
-EXTRA_OECONF="--disable-nls"
-
-PACKAGECONFIG ??= "tcp-wrappers"
-PACKAGECONFIG[tcp-wrappers] = "--with-libwrap,,tcp-wrappers"
-
-CFLAGS += "-I${STAGING_INCDIR}/tirpc"
-LDFLAGS += "-ltirpc"
-
-do_configure() {
-	# Looks like configure.in is broken, so we are skipping
-	# rebuilding configure and are just using the shipped one
-	( cd ${S}; gnu-configize --force )
-	oe_runconf
-}
-
-do_install() {
-	# Same here, the Makefile does some really stupid things,
-	# but since we only want two files why not override
-	# do_install from autotools and doing it ourselfs?
-	install -d "${D}${sbindir}"
-	install -d "${D}${sysconfdir}/init.d"
-	install -d "${D}${sysconfdir}/xinetd.d"
-	install -d "${D}${sysconfdir}/default"
-	install -m 644 "${WORKDIR}/xinetd.conf" "${D}${sysconfdir}"
-	install -m 755 "${WORKDIR}/xinetd.init" "${D}${sysconfdir}/init.d/xinetd"
-	install -m 644 "${WORKDIR}/xinetd.default" "${D}${sysconfdir}/default/xinetd"
-	install -m 755 "${B}/xinetd/xinetd" "${D}${sbindir}"
-	install -m 755 "${B}/xinetd/itox" "${D}${sbindir}"
-	install -m 664 ${S}/contrib/xinetd.d/* ${D}${sysconfdir}/xinetd.d
-
-	# Install systemd unit files
-	install -d ${D}${systemd_unitdir}/system
-	install -m 0644 ${WORKDIR}/xinetd.service ${D}${systemd_unitdir}/system
-	sed -i -e 's,@BASE_BINDIR@,${base_bindir},g' \
-	       -e 's,@SBINDIR@,${sbindir},g' \
-	       ${D}${systemd_unitdir}/system/xinetd.service
-}
-
-CONFFILES_${PN} = "${sysconfdir}/xinetd.conf"
diff --git a/poky/meta/recipes-gnome/epiphany/epiphany_3.36.1.bb b/poky/meta/recipes-gnome/epiphany/epiphany_3.36.2.bb
similarity index 84%
rename from poky/meta/recipes-gnome/epiphany/epiphany_3.36.1.bb
rename to poky/meta/recipes-gnome/epiphany/epiphany_3.36.2.bb
index 8146983..8ac318b 100644
--- a/poky/meta/recipes-gnome/epiphany/epiphany_3.36.1.bb
+++ b/poky/meta/recipes-gnome/epiphany/epiphany_3.36.2.bb
@@ -14,8 +14,7 @@
 SRC_URI = "${GNOME_MIRROR}/${GNOMEBN}/${@gnome_verdir("${PV}")}/${GNOMEBN}-${PV}.tar.${GNOME_COMPRESS_TYPE};name=archive \
            file://0002-help-meson.build-disable-the-use-of-yelp.patch \
            "
-SRC_URI[archive.md5sum] = "d66416d0be97ec7789564473337bfe57"
-SRC_URI[archive.sha256sum] = "f6f233fb43c6318476d4594707b3fdd5b4127b5e35263e73fbcad8895db8efb6"
+SRC_URI[archive.sha256sum] = "c2e676aa0fe211809a5e7e8a7e461d182890f253c53f4610f2610094b6fbfb5e"
 
 FILES_${PN} += "${datadir}/dbus-1 ${datadir}/gnome-shell/search-providers ${datadir}/metainfo"
 RDEPENDS_${PN} = "iso-codes adwaita-icon-theme gsettings-desktop-schemas"
diff --git a/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.6.bb b/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.6.bb
deleted file mode 100644
index 86bbdbf..0000000
--- a/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.6.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require cogl-1.0.inc
-
-SRC_URI[archive.md5sum] = "7bcc01edb5462d4d08d01bf893feddb0"
-SRC_URI[archive.sha256sum] = "6d134bd3e48c067507167c001200b275997fb9c68b08b48ff038211c8c251b75"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=1b1a508d91d25ca607c83f92f3e31c84"
diff --git a/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.8.bb b/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.8.bb
new file mode 100644
index 0000000..78f6b0e
--- /dev/null
+++ b/poky/meta/recipes-graphics/cogl/cogl-1.0_1.22.8.bb
@@ -0,0 +1,5 @@
+require cogl-1.0.inc
+
+SRC_URI[archive.sha256sum] = "a805b2b019184710ff53d0496f9f0ce6dcca420c141a0f4f6fcc02131581d759"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=1b1a508d91d25ca607c83f92f3e31c84"
diff --git a/poky/meta/recipes-graphics/drm/libdrm_2.4.101.bb b/poky/meta/recipes-graphics/drm/libdrm_2.4.102.bb
similarity index 94%
rename from poky/meta/recipes-graphics/drm/libdrm_2.4.101.bb
rename to poky/meta/recipes-graphics/drm/libdrm_2.4.102.bb
index 8ec566f..fb9a942 100644
--- a/poky/meta/recipes-graphics/drm/libdrm_2.4.101.bb
+++ b/poky/meta/recipes-graphics/drm/libdrm_2.4.102.bb
@@ -11,8 +11,7 @@
 DEPENDS = "libpthread-stubs"
 
 SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.xz"
-SRC_URI[md5sum] = "e6a6f1b88963210b3d62acd7310a1cc7"
-SRC_URI[sha256sum] = "ddf31baa8e49473624860bd166ce654dc349873f7a6c7b3305964249315c78a7"
+SRC_URI[sha256sum] = "8bcbf9336c28e393d76c1f16d7e79e394a7fce8a2e929d52d3ad7ad8525ba05b"
 
 inherit meson pkgconfig manpages
 
diff --git a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.4.bb b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.7.bb
similarity index 77%
rename from poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.4.bb
rename to poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.7.bb
index ee08c12..4f79da4 100644
--- a/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.4.bb
+++ b/poky/meta/recipes-graphics/harfbuzz/harfbuzz_2.6.7.bb
@@ -4,12 +4,15 @@
 BUGTRACKER = "https://bugs.freedesktop.org/enter_bug.cgi?product=HarfBuzz"
 SECTION = "libs"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e11f5c3149cdec4bb309babb020b32b9 \
+LIC_FILES_CHKSUM = "file://COPYING;md5=8f787620b7d3866d9552fd1924c07572 \
                     file://src/hb-ucd.cc;beginline=1;endline=15;md5=29d4dcb6410429195df67efe3382d8bc"
 
-SRC_URI = "http://www.freedesktop.org/software/harfbuzz/release/${BP}.tar.xz"
-SRC_URI[md5sum] = "2b3a4dfdb3e5e50055f941978944da9f"
-SRC_URI[sha256sum] = "9413b8d96132d699687ef914ebb8c50440efc87b3f775d25856d7ec347c03c12"
+UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases"
+UPSTREAM_CHECK_REGEX = "harfbuzz-(?P<pver>\d+(\.\d+)+).tar"
+
+SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.xz"
+SRC_URI[md5sum] = "3b884586a09328c5fae76d8c200b0e1c"
+SRC_URI[sha256sum] = "49e481d06cdff97bf68d99fa26bdf785331f411614485d892ea4c78eb479b218"
 
 inherit autotools pkgconfig lib_package gtk-doc
 
diff --git a/poky/meta/recipes-graphics/libva/libva.inc b/poky/meta/recipes-graphics/libva/libva.inc
index ac39e92..e7bec80 100644
--- a/poky/meta/recipes-graphics/libva/libva.inc
+++ b/poky/meta/recipes-graphics/libva/libva.inc
@@ -24,4 +24,4 @@
 
 DEPENDS = "libdrm"
 
-inherit meson pkgconfig features_check
+inherit meson pkgconfig
diff --git a/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb b/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb
index 9d7cb2b..9484f01 100644
--- a/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb
+++ b/poky/meta/recipes-graphics/vulkan/vulkan-demos_git.bb
@@ -14,7 +14,7 @@
            file://0001-Don-t-build-demos-with-questionably-licensed-data.patch \
            "
 UPSTREAM_CHECK_COMMITS = "1"
-SRCREV = "10a1ecaf7bbcbc316c83f7c52742baaba0ae2f45"
+SRCREV = "4818f85916bf88c1ca8c2ed1a46e0e758651489e"
 UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for"
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb b/poky/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb
index 4d61aed..713fcfb 100644
--- a/poky/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb
+++ b/poky/meta/recipes-graphics/xorg-font/encodings_1.0.5.bb
@@ -19,3 +19,7 @@
 inherit allarch
 
 EXTRA_OECONF += "--with-encodingsdir=${datadir}/fonts/X11/encodings"
+
+# postinst from .inc doesn't apply to this recipe
+pkg_postinst_${PN} () {
+}
diff --git a/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config/0001-fix-python3-support.patch b/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config/0001-fix-python3-support.patch
deleted file mode 100644
index f723f70..0000000
--- a/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config/0001-fix-python3-support.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 168ac446cdd9a1b59d6b708360a9556515ba56b9 Mon Sep 17 00:00:00 2001
-From: MilhouseVH <milhouseVH.github@nmacleod.com>
-Date: Sun, 16 Feb 2020 09:41:43 +0000
-Subject: [PATCH] fix python3 support
-
-https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/issues/197
-
-Upstream-Status: Backport
-Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
----
- rules/compat/map-variants.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/rules/compat/map-variants.py b/rules/compat/map-variants.py
-index ebbfec9..979ba43 100755
---- a/rules/compat/map-variants.py
-+++ b/rules/compat/map-variants.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/python3
-+#!/usr/bin/env python3
- 
- import argparse
- import re
-@@ -12,8 +12,8 @@ class Layout(object):
-             assert variant is None
-             # parse a layout(variant) string
-             match = re.match(r'([^(]+)\(([^)]+)\)', layout)
--            self.layout = match[1]
--            self.variant = match[2]
-+            self.layout = match.groups()[0]
-+            self.variant = match.groups()[1]
- 
-     def __str__(self):
-         if self.variant:
diff --git a/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.29.bb b/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.30.bb
similarity index 81%
rename from poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.29.bb
rename to poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.30.bb
index 598b584..a4d67cd 100644
--- a/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.29.bb
+++ b/poky/meta/recipes-graphics/xorg-lib/xkeyboard-config_2.30.bb
@@ -12,11 +12,8 @@
 LICENSE = "MIT & MIT-style"
 LIC_FILES_CHKSUM = "file://COPYING;md5=0e7f21ca7db975c63467d2e7624a12f9"
 
-SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2 \
-           file://0001-fix-python3-support.patch \
-           "
-SRC_URI[md5sum] = "b5980bdc6c7d79f6dcccba8c76bb6c5d"
-SRC_URI[sha256sum] = "1d4175278bf06000683656763a8b1d3282c61a314b6db41260c8efe92d621802"
+SRC_URI = "${XORG_MIRROR}/individual/data/xkeyboard-config/${BPN}-${PV}.tar.bz2"
+SRC_URI[sha256sum] = "095a524f7b633ed257617202d06c9c71fe020c8897b106cf0dcdd0c6e8b797d4"
 
 SECTION = "x11/libs"
 DEPENDS = "util-macros libxslt-native"
diff --git a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20200421.bb b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20200519.bb
similarity index 99%
rename from poky/meta/recipes-kernel/linux-firmware/linux-firmware_20200421.bb
rename to poky/meta/recipes-kernel/linux-firmware/linux-firmware_20200519.bb
index fa0507a..fcad7df 100644
--- a/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20200421.bb
+++ b/poky/meta/recipes-kernel/linux-firmware/linux-firmware_20200519.bb
@@ -125,7 +125,7 @@
                     file://LICENCE.xc4000;md5=0ff51d2dc49fce04814c9155081092f0 \
                     file://LICENCE.xc5000;md5=1e170c13175323c32c7f4d0998d53f66 \
                     file://LICENCE.xc5000c;md5=12b02efa3049db65d524aeb418dd87ca \
-                    file://WHENCE;md5=cb9a66eff0464b55335d3a7374fbc51c \
+                    file://WHENCE;md5=c15cee50b1a59d27106a37c2929d5291 \
                     "
 
 # These are not common licenses, set NO_GENERIC_LICENSE for them
@@ -196,8 +196,7 @@
 
 SRC_URI = "${KERNELORG_MIRROR}/linux/kernel/firmware/${BPN}-${PV}.tar.xz"
 
-SRC_URI[md5sum] = "229a93395f4033da68429f165a62b952"
-SRC_URI[sha256sum] = "6dd7cba25d694c031f65529b9027cc8faaffaddfae70a4e3b58c2e4a0af3bfa8"
+SRC_URI[sha256sum] = "584c49c58291136b966ceffb0a456a672c23d4d759bab8bf86cbbe28061e415e"
 
 inherit allarch
 
diff --git a/poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc b/poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
index 4481aa4..20139a8 100644
--- a/poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
+++ b/poky/meta/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
@@ -32,6 +32,8 @@
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
 
+RECIPE_NO_UPDATE_REASON = "Recipe is updated through a separate process"
+
 python __anonymous () {
     major = d.getVar("PV").split('.')[0]
     if major == "3":
diff --git a/poky/meta/recipes-kernel/linux/linux-yocto.inc b/poky/meta/recipes-kernel/linux/linux-yocto.inc
index f560dec..bd37006 100644
--- a/poky/meta/recipes-kernel/linux/linux-yocto.inc
+++ b/poky/meta/recipes-kernel/linux/linux-yocto.inc
@@ -6,6 +6,8 @@
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
 
+RECIPE_NO_UPDATE_REASON = "Recipe is updated through a separate process"
+
 # Skip processing of this recipe if it is not explicitly specified as the
 # PREFERRED_PROVIDER for virtual/kernel. This avoids network access required
 # by the use of AUTOREV SRCREVs, which are the default for this recipe.
diff --git a/poky/meta/recipes-kernel/lttng/babeltrace2/0001-fs.c-initialize-other_entry.patch b/poky/meta/recipes-kernel/lttng/babeltrace2/0001-fs.c-initialize-other_entry.patch
deleted file mode 100644
index b56b3bd..0000000
--- a/poky/meta/recipes-kernel/lttng/babeltrace2/0001-fs.c-initialize-other_entry.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 42dae692b9057d03ce9a0651f061472e9dd90130 Mon Sep 17 00:00:00 2001
-From: Mingli Yu <mingli.yu@windriver.com>
-Date: Wed, 11 Mar 2020 08:44:42 +0000
-Subject: [PATCH] fs.c: initialize the other_entry variable
-
-Initialize the pointer other_entry to fix the below error:
-| ../../../../../git/src/plugins/ctf/fs-src/fs.c: In function 'ds_index_insert_ds_index_entry_sorted':
-| ../../../../../git/src/plugins/ctf/fs-src/fs.c:702:5: error: 'other_entry' may be used uninitialized in this function [-Werror=maybe-uninitialized]
-|   702 |    !ds_index_entries_equal(entry, other_entry)) {
-
-Upstream-Status: Submitted [https://lists.lttng.org/pipermail/lttng-dev/2020-March/029549.html]
-
-Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
----
- src/plugins/ctf/fs-src/fs.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/plugins/ctf/fs-src/fs.c b/src/plugins/ctf/fs-src/fs.c
-index e87523a3..a6b5315f 100644
---- a/src/plugins/ctf/fs-src/fs.c
-+++ b/src/plugins/ctf/fs-src/fs.c
-@@ -680,7 +680,7 @@ void ds_index_insert_ds_index_entry_sorted(
- 	struct ctf_fs_ds_index_entry *entry)
- {
- 	guint i;
--	struct ctf_fs_ds_index_entry *other_entry;
-+	struct ctf_fs_ds_index_entry *other_entry = NULL;
- 
- 	/* Find the spot where to insert this index entry. */
- 	for (i = 0; i < index->entries->len; i++) {
--- 
-2.24.1
-
diff --git a/poky/meta/recipes-kernel/lttng/babeltrace2_2.0.2.bb b/poky/meta/recipes-kernel/lttng/babeltrace2_2.0.3.bb
similarity index 93%
rename from poky/meta/recipes-kernel/lttng/babeltrace2_2.0.2.bb
rename to poky/meta/recipes-kernel/lttng/babeltrace2_2.0.3.bb
index 7777f9b..c658825 100644
--- a/poky/meta/recipes-kernel/lttng/babeltrace2_2.0.2.bb
+++ b/poky/meta/recipes-kernel/lttng/babeltrace2_2.0.3.bb
@@ -8,12 +8,11 @@
 DEPENDS = "glib-2.0 util-linux popt bison-native flex-native"
 
 SRC_URI = "git://git.efficios.com/babeltrace.git;branch=stable-2.0 \
-	   file://run-ptest \
-	   file://0001-tests-do-not-run-test-applications-from-.libs.patch \
+           file://run-ptest \
+           file://0001-tests-do-not-run-test-applications-from-.libs.patch \
            file://0001-Make-manpages-multilib-identical.patch \
-           file://0001-fs.c-initialize-other_entry.patch \
-	  "
-SRCREV = "33003c352ed56aa49e0b3df272bbab6fac36cae8"
+           "
+SRCREV = "91d154476e66735d705adda9ca5cbf5b5eea5940"
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>2(\.\d+)+)$"
 
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Update-for-kernel-5.7-use-vmalloc_sync_mappings-on-k.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Update-for-kernel-5.7-use-vmalloc_sync_mappings-on-k.patch
deleted file mode 100644
index 58f4d29..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-Update-for-kernel-5.7-use-vmalloc_sync_mappings-on-k.patch
+++ /dev/null
@@ -1,853 +0,0 @@
-From a2cc0e06330e55eefe668f7d6370de6d3177a907 Mon Sep 17 00:00:00 2001
-From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Date: Tue, 5 May 2020 13:38:31 -0400
-Subject: [PATCH] Update for kernel 5.7: use vmalloc_sync_mappings on kernels
- >= 5.7
-
-Upstream-Status: Backport [https://github.com/lttng/lttng-modules/commit/da0fcb1497ff2437407883647a8a0bba12bd0f91]
-
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
----
- lib/ringbuffer/ring_buffer_backend.c |  4 +--
- lttng-abi.c                          |  4 +--
- lttng-context-callstack.c            |  2 +-
- lttng-context-cgroup-ns.c            |  2 +-
- lttng-context-cpu-id.c               |  2 +-
- lttng-context-egid.c                 |  2 +-
- lttng-context-euid.c                 |  2 +-
- lttng-context-gid.c                  |  2 +-
- lttng-context-hostname.c             |  2 +-
- lttng-context-interruptible.c        |  2 +-
- lttng-context-ipc-ns.c               |  2 +-
- lttng-context-migratable.c           |  2 +-
- lttng-context-mnt-ns.c               |  2 +-
- lttng-context-need-reschedule.c      |  2 +-
- lttng-context-net-ns.c               |  2 +-
- lttng-context-nice.c                 |  2 +-
- lttng-context-perf-counters.c        |  2 +-
- lttng-context-pid-ns.c               |  2 +-
- lttng-context-pid.c                  |  2 +-
- lttng-context-ppid.c                 |  2 +-
- lttng-context-preemptible.c          |  2 +-
- lttng-context-prio.c                 |  2 +-
- lttng-context-procname.c             |  2 +-
- lttng-context-sgid.c                 |  2 +-
- lttng-context-suid.c                 |  2 +-
- lttng-context-tid.c                  |  2 +-
- lttng-context-uid.c                  |  2 +-
- lttng-context-user-ns.c              |  2 +-
- lttng-context-uts-ns.c               |  2 +-
- lttng-context-vegid.c                |  2 +-
- lttng-context-veuid.c                |  2 +-
- lttng-context-vgid.c                 |  2 +-
- lttng-context-vpid.c                 |  2 +-
- lttng-context-vppid.c                |  2 +-
- lttng-context-vsgid.c                |  2 +-
- lttng-context-vsuid.c                |  2 +-
- lttng-context-vtid.c                 |  2 +-
- lttng-context-vuid.c                 |  2 +-
- lttng-context.c                      |  2 +-
- lttng-events.c                       | 10 +++---
- lttng-ring-buffer-client.h           |  4 +--
- lttng-ring-buffer-metadata-client.h  |  4 +--
- lttng-syscalls.c                     |  2 +-
- probes/lttng-kprobes.c               |  2 +-
- probes/lttng-kretprobes.c            |  2 +-
- probes/lttng-tracepoint-event-impl.h |  4 +--
- probes/lttng-uprobes.c               |  2 +-
- probes/lttng.c                       |  2 +-
- tests/probes/lttng-test.c            |  2 +-
- wrapper/vmalloc.h                    | 49 ++++++++++++++++++++++++++--
- 50 files changed, 104 insertions(+), 61 deletions(-)
-
-diff --git a/lib/ringbuffer/ring_buffer_backend.c b/lib/ringbuffer/ring_buffer_backend.c
-index d4bec25..d232b7f 100644
---- a/lib/ringbuffer/ring_buffer_backend.c
-+++ b/lib/ringbuffer/ring_buffer_backend.c
-@@ -17,7 +17,7 @@
- #include <linux/vmalloc.h>
- 
- #include <wrapper/mm.h>
--#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_all() */
-+#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_mappings() */
- #include <wrapper/ringbuffer/config.h>
- #include <wrapper/ringbuffer/backend.h>
- #include <wrapper/ringbuffer/frontend.h>
-@@ -156,7 +156,7 @@ int lib_ring_buffer_backend_allocate(const struct lib_ring_buffer_config *config
- 	 * If kmalloc ever uses vmalloc underneath, make sure the buffer pages
- 	 * will not fault.
- 	 */
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	wrapper_clear_current_oom_origin();
- 	vfree(pages);
- 	return 0;
-diff --git a/lttng-abi.c b/lttng-abi.c
-index b63e376..826ecab 100644
---- a/lttng-abi.c
-+++ b/lttng-abi.c
-@@ -30,7 +30,7 @@
- #include <linux/uaccess.h>
- #include <linux/slab.h>
- #include <linux/err.h>
--#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_all() */
-+#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_mappings() */
- #include <wrapper/ringbuffer/vfs.h>
- #include <wrapper/ringbuffer/backend.h>
- #include <wrapper/ringbuffer/frontend.h>
-@@ -1938,7 +1938,7 @@ int __init lttng_abi_init(void)
- {
- 	int ret = 0;
- 
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	lttng_clock_ref();
- 
- 	ret = lttng_tp_mempool_init();
-diff --git a/lttng-context-callstack.c b/lttng-context-callstack.c
-index 195990a..ba35a39 100644
---- a/lttng-context-callstack.c
-+++ b/lttng-context-callstack.c
-@@ -141,7 +141,7 @@ int __lttng_add_callstack_generic(struct lttng_ctx **ctx,
- 	field->record = lttng_callstack_record;
- 	field->priv = fdata;
- 	field->destroy = lttng_callstack_destroy;
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- 
- error_create:
-diff --git a/lttng-context-cgroup-ns.c b/lttng-context-cgroup-ns.c
-index 81486e5..f324b7e 100644
---- a/lttng-context-cgroup-ns.c
-+++ b/lttng-context-cgroup-ns.c
-@@ -97,7 +97,7 @@ int lttng_add_cgroup_ns_to_ctx(struct lttng_ctx **ctx)
- 	field->record = cgroup_ns_record;
- 	field->get_value = cgroup_ns_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_cgroup_ns_to_ctx);
-diff --git a/lttng-context-cpu-id.c b/lttng-context-cpu-id.c
-index 3778225..6e2f3f4 100644
---- a/lttng-context-cpu-id.c
-+++ b/lttng-context-cpu-id.c
-@@ -68,7 +68,7 @@ int lttng_add_cpu_id_to_ctx(struct lttng_ctx **ctx)
- 	field->record = cpu_id_record;
- 	field->get_value = cpu_id_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_cpu_id_to_ctx);
-diff --git a/lttng-context-egid.c b/lttng-context-egid.c
-index 51536e2..bdcebb9 100644
---- a/lttng-context-egid.c
-+++ b/lttng-context-egid.c
-@@ -70,7 +70,7 @@ int lttng_add_egid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = egid_record;
- 	field->get_value = egid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_egid_to_ctx);
-diff --git a/lttng-context-euid.c b/lttng-context-euid.c
-index 1bcd53f..c2b8dcd 100644
---- a/lttng-context-euid.c
-+++ b/lttng-context-euid.c
-@@ -70,7 +70,7 @@ int lttng_add_euid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = euid_record;
- 	field->get_value = euid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_euid_to_ctx);
-diff --git a/lttng-context-gid.c b/lttng-context-gid.c
-index da54207..c355e8c 100644
---- a/lttng-context-gid.c
-+++ b/lttng-context-gid.c
-@@ -70,7 +70,7 @@ int lttng_add_gid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = gid_record;
- 	field->get_value = gid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_gid_to_ctx);
-diff --git a/lttng-context-hostname.c b/lttng-context-hostname.c
-index e485aa9..17dbd57 100644
---- a/lttng-context-hostname.c
-+++ b/lttng-context-hostname.c
-@@ -101,7 +101,7 @@ int lttng_add_hostname_to_ctx(struct lttng_ctx **ctx)
- 	field->record = hostname_record;
- 	field->get_value = hostname_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_hostname_to_ctx);
-diff --git a/lttng-context-interruptible.c b/lttng-context-interruptible.c
-index f3da199..8bd279a 100644
---- a/lttng-context-interruptible.c
-+++ b/lttng-context-interruptible.c
-@@ -75,7 +75,7 @@ int lttng_add_interruptible_to_ctx(struct lttng_ctx **ctx)
- 	field->record = interruptible_record;
- 	field->get_value = interruptible_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_interruptible_to_ctx);
-diff --git a/lttng-context-ipc-ns.c b/lttng-context-ipc-ns.c
-index 78d5966..40b901b 100644
---- a/lttng-context-ipc-ns.c
-+++ b/lttng-context-ipc-ns.c
-@@ -96,7 +96,7 @@ int lttng_add_ipc_ns_to_ctx(struct lttng_ctx **ctx)
- 	field->record = ipc_ns_record;
- 	field->get_value = ipc_ns_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_ipc_ns_to_ctx);
-diff --git a/lttng-context-migratable.c b/lttng-context-migratable.c
-index e3d8ede..65154b8 100644
---- a/lttng-context-migratable.c
-+++ b/lttng-context-migratable.c
-@@ -68,7 +68,7 @@ int lttng_add_migratable_to_ctx(struct lttng_ctx **ctx)
- 	field->record = migratable_record;
- 	field->get_value = migratable_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_migratable_to_ctx);
-diff --git a/lttng-context-mnt-ns.c b/lttng-context-mnt-ns.c
-index b5bb955..cb59776 100644
---- a/lttng-context-mnt-ns.c
-+++ b/lttng-context-mnt-ns.c
-@@ -98,7 +98,7 @@ int lttng_add_mnt_ns_to_ctx(struct lttng_ctx **ctx)
- 	field->record = mnt_ns_record;
- 	field->get_value = mnt_ns_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_mnt_ns_to_ctx);
-diff --git a/lttng-context-need-reschedule.c b/lttng-context-need-reschedule.c
-index f29fb28..94efaa5 100644
---- a/lttng-context-need-reschedule.c
-+++ b/lttng-context-need-reschedule.c
-@@ -68,7 +68,7 @@ int lttng_add_need_reschedule_to_ctx(struct lttng_ctx **ctx)
- 	field->record = need_reschedule_record;
- 	field->get_value = need_reschedule_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_need_reschedule_to_ctx);
-diff --git a/lttng-context-net-ns.c b/lttng-context-net-ns.c
-index 6694037..37de09f 100644
---- a/lttng-context-net-ns.c
-+++ b/lttng-context-net-ns.c
-@@ -97,7 +97,7 @@ int lttng_add_net_ns_to_ctx(struct lttng_ctx **ctx)
- 	field->record = net_ns_record;
- 	field->get_value = net_ns_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_net_ns_to_ctx);
-diff --git a/lttng-context-nice.c b/lttng-context-nice.c
-index 563e805..acaba85 100644
---- a/lttng-context-nice.c
-+++ b/lttng-context-nice.c
-@@ -68,7 +68,7 @@ int lttng_add_nice_to_ctx(struct lttng_ctx **ctx)
- 	field->record = nice_record;
- 	field->get_value = nice_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_nice_to_ctx);
-diff --git a/lttng-context-perf-counters.c b/lttng-context-perf-counters.c
-index 43c4077..6b04d12 100644
---- a/lttng-context-perf-counters.c
-+++ b/lttng-context-perf-counters.c
-@@ -321,7 +321,7 @@ int lttng_add_perf_counter_to_ctx(uint32_t type,
- 	field->u.perf_counter = perf_field;
- 	lttng_context_update(*ctx);
- 
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- 
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
-diff --git a/lttng-context-pid-ns.c b/lttng-context-pid-ns.c
-index f039f26..ccf629d 100644
---- a/lttng-context-pid-ns.c
-+++ b/lttng-context-pid-ns.c
-@@ -98,7 +98,7 @@ int lttng_add_pid_ns_to_ctx(struct lttng_ctx **ctx)
- 	field->record = pid_ns_record;
- 	field->get_value = pid_ns_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_pid_ns_to_ctx);
-diff --git a/lttng-context-pid.c b/lttng-context-pid.c
-index b3caabb..326eabe 100644
---- a/lttng-context-pid.c
-+++ b/lttng-context-pid.c
-@@ -68,7 +68,7 @@ int lttng_add_pid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = pid_record;
- 	field->get_value = pid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_pid_to_ctx);
-diff --git a/lttng-context-ppid.c b/lttng-context-ppid.c
-index ef84ad1..ff25288 100644
---- a/lttng-context-ppid.c
-+++ b/lttng-context-ppid.c
-@@ -90,7 +90,7 @@ int lttng_add_ppid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = ppid_record;
- 	field->get_value = ppid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_ppid_to_ctx);
-diff --git a/lttng-context-preemptible.c b/lttng-context-preemptible.c
-index 328f2a4..867805b 100644
---- a/lttng-context-preemptible.c
-+++ b/lttng-context-preemptible.c
-@@ -86,7 +86,7 @@ int lttng_add_preemptible_to_ctx(struct lttng_ctx **ctx)
- 	field->record = preemptible_record;
- 	field->get_value = preemptible_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_preemptible_to_ctx);
-diff --git a/lttng-context-prio.c b/lttng-context-prio.c
-index b5d21e7..367f7bd 100644
---- a/lttng-context-prio.c
-+++ b/lttng-context-prio.c
-@@ -89,7 +89,7 @@ int lttng_add_prio_to_ctx(struct lttng_ctx **ctx)
- 	field->record = prio_record;
- 	field->get_value = prio_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_prio_to_ctx);
-diff --git a/lttng-context-procname.c b/lttng-context-procname.c
-index 54007d1..8f18ca2 100644
---- a/lttng-context-procname.c
-+++ b/lttng-context-procname.c
-@@ -72,7 +72,7 @@ int lttng_add_procname_to_ctx(struct lttng_ctx **ctx)
- 	field->record = procname_record;
- 	field->get_value = procname_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_procname_to_ctx);
-diff --git a/lttng-context-sgid.c b/lttng-context-sgid.c
-index 61c8d53..2a58cbd 100644
---- a/lttng-context-sgid.c
-+++ b/lttng-context-sgid.c
-@@ -70,7 +70,7 @@ int lttng_add_sgid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = sgid_record;
- 	field->get_value = sgid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_sgid_to_ctx);
-diff --git a/lttng-context-suid.c b/lttng-context-suid.c
-index 66d3ef5..ab3e2a9 100644
---- a/lttng-context-suid.c
-+++ b/lttng-context-suid.c
-@@ -70,7 +70,7 @@ int lttng_add_suid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = suid_record;
- 	field->get_value = suid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_suid_to_ctx);
-diff --git a/lttng-context-tid.c b/lttng-context-tid.c
-index d2a20e6..f6defc4 100644
---- a/lttng-context-tid.c
-+++ b/lttng-context-tid.c
-@@ -71,7 +71,7 @@ int lttng_add_tid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = tid_record;
- 	field->get_value = tid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_tid_to_ctx);
-diff --git a/lttng-context-uid.c b/lttng-context-uid.c
-index 5f11de2..5593852 100644
---- a/lttng-context-uid.c
-+++ b/lttng-context-uid.c
-@@ -70,7 +70,7 @@ int lttng_add_uid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = uid_record;
- 	field->get_value = uid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_uid_to_ctx);
-diff --git a/lttng-context-user-ns.c b/lttng-context-user-ns.c
-index 746e4d9..0ed62e3 100644
---- a/lttng-context-user-ns.c
-+++ b/lttng-context-user-ns.c
-@@ -82,7 +82,7 @@ int lttng_add_user_ns_to_ctx(struct lttng_ctx **ctx)
- 	field->record = user_ns_record;
- 	field->get_value = user_ns_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_user_ns_to_ctx);
-diff --git a/lttng-context-uts-ns.c b/lttng-context-uts-ns.c
-index 7352a3d..283bc73 100644
---- a/lttng-context-uts-ns.c
-+++ b/lttng-context-uts-ns.c
-@@ -96,7 +96,7 @@ int lttng_add_uts_ns_to_ctx(struct lttng_ctx **ctx)
- 	field->record = uts_ns_record;
- 	field->get_value = uts_ns_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_uts_ns_to_ctx);
-diff --git a/lttng-context-vegid.c b/lttng-context-vegid.c
-index 604da2a..1431dac 100644
---- a/lttng-context-vegid.c
-+++ b/lttng-context-vegid.c
-@@ -70,7 +70,7 @@ int lttng_add_vegid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = vegid_record;
- 	field->get_value = vegid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_vegid_to_ctx);
-diff --git a/lttng-context-veuid.c b/lttng-context-veuid.c
-index 983ae6a..a1b5b70 100644
---- a/lttng-context-veuid.c
-+++ b/lttng-context-veuid.c
-@@ -70,7 +70,7 @@ int lttng_add_veuid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = veuid_record;
- 	field->get_value = veuid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_veuid_to_ctx);
-diff --git a/lttng-context-vgid.c b/lttng-context-vgid.c
-index e08c77d..0eed24e 100644
---- a/lttng-context-vgid.c
-+++ b/lttng-context-vgid.c
-@@ -70,7 +70,7 @@ int lttng_add_vgid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = vgid_record;
- 	field->get_value = vgid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_vgid_to_ctx);
-diff --git a/lttng-context-vpid.c b/lttng-context-vpid.c
-index 982ce55..b5b6ce0 100644
---- a/lttng-context-vpid.c
-+++ b/lttng-context-vpid.c
-@@ -83,7 +83,7 @@ int lttng_add_vpid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = vpid_record;
- 	field->get_value = vpid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_vpid_to_ctx);
-diff --git a/lttng-context-vppid.c b/lttng-context-vppid.c
-index 66d6382..347ac63 100644
---- a/lttng-context-vppid.c
-+++ b/lttng-context-vppid.c
-@@ -112,7 +112,7 @@ int lttng_add_vppid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = vppid_record;
- 	field->get_value = vppid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_vppid_to_ctx);
-diff --git a/lttng-context-vsgid.c b/lttng-context-vsgid.c
-index aca5eda..3daf889 100644
---- a/lttng-context-vsgid.c
-+++ b/lttng-context-vsgid.c
-@@ -70,7 +70,7 @@ int lttng_add_vsgid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = vsgid_record;
- 	field->get_value = vsgid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_vsgid_to_ctx);
-diff --git a/lttng-context-vsuid.c b/lttng-context-vsuid.c
-index 66c1300..d7fb0db 100644
---- a/lttng-context-vsuid.c
-+++ b/lttng-context-vsuid.c
-@@ -70,7 +70,7 @@ int lttng_add_vsuid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = vsuid_record;
- 	field->get_value = vsuid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_vsuid_to_ctx);
-diff --git a/lttng-context-vtid.c b/lttng-context-vtid.c
-index 8fd68a8..e81ba0e 100644
---- a/lttng-context-vtid.c
-+++ b/lttng-context-vtid.c
-@@ -83,7 +83,7 @@ int lttng_add_vtid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = vtid_record;
- 	field->get_value = vtid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_vtid_to_ctx);
-diff --git a/lttng-context-vuid.c b/lttng-context-vuid.c
-index 6ae575f..33e22d3 100644
---- a/lttng-context-vuid.c
-+++ b/lttng-context-vuid.c
-@@ -70,7 +70,7 @@ int lttng_add_vuid_to_ctx(struct lttng_ctx **ctx)
- 	field->record = vuid_record;
- 	field->get_value = vuid_get_value;
- 	lttng_context_update(*ctx);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_add_vuid_to_ctx);
-diff --git a/lttng-context.c b/lttng-context.c
-index eb4534c..a6d4ee6 100644
---- a/lttng-context.c
-+++ b/lttng-context.c
-@@ -11,7 +11,7 @@
- #include <linux/list.h>
- #include <linux/mutex.h>
- #include <linux/slab.h>
--#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_all() */
-+#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_mappings() */
- #include <lttng-events.h>
- #include <lttng-tracer.h>
- 
-diff --git a/lttng-events.c b/lttng-events.c
-index a1c8445..401f646 100644
---- a/lttng-events.c
-+++ b/lttng-events.c
-@@ -30,7 +30,7 @@
- #include <linux/uuid.h>
- #include <linux/dmi.h>
- 
--#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_all() */
-+#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_mappings() */
- #include <wrapper/random.h>
- #include <wrapper/tracepoint.h>
- #include <wrapper/list.h>
-@@ -2753,9 +2753,9 @@ end:
-  * Registers a transport which can be used as output to extract the data out of
-  * LTTng. The module calling this registration function must ensure that no
-  * trap-inducing code will be executed by the transport functions. E.g.
-- * vmalloc_sync_all() must be called between a vmalloc and the moment the memory
-+ * vmalloc_sync_mappings() must be called between a vmalloc and the moment the memory
-  * is made visible to the transport function. This registration acts as a
-- * vmalloc_sync_all. Therefore, only if the module allocates virtual memory
-+ * vmalloc_sync_mappings. Therefore, only if the module allocates virtual memory
-  * after its registration must it synchronize the TLBs.
-  */
- void lttng_transport_register(struct lttng_transport *transport)
-@@ -2763,9 +2763,9 @@ void lttng_transport_register(struct lttng_transport *transport)
- 	/*
- 	 * Make sure no page fault can be triggered by the module about to be
- 	 * registered. We deal with this here so we don't have to call
--	 * vmalloc_sync_all() in each module's init.
-+	 * vmalloc_sync_mappings() in each module's init.
- 	 */
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 
- 	mutex_lock(&sessions_mutex);
- 	list_add_tail(&transport->node, &lttng_transport_list);
-diff --git a/lttng-ring-buffer-client.h b/lttng-ring-buffer-client.h
-index d5c512c..ff62830 100644
---- a/lttng-ring-buffer-client.h
-+++ b/lttng-ring-buffer-client.h
-@@ -10,7 +10,7 @@
- #include <linux/module.h>
- #include <linux/types.h>
- #include <lib/bitfield.h>
--#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_all() */
-+#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_mappings() */
- #include <wrapper/trace-clock.h>
- #include <lttng-events.h>
- #include <lttng-tracer.h>
-@@ -766,7 +766,7 @@ static int __init lttng_ring_buffer_client_init(void)
- 	 * This vmalloc sync all also takes care of the lib ring buffer
- 	 * vmalloc'd module pages when it is built as a module into LTTng.
- 	 */
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	lttng_transport_register(&lttng_relay_transport);
- 	return 0;
- }
-diff --git a/lttng-ring-buffer-metadata-client.h b/lttng-ring-buffer-metadata-client.h
-index 17ffd75..a098b8d 100644
---- a/lttng-ring-buffer-metadata-client.h
-+++ b/lttng-ring-buffer-metadata-client.h
-@@ -9,7 +9,7 @@
- 
- #include <linux/module.h>
- #include <linux/types.h>
--#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_all() */
-+#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_mappings() */
- #include <lttng-events.h>
- #include <lttng-tracer.h>
- 
-@@ -428,7 +428,7 @@ static int __init lttng_ring_buffer_client_init(void)
- 	 * This vmalloc sync all also takes care of the lib ring buffer
- 	 * vmalloc'd module pages when it is built as a module into LTTng.
- 	 */
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	lttng_transport_register(&lttng_relay_transport);
- 	return 0;
- }
-diff --git a/lttng-syscalls.c b/lttng-syscalls.c
-index fb14f6b..97f1ba9 100644
---- a/lttng-syscalls.c
-+++ b/lttng-syscalls.c
-@@ -760,7 +760,7 @@ int lttng_syscalls_register(struct lttng_channel *chan, void *filter)
- 	struct lttng_kernel_event ev;
- 	int ret;
- 
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 
- 	if (!chan->sc_table) {
- 		/* create syscall table mapping syscall to events */
-diff --git a/probes/lttng-kprobes.c b/probes/lttng-kprobes.c
-index c0a15e4..a44eaa1 100644
---- a/probes/lttng-kprobes.c
-+++ b/probes/lttng-kprobes.c
-@@ -132,7 +132,7 @@ int lttng_kprobes_register(const char *name,
- 	 * Well.. kprobes itself puts the page fault handler on the blacklist,
- 	 * but we can never be too careful.
- 	 */
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 
- 	ret = register_kprobe(&event->u.kprobe.kp);
- 	if (ret)
-diff --git a/probes/lttng-kretprobes.c b/probes/lttng-kretprobes.c
-index 4b18d46..ab98ff2 100644
---- a/probes/lttng-kretprobes.c
-+++ b/probes/lttng-kretprobes.c
-@@ -221,7 +221,7 @@ int lttng_kretprobes_register(const char *name,
- 	 * Well.. kprobes itself puts the page fault handler on the blacklist,
- 	 * but we can never be too careful.
- 	 */
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 
- 	ret = register_kretprobe(&lttng_krp->krp);
- 	if (ret)
-diff --git a/probes/lttng-tracepoint-event-impl.h b/probes/lttng-tracepoint-event-impl.h
-index 321cdfa..77b8638 100644
---- a/probes/lttng-tracepoint-event-impl.h
-+++ b/probes/lttng-tracepoint-event-impl.h
-@@ -15,7 +15,7 @@
- #include <probes/lttng.h>
- #include <probes/lttng-types.h>
- #include <probes/lttng-probe-user.h>
--#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_all() */
-+#include <wrapper/vmalloc.h>	/* for wrapper_vmalloc_sync_mappings() */
- #include <wrapper/ringbuffer/frontend_types.h>
- #include <wrapper/ringbuffer/backend.h>
- #include <wrapper/rcu.h>
-@@ -1391,7 +1391,7 @@ static __used struct lttng_probe_desc TP_ID(__probe_desc___, TRACE_SYSTEM) = {
- #ifndef TP_MODULE_NOINIT
- static int TP_ID(__lttng_events_init__, TRACE_SYSTEM)(void)
- {
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	return lttng_probe_register(&TP_ID(__probe_desc___, TRACE_SYSTEM));
- }
- 
-diff --git a/probes/lttng-uprobes.c b/probes/lttng-uprobes.c
-index 64d8237..bc10128 100644
---- a/probes/lttng-uprobes.c
-+++ b/probes/lttng-uprobes.c
-@@ -161,7 +161,7 @@ int lttng_uprobes_add_callsite(struct lttng_event *event,
- 	}
- 
- 	/* Ensure the memory we just allocated don't trigger page faults. */
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 
- 	uprobe_handler->event = event;
- 	uprobe_handler->up_consumer.handler = lttng_uprobes_handler_pre;
-diff --git a/probes/lttng.c b/probes/lttng.c
-index 383202c..05bc138 100644
---- a/probes/lttng.c
-+++ b/probes/lttng.c
-@@ -116,7 +116,7 @@ int __init lttng_logger_init(void)
- {
- 	int ret = 0;
- 
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 
- 	/* /dev/lttng-logger */
- 	ret = misc_register(&logger_dev);
-diff --git a/tests/probes/lttng-test.c b/tests/probes/lttng-test.c
-index e347639..b450e7d 100644
---- a/tests/probes/lttng-test.c
-+++ b/tests/probes/lttng-test.c
-@@ -97,7 +97,7 @@ int __init lttng_test_init(void)
- 	int ret = 0;
- 
- 	(void) wrapper_lttng_fixup_sig(THIS_MODULE);
--	wrapper_vmalloc_sync_all();
-+	wrapper_vmalloc_sync_mappings();
- 	lttng_test_filter_event_dentry =
- 			proc_create_data(LTTNG_TEST_FILTER_EVENT_FILE,
- 				S_IRUGO | S_IWUGO, NULL,
-diff --git a/wrapper/vmalloc.h b/wrapper/vmalloc.h
-index 0c3eb86..54715b5 100644
---- a/wrapper/vmalloc.h
-+++ b/wrapper/vmalloc.h
-@@ -21,8 +21,35 @@
- #include <linux/kallsyms.h>
- #include <wrapper/kallsyms.h>
- 
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
-+
-+static inline
-+void wrapper_vmalloc_sync_mappings(void)
-+{
-+	void (*vmalloc_sync_mappings_sym)(void);
-+
-+	vmalloc_sync_mappings_sym = (void *) kallsyms_lookup_funcptr("vmalloc_sync_mappings");
-+	if (vmalloc_sync_mappings_sym) {
-+		vmalloc_sync_mappings_sym();
-+	} else {
-+#ifdef CONFIG_X86
-+		/*
-+		 * Only x86 needs vmalloc_sync_mappings to make sure LTTng does not
-+		 * trigger recursive page faults.
-+		 */
-+		printk_once(KERN_WARNING "LTTng: vmalloc_sync_mappings symbol lookup failed.\n");
-+		printk_once(KERN_WARNING "Page fault handler and NMI tracing might trigger faults.\n");
-+#endif
-+	}
-+}
-+
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
-+
-+/*
-+ * Map vmalloc_sync_mappings to vmalloc_sync_all() on kernels before 5.7.
-+ */
- static inline
--void wrapper_vmalloc_sync_all(void)
-+void wrapper_vmalloc_sync_mappings(void)
- {
- 	void (*vmalloc_sync_all_sym)(void);
- 
-@@ -40,13 +67,29 @@ void wrapper_vmalloc_sync_all(void)
- #endif
- 	}
- }
-+
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
-+
- #else
- 
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
-+
-+static inline
-+void wrapper_vmalloc_sync_mappings(void)
-+{
-+	return vmalloc_sync_mappings();
-+}
-+
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
-+
- static inline
--void wrapper_vmalloc_sync_all(void)
-+void wrapper_vmalloc_sync_mappings(void)
- {
- 	return vmalloc_sync_all();
- }
-+
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
-+
- #endif
- 
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,12,0))
-@@ -61,7 +104,7 @@ void *lttng_kvmalloc_node(unsigned long size, gfp_t flags, int node)
- 		 * Make sure we don't trigger recursive page faults in the
- 		 * tracing fast path.
- 		 */
--		wrapper_vmalloc_sync_all();
-+		wrapper_vmalloc_sync_mappings();
- 	}
- 	return ret;
- }
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-missing-wrapper-rename-to-wrapper_vmalloc_sync_m.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-missing-wrapper-rename-to-wrapper_vmalloc_sync_m.patch
deleted file mode 100644
index 807fe93..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-Fix-missing-wrapper-rename-to-wrapper_vmalloc_sync_m.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 4d1817c129310945bf0b8227ebc0fbb4f6299dc7 Mon Sep 17 00:00:00 2001
-From: Michael Jeanson <mjeanson@efficios.com>
-Date: Wed, 6 May 2020 11:03:32 -0400
-Subject: [PATCH 2/4] Fix: missing wrapper rename to
- wrapper_vmalloc_sync_mappings
-
-Upstream-Status: Backport [https://github.com/lttng/lttng-modules/commit/c1ba644f2edf6a5bc030111ce4167a8798cc1053]
-
-Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Change-Id: Idf7082a980c5a604bfef5c69906678b5083a9bbf
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
----
- wrapper/vmalloc.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/wrapper/vmalloc.h b/wrapper/vmalloc.h
-index 54715b5..5d0b389 100644
---- a/wrapper/vmalloc.h
-+++ b/wrapper/vmalloc.h
-@@ -216,7 +216,7 @@ void *lttng_kvmalloc_node(unsigned long size, gfp_t flags, int node)
- 		 * Make sure we don't trigger recursive page faults in the
- 		 * tracing fast path.
- 		 */
--		wrapper_vmalloc_sync_all();
-+		wrapper_vmalloc_sync_mappings();
- 	}
- 	return ret;
- }
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-Use-vmalloc_sync_mappings-on-kernel-5.6-as-well.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-Use-vmalloc_sync_mappings-on-kernel-5.6-as-well.patch
deleted file mode 100644
index 48d7e2f..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-modules/0003-Fix-Use-vmalloc_sync_mappings-on-kernel-5.6-as-well.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 23cfd7b53ec1521d3c23ceddfda49352c2d349dc Mon Sep 17 00:00:00 2001
-From: Ovidiu Panait <ovidiu.panait@windriver.com>
-Date: Thu, 14 May 2020 13:05:24 +0300
-Subject: [PATCH 3/4] Fix: Use vmalloc_sync_mappings on kernel 5.6 as well
-
-Upstream commit [1], that got rid of vmalloc_sync_all and introduced
-vmalloc_sync_mappings, is a v5.6 commit:
-$ git tag --contains 763802b53a427ed3cbd419dbba255c414fdd9e7c
-v5.6
-v5.6-rc7
-v5.7-rc1
-v5.7-rc2
-v5.7-rc3
-
-Extend the LINUX_VERSION_CODE check to v5.6 to fix the following warnings:
-...
-[  483.242037] LTTng: vmalloc_sync_all symbol lookup failed.
-[  483.257056] Page fault handler and NMI tracing might trigger faults.
-...
-
-[1] https://github.com/torvalds/linux/commit/763802b53a427ed3cbd419dbba255c414fdd9e7c
-
-Upstream-Status: Backport [https://github.com/lttng/lttng-modules/commit/da356b324dfc160e09b8966b691792037badf455]
-
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
----
- wrapper/vmalloc.h | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/wrapper/vmalloc.h b/wrapper/vmalloc.h
-index 5d0b389..d905f60 100644
---- a/wrapper/vmalloc.h
-+++ b/wrapper/vmalloc.h
-@@ -21,7 +21,7 @@
- #include <linux/kallsyms.h>
- #include <wrapper/kallsyms.h>
- 
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0))
- 
- static inline
- void wrapper_vmalloc_sync_mappings(void)
-@@ -43,7 +43,7 @@ void wrapper_vmalloc_sync_mappings(void)
- 	}
- }
- 
--#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)) */
- 
- /*
-  * Map vmalloc_sync_mappings to vmalloc_sync_all() on kernels before 5.7.
-@@ -68,11 +68,11 @@ void wrapper_vmalloc_sync_mappings(void)
- 	}
- }
- 
--#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)) */
- 
- #else
- 
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0))
- 
- static inline
- void wrapper_vmalloc_sync_mappings(void)
-@@ -80,7 +80,7 @@ void wrapper_vmalloc_sync_mappings(void)
- 	return vmalloc_sync_mappings();
- }
- 
--#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)) */
- 
- static inline
- void wrapper_vmalloc_sync_mappings(void)
-@@ -88,7 +88,7 @@ void wrapper_vmalloc_sync_mappings(void)
- 	return vmalloc_sync_all();
- }
- 
--#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,7,0)) */
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)) */
- 
- #endif
- 
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Update-Use-vmalloc_sync_mappings-for-stable-kernels.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Update-Use-vmalloc_sync_mappings-for-stable-kernels.patch
deleted file mode 100644
index a0b8704..0000000
--- a/poky/meta/recipes-kernel/lttng/lttng-modules/0004-Update-Use-vmalloc_sync_mappings-for-stable-kernels.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From f419315f28a1da656c4faa8a852a2928ce38c72d Mon Sep 17 00:00:00 2001
-From: Ovidiu Panait <ovidiu.panait@windriver.com>
-Date: Thu, 14 May 2020 14:27:17 +0300
-Subject: [PATCH 4/4] Update: Use vmalloc_sync_mappings for stable kernels
-
-Starting from v5.4.28/v5.2.37/v4.19.113/v4.14.175/v4.9.218/v4.4.218, stable
-kernel branches backported v5.6 upstream commit [1], causing the following
-warnings:
-...
-[  483.242037] LTTng: vmalloc_sync_all symbol lookup failed.
-[  483.257056] Page fault handler and NMI tracing might trigger faults.
-...
-
-Extend check for vmalloc_sync_mappings for stable kernels as well.
-
-[1] https://github.com/torvalds/linux/commit/763802b53a427ed3cbd419dbba255c414fdd9e7c
-
-[ Edit: minor coding style fix by Mathieu Desnoyers. ]
-
-Upstream-Status: Backport [https://github.com/lttng/lttng-modules/commit/5939591f87dc291bc858caf72decfb8569d802e3]
-
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
----
- wrapper/vmalloc.h | 17 +++++++++++++++--
- 1 file changed, 15 insertions(+), 2 deletions(-)
-
-diff --git a/wrapper/vmalloc.h b/wrapper/vmalloc.h
-index d905f60..c7538ae 100644
---- a/wrapper/vmalloc.h
-+++ b/wrapper/vmalloc.h
-@@ -20,8 +20,15 @@
- 
- #include <linux/kallsyms.h>
- #include <wrapper/kallsyms.h>
-+#include <lttng-kernel-version.h>
- 
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) \
-+  || LTTNG_KERNEL_RANGE(5,4,28, 5,5,0)            \
-+  || LTTNG_KERNEL_RANGE(5,2,37, 5,3,0)            \
-+  || LTTNG_KERNEL_RANGE(4,19,113, 4,20,0)         \
-+  || LTTNG_KERNEL_RANGE(4,14,175, 4,15,0)         \
-+  || LTTNG_KERNEL_RANGE(4,9,218, 4,10,0)          \
-+  || LTTNG_KERNEL_RANGE(4,4,218, 4,5,0))
- 
- static inline
- void wrapper_vmalloc_sync_mappings(void)
-@@ -72,7 +79,13 @@ void wrapper_vmalloc_sync_mappings(void)
- 
- #else
- 
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0) \
-+  || LTTNG_KERNEL_RANGE(5,4,28, 5,5,0)            \
-+  || LTTNG_KERNEL_RANGE(5,2,37, 5,3,0)            \
-+  || LTTNG_KERNEL_RANGE(4,19,113, 4,20,0)         \
-+  || LTTNG_KERNEL_RANGE(4,14,175, 4,15,0)         \
-+  || LTTNG_KERNEL_RANGE(4,9,218, 4,10,0)          \
-+  || LTTNG_KERNEL_RANGE(4,4,218, 4,5,0))
- 
- static inline
- void wrapper_vmalloc_sync_mappings(void)
--- 
-2.17.1
-
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.0.bb b/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.1.bb
similarity index 74%
rename from poky/meta/recipes-kernel/lttng/lttng-modules_2.12.0.bb
rename to poky/meta/recipes-kernel/lttng/lttng-modules_2.12.1.bb
index 4a6c42e..8d3fb47 100644
--- a/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.0.bb
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules_2.12.1.bb
@@ -11,14 +11,9 @@
 SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
            file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \
            file://BUILD_RUNTIME_BUG_ON-vs-gcc7.patch \
-           file://0001-Update-for-kernel-5.7-use-vmalloc_sync_mappings-on-k.patch \
-           file://0002-Fix-missing-wrapper-rename-to-wrapper_vmalloc_sync_m.patch \
-           file://0003-Fix-Use-vmalloc_sync_mappings-on-kernel-5.6-as-well.patch \
-           file://0004-Update-Use-vmalloc_sync_mappings-for-stable-kernels.patch \
            "
 
-SRC_URI[md5sum] = "be252df5013ea03894921d0b493c7b6c"
-SRC_URI[sha256sum] = "efeb2ae60e96dbe9a9b342d3a80dfc7642f06a8c09686089d491ad696bb98f4d"
+SRC_URI[sha256sum] = "639c03bf8f0e920567f45c96cc7ef749a8fc29ff7fb3fb97263d67f66fb71aef"
 
 export INSTALL_MOD_DIR="kernel/lttng-modules"
 
@@ -37,11 +32,11 @@
 BBCLASSEXTEND = "devupstream:target"
 LIC_FILES_CHKSUM_class-devupstream = "file://LICENSE;md5=3f882d431dc0f32f1f44c0707aa41128"
 DEFAULT_PREFERENCE_class-devupstream = "-1"
-SRC_URI_class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.12 \
+SRC_URI_class-devupstream = "git://git.lttng.org/lttng-modules;branch=stable-2.11 \
            file://Makefile-Do-not-fail-if-CONFIG_TRACEPOINTS-is-not-en.patch \
            file://BUILD_RUNTIME_BUG_ON-vs-gcc7.patch \
            "
 SRCREV_class-devupstream = "17c413953603f063f2a9d6c3788bec914ce6f955"
-PV_class-devupstream = "2.12.0+git${SRCPV}"
+PV_class-devupstream = "2.11.2+git${SRCPV}"
 S_class-devupstream = "${WORKDIR}/git"
 SRCREV_FORMAT ?= "lttng_git"
diff --git a/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.0.bb b/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.1.bb
similarity index 97%
rename from poky/meta/recipes-kernel/lttng/lttng-tools_2.12.0.bb
rename to poky/meta/recipes-kernel/lttng/lttng-tools_2.12.1.bb
index 148a792..094e33d 100644
--- a/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.0.bb
+++ b/poky/meta/recipes-kernel/lttng/lttng-tools_2.12.1.bb
@@ -36,8 +36,7 @@
            file://0001-tests-gen-ust-events-ns-tp.h-Fix-build-with-musl-lib.patch \
            "
 
-SRC_URI[md5sum] = "4592201ea981f0722438345fb1f009d2"
-SRC_URI[sha256sum] = "405661d27617dc79a42712174a051a45c7ca12d167576c0d93f2de708ed29445"
+SRC_URI[sha256sum] = "0de7afc1f40a5acbede933cdfd6cf47b32ff84d02e170a1321f7fc86141585b8"
 
 inherit autotools ptest pkgconfig useradd python3-dir manpages systemd
 
diff --git a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.2.2.bb b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.2.3.bb
similarity index 97%
rename from poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.2.2.bb
rename to poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.2.3.bb
index d7b0641..e837a05 100644
--- a/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.2.2.bb
+++ b/poky/meta/recipes-multimedia/ffmpeg/ffmpeg_4.2.3.bb
@@ -26,8 +26,7 @@
 SRC_URI = "https://www.ffmpeg.org/releases/${BP}.tar.xz \
            file://mips64_cpu_detection.patch \
            "
-SRC_URI[md5sum] = "348956fc2faa57a2f79bbb84ded9fbc3"
-SRC_URI[sha256sum] = "cb754255ab0ee2ea5f66f8850e1bd6ad5cac1cd855d0a2f4990fb8c668b0d29c"
+SRC_URI[sha256sum] = "9df6c90aed1337634c1fb026fb01c154c29c82a64ea71291ff2da9aacb9aad31"
 
 # Build fails when thumb is enabled: https://bugzilla.yoctoproject.org/show_bug.cgi?id=7717
 ARM_INSTRUCTION_SET_armv4 = "arm"
diff --git a/poky/meta/recipes-multimedia/mpg123/mpg123/sdl2.patch b/poky/meta/recipes-multimedia/mpg123/mpg123/sdl2.patch
deleted file mode 100644
index 9dc9b92..0000000
--- a/poky/meta/recipes-multimedia/mpg123/mpg123/sdl2.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Use libsdl2 instead of libsdl 1.2, which is dead upstream.
-
-Luckily the API that mpg123 use didn't change so this is a trivial change.
-
-Upstream-Status: Submitted [https://sourceforge.net/p/mpg123/bugs/268/]
-Signed-off-by: Ross Burton <ross.burton@intel.com>
-
-diff --git a/configure.ac b/configure.ac
-index 6216d4f..b8d3344 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1694 +1694 @@ do
--			PKG_CHECK_MODULES(SDL, sdl, output_modules="$output_modules sdl" HAVE_SDL="yes", HAVE_SDL="no" check_failed=yes)
-+			PKG_CHECK_MODULES(SDL, sdl2, output_modules="$output_modules sdl" HAVE_SDL="yes", HAVE_SDL="no" check_failed=yes)
diff --git a/poky/meta/recipes-multimedia/mpg123/mpg123_1.25.13.bb b/poky/meta/recipes-multimedia/mpg123/mpg123_1.26.1.bb
similarity index 90%
rename from poky/meta/recipes-multimedia/mpg123/mpg123_1.25.13.bb
rename to poky/meta/recipes-multimedia/mpg123/mpg123_1.26.1.bb
index 6c7b6fa..affbac4 100644
--- a/poky/meta/recipes-multimedia/mpg123/mpg123_1.25.13.bb
+++ b/poky/meta/recipes-multimedia/mpg123/mpg123_1.26.1.bb
@@ -9,10 +9,8 @@
 LICENSE = "LGPLv2.1"
 LIC_FILES_CHKSUM = "file://COPYING;md5=1e86753638d3cf2512528b99079bc4f3"
 
-SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2 \
-           file://sdl2.patch"
-SRC_URI[md5sum] = "294a6c30546504ec3d0deac2b2ea22be"
-SRC_URI[sha256sum] = "90306848359c793fd43b9906e52201df18775742dc3c81c06ab67a806509890a"
+SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2"
+SRC_URI[sha256sum] = "74d6629ab7f3dd9a588b0931528ba7ecfa989a2cad6bf53ffeef9de31b0fe032"
 
 UPSTREAM_CHECK_REGEX = "mpg123-(?P<pver>\d+(\.\d+)+)\.tar"
 
diff --git a/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.6.0.bb b/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.6.1.bb
similarity index 78%
rename from poky/meta/recipes-sato/webkit/wpebackend-fdo_1.6.0.bb
rename to poky/meta/recipes-sato/webkit/wpebackend-fdo_1.6.1.bb
index 3b1dbf1..2fdab42 100644
--- a/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.6.0.bb
+++ b/poky/meta/recipes-sato/webkit/wpebackend-fdo_1.6.1.bb
@@ -12,7 +12,6 @@
 
 REQUIRED_DISTRO_FEATURES = "opengl"
 
-SRC_URI[md5sum] = "456afeed22f6749f7b2a97c11660835d"
 SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "7f5bd7b9d8f97b1655f4dcd39fad92719d0fb3985b251da5802df13aaa09f567"
+SRC_URI[sha256sum] = "740eee3327acfb462b8460519a219e30dc0a870326e88e2ddc4fe2c8de20b1c9"
 
diff --git a/poky/meta/recipes-support/bmap-tools/bmap-tools_3.5.bb b/poky/meta/recipes-support/bmap-tools/bmap-tools_3.5.bb
index 694c5f0..fd57f8f 100644
--- a/poky/meta/recipes-support/bmap-tools/bmap-tools_3.5.bb
+++ b/poky/meta/recipes-support/bmap-tools/bmap-tools_3.5.bb
@@ -22,4 +22,4 @@
 inherit python3native
 inherit setuptools3
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/ca-certificates/ca-certificates_20200601.bb b/poky/meta/recipes-support/ca-certificates/ca-certificates_20200601.bb
index 37ba51c..6f39df7 100644
--- a/poky/meta/recipes-support/ca-certificates/ca-certificates_20200601.bb
+++ b/poky/meta/recipes-support/ca-certificates/ca-certificates_20200601.bb
@@ -25,6 +25,7 @@
            file://0003-update-ca-certificates-use-relative-symlinks-from-ET.patch \
            file://0001-certdata2pem.py-use-python3.patch \
            "
+UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+)"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-support/db/db_5.3.28.bb b/poky/meta/recipes-support/db/db_5.3.28.bb
index 3a0923a..318efcb 100644
--- a/poky/meta/recipes-support/db/db_5.3.28.bb
+++ b/poky/meta/recipes-support/db/db_5.3.28.bb
@@ -109,6 +109,9 @@
 	fi
 
 	chown -R root:root ${D}
+	if ${@bb.utils.contains('PACKAGECONFIG', 'verify', 'false', 'true', d)}; then
+		rm -f ${D}${bindir}/db_verify
+	fi
 }
 
 INSANE_SKIP_${PN} = "dev-so"
diff --git a/poky/meta/recipes-support/debianutils/debianutils_4.9.1.bb b/poky/meta/recipes-support/debianutils/debianutils_4.11.bb
similarity index 83%
rename from poky/meta/recipes-support/debianutils/debianutils_4.9.1.bb
rename to poky/meta/recipes-support/debianutils/debianutils_4.11.bb
index 768f289..ac3d5b0 100644
--- a/poky/meta/recipes-support/debianutils/debianutils_4.9.1.bb
+++ b/poky/meta/recipes-support/debianutils/debianutils_4.11.bb
@@ -1,15 +1,14 @@
 SUMMARY = "Miscellaneous utilities specific to Debian"
 SECTION = "base"
 LICENSE = "GPLv2 & SMAIL_GPL"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=f01a5203d50512fc4830b4332b696a9f"
+LIC_FILES_CHKSUM = "file://debian/copyright;md5=9b912cd0cc654134c0ef3424a0705b94"
 
-SRC_URI = "http://snapshot.debian.org/archive/debian/20191212T145612Z/pool/main/d/${BPN}/${BPN}_${PV}.tar.xz"
+SRC_URI = "${DEBIAN_MIRROR}/main/d/${BPN}/${BPN}_${PV}.tar.xz"
 # the package is taken from snapshots.debian.org; that source is static and goes stale
 # so we check the latest upstream from a directory that does get updated
 UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/d/${BPN}/"
 
-SRC_URI[md5sum] = "95633416680bfd249b7cb07d94137048"
-SRC_URI[sha256sum] = "af826685d9c56abfa873e84cd392539cd363cb0ba04a09d21187377e1b764091"
+SRC_URI[sha256sum] = "bb5ce6290696b0d623377521ed217f484aa98f7346c5f7c48f9ae3e1acfb7151"
 
 inherit autotools update-alternatives
 
diff --git a/poky/meta/recipes-support/gnutls/gnutls_3.6.13.bb b/poky/meta/recipes-support/gnutls/gnutls_3.6.14.bb
similarity index 93%
rename from poky/meta/recipes-support/gnutls/gnutls_3.6.13.bb
rename to poky/meta/recipes-support/gnutls/gnutls_3.6.14.bb
index f56d42a..a285e5a 100644
--- a/poky/meta/recipes-support/gnutls/gnutls_3.6.13.bb
+++ b/poky/meta/recipes-support/gnutls/gnutls_3.6.14.bb
@@ -21,8 +21,7 @@
            file://arm_eabi.patch \
 "
 
-SRC_URI[md5sum] = "bb1fe696a11543433785b4fc70ca225f"
-SRC_URI[sha256sum] = "32041df447d9f4644570cf573c9f60358e865637d69b7e59d1159b7240b52f38"
+SRC_URI[sha256sum] = "5630751adec7025b8ef955af4d141d00d252a985769f51b4059e5affa3d39d63"
 
 inherit autotools texinfo pkgconfig gettext lib_package gtk-doc
 
diff --git a/poky/meta/recipes-support/libcap/libcap_2.34.bb b/poky/meta/recipes-support/libcap/libcap_2.36.bb
similarity index 93%
rename from poky/meta/recipes-support/libcap/libcap_2.34.bb
rename to poky/meta/recipes-support/libcap/libcap_2.36.bb
index a3bd969..2c98db6 100644
--- a/poky/meta/recipes-support/libcap/libcap_2.34.bb
+++ b/poky/meta/recipes-support/libcap/libcap_2.36.bb
@@ -12,8 +12,7 @@
            file://0002-tests-do-not-run-target-executables.patch \
            file://0001-tests-do-not-statically-link-a-test.patch \
            "
-SRC_URI[md5sum] = "66028a8080a0891c54b202bb5e749035"
-SRC_URI[sha256sum] = "aecdd42015955068d3d94b7caa9590fcb2de5df53ce53c61a21b912bfc0b1611"
+SRC_URI[sha256sum] = "5048c849bdbbe24d2ca59463142cb279abec5edf3ab6731ab35a596bcf538a49"
 
 UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/linux/libs/security/linux-privs/${BPN}2/"
 
diff --git a/poky/meta/recipes-support/libksba/libksba/ksba-add-pkgconfig-support.patch b/poky/meta/recipes-support/libksba/libksba/ksba-add-pkgconfig-support.patch
index 5afe6de..ebb7fa5 100644
--- a/poky/meta/recipes-support/libksba/libksba/ksba-add-pkgconfig-support.patch
+++ b/poky/meta/recipes-support/libksba/libksba/ksba-add-pkgconfig-support.patch
@@ -1,3 +1,8 @@
+From 7bd2b060e9ea3e2ff11e67d1e98ab882819b28b7 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Mon, 3 Dec 2012 18:17:31 +0800
+Subject: [PATCH] libksba: add pkgconfig support
+
 Upstream-Status: Denied
 
 Add pkgconfig support to libksba.
@@ -6,78 +11,49 @@
 
 Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
 
-Index: libksba-1.3.5/Makefile.am
-===================================================================
---- libksba-1.3.5.orig/Makefile.am
-+++ libksba-1.3.5/Makefile.am
-@@ -20,6 +20,9 @@
- 
- ACLOCAL_AMFLAGS = -I m4 -I gl/m4
- 
-+pkgconfigdir = ${libdir}/pkgconfig
-+pkgconfig_DATA = ksba.pc
-+
- # (A suitable gitlog-to-changelog script can be found in GnuPG master.)
- GITLOG_TO_CHANGELOG=gitlog-to-changelog
- 
-Index: libksba-1.3.5/configure.ac
-===================================================================
---- libksba-1.3.5.orig/configure.ac
-+++ libksba-1.3.5/configure.ac
-@@ -414,6 +414,7 @@ gl/Makefile
- src/Makefile
- src/ksba-config
- src/versioninfo.rc
-+ksba.pc
- tests/Makefile
- doc/Makefile
- ])
-Index: libksba-1.3.5/ksba.pc.in
-===================================================================
---- /dev/null
-+++ libksba-1.3.5/ksba.pc.in
-@@ -0,0 +1,17 @@
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+libdir=@libdir@
-+includedir=@includedir@
-+
-+# API info
-+api_version=@KSBA_CONFIG_API_VERSION@
-+host=@KSBA_CONFIG_HOST@
-+
-+Name: ksba
-+Description: Libksba provides an easy API to create and parse X.509 and CMS related objects
-+Requires:
-+Version: @VERSION@
-+Libs: -L${libdir} -lksba
-+Libs.private: -L${libdir} -lgpg-error
-+Cflags: -I${includedir}
-+
-Index: libksba-1.3.5/src/ksba.m4
-===================================================================
---- libksba-1.3.5.orig/src/ksba.m4
-+++ libksba-1.3.5/src/ksba.m4
-@@ -22,18 +22,7 @@ dnl with a changed API.
+diff --git a/src/ksba.m4 b/src/ksba.m4
+index ad8de4f..af903ad 100644
+--- a/src/ksba.m4
++++ b/src/ksba.m4
+@@ -22,37 +22,6 @@ dnl with a changed API.
  dnl
  AC_DEFUN([AM_PATH_KSBA],
- [AC_REQUIRE([AC_CANONICAL_HOST])
-- AC_ARG_WITH(ksba-prefix,
--            AC_HELP_STRING([--with-ksba-prefix=PFX],
--                           [prefix where KSBA is installed (optional)]),
+ [ AC_REQUIRE([AC_CANONICAL_HOST])
+-  dnl --with-libksba-prefix=PFX is the preferred name for this option,
+-  dnl since that is consistent with how our three siblings use the directory/
+-  dnl package name in --with-$dir_name-prefix=PFX.
+-  AC_ARG_WITH(libksba-prefix,
+-              AC_HELP_STRING([--with-libksba-prefix=PFX],
+-                             [prefix where KSBA is installed (optional)]),
 -     ksba_config_prefix="$withval", ksba_config_prefix="")
+-
+-  dnl Accept --with-ksba-prefix and make it work the same as
+-  dnl --with-libksba-prefix above, for backwards compatibility,
+-  dnl but do not document this old, inconsistently-named option.
+-  AC_ARG_WITH(ksba-prefix,,
+-     ksba_config_prefix="$withval", ksba_config_prefix="")
+-
 -  if test x$ksba_config_prefix != x ; then
--     ksba_config_args="$ksba_config_args --prefix=$ksba_config_prefix"
--     if test x${KSBA_CONFIG+set} != xset ; then
--        KSBA_CONFIG=$ksba_config_prefix/bin/ksba-config
--     fi
+-    if test x${KSBA_CONFIG+set} != xset ; then
+-      KSBA_CONFIG=$ksba_config_prefix/bin/ksba-config
+-    fi
+-  fi
+-
+-  use_gpgrt_config=""
+-  if test x"$KSBA_CONFIG" = x -a x"$GPGRT_CONFIG" != x -a "$GPGRT_CONFIG" != "no"; then
+-    if $GPGRT_CONFIG ksba --exists; then
+-      KSBA_CONFIG="$GPGRT_CONFIG ksba"
+-      AC_MSG_NOTICE([Use gpgrt-config as ksba-config])
+-      use_gpgrt_config=yes
+-    fi
+-  fi
+-  if test -z "$use_gpgrt_config"; then
+-    AC_PATH_PROG(KSBA_CONFIG, ksba-config, no)
 -  fi
  
--  AC_PATH_PROG(KSBA_CONFIG, ksba-config, no)
    tmp=ifelse([$1], ,1:1.0.0,$1)
    if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
-      req_ksba_api=`echo "$tmp"     | sed 's/\(.*\):\(.*\)/\1/'`
-@@ -43,48 +32,13 @@ AC_DEFUN([AM_PATH_KSBA],
+@@ -63,56 +32,13 @@ AC_DEFUN([AM_PATH_KSBA],
       min_ksba_version="$tmp"
    fi
  
@@ -90,7 +66,11 @@
 -               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
 -    req_micro=`echo $min_ksba_version | \
 -               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
--    ksba_config_version=`$KSBA_CONFIG $ksba_config_args --version`
+-    if test -z "$use_gpgrt_config"; then
+-      ksba_config_version=`$KSBA_CONFIG --version`
+-    else
+-      ksba_config_version=`$KSBA_CONFIG --modversion`
+-    fi
 -    major=`echo $ksba_config_version | \
 -               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
 -    minor=`echo $ksba_config_version | \
@@ -124,24 +104,32 @@
       # Even if we have a recent libksba, we should check that the
       # API is compatible.
       if test "$req_ksba_api" -gt 0 ; then
--        tmp=`$KSBA_CONFIG --api-version 2>/dev/null || echo 0`
+-        if test -z "$use_gpgrt_config"; then
+-          tmp=`$KSBA_CONFIG --api-version 2>/dev/null || echo 0`
+-	else
+-          tmp=`$KSBA_CONFIG --variable=api_version 2>/dev/null || echo 0`
+-	fi
 +        tmp=`$PKG_CONFIG --variable=api_version ksba`
          if test "$tmp" -gt 0 ; then
             AC_MSG_CHECKING([KSBA API version])
             if test "$req_ksba_api" -eq "$tmp" ; then
-@@ -97,10 +51,8 @@ AC_DEFUN([AM_PATH_KSBA],
+@@ -125,14 +51,8 @@ AC_DEFUN([AM_PATH_KSBA],
       fi
    fi
    if test $ok = yes; then
--    KSBA_CFLAGS=`$KSBA_CONFIG $ksba_config_args --cflags`
--    KSBA_LIBS=`$KSBA_CONFIG $ksba_config_args --libs`
+-    KSBA_CFLAGS=`$KSBA_CONFIG --cflags`
+-    KSBA_LIBS=`$KSBA_CONFIG --libs`
      ifelse([$2], , :, [$2])
--    libksba_config_host=`$LIBKSBA_CONFIG $ksba_config_args --host 2>/dev/null || echo none`
+-    if test -z "$use_gpgrt_config"; then
+-      libksba_config_host=`$KSBA_CONFIG --host 2>/dev/null || echo none`
+-    else
+-      libksba_config_host=`$KSBA_CONFIG --variable=host 2>/dev/null || echo none`
+-    fi
 +    libksba_config_host=`$PKG_CONFIG --variable=host ksba`
      if test x"$libksba_config_host" != xnone ; then
        if test x"$libksba_config_host" != x"$host" ; then
    AC_MSG_WARN([[
-@@ -114,8 +66,6 @@ AC_DEFUN([AM_PATH_KSBA],
+@@ -146,8 +66,6 @@ AC_DEFUN([AM_PATH_KSBA],
        fi
      fi
    else
diff --git a/poky/meta/recipes-support/libksba/libksba_1.3.5.bb b/poky/meta/recipes-support/libksba/libksba_1.4.0.bb
similarity index 87%
rename from poky/meta/recipes-support/libksba/libksba_1.3.5.bb
rename to poky/meta/recipes-support/libksba/libksba_1.4.0.bb
index 336d7f8..a9daf22 100644
--- a/poky/meta/recipes-support/libksba/libksba_1.3.5.bb
+++ b/poky/meta/recipes-support/libksba/libksba_1.4.0.bb
@@ -19,8 +19,7 @@
 SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
            file://ksba-add-pkgconfig-support.patch"
 
-SRC_URI[md5sum] = "8302a3e263a7c630aa7dea7d341f07a2"
-SRC_URI[sha256sum] = "41444fd7a6ff73a79ad9728f985e71c9ba8cd3e5e53358e70d5f066d35c1a340"
+SRC_URI[sha256sum] = "bfe6a8e91ff0f54d8a329514db406667000cb207238eded49b599761bfca41b6"
 
 do_configure_prepend () {
 	# Else these could be used in preference to those in aclocal-copy
diff --git a/poky/meta/recipes-support/libsoup/libsoup-2.4_2.70.0.bb b/poky/meta/recipes-support/libsoup/libsoup-2.4_2.70.0.bb
index d10db79..d6425bd 100644
--- a/poky/meta/recipes-support/libsoup/libsoup-2.4_2.70.0.bb
+++ b/poky/meta/recipes-support/libsoup/libsoup-2.4_2.70.0.bb
@@ -40,4 +40,4 @@
 # glib-networking is needed for SSL, proxies, etc.
 RRECOMMENDS_${PN} = "glib-networking"
 
-BBCLASSEXTEND = "native"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/libunwind/libunwind/sigset_t.patch b/poky/meta/recipes-support/libunwind/libunwind/sigset_t.patch
new file mode 100644
index 0000000..6baaa77
--- /dev/null
+++ b/poky/meta/recipes-support/libunwind/libunwind/sigset_t.patch
@@ -0,0 +1,28 @@
+From 5df1555828add4e256cb4bba49fffffc22127c34 Mon Sep 17 00:00:00 2001
+From: Dave Watson <dade.watson@gmail.com>
+Date: Wed, 27 May 2020 08:21:04 -0700
+Subject: [PATCH] aarch64: Fix __sigset build issue on muslC
+
+Described in issue #176.   Taken from Alpine Linux project.
+
+Change __sigset_t to sigset_t
+
+Upstream-Status: Backport [https://github.com/libunwind/libunwind/commit/5df1555828]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ include/libunwind-aarch64.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/libunwind-aarch64.h b/include/libunwind-aarch64.h
+index db01a9f69..d1bd8708f 100644
+--- a/include/libunwind-aarch64.h
++++ b/include/libunwind-aarch64.h
+@@ -202,7 +202,7 @@ typedef struct
+ 	unsigned long uc_flags;
+ 	struct ucontext *uc_link;
+ 	stack_t uc_stack;
+-	__sigset_t uc_sigmask;
++	sigset_t uc_sigmask;
+ 	struct unw_sigcontext uc_mcontext;
+   } unw_tdep_context_t;
+ 
diff --git a/poky/meta/recipes-support/libunwind/libunwind_1.4.0.bb b/poky/meta/recipes-support/libunwind/libunwind_1.4.0.bb
index f50205f..34c2249 100644
--- a/poky/meta/recipes-support/libunwind/libunwind_1.4.0.bb
+++ b/poky/meta/recipes-support/libunwind/libunwind_1.4.0.bb
@@ -7,6 +7,7 @@
            file://0004-Fix-build-on-mips-musl.patch \
            file://0005-ppc32-Consider-ucontext-mismatches-between-glibc-and.patch \
            file://0006-Fix-for-X32.patch \
+           file://sigset_t.patch \
            "
 SRC_URI_append_libc-musl = " file://musl-header-conflict.patch"
 
diff --git a/poky/meta/recipes-support/shared-mime-info/shared-mime-info_git.bb b/poky/meta/recipes-support/shared-mime-info/shared-mime-info_git.bb
index f0d5bc6..e82c818 100644
--- a/poky/meta/recipes-support/shared-mime-info/shared-mime-info_git.bb
+++ b/poky/meta/recipes-support/shared-mime-info/shared-mime-info_git.bb
@@ -5,19 +5,19 @@
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 
-DEPENDS = "libxml2 itstool-native glib-2.0 shared-mime-info-native"
+DEPENDS = "libxml2 itstool-native glib-2.0 shared-mime-info-native xmlto-native"
 
 SRC_URI = "git://gitlab.freedesktop.org/xdg/shared-mime-info.git;protocol=https"
-SRCREV = "829b26d85e7d89a0caee03046c3bce373f04c80a"
-PV = "1.15"
+SRCREV = "ef58b2b2f7ad4070171c6e45e3b3764daa3ff2c1"
+PV = "2.0"
 S = "${WORKDIR}/git"
 
-inherit autotools pkgconfig gettext python3native mime
+inherit meson pkgconfig gettext python3native mime
 
-EXTRA_OECONF = "--disable-update-mimedb"
+EXTRA_OEMESON = "-Dupdate-mimedb=true"
 
 FILES_${PN} += "${datadir}/mime"
-FILES_${PN}-dev += "${datadir}/pkgconfig/shared-mime-info.pc"
+FILES_${PN}-dev += "${datadir}/pkgconfig/shared-mime-info.pc ${datadir}/gettext/its"
 
 # freedesktop.org.xml is only required when updating the mime database,
 # package it separately
@@ -25,16 +25,4 @@
 FILES_shared-mime-info-data = "${datadir}/mime/packages/freedesktop.org.xml"
 RDEPENDS_shared-mime-info-data = "shared-mime-info"
 
-do_install () {
-	autotools_do_install
-
-	update-mime-database ${D}${datadir}/mime
-}
-
-do_install_class-native () {
-	autotools_do_install
-
-	${B}/update-mime-database ${D}${datadir}/mime
-}
-
 BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/sqlite/sqlite3_3.32.1.bb b/poky/meta/recipes-support/sqlite/sqlite3_3.32.2.bb
similarity index 68%
rename from poky/meta/recipes-support/sqlite/sqlite3_3.32.1.bb
rename to poky/meta/recipes-support/sqlite/sqlite3_3.32.2.bb
index d6081f1..8de74aa 100644
--- a/poky/meta/recipes-support/sqlite/sqlite3_3.32.1.bb
+++ b/poky/meta/recipes-support/sqlite/sqlite3_3.32.2.bb
@@ -4,8 +4,8 @@
 LIC_FILES_CHKSUM = "file://sqlite3.h;endline=11;md5=786d3dc581eff03f4fd9e4a77ed00c66"
 
 SRC_URI = "http://www.sqlite.org/2020/sqlite-autoconf-${SQLITE_PV}.tar.gz"
-SRC_URI[md5sum] = "bc7afc06f1e30b09ac930957af68d723"
-SRC_URI[sha256sum] = "486748abfb16abd8af664e3a5f03b228e5f124682b0c942e157644bf6fff7d10"
+SRC_URI[md5sum] = "eb498918a33159cdf8104997aad29e83"
+SRC_URI[sha256sum] = "2dbef1254c1dbeeb5d13d7722d37e633f18ccbba689806b0a65b68701a5b6084"
 
 # -19242 is only an issue in specific development branch commits
 CVE_CHECK_WHITELIST += "CVE-2019-19242"
diff --git a/poky/meta/recipes-support/vim/vim.inc b/poky/meta/recipes-support/vim/vim.inc
index 9f3dc08..4d2886c 100644
--- a/poky/meta/recipes-support/vim/vim.inc
+++ b/poky/meta/recipes-support/vim/vim.inc
@@ -83,6 +83,12 @@
 do_install() {
     autotools_do_install
 
+    # Work around file-rdeps picking up csh, awk, perl or python as a dep
+    chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/vim132
+    chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/mve.awk
+    chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/*.pl
+    chmod -x ${D}${datadir}/${BPN}/${VIMDIR}/tools/*.py
+    
     # Install example vimrc from runtime files
     install -m 0644 runtime/vimrc_example.vim ${D}/${datadir}/${BPN}/vimrc
 
diff --git a/poky/meta/recipes-support/vim/vim_8.2.bb b/poky/meta/recipes-support/vim/vim_8.2.bb
index 60946a1..709b6dd 100644
--- a/poky/meta/recipes-support/vim/vim_8.2.bb
+++ b/poky/meta/recipes-support/vim/vim_8.2.bb
@@ -8,3 +8,8 @@
 ALTERNATIVE_${PN}_append = " xxd"
 ALTERNATIVE_TARGET[xxd] = "${bindir}/xxd"
 ALTERNATIVE_LINK_NAME[xxd] = "${bindir}/xxd"
+
+# We override the default in security_flags.inc because vim (not vim-tiny!) will abort
+# in many places for _FORTIFY_SOURCE=2.  Security flags become part of CC.
+#
+lcl_maybe_fortify = "${@oe.utils.conditional('DEBUG_BUILD','1','','-D_FORTIFY_SOURCE=1',d)}"
diff --git a/poky/meta/recipes-support/vte/vte/0002-Add-W_EXITCODE-macro-for-non-glibc-systems.patch b/poky/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
similarity index 100%
rename from poky/meta/recipes-support/vte/vte/0002-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
rename to poky/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
diff --git a/poky/meta/recipes-support/vte/vte_0.60.2.bb b/poky/meta/recipes-support/vte/vte_0.60.3.bb
similarity index 87%
rename from poky/meta/recipes-support/vte/vte_0.60.2.bb
rename to poky/meta/recipes-support/vte/vte_0.60.3.bb
index 8c70549..02a886b 100644
--- a/poky/meta/recipes-support/vte/vte_0.60.2.bb
+++ b/poky/meta/recipes-support/vte/vte_0.60.3.bb
@@ -17,11 +17,9 @@
 inherit gnomebase gtk-doc features_check upstream-version-is-even gobject-introspection
 
 # vapigen.m4 is required when vala is not present (but the one from vala should be used normally)
-SRC_URI += " \
-            file://0002-Add-W_EXITCODE-macro-for-non-glibc-systems.patch \
-           "
-SRC_URI[archive.md5sum] = "1a0b5395915d2f3c88484511b38cc584"
-SRC_URI[archive.sha256sum] = "35a0280e3f12feeb3096da05699191373c47a4a20c55cb7081e828e6015f8ca5"
+SRC_URI += "file://0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch"
+SRC_URI[archive.md5sum] = "4214712ecab2d50e2a3a07897c3ada49"
+SRC_URI[archive.sha256sum] = "feb76e1181a357d86112d447a08d127e2081438df76ece83243b18609dd9822a"
 
 ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
 
diff --git a/poky/scripts/lib/wic/ksparser.py b/poky/scripts/lib/wic/ksparser.py
index 05ae292..3453d9c 100644
--- a/poky/scripts/lib/wic/ksparser.py
+++ b/poky/scripts/lib/wic/ksparser.py
@@ -145,7 +145,7 @@
         part.add_argument('--exclude-path', nargs='+')
         part.add_argument('--include-path', nargs='+', action='append')
         part.add_argument('--change-directory')
-        part.add_argument("--extra-space", type=sizetype)
+        part.add_argument("--extra-space", type=sizetype("M"))
         part.add_argument('--fsoptions', dest='fsopts')
         part.add_argument('--fstype', default='vfat',
                           choices=('ext2', 'ext3', 'ext4', 'btrfs',