CDK-Build mit ccache

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Beitrag von ingrid »

Token hat geschrieben:token@token-desktop:~$ ccache -s
cache directory /home/token/.ccache
cache hit 0
cache miss 58
called for link 12
not a C/C++ file 6
autoconf compile/link 5
unsupported compiler option 8
no input file 19
files in cache 116
cache size 696 Kbytes
max cache size 976.6 Mbytes
Bei Dir stimmt noch was nicht, da wird ja nix gecached, bzw. der Cache greift bei Dir Null! (Cache hit)

Bei mir stehen da ein paar Tausend... Und ich kann nur sagen, das gibt einen gewaltigen Boost.

Ich hab's übrigens nach dietmarw & kroki's Anleitung per Hand gemacht (beides!), kann also nicht sagen, ob's an den Newmake-Schaltern oder den geposteten Diffs liegt.

Mal davon abgesehen, dass Deine Werte dafür sprechen, dass da garnix passiert, erst ab dem zweiten Durchlauf würde der Cache greifen, ist ja klar. Aber selbst ein zweiter Durchlauf würde bei Dir nichts bringen. (Nur 116 Files im Cache, da müssten Tausende stehen.)

Für mich sieht's so aus, als wenn dietmarw's Part bei Dir nicht vorhanden ist bzw. nicht greift. Evtl. nochmal den Thread von vorne ganz genau lesen, alles Wichtige steht auf Seite 1. Hat alles nichts mit Hardware-Config oder Linux Distro zu tun.

Momentchen, ich poste gleich mal meinen ccache -s Output.

Hier isser:

Code: Alles auswählen

cache hit 5877
cache miss 15692
called for link 1258
multiple source files 26
compile failed 327
preprocessor error 138
not a c/c++ file 810
autoconf compile/link 2307
unsupported compiler option 1588
no input file 1289
files in cache 31384
cache size 179.6 MBytes
max cache size 4.0 Gbytes
Das ist übrigens nach einigen Durchläufen (incl. distclean um den Cache zu füllen, etc.), daher die hohen Werte.
Nicht wundern über die "failed", "unsupported" etc. Werte. Das compilierte Image läuft momentan wunderbar auf der Box. Diese "Fehler" sind wohl normal, das Ergebnis beeinflusst es jedenfalls nicht. (Außer dass das Compilieren sowas von schnell geht...)

Danke an dietmarw & kroki für die Anleitungen! Genau das, was ich gesucht hatte. Danke schön nochmal!!!!!!
Token
Einsteiger
Einsteiger
Beiträge: 383
Registriert: Sonntag 7. April 2002, 14:29

Beitrag von Token »

@ingrid:
das ist genau die aussage auf die ich gewartet habe.
weil, ich habe keinen "boost" bisher erlebt, also die yBuild-Version benutzt momentan kein ccache (bei mir !).
jetzt habe ich aber wenigstens auch mal werte mit den ich rechnen muss/kann.
also nochmal die erste seite lesen, irgendwo muss ja der fehler sein.
und wenn das nicht hilft - dann nehme ich carsten's spielwiese :D
DANKE fuer die aufklaerung
Token

edit:
lt. seite1 sollte das hier gemacht werden:

$(INSTALL) -d $(hostprefix)/ccache-bin
-ln -s /usr/bin/ccache $(hostprefix)/ccache-bin/powerpc-tuxbox-linux-gnu-gcc
-ln -s /usr/bin/ccache $(hostprefix)/ccache-bin/powerpc-tuxbox-linux-gnu-g++
-ln -s /usr/bin/ccache $(hostprefix)/ccache-bin/powerpc-tuxbox-linux-gnu-cpp
-ln -s /usr/bin/ccache $(hostprefix)/ccache-bin/powerpc-tuxbox-linux-gnu-gcc-.3.3.5

und das wird definitiv hier nicht gemacht !
und ich bin mir auch ziemlich sicher, das die PATH-zeile nicht ausgefuehrt wird.
dbt, kannst du nochmal ueber deine scripte schauen ?
sagem-avia600_enx-1xi-cable-telecom
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Beitrag von dietmarw »

ingrid hat geschrieben: Danke an dietmarw & kroki für die Anleitungen! Genau das, was ich gesucht hatte. Danke schön nochmal!!!!!!
den speed hättest du schon von anfang an haben können..
http://forum.tuxbox-cvs.sourceforge.net ... ght=ccache
da stand der tip schon seit einem jahr :wink:


@token
du hast es aber einfach mal "händisch" gemacht?
dann muß das gehen!
Zuletzt geändert von dietmarw am Sonntag 23. September 2007, 20:54, insgesamt 1-mal geändert.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Beitrag von dbt »

$(INSTALL) -d $(hostprefix)/ccache-bin
-ln -s /usr/bin/ccache $(hostprefix)/ccache-bin/powerpc-tuxbox-linux-gnu-gcc
-ln -s /usr/bin/ccache $(hostprefix)/ccache-bin/powerpc-tuxbox-linux-gnu-g++
-ln -s /usr/bin/ccache $(hostprefix)/ccache-bin/powerpc-tuxbox-linux-gnu-cpp
-ln -s /usr/bin/ccache $(hostprefix)/ccache-bin/powerpc-tuxbox-linux-gnu-gcc-.3.3.5

und das wird definitiv hier nicht gemacht !
und ich bin mir auch ziemlich sicher, das die PATH-zeile nicht ausgefuehrt wird.
Ich habe das jetzt ein paar mal durchgespielt, das wird gemacht. Mit den geposteten Änderungen passiert das Gleiche wie von Hand gemacht.
/ccache-bin wird angelegt und alle darin angegebenen Links sind auch drin. Ich weis nicht, was bei Dir schief läuft!?
:gruebel:
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Beitrag von ingrid »

dietmarw hat geschrieben:den speed hättest du schon von anfang an haben können..
http://forum.tuxbox-cvs.sourceforge.net ... ght=ccache
da stand der tip schon seit einem jahr :wink:
Da steht nix davon, WIE es gemacht wurde. Davon stand nirgendwo was hier im Forum, hatte ja extra gesucht.
Ich baue auch übrigens schon weit länger als ein Jahr selbst. Sogar schon zwei oder so... *fg* Aber über ccache habe ich erst vor kurzem ernsthaft nachgedacht. Hab's zwar schon seit Ewigkeiten installiert gehabt, aber eben nicht verlinkt, etc. ;)
Und das Thread eröffnen hat sich ja gelohnt, jetzt geht's auch bei mir fix. Und bald bestimmt auch bei Token. *g* Und andere freuen sich auch bestimmt, über diesen Thread gestolpert zu sein...
Zuletzt geändert von ingrid am Sonntag 23. September 2007, 22:27, insgesamt 1-mal geändert.
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Beitrag von ingrid »

Token hat geschrieben:und das wird definitiv hier nicht gemacht !
und ich bin mir auch ziemlich sicher, das die PATH-zeile nicht ausgefuehrt wird.
dbt, kannst du nochmal ueber deine scripte schauen ?
Token, hast Du mal ein ein distclean gemacht und dann ein configure? Falls Du nicht komplett "von vorne" anfängst, greifen die Scriptänderungen nicht, weil configure den Part sonst gar nicht anspringt, weil's denkt, es hat den Part schon erledigt. Evtl. könnte es das bei Dir sein.
Aber denk dran: Das erste mal nach dem distclean wird's nicht schneller sein, da erst dann Dein Cache gefüllt wird. Erst wenn Du danach nochmal baust, wird der cache effektiv benutzt.
Probier also mal, ganz von vorne alles neu zu bauen. (Im yBuild: CT (clean targets), distclean, dann im Hauptmenü "GO". Dann wird CVS geupdated, configure und danach make jungfräulich ausgeführt.) Könnte helfen.
Token
Einsteiger
Einsteiger
Beiträge: 383
Registriert: Sonntag 7. April 2002, 14:29

Beitrag von Token »

... ich habe schon bei ingrid's antwort schon gedacht, irgendwas ist komisch und/oder mache ich verkehrt.
ingrid: "Das ist übrigens nach einigen Durchläufen (incl. distclean um den Cache zu füllen, etc.), daher die hohen Werte. "
=> ich teste das morgen mit dist.clean ... das kann/wird natuerlich sein, das es deswegen bei mir noch nicht aktiv ist, weil ich bis dato nur ein make clean gemacht habe.
... aber schoen das wir diesen thread haben, so haben alle cvs-bauer was davon ... inclusive meiner dummen fragen, und deren prof. antworten ! ;)
gute nacht und eine angenehme woche.
token
sagem-avia600_enx-1xi-cable-telecom
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Beitrag von dbt »

OT on:
Irgendjemand hat mal gesagt: "Es gibt keine dummen Fragen, nur dumme Antworten" brauchst Dir also keine Sorgen zu machen. Niemand ist allwissend.:wink:
OT off
nitr8
Einsteiger
Einsteiger
Beiträge: 102
Registriert: Freitag 29. Dezember 2006, 10:44

Beitrag von nitr8 »

nitr8@jijina:~$ ccache -s
cache directory /home/nitr8/.ccache
cache hit 8481
cache miss 7015
called for link 848
multiple source files 5
compile failed 278
preprocessor error 157
couldn't find the compiler 11
not a C/C++ file 437
autoconf compile/link 1245
unsupported compiler option 943
no input file 841
files in cache 14030
cache size 60.7 Mbytes
max cache size 976.6 Mbytes
Token
Einsteiger
Einsteiger
Beiträge: 383
Registriert: Sonntag 7. April 2002, 14:29

Beitrag von Token »

dbt, danke fuers verstaendnis ... ;)
mein dist-clean -> make laeuft grad - kann ne weile dauern ... bei meiner hardware :D
aber es tut sich was, mein ccache-dir wurde angelegt, incl. der 4 links - und der cache fuellt sich zusehens ! :D
token

edit 23:50
=======
token@token-desktop:~$ ccache -s
cache directory /home/token/.ccache
cache hit 72
cache miss 5198
called for link 318
multiple source files 6
compile failed 48
preprocessor error 25
couldn't find the compiler 11
not a C/C++ file 176
autoconf compile/link 611
unsupported compiler option 629
no input file 174
files in cache 10396
cache size 80.5 Mbytes
max cache size 976.6 Mbytes

... geht doch ! ;) :D
(nach dem 1. durchlauf gemessen)
sagem-avia600_enx-1xi-cable-telecom
Mr2You
Interessierter
Interessierter
Beiträge: 49
Registriert: Dienstag 4. Juni 2002, 08:50

Beitrag von Mr2You »

Kurze Frage:

Es wird ein link angeleget auf powerpc-tuxbox-linux-gnu-gcc-.3.3.5

Code: Alles auswählen

-ln -s /usr/bin/ccache $(hostprefix)/ccache-bin/powerpc-tuxbox-linux-gnu-gcc-.3.3.5 
aber bei mir wird der powerpc-tuxbox-linux-gnu-gcc-3.4.4 verwendet!

Sollte der link dann nicht so aussehen ?

Code: Alles auswählen

-ln -s /usr/bin/ccache $(hostprefix)/ccache-bin/powerpc-tuxbox-linux-gnu-gcc-3.4.4 

Code: Alles auswählen

mr2you@debian:~$ ccache -s
cache hit                           1278
cache miss                          4648
called for link                      477
multiple source files                  1
compile failed                         1
preprocessor error                    17
couldn't find the compiler            11
not a C/C++ file                     223
autoconf compile/link                 29
unsupported compiler option          339
no input file                         99
files in cache                     15088
cache size                          45.8 Mbytes
max cache size                     976.6 Mbytes
couldn't find the compiler 11 :gruebel:
Token
Einsteiger
Einsteiger
Beiträge: 383
Registriert: Sonntag 7. April 2002, 14:29

Beitrag von Token »

interessante frage ... ich verwende auch 3.4.4 und habe auch
"couldn't find the compiler = 11"
was sagen die experten dazu ?
token

p.s.:
also ich habe es mal auf 3.4.4 geaendert, die fehlermeldung ist nicht (!) weg.

edit:
also irgendwas gefaellt mir trotzdem noch nicht daran:

token@token-desktop:~$ ccache -s
cache directory /home/token/.ccache
cache hit 999
cache miss 11754

... die cache-hits sind mir etwas zu wenig ... koennte es sein das der pfad zum compiler (s.o.) noch nicht OK ist ?
... ich denke mir das das hier noch fehlt:

"/home/token/tuxbox/dbox2/cdk/bin" als $PATH hinzufuegen ?!
sagem-avia600_enx-1xi-cable-telecom
Mr2You
Interessierter
Interessierter
Beiträge: 49
Registriert: Dienstag 4. Juni 2002, 08:50

Beitrag von Mr2You »

dietmarw hat geschrieben:bei mir läuft es so..

-ccache inst.
-symlink im path vor dem normalen gcc auf ccache
-symlink im path vor dem normalen g++ auf ccache
-compilieren

kontrolle:
ccache -s
Hmmm, bin kein linux Profi. Soll das jetzt so gemacht werden:
/usr/bin# ln -sf ccache gcc
/usr/bin# ln -sf ccache g++

... oder was ist damit gemeint ?

:gruebel:
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Beitrag von ingrid »

Mr2You hat geschrieben:was ist damit gemeint ?
z.B. das:

Code: Alles auswählen

ln -s /usr/bin/ccache /usr/local/bin/gcc
ln -s /usr/bin/ccache /usr/local/bin/g++
...
Kommt drauf an, wo Dein ccache liegt und wie Deine path Variable aussieht. Die Links sollten eben "vorne" in Deinem path liegen, vor den eigentlichen gcc, g++, etc.
Beispiel gibt's auch via "man ccache" auf 'ner Linux-Konsole.
Token
Einsteiger
Einsteiger
Beiträge: 383
Registriert: Sonntag 7. April 2002, 14:29

Beitrag von Token »

... also, nunmal ein zwischen-stand von mir:

... ersteinmal, es funktioniert trotz der o.g. fehler einwandfrei, die zeitersparnis liegt je nach optionen bei 1/2 bis 2/3 der zeit !!!
(... bei mir liegt jetzt die compiling-zeit zw. 50min. und 1h !)
... der cache-hit zaehler wird erst beim eigentlichen build interessant ... beim dist.-build wird erstmal der cache gefuellt, daher gibts noch keine relevanten eintraege.

DANKE an alle fuer die hilfestellungen !

====
Token
sagem-avia600_enx-1xi-cable-telecom
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Beitrag von ingrid »

Token hat geschrieben:... bei mir liegt jetzt die compiling-zeit zw. 50min. und 1h !
:lol:
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Beitrag von dbt »

EDIT:
Ist nur experimentell :wink:
Hier mal ein etwas anderer Ansatz. Hab der Sache nicht ganz getraut, sprich war mir nicht ganz sicher, ob ccache auch bis in die letzte "Ecke" durchgreicht wird und habe das deshalb ins configure eingebaut. In der Ausgabe sieht man so genau wo überall ccache greift. Den Boost konnte ich so sofort nachvollziehen, so jedenfalls mein persönlicheer Eindruck. Wie das allgemein aussieht, könnt Ihr ja mal testen :wink:
Gezündet wird ccache indem man die Option
--with-ccachecommand=<Pfad zu ccache>
angibt.

Sollte ccache auf dem Rechner bereits installiert sein wäre das im einfachsten Fall:
--with-ccachecommand=ccache
Als Bonus, falls ccache nicht da ist, reicht ein einfaches:
make ccache
damit wird ccache nach ...dbox2/cdk/bin installiert, also im CDK bereitgestellt.
Dann würde z.B. diese Eingabe greifen:
--with-ccachecommand=/home/<username>/dbox2/cdk/bin/ccache
cdk-ccache-support_newmake-2007-10-04-00-07-52.patch

Im Patch auch
xfsprogs 2.9.4,
hdparm 7.7,
e2fsprogs 1.40.2,
ccache 2.4 fürs Tuxbox-CDK
wers braucht:
ncftp 3.2.0, (make ncftp, make flash-ncftp) :wink:
Zuletzt geändert von dbt am Freitag 12. Oktober 2007, 10:44, insgesamt 2-mal geändert.
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Beitrag von dietmarw »

also irgendwie hab ich mit deinen diff`s immer stress :wink:

es wäre echt von vorteil wenn man entweder dabei schreibt wie das diff zu patchen ist,
oder sich auf ein format einigt..

ich glaube viele benutzen "diff -Naur ...." ?
Steffi
Einsteiger
Einsteiger
Beiträge: 204
Registriert: Dienstag 12. März 2002, 07:40

Beitrag von Steffi »

Ich habe den ccache-Patch von dbt so angewendet und zum Arbeiten gebracht:

Patch ins cdk-Verzeichnis und dann "patch -p0 -l -b -i [patch]"
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Beitrag von dietmarw »

thx, damit klappt es..
hmm.. -b und -i sind bei mir eigentlich egal, da ich mit < das patchfile übergebe.
der einzige unterschied sollte also -l sein,
was auch immer ein ignore-whitespace da bei mir auslöst..
geko37
Einsteiger
Einsteiger
Beiträge: 133
Registriert: Sonntag 6. April 2003, 18:26

Beitrag von geko37 »

dbt hat geschrieben:Hier mal ein etwas anderer Ansatz. Hab der Sache nicht ganz getraut, sprich war mir nicht ganz sicher, ob ccache auch bis in die letzte "Ecke" durchgreicht wird und habe das deshalb ins configure eingebaut. In der Ausgabe sieht man so genau wo überall ccache greift. Den Boost konnte ich so sofort nachvollziehen, so jedenfalls mein persönlicheer Eindruck. Wie das allgemein aussieht, könnt Ihr ja mal testen :wink:
Gezündet wird ccache indem man die Option
--with-ccachecommand=<Pfad zu ccache>
angibt.

Sollte ccache auf dem Rechner bereits installiert sein wäre das im einfachsten Fall:
--with-ccachecommand=ccache
Als Bonus, falls ccache nicht da ist, reicht ein einfaches:
make ccache
damit wird ccache nach ...dbox2/cdk/bin installiert, also im CDK bereitgestellt.
Dann würde z.B. diese Eingabe greifen:
--with-ccachecommand=/home/<username>/dbox2/cdk/bin/ccache
Hier der passende diff zum heutigen CVS:
cdk-ccache-support_newmake-2007-10-04-00-07-52.patch

Im Patch auch
xfsprogs 2.9.4,
hdparm 7.7,
e2fsprogs 1.40.2,

ccache 2.4 fürs Tuxbox-CDK

wers braucht:
ncftp 3.2.0, (make ncftp, make flash-ncftp) :wink:
Hat das einer eventuell auch mal für oldmake ??? Da dieses Diff ja Newmake ist !
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Beitrag von dbt »

Next Level:
Gezündet wird ccache mit der Option

--enable-ccache

Ist ccache aktiviert, lassen sich auch ccache-Optionen für Maximal-Cachegröße Maximalanzahl der Cache-Dateien und Installationsverzeichnis von ccache angeben

--with-ccachedir=<Pfad zu ccache>
wird nichts angegeben, wird installiertes ccache ermittelt und verwendet.
Ist ccache nicht installiert kann man mit

make ccache

sein eigenes im cdk erzeugen (..dbox2/cdk/bin), dann muss dieser Pfad angegeben werden

Selbstredend:
--with-maxcachesize=<Speichergröße in GB>
--with-maxcachefiles=<Dateianzahl>

Weiterhin ist ccache auch auf den normalen gcc/g++ vom Host gelinkt. Das könnte auch noch etwas bringen.

Weiterhin habe ich den FLAC-Support und wget reingebaut (ist ja schon in Oldmake)

--enable-flac
make wget, make flash-wget

Hier der passende diff zum heutigen CVS:
cdk-ccache-support_newmake-2007-10-13-00-29-57.patch
Wie der Patch eingespielt wird, wurde ja schon gepostet.

auch noch drin:
xfsprogs 2.9.4,
hdparm 7.7,
e2fsprogs 1.40.2,

ccache 2.4 fürs Tuxbox-CDK
ncftp 3.2.0, (make ncftp, make flash-ncftp)

edit: Link aktualisiert
Zuletzt geändert von dbt am Samstag 13. Oktober 2007, 00:46, insgesamt 2-mal geändert.
Rebel1
Interessierter
Interessierter
Beiträge: 87
Registriert: Montag 14. August 2006, 09:10

Beitrag von Rebel1 »

@dbt
Schön mal wieder was zum testen. :D
Und ich muss nichtmal was anpassen , da du ja auch meine Flashtargets für hdparm und e2fsprogs übernommen hast.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Beitrag von dbt »

Rebel1 hat geschrieben: ...hdparm und e2fsprogs übernommen...
Sollten Deine Änderungen funktionieren, kann man sie doch übernehmen. Bisher scheints so zu sein :wink: In diesem Sinne danke!
geko37 hat geschrieben: Hat das einer eventuell auch mal für oldmake ??? Da dieses Diff ja Newmake ist !
Für Oldmake:
cdk-ccache-support_oldmake-2007-10-13-00-30-51.patch
Bitte mal testen!

Edit:
Das ganze ist jetzt eingecheckt. Ein paar Kleinigkeiten sind noch übrig, aber das wird noch erledigt, sollte aber erst mal so gehen. yiogol hat ja bereits die Schalter in sein yBuild eingebaut, also alles ohne weiteres mit CVS-Stand nutzbar. :wink:
PandinusImperator
Interessierter
Interessierter
Beiträge: 32
Registriert: Dienstag 23. Oktober 2007, 09:26

Beitrag von PandinusImperator »

Danke, heute habe ich auch die Zeitersparnis beim Kompilieren gemerkt.
Nutze Old_Make