From: Richard Purdie Date: Fri, 9 Sep 2016 12:19:02 +0000 (+0100) Subject: oeqa/parselogs: Don't use cwd for file transfers X-Git-Tag: lucaceresoli/bug-15201-perf-libtraceevent-missing~24263 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac8f1e58ca3a0945795087cad9443be3e3e6ead8;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git oeqa/parselogs: Don't use cwd for file transfers If you run: MACHINE=A bitbake -c testimage MACHINE=B bitbake -c testimage and A has errors in parselogs, machine B can pick these up and cause immense confusion. This is because the test transfers the log files to cwd which is usually TOPDIR. This is clearly bad and this patch uses a subdir of WORKDIR to ensure machines don't contaminate each other. Also ensure any previous logs are cleaned up from any existing transfer directory. Signed-off-by: Richard Purdie --- diff --git a/meta/lib/oeqa/runtime/parselogs.py b/meta/lib/oeqa/runtime/parselogs.py index 698dda8f7b5..b5017c2492c 100644 --- a/meta/lib/oeqa/runtime/parselogs.py +++ b/meta/lib/oeqa/runtime/parselogs.py @@ -181,6 +181,9 @@ class ParseLogsTest(oeRuntimeTest): def getMachine(self): return oeRuntimeTest.tc.d.getVar("MACHINE", True) + def getWorkdir(self): + return oeRuntimeTest.tc.d.getVar("WORKDIR", True) + #get some information on the CPU of the machine to display at the beginning of the output. This info might be useful in some cases. def getHardwareInfo(self): hwi = "" @@ -218,16 +221,19 @@ class ParseLogsTest(oeRuntimeTest): #copy the log files to be parsed locally def transfer_logs(self, log_list): - target_logs = 'target_logs' + workdir = self.getWorkdir() + self.target_logs = workdir + '/' + 'target_logs' + target_logs = self.target_logs if not os.path.exists(target_logs): os.makedirs(target_logs) + bb.utils.remove(self.target_logs + "/*") for f in log_list: self.target.copy_from(f, target_logs) #get the local list of logs def get_local_log_list(self, log_locations): self.transfer_logs(self.getLogList(log_locations)) - logs = [ os.path.join('target_logs',f) for f in os.listdir('target_logs') if os.path.isfile(os.path.join('target_logs',f)) ] + logs = [ os.path.join(self.target_logs, f) for f in os.listdir(self.target_logs) if os.path.isfile(os.path.join(self.target_logs, f)) ] return logs #build the grep command to be used with filters and exclusions