Cross-compiler für Coolstream
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Cross-compiler für Coolstream
Hi,
folgender Patch ermöglicht es, den cross-compiler für die
Coolstream-Box aus dem Tuxbox CVS heraus zu bauen:
EDIT: Patch ist im CVS
Dieser Patch beeinflusst nicht das Bauen von Dbox2-Images,
Dream- und IPBox habe ich nicht getestet, sollten aber laufen.
Dazu gibt es die neue Option --with-boxtype=coolstream
und die üblichen make targets, also "make bootstrap".
Die Vorgehensweise beim Erstellen des cross-compiler und
der zugehörigen eglibc ist 1:1 von cross-tool-ng kopiert
worden, wie es auch von Coolstream eingesetzt wird.
Im Patch anbei sind einige compile-Patches, hauptsächlich
include-Ergänzungen, da irgendwo zwischen gcc-3.4.6 und
gcc-4.3.2 die Header-Organisation geändert wurde.
Darüberhinaus sind die gcc und gmp-Patches von crosstool-ng
enthalten, die auch von Coolstream genutzt werden, sowie
ein weiterer upstream-Patch, der das Kompilieren von
libFLAC ermöglicht.
Was geht:
- cross-compiler komplett
- viele libs
- stand-alone-Tools wie links, busybox, esound
Was nicht geht:
- Kernel
- tuxtxt, tuxcal, tuxmail (Houdini hat Coolstream-spezifische Patches dafür)
- Neutrino
- Enigma
- manche libs, wie libcommoncplusplus, libffi
- und vieles mehr
To-Do
- libfreetype-2.3.9 für Coolstream
folgender Patch ermöglicht es, den cross-compiler für die
Coolstream-Box aus dem Tuxbox CVS heraus zu bauen:
EDIT: Patch ist im CVS
Dieser Patch beeinflusst nicht das Bauen von Dbox2-Images,
Dream- und IPBox habe ich nicht getestet, sollten aber laufen.
Dazu gibt es die neue Option --with-boxtype=coolstream
und die üblichen make targets, also "make bootstrap".
Die Vorgehensweise beim Erstellen des cross-compiler und
der zugehörigen eglibc ist 1:1 von cross-tool-ng kopiert
worden, wie es auch von Coolstream eingesetzt wird.
Im Patch anbei sind einige compile-Patches, hauptsächlich
include-Ergänzungen, da irgendwo zwischen gcc-3.4.6 und
gcc-4.3.2 die Header-Organisation geändert wurde.
Darüberhinaus sind die gcc und gmp-Patches von crosstool-ng
enthalten, die auch von Coolstream genutzt werden, sowie
ein weiterer upstream-Patch, der das Kompilieren von
libFLAC ermöglicht.
Was geht:
- cross-compiler komplett
- viele libs
- stand-alone-Tools wie links, busybox, esound
Was nicht geht:
- Kernel
- tuxtxt, tuxcal, tuxmail (Houdini hat Coolstream-spezifische Patches dafür)
- Neutrino
- Enigma
- manche libs, wie libcommoncplusplus, libffi
- und vieles mehr
To-Do
- libfreetype-2.3.9 für Coolstream
-
- Erleuchteter
- Beiträge: 625
- Registriert: Samstag 8. September 2007, 16:17
Re: Cross-compiler für Coolstream
Also geht leider so ziemlich alles nicht was interessant ist. ^^ Aber danke für die Mühe rhabarber!
Naja die Hoffnung stirbt zuletzt... ;)
Naja die Hoffnung stirbt zuletzt... ;)
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
Das wird auch so bleiben, bis die Coolstream-Leute ihrer GPL-Pflicht nachkommen.Striper hat geschrieben:Also geht leider so ziemlich alles nicht was interessant ist.
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: Cross-compiler für Coolstream
Die Frage, die ich mir stelle, ist: warum sollte man ein gut funktionierendes Tool (crosstool-ng) im tuxbox-cdk duplizieren (und das CDK dadurch noch komplexer und undurchschaubarer machen)?
Es sollte doch problemlos möglich sein, mittels "--with-toolchain=PATH" die per crosstool gebaute toolchain zu benutzen. Wenn das *nicht* funktioniert, sollte man lieber das fixen.
Ein Grund, warum ich für die TD mit meinen eigenen Makefiles baue ist, dass das tuxbox-CDK unnötig komplex ist, und damit die Fehlersuche unnötig kompliziert.
Es sollte doch problemlos möglich sein, mittels "--with-toolchain=PATH" die per crosstool gebaute toolchain zu benutzen. Wenn das *nicht* funktioniert, sollte man lieber das fixen.
Ein Grund, warum ich für die TD mit meinen eigenen Makefiles baue ist, dass das tuxbox-CDK unnötig komplex ist, und damit die Fehlersuche unnötig kompliziert.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
@seife: Für Deine Frage gibt es kein klares Ja oder Nein.
Du nutzt das Tuxbox CVS mit externen Compilern,
ich bevorzuge den Ansatz, dass das Tuxbox CVS
alles notwendige beinhaltet, was zum Kompilieren
nötig ist, da ich nicht von crosstool-ng oder anderen
externen Tools abhängig sein möchte. Für beide
Varianten gibt es Vor- und Nachteile, eine allgemeine,
klare Präferenz ist für nicht erkennbar.
Wenn beides funktioniert, sehe ich keine Probleme,
da mein Patch sich hauptsächlich auf
cdk/make/bootstrap.mk auswirkt, die Komplexität
wird nur unwesentlich gesteigert. Im Gegenteil,
ich hatte Mühe, die "if !USE_FOREIGN_TOOLCHAIN"-Blöcke
so anzupassen, dass mein Coolstream-Patch funktioniert.
So gesehen, ist IMHO der USE_FOREIGN_TOOLCHAIN-Code
komplizierter als mein Coolstream-Patch
Beides kann aber IMHO nebeneinander gleichwertig im
Tuxbox CVS existieren.
Der Vorteil der Erzeugung der cross-compiler im Tuxbox CVS ist,
dass der erzeugte Code nicht abhängig von lokalen Compilern,
deren Revisionsständen und Patches ist, ein definierter Zustand also.
PS: smiley hinzugefügt
Du nutzt das Tuxbox CVS mit externen Compilern,
ich bevorzuge den Ansatz, dass das Tuxbox CVS
alles notwendige beinhaltet, was zum Kompilieren
nötig ist, da ich nicht von crosstool-ng oder anderen
externen Tools abhängig sein möchte. Für beide
Varianten gibt es Vor- und Nachteile, eine allgemeine,
klare Präferenz ist für nicht erkennbar.
Wenn beides funktioniert, sehe ich keine Probleme,
da mein Patch sich hauptsächlich auf
cdk/make/bootstrap.mk auswirkt, die Komplexität
wird nur unwesentlich gesteigert. Im Gegenteil,
ich hatte Mühe, die "if !USE_FOREIGN_TOOLCHAIN"-Blöcke
so anzupassen, dass mein Coolstream-Patch funktioniert.
So gesehen, ist IMHO der USE_FOREIGN_TOOLCHAIN-Code
komplizierter als mein Coolstream-Patch
Beides kann aber IMHO nebeneinander gleichwertig im
Tuxbox CVS existieren.
Der Vorteil der Erzeugung der cross-compiler im Tuxbox CVS ist,
dass der erzeugte Code nicht abhängig von lokalen Compilern,
deren Revisionsständen und Patches ist, ein definierter Zustand also.
PS: smiley hinzugefügt
Zuletzt geändert von rhabarber1848 am Samstag 10. Oktober 2009, 22:42, insgesamt 1-mal geändert.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
Das Erstellen eines TD-Images aus dem Tuxbox CVS herausseife hat geschrieben:Ein Grund, warum ich für die TD mit meinen eigenen Makefiles baue ist, dass das tuxbox-CDK unnötig komplex ist, und damit die Fehlersuche unnötig kompliziert.
steht auch noch auf meiner To-Do-Liste
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
Wer den cross-compiler aus dem Tuxbox CVS mit dem Original
vergleichen möchte, hier mein Skript für das Coolstream CDK.
Es benötigt Bash v4, wer noch mit Bash v3 arbeitet, muss die
entsprechende sed-Zeile rausnehmen:
vergleichen möchte, hier mein Skript für das Coolstream CDK.
Es benötigt Bash v4, wer noch mit Bash v3 arbeitet, muss die
entsprechende sed-Zeile rausnehmen:
Code: Alles auswählen
#!/bin/sh
COOLDIR=$HOME/tuxbox/cool
PATH=$COOLDIR/crosstool-ng/bin:$PATH
rm -rf $COOLDIR
for i in svn crosstool-ng build download; do
mkdir -p $COOLDIR/$i
done
cd $HOME/tuxbox/cool/svn
svn co --no-auth-cache --username coolstream --password coolstream http://www.coolstreamtech.de/coolstream_public_svn
cd $COOLDIR/svn/coolstream_public_svn/CROSSENVIROMENT/crosstool-ng-1.3.2
# remove if bash v3 is present
sed -i "s/^\/bin\/bash\/\^GNU bash, version 3\\\./\/bin\/bash\/\^GNU bash, Version 4\\\./" configure
./configure --prefix=$COOLDIR/crosstool-ng
make install
cd $COOLDIR/build
sed -e 's#\(CT_LOCAL_TARBALLS_DIR=\).*#\1'\""$COOLDIR/download"\"'#g' \
-e 's#\(CT_PREFIX_DIR=\).*#\1'\""$COOLDIR/build/\${CT_TARGET}"\"'#g' \
$COOLDIR/svn/coolstream_public_svn/CROSSENVIROMENT/crosstool-ng-configs/config-cx2450x-1.3.2 > \
.config
ct-ng build
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
Re: Cross-compiler für Coolstream
ich fände es auch praktisch alles in einer umgebung zu erstellen.
mal abwarten, ob die coolstream nicht ne totgeburt wird mangels sourcen
mal abwarten, ob die coolstream nicht ne totgeburt wird mangels sourcen
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
... und solange hat mein Patch im CVS nichts zu suchen.mb405 hat geschrieben:mal abwarten, ob die coolstream nicht ne totgeburt wird mangels sourcen
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
Re: Cross-compiler für Coolstream
genau. wenn mal sourcen kommen, könte man nochmal nachdenken drüber.
so viel anders wird da ja nicht sein. es draht sich doch wie ich gelesen hab nur um hardwaretreiber freigabe.
so viel anders wird da ja nicht sein. es draht sich doch wie ich gelesen hab nur um hardwaretreiber freigabe.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
So wird es kolportiert, Coolstream kann dennoch schonmb405 hat geschrieben:es dreht sich doch wie ich gelesen hab nur um hardwaretreiber freigabe.
jetzt den Neutrino-Sourcecode freigeben, auch wenn
er mangels Hardware-Treiber-includes nicht kompilieren
wird. Interessant ist der Code schon jetzt allemal.
Meine Meinung, bis zum Beweis des Gegenteils, ist,
dass sich Coolstream hinter dem Chipsatzhersteller
und dessen Weigerung zur Veröffentlichung von Header-
Dateien versteckt, um NeutrinoHD nicht rauszugeben.
Dazu ist Coolstream aber lt. GPL verpflichtet.
Gut, dass ich im Moment keine HD-Box brauche und
mit meiner Dbox2 voll und ganz zufrieden bin
-
- Tuxboxer
- Beiträge: 2331
- Registriert: Donnerstag 24. März 2005, 21:52
Re: Cross-compiler für Coolstream
dito.
aber die 500mhz reizen schon
aber die 500mhz reizen schon
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
@seife: Spricht etwas dagegen, die gcc4-Patches aus meinem
Patch schon jetzt ins CVS zu committen? Sie stören gcc3 nicht.
Patch schon jetzt ins CVS zu committen? Sie stören gcc3 nicht.
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: Cross-compiler für Coolstream
Ich habe da keine Meinung zu (ich habe es mir auch nicht angeschaut). Längerfristig auch für die dbox mit gcc 4.x zu bauen hätte sicher einige positive Auswirkungen auf die Codequalität ;-)
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
Dazu habe ich einige Fragen, deren Beantwortungseife hat geschrieben:Längerfristig auch für die dbox mit gcc 4.x zu bauen hätte sicher einige positive Auswirkungen auf die Codequalität ;-)
ich schon länger vor mir hergeschoben habe.
Vielleicht kannst Du aus dem Stehgreif was dazu sagen:
Ist glibc-2.3.6 mit gcc4 kompilierbar?
Wenn nein, funktioniert glibc > 2.3 mit Kernel 2.4?
Das hängt wohl mit linuxthreads zusammen, da
NPTL nicht auf Kernel 2.4 läuft.
EDIT: Ich habe gerade glibc-linuxthreads-2.5.tar.bz2
gefunden, vielleicht gibt es damit mehr Chancen?
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
Patch wegen CVS-Änderungen aktualisiertrhabarber1848 hat geschrieben:folgender Patch ermöglicht es, den cross-compiler für die
Coolstream-Box aus dem Tuxbox CVS heraus zu bauen:
coolstream_cdk.diff
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
Dieser Teil ist nun im CVS:rhabarber1848 hat geschrieben:Im Patch anbei sind einige compile-Patches, hauptsächlich
include-Ergänzungen, da irgendwo zwischen gcc-3.4.6 und
gcc-4.3.2 die Header-Organisation geändert wurde.
http://article.gmane.org/gmane.comp.vid ... x.scm/1484
http://article.gmane.org/gmane.comp.vid ... x.scm/1485
http://article.gmane.org/gmane.comp.vid ... x.scm/1486
http://article.gmane.org/gmane.comp.vid ... x.scm/1487
http://article.gmane.org/gmane.comp.vid ... x.scm/1488
http://article.gmane.org/gmane.comp.vid ... x.scm/1489
http://article.gmane.org/gmane.comp.vid ... x.scm/1490
http://article.gmane.org/gmane.comp.vid ... x.scm/1491
http://article.gmane.org/gmane.comp.vid ... x.scm/1493
http://article.gmane.org/gmane.comp.vid ... x.scm/1493
Coolstream-Patch aktualisiert: coolstream_cdk.diff
-
- Interessierter
- Beiträge: 92
- Registriert: Montag 23. Februar 2009, 14:48
Re: Cross-compiler für Coolstream
Ab Heute sind Neutrino sourcen Public.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
Das sieht nicht schlecht ausgugu hat geschrieben:Ab Heute sind Neutrino sourcen Public.
Der cross-compiler-Patch ist jetzt im Tuxbox CVS.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
Es stellt sich nun das Problem unterschiedlicher library-Versionen,
nicht nur bei freetype (2.0.9 vs. 2.1.4 vs. 2.3.9), sondern auch
bei curl (7.10.1 vs. 7.19.6).
Die einfache Lösung wäre, die verwendete Version vom Boxtyp
abhängig zu machen, das ist allerdings unflexibel. Es gibt bereits
User, welche die aktuelle Curl-Version auf anderen Boxen einsetzen.
Deshalb schlage ich neue cdk/configure-Optionen (was auch sonst )
vor, im Stile von --with-curlversion=old/current. Konkrete Versions-
nummern möchte ich nicht verwenden, da ansonsten die Komplexität
zu hoch wird. Wenn der Boxtype coolstream gesetzt wird, wird zudem
automatisch --with-curlversion=current gesetzt, sofern die Option
--with-curlversion nicht angegeben wird. Alle anderen Boxen nutzen
weiterhin Curl 7.10.1, sofern --with-curlversion nicht gesetzt ist.
Hier mein Patchvorschlag: EDIT: Patch ist im CVS
nicht nur bei freetype (2.0.9 vs. 2.1.4 vs. 2.3.9), sondern auch
bei curl (7.10.1 vs. 7.19.6).
Die einfache Lösung wäre, die verwendete Version vom Boxtyp
abhängig zu machen, das ist allerdings unflexibel. Es gibt bereits
User, welche die aktuelle Curl-Version auf anderen Boxen einsetzen.
Deshalb schlage ich neue cdk/configure-Optionen (was auch sonst )
vor, im Stile von --with-curlversion=old/current. Konkrete Versions-
nummern möchte ich nicht verwenden, da ansonsten die Komplexität
zu hoch wird. Wenn der Boxtype coolstream gesetzt wird, wird zudem
automatisch --with-curlversion=current gesetzt, sofern die Option
--with-curlversion nicht angegeben wird. Alle anderen Boxen nutzen
weiterhin Curl 7.10.1, sofern --with-curlversion nicht gesetzt ist.
Hier mein Patchvorschlag: EDIT: Patch ist im CVS
-
- Erleuchteter
- Beiträge: 625
- Registriert: Samstag 8. September 2007, 16:17
Re: Cross-compiler für Coolstream
Oder doch mal Kernel 2.6 zum Standard machen bei der DBox. Dann sollte es doch drin sein die gleichen Library Versionen zu nutzen?!
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
Ich bin dagegen, da Kernel 2.6 um einiges größer ist als 2.4.Striper hat geschrieben:Oder doch mal Kernel 2.6 zum Standard machen bei der DBox.
Das eine hat mit dem anderen nichts zu tun.Striper hat geschrieben:Dann sollte es doch drin sein die gleichen Library Versionen zu nutzen?!
-
- Erleuchteter
- Beiträge: 625
- Registriert: Samstag 8. September 2007, 16:17
Re: Cross-compiler für Coolstream
Ist es nicht so das bestimmte neuere Libs nur unter Kernel 2.6.x laufen?rhabarber1848 hat geschrieben:Das eine hat mit dem anderen nichts zu tun.Striper hat geschrieben:Dann sollte es doch drin sein die gleichen Library Versionen zu nutzen?!
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: Cross-compiler für Coolstream
Ja, nur glaube ich nicht, dass das auf Curl und Freetype zutrifft.Striper hat geschrieben:Ist es nicht so das bestimmte neuere Libs nur unter Kernel 2.6.x laufen?
-
- Contributor
- Beiträge: 1833
- Registriert: Mittwoch 10. April 2002, 15:39
Re: Cross-compiler für Coolstream
aber soweit ich weiß hat sich noch keiner von den "kernelspezis" mal intensiv um eine größenoptimierung gekümmert?rhabarber1848 hat geschrieben: Ich bin dagegen, da Kernel 2.6 um einiges größer ist als 2.4.
denn wenn er nur noch "ein wenig" größer wäre, würde dieser kleine nachteil auf jedem fall
von dem großen vorteil des wegfalls der ganzen 2.4/2.6 differenzen wettgemacht werden.
und eine handvoll kernelspezis sind ja hier vertreten..
edit:
vor fast genau zwei jahren hat das einer derjenigen auf jeden fall mal gesagt
http://forum.tuxbox-cvs.sourceforge.net ... af#p346830