diff --git a/poky/scripts/lib/devtool/upgrade.py b/poky/scripts/lib/devtool/upgrade.py
index 5a057e9..0c1de8c 100644
--- a/poky/scripts/lib/devtool/upgrade.py
+++ b/poky/scripts/lib/devtool/upgrade.py
@@ -178,7 +178,7 @@
     uri, rev = _get_uri(crd)
     if srcrev:
         rev = srcrev
-    if uri.startswith('git://') or uri.startswith('gitsm://'):
+    if uri.startswith('git://'):
         __run('git fetch')
         __run('git checkout %s' % rev)
         __run('git tag -f devtool-base-new')
@@ -270,7 +270,7 @@
             else:
                 logger.warning('Command \'%s\' failed:\n%s' % (e.command, e.stdout))
         if not skiptag:
-            if uri.startswith('git://') or uri.startswith('gitsm://'):
+            if uri.startswith('git://'):
                 suffix = 'new'
             else:
                 suffix = newpv
diff --git a/poky/scripts/lib/wic/ksparser.py b/poky/scripts/lib/wic/ksparser.py
index 3eb669d..913e328 100644
--- a/poky/scripts/lib/wic/ksparser.py
+++ b/poky/scripts/lib/wic/ksparser.py
@@ -229,23 +229,6 @@
                                 err = "%s:%d: SquashFS does not support LABEL" \
                                        % (confpath, lineno)
                                 raise KickStartError(err)
-                        if parsed.fstype == 'msdos' or parsed.fstype == 'vfat':
-                            if parsed.fsuuid:
-                                if parsed.fsuuid.upper().startswith('0X'):
-                                    if len(parsed.fsuuid) > 10:
-                                        err = "%s:%d: fsuuid %s given in wks kickstart file " \
-                                              "exceeds the length limit for %s filesystem. " \
-                                              "It should be in the form of a 32 bit hexadecimal" \
-                                              "number (for example, 0xABCD1234)." \
-                                              % (confpath, lineno, parsed.fsuuid, parsed.fstype)
-                                        raise KickStartError(err)
-                                elif len(parsed.fsuuid) > 8:
-                                    err = "%s:%d: fsuuid %s given in wks kickstart file " \
-                                          "exceeds the length limit for %s filesystem. " \
-                                          "It should be in the form of a 32 bit hexadecimal" \
-                                          "number (for example, 0xABCD1234)." \
-                                          % (confpath, lineno, parsed.fsuuid, parsed.fstype)
-                                    raise KickStartError(err)
                         if parsed.use_label and not parsed.label:
                             err = "%s:%d: Must set the label with --label" \
                                   % (confpath, lineno)
diff --git a/poky/scripts/lib/wic/partition.py b/poky/scripts/lib/wic/partition.py
index 286c786..ebe250b 100644
--- a/poky/scripts/lib/wic/partition.py
+++ b/poky/scripts/lib/wic/partition.py
@@ -207,21 +207,11 @@
 
         p_prefix = os.environ.get("PSEUDO_PREFIX", "%s/usr" % native_sysroot)
         if (pseudo_dir):
-            # Canonicalize the ignore paths. This corresponds to
-            # calling oe.path.canonicalize(), which is used in bitbake.conf.
-            ignore_paths = [rootfs] + (get_bitbake_var("PSEUDO_IGNORE_PATHS") or "").split(",")
-            canonical_paths = []
-            for path in ignore_paths:
-                if "$" not in path:
-                    trailing_slash = path.endswith("/") and "/" or ""
-                    canonical_paths.append(os.path.realpath(path) + trailing_slash)
-            ignore_paths = ",".join(canonical_paths)
-
             pseudo = "export PSEUDO_PREFIX=%s;" % p_prefix
             pseudo += "export PSEUDO_LOCALSTATEDIR=%s;" % pseudo_dir
             pseudo += "export PSEUDO_PASSWD=%s;" % rootfs_dir
             pseudo += "export PSEUDO_NOSYMLINKEXP=1;"
-            pseudo += "export PSEUDO_IGNORE_PATHS=%s;" % ignore_paths
+            pseudo += "export PSEUDO_IGNORE_PATHS=%s;" % (rootfs + "," + (get_bitbake_var("PSEUDO_IGNORE_PATHS") or ""))
             pseudo += "%s " % get_bitbake_var("FAKEROOTCMD")
         else:
             pseudo = None
diff --git a/poky/scripts/lib/wic/plugins/imager/direct.py b/poky/scripts/lib/wic/plugins/imager/direct.py
index 0ca67b7..55db826 100644
--- a/poky/scripts/lib/wic/plugins/imager/direct.py
+++ b/poky/scripts/lib/wic/plugins/imager/direct.py
@@ -343,13 +343,6 @@
                     part.fsuuid = '0x' + str(uuid.uuid4())[:8].upper()
                 else:
                     part.fsuuid = str(uuid.uuid4())
-            else:
-                #make sure the fsuuid for vfat/msdos align with format 0xYYYYYYYY
-                if part.fstype == 'vfat' or part.fstype == 'msdos':
-                    if part.fsuuid.upper().startswith("0X"):
-                        part.fsuuid = '0x' + part.fsuuid.upper()[2:].rjust(8,"0")
-                    else:
-                        part.fsuuid = '0x' + part.fsuuid.upper().rjust(8,"0")
 
     def prepare(self, imager):
         """Prepare an image. Call prepare method of all image partitions."""
diff --git a/poky/scripts/lib/wic/plugins/source/empty.py b/poky/scripts/lib/wic/plugins/source/empty.py
deleted file mode 100644
index 041617d..0000000
--- a/poky/scripts/lib/wic/plugins/source/empty.py
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# SPDX-License-Identifier: MIT
-#
-
-# The empty wic plugin is used to create unformatted empty partitions for wic
-# images.
-# To use it you must pass "empty" as argument for the "--source" parameter in
-# the wks file. For example:
-# part foo --source empty --ondisk sda --size="1024" --align 1024
-
-import logging
-
-from wic.pluginbase import SourcePlugin
-
-logger = logging.getLogger('wic')
-
-class EmptyPartitionPlugin(SourcePlugin):
-    """
-    Populate unformatted empty partition.
-    """
-
-    name = 'empty'
-
-    @classmethod
-    def do_prepare_partition(cls, part, source_params, cr, cr_workdir,
-                             oe_builddir, bootimg_dir, kernel_dir,
-                             rootfs_dir, native_sysroot):
-        """
-        Called to do the actual content population for a partition i.e. it
-        'prepares' the partition to be incorporated into the image.
-        """
-        return
