Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

board/*/kconfig: Fix boards on kconfig blocklist #17467

Merged

Conversation

MrKevinWeiss
Copy link
Contributor

Contribution description

This should (eventually) test and pass all non-deprecated boards when using kconfig modeling.

Testing procedure

Murdock green

Issues/PRs references

Related to #16875

@MrKevinWeiss MrKevinWeiss added CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR CI: full build disable CI build filter labels Jan 4, 2022
@github-actions github-actions bot added Area: boards Area: Board ports Area: CI Area: Continuous Integration of RIOT components Area: Kconfig Area: Kconfig integration Area: drivers Area: Device drivers labels Jan 4, 2022
@MrKevinWeiss MrKevinWeiss requested a review from basilfx as a code owner January 5, 2022 13:06
@github-actions github-actions bot added Area: cpu Area: CPU/MCU ports Platform: ARM Platform: This PR/issue effects ARM-based platforms labels Jan 5, 2022
@github-actions github-actions bot added the Platform: ESP Platform: This PR/issue effects ESP-based platforms label Jan 6, 2022
@MrKevinWeiss
Copy link
Contributor Author

Hmmm currently the esps are failing due to RIOT_CI_BUILD changing the dependency resolution.

I thought we can get around it by just importing a riot-ci-build.config but, as importing configs can't have any ifs or something, it seems like this will need to be solved by adding a CONFIG_RIOT_CI_BUILD that can alter the kconfig dependency resolution. Maybe this could also be solved with some macro magic or something.

@gschorcht
Copy link
Contributor

Hmmm currently the esps are failing due to RIOT_CI_BUILD changing the dependency resolution.

😟 I am really sorry for this inconvenience. These conditional dependencies were just a trick to cover all optional esp_* modules in CI compilation without defining additional virtual boards which would increase again the compile time in Murdock. This became necessary because we noticed several times that after a series of changes provided by different PRs, the compilation suddenly fails when optional modules are enabled because they were not covered when the PRs were compiled in CI.

Another idea (first approach in PR #12971) was to clone a number of test applications which use these optional modules, but it seemed to be not reasonable to have duplicated code just for compilation tests.

To be honest, I felt that the virtual boards approach would have been the coolest one and the clearest.

@MrKevinWeiss
Copy link
Contributor Author

I am really sorry for this inconvenience.

Don't be. This just points out an issue that we should be able to solve. This is not the only env var that would change the dependency resolution I would image. Now that I think of it, it should be solved like DEVELHELP. Let me check it out!

@github-actions github-actions bot added the Area: build system Area: Build system label Jan 7, 2022
@MrKevinWeiss
Copy link
Contributor Author

We will see about this. I am not so convinced of the HAVE_RIOT_CI_BUILD_ESP_* symbols, especially the implementation of HAVE_RIOT_CI_BUILD_ESP_I2C_HW. It would be good to get some feedback from @leandrolanzieri as he figured out that design pattern. But I can wait for that review. (worst case we flag it and fix it later...)

@MrKevinWeiss
Copy link
Contributor Author

Ahh it passed... That seemed almost too easy.

@MrKevinWeiss
Copy link
Contributor Author

I will run a full build if the CI is free I guess.

@aabadie aabadie added CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR and removed CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR labels Jan 7, 2022
@MrKevinWeiss
Copy link
Contributor Author

I will run a full build if the CI is free I guess.

I spoke too soon 😆

@MrKevinWeiss MrKevinWeiss force-pushed the pr/fix/kconfigblocklist branch from 0fb2b96 to 134ab1a Compare January 10, 2022 09:34
@github-actions github-actions bot removed the Area: build system Area: Build system label Jan 18, 2022
@MrKevinWeiss
Copy link
Contributor Author

OK looks better, should not contain any conflicting esp changes.

@github-actions github-actions bot added the Area: tests Area: tests and testing framework label Jan 19, 2022
@MrKevinWeiss MrKevinWeiss force-pushed the pr/fix/kconfigblocklist branch from 5fb72a2 to 4765346 Compare January 21, 2022 12:55
@MrKevinWeiss
Copy link
Contributor Author

I think everything should be in order now. Any remaining issues?

@MrKevinWeiss
Copy link
Contributor Author

ugg I guess this should be paused until the design patterns PR is finished.

@MrKevinWeiss
Copy link
Contributor Author

The issue is how to have default selectable modules that don't contain variants (ie no choices). This currently will hide the prompt during menuconfig if the default is selected. The 2 proposed solutions are selecting from the HAVE_ which has the problem that all dependencies need to be repeated there, imply would not actually updated the values if the default is selected. Or adding a comment, which takes a few extra lines but seems to be the cleanest solution.

@MrKevinWeiss
Copy link
Contributor Author

OK, simplified the drivers as per our best understanding of the design patterns.

If everything looks good may I squash?

Copy link
Contributor

@leandrolanzieri leandrolanzieri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks mostly good, please address the comments and squash directly @MrKevinWeiss!

drivers/adxl345/Kconfig Outdated Show resolved Hide resolved
drivers/mpu9x50/Kconfig Show resolved Hide resolved
@MrKevinWeiss MrKevinWeiss force-pushed the pr/fix/kconfigblocklist branch from 2152cc4 to 68b1623 Compare February 1, 2022 12:58
@MrKevinWeiss
Copy link
Contributor Author

Just needs an ack :)

Copy link
Contributor

@fjmolinas fjmolinas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, trusting CI

Copy link
Contributor

@leandrolanzieri leandrolanzieri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK!

@leandrolanzieri leandrolanzieri merged commit 96dcc35 into RIOT-OS:master Feb 2, 2022
@MrKevinWeiss MrKevinWeiss deleted the pr/fix/kconfigblocklist branch February 2, 2022 07:58
@MrKevinWeiss
Copy link
Contributor Author

Thanks for the review!

@OlegHahm OlegHahm added this to the Release 2022.04 milestone Apr 25, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: boards Area: Board ports Area: CI Area: Continuous Integration of RIOT components Area: cpu Area: CPU/MCU ports Area: drivers Area: Device drivers Area: Kconfig Area: Kconfig integration Area: tests Area: tests and testing framework CI: full build disable CI build filter CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Platform: ARM Platform: This PR/issue effects ARM-based platforms
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants