[oe-commits] [openembedded-core] 11/12: insane.bbclass: Add do_qa_pseudo function to check for common errors listed in pseudo.log

git at git.openembedded.org git at git.openembedded.org
Wed Sep 13 21:21:20 UTC 2017


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 803b18e399c22e0a1379e92b47df58197554d65d
Author: Martin Jansa <martin.jansa at gmail.com>
AuthorDate: Wed Sep 13 22:46:59 2017 +0200

    insane.bbclass: Add do_qa_pseudo function to check for common errors listed in pseudo.log
    
    * we often see QA warnings like:
      glibc-locale-2.26: glibc-locale: /glibc-binary-localedata-en-gb/usr/lib/locale/en_GB/LC_MEASUREMENT is owned by uid 3004, which is the same as the user running bitbake. This may be due to host contamination [host-user-contaminated]
      glibc-locale-2.26: glibc-locale: /glibc-binary-localedata-nn-no.iso-8859-1/usr/lib/locale/nn_NO.ISO-8859-1/LC_MEASUREMENT is owned by uid 3004, which is the same as the user running bitbake. This may be due to host contamination [host-user-contaminated]
      but we don't know the root cause of it.
    * the only theory we currently have is that it's a bug in pseudo when
      inode is being reused for different files, which is supported by
      pseudo.log entries:
    
      Good build:
      pseudo$ grep -v "^path mismatch" pseudo.log
      debug_logfile: fd 2
      pid 7975 [parent 7974], doing new pid setup and server start
      Setup complete, sending SIGUSR1 to pid 7974.
      db cleanup for server shutdown, 17:33:58.787
      memory-to-file backup complete, 17:33:58.787.
      db cleanup finished, 17:33:58.787
    
      Build with QA host-user-contaminated issue:
      ERROR: foo-1.0.0-r0 do_package_qa: QA Issue: foo: file-with-wrong-UID is owned
      by uid 2001, which is the same as the user running bitbake. This may be due to
      host contamination [host-user-contaminated]
    
      pseudo$ grep "file-with-wrong-UID" pseudo.log
      inode mismatch: 'file-with-wrong-UID' ino 13242270 in db, 13242271 in request.
      creat ignored for existing file 'file-with-wrong-UID'.
      inode mismatch: 'file-with-wrong-UID' ino 13242270 in db, 13242271 in request.
      inode mismatch: 'file-with-wrong-UID' ino 13242270 in db, 13242271 in request.
      inode mismatch: 'file-with-wrong-UID' ino 13242270 in db, 13242271 in request.
      inode mismatch: 'file-with-wrong-UID' ino 13242270 in db, 13242271 in request.
      inode mismatch: 'file-with-wrong-UID' ino 13242270 in db, 13242271 in request.
      inode mismatch: 'file-with-wrong-UID' ino 13242270 in db, 13242271 in request.
      path mismatch [1 link]: ino 13242270 db 'file-with-wrong-UID' req 'some-other-unrelated-file'.
      creat for 'some-other-unrelated-file' replaces existing 13242270 ['file-with-wrong-UID'].
      db cleanup for server shutdown, 02:16:23.685
      memory-to-file backup complete, 02:16:23.685.
      db cleanup finished, 02:16:23.685
    
      And some-other-unrelated-file is really some different file, not just hardlink
      to the same file from some different directory (like between WORKDIR and sysroot
      other "path mismatch" entries show).
    
    Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/insane.bbclass | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/meta/classes/insane.bbclass b/meta/classes/insane.bbclass
index 0a3b528..59805ae 100644
--- a/meta/classes/insane.bbclass
+++ b/meta/classes/insane.bbclass
@@ -1238,6 +1238,41 @@ python do_qa_unpack() {
         bb.warn('%s: the directory %s (%s) pointed to by the S variable doesn\'t exist - please set S within the recipe to point to where the source has been unpacked to' % (d.getVar('PN'), d.getVar('S', False), s_dir))
 }
 
+python do_qa_pseudo() {
+    ###########################################################################
+    # Check pseudo.log for unexpected errors
+    #
+    # Typical pseudo.log contains many "^path mismatch" lines for all the hardlinked files
+    # e.g. in some smaller component I see 231/237 lines to be "^path mismatch" other 6
+    # lines are setup and cleanup lines like this:
+    # debug_logfile: fd 2
+    # pid 7975 [parent 7974], doing new pid setup and server start
+    # Setup complete, sending SIGUSR1 to pid 7974.
+    # db cleanup for server shutdown, 17:33:58.787
+    # memory-to-file backup complete, 17:33:58.787.
+    # db cleanup finished, 17:33:58.787
+    #
+    # but if there is one of:
+    # "^inode mismatch"
+    # "^creat ignored for existing file"
+    # "^creat for.*replaces existing"
+    # then there might be some bigger issue which sometimes results in host-user-contaminated QA warnings
+    ###########################################################################
+
+    import subprocess
+
+    pseudodir = d.getVar('PSEUDO_LOCALSTATEDIR')
+    bb.note("Checking pseudo.log for common errors")
+    pseudolog = os.path.join(pseudodir, "pseudo.log")
+    statement = "grep" \
+        " -e '^inode mismatch'" \
+        " -e '^creat ignored for existing file'" \
+        " -e '^creat for.*replaces existing'" \
+        " %s" % pseudolog
+    if subprocess.call("%s -q" % statement, shell=True) == 0:
+        bb.fatal("This %s indicates errors, see %s or grep -v '^path mismatch' %s" % (pseudolog, statement, pseudolog))
+}
+
 # The Staging Func, to check all staging
 #addtask qa_staging after do_populate_sysroot before do_build
 do_populate_sysroot[postfuncs] += "do_qa_staging "
@@ -1250,6 +1285,11 @@ do_configure[postfuncs] += "do_qa_configure "
 # Check does S exist.
 do_unpack[postfuncs] += "do_qa_unpack"
 
+# Check pseudo.log for unexpected errors
+# For some reason do_build postfunction isn't executed
+# do_build[postfuncs] += "do_qa_pseudo"
+addtask do_qa_pseudo after do_populate_sysroot do_packagedata do_package before do_build
+
 python () {
     import re
     

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list