Embora o make(1) e muitos sistemas de compilação, como o autotools, suportem compilação incremental, o Gentoo com o Portage padrão não aproveita isso. Depois que um pacote é compilado e instalado, o diretório de trabalho é descartado.
A dificuldade real de usar compilação incremental seria fazer com que os pacotes fossem construídos de maneira confiável dessa maneira. É muito mais fácil ter certeza de que uma compilação será bem-sucedida, correta e reproduzível se você sempre fizer uma compilação limpa. Muitos sistemas de compilação quebrariam sutilmente se o Gentoo tentasse dar suporte à reconstrução incrementalmente. E, em muitos casos, seria necessário executar novamente ./configure (ou seu equivalente), o que provavelmente criaria um novo config.h ou atualizar variáveis de ambiente, como CFLAGS e CPPFLAGS no Makefile s gerado (ou equivalentes se outros sistemas de compilação forem usados). Tocar config.h exigiria que a maioria das fontes fosse recriada. E se PACKAGE_VERSION for alterado, o que pode ser passado por Makefile via CPPFLAGS se o pacote não usar config.h , todas as fontes devem ser reconstruídas para ver os novos valores - a menos que você pode de alguma forma descobrir que certos arquivos de origem não precisariam ser recompilados porque eles não fazem referência a uma macro de pré-processador em particular.
Então, no final, mesmo que o Gentoo dedicasse todo o trabalho para tentar dar suporte à compilação incremental entre as atualizações da versão do pacote, muitos pacotes precisariam ser totalmente recompilados ou make(1) seria acabará recompilando-os totalmente de qualquer maneira (por exemplo, se o timestamp de config.h for alterado). Então, isso seria um esforço de alto custo para um ganho muito marginal - e até mesmo provavelmente introduziria um lote de bugs sutis , no meu melhor entendimento. Assim, não espero que tal recurso seja introduzido.
A minha resposta refere-se principalmente a pacotes autotools / simples Makefile -tipo, mas nem tudo é compilado desta forma, pelo que os motivos exatos provavelmente seriam diferentes dependendo do pacote exato em questão.