blob: e07fd9ace514e02c358426a709e7c92d2544295a [file] [log] [blame]
Anas Nashifc1cafb12017-08-09 23:34:14 -04001#!/usr/bin/env python3
Anas Nashif3ae52622019-04-06 09:08:09 -04002# SPDX-License-Identifier: Apache-2.0
Anas Nashifc1cafb12017-08-09 23:34:14 -04003
4# A script to generate a list of boards that have changed or added and create an
Anas Nashiff2cb20c2019-06-18 14:45:40 -04005# arguments file for sanitycheck to allow running more tests for those boards.
Anas Nashifc1cafb12017-08-09 23:34:14 -04006
Anas Nashifc1cafb12017-08-09 23:34:14 -04007import re, os
Anas Nashifc1cafb12017-08-09 23:34:14 -04008import sh
9import logging
10import argparse
Anas Nashif924987d2019-04-19 08:11:59 -040011import glob
Anas Nashifc1cafb12017-08-09 23:34:14 -040012
13if "ZEPHYR_BASE" not in os.environ:
14 logging.error("$ZEPHYR_BASE environment variable undefined.\n")
15 exit(1)
16
17logger = None
18
19repository_path = os.environ['ZEPHYR_BASE']
20sh_special_args = {
21 '_tty_out': False,
22 '_cwd': repository_path
23}
24
25def init_logs():
26 log_lev = os.environ.get('LOG_LEVEL', None)
27 level = logging.INFO
28 global logger
29
30 if log_lev == "DEBUG":
31 level = logging.DEBUG
32 elif log_lev == "ERROR":
33 level = logging.ERROR
34
35 console = logging.StreamHandler()
36 format = logging.Formatter('%(levelname)-8s: %(message)s')
37 console.setFormatter(format)
38 logger = logging.getLogger('')
39 logger.addHandler(console)
40 logger.setLevel(level)
41
42 logging.debug("Log init completed")
43
44def parse_args():
45 parser = argparse.ArgumentParser(
46 description="Generate a sanitycheck argument for for boards "
47 " that have changed")
48 parser.add_argument('-c', '--commits', default=None,
49 help="Commit range in the form: a..b")
50 return parser.parse_args()
51
52def main():
53 boards = set()
Anas Nashif924987d2019-04-19 08:11:59 -040054 all_boards = set()
Anas Nashifc1cafb12017-08-09 23:34:14 -040055
56 args = parse_args()
57 if not args.commits:
58 exit(1)
59
60 commit = sh.git("diff","--name-only", args.commits, **sh_special_args)
61 files = commit.split("\n")
62
63 for f in files:
Anas Nashif115b8112019-02-09 14:59:48 -050064 if f.endswith(".rst") or f.endswith(".png") or f.endswith(".jpg"):
65 continue
Ulf Magnussona449c982019-03-21 21:38:03 +010066 p = re.match(r"^boards\/[^/]+\/([^/]+)\/", f)
Anas Nashifc1cafb12017-08-09 23:34:14 -040067 if p and p.groups():
68 boards.add(p.group(1))
69
Anas Nashif924987d2019-04-19 08:11:59 -040070 for b in boards:
71 suboards = glob.glob("boards/*/%s/*.yaml" %(b))
72 for subboard in suboards:
73 name = os.path.splitext(os.path.basename(subboard))[0]
74 if name:
75 all_boards.add(name)
76
77 if all_boards:
78 print("-p\n%s" %("\n-p\n".join(all_boards)))
Anas Nashifc1cafb12017-08-09 23:34:14 -040079
80
81
82if __name__ == "__main__":
83 main()