ccache (war ccache + gnome )

metro

i² = -1
Als Erweiterung zu diesem Thread :
http://www.bsdforen.de/showthread.php?t=26082
hab ich mal nachgestochert:
Einige Anwendungen benutzen zum Kompilieren Ihre eigenen Optionen und Flags etc. So weit, so gut.
Der springende Punkt scheint , dass manche nur einmal, nämlich wenn sie selbst gebaut werden, /etc/make.conf auslesen und dann in ihren jeweiligen eigenen Konfigurationsdateinen speichern. Diese 'festgeschriebenen' Flags etc. werden dann später benutzt.
So werden u.a. CC: und CXX: so aufgerufen, wie sie zu der Zeit, als die jeweilige Anwendung selbst kompiliert wurde, in /etc/make.conf gelistet waren, und damit ccache.
Wenn ccache seine Pfade ändert (so wie im letzten Update) , führen die alten CC: & CXX: Flags dann ins Leere.
Da /etc/make.conf nicht mehr gelesen wird, sind sämtliche dort vorgenommenen Änderungen wirkungslos und ein beherztes 'NOCCACHE=yes' wird ebenfalls ignoriert. Das hat funktioniert, solange 'world-cc' etc. noch existierten, aber seit der Pfad sich geändert hat, ist Schluss mit lustig.
Evtl. betroffene Anwendungen (ohne Anspruch auf Vollständigkeit) kann man finden mit:

Code:
pkg_info -oa |grep lang
aber nicht alles da ist wichtig. Die entscheidenden haben eigene libs unter
/usr/local/lib. Also einfach mal nachschauen.
Code:
grep -i ccache /usr/local/lib/$siehe_unten/*  
grep -i ccache /usr/local/lib/$siehe_unten/*/*   
grep -i ccache /usr/local/lib/$siehe_unten/*/*/*  usw.
Auf dieser Box ergab:
Code:
$ pkg_info -oa |grep lang 
lang/f2c
lang/gawk
lang/lua
lang/ocaml
Information for openoffice.org-alllangs-3.3.0:
lang/p5-Error
lang/perl5.12
lang/python27
lang/ruby18
lang/tcl85
lang/tcl-modules
lang/vala
lang/vala-vapigen
( ja, es gibt Irre die OO-alllangs bauen :ugly: )

davon haben folgende 'hardcoded' oder festgeschriebene CC & CXX mit entsprechendem alten ccache Flags in
Code:
perl
/usr/local/lib/perl5/5.12.3/mach/Config.pm
/usr/local/lib/perl5/5.12.3/mach/Config_heavy.pl

python
/usr/local/lib/python2.7/config/Makefile

ocaml
/usr/local/lib/ocaml/Makefile.config

ruby
/usr/local/lib/ruby/1.8/amd64-freebsd8/rbconfig.rb

tcl
/usr/local/lib/tcl8.5/tclConfig.sh
Ich bezweifle, dass manuelle Änderungen in diesen Dateien einen Effekt haben, also ist der jeweilige Neubau nach Änderungen an CC / CXX in /etc/make.conf wohl der Weg (zusätzlich zu /ports/UPDATING).

@klimaschreck:
ocaml ist wohl die Ursache für den Abbruch bei py27-keybindings-kde .

hth

P.S.
Wer python auf die Version 2.7 erneuert hat, kann mal schauen, ob unter /usr/local/lib noch ein Ordner python2.6 oder früher existiert. Nach dem korrekten Update (siehe /ports/UPDATING) sollte der leer sein. Voll oder leer: ||*auf eigenes Risiko*|| weg damit.
 
@athaba : Ja. Immer . Klassische rangehensweise 'make install clean'
Das einzige, was nicht Standard ist ist der Eintrag in make.conf. Der ist einfach:

.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

Hast du diese ccache CC / CXX Flags in /usr/local/lib/$diesunddas nicht ?
Hier haben sich alle Kompilierabbrüche verabsciedet, nachdem die entsprechenden Progs neu kompiliert wurden.
Wenn allerdings Pakete verbaut sind, dann ist da natürlich nichts ( und ccache überflüssig).
 
wenn ich z.B. perl neu baue, ändert sich in den libs nicht viel. ccache erscheint dort weiterhin in einer nicht nutzbaren Form:

Code:
grep -i ccache perl5/*/*/*
perl5/5.12.3/mach/Config.pm:    cc => '/usr/local/bin/ccache cc',
perl5/5.12.3/mach/Config_heavy.pl:cc='/usr/local/bin/ccache cc'
perl5/5.12.3/mach/Config_heavy.pl:config_arg15='-Dcc=/usr/local/bin/ccache cc'
perl5/5.12.3/mach/Config_heavy.pl:config_args='-sde -Dprefix=/usr/local -Darchlib=/usr/local/lib/perl5/5.12.3/mach -Dprivlib=/usr/local/lib/perl5/5.12.3 -Dman3dir=/usr/local/lib/perl5/5.12.3/perl/man/man3 -Dman1dir=/usr/local/man/man1 -Dsitearch=/usr/local/lib/perl5/site_perl/5.12.3/mach -Dsitelib=/usr/local/lib/perl5/site_perl/5.12.3 -Dscriptdir=/usr/local/bin -Dsiteman3dir=/usr/local/lib/perl5/5.12.3/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Ui_malloc -Ui_iconv -Uinstallusrbinperl -Dcc=/usr/local/bin/ccache cc -Duseshrplib -Dinc_version_list=none -Dccflags=-DAPPLLIB_EXP="/usr/local/lib/perl5/5.12.3/BSDPAN" -Doptimize=-O2 -pipe -fno-strict-aliasing -Ui_gdbm -Dusethreads=n -Dusemymalloc=n -Duse64bitint'
perl5/5.12.3/mach/Config_heavy.pl:cpprun='/usr/local/bin/ccache cc -E'
perl5/5.12.3/mach/Config_heavy.pl:cppstdin='/usr/local/bin/ccache cc -E'
perl5/5.12.3/mach/Config_heavy.pl:ld='/usr/local/bin/ccache cc'
perl5/5.12.3/pod/perlrepository.pod:  # If you can use ccache, add -Dcc=ccache\ gcc -Dld=gcc to the Configure line

Habt ihr einen Tipp?
 
Perl und Andere lesen das, was ihnen make.conf bietet ( und'merken' sich das dann). Wenn du buildflags aus den bsdadminscripts verwendest, verweist der Eintrag nach /usr/local/share/bsdadminscripts/buildflags.mk und da steht das so drin. Das ist aber nicht meine Baustelle :ugly: .
Du könntest probieren, mal probeweise buildflags aus make.conf zu entfernen, oder kommentieren, und durch den fast 'original' ccache Eintrag (siehe oben) zu ersetzen und anschließend Perl und andere neu zu bauen. Dann sollte es stimmen.
Diese Verfahrensweise hat dafür gesorgt, dass hier derzeit Kompilierhänger oder Abrüche verschwunden sind.
hth
 
Zurück
Oben