[oe-commits] [openembedded-core] 04/28: sstate.bbclass: catch ValueError from incorrectly written sstate manifests

git at git.openembedded.org git at git.openembedded.org
Thu Jan 3 12:40:00 UTC 2019


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

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

commit 870ba5d80e76e0f989971532fc2adc0ebe811ab6
Author: Martin Jansa <martin.jansa at gmail.com>
AuthorDate: Mon Dec 31 09:58:35 2018 +0000

    sstate.bbclass: catch ValueError from incorrectly written sstate manifests
    
    * in some rare cases the file format might be broken, e.g. when you run
      out of disk space while writing to it (hint: make sure to use
      BB_DISKMON_DIRS on _all_ the builds, to make sure that they can stop
      gracefully before this happens).
    
    * will show error like this:
      ERROR: Invalid line '/OE/build/luneos-thud/webos-ports' in sstate manifest '/OE/build/luneos-thud/webos-ports/tmp-glibc/sstate-control/index-allarch'
      when the file isn't complete, like in my case:
      $ tail -n 2 /OE/build/luneos-thud/webos-ports/tmp-glibc/sstate-control/index-allarch
      /OE/build/luneos-thud/webos-ports/tmp-glibc/stamps/all-webos-linux/org.webosports.app.calculator/0.1.1+gitrAUTOINC+9e9eb67c28-r0 /OE/build/luneos-thud/webos-ports/tmp-glibc/sstate-control/manifest-allarch-org.webosports.app.calculator /OE/build/luneos-thud/webos-ports/tmp-glibc/work/all-webos-linux/org.webosports.app.calculator/0.1.1+gitrAUTOINC+9e9eb67c28-r0
      /OE/build/luneos-thud/webos-ports
    
    * instead of much longer exception which doesn't really show what's
      wrong to selectively fix that (other than removing while TMPDIR):
    
      ERROR: Command execution failed: Traceback (most recent call last):
      File "/OE/build/luneos-thud/webos-ports/bitbake/lib/bb/command.py", line 113, in runAsyncCommand
        self.cooker.updateCache()
      File "/OE/build/luneos-thud/webos-ports/bitbake/lib/bb/cooker.py", line 1562, in updateCache
        bb.event.fire(event, self.databuilder.mcdata[mc])
      File "/OE/build/luneos-thud/webos-ports/bitbake/lib/bb/event.py", line 225, in fire
        fire_class_handlers(event, d)
      File "/OE/build/luneos-thud/webos-ports/bitbake/lib/bb/event.py", line 134, in fire_class_handlers
        execute_handler(name, handler, event, d)
      File "/OE/build/luneos-thud/webos-ports/bitbake/lib/bb/event.py", line 106, in execute_handler
        ret = handler(event)
      File "/OE/build/luneos-thud/webos-ports/openembedded-core/meta/classes/sstate.bbclass", line 1083, in sstate_eventhandler2
        (stamp, manifest, workdir) = l.split()
      ValueError: not enough values to unpack (expected 3, got 1)
    
    Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/classes/sstate.bbclass | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 8b48ab4..be5f19b 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -1081,12 +1081,15 @@ python sstate_eventhandler2() {
         with open(i, "r") as f:
             lines = f.readlines()
             for l in lines:
-                (stamp, manifest, workdir) = l.split()
-                if stamp not in stamps and stamp not in preservestamps and stamp in machineindex:
-                    toremove.append(l)
-                    if stamp not in seen:
-                        bb.debug(2, "Stamp %s is not reachable, removing related manifests" % stamp)
-                        seen.append(stamp)
+                try:
+                    (stamp, manifest, workdir) = l.split()
+                    if stamp not in stamps and stamp not in preservestamps and stamp in machineindex:
+                        toremove.append(l)
+                        if stamp not in seen:
+                            bb.debug(2, "Stamp %s is not reachable, removing related manifests" % stamp)
+                            seen.append(stamp)
+                except ValueError:
+                    bb.fatal("Invalid line '%s' in sstate manifest '%s'" % (l, i))
 
         if toremove:
             msg = "Removing %d recipes from the %s sysroot" % (len(toremove), a)

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


More information about the Openembedded-commits mailing list