aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuro Bystricky <juro.bystricky@intel.com>2016-02-22 11:35:25 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-02-28 11:32:34 +0000
commitb39e84edb02d03102b9a571c21e5328c159c4378 (patch)
tree2c25004eb4c1f42c8c6e4f3288e366bcb9b6eb92
parent826bfea4b7018c7974ef388facc99ca70bb3654f (diff)
downloadopenembedded-core-contrib-b39e84edb02d03102b9a571c21e5328c159c4378.tar.gz
buildstats.bbclass: Don't assume /proc/<pid>/io present
It is not guaranteed Linux kernel was configured with process I/O statistics enabled. If process I/O statistcs are not present, issue a one time warning and do not attempt to read the non-existing stats counters. [YOCTO#9025] Signed-off-by: Juro Bystricky <juro.bystricky@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r--meta/classes/buildstats.bbclass24
1 files changed, 16 insertions, 8 deletions
diff --git a/meta/classes/buildstats.bbclass b/meta/classes/buildstats.bbclass
index e58d37be5e..2d63589e4b 100644
--- a/meta/classes/buildstats.bbclass
+++ b/meta/classes/buildstats.bbclass
@@ -25,13 +25,14 @@ def get_process_cputime(pid):
'cstime' : fields[16],
}
iostats = {}
- with open("/proc/%d/io" % pid, "r") as f:
- while True:
- i = f.readline().strip()
- if not i:
- break
- i = i.split(": ")
- iostats[i[0]] = i[1]
+ if os.path.isfile("/proc/%d/io" % pid):
+ with open("/proc/%d/io" % pid, "r") as f:
+ while True:
+ i = f.readline().strip()
+ if not i:
+ break
+ i = i.split(": ")
+ iostats[i[0]] = i[1]
resources = resource.getrusage(resource.RUSAGE_SELF)
childres = resource.getrusage(resource.RUSAGE_CHILDREN)
return stats, iostats, resources, childres
@@ -111,7 +112,14 @@ python run_buildstats () {
if isinstance(e, bb.event.BuildStarted):
########################################################################
- # at first pass make the buildstats heriarchy and then
+ # If the kernel was not configured to provide I/O statistics, issue
+ # a one time warning.
+ ########################################################################
+ if not os.path.isfile("/proc/%d/io" % os.getpid()):
+ bb.warn("The Linux kernel on your build host was not configured to provide process I/O statistics. (CONFIG_TASK_IO_ACCOUNTING is not set)")
+
+ ########################################################################
+ # at first pass make the buildstats hierarchy and then
# set the buildname
########################################################################
bb.utils.mkdirhier(bsdir)