Newmake/HEAD für die Dreambox (erste Schritte)

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

Ich finde die "driver_dream"-Lösung immer noch suboptimal (sehr vorsichtig ausgedrückt)
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von rhabarber1848 »

seife hat geschrieben:Ich finde die "driver_dream"-Lösung immer noch suboptimal (sehr vorsichtig ausgedrückt)
Mangels Hardware möchte ich da eigentlich nicht dran,
prinzipiell habe ich aber nichts dagegen, eine Änderung
im build-System ist leicht möglich.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von GetAway »

Kompile der vorletzten Version für Dbox2 läuft durch. :wink:
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

rhabarber1848 hat geschrieben:
seife hat geschrieben:Ich finde die "driver_dream"-Lösung immer noch suboptimal (sehr vorsichtig ausgedrückt)
Mangels Hardware möchte ich da eigentlich nicht dran,
prinzipiell habe ich aber nichts dagegen, eine Änderung
im build-System ist leicht möglich.
Dreambox-neutrino baut im CVS eh nicht, habe ich grad gemerkt ;)


tuxbox-add-dreambox-headers.diff

Das fügt nur die unbedingt notwendigen header hinzu. Allerdings muss in der acinclude der "detect API V1" Algorithmus etwas geändert werden. Auf die Schnelle habe ich mal einfach "Wenn nicht dbox, dann API V1" gemacht, aber mit den boxtype/boxvendor sachen lässt sich das bestimmt eleganter machen (momentan bricht es bestimmt auf i386).

Das ist zwar nicht schön, aber immer noch besser, als der /driver_dream $%!$&$§!! ;)
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Newmake/HEAD für die Dreambox (zweiter Schritt)

Beitrag von rhabarber1848 »

rhabarber1848 hat geschrieben: cdk2.diff
Patch ist im CVS, da er für die Dbox2 keine Probleme macht.
Mangels Dreambox kann ich den Patch dort nicht testen.

@seife: Deinen driver-Patch schaue ich mir noch an.
dbluelle
Contributor
Beiträge: 319
Registriert: Samstag 29. Mai 2004, 18:49

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von dbluelle »

Ich bin wieder einen Schritt weiter :D :

Das fertige Image bootet jetzt (zumindest vom USB-Stick) und Enigma startet auch.
Der Transponderscan läuft durch und man kann danach einen Sender wählen.
Beim Wechsel auf einen anderen Sender stürzt Enigma aber noch ab :gruebel: .

Die nötigen Änderungen habe ich ins CVS eingecheckt.

Zu der Sache mit dem driver_dream-Verzeichnis.
Mir ist leider erst nach dem Einchecken aufgefallen, das ja nur das include-Verzeichnis benötigt wird :dash: .
Das kann dann meinetwegen wieder raus.
Ich denke nicht, das es so gut ist, die include-Verzeichnisse ins driver-Verzeichnis zu legen,
da IMHO das driver-Verzeichnis doch ziemlich DBox-spezifische Sachen enthält, oder?

dbluelle

Edit:
Hier noch das prepare-Skript mit Anpassung für die neue Boxtype/Boxmodel-Optionen

Code: Alles auswählen

#!/bin/bash
cd .. && CURRENT_PATH=`pwd`;
cd cdk
./autogen.sh;
# boxtype dm500 dm56x0 or dm7000
TYPE=$1
if test -z "$TYPE"; then
	TYPE=dm7000
fi
./configure \
	--with-boxtype="dreambox" \
	--with-boxmodel=$TYPE \
	--with-webif=expert \
	--prefix=$CURRENT_PATH/root \
	--with-cvsdir=$CURRENT_PATH \
	--enable-maintainer-mode \
	--enable-flashrules \
	--with-cpu=405 \
	--with-epg=private \
	--with-mhw-epg=yes \
	--with-flashtool=expert \
	--with-reiserfs=no \
	--with-ext-flashtool=yes \
	--with-enigma-debug=yes \
	--enable-ide \
	--enable-kernel26 \
	--enable-ccache
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

dbluelle hat geschrieben:Zu der Sache mit dem driver_dream-Verzeichnis.
Mir ist leider erst nach dem Einchecken aufgefallen, das ja nur das include-Verzeichnis benötigt wird :dash: .
Das kann dann meinetwegen wieder raus.
Ich denke nicht, das es so gut ist, die include-Verzeichnisse ins driver-Verzeichnis zu legen,
da IMHO das driver-Verzeichnis doch ziemlich DBox-spezifische Sachen enthält, oder?
Die ja aber normalerweise nicht included werden. Auf der dreambox/ipbox/itgate darf eben nur "ost/xxx.h" included werden, das kann man ja evtl. abprüfen.
Natürlich könenn wir "driver/oldapi/xxx.h" machen, aber dann müssen wir überall den Code ändern. Das hätte ich halt vermieden.
Evtl. könnte man "driver/oldapi/ost/..." machen, und dann mit "--with-driverdir=../driver/oldapi" konfigurieren, das wäre eine Lösung, vermutlich noch nicht mal die schlechteste.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von rhabarber1848 »

dbluelle hat geschrieben:./configure \
Dazu ein paar Anmerkungen bzgl. CVS HEAD:

--with-boxtype="dreambox" aktiviert automatisch
--with-cpu=405 --enable-kernel26
Die Option --with-cpu habe ich aus CVS HEAD bereits komplett entfernt.

Diese Optionen werden von cdk/configure.ac nicht verarbeitet und
damit auch nicht an Enigma weitergegeben:
--with-epg=private \
--with-mhw-epg=yes \
--with-flashtool=expert \
--with-reiserfs=no \
--with-ext-flashtool=yes \
--with-enigma-debug=yes \
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von rhabarber1848 »

seife hat geschrieben:Die ja aber normalerweise nicht included werden. Auf der dreambox/ipbox/itgate darf eben nur "ost/xxx.h" included werden, das kann man ja evtl. abprüfen.
Für mich bitte nochmal zum Mitschreiben, ;)
da ich davon heute zum ersten Mal höre:

Ist es richtig, dass auf der Dbox2@Kernel2.4
driver/dvb/include/linux/dvb/*
genutzt werden müssen, auf den anderen Boxen stattdessen
driver/include/ost/* ?

Wäre es dann nicht möglich, den --with-dvbincludes-Mechanismus
auch auf Neutrino auszudehnen?

Dazu noch eine Frage:
http://cvs.tuxbox-cvs.sourceforge.net/c ... r2=1.1.2.7
Liefert Kernel 2.6@Dbox2 korrekte DVB-Header mit oder warum
wird hier auf $(targetprefix)/include zurückgegriffen?
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

Default (neue Treiber, dbox egal mit welchem Kernel, PC,...) ist include/linux/dvb
Dream/IPbox brauchen include/ost

Das Problem ist, dass in acinclude.m4 das alleinige Vorhandensein von include/ost dafür sorgt, dass "API=1" gesetzt wrid.

Wenn wir nun einfach anhand des boxtypes API auf 1 setzen, dann können wir einfach include/ost auch in das "normale" driver/include-Verzeichnis kopieren.

Allerdings wird dann bei Fehlern (ein #ifdef HAVE_DVB_API_VERSION falsch / vergessen) kein Compilerfehler auftreten (die includes sind ja alle da), das gibt dann zur Laufzeit schwer debugbare Fehler.

Wenn wir stattdessen "driver/oldapi/include/ost" oder "driver/oldapi/ost" machen und dann "--with-driverdir=../driver/oldapi", dann schlägt schon das kompilieren fehl, was ich persönlich bevorzuge. Ich versuche mal, meinen Patch entsprechend zu aktualisieren.

Das "--with-dvbincludes" wird nicht wirklich benutzt wenn ich mich recht erinnere, da habe ich mich zu TD-port-Zeiten schon mal drüber gewundert.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

ich habe tuxbox-add-dreambox-headers.diff mal updated. Jetzt driver/oldapi/include und es baut (ich habs noch nicht probiert, aber ich habe mir das Kompilieren ausführlich angeschaut und bin mir ziemlich sicher, dass die richtigen Sachen genommen werden).

Das einzige, was nicht funktionieren wird (auf der dream), ist das "outdoor"-Plugin, das wird aber sowieso nicht gebaut, vermutlich weil es eh nicht funktioniert.

Die treiber für 2.6 sind ja etwas neuer als die für 2.4, insofern vermute ich, dass die mit dem Kernel mitgelieferten Header da passen sollten.

Zusätzlich zu meinem diff muss im cdk/makefile noch sowas in der Art gemacht werden (abhängig vom boxtype):

Code: Alles auswählen

-       --with-dvbincludes=$(driverdir)/include \
+       --with-dvbincludes=$(driverdir)/oldapi/include \
Diskutieren könnte man noch, ob man $(driverdir)/oldapi/include oder nur $(driverdir)/oldapi macht.

Edit: das dummy-Makefile im Diff ist überflüssig, das war aus einem früheren Versuch.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von rhabarber1848 »

seife hat geschrieben:Zusätzlich zu meinem diff muss im cdk/makefile noch sowas in der Art gemacht werden (abhängig vom boxtype):

Code: Alles auswählen

-       --with-dvbincludes=$(driverdir)/include \
+       --with-dvbincludes=$(driverdir)/oldapi/include \
Das sähe dann so aus:

Code: Alles auswählen

diff -uNr ../cvs/cdk/make/buildenv.mk ./cdk/make/buildenv.mk
--- ../cvs/cdk/make/buildenv.mk	2009-04-26 23:35:50.000000000 +0200
+++ ./cdk/make/buildenv.mk	2009-04-27 10:42:43.000000000 +0200
@@ -28,18 +28,12 @@
 	--with-boxtype=$(BOXTYPE) \
 	--with-target=cdk
 if BOXTYPE_DREAMBOX
-CONFIGURE_OPTS += --with-boxmodel=$(BOXMODEL)
+CONFIGURE_OPTS += --with-boxmodel=$(BOXMODEL) \
+		  --with-dvbincludes=$(driverdir)/oldapi/include
 endif
 if BOXTYPE_IPBOX
-CONFIGURE_OPTS += --with-boxmodel=$(BOXMODEL)
-endif
-if BOXTYPE_DREAMBOX
-CONFIGURE_OPTS += \
-	--with-dvbincludes=$(driverdir)/dvb/include
-endif
-if BOXTYPE_IPBOX
-CONFIGURE_OPTS += \
-	--with-dvbincludes=$(driverdir)/include
+CONFIGURE_OPTS += --with-boxmodel=$(BOXMODEL) \
+		  --with-dvbincludes=$(driverdir)/oldapi/include
 endif
 if BOXTYPE_DBOX2
 if KERNEL26
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von rhabarber1848 »

seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

weil enigma/dream eine andere hat als neutrino (und vermutlich auch als enigma/dbox)

In der satellites.xml (und anderen .xml) sind die rohen zahlenwerte für FEC etc. drin, und die sind driverabhängig.
Für neutrino habe ich das mal gefixt (sonst hätte die TD nochmals ne andere)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

Ich habe mal flashtargets für neutrino gemacht. Was rauskommt sieht nicht komplett kaputt aus, ich habe es allerdings noch nicht geflashed, sondern nur per loopback-mount und chroot grob getestet.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von rhabarber1848 »

Besteht eigentlich die Möglichkeit, Dreambox- und IPBox-Images
ohne Cramfs zu bauen? So wie ich das sehe, wird bei IPBox
U-Boot ohne Squashfs-Support, da die Dbox-Patches z.Zt.
nicht genutzt werden, gebaut, was wohl der Grund dafür
ist, dass der Kernel in einer Cramfs-Partition liegen muss.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

Nicht dass ich wüsste. Ich vermute dass das seltsame "OpenBios" von IBM nur von einem festen Pfad in einem cramfs booten kann. Dort könnte man natürlich auch auf der dream einen u-boot hinlegen, aber wozu? (Ok, der könnte sich sachen wie parameter für die serielle Konsole etc merken, aber das wars dann auch).
Ich flashe auf der dream praktisch immer nur das root-squashfs.img, denn am Kernel ändert sich eh nie was (autofs gibts als Modul, und sonst kann man vermutlich eh nichts grundlegendes ändern, sonst wird das head.ko nicht mehr laden)
Ein "complete.img" ist ja auch nicht "komplett" im Sinne eines dbox-Images - du hast auf der dream nie die /var/-Partition mit drin. Stattdessen wird beim ersten boot halt /var formatiert (mit eraseall) und dann /var-init.tar.gz ausgepackt. "complete.img" ist also nur kernel(cramfs)+root(squashfs).
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von rhabarber1848 »

seife hat geschrieben:ich habe tuxbox-add-dreambox-headers.diff mal updated.
Sieht gut aus, hier die vollständige Version: tuxbox-add-dreambox-headers2.diff

BTW: Geht dieser Patch in Ordnung?

Code: Alles auswählen

--- ../cvs/apps/tuxbox/enigma/lib/dvb/edvb.cpp  2009-02-03 19:52:55.000000000 +0100
+++ ./apps/tuxbox/enigma/lib/dvb/edvb.cpp       2009-04-27 15:52:58.000000000 +0200
@@ -9,9 +9,6 @@
 #include <sys/ioctl.h>
 #include <sys/stat.h>
 #include <sys/types.h>
-#if HAVE_DVB_API_VERSION < 3
-#include <dbox/info.h>
-#endif
 #include <algorithm>
 #include <string.h>

Im Dreambox-Modus kommt ein Kompilierfehler, da <dbox/info.h> nicht existiert.
Ohne die besagten Zeilen kompiliert der Code.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

Sieht gut aus, die sachen aus dbox/info.h werden nirgends benutzt, das ist also ein "totes" include.

Wenn später auffällt, dass noch was fehlt, können wir ja noch sachen in oldapi/... hinzufügen.

Ich brauchte übrigens auch noch das:

Code: Alles auswählen

Index: fx2/lib/rcinput.c                                                                                                                  
===================================================================                                                                       
RCS file: /local/mirror/tuxbox-cvs/apps/tuxbox/plugins/fx2/lib/rcinput.c,v                                                                
retrieving revision 1.22                                                                                                                  
diff -u -p -r1.22 rcinput.c                                                                                                               
--- fx2/lib/rcinput.c   17 Dec 2008 21:26:49 -0000      1.22                                                                              
+++ fx2/lib/rcinput.c   27 Apr 2009 10:58:41 -0000                                                                                        
@@ -9,15 +9,15 @@                                                                                                                         
 #include <termios.h>                                                                                                                     
 #include <unistd.h>                                                                                                                      
                                                                                                                                          
+#include "draw.h"                                                                                                                        
+#include "rcinput.h"                                                                                                                     
+                                                                                                                                         
 #ifdef HAVE_DREAMBOX_HARDWARE                                                                                                            
        static int fd_is_ext = 0;                                                                                                         
        static int keyboard = 0;                                                                                                          
        static int drop = 0;                                                                                                              
 #endif                                                                                                                                   
                                                                                                                                          
-#include "draw.h"                                                                                                                        
-#include "rcinput.h"                                                                                                                     
-                                                                                                                                         
 #define Debug  if (debug) printf                                                                                                         
                                                                                                                                          
 static int     fd = -1;                                                                                                                  
, ansonsten war HAVE_DREAMBOX_HARDWARE nicht definiert (das kommt aus dem config.h include im rcinput.h).
Keine Ahnung, warum das erst nicht auffiel...
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von rhabarber1848 »

seife hat geschrieben:Ich brauchte übrigens auch noch das:

Code: Alles auswählen

Index: fx2/lib/rcinput.c
Patch ist im CVS, driver_dream/ nicht mehr :D
Diese Patches sind ebenfalls im CVS:
http://forum.tuxbox-cvs.sourceforge.net ... 30#p367230
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

Super. Dann werde ich jetzt mutiger und versuche mal, das was rausfällt zu flashen :-)
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von rhabarber1848 »

make flash-neutrino-squashfs flash-enigma-squashfs

erzeugt jeweils complete.img? Das wäre nicht gut, oder?
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

jetzt nicht mehr ;)

complete-neutrino.img build war kaputt, ich hatte da was vergessen...
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von rhabarber1848 »

@seife:

#ifndef HAVE_DREAMBOX_HARDWARE

bedeutete bis vor kurzem, dass es sich um eine Dbox handelt.
Da dies wegen der IPBox, TD und BOXTYPE_GENERIC nicht mehr
stimmt, möchte ich vorschlagen, das in

#ifdef HAVE_DBOX_HARDWARE

abzuwandeln: dbox2_define.diff
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Newmake/HEAD für die Dreambox (erste Schritte)

Beitrag von seife »

Das sieht im Prinzip gut aus, allerdings zumindest der erste Hunk im zapit.cpp sollte erstmal bleiben. Da steht im Kommentar extra drin, dass es auf der dreambox nicht benötigt wird, wir sollten also andere Boxen erst mal testen.

(Wenn ich's dann in den tripleldragon-Branch merge, sehe ich auch, ob mir woanders schon Probleme mit der Logik aufgefallen sind. Die meisten dieser Stellen habe ich ja auf der TD schon mal gesehen ;))