Ja naopak pouzivam uz cca 8 let k plne spokojenosti prave ccache. Uznavam, ze pro kompilaci noveho softwaru (napr. cele distribuce) je jeho prinos nulovy, ale pro me jako pro vyvojare je naopak mnohem prinosnejsi nez distcc. A nevzpominam si, ze bych za tu dobu narazil na nejake problemy.
Díky za názor. Já distcc přestal používat po jednom incidentu, kdy se mi náhodný balíček odmítal zkompilovat, přestože s ním nikdy nebyly problémy.
Pak jsem taky nepochopil, v čem je distcc lepší než make bez předchozího make clean. Stejně když budu chtít mít jistotu, že se daný program zkompiluje na čistém systému, musím udělat make clean a ccache nepoužít, nebo ne?
Tak ccache sa pouziva "automaticky" a malo by byt uplne transparentne - zmeni sa 1 zo vstupov, ktory vyuziva kompilator, tak sa to prekompiluje; naviac pri nekompilovani tiez zobrazuje chybove hlasky a pod, ako keby sa kompilovalo.
Na odlisne chovanie s ccache a bez som zatial este nenarazil, aj ked u niektorych programov ma stve, ze nie su "ccache-friendly" (asi casto menia hlavickove subory) - nieco v cache-i zaberaju a kazda nova verzia sa kompiluje uplne od zaciatku...
Místo distcc lze použít icecream (https://github.com/icecc/icecream), který má některé výhody: Centrální scheduler, takže není třeba ručně zadávat DISTCC_HOSTS a překlad se posílá na počítače, které zrovna nejsou zatížené (tj. není problém přemluvit kolegy v práci, aby se do sítě přidali); nebo si (s výjimkou cross-kompilace) sám řeší verze GCC (nebo Clang), takže každý může mít překladač nebo i distribuci, jakou chce.
Čísla hodně záléží na výkonu strojů. Pokud bude klientem Raspberry Pi a serverem osmijádrová i7, bude zrychlení ve stovkách procent. Pokud budou dva počítače se srovnatelnými parametry, bude zrychlení v řádu malých desítek procent.
Kernel tím samozřejmě kompilovat jde, například pomocí make -j8 CC=distcc.
Konkrétní příklady pár balíků, kdy pro Intel Atom (1,66GHz, jednojádro + HT) kompilovalo Core i5 750 (4x 2,66GHz) najdeš u mě na blogu (na konci článku).
Gentoo 64bit, 100Mbit síť, žádný speciality (kromě -j5 a kromě toho, že Intel Atom NENÍ v seznamu hostů = jen deleguje svoje věci jinam).
Pro informaci - některý balíky kompilujou samy sebe (GCC), takže neni víceméně žádný zlepšení. U malých balíků zase nemusí bejt výhoda moc poznat (+- minuta nikoho nezabije).
Jak kompilovat pomocí toho kernel je v uvedenym blogovym příspěvku napsáno.
"Kdysi" na Gentoo (~2006-2007) jsem zkoušel distcc přes asi 50 strojů (na škole) - kernel to zkompilovalo asi za 2 minuty. Tento kernel ale panicoval při bootu, při druhé kompilaci zase na jiné funkci, při třetí stejné kompilaci už nabootovat šel, ale ve mě to tak nějak vzbudilo nedůvěru vůči distcc a od té doby jej nepoužívám.
Ano, zkoušel jsem každý kernel bootovat na vícero strojích (a tedy vícekrát), pokaždé se zastavil na stejné chybě.
Žádná mašina nebyla vyloženě chybná, přes den tam jely normálně Windows 2000/XP bez bluescreenů.
Mně se osvědčuje poněkud jiný přístup k distribuované kompilaci, i když je to poněkud komplexnější řešení... ale mnoho měsíců používám pro kompilaci celého hlavního systému. Hlavně ta efektivita distribuovanosti je mnohem větší (a transparentnost verzí).
Víc to nebudu tady rozvádět, stačilo že jsem o tom otravoval s prezentací na LinuxDays :-) Kdyžtak mi pište