Erneuter make Durchlauf (ohne Kernel-Quellcodeverlust)?!?

Anlaufschwierigkeiten? Was ist was? Worum geht's?
StephanS
Neugieriger
Neugieriger
Beiträge: 9
Registriert: Mittwoch 9. November 2005, 18:38

Erneuter make Durchlauf (ohne Kernel-Quellcodeverlust)?!?

Beitrag von StephanS »

Hallo,

da die 32MB DRAM meiner Nokia D-Box2 an einer Speicheraddresse kaputgegangen sind,
musste ich mich mit der Erstellung eigener Images auseinandersetzen.
Mitlerweile habe ich das Speichermanagement vom Kernel umprogrammiert, so dass
bestimmte Adressen nicht freigegeben werden. (port von BADRAM für i386 nach PPC)
Die Dbox2 läuft wieder, da sie nun auf 2 Ramseiten mit je 4kB verzichtet.
Jetzt habe ich aber noch ein Grundsatzproblem mit "make". Da ich weiter Programmieren will
brauche ich eine praktikable und einfache Lösung... (Gibt es sowas überhaupt?) :gruebel:

Mein Problem:
* mit "make enigma" kann ich die Quellcodedateien compilieren, aber nur wenn nicht bereits übersetzte Dateien vorhanden sind!
* mit "make distclean" kann ich die Binärdateien löschen, um sie anschließend alle neu zu erstellen...
--> es werden aber leider auch die Linux Kernel Quelldateien gelöscht incl. Verzeichnis ...cdk/linux-2.4.31 ?!?
Beim neuen Compilieren werden dann wieder die Originaldateien aus Archive entpackt. Meine Änderungen am Kernel sind verschwunden!:evil:

Gibt es ein Skript, oder make - Parameter der nur:
a) alle Binärdateien für eine Neuerstellung bereinigt, alle vorhandenen Quelldateien beibehält (incl. Kernel Sourcen) und
b) alle Binärdateien erstellt durch "make core" beibehält, da ich nicht jedesmal beim Compilieren ca. 50 Minuten warten will
(wurde bereits öfter gefragt, aber ich habe hier noch keine Lösung dazu gefunden)
Zur Zeit lösche ich per Hand die *.o & *.flags und die zugehörigen Dateien im Ordner ../cdk/.depts/
Irgendwass scheine ich aber noch zu übersehen.

Bonusfrage (Hat auch damit zu tun)
Nach dem Austausch des Verz: "/tuxbox-cvs/apps/tuxbox/enigma/po" (<-- Das CVS war beim letzten Download fehlerhaft.)
kann ich nun nicht mehr das darin benötigte "Makefile" erzeigen. "Makefile.in" wurde erstellt aber configure läuft
nicht durch das Verzeichnis, da überall sonst noch alles vorhanden ist. (Vermutung) Was kann ich da machen?

Ich hoffe mir kann jemand auf die Sprünge helfen. Vielen Dank ;-)
Grüße
Stephan
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

"Makefile.in" wurde erstellt aber configure läuft
nicht durch das Verzeichnis
lösch mal config.status in enigma, dadurch müsste das configure neu angestossen werden

wenn du enigma neu compilieren willst machst du

Code: Alles auswählen

rm .deps/enigma
make .deps/enigma
dann werden die Abhängigkeiten in Enigma gecheckt und die dementsprechenden Files neu kompiliert.
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Hallo StephanS,

willkommen zum Tuxboxforum, un ins besonders zu bizarre Welt des Tuxbox Buildsystems. Franz Kafka könnte sich kaum etwas schlimmeres vorstellen :wink:

Ich habe versucht, etwas von diese Schwächen hier zu addressieren, aber leider nicht (am mindestens z.Z.) alles.

Kernelbuilden geht wie Folgt: Erstmals wird die Sources runtergeladen. Danach aufgepackt, diverse Patches (von der Verzeichniss cdk/Patches) appliziert, und eine vorgefertigen Konfiguration als .config reinkopiert. (Target .deps/linuxdir). Beim Target .deps/linuxdir wird er kompiliert. Bei make [dist-]clean wird wieder der linuxkernelbaum gelöscht.

Es gibt auch eine Menge mit Pakete die entpackt-gepatcht-kompiliert-installiert-gelöscht wirt.

Danach wird marker-files in .deps abgelegt. Selektives Löschen dadrin erzwingt neukompilierung.
mit "make enigma" kann ich die Quellcodedateien compilieren, aber nur wenn nicht bereits übersetzte Dateien vorhanden sind!
kann ich nicht nachvollzeihen
mit "make distclean" kann ich die Binärdateien löschen, um sie anschließend alle neu zu erstellen...
--> es werden aber leider auch die Linux Kernel Quelldateien gelöscht incl. Verzeichnis ...cdk/linux-2.4.31 ?!?
Beim neuen Compilieren werden dann wieder die Originaldateien aus Archive entpackt. Meine Änderungen am Kernel sind verschwunden!
Yeah. Siehe oben.
Gibt es ein Skript, oder make - Parameter der nur:
a) alle Binärdateien für eine Neuerstellung bereinigt, alle vorhandenen Quelldateien beibehält (incl. Kernel Sourcen) und
b) alle Binärdateien erstellt durch "make core" beibehält, da ich nicht jedesmal beim Compilieren ca. 50 Minuten warten will
make mostlyclean in Branch newmake sollte dein Freund sein. Löscht auch nicht die entpacken-patchen-kompilieren-installieren-pakete.
Bonusfrage (Hat auch damit zu tun)
Nach dem Austausch des Verz: "/tuxbox-cvs/apps/tuxbox/enigma/po" (<-- Das CVS war beim letzten Download fehlerhaft.)
kann ich nun nicht mehr das darin benötigte "Makefile" erzeigen.
Ehrlich, ich weiss nicht genau. Meine Schätzung ist dass die Enigmaentwicklern Produkte als Quellen eingecheckt haben . Lösung: Löschen von po-Verzeichnis und danach CVS update.
mash4077
Tuxboxer
Tuxboxer
Beiträge: 4654
Registriert: Samstag 27. April 2002, 13:19

Beitrag von mash4077 »

Barf hat geschrieben:Franz Kafka könnte sich kaum etwas schlimmeres vorstellen :wink:
In der heutigen Zeit würde wohl aus Landvermesser K. ein Kernelbuilder K. werden... ;-)

Gruß
mash
StephanS
Neugieriger
Neugieriger
Beiträge: 9
Registriert: Mittwoch 9. November 2005, 18:38

Beitrag von StephanS »

Hallo,
vielen Danke für Eure Antworten.

Für den Anfang war das schon ziemlich verwirrend, wenn man bedenkt, dass man mit Hilfe von kleinen Skripten andere Skripte erstellt. Diese danach Programme erzeugen welche zum Schluss das fertige Image erstellen. Ich habe mir die Makefile's mal genauer angesehen und kann dem ganzen mitlerweile auch recht gut folgen.

Für meine DBox2 musste ich etwas am Kernel basteln. u.a. an der Datei:
$HOME/tuxbox-cvs/cdk/linux-2.4.31/arch/ppc/mm/init.c

Ich benötige nun ein anderes aufräum - Skript als "make distclean" da sonst das von Barf beschriebene löschen - entpacken-patchen-kompilieren-installieren losgeht und meine Codänderungen wieder mit dem letztem CVS Stand überschrienen werden.

Mein grundsätzliches Problem - alles neu von den Quellcodes zu übersetzen ohne dabei meine darin enthaltenen Änderungen zu verlieren besteht immernoch :(
Bei make mostlyclean tut sich absolut gar nichts...

Code: Alles auswählen

sschneider@AMDPOWER:~/tuxbox-cvs/cdk$ make mostlyclean
make: Für das Ziel »mostlyclean« ist nichts zu tun.
Für eine automatisierte Löschung aller neu zu erstellenden Daten habe ich mal folgendes Skript erstellt: (Leider zur Zeit noch fehlerhaft - siehe unten)

Code: Alles auswählen

#!/bin/sh

cd $HOME/tuxbox-cvs
rm -f `find . \( -name '*.[oas]' -o -name config.status -o -name core -o -name '.*.flags' -o -name makefile.in -o -name configure \) -type f -print`
cd $HOME/tuxbox-cvs/cdk/.deps
rm -f `find . \( -not \( -name dummy -o -name linuxdir -o -name binutils -o -name glibc -o -name gcc \) \) -type f -print`

rm -fr $HOME/dbox2/cdkflash
rm -fr $HOME/dbox2/cdkroot
rm -fr $HOME/dbox2/tftpboot

cd $HOME/tuxbox-cvs/cdk


rm -rf binutils-2.15.91.0.2 gcc-3.4.4 glibc-2.3.5 gcc-3.4.4 uClibc-0.9.11 busybox-1.01 vsftpd-1.2.2 module-init-tools-3.1 modutils-2.4.26 netkit-telnet-0.17 portmap-5 procps-010114 udev-030 watchdog-5.2.4.orig mrouted-3.9-beta3.orig boost_1_32_0 commoncpp2-1.0.13 openssl-0.9.7e curl-7.10.1 DirectFB DFB++-0.9.22 ++DFB libdvb-0.5.5 libdvbpsi-0.1.3 expat-1.95.6 libffi-1.20 freetype-2.1.4 fribidi-0.10.4 libid3tag-0.15.0b gmp-4.1.2 libmad-0.15.0b ncurses-5.3 jpeg-6b libungif-4.1.3 libpcap-0.7.2 libpng-1.2.8 readline-4.3 SDL-1.2.6 libsigc++-1.2.5 tremor-20040525 libxml2-2.4.30 zlib-1.2.2 bzip2-1.0.2 console-data-1999.08.29 console-tools-0.2.3 DirectFB-examples-0.9.22 fbset-2.1 lirc-0.6.6 lsof_4.72 openssh-3.8p1 tcpdump-3.7.1 bonnie++-1.03a vdr-1.2.6 lufs-0.9.7 dropbear-0.44 cabextract-0.5 msttf gdb-6.3 insight-6.1 ltrace-0.3.26 strace-4.5.12 nano-1.2.4 mc-4.6.1-pre1 joe-3.1 bash-3.0 kaffe-1.0.6 kaffe-1.0.6 gnuboy-1.0.3 scummvm-0.5.1 sdldoom-1.10 dvbdate-0.1 dvbstream-0.5 dvbtext-0.1 dvbtune-0.5 vls-0.4.0 bluez-hcidump-1.5 bluez-libs-2.5 bluez-pan-1.1 bluez-sdp-1.5 bluez-utils-2.4

./autogen.sh
./configure --prefix=$HOME/dbox2 --with-cvsdir=$HOME/tuxbox-cvs --enable-maintainer-mode --with-targetruleset=flash
make directories
make bootstrap
Folgende Anweisungen wollte ich dann im Verzeichnis "../tuxbox-cvs/cdk" ausführen um ein komplett neu generiertes Image zu erhalten:

Code: Alles auswählen

make boot
make enigma
make flash-enigma
make flash-squashfsenigmaimages
Nach dem Starten von "make enigma" (bzw. "make .deps/enigma") ist nun immer mit folgendem Fehler schluss:

Code: Alles auswählen

sschneider@AMDPOWER:~/tuxbox-cvs/cdk$ make .deps/enigma
( rm -rf freetype-2.1.4 || /bin/true ) && bunzip2 -cd Archive/freetype-2.1.4.tar.bz2 | TA
PE=- tar -x && ( cd freetype-2.1.4; patch -p1 < ../Patches/libfreetype.diff )
patching file builds/unix/freetype-config.in
patching file src/winfonts/winfnt.c
cd freetype-2.1.4 && \
        AR=powerpc-tuxbox-linux-gnu-ar AS=powerpc-tuxbox-linux-gnu-as CC=powerpc-tuxbox-l
inux-gnu-gcc CXX=powerpc-tuxbox-linux-gnu-g++ NM=powerpc-tuxbox-linux-gnu-nm RANLIB=power
pc-tuxbox-linux-gnu-ranlib CFLAGS="-mcpu=823 -mmultiple -mstring -meabi -pipe -Os" CXXFLA
GS="-mcpu=823 -mmultiple -mstring -meabi -pipe -Os" LDFLAGS="-s" PKG_CONFIG_PATH=/home/ss
chneider/dbox2/cdkroot/lib/pkgconfig \
        ./configure \
                --build=i686-pc-linux-gnu \
                --host=powerpc-tuxbox-linux-gnu \
                --prefix= && \
        make all && \
        rm -f /home/sschneider/dbox2/cdk/bin/freetype-config && \
        sed -e "s,^prefix=,prefix=/home/sschneider/dbox2/cdkroot," < builds/unix/freetype                    -config > /home/sschneider/dbox2/cdk/bin/freetype-config && \
        chmod 755 /home/sschneider/dbox2/cdk/bin/freetype-config && \
        make install libdir=/home/sschneider/dbox2/cdkroot/lib includedir=/home/sschneide                    r/dbox2/cdkroot/include bindir=/home/sschneider/dbox2/cdkroot/bin prefix=/home/sschneider                    /dbox2/cdkroot && powerpc-tuxbox-linux-gnu-ar cru /home/sschneider/dbox2/cdkroot/lib/libf                    reetype_pic.a objs/*.lo
make[1]: Entering directory `/home/sschneider/tuxbox-cvs/cdk/freetype-2.1.4'
cd builds/unix; ./configure --build=i686-pc-linux-gnu --host=powerpc-tuxbox-linux-gnu --p                    refix=
checking build system type... i686-pc-linux-gnu
checking host system type... powerpc-tuxbox-linux-gnu
checking target system type... powerpc-tuxbox-linux-gnu
checking for powerpc-tuxbox-linux-gnu-gcc... powerpc-tuxbox-linux-gnu-gcc
checking for C compiler default output... configure: error: C compiler cannot create exec                    utables
check `config.log' for details.
make[1]: *** [unix-def.mk] Fehler 77
make[1]: Leaving directory `/home/sschneider/tuxbox-cvs/cdk/freetype-2.1.4'
make: *** [.deps/libfreetype] Fehler 2
Hat jemand eine Erklärung, welche Dateien ich mit dem Skript zuviel gelöscht habe, bzw. noch löschen muss, damit es richtig funktioniert? :gruebel:
Die Compiler Binärdateien sind alle noch in $HOME/dbox/cdk vorhanden, obwohl es im Log so aussieht als wäre da der Fehler ?!?

Gruß
StephanS
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

hi,
StephanS hat geschrieben: Mein grundsätzliches Problem - alles neu von den Quellcodes zu übersetzen ohne dabei meine darin enthaltenen Änderungen zu verlieren besteht immernoch :(
warum fügst du deine Patches nicht zu den existierenden hinzu? dann würden nach dem Auspacken deine Änderungen automatisch durchgeführt.
rm .deps/linuxkernel;make linuxkernel müsste es doch auch noch geben?

ciao,

ChakaZulu
Npq
Senior Member
Beiträge: 1339
Registriert: Donnerstag 24. April 2003, 12:12

Beitrag von Npq »

Sicher, funktioniert auch, habe ich gestern noch benutzt.

Am besten mal mit

http://cvs.tuxbox-cvs.sourceforge.net/c ... &view=auto
http://cvs.tuxbox-cvs.sourceforge.net/c ... &view=auto

vertraut machen. Das dort beschriebene gilt auch für den Kernel.
StephanS
Neugieriger
Neugieriger
Beiträge: 9
Registriert: Mittwoch 9. November 2005, 18:38

Hat sich erledigt... Problem gefunden

Beitrag von StephanS »

Hallo,

ich habe noch etwas experimentiert und meine diversen Fehler gefunden. Ich hatte nicht damit gerechnet, dass "make core"
bereits wichtige Daten im Verzeichnis $HOME/dbox2/cdkroot/... ablegt. Die waren nach meinem löschskript verschwunden.

Dass mit der diff - Erstellung ist eine super Idee, die ich gleich umgesetzt habe. Nun bin ich zufrieden :-) Vielen Dank.

Damit ich alles auch noch in einem Jahr nachvollziehen kann, habe ich habe meine Ergebnisse zum Thema fehlerhafter DRAM zusammengefasst.
Da ich mit zunehmender Zeit sicher nicht der Einzige bleiben werde, dessen DBox2 langsam Fehler bekommt, habe ich alles
hier im Forum unter FAQs eingestellt. Vielleicht nimmt jemand nach Prüfung den Code ins CVS auf.
SIEHE: http://forum.tuxbox-cvs.sourceforge.net ... hp?t=39334

StephanS