-
Notifications
You must be signed in to change notification settings - Fork 2k
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
native64: Separate board for 64-bit native #20335
Conversation
68deda8
to
0cdea7f
Compare
370178c
to
610d536
Compare
610d536
to
4a0671a
Compare
looks like we also need to install the 64 bit version of that on CI |
I created RIOT-OS/riotdocker#241 |
All tests seem to work on my machine. However, four tests fail sporadically on the CI (especially the LLVM builds). I created a fixup for the problematic tests
If you have any ideas how to fix them or how to reproduce the failures locally, I'm all ears. |
99ac6ba
to
e5fae5d
Compare
Since the riotdocker CI issue doesn't seem to be so easy to solve, I'd suggest you just blacklist the |
e5fae5d
to
03d4586
Compare
I blacklisted the tests. I also increased the default stacksize for native64 instead of adding exceptions for the LLVM tests that sometimes fail. |
03d4586
to
077a752
Compare
Is having separate boards the right abstraction here? Seeing that some of the ESP32 have a single board take an extra parameter to switch the precise chip (may be different CPUs) IIUC, maybe that's the more accurate abstraction. After all, what matters to users of native (at least to me) is not so much how it is compiled, but more that the network is tun/tap backed, MTD comes from a local file and so on. What's the motivation behind having two separate boards? |
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's getting much nicer
f141498
to
dfc5ec0
Compare
I'd think ease of use would be best if the 64bit version of native would just become the default -- and for examples that have BOARD=native, setting some detail flag is just as usable as changing the board. (And neither is immediately discoverable to users who have used native for some time).
That's true but should be fixable just as easily in our CI -- without introducing a board variant. I'll leave it at that, given that I don't contribute much to this port otherwise, but will ping the matrix room in case anyone wants to present more solid points than my gut feeling "this is the wrong way to do it". [edit after some clarifying chat]: I misremembered the ESP32 part, and there is precedent for board variants over subtleties. Any remaining concerns of mine are better spent around cleaning up board inheritance and defining boards more clearly. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please squash
Hmm the timer tests are failing a bit too consistently on CI for |
644581f
to
55d46b9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, that fixed it - Please squash
I think I found it. I increased the native isr stacksize
I try a few CI runs to see if it fails. But it's still a mystery why I can't reproduce it. |
Adds a separate board for native64 instead of the `NATIVE_64BIT` workaround. The files in `boards/native64` are more or less dummy files and just include the `boards/native` logic (similar to `openlabs-kw41z-mini-256kib`). The main logic for native is in `makefiles/arch/native.inc.mk`, `cpu/native` and `boards/native`. The remaining changes concern the build system, and change native board checks to native CPU checks to cover both boards.
- Adapted build system and test checks for the native boards to include native64 - Added `native64` to the same tests as `native`
- Test native64 like native in murdock - Add native64 to "Platform: native" in github labeler - Add "BUILDTEST_MCU_GROUP == x86_64" to `dist/tools/ci/build_and_test.sh`
8510546
to
d1f1f8a
Compare
Done |
Contribution description
Adds a separate board for
native64
instead of theNATIVE_64BIT
workaround from #20315.boards/native64
more or less just includes the files fromboard/native
(similar to theopenlabs-kw41z-mini-256kib
board).The main logic for native is still in
cpu/native
andboards/native
.The bulk of the changes are related to the build and tests checks for the native board. For example
#ifdef BOARD_NATIVE
#ifdef CPU_NATIVE
ifeq ($(BOARD),native)
ifneq (,$(filter native native64,$(BOARD)))
if BOARD == "native":
if BOARD in ["native", "native64"]:
Changes to the CI
The last commit makes some changes to the CI to test
native64
in the same way asnative
.Note: The CI docker may be missing some dependencies, such as
libsdl2-dev
for 64 bit.Testing procedure
The board should behave just like the native board, except that it lacks Rust support.
The following command compiles and tests the same examples and tests as native (with the exception of the Rust-based ones).
./dist/tools/compile_and_test_for_board/compile_and_test_for_board.py . native64
.