.murdock: print hash input when hashes mismatch#18236
.murdock: print hash input when hashes mismatch#18236gschorcht merged 1 commit intoRIOT-OS:masterfrom
Conversation
|
I am not sure if we really want to merge this. If this leads to the issue being traced down and fixed, maybe we don't need this after all. |
|
On the other hand, if the issue is not triggered on the first try, it would likely be better to just merge, rather than having this PR getting multiple CI spins. |
Which issue? |
I would suggest merging it and reverting it later when it is no longer needed. |
hash mismatches between KConfig and non-KConfig builds that cannot be reproduced outside of Murdock. My wild guess is that the output of sha1sum is read before the hash is fully written occasionally. I kind of have the bad feeling that because the output of sha1sum is now read twice (once for the debug message and once again for the actual comparison), that if it is indeed a short read, the additional read will cause the second read to no longer being short. Thus, it will fix the issue. |
.murdock
Outdated
| @@ -469,12 +470,17 @@ compile() { | |||
| make -C${appdir} clean all test-input-hash -j${JOBS:-4} | |||
There was a problem hiding this comment.
maybe the "-j4" here causes an issue? the "test-input-hash" target doesn't depend on ${CLEAN}, so it might pick up an old hashed file before clean cleans it and all causes a rebuild?
(to fix, split "clean", or "test-input-hash", in a seperate line?
|
For future reference: |
|
There seems to be no issue with comparing strings that contain whitespace: And I have the feeling that this is actually faster than first launching |
.murdock
Outdated
| CCACHE_BASEDIR="$(pwd)" BOARD=${board} TOOLCHAIN=${toolchain} RIOT_CI_BUILD=1 TEST_KCONFIG=1 \ | ||
| make -C${appdir} all test-input-hash -j${JOBS:-4} | ||
| make -C${appdir} all -j${JOBS:-4} | ||
| CCACHE_BASEDIR="$(pwd)" BOARD=${board} TOOLCHAIN=${toolchain} RIOT_CI_BUILD=1 TEST_KCONFIG=1 \ |
There was a problem hiding this comment.
Is the split needed here? the clean is already in an extra line.
.murdock
Outdated
| CCACHE_BASEDIR="$(pwd)" BOARD=$board TOOLCHAIN=$toolchain RIOT_CI_BUILD=1 \ | ||
| make -C${appdir} clean all test-input-hash -j${JOBS:-4} | ||
| make -C${appdir} clean | ||
| make -C${appdir} all -j${JOBS:-4} |
There was a problem hiding this comment.
as above, It should suffice to split the "clean" run.
|
The problem with the hashes seems to become more serious again. 8 of the last 10 compilations failed due to these hash mismatches. |
|
Indeed. I guess this will be the prio 1 topic for today's sprint |
|
This needs a rebase & squash. Otherwise it looks good to me! |
|
E.g. I would expect something like |
That's expected, Looking at the build failures, it seems like they only happen on builds that don't actually link (RIOT_NO_LINK=1)? |
yeah, no RIOT/makefiles/tests/tests.inc.mk Line 74 in 932c58d |
|
Is there anything speaking against merging this? |
|
I think only squashing was still missing to get this merged. Just did so. |
It seems like RIOT-OS#18236 introduced some errors in the kconfig hash check. Running locally I get a `.murdock: line 482: [: too many arguments` message. On the CI it looks like `./.murdock: 480: [: 4994c097e49decc77a99c2254e46c710238dc4f2: unexpected operator`. I noticed that the path names are now included in the comparison. It seems surrounding them in quotes helps but this also compares whitespaces and newlines...
Contribution description
This prints the hash input when KConfig and non-KConfig builds differ in hash. Hopefully, this helps debugging the issue.
Testing procedure
Murdock will do so.
Issues/PRs references
None