Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Nov 2005 22:58:00 +0000
From:      Steve Hodgson <steve@acidy.com>
To:        Jens Schweikhardt <schweikh@schweikhardt.net>
Cc:        freebsd-current@freebsd.org, Nicolas Blais <nb_root@videotron.ca>
Subject:   Re: Using ccache for build{world, kernel}
Message-ID:  <437A67F8.3070109@acidy.com>
In-Reply-To: <20051115224212.GF1783@schweikhardt.net>
References:  <200511141702.45491.nb_root@videotron.ca>	<20051115183647.GA1783@schweikhardt.net>	<20051115211418.GE1783@schweikhardt.net>	<200511151657.44716.nb_root@videotron.ca>	<437A5CF5.4020203@acidy.com> <20051115224212.GF1783@schweikhardt.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Jens Schweikhardt wrote:

>Steve et al,
>
># So would the following form a better set of instructions for the port
># (given the above patch is merged)?
>
>Might not, because...
>
># 1. don't follow the instructions about changing your PATH and setting
># CCACHE_PATH in /etc/profile or cshrc
># 2. use the following in /etc/make.conf
># 
># .if !defined(NOCCACHE)
># .if ${.CURDIR:M/usr/src*}
>
>...I'm not sure whether the CURDIR always is under /usr/src;
>it might change to somewhere under /usr/obj. Haven't investigated, though.
>
># CC=CCACHE_NOHASH_SIZE_MTIME=y /usr/local/bin/ccache cc
># CXX=CCACHE_NOHASH_SIZE_MTIME=y /usr/local/bin/ccache c++
># .else
># CC=/usr/local/bin/ccache cc
># CXX=/usr/local/bin/ccache c++
># .endif
># .endif
># 
># (untested though)
>
>I would simply not mess with make.conf and obfuscated .CURDIR magic, but
>rather write a little and obvious shell script "build-sys" along
>
>#!/bin/sh
>set -e
>unset CCACHE_PATH  # Make ccache search PATH for the real compilers.
>CC="/usr/local/bin/ccache cc" CXX="/usr/local/bin/ccache c++"
>export CCACHE_NOHASH_SIZE_MTIME=yes
>cd /usr/src
>make CC="${CC}" CXX="${CXX}" buildworld
>make CC="${CC}" CXX="${CXX}" buildkernel
>
>Does this work for you? BTW, you can always disable ccache with
>export CCACHE_DISABLE=yes.
>
>Regards,
>
>	Jens
>  
>
I agree that that is an option, and here is another. I'm not going to
suggest which is the better solution, that is probably up to the maintainer.

1. Create a new file /usr/local/bin/ccache-world:

#!/bin/sh
export CCACHE_NOHASH_SIZE_MTIME=1
/usr/local/bin/ccache $@

2. Change the instructions in the ccache port in line with my last
email, removing references to CCACHE_PATH and changing the PATH
variable. Edit /etc/make.conf:

.if !defined(NOCCACHE)
.if ${.CURDIR:M/usr/src*} || ${.CURDIR:M/usr/obj*}
CC=/usr/local/bin/ccache-world cc
CXX=/usr/local/bin/ccache-world c++
.else
CC=/usr/local/bin/ccache cc
CXX=/usr/local/bin/ccache c++
.endif
.endif

Though this does seem a rather nasty solution. But it doesn't require
users to change their habits to use ccache for kernel/world builds.

Steve

(this has been tested this time!)





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?437A67F8.3070109>