arthurhsliu / distcc

Automatically exported from code.google.com/p/distcc
GNU General Public License v2.0
0 stars 0 forks source link

Include server not covering... #138

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
distcc wasa working for me until a few days ago.  Then I started seeing this:

WARNING include server: Preprocessing locally. Include server not covering: 
-isysroot is not implemented.   for translation unit 'unknown translation unit'
WARNING include server: Preprocessing locally. Include server not covering: 
-isysroot is not implemented.   for translation unit 'unknown translation unit'
distcc[5292] (dcc_talk_to_include_server) Warning: include server gave up 
analyzing
distcc[5292] (dcc_build_somewhere) Warning: failed to get includes from include 
server, preprocessing locally

Any idea what this means?

Answering the following questions is a big help:

1. What version of distcc are you using (e.g. "2.7.1")?  You can run "distcc 
--version" to see.  If you got distcc from a distribution package rather than 
building from source, please say which one.

from Homebrew:
distcc 3.2rc1 i386-apple-darwin13.1.0
  (protocols 1, 2 and 3) (default port 3632)
  built Dec 25 2013 16:30:21

2. What platform are you running on (e.g. "Red Hat 8.0", "HP-UX 11.11")?  What 
compilare are you using ("gcc 3.3")?  Run "uname -a" and "cc --version" to see.

Darwin fripp.apple.com 13.1.0 Darwin Kernel Version 13.1.0: Thu Jan 16 19:40:37 
PST 2014; root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64

Apple LLVM version 5.1 (clang-503.0.35) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0

3. What were you trying to do (e.g. "install distcc", "build Mozilla")?

Build LLVM

4. What went wrong?  Did you get an error message, did it hang, did it build a 
program that didn't work, did it not distribute compilation to machines that 
ought to get it?

see above

5. If you have an example of a compiler invocation that failed, quote it, in 
full e.g.:
   distcc gcc -DHAVE_CONFIG_H -D_GNU_SOURCE -I./src \ "-DSYSCONFDIR=\"/etc/\"" -I./lzo -g -O2 -W -Wall -W \ -Wimplicit -Wshadow -Wpointer-arith -Wcast-align \ -Wwrite-strings -Waggregate-return -Wstrict-prototypes \ -Wmissing-prototypes -Wnested-externs -o src/clirpc.o \ -c src/clirpc.c

Sorry, I can’t easily show useful logging right now.

Thanks!

Original issue reported on code.google.com by dave@boostpro.com on 24 Feb 2014 at 9:07

GoogleCodeExporter commented 9 years ago
Basically this message means that distcc's "pump" mode does not support the 
"-isysroot" flag, so distcc is falling back to using local preprocessing.  This 
is not new, so I guess something in your build environment recently changed 
which flags you are passing to distcc.

See
http://lists.samba.org/archive/distcc/2008q3/003790.html
for a work-around.

Original comment by fergus.h...@gmail.com on 26 Feb 2014 at 11:53

GoogleCodeExporter commented 9 years ago
So from the workaround you pointed me at, essentially hiding that option from 
distcc is enough to make things work?  Couldn’t distcc be made to ignore the 
presence of that option and just pass it through?  Applying the workaround as 
described complicates my build system considerably.

Thanks!

Original comment by dave@boostpro.com on 27 Feb 2014 at 3:11

GoogleCodeExporter commented 9 years ago
Hi Dave,

> So from the workaround you pointed me at, essentially hiding that option from
> distcc is enough to make things work?

I don't know, but it's probably worth a try.  If you do try it, please let us 
know how it turns out.

> Couldn’t distcc be made to ignore the presence of that option and just pass
> it through? 

It would be awesome if you could make a patch for distcc to handle -isysroot.

It's not quite just a matter of passing it through; distcc notices that the 
compiler name is different and computes the set of built-in system directories 
separately for that compiler.  (The file include_server/compiler_defaults.py in 
the distcc sources keeps a table of built-in system directories, indexed by 
compiler name and -sysroot flag value.)

But you're right that it is probably not hard to do in distcc.
distcc already has code to handle -sysroot; handling -isysroot should be 
similar.

Documentation for -isysroot is hard to come by, but according to 
the documentation for -sysroot at 
<http://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html>, which mentions 
-isysroot in passing,
"If you use both this option [-sysroot] and the -isysroot option, then the 
--sysroot option applies to libraries, but the -isysroot option applies to 
header files."

Since distcc's option processing is essentially only concerned with the effect 
on preprocessing, that means that for distcc, -isysroot should have exactly the 
same effect as -sysroot except that if -isysroot is present then distcc should 
use the -isysroot value and ignore the -sysroot value.

Distcc is open source.  If you are getting benefit from distcc, I would 
encourage you to improve it to make it even better and to contribute your 
changes back to the community.

Cheers,
  Fergus.

Original comment by fergus.h...@gmail.com on 27 Feb 2014 at 11:58

GoogleCodeExporter commented 9 years ago
Actually it looks like Rafael Ávila de Espíndola has already made a patch for 
this.
I'll take on the task of fixing and integrating that patch.

Original comment by fergus.h...@gmail.com on 27 Feb 2014 at 1:31

GoogleCodeExporter commented 9 years ago
Fixed in revision 783.

Original comment by fergus.h...@gmail.com on 27 Feb 2014 at 1:48

GoogleCodeExporter commented 9 years ago
Thanks Fergus!  I would love to contribute, but my current circumstances make 
that very difficult.  These days I am forced to be a “taker” of FOSS 
without being able to give much back.  Your work is very much appreciated, 
though!

Original comment by dave@boostpro.com on 27 Feb 2014 at 9:12