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? |
|
benpicco
left a comment
There was a problem hiding this comment.
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. |
|
Hmm the timer tests are failing a bit too consistently on CI for |
644581f to
55d46b9
Compare
benpicco
left a comment
There was a problem hiding this comment.
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
native64instead of theNATIVE_64BITworkaround from #20315.boards/native64more or less just includes the files fromboard/native(similar to theopenlabs-kw41z-mini-256kibboard).The main logic for native is still in
cpu/nativeandboards/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_NATIVEifeq ($(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
native64in the same way asnative.Note: The CI docker may be missing some dependencies, such as
libsdl2-devfor 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.