icecc / icecream

Distributed compiler with a central scheduler to share build load
GNU General Public License v2.0
1.58k stars 248 forks source link

Compiler Errors in clang headers while compiling on Debian for Mac (Darwin 15) #337

Closed Tymolc closed 5 years ago

Tymolc commented 6 years ago

I am trying to cross-compile for MacOS (Darwin 15.6.0) on Debian Stretch. The compilation works fine for the majority of files, except for one Mac-platform dependent file. During the compilation I get errors like /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.3.0/include/xmmintrin.h:646:3: error: use of undeclared identifier '__builtin_ia32_storeups' They all appear in [...]/lib/clang/7.3.0/include/xmmintrin.h and [...]/lib/clang/7.3.0/include/emmintrin.h I accept, that this file fails. It does so on other Macs and using DistCC, as well. However all other Mac machines (one runs Darwin 16 and the other Darwin 17) try to compile the file locally, after it fails. The older Mac does not. Is this some kind of configuration error and can I fix it?

llunak commented 6 years ago

What Icecream version do you use? Can you try current git? Also, what is the log output if you use ICECC_DEBUG=debug?

Tymolc commented 6 years ago

I am using the current git master. ICECC_DEBUG=debug outputs the following at the relevant spot:

[ 53%] Building CXX object src/CMakeFiles/deepvault.dir/crypto/CertificateSystemStoreMacOS.cpp.o
ICECC[28674] 15:43:06: connected to /var/run/icecc/iceccd.socket
ICECC[28674] 15:43:06: env: Darwin15_x86_64 '/Users/nexenio/icecreamenv/clang-Darwin15_x86_64.tar.gz'
ICECC[28674] 15:43:06: env: x86_64 '/Users/nexenio/icecreamenv/clang-x86_64.tar.gz'
ICECC[28674] 15:43:06: preparing /Users/nexenio/desktop-client/src/crypto/CertificateSystemStoreMacOS.cpp to be compiled for Darwin15_x86_64
ICECC[28674] 15:43:06: Have to use host x.x.x.x:10245 - Job ID: 213544 - env: x86_64 - has env: true - match j: 0
ICECC[28674] 15:43:06: connected to x.x.x.x
ICECC[28674] 15:43:06: <send compile_file>
ICECC[28674] 15:43:06: </send compile_file: 0ms>
ICECC[28674] 15:43:06: <write_server_cpp from cpp>
ICECC[28674] 15:43:06: sent 3483761 bytes (23%)
ICECC[28674] 15:43:06: </write_server_cpp from cpp: 325ms>
ICECC[28674] 15:43:06: <wait for cpp>
ICECC[28674] 15:43:06: </wait for cpp: 0ms>
ICECC[28674] 15:43:06: <wait for cs>
ICECC[28674] 15:43:08: </wait for cs: 2065ms>

after that a bunch of compiler errors and then simply ICECC[28674] 15:43:08: Compiled on x.x.x.x

llunak commented 6 years ago

Do I understand it correctly that you're asking for icecream to try to build the file locally if it fails remotely? That generally doesn't make much sense, if something fails remotely, it should generally fail locally as well (and the double compile would make the developer edit-compile-test cycle take longer).

You can disable all remote compiles using ICECC=no. There's no configuration option or anything to selectively force a local compile and I wouldn't even know how to reasonably make one that'd be practical (one could just as well make a wrapper script for the compiler and handle it there).

llunak commented 5 years ago

As said above, there's no such handling and you can handle such very specific needs locally using e.g. a wrapper script if wanted. Closing.