poky: subtree update:a616ffebdc..9052e5b32a

Adrian Bunk (1):
      bind: Whitelist CVE-2019-6470

Alexander Kanavin (13):
      python: update to 2.7.17
      tiff: update to 4.1.0
      librepo: upgrade 1.10.6 -> 1.11.0
      btrfs-tools: upgrade 5.3 -> 5.3.1
      psmisc: update to 23.3
      libxslt: update to 1.1.34
      Revert "devtool/standard.py: Not filtering devtool workspace for devtool finish"
      mpg123: upgrade 1.25.12 -> 1.25.13
      vala: upgrade 0.46.3 -> 0.46.4
      sysstat: upstream version check is working again
      cairo: the component is dual licensed
      selftest: check that 'devtool upgrade' correctly drops backported patches
      runqemu: add options that enable virgl with the SDL frontend

Alistair Francis (1):
      mesa: Upgrade to 19.2.4

Anuj Mittal (7):
      boost: fix build for x32
      rng-tools: upgrade 6.7 -> 6.8
      harfbuzz: upgrade 2.6.1 -> 2.6.4
      libsolv: upgrade 0.7.6 -> 0.7.8
      sqlite3: upgrade 3.30.0 -> 3.30.1
      stress-ng: upgrade 0.10.08 -> 0.10.10
      glib-2.0: upgrade 2.62.1 -> 2.62.2

Armin Kuster (9):
      oeqa/manual/bsp-hw: remove rpm -ivh test
      oeqa/runtime/boot: add reboot test
      oeqa/manual/bsp-hw: remove reboot test
      oeqa/manual/bsp-hw: move storage tests to runtime
      oeqa/manual/bsp-hw: remove usb and SDmicro tests
      manual/bsd-hw: remove bash tests
      oeqa/manual/compliance-test: remove crashme tests
      oeqa/manual/compliance-test: move crashme to runtime
      /oeqa/manual/compliance-test: remove obsolete test

Chee Yang Lee (2):
      wic: rm with -r flag support
      selftest/wic: test wic rm with -r flag

Denys Dmytriyenko (1):
      distro_features_check: expand with MACHINE_FEATURES and COMBINED_FEATURES, rename

Kai Kang (1):
      systemd: remove ${PN}-xorg-xinitrc

Khem Raj (1):
      webkitgtk: Remove clang specific option

Paul Barker (1):
      cdrtools-native: Don't set uid/gid during install

Paul Eggleton (1):
      devtool: fix devtool upgrade with reproducible_builds class

Richard Purdie (10):
      oeqa/devtool: Avoid unbound variable errors
      recipetool/create: Fix to work with reproducible_builds
      opkg: Add upstream fixes for empty packages
      opkg-utils: Fix silent empty/broken opkg package creation
      core-image-full-cmdline: Add less
      bitbake: fetch2/clearcase: Fix warnings from python 3.8
      bitbake: runqueue: Fix hash equivalence duplicate tasks running
      sanity: Add check for tar older than 1.28
      oeqa/selftest/sstatetests: Ensure we don't use hashequiv for sstatesigs tests
      package_ipk: Remove pointless comment to trigger rebuild

Ross Burton (8):
      cve-update-db-native: don't hardcode the database name
      cve-update-db-native: add an index on the CVE ID column
      cve-update-db-native: clean up proxy handling
      cve-check: rewrite look to fix false negatives
      cve-check: neaten get_cve_info
      cve-check: fetch CVE data once at a time instead of in a single call
      bitbake: tests: add test for the hashing functions
      bitbake: utils: also use mmap for SHA256 and SHA1, for performance

Yi Zhao (1):
      bitbake: contrib/vim/indent/bitbake.vim: move it to correct directory

Change-Id: I526155f21145180c764252a2ae5bfba33def10ff
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/poky/bitbake/lib/bb/fetch2/clearcase.py b/poky/bitbake/lib/bb/fetch2/clearcase.py
index 3dd93ad..e2934ef 100644
--- a/poky/bitbake/lib/bb/fetch2/clearcase.py
+++ b/poky/bitbake/lib/bb/fetch2/clearcase.py
@@ -145,18 +145,18 @@
 
         basecmd = "%s %s" % (ud.basecmd, command)
 
-        if command is 'mkview':
+        if command == 'mkview':
             if not "rcleartool" in ud.basecmd:
                 # Cleartool needs a -snapshot view
                 options.append("-snapshot")
             options.append("-tag %s" % ud.viewname)
             options.append(ud.viewdir)
 
-        elif command is 'rmview':
+        elif command == 'rmview':
             options.append("-force")
             options.append("%s" % ud.viewdir)
 
-        elif command is 'setcs':
+        elif command == 'setcs':
             options.append("-overwrite")
             options.append(ud.configspecfile)
 
diff --git a/poky/bitbake/lib/bb/runqueue.py b/poky/bitbake/lib/bb/runqueue.py
index 8622738..26492e7 100644
--- a/poky/bitbake/lib/bb/runqueue.py
+++ b/poky/bitbake/lib/bb/runqueue.py
@@ -2303,16 +2303,22 @@
         for tid in changed:
             if tid not in self.rqdata.runq_setscene_tids:
                 continue
-            if tid in self.runq_running:
-                continue
-            if tid in self.scenequeue_covered:
-                # Potentially risky, should we report this hash as a match?
-                logger.info("Already covered setscene for %s so ignoring rehash" % (tid))
-                continue
             if tid not in self.pending_migrations:
                 self.pending_migrations.add(tid)
 
         for tid in self.pending_migrations.copy():
+            if tid in self.runq_running:
+                # Too late, task already running, not much we can do now
+                self.pending_migrations.remove(tid)
+                continue
+
+            if tid in self.scenequeue_covered or tid in self.sq_live:
+                # Already ran this setscene task or it running
+                # Potentially risky, should we report this hash as a match?
+                logger.info("Already covered setscene for %s so ignoring rehash" % (tid))
+                self.pending_migrations.remove(tid)
+                continue
+
             valid = True
             # Check no tasks this covers are running
             for dep in self.sqdata.sq_covered_tasks[tid]:
diff --git a/poky/bitbake/lib/bb/tests/utils.py b/poky/bitbake/lib/bb/tests/utils.py
index f4adf1d..5c910b4 100644
--- a/poky/bitbake/lib/bb/tests/utils.py
+++ b/poky/bitbake/lib/bb/tests/utils.py
@@ -103,6 +103,32 @@
             result = bb.utils._check_unsafe_delete_path(arg1)
             self.assertEqual(result, correctresult, '_check_unsafe_delete_path("%s") != %s' % (arg1, correctresult))
 
+class Checksum(unittest.TestCase):
+    filler = b"Shiver me timbers square-rigged spike Gold Road galleon bilge water boatswain wherry jack pirate. Mizzenmast rum lad Privateer jack salmagundi hang the jib piracy Pieces of Eight Corsair. Parrel marooned black spot yawl provost quarterdeck cable no prey, no pay spirits lateen sail."
+
+    def test_md5(self):
+        import hashlib
+        with tempfile.NamedTemporaryFile() as f:
+            f.write(self.filler)
+            f.flush()
+            checksum = bb.utils.md5_file(f.name)
+            self.assertEqual(checksum, "bd572cd5de30a785f4efcb6eaf5089e3")
+
+    def test_sha1(self):
+        import hashlib
+        with tempfile.NamedTemporaryFile() as f:
+            f.write(self.filler)
+            f.flush()
+            checksum = bb.utils.sha1_file(f.name)
+            self.assertEqual(checksum, "249eb8fd654732ea836d5e702d7aa567898eca71")
+
+    def test_sha256(self):
+        import hashlib
+        with tempfile.NamedTemporaryFile() as f:
+            f.write(self.filler)
+            f.flush()
+            checksum = bb.utils.sha256_file(f.name)
+            self.assertEqual(checksum, "fcfbae8bf6b721dbb9d2dc6a9334a58f2031a9a9b302999243f99da4d7f12d0f")
 
 class EditMetadataFile(unittest.TestCase):
     _origfile = """
diff --git a/poky/bitbake/lib/bb/utils.py b/poky/bitbake/lib/bb/utils.py
index d035949..8d40bcd 100644
--- a/poky/bitbake/lib/bb/utils.py
+++ b/poky/bitbake/lib/bb/utils.py
@@ -520,22 +520,26 @@
     fcntl.flock(lf.fileno(), fcntl.LOCK_UN)
     lf.close()
 
+def _hasher(method, filename):
+    import mmap
+
+    with open(filename, "rb") as f:
+        try:
+            with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) as mm:
+                for chunk in iter(lambda: mm.read(8192), b''):
+                    method.update(chunk)
+        except ValueError:
+            # You can't mmap() an empty file so silence this exception
+            pass
+    return method.hexdigest()
+
+
 def md5_file(filename):
     """
     Return the hex string representation of the MD5 checksum of filename.
     """
-    import hashlib, mmap
-
-    with open(filename, "rb") as f:
-        m = hashlib.md5()
-        try:
-            with mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) as mm:
-                for chunk in iter(lambda: mm.read(8192), b''):
-                    m.update(chunk)
-        except ValueError:
-            # You can't mmap() an empty file so silence this exception
-            pass
-    return m.hexdigest()
+    import hashlib
+    return _hasher(hashlib.md5(), filename)
 
 def sha256_file(filename):
     """
@@ -543,24 +547,14 @@
     filename.
     """
     import hashlib
-
-    s = hashlib.sha256()
-    with open(filename, "rb") as f:
-        for line in f:
-            s.update(line)
-    return s.hexdigest()
+    return _hasher(hashlib.sha256(), filename)
 
 def sha1_file(filename):
     """
     Return the hex string representation of the SHA1 checksum of the filename
     """
     import hashlib
-
-    s = hashlib.sha1()
-    with open(filename, "rb") as f:
-        for line in f:
-            s.update(line)
-    return s.hexdigest()
+    return _hasher(hashlib.sha1(), filename)
 
 def preserved_envvars_exported():
     """Variables which are taken from the environment and placed in and exported