]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
buildstats-diff: show more graceful error messages
authorMing Liu <peter.x.liu@external.atlascopco.com>
Tue, 6 Jun 2017 03:19:43 +0000 (05:19 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 9 Jun 2017 16:12:04 +0000 (17:12 +0100)
I got a following error when I run buildstats-diff against a invalid
buildstats file:
| Traceback (most recent call last):
|   File "/poky/scripts/buildstats-diff", line 548, in <module>
|     sys.exit(main())
|   File "/poky/scripts/buildstats-diff", line 534, in main
|     bs1 = read_buildstats(args.buildstats1, args.multi)
|   File "/poky/scripts/buildstats-diff", line 222, in read_buildstats
|     return read_buildstats_dir(path)
|   File "/poky/scripts/buildstats-diff", line 165, in read_buildstats_dir
|     os.path.join(recipe_dir, task))]
|   File "/poky/scripts/buildstats-diff", line 124, in read_buildstats_file
|     bs_task['elapsed_time'] = end_time - start_time
| UnboundLocalError: local variable 'end_time' referenced before assignment

the root cause is that a task was terminated by me on the terminal,
so the generated buildstats file was invalid, supposing that it would
make the buildstats.sh fail, but the script should give more graceful
error messages.

Signed-off-by: Ming Liu <peter.x.liu@external.atlascopco.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
scripts/buildstats-diff

index 427646471427e990e7476d5479f21f98b821a629..8e64480eb3c01e649877746b0b7f47d8eed65775 100755 (executable)
@@ -97,6 +97,7 @@ def read_buildstats_file(buildstat_file):
     """Convert buildstat text file into dict/json"""
     bs_task = BSTask()
     log.debug("Reading task buildstats from %s", buildstat_file)
+    end_time = None
     with open(buildstat_file) as fobj:
         for line in fobj.readlines():
             key, val = line.split(':', 1)
@@ -121,7 +122,10 @@ def read_buildstats_file(buildstat_file):
                 bs_task[ru_type][ru_key] = val
             elif key == 'Status':
                 bs_task['status'] = val
-    bs_task['elapsed_time'] = end_time - start_time
+    if end_time is not None and start_time is not None:
+        bs_task['elapsed_time'] = end_time - start_time
+    else:
+        raise ScriptError("{} looks like a invalid buildstats file".format(buildstat_file))
     return bs_task