|
40 | 40 | # is in |
41 | 41 | : ${TEST_BOARDS_LLVM_COMPILE:="iotlab-m3 native nrf52dk mulle nucleo-f401re samr21-xpro slstk3402a"} |
42 | 42 |
|
43 | | -: ${TEST_KCONFIG_BOARDS_AVAILABLE:=" |
44 | | -adafruit-itsybitsy-m4 |
45 | | -arduino-due |
46 | | -arduino-leonardo |
47 | | -arduino-mkrzero |
48 | | -arduino-mega2560 |
49 | | -arduino-nano |
50 | | -atxmega-a1-xplained |
51 | | -atxmega-a3bu-xplained |
52 | | -avr-rss2 |
53 | | -avsextrem |
54 | | -bastwan |
55 | | -bluepill |
56 | | -b-l475e-iot01a |
57 | | -cc1352-launchpad |
58 | | -cc2650-launchpad |
59 | | -derfmega128 |
60 | | -dwm1001 |
61 | | -esp32-ci |
62 | | -esp32-heltec-lora32-v2 |
63 | | -esp32-olimex-evb |
64 | | -esp32c3-ci |
65 | | -esp32c3-devkit |
66 | | -esp32s3-ci |
67 | | -esp32s3-devkit |
68 | | -esp32s2-ci |
69 | | -esp32s2-devkit |
70 | | -esp8266-ci |
71 | | -esp8266-esp-12x |
72 | | -hamilton |
73 | | -hifive1 |
74 | | -mbed_lpc1768 |
75 | | -mega-xplained |
76 | | -microbit |
77 | | -mulle |
78 | | -native |
79 | | -nrf52840dk |
80 | | -nrf9160dk |
81 | | -nucleo-f072rb |
82 | | -nucleo-f103rb |
83 | | -nucleo-f207zg |
84 | | -nucleo-f334r8 |
85 | | -nucleo-f429zi |
86 | | -nucleo-f767zi |
87 | | -nucleo-g071rb |
88 | | -nucleo-g474re |
89 | | -nucleo-l011k4 |
90 | | -nucleo-l073rz |
91 | | -nucleo-l152re |
92 | | -nucleo-l433rc |
93 | | -nucleo-l552ze-q |
94 | | -pba-d-01-kw2x |
95 | | -p-nucleo-wb55 |
96 | | -qn9080dk |
97 | | -remote-revb |
98 | | -rpi-pico |
99 | | -same54-xpro |
100 | | -samr21-xpro |
101 | | -seeedstudio-gd32 |
102 | | -slstk3400a |
103 | | -sltb001a |
104 | | -slwstk6220a |
105 | | -stm32f723e-disco |
106 | | -stm32mp157c-dk2 |
107 | | -waspmote-pro |
108 | | -waveshare-nrf52840-eval-kit |
109 | | -weact-f401ce |
110 | | -z1 |
111 | | -"} |
112 | | - |
113 | | -: ${TEST_KCONFIG_ENFORCE_APP_GROUPS:=" |
114 | | -examples/hello-world |
115 | | -tests/build_system/external_board_dirs |
116 | | -tests/drivers/b* |
117 | | -tests/drivers/f* |
118 | | -tests/drivers/g* |
119 | | -tests/drivers/h* |
120 | | -tests/drivers/i* |
121 | | -tests/drivers/j* |
122 | | -tests/drivers/l* |
123 | | -tests/drivers/o* |
124 | | -tests/drivers/p* |
125 | | -tests/drivers/q* |
126 | | -tests/drivers/r* |
127 | | -tests/drivers/s* |
128 | | -tests/drivers/t* |
129 | | -tests/drivers/u* |
130 | | -tests/drivers/v* |
131 | | -tests/net/ieee802154_hal |
132 | | -tests/periph/* |
133 | | -tests/pkg/elk |
134 | | -tests/pkg/uzlib |
135 | | -tests/sys/cb_mux* |
136 | | -tests/sys/congure_* |
137 | | -tests/sys/prng_* |
138 | | -tests/sys/trace |
139 | | -tests/sys/xtimer_* |
140 | | -tests/sys/ztimer_* |
141 | | -"} |
142 | | - |
143 | | -# This list prevents boards from being tested by the TEST_KCONFIG_TEST_ALLOWLIST |
144 | | -# This should only be used for boards that require a lot of work, such as, |
145 | | -# requiring modelling of a clock tree. |
146 | | -# As a rule of thumb, only add boards here if there are not differences in |
147 | | -# modules or packages. |
148 | | -# Eventually this list will be removed... |
149 | | -# |
150 | | -: ${TEST_KCONFIG_BOARD_BLOCKLIST:=" |
151 | | -"} |
152 | | - |
153 | | -# This list will force all boards that are not in the TEST_KCONFIG_BOARD_BLOCKLIST |
154 | | -# to be tested on the apps. The purpose is to prevent new boards from skipping |
155 | | -# the kconfig implementations. |
156 | | -: ${TEST_KCONFIG_TEST_ALLOWLIST:=" |
157 | | -examples/hello-world |
158 | | -tests/drivers/saul |
159 | | -tests/drivers/mtd_mapper |
160 | | -"} |
161 | | - |
162 | 43 | : ${TEST_WITH_CONFIG_SUPPORTED:="examples/suit_update tests/drivers/at86rf2xx_aes"} |
163 | 44 |
|
164 | 45 | export RIOT_CI_BUILD=1 |
|
251 | 132 |
|
252 | 133 | CFCR_ARGS="--upstreambranch ${CI_BASE_COMMIT}" |
253 | 134 |
|
254 | | -get_supported_kconfig_board_app() { |
255 | | - local board=$1 |
256 | | - local appdir=$2 |
257 | | - if is_in_list "${board}" "${TEST_KCONFIG_BOARD_BLOCKLIST}"; then |
258 | | - return 1 |
259 | | - fi |
260 | | - |
261 | | - # On nightlies run all possible kconfig tests on all boards |
262 | | - # Normally we don't want to do this as it adds quite a bit to build time |
263 | | - # and the subset of boards we are testing for are pretty good at catching |
264 | | - # any bugs... |
265 | | - # This will be over one day, I promise. |
266 | | - if [ ${NIGHTLY} -eq 1 ]; then |
267 | | - if is_in_list "${appdir}" "${TEST_KCONFIG_ENFORCE_APP_GROUPS}"; then |
268 | | - return 0 |
269 | | - fi |
270 | | - if [ -f "${appdir}/app.config.test" ]; then |
271 | | - return 0 |
272 | | - fi |
273 | | - fi |
274 | | - if is_in_list "${appdir}" "${TEST_KCONFIG_TEST_ALLOWLIST}"; then |
275 | | - return 0 |
276 | | - fi |
277 | | - if is_in_list "${board}" "${TEST_KCONFIG_BOARDS_AVAILABLE}"; then |
278 | | - if is_in_list "${appdir}" "${TEST_KCONFIG_ENFORCE_APP_GROUPS}"; then |
279 | | - return 0 |
280 | | - fi |
281 | | - if [ -f "${appdir}/app.config.test" ]; then |
282 | | - return 0 |
283 | | - fi |
284 | | - fi |
285 | | - return 1 |
286 | | -} |
287 | | - |
288 | | -kconfig_module_packages_diff() { |
289 | | - local board=$1 |
290 | | - local appdir=$2 |
291 | | - |
292 | | - make clean --no-print-directory -C ${appdir} BOARD=${board} |
293 | | - mmp=$(make --no-print-directory info-modules info-packages -C ${appdir} BOARD=${board}) |
294 | | - |
295 | | - make clean --no-print-directory -C ${appdir} BOARD=${board} |
296 | | - kmp=$(TEST_KCONFIG=1 make --no-print-directory info-modules info-packages -C ${appdir} BOARD=${board}) |
297 | | - |
298 | | - |
299 | | - bash -c "diff <(echo \"${mmp}\") <(echo \"${kmp}\")" |
300 | | -} |
301 | | - |
302 | 135 | # if RUN_TESTS is unset (e.g., not passed from the outside), |
303 | 136 | # set to 1 if NIGHTLY=1 or if the label "CI: run tests" is set, |
304 | 137 | # otherwise set 0. |
@@ -531,67 +364,14 @@ compile() { |
531 | 364 | # reduces disk IO. |
532 | 365 | export CCACHE_TEMPDIR="$(pwd)/.ccache/tmp" |
533 | 366 |
|
534 | | - # We compile a first time with Kconfig based dependency |
535 | | - # resolution for regression purposes. $TEST_KCONFIG contains a |
536 | | - # list of board-application tuples that are currently modeled to |
537 | | - # run with Kconfig |
538 | | - |
539 | | - should_check_kconfig_hash=0 |
540 | | - |
541 | | - if get_supported_kconfig_board_app "${board}" "${appdir}"; then |
542 | | - should_check_kconfig_hash=1 |
543 | | - # As we have some issues with occasional unrelated hash mismatches |
544 | | - # we will stop the binary checks and rely only in a module/package |
545 | | - # check to ensure kconfig is matching make. |
546 | | - # Only nightlies will check the hash... |
547 | | - # Once we figure out the problem we can check the hashes again or |
548 | | - # better yet just finish! |
549 | | - if [ ${NIGHTLY} -eq 1 ]; then |
550 | | - BOARD=${board} make -C${appdir} clean |
551 | | - CCACHE_BASEDIR="$(pwd)" BOARD=${board} TOOLCHAIN=${toolchain} RIOT_CI_BUILD=1 TEST_KCONFIG=1 \ |
552 | | - make -C${appdir} all test-input-hash -j${JOBS:-4} |
553 | | - RES=$? |
554 | | - if [ $RES -eq 0 ]; then |
555 | | - kconfig_hashes="$(cat ${BINDIR}/test-input-hash.sha1)" |
556 | | - else |
557 | | - kconfig_hashes="kconfig-build-failed" |
558 | | - echo "An error occurred while compiling using Kconfig"; |
559 | | - fi |
560 | | - fi |
561 | | - fi |
562 | | - |
563 | | - # compile without Kconfig |
564 | 367 | BOARD=${board} make -C${appdir} clean |
565 | 368 | CCACHE_BASEDIR="$(pwd)" BOARD=$board TOOLCHAIN=$toolchain RIOT_CI_BUILD=1 \ |
566 | 369 | make -C${appdir} all test-input-hash -j${JOBS:-4} |
567 | 370 | RES=$? |
568 | 371 |
|
569 | | - if [ ${NIGHTLY} -eq 1 ]; then |
570 | | - no_kconfig_hashes="$(cat ${BINDIR}/test-input-hash.sha1)" |
571 | | - fi |
572 | | - # test hash is used to cache test results, not for comparing binaries |
573 | | - # generated with and without KConfig |
| 372 | + # test hash is used to cache test results |
574 | 373 | test_hash=$(test_hash_calc "$BINDIR") |
575 | 374 |
|
576 | | - |
577 | | - if [ ${should_check_kconfig_hash} != 0 ]; then |
578 | | - if [ ${NIGHTLY} -eq 1 ]; then |
579 | | - if [ "${kconfig_hashes}" != "${no_kconfig_hashes}" ]; then |
580 | | - echo "Hashes of binaries with and without Kconfig mismatch for ${appdir} with ${board}"; |
581 | | - echo "Please check that all used modules are modelled in Kconfig and enabled"; |
582 | | - echo "Input without KConfig:" |
583 | | - echo "${no_kconfig_hashes}" |
584 | | - echo "Input with KConfig:" |
585 | | - echo "${kconfig_hashes}" |
586 | | - kconfig_module_packages_diff ${board} ${appdir} |
587 | | - RES=1 |
588 | | - fi |
589 | | - else |
590 | | - kconfig_module_packages_diff ${board} ${appdir} |
591 | | - RES=$(( $RES | $? )) |
592 | | - fi |
593 | | - fi |
594 | | - |
595 | 375 | # run tests |
596 | 376 | if [ $RES -eq 0 ]; then |
597 | 377 | if is_in_list "$board" "$EMULATED_BOARDS_AVAILABLE"; then |
|
0 commit comments