[distcc] distcc-pump does not find system header files

Fergus Henderson fergus at google.com
Fri Jan 31 03:49:58 MST 2014


This is a known (and intentional) limitation.  From the distcc man page:

       RESTRICTIONS FOR PUMP MODE
       ...
       Another important assumption is that the include configuration of
all machines must be identical.  Thus the headers under the default system
path must be the same
       on  all servers and all clients.

So the idea is that you should install all the relevant system headers on
all of the server machines as well as on the client.

We designed it that way mainly because that was sufficient for our use
cases, more efficient, and less complex to implement. Avoiding sending the
system header files makes distcc more efficient because it reduces the
amount of data that needs to be sent.  Also, trying to transmit the system
includes to the server machines is a bit more difficult, because they might
not be written in standard C/C++, and might make use of non-standard
preprocessing directives, which distcc would need to be able to parse. Also
the distcc server can't write them out in their actual locations, so some
additional complication would be required to provide appropriate flags to
the compiler to use system header files from a non-standard location, and
those flags are compiler-dependent and potentially
compiler-version-dependent.

On Mon, Jan 20, 2014 at 3:39 AM, Michael L. <mlabbe at gmail.com> wrote:

> I tried two separate code bases.  One could not find X11/Xlib.h (which is
> installed on the computer running distcc-pump) and the other could not find
> GL/gl.h.  These are system headers that, in my understanding, should be
> transmitted to the remote distcc build host.
>
>
> I start distcc-pump as follows:
>
> eval `INCLUDE_SERVER_ARGS="--exact_analysis" distcc-pump --startup`
> (Note I have tried without --exact_analysis as well)
>
> And I compile with:
> DISTCC_FALLBACK=0 scons
>
> (Internally, this scons file uses CC=distcc CXX=distcc)
>
> It is a C++ project.
>
>
> distcc g++-4.7 <tons of build options omitted>
>
> generates:
>
> distcc[28829] ERROR: compile cl_draw.cpp on remotesrv,cpp,lzo failed
> distcc[28829] (dcc_build_somewhere) Warning: remote compilation of
> 'cl_draw.cpp' failed, retrying locally
> distcc[28829] (dcc_build_somewhere) Warning: failed to distribute and
> fallbacks are disabled
> In file included from /home/mlabbe/dev/include/Or/TextureSet.h:25:0,
>                  from /home/mlabbe/dev/include/Or/Font.h:26,
>                  from /home/mlabbe/dev/include/Or/DebugDraw.h:27,
>                  from /home/mlabbe/dev/include/Or/DefaultSubsystems.h:28,
>                  from local.h:26,
>                  from cl_draw.cpp:23:
> /home/mlabbe/dev/include/OrionRenderer.h:58:19: fatal error: GL/gl.h: No
> such file or directory
> compilation terminated.
> scons: *** [cl_draw.o] Error 1
>
> I am running:
> distccd 3.1 x86_64-pc-linux-gnu
>   (protocols 1, 2 and 3) (default port 3632)
>   built May  9 2013 23:15:01
>
>
> To me, this looks like the compile host is trying to look for system
> header files locally.  The compile host definitely does not have GL/gl.h.
>
> Much thanks.
>
> Michael Labbe
>
> __
> distcc mailing list            http://distcc.samba.org/
> To unsubscribe or change options:
> https://lists.samba.org/mailman/listinfo/distcc
>



-- 
Fergus Henderson <fergus at google.com>

"Defend the user, exclude no one, and create magic." -- Eric Schmidt.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.samba.org/pipermail/distcc/attachments/20140131/c9a863f0/attachment.html>


More information about the distcc mailing list