poky: subtree update:488e39b623..c8075ed8f1

Alejandro Hernandez Samaniego (1):
      bitbake: fetch2/wget: Avoid crashing when connection drops mid checkstatus

Alexander Kanavin (17):
      webkit/wpe: only check even versions
      syslinux: use NO_INLINE_FUNCS in CFLAGS
      dosfstools: update 4.1 -> 4.2
      e2fsprogs: update 1.45.7 -> 1.46.1
      elfutils: update 0.182 -> 0.183
      meson: update 0.56.2 -> 0.57.1
      perl: update 5.32.0 -> 5.32.1
      openssl: address ptest failures caused by perl 5.32.1
      ptest-perl/run-ptest: address failures caused by perl 5.32.1
      pango: update 1.48.0 -> 1.48.2
      vulkan-samples: update to latest revision
      webkitgtk: update 2.30.4 -> 2.30.5
      libgcrypt: update 1.8.7 -> 1.9.2
      pinentry: update 1.1.0 -> 1.1.1
      libmd: add a recipe
      libbsd: udpate 0.10.0 -> 0.11.3
      scripts/lib/wic/partition.py: do not set FAT size

Charlie Davies (2):
      bitbake: bitbake: providers: fix incorrect return type bug
      bitbake: bitbake: providers: use pythonic empty list check

Colin Finck (1):
      dosfstools: Build --without-iconv

Diego Santa Cruz (4):
      packagegroup-base: use amixer instead of alsamixer
      packagegroup-base: do not force hdparm and e2fsprogs
      sysklogd: do not open any network sockets by default
      createrepo-c: set path to magic database for native and nativesdk

Dorinda (7):
      gdb-common.inc: add PACKAGECONFIG for debuginfod
      meta/recipes-bsp: Add HOMEPAGE / DESCRIPTION
      meta/recipes-connectivity: Add HOMEPAGE / DESCRIPTION
      meta/recipes-devtools: Add HOMEPAGE / DESCRIPTION
      meta/recipes-core: Add HOMEPAGE / DESCRIPTION
      scripts/oe-debuginfod: script that fetches package manager directory
      binutils: add PACKAGECONFIG for debuginfod

Florian Bezdeka (1):
      wic: Warn if an ext filesystem affected by the Y2038 problem is used

He Zhe (1):
      glibc: Disable CPU ISA level requirement check

Jan Brzezanski (1):
      bitbake: Force parser shutdown after catching an exception

Jan-Simon Moeller (1):
      Add core-image-weston to reproducible build tests

Jan-Simon Möller (2):
      reproducible_builds: SOURCE_DATE_EPOCH should not be 0
      oe-selftests: add rpm to reproducible build selftest

Jate Sujjavanich (1):
      iputils: Fix cap_net_raw for installed binaries

Joel Stanley (1):
      conf/machine-sdk: Add ppc64le SDK machine

Joshua Watt (2):
      bitbake: event: Fix broken builds when multiconfig has a hyphen in the name
      diffoscope: Add python3-rpm as dependency

Khem Raj (23):
      nettle: Upgrade to 3.7.1
      runqemu: Add new option to disable vga emulation
      linuxloader: Deal with little-endian ppc64 ldso name
      musl: Install /lib directory
      goarch.bbclass: Fix ppc64le detection
      bitbake.conf: Do not use lib64 for baselib on musl/ppc64
      glibc: Build for power9 cpu when using powerpc64le tunes
      tune-power9: Enable qemu-usermode
      selftest: Replace building dep tool with direnv
      goarch: Use softfloat instead of 387 for 386 goarch
      go: Upgrade compiler to 1.16 major release
      go: Enable CGO and pie buildmode on rv64
      go-helloworld: Turn into a go module enabled build
      binutils: Upgrade to 2.36.1 release
      llvm: Upgrade to 11.1.0 release
      oeqa/pam: Need shadow installed for the tests
      glibc: Fix rawmemchr
      rxvt-unicode: Do not use throw specifications
      llvm: Fix build with c++17
      dtc: Fix array-bounds error
      puzzles: Fix stringop-overflow warning
      igt-gpu-tools: Fix warnings with gcc 11
      kea: Fix configure test error with gcc11

Klaus Heinrich Kiwi (1):
      kernel-fitimage: Don't use unit addresses on FIT

Martin Jansa (3):
      sstatesig.py: show an error instead of warning when sstate manifest isn't found
      glib-2.0: replace THISDIR instead of COREBASE in find_meson_cross_files --cross-file paths
      coreutils: use u-a for base32

Meh Mbeh Ida Delphine (7):
      licenses: Update license file to match current SPDX names
      recipes-gnome: Add missing HOMEPAGE and DESCRIPTION for recipes
      recipes-graphics: Add missing HOMEPAGE and DESCRIPTION for recipes.
      recipes-kernel: Add missing HOMEPAGE and DESCRIPTION for recipes.
      recipes-multimedia: Add missing HOMEPAGE and DESCRIPTION for recipes.
      recipes-sato: Add missing HOMEPAGE and DESCRIPTION for recipes
      recipes-support: Add missing HOMEPAGE and DESCRIPTION for recipes

Michael Halstead (2):
      releases: update to include 3.2.2
      releases: update to include 3.1.6

Mike Crowe (2):
      externalsrc: Pass through npmsw URIs in SRC_URI
      gcc-sanitizers: Move content from gcclibdir into libdir

Milan Shah (1):
      report-error.bbclass: Add layer and bitbake version info to error report

Mingli Yu (1):
      python3: Fix python interpreter line length for nativesdk

Oleksandr Kravchuk (4):
      python3: update to 3.9.2
      ell: update to 0.38
      net-tools: update to 2.10
      busybox: update 1.33.0

Peter Kjellerstedt (1):
      asciidoc: Switch to using the main branch

Randy MacLeod (3):
      Add libgit2, libssh2 from meta-oe for rust
      libssh2: pull in additional commits from meta-oe
      libgit2: pull in updates from meta-oe

Richard Purdie (61):
      maintainers: Update email address for Victor
      figures/yp-how-it-works-new-diagram.png: Fix spelling error underline
      recipes: Update common-licenses references to match new names
      licenses.conf: Add missing 'or-later' mappings
      licenses: Fix canonical license for 'or-later' handling
      licenses: Update INCOMPATIBLE_LICENSE for 'or-later' handling
      license_image: Don't canonicalise INCOMPATIBLE_LICENSE
      selftest/incompatible_lic: Update the tests after the 'or-later' license handling changes
      gma500-gfx-check: Update licence to match changes in OE-Core
      diffoscope: Upgrade 166 -> 167
      linux-firmware: upgrade 20201218 -> 20210208
      python3-pycryptodome/pycryptodomex: upgrade 3.9.9 -> 3.10.1
      apt: Upgrade 1.8.2.1 -> 1.8.2.2
      python3-magic: upgrade 0.4.18 -> 0.4.20
      libproxy: Avoid /etc/sysconfig determinism issue
      rsync: Fix a file sorting determinism issue
      rsync: Fix group name determinism issue
      libcap-ng: Fix python bindings determinism issue
      libcap-ng: Replace python patch with a better fix
      libevdev: Update patch status to backport
      ca-certificates: Clean up two patches and submit upstream
      libpcre: Drop old/stale patch
      diffoscope: Ensure the correct magic file is used
      babeltrace2: Fix reproducibility
      reproducible: Improve SOURCE_DATE_EPOCH_FALLBACK handling
      selftest/reproducible: Remove exclusions for recipes which now reproduce
      diffoscope: Ensure rpm is configured correctly
      package/package_rpm: Disable font_provides configuration for reproducibilty
      fonts: Bump HASHEQUIV_HASH_VERSION after rpmdeps change
      reproduce: Fix exclusion list for rpm
      maintainers: add entries libssh2 libgit2
      cups: Fix reproducibility issues
      gcr: Fix reproducibility issue
      rsync: Update patch status
      gtk-doc: Fix reproducibility issue
      epiphany: Fix reproducibility issue
      epiphany: Fix distributor contamination from /etc/os-release
      gst-devtools: Fix reproducibility issue
      parted: Fix reproducibility issue
      libsecret: Improve determimism
      libhandy: Fix reproducibility issue
      selftest/reproducible: Don't call sync between each file compare
      image: Add directories to PSEUDO_IGNORE_PATHS
      populate_sdk: Add directories to PSEUDO_IGNORE_PATHS
      bitbake.conf/image: Move image specific PSEUDO_IGNORE_PATHS to image class
      bitbake.conf: Split PSEUDO_IGNORE_PATHS to be more readable
      bootchart2: Fix manpage reproducibility issue
      igt-gpu-tools: Fix reproducibility issue
      libid3tag: Fix reproducibility issue
      apr-util: Fix CFLAGS used in build
      gstreamer1.0-python: Set internal python library path correcty
      diffoscope: Upgrade 167 -> 168
      syslinux: Fix reproducibility issues
      swig: Fix reproducibility issue
      efivar: Fix reproducibility issue
      systemd-bootchart: Disable LTO to fix reproducibility
      selftest/reproducible: Add ability to pull some objects from sstate
      qemu: Determinism fixes
      lttng: Fix reproducibility issues
      ltp: Fixing determinism issues
      python3-cython: Remove build paths from debug sources

Ross Burton (1):
      grub: shuffle packaging for aarch64 builds

Scott Murray (1):
      screen: fix CVE-2021-26937

Stefan Ghinea (2):
      wpa-supplicant: fix CVE-2021-0326
      cups: fix CVE-2020-10001

Tomasz Dziendzielski (1):
      bitbake.conf: Introduce FAKEROOTLOGS variable used by bitbake to print pseudo.log

Vivien Didelot (1):
      systemd: Fix importd requirements comment

Wang Mingyu (12):
      util-linux: upgrade 2.36.1 -> 2.36.2
      xkeyboard-config: upgrade 2.31 -> 2.32
      liburcu: upgrade 0.12.1 -> 0.12.2
      lttng-ust: upgrade 2.12.0 -> 2.12.1
      openssl: upgrade 1.1.1i -> 1.1.1j
      bluez5: upgrade 5.55 -> 5.56
      libxcrypt: upgrade 4.4.17 -> 4.4.18
      nfs-utils: upgrade 2.5.2 -> 2.5.3
      ccache: upgrade 4.1 -> 4.2
      eudev: upgrade 3.2.9 -> 3.2.10
      glslang: upgrade 11.1.0 -> 11.2.0
      iproute2: upgrade 5.10.0 -> 5.11.0

Yi Fan Yu (3):
      libnl: add ptest support
      gdb: Remove "ALLOW_EMPTY_gdbserver" on riscv
      valgrind: Increase timeout duration 30 -> 90 s

zhengruoqin (8):
      glibc-package.inc: Fix arm multlib header issue with struct_stat.h
      glibc: Unify wordsize.h with arm multilibs
      libxcrypt-compat: upgrade 4.4.17 -> 4.4.18
      log4cplus: upgrade 2.0.5 -> 2.0.6
      python3-cython: upgrade 0.29.21 -> 0.29.22
      python3-git: upgrade 3.1.13 -> 3.1.14
      sysvinit: upgrade 2.98 -> 2.99
      python3-magic: upgrade 0.4.20 -> 0.4.22

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I69b5102d327da636a9c36642b46841e4341368d8
diff --git a/poky/meta/lib/oe/license.py b/poky/meta/lib/oe/license.py
index c1274a6..665d32e 100644
--- a/poky/meta/lib/oe/license.py
+++ b/poky/meta/lib/oe/license.py
@@ -10,14 +10,7 @@
 def license_ok(license, dont_want_licenses):
     """ Return False if License exist in dont_want_licenses else True """
     for dwl in dont_want_licenses:
-        # If you want to exclude license named generically 'X', we
-        # surely want to exclude 'X+' as well.  In consequence, we
-        # will exclude a trailing '+' character from LICENSE in
-        # case INCOMPATIBLE_LICENSE is not a 'X+' license.
-        lic = license
-        if not re.search(r'\+$', dwl):
-            lic = re.sub(r'\+', '', license)
-        if fnmatch(lic, dwl):
+        if fnmatch(license, dwl):
             return False
     return True
 
diff --git a/poky/meta/lib/oe/reproducible.py b/poky/meta/lib/oe/reproducible.py
index 0fb02cc..204b9bd 100644
--- a/poky/meta/lib/oe/reproducible.py
+++ b/poky/meta/lib/oe/reproducible.py
@@ -90,8 +90,12 @@
         bb.debug(1, "Newest file found: %s" % newest_file)
     return source_date_epoch
 
-def fixed_source_date_epoch():
+def fixed_source_date_epoch(d):
     bb.debug(1, "No tarball or git repo found to determine SOURCE_DATE_EPOCH")
+    source_date_epoch = d.getVar('SOURCE_DATE_EPOCH_FALLBACK')
+    if source_date_epoch:
+        bb.debug(1, "Using SOURCE_DATE_EPOCH_FALLBACK")
+        return int(source_date_epoch)
     return 0
 
 def get_source_date_epoch(d, sourcedir):
@@ -99,6 +103,6 @@
         get_source_date_epoch_from_git(d, sourcedir) or
         get_source_date_epoch_from_known_files(d, sourcedir) or
         get_source_date_epoch_from_youngest_file(d, sourcedir) or
-        fixed_source_date_epoch()       # Last resort
+        fixed_source_date_epoch(d)       # Last resort
     )
 
diff --git a/poky/meta/lib/oe/sstatesig.py b/poky/meta/lib/oe/sstatesig.py
index 84999ee..6cd6e11 100644
--- a/poky/meta/lib/oe/sstatesig.py
+++ b/poky/meta/lib/oe/sstatesig.py
@@ -453,7 +453,7 @@
         manifest = d2.expand("${SSTATE_MANIFESTS}/manifest-%s-%s.%s" % (pkgarch, taskdata, taskname))
         if os.path.exists(manifest):
             return manifest, d2
-    bb.warn("Manifest %s not found in %s (variant '%s')?" % (manifest, d2.expand(" ".join(pkgarchs)), variant))
+    bb.error("Manifest %s not found in %s (variant '%s')?" % (manifest, d2.expand(" ".join(pkgarchs)), variant))
     return None, d2
 
 def OEOuthashBasic(path, sigfile, task, d):
diff --git a/poky/meta/lib/oeqa/runtime/cases/pam.py b/poky/meta/lib/oeqa/runtime/cases/pam.py
index 271a194..a482ded 100644
--- a/poky/meta/lib/oeqa/runtime/cases/pam.py
+++ b/poky/meta/lib/oeqa/runtime/cases/pam.py
@@ -8,11 +8,14 @@
 from oeqa.runtime.case import OERuntimeTestCase
 from oeqa.core.decorator.depends import OETestDepends
 from oeqa.core.decorator.data import skipIfNotFeature
+from oeqa.runtime.decorator.package import OEHasPackage
 
 class PamBasicTest(OERuntimeTestCase):
 
     @skipIfNotFeature('pam', 'Test requires pam to be in DISTRO_FEATURES')
     @OETestDepends(['ssh.SSHTest.test_ssh'])
+    @OEHasPackage(['shadow'])
+    @OEHasPackage(['shadow-base'])
     def test_pam(self):
         status, output = self.target.run('login --help')
         msg = ('login command does not work as expected. '
diff --git a/poky/meta/lib/oeqa/selftest/cases/fitimage.py b/poky/meta/lib/oeqa/selftest/cases/fitimage.py
index 0958036..02692de 100644
--- a/poky/meta/lib/oeqa/selftest/cases/fitimage.py
+++ b/poky/meta/lib/oeqa/selftest/cases/fitimage.py
@@ -69,9 +69,9 @@
             'type = "ramdisk";',
             'load = <0x88000000>;',
             'entry = <0x88000000>;',
-            'default = "conf@1";',
-            'kernel = "kernel@1";',
-            'ramdisk = "ramdisk@1";'
+            'default = "conf-1";',
+            'kernel = "kernel-1";',
+            'ramdisk = "ramdisk-1";'
             ]
 
         with open(fitimage_its_path) as its_file:
@@ -137,12 +137,12 @@
             "%s FIT image doesn't exist" % (fitimage_path))
 
         req_itspaths = [
-            ['/', 'images', 'kernel@1'],
-            ['/', 'images', 'kernel@1', 'signature@1'],
-            ['/', 'images', 'fdt@am335x-boneblack.dtb'],
-            ['/', 'images', 'fdt@am335x-boneblack.dtb', 'signature@1'],
-            ['/', 'configurations', 'conf@am335x-boneblack.dtb'],
-            ['/', 'configurations', 'conf@am335x-boneblack.dtb', 'signature@1'],
+            ['/', 'images', 'kernel-1'],
+            ['/', 'images', 'kernel-1', 'signature-1'],
+            ['/', 'images', 'fdt-am335x-boneblack.dtb'],
+            ['/', 'images', 'fdt-am335x-boneblack.dtb', 'signature-1'],
+            ['/', 'configurations', 'conf-am335x-boneblack.dtb'],
+            ['/', 'configurations', 'conf-am335x-boneblack.dtb', 'signature-1'],
         ]
 
         itspath = []
@@ -158,7 +158,7 @@
                 elif line.endswith('{'):
                     itspath.append(line[:-1].strip())
                     itspaths.append(itspath[:])
-                elif itspath and itspath[-1] == 'signature@1':
+                elif itspath and itspath[-1] == 'signature-1':
                     itsdotpath = '.'.join(itspath)
                     if not itsdotpath in sigs:
                         sigs[itsdotpath] = {}
@@ -182,7 +182,7 @@
         }
 
         for itspath, values in sigs.items():
-            if 'conf@' in itspath:
+            if 'conf-' in itspath:
                 reqsigvalues = reqsigvalues_config
             else:
                 reqsigvalues = reqsigvalues_image
@@ -210,9 +210,9 @@
                     signed_sections[in_signed] = {}
                 key, value = line.split(':', 1)
                 signed_sections[in_signed][key.strip()] = value.strip()
-        self.assertIn('kernel@1', signed_sections)
-        self.assertIn('fdt@am335x-boneblack.dtb', signed_sections)
-        self.assertIn('conf@am335x-boneblack.dtb', signed_sections)
+        self.assertIn('kernel-1', signed_sections)
+        self.assertIn('fdt-am335x-boneblack.dtb', signed_sections)
+        self.assertIn('conf-am335x-boneblack.dtb', signed_sections)
         for signed_section, values in signed_sections.items():
             value = values.get('Sign algo', None)
             self.assertEqual(value, 'sha256,rsa2048:oe-selftest', 'Signature algorithm for %s not expected value' % signed_section)
@@ -298,7 +298,7 @@
         its_lines = [line.strip() for line in its_file.readlines()]
 
         exp_node_lines = [
-            'kernel@1 {',
+            'kernel-1 {',
             'description = "Linux kernel";',
             'data = /incbin/("' + initramfs_bundle + '");',
             'type = "kernel";',
@@ -307,7 +307,7 @@
             'compression = "none";',
             'load = <' + kernel_load + '>;',
             'entry = <' + kernel_entry + '>;',
-            'hash@1 {',
+            'hash-1 {',
             'algo = "' + fit_hash_alg +'";',
             '};',
             '};'
@@ -327,7 +327,7 @@
             else:
                 self.assertTrue(test_passed == True,"kernel node does not match expectation")
 
-        rx_configs = re.compile("^conf@.*")
+        rx_configs = re.compile("^conf-.*")
         its_configs = list(filter(rx_configs.match, its_lines))
 
         for cfg_str in its_configs:
@@ -348,7 +348,7 @@
             else:
                 print("kernel keyword found in the description line")
 
-            if 'kernel = "kernel@1";' not in node:
+            if 'kernel = "kernel-1";' not in node:
                 self.assertTrue(test_passed == True,"kernel line not found")
                 break
             else:
diff --git a/poky/meta/lib/oeqa/selftest/cases/gotoolchain.py b/poky/meta/lib/oeqa/selftest/cases/gotoolchain.py
index 3119520..4fc3605 100644
--- a/poky/meta/lib/oeqa/selftest/cases/gotoolchain.py
+++ b/poky/meta/lib/oeqa/selftest/cases/gotoolchain.py
@@ -46,26 +46,25 @@
         shutil.rmtree(cls.tmpdir_SDKQA, ignore_errors=True)
         super(oeGoToolchainSelfTest, cls).tearDownClass()
 
-    def run_sdk_go_command(self, gocmd):
-        cmd = "cd %s; " % self.tmpdir_SDKQA
+    def run_sdk_go_command(self, gocmd, proj, name):
+        cmd = "cd %s/src/%s/%s; " % (self.go_path, proj, name)
         cmd = cmd + ". %s; " % self.env_SDK
         cmd = cmd + "export GOPATH=%s; " % self.go_path
         cmd = cmd + "${CROSS_COMPILE}go %s" % gocmd
         return runCmd(cmd).status
 
     def test_go_dep_build(self):
-        proj = "github.com/golang"
-        name = "dep"
-        ver = "v0.3.1"
+        proj = "github.com/direnv"
+        name = "direnv"
+        ver = "v2.27.0"
         archive = ".tar.gz"
         url = "https://%s/%s/archive/%s%s" % (proj, name, ver, archive)
 
         runCmd("cd %s; wget %s" % (self.tmpdir_SDKQA, url))
         runCmd("cd %s; tar -xf %s" % (self.tmpdir_SDKQA, ver+archive))
         runCmd("mkdir -p %s/src/%s" % (self.go_path, proj))
-        runCmd("mv %s/dep-0.3.1 %s/src/%s/%s"
+        runCmd("mv %s/direnv-2.27.0 %s/src/%s/%s"
                % (self.tmpdir_SDKQA, self.go_path, proj, name))
-        retv = self.run_sdk_go_command('build  %s/%s/cmd/dep'
-                                       % (proj, name))
+        retv = self.run_sdk_go_command('build', proj, name)
         self.assertEqual(retv, 0,
                          msg="Running go build failed for %s" % name)
diff --git a/poky/meta/lib/oeqa/selftest/cases/incompatible_lic.py b/poky/meta/lib/oeqa/selftest/cases/incompatible_lic.py
index 2a6382a..152da63 100644
--- a/poky/meta/lib/oeqa/selftest/cases/incompatible_lic.py
+++ b/poky/meta/lib/oeqa/selftest/cases/incompatible_lic.py
@@ -15,66 +15,66 @@
     # Verify that a package with an SPDX license (from AVAILABLE_LICENSES)
     # cannot be built when INCOMPATIBLE_LICENSE contains this SPDX license
     def test_incompatible_spdx_license(self):
-        self.lic_test('incompatible-license', 'GPL-3.0', 'GPL-3.0')
+        self.lic_test('incompatible-license', 'GPL-3.0-only', 'GPL-3.0-only')
 
     # Verify that a package with an SPDX license (from AVAILABLE_LICENSES)
     # cannot be built when INCOMPATIBLE_LICENSE contains an alias (in
     # SPDXLICENSEMAP) of this SPDX license
     def test_incompatible_alias_spdx_license(self):
-        self.lic_test('incompatible-license', 'GPL-3.0', 'GPLv3')
+        self.lic_test('incompatible-license', 'GPL-3.0-only', 'GPLv3')
 
     # Verify that a package with an SPDX license (from AVAILABLE_LICENSES)
     # cannot be built when INCOMPATIBLE_LICENSE contains a wildcarded license
     # matching this SPDX license
     def test_incompatible_spdx_license_wildcard(self):
-        self.lic_test('incompatible-license', 'GPL-3.0', '*GPL-3.0')
+        self.lic_test('incompatible-license', 'GPL-3.0-only', '*GPL-3.0-only')
 
     # Verify that a package with an SPDX license (from AVAILABLE_LICENSES)
     # cannot be built when INCOMPATIBLE_LICENSE contains a wildcarded alias
     # license matching this SPDX license
     def test_incompatible_alias_spdx_license_wildcard(self):
-        self.lic_test('incompatible-license', 'GPL-3.0', '*GPLv3')
+        self.lic_test('incompatible-license', 'GPL-3.0-only', '*GPLv3')
 
     # Verify that a package with an alias (from SPDXLICENSEMAP) to an SPDX
     # license cannot be built when INCOMPATIBLE_LICENSE contains this SPDX
     # license
     def test_incompatible_spdx_license_alias(self):
-        self.lic_test('incompatible-license-alias', 'GPL-3.0', 'GPL-3.0')
+        self.lic_test('incompatible-license-alias', 'GPL-3.0-only', 'GPL-3.0-only')
 
     # Verify that a package with an alias (from SPDXLICENSEMAP) to an SPDX
     # license cannot be built when INCOMPATIBLE_LICENSE contains this alias
     def test_incompatible_alias_spdx_license_alias(self):
-        self.lic_test('incompatible-license-alias', 'GPL-3.0', 'GPLv3')
+        self.lic_test('incompatible-license-alias', 'GPL-3.0-only', 'GPLv3')
 
     # Verify that a package with an alias (from SPDXLICENSEMAP) to an SPDX
     # license cannot be built when INCOMPATIBLE_LICENSE contains a wildcarded
     # license matching this SPDX license
     def test_incompatible_spdx_license_alias_wildcard(self):
-        self.lic_test('incompatible-license-alias', 'GPL-3.0', '*GPL-3.0')
+        self.lic_test('incompatible-license-alias', 'GPL-3.0-only', '*GPL-3.0')
 
     # Verify that a package with an alias (from SPDXLICENSEMAP) to an SPDX
     # license cannot be built when INCOMPATIBLE_LICENSE contains a wildcarded
     # alias license matching the SPDX license
     def test_incompatible_alias_spdx_license_alias_wildcard(self):
-        self.lic_test('incompatible-license-alias', 'GPL-3.0', '*GPLv3')
+        self.lic_test('incompatible-license-alias', 'GPL-3.0-only', '*GPLv3')
 
     # Verify that a package with multiple SPDX licenses (from
     # AVAILABLE_LICENSES) cannot be built when INCOMPATIBLE_LICENSE contains
     # some of them
     def test_incompatible_spdx_licenses(self):
-        self.lic_test('incompatible-licenses', 'GPL-3.0 LGPL-3.0', 'GPL-3.0 LGPL-3.0')
+        self.lic_test('incompatible-licenses', 'GPL-3.0-only LGPL-3.0-only', 'GPL-3.0-only LGPL-3.0-only')
 
     # Verify that a package with multiple SPDX licenses (from
     # AVAILABLE_LICENSES) cannot be built when INCOMPATIBLE_LICENSE contains a
     # wildcard to some of them
     def test_incompatible_spdx_licenses_wildcard(self):
-        self.lic_test('incompatible-licenses', 'GPL-3.0 LGPL-3.0', '*GPL-3.0')
+        self.lic_test('incompatible-licenses', 'GPL-3.0-only LGPL-3.0-only', '*GPL-3.0-only')
 
     # Verify that a package with multiple SPDX licenses (from
     # AVAILABLE_LICENSES) cannot be built when INCOMPATIBLE_LICENSE contains a
     # wildcard matching all licenses
     def test_incompatible_all_licenses_wildcard(self):
-        self.lic_test('incompatible-licenses', 'GPL-2.0 GPL-3.0 LGPL-3.0', '*')
+        self.lic_test('incompatible-licenses', 'GPL-2.0-only GPL-3.0-only LGPL-3.0-only', '*')
 
     # Verify that a package with a non-SPDX license (neither in
     # AVAILABLE_LICENSES nor in SPDXLICENSEMAP) cannot be built when
@@ -91,7 +91,7 @@
 
     def test_bash_default(self):
         self.write_config(self.default_config())
-        error_msg = "ERROR: core-image-minimal-1.0-r0 do_rootfs: Package bash cannot be installed into the image because it has incompatible license(s): GPL-3.0+"
+        error_msg = "ERROR: core-image-minimal-1.0-r0 do_rootfs: Package bash cannot be installed into the image because it has incompatible license(s): GPL-3.0-or-later"
 
         result = bitbake('core-image-minimal', ignore_status=True)
         if error_msg not in result.output:
@@ -99,7 +99,7 @@
 
     def test_bash_and_license(self):
         self.write_config(self.default_config() + '\nLICENSE_append_pn-bash = " & SomeLicense"')
-        error_msg = "ERROR: core-image-minimal-1.0-r0 do_rootfs: Package bash cannot be installed into the image because it has incompatible license(s): GPL-3.0+"
+        error_msg = "ERROR: core-image-minimal-1.0-r0 do_rootfs: Package bash cannot be installed into the image because it has incompatible license(s): GPL-3.0-or-later"
 
         result = bitbake('core-image-minimal', ignore_status=True)
         if error_msg not in result.output:
diff --git a/poky/meta/lib/oeqa/selftest/cases/oescripts.py b/poky/meta/lib/oeqa/selftest/cases/oescripts.py
index 726daff..8a10ff3 100644
--- a/poky/meta/lib/oeqa/selftest/cases/oescripts.py
+++ b/poky/meta/lib/oeqa/selftest/cases/oescripts.py
@@ -167,7 +167,7 @@
     def test_packageconfig_flags_option_all(self):
         results = runCmd('%s/contrib/list-packageconfig-flags.py -a' % self.scripts_dir)
         expected_endlines = []
-        expected_endlines.append("pinentry-1.1.0")
+        expected_endlines.append("pinentry-1.1.1")
         expected_endlines.append("PACKAGECONFIG ncurses libcap")
         expected_endlines.append("PACKAGECONFIG[qt] --enable-pinentry-qt, --disable-pinentry-qt, qtbase-native qtbase")
         expected_endlines.append("PACKAGECONFIG[gtk2] --enable-pinentry-gtk2, --disable-pinentry-gtk2, gtk+ glib-2.0")
diff --git a/poky/meta/lib/oeqa/selftest/cases/reproducible.py b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
index 0963c2f..0d02594 100644
--- a/poky/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -28,44 +28,16 @@
 # ruby-ri-docs, meson:
 #https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20210215-0_td9la2/packages/diff-html/
 exclude_packages = [
-	'babeltrace2-ptest',
-	'bootchart2-doc',
-	'cups',
-	'efivar',
-	'epiphany',
-	'gcr',
-	'git',
 	'glide',
 	'go-dep',
 	'go-helloworld',
 	'go-runtime',
 	'go_',
-	'groff',
-	'gst-devtools',
-	'gstreamer1.0-python',
-	'gtk-doc',
-	'igt-gpu-tools',
-	'libaprutil',
-	'libcap-ng',
-	'libhandy-1-src',
-	'libid3tag',
-	'libproxy',
-	'libsecret-dev',
-	'libsecret-src',
-	'lttng-tools-dbg',
-	'lttng-tools-ptest',
-	'ltp',
-        'meson',
+	'go-',
+	'meson',
 	'ovmf-shell-efi',
-	'parted-ptest',
 	'perf',
-	'python3-cython',
-	'qemu',
-	'rsync',
-        'ruby-ri-docs',
-	'swig',
-	'syslinux-misc',
-	'systemd-bootchart'
+	'ruby-ri-docs'
 	]
 
 def is_excluded(package):
@@ -137,7 +109,7 @@
         result.status = MISSING
         return result
 
-    r = runCmd(['cmp', '--quiet', reference, test], native_sysroot=diffutils_sysroot, ignore_status=True)
+    r = runCmd(['cmp', '--quiet', reference, test], native_sysroot=diffutils_sysroot, ignore_status=True, sync=False)
 
     if r.status:
         result.status = DIFFERENT
@@ -173,8 +145,14 @@
             self.assertTrue(os.path.exists(os.path.join(tmpdir, 'index.html')), "HTML index not found!")
 
 class ReproducibleTests(OESelftestTestCase):
-    package_classes = ['deb', 'ipk']
-    images = ['core-image-minimal', 'core-image-sato', 'core-image-full-cmdline', 'world']
+    # Test the reproducibility of whatever is built between sstate_targets and targets
+
+    package_classes = ['deb', 'ipk', 'rpm']
+
+    # targets are the things we want to test the reproducibility of
+    targets = ['core-image-minimal', 'core-image-sato', 'core-image-full-cmdline', 'core-image-weston', 'world']
+    # sstate targets are things to pull from sstate to potentially cut build/debugging time
+    sstate_targets = []
     save_results = False
     if 'OEQA_DEBUGGING_SAVED_OUTPUT' in os.environ:
         save_results = os.environ['OEQA_DEBUGGING_SAVED_OUTPUT']
@@ -255,6 +233,11 @@
                         tmpdir=tmpdir)
 
         if not use_sstate:
+            if self.sstate_targets:
+               self.logger.info("Building prebuild for %s (sstate allowed)..." % (name))
+               self.write_config(config)
+               bitbake(' '.join(self.sstate_targets))
+
             # This config fragment will disable using shared and the sstate
             # mirror, forcing a complete build from scratch
             config += textwrap.dedent('''\
@@ -265,7 +248,8 @@
         self.logger.info("Building %s (sstate%s allowed)..." % (name, '' if use_sstate else ' NOT'))
         self.write_config(config)
         d = get_bb_vars(capture_vars)
-        bitbake(' '.join(self.images))
+        # targets used to be called images
+        bitbake(' '.join(getattr(self, 'images', self.targets)))
         return d
 
     def test_reproducible_builds(self):