diff options
Diffstat (limited to 'poky/meta/classes/buildstats.bbclass')
-rw-r--r-- | poky/meta/classes/buildstats.bbclass | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/poky/meta/classes/buildstats.bbclass b/poky/meta/classes/buildstats.bbclass index 8a1466d3f..0de605200 100644 --- a/poky/meta/classes/buildstats.bbclass +++ b/poky/meta/classes/buildstats.bbclass @@ -108,25 +108,31 @@ def write_host_data(logfile, e, d, type): import subprocess, os, datetime # minimum time allowed for each command to run, in seconds time_threshold = 0.5 + limit = 10 # the total number of commands num_cmds = 0 - # interval at which data will be logged - interval = int(d.getVar("BB_HEARTBEAT_EVENT", False)) msg = "" if type == "interval": + # interval at which data will be logged + interval = d.getVar("BB_HEARTBEAT_EVENT", False) + if interval is None: + bb.warn("buildstats: Collecting host data at intervals failed. Set BB_HEARTBEAT_EVENT=\"<interval>\" in conf/local.conf for the interval at which host data will be logged.") + d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0") + return + interval = int(interval) cmds = d.getVar('BB_LOG_HOST_STAT_CMDS_INTERVAL') - msg = "Host Stats: Collecting data at interval.\n" + msg = "Host Stats: Collecting data at %d second intervals.\n" % interval if cmds is None: d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0") - bb.warn("buildstats: Collecting host data at intervals failed. Set BB_LOG_HOST_STAT_CMDS_INTERVAL=\"command1 ; command2 ; ... \" in conf/local.conf\n") + bb.warn("buildstats: Collecting host data at intervals failed. Set BB_LOG_HOST_STAT_CMDS_INTERVAL=\"command1 ; command2 ; ... \" in conf/local.conf.") return if type == "failure": cmds = d.getVar('BB_LOG_HOST_STAT_CMDS_FAILURE') msg = "Host Stats: Collecting data on failure.\n" - msg += "Failed at task " + e.task + "\n" + msg += "Failed at task: " + e.task + "\n" if cmds is None: d.setVar("BB_LOG_HOST_STAT_ON_FAILURE", "0") - bb.warn("buildstats: Collecting host data on failure failed. Set BB_LOG_HOST_STAT_CMDS_FAILURE=\"command1 ; command2 ; ... \" in conf/local.conf\n") + bb.warn("buildstats: Collecting host data on failure failed. Set BB_LOG_HOST_STAT_CMDS_FAILURE=\"command1 ; command2 ; ... \" in conf/local.conf.") return c_san = [] for cmd in cmds.split(";"): @@ -134,18 +140,20 @@ def write_host_data(logfile, e, d, type): continue num_cmds += 1 c_san.append(cmd) - if num_cmds <= 0: - d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0") - d.setVar("BB_LOG_HOST_STAT_ON_FAILURE", "0") + if num_cmds == 0: + if type == "interval": + d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0") + if type == "failure": + d.setVar("BB_LOG_HOST_STAT_ON_FAILURE", "0") return # return if the interval is not enough to run all commands within the specified BB_HEARTBEAT_EVENT interval - limit = interval / num_cmds - if limit <= time_threshold: - d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0") - d.setVar("BB_LOG_HOST_STAT_ON_FAILURE", "0") - bb.warn("buildstats: Collecting host data failed. BB_HEARTBEAT_EVENT interval not enough to run the specified commands. HINT: Increase value of BB_HEARTBEAT_EVENT in conf/local.conf\n") - return + if type == "interval": + limit = interval / num_cmds + if limit <= time_threshold: + d.setVar("BB_LOG_HOST_STAT_ON_INTERVAL", "0") + bb.warn("buildstats: Collecting host data failed. BB_HEARTBEAT_EVENT interval not enough to run the specified commands. Increase value of BB_HEARTBEAT_EVENT in conf/local.conf.") + return # set the environment variables path = d.getVar("PATH") @@ -179,7 +187,7 @@ python run_buildstats () { taskdir = os.path.join(bsdir, d.getVar('PF')) if isinstance(e, bb.event.HeartbeatEvent) and bb.utils.to_boolean(d.getVar("BB_LOG_HOST_STAT_ON_INTERVAL")): bb.utils.mkdirhier(bsdir) - write_host_data(os.path.join(bsdir, "host_stats"), e, d, "interval") + write_host_data(os.path.join(bsdir, "host_stats_interval"), e, d, "interval") if isinstance(e, bb.event.BuildStarted): ######################################################################## @@ -254,8 +262,8 @@ python run_buildstats () { build_status = os.path.join(bsdir, "build_stats") with open(build_status, "a") as f: f.write(d.expand("Failed at: ${PF} at task: %s \n" % e.task)) - if bb.utils.to_boolean(d.getVar("BB_LOG_HOST_STAT_ON_FAILURE")): - write_host_data(os.path.join(bsdir, "host_stats"), e, d, "failure") + if bb.utils.to_boolean(d.getVar("BB_LOG_HOST_STAT_ON_FAILURE")): + write_host_data(os.path.join(bsdir, "host_stats_%s_failure" % e.task), e, d, "failure") } addhandler run_buildstats |