BobBuildTool/basement

glibc checkoutScript fails on rebuild

tu-maurice opened this issue · 2 comments

I am building the glibc recipe for my target rootfs, but everytime I run bob build ... again it fails with the following error. For now I'm deleting work/libs/glibc/src as a workaround, which does cause a new checkout, but not a new build.

[   7] CHECKOUT  libs::glibc - work/libs/glibc/src/1/workspace 
[   7] |libs::glibc| Patch was (partially) squashed? Trying to recover...
[   7] |libs::glibc| Step failed with return status 1; Command: patch -p $p -F 0 -f < $i
[   7] |libs::glibc| Call stack (most recent call first)
[   7] |libs::glibc|     #0: Class  patch, layer basement, line 42, in patchApplySeries
[   7] |libs::glibc|     #1: Recipe libs::glibc, layer basement, line 1, in main

My guess is bob tries to run the checkoutScript again on sources where the checkoutScript was already executed?

There are not many reasons why the checkoutScript will run again for fixed packages. This is rather unusual. I'm wondering why this is the case for you. Did you update glibc and removed the digestSHA256? It looks like the tar file was extracted again (and squashed the patch) which should not happen.

Anyway, the real culprit is the patch class that cannot cope with the fact when some or all of it's modifications were reverted. Plus the fact that the $<<glibc/*.diff>> syntax concatenates all files which leads to additional problems when multiple patches patch the same file. See #55 for some similar issue.

I did neither of those things. I also keep deleting the source directory I mentioned above. However I do build 2 glibcs, one for the gcc-native to look at during compilation and one for the target rootfs, I have yet to find out how to tell bob to reuse the first glibc.