Não é possível fazer com que o ccache funcione com portas no FreeBSD

2

Sou novo no FreeBSD (9.1) e estou apenas configurando o sistema. Um problema que não consegui resolver ainda é obter ccache funcionando. Instalei-o das portas e segui as diretrizes na documentação (modifique /etc/make.conf ). Compilar novos pacotes a partir de portas funciona sem erros, mas o cache nunca é preenchido, então parece que ccache simplesmente não é usado.

Aqui está o conteúdo do meu arquivo /etc/make.conf :

WITH_PKGNG= yes
# added by use.perl 2013-01-20 01:08:34
PERL_VERSION=5.14.2

# the rest here is copied from /usr/local/share/doc/ccache/ccache-howto-freebsd.txt
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))
.if !defined(NOCCACHE)
CC:=${CC:C,^cc,/usr/local/libexec/ccache/world/cc,1}
CXX:=${CXX:C,^c\+\+,/usr/local/libexec/ccache/world/c++,1}
.endif
.endif

Eu também tentei seguir as outras diretrizes em ccache-howto-freebsd.txt e adicionei as seguintes linhas ao /etc/csh.cshrc , que é o shell padrão usado pelo root:

setenv PATH /usr/local/libexec/ccache:$PATH
setenv CCACHE_PATH /usr/bin:/usr/local/bin

Ainda não há diferença. ccache -s mostra que o cache ainda não está cheio durante a compilação. Você tem alguma ideia?

    
por Philipp Claßen 20.01.2013 / 18:33

3 respostas

1

Esta pergunta foi feita no início de 2013. Em outubro daquele ano, as instruções para usar adequadamente o ccache com portas foram adicionadas para ccache-howto-freebsd.txt . Nos anos seguintes, tanto o ccache quanto a infraestrutura de portos foram aprimorados e agora estão mais bem integrados.

Atualmente, tudo que você precisa fazer no FreeBSD 11 e acima é instalar a porta devel / ccache e colocar WITH_CCACHE_BUILD=yes em seu /etc/make.conf , e ele "funcionará" apenas para base e portas.

Nas versões mais antigas do FreeBSD, WITH_CCACHE_BUILD=yes afeta apenas as portas; A base ainda precisa das cláusulas .if.endif e ajustes de caminho. As instruções precisas estão em ccache-howto-freebsd.txt e devem ser fáceis de seguir.

    
por 23.07.2018 / 05:23
0

(o comentário de arved estava certo. Isso resolveu meu problema, mas ainda não entendi exatamente por que a instrução if foi recomendada. Então, eu posto a resposta como wiki da comunidade. Sinta-se livre para melhorá-lo se você sabe porque.)

Primeiro, descubra qual compilador é usado:

 $ cd /usr/ports/devel/gdb && make -V CC
 cc

cc é o compilador C padrão, mas deve ser ccache .

Para resolver o problema, edite /etc/make.conf e remova a instrução if ...

.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))'

... e, claro, sua declaração .endif de fechamento. Então o problema está resolvido:

 $ cd /usr/ports/devel/gdb && make -V CC
 /usr/local/libexec/ccache/world/cc
    
por 23.01.2013 / 00:27
0

Eu encontro o mesmo problema. Uma solução que funciona para mim é a seguinte /etc/make.conf

# added by use.perl 2013-09-06 18:26:40
PERL_VERSION=5.14.4

.if !defined(NO_CCACHE)
    CC= /usr/local/libexec/ccache/world/cc
    CXX= /usr/local/libexec/ccache/world/c++
.endif

.if ${.CURDIR:M*/ports/devel/ccache}
    NO_CCACHE= yes
.endif
    
por 06.09.2013 / 22:16