From 4b554baa87488ece6c2ef3e3e32be2f34611b6dd Mon Sep 17 00:00:00 2001 From: Javier B Perez Date: Mon, 15 Aug 2016 13:25:33 -0500 Subject: [PATCH] sanitycheck: support for multiple toolchain Added support for multiple toolchain usage. Every arch contains a list of supported toolchain. Each board can override the supported toolchain list. If the board is not supported in the current toolchain, will be discarded. The current toolchain is defined by ZEPHYR_GCC_VARIANT. Added support for toolchain ISSM and ZEPHYR. Change-Id: I31e9b39ba01f6e9bdc4557702428cd09e05f492a Jira: ZEP-592 Signed-off-by: Javier B Perez --- scripts/sanity_chk/arches/arc.ini | 1 + scripts/sanity_chk/arches/arm.ini | 1 + scripts/sanity_chk/arches/nios2.ini | 1 + scripts/sanity_chk/arches/x86.ini | 4 ++++ scripts/sanitycheck | 19 +++++++++++++++---- 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/scripts/sanity_chk/arches/arc.ini b/scripts/sanity_chk/arches/arc.ini index a3c1b00e83a..61ac455be6f 100644 --- a/scripts/sanity_chk/arches/arc.ini +++ b/scripts/sanity_chk/arches/arc.ini @@ -1,3 +1,4 @@ [arch] name = arc platforms = arduino_101_sss quark_se_sss_devboard em_starterkit +supported_toolchains = issm zephyr diff --git a/scripts/sanity_chk/arches/arm.ini b/scripts/sanity_chk/arches/arm.ini index 6f1793c92e0..5f17f6125e7 100644 --- a/scripts/sanity_chk/arches/arm.ini +++ b/scripts/sanity_chk/arches/arm.ini @@ -2,6 +2,7 @@ name = arm platforms = qemu_cortex_m3 frdm_k64f arduino_due nucleo_f103rb stm32_mini_a15 olimexino_stm32 nrf52_nitrogen nrf52_pca10040 +supported_toolchains = zephyr [qemu_cortex_m3] qemu_support = true diff --git a/scripts/sanity_chk/arches/nios2.ini b/scripts/sanity_chk/arches/nios2.ini index de6885d0ca5..ef890369eea 100644 --- a/scripts/sanity_chk/arches/nios2.ini +++ b/scripts/sanity_chk/arches/nios2.ini @@ -1,6 +1,7 @@ [arch] name = nios2 platforms = qemu_nios2 altera_max10 +supported_toolchains = zephyr [qemu_nios2] qemu_support = true diff --git a/scripts/sanity_chk/arches/x86.ini b/scripts/sanity_chk/arches/x86.ini index 1d2b945c580..b62bdb9756f 100644 --- a/scripts/sanity_chk/arches/x86.ini +++ b/scripts/sanity_chk/arches/x86.ini @@ -1,6 +1,7 @@ [arch] name = x86 platforms = qemu_x86_iamcu arduino_101 qemu_x86 minnowboard galileo quark_d2000_crb quark_se_devboard +supported_toolchains = zephyr [qemu_x86] qemu_support = true @@ -17,9 +18,12 @@ qemu_support = false [quark_d2000_crb] qemu_support = false microkernel_support = false +supported_toolchains = issm zephyr [arduino_101] qemu_support = false +supported_toolchains = issm zephyr [quark_se_devboard] qemu_support = false +supported_toolchains = issm zephyr diff --git a/scripts/sanitycheck b/scripts/sanitycheck index 366aacd253e..a326ab2b6a5 100755 --- a/scripts/sanitycheck +++ b/scripts/sanitycheck @@ -801,11 +801,13 @@ class MakeGenerator: # XXX Be sure to update __doc__ if you change any of this!! arch_valid_keys = {"name" : {"type" : "str", "required" : True}, - "platforms" : {"type" : "list", "required" : True}} + "platforms" : {"type" : "list", "required" : True}, + "supported_toolchains" : {"type" : "list", "required" : True}} platform_valid_keys = {"qemu_support" : {"type" : "bool", "default" : False}, "microkernel_support" : {"type" : "bool", - "default" : True}} + "default" : True}, + "supported_toolchains" : {"type" : "list", "default" : []}} testcase_valid_keys = {"tags" : {"type" : "set", "required" : True}, "extra_args" : {"type" : "list"}, @@ -962,6 +964,9 @@ class Platform: self.qemu_support = plat_dict["qemu_support"] self.microkernel_support = plat_dict["microkernel_support"] self.arch = arch + self.supported_toolchains = arch.supported_toolchains + if plat_dict["supported_toolchains"]: + self.supported_toolchains = plat_dict["supported_toolchains"] # Gets populated in a separate step self.defconfig = {"micro" : None, "nano" : None} pass @@ -1011,6 +1016,7 @@ class Architecture: arch = cp.get_section("arch", arch_valid_keys) self.name = arch["name"] + self.supported_toolchains = arch["supported_toolchains"] for plat_name in arch["platforms"]: verbose("Platform: %s" % plat_name) @@ -1203,7 +1209,7 @@ class TestSuite: def apply_filters(self, platform_filter, arch_filter, tag_filter, config_filter, testcase_filter, last_failed, all_plats, - platform_limit): + platform_limit, toolchain): instances = [] discards = {} verbose("platform filter: " + str(platform_filter)) @@ -1349,6 +1355,10 @@ class TestSuite: discards[instance] = "No microkernel support for platform" continue + if toolchain and toolchain not in plat.supported_toolchains: + discards[instance] = "Not supported by the toolchain" + continue + defconfig = {"ARCH" : arch.name, "PLATFORM" : plat.name} defconfig.update(os.environ) for tcase, tdefconfig in tc.defconfig.items(): @@ -1688,6 +1698,7 @@ def main(): start_time = time.time() global VERBOSE, INLINE_LOGS, CPU_COUNTS args = parse_arguments() + toolchain = os.environ.get("ZEPHYR_GCC_VARIANT", None) if args.size: for fn in args.size: @@ -1710,7 +1721,7 @@ def main(): ts = TestSuite(args.arch_root, args.testcase_root, args.outdir) discards = ts.apply_filters(args.platform, args.arch, args.tag, args.config, args.test, args.only_failed, args.all, - args.platform_limit) + args.platform_limit, toolchain) if args.discard_report: ts.discard_report(args.discard_report)