Aceleração (re)compilações no Gentoo
Dica publicada em Linux / Configuração
Aceleração (re)compilações no Gentoo
Normalmente você iria recompilar o programa inteiro toda vez que atualizar e/ou trocar uma flag, a menos que você leia essa dica e faça uso do ccache. Como o nome diz ele é um cache... de objetos C compilados anteriormente. Basicamente ele mantém partes dos programas compilados e numa recompilação, essas partes podem ser reutilizadas.
Instalação:
# emerge -av ccache
Crie uma pasta para guardar o cache e dê permissão ao portage, pode ser em qualquer lugar:
# mkdir /etc/portage/ccache/
# chown -v root:portage /etc/portage/ccache
E finalmente a configuração do ccache em si:
# nano /etc/portage/ccache/ccache.conf
A única mudança que você vai provavelmente fazer é no tamanho máximo do cache, de qualquer modo tenha em mente que esse espaço não fica pré-alocado.
Comece a compilar...
Exemplos:
genlop -t vlc
Instalação:
# emerge -av ccache
Crie uma pasta para guardar o cache e dê permissão ao portage, pode ser em qualquer lugar:
# mkdir /etc/portage/ccache/
# chown -v root:portage /etc/portage/ccache
Utilização
Adicione ao make.conf para que o portage faça efetiva utilização do ccache:
FEATURES="ccache"
CCACHE_DIR="/etc/portage/ccache"
CCACHE_DIR="/etc/portage/ccache"
E finalmente a configuração do ccache em si:
# nano /etc/portage/ccache/ccache.conf
# Maximum cache size to maintain
max_size = 50.0G
# Allow others to run 'ebuild' and share the cache.
umask = 002
# Preserve cache across GCC rebuilds and
# introspect GCC changes through GCC wrapper.
compiler_check = %compiler% -v
# I expect 1.5M files. 300 files per directory.
cache_dir_levels = 3
max_size = 50.0G
# Allow others to run 'ebuild' and share the cache.
umask = 002
# Preserve cache across GCC rebuilds and
# introspect GCC changes through GCC wrapper.
compiler_check = %compiler% -v
# I expect 1.5M files. 300 files per directory.
cache_dir_levels = 3
A única mudança que você vai provavelmente fazer é no tamanho máximo do cache, de qualquer modo tenha em mente que esse espaço não fica pré-alocado.
Comece a compilar...
Exemplos:
genlop -t vlc
* media-video/vlc
Mon Apr 15 05:13:35 2019 >>> media-video/vlc-3.0.6-r1
merge time: 16 minutes and 35 seconds.
Mon Apr 15 15:26:11 2019 >>> media-video/vlc-3.0.6-r1
merge time: 9 minutes and 40 seconds.
genlop -t ffmpeg
* media-video/ffmpeg
Sat Apr 13 17:22:51 2019 >>> media-video/ffmpeg-3.4.5
merge time: 27 minutes and 51 seconds.
Sun Apr 14 04:30:20 2019 >>> virtual/ffmpeg-9-r2
merge time: 8 seconds.
Mon Apr 15 13:48:22 2019 >>> media-video/ffmpeg-3.4.5
merge time: 12 minutes and 21 seconds.
Aqui estou usando em um SSD, então a leitura é ridiculamente rápida. Em um HD os resultados tendem a ser menos expressivos pois o portage vai levar mais tempo para checar se pode reutilizar ou deve compilar o código de novo.