1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#!/usr/bin/env python3
from subprocess import Popen, PIPE
from glob import glob
from os.path import dirname, join, abspath, exists
from os import chdir
import signal
root = abspath(dirname(dirname(dirname(__file__))))
print("Root dir is:" + root)
args = ['bitbake', 'core-image-minimal']
class Runner(object):
UNKNOWN = 'unknown'
PASS = 'pass'
FAIL = 'fail'
SKIP = 'skipped'
def __init__(self, dirs):
self._dirs = dirs
self._child = None
self._results = {}
for d in dirs:
self._results[d] = self.UNKNOWN
def run(self):
for d in self._dirs:
chdir(d)
if exists(join(d, '.qaskip')):
print("Skipping %s because of .qaskip file" % d)
self._results[d] = self.SKIP
continue
print("Building in " + d)
self._child = Popen(args=args, cwd=d, stdin=PIPE)
retcode = self._child.wait()
self._child = None
if retcode == 0:
self._results[d] = self.PASS
else:
self._results[d] = self.FAIL
print("Error, stopping qa script at %s" % d)
break
for d, result in self._results.items():
print("%20s %s" % (d, result))
def handle_signal(self, signo, stack_frame):
if self._child:
self._child
def main():
dirs = glob(join(root, 'build*'))
runner = Runner(dirs)
signal.signal(signalnum=signal.SIGINT, handler=runner.handle_signal)
runner.run()
if __name__ == "__main__":
main()
|