Re: Using ccache for build{world, kernel}

From: Steve Hodgson <steve_at_acidy.com>
Date: Tue, 15 Nov 2005 22:58:00 +0000
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 $_at_

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!)
Received on Tue Nov 15 2005 - 21:58:25 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:47 UTC