-
Notifications
You must be signed in to change notification settings - Fork 372
Debian - Work through all build errors #561
Comments
Hey @SethVgr! For those test errors, the workaround is to do See also https://docs.google.com/document/d/16QP70PhONMxvISOg2PFBd6z3Qy4ewnkWBkiDW8agDEA/edit, which @programonauta will be cleaning up into an extra Debian page at http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/building-from-source/linux.html. |
Oh yes, one more thing which literally just got fixed as a result of @programonauta work was ethereum/evmjit#63, but the libethereum sub-module hasn't been updated to that latest evmjit version yet. I will do that right now, @chfast, and then update the libethereum sub-module in webthree-umbrella too, so that we have flushed all these Debian fixes into the umbrella. |
@chfast Please review/merge :-) |
@bobsummerwill Thanks for the tip of not building the tests. However, I still get errors (array out of bounds):
|
Ah, yes you will. So I just updated the webthree-umbrella 1 minute ago (2adaeb3) which pulled the latest libethereum in, which pulled that evmjit fix in. But I remember now that @programonauta and I didn't get to a committed change for the build error above, which appears to be incorrect analysis of a peculiar-looking array subscript / union use-case. I see this exact same issue for my ARM Linux cross-builds: doublethinkco/cpp-ethereum-cross#82 I think it due to the age of the GCC compiler (4.8.1 in that case, and looks like 4.9.2 for Jessie). Other distros are all using 5.x and some like Arch are even up to 6.1.x. My worst case is Tizen, which is still on 4.6. From 2012 :-) For @programonauta, we just hacked around it for now, by removing warnings-as-errors. You could do the same for right now, by removing the following line: https://github.com/ethereum/webthree-helpers/blob/develop/cmake/EthCompilerSettings.cmake#L27 We're going to have to work out what a "proper fix" is. I had a look at the code itself to see if there was some code change which could be made to make the usage unambiguous, and make the compiler shut-up, but the unions are all rather complex, and it is actually the compiler which is at fault. So I think the best solution is likely to add #pragma push/pop warning pairs around the problem code. If either of you are feeling brave and would like to try seeing if you can find "the magic" which works, you are obviously in the best position to test such a fix. It would end up looking something like:
Which probably spans a fair chunk of the source file. And for bonus-points, if we can work out when the GCC bug was fixed then we could add an "if GCC < x.x.x) clause too, so that the fix is only being applied when needed. |
@bobsummerwill Thanks. I've managed to build it. |
Oh my, my! So did you need to make an edit for the warnings with the push/pop as per my notes above? |
I didn't get run successfully without |
Brilliant - much appreciated. I think we are very close, eh? And one of you (or me!) will need to make a PR for those warning push/pops. |
Yes, I'm thinking in a Troubleshooting section. What do you think about? |
ALL DONE! |
cmake fails to generate files (at least) for Ethereum in webthree-umbrella.
Checklist
System/environment
Expected behaviour
Generation of make files for all submodules.
Observed behaviour
Cmake fails to generate make files:
generates the following output:
The text was updated successfully, but these errors were encountered: