Boost logo

Boost Users :

Subject: Re: [Boost-users] Use of ccache with Boost
From: Roland Bock (rbock_at_[hidden])
Date: 2009-10-06 07:29:17


Tom,

ok, understood.

I have two ideas left, based on the fact that you seem to have several
versions of gcc (3.4.6 and 4.4.1 at least).

A) Switching:
=============
I could imagine that switching compilers is not handled very well by
ccache. So you might need to clear the cache before switching from 3.4.6
to 4.4.1 or vice versa (or change the CCACHE_DIR environment variable).

B) Mixup:
=========
Is it possible that some parts of your project get compiled by one
version, others by another? Rather unlikely, but if A does not yield
anything...

You could use ps or similar to monitor which instance of gcc is actually
getting called. For instance, when I call "ps ex" while compiling, I get
information like

/usr/lib/gcc/x86_64-linux-gnu/4.2.4/cc1plus -fpreprocessed
/home/rbock/.ccache/CreateArti.tmp.rbock.metafeed.de.30536.ii -quiet
-dumpbase CreateArti[...]

You could call ps repeatedly and analyze the output for inconsistencies.

C) ??:
======
If the ps-log looks clean and clearing the cache does not help, I'll be
out of ideas, I'm afraid. Maybe the ccache authors can help in that case?

I'd be interested to hear if you figure it out, btw :-)

Regards,

Roland

Dalton, Tom wrote:
> I am working on a toolchain that lives outside of the system path. All
> the tools (gcc, ccache, cmake, valgrind etc) live in /some/random/path,
> with their own gcc/gcc-3.4.6 or ccache/ccache-2.4 directories under
> that. Within those directories, the packages binary install is under a
> directory like ccache-2.4-bin
>
> So the full path to g++ in this case is
> /some/random/path/gcc/gcc-4.4.1/gcc-4.4.1-bin/bin/g++
>
> The build system (ant) then builds the tools with a controlled
> environment (e.g. by setting up PATH, LD_LIBRARY_PATH etc.). This
> approach works fine fro the tools built with autoconf/automake and the
> tools that are binary distributions (e.g. java jdk), and works fine with
> boost as long as I'm not trying to be clever.
>
> In /some/random/path/ccache/ccache-2.4/ccache-2.4-bin/bin I created
> symlinks to ccache names gcc and g++.
> I then set the PATH to run the boost build to be
> /some/random/path/ccache/ccache-2.4/ccache-2.4-bin/bin:/some/random/path
> /gcc/gcc-4.4.1/gcc-4.4.1-bin/bin:{rest of the system path}
>
> As stated, this approach works for all the other tools, but causes the
> boost build to diverge as described below and I don't understand why. I
> also tried adding symlinks named cpp and c++ but the behaviour described
> below didn't change...
>
> Thanks for your help,
>
> Tom
>
> -----Original Message-----
> From: boost-users-bounces_at_[hidden]
> [mailto:boost-users-bounces_at_[hidden]] On Behalf Of Roland Bock
> Sent: 05 October 2009 18:13
> To: boost-users_at_[hidden]
> Subject: Re: [Boost-users] Use of ccache with Boost
>
> Dalton, Tom wrote:
>> Further to my questions from last week:
>>
>> I've tried both methods - first I tried changing the toolset to make
>> the gcc toolset use "ccache g++" as the compiler executable. I had
>> some problems with that, so I tried the symlink approach suggested by
> Roland.
>> This is also failing, with some seemingly very subtle bug that I can't
>
>> suss out.
>>
>> The build progresses a little way, until it gets to
>> libs/program_options/src/cmdline.cpp
>>
>> When g++ isn't a symlink to ccache, I get the following output as
>> shown by the attachment build.log.1.fragment.
>> When I have gcc & g++ symlinks in the ccache bin dir pointing to
>> ccache (the PATH is ccache/bin:real_gcc/bin), the output is like the
>> second attachment and the file fails.
>
> Hmm? What symlinks do you have in the ccache folder? I only required
> symlinks in /usr/local/bin, as described here
> http://ccache.samba.org/ccache-man.html
>
> I am using 4.2.4 and boost compiles with no problems at all. In daily
> life, I am using CMake, like Mathieu, but direct calls to g++ or
> compilation with configure&make never failed on me.
>
>
> Regards,
>
> Roland
>
>
>> The build logs diverge from that point onwards as more and more stuff
>> either fails, or is skipped due to previous failures.
>>
>> There are 2 issues that I can see from those logs. Firstly the line
>> numbering on the .hpp includes is one-out on the ccache-enabled build.
>> Does this mean the preprocessor is behaving strangely? Secondly, on
>> line
>> 15 of the failing fragment file, it looks like part of the output is
>> cut off (at the end of the line, it gets
>> "boost::_bi::list2<boost::_bi::v0.000008 sec system; 0.000164 sec
> user".
>> Can anyone help me? I don't know what would cause either of these
>> issues.
>>
>> Tom
>>
>> PS Using gcc 4.4.1, ccache 2.4 and tried boost 1.39.0 and 1.40.0, with
>
>> the same results.
>>
>>
>> -----Original Message-----
>> From: boost-users-bounces_at_[hidden]
>> [mailto:boost-users-bounces_at_[hidden]] On Behalf Of Dalton, Tom
>> Sent: 29 September 2009 16:20
>> To: boost-users_at_[hidden]
>> Subject: Re: [Boost-users] Use of ccache with Boost
>>
>> Daniel and Roland,
>>
>> Thanks guys, that gives me some good avenues to explore.
>>
>> Tom
>>
>> -----Original Message-----
>> From: boost-users-bounces_at_[hidden]
>> [mailto:boost-users-bounces_at_[hidden]] On Behalf Of Daniel James
>> Sent: 29 September 2009 16:07
>> To: boost-users_at_[hidden]
>> Subject: Re: [Boost-users] Use of ccache with Boost
>>
>> 2009/9/29 Dalton, Tom <tom.dalton_at_[hidden]>:
>>> I'm using Boost on Linux however for various reasons I need to
>>> rebuild
>>> parts of it occasionally. For other C/C++-based tools that are built
>>> with autoconf/automake, I've started to use ccache
>>> (http://ccache.samba.org/) to speed up recompilation. This is done
>>> simply by setting the CC / CXX environment variables to "ccache gcc"
>>> /
>>> "ccache g++" respectively. I have had a look through the Jam
>>> documentation but I can't see an easy way to achieve the same thing
>>> when building the Boost distribution. The closest I came was a bit on
>
>>> the trac that simply said I can add a new toolset, but had no real
>> instructions as to how.
>>
>> Create a file called 'user-config.jam' in your home directory,
>> containing something like:
>>
>> using gcc : : ccache g++ ;
>>
>> Or possibly with the version number:
>>
>> using gcc : 4.4 : ccache g++-4.4 ;
>>
>> For more information see:
>>
>> http://www.boost.org/doc/libs/1_40_0/doc/html/bbv2/advanced.html#bbv2.
>> ad
>> vanced.configuration
>>
>> Daniel
>> _______________________________________________
>> Boost-users mailing list
>> Boost-users_at_[hidden]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>> _______________________________________________
>> Boost-users mailing list
>> Boost-users_at_[hidden]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>>
>>
>> ----------------------------------------------------------------------
>> --
>>
>> _______________________________________________
>> Boost-users mailing list
>> Boost-users_at_[hidden]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net