newmake & Customization

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
Lostech
Interessierter
Interessierter
Beiträge: 54
Registriert: Freitag 20. September 2002, 08:41

newmake & Customization

Beitrag von Lostech »

Das Image bauen mit newmake klappt ja bei mir bis jetzt super (von den bad magic es abgesehen - aber das hat ja nix mit newmake zu tun).

Jetzt wollte ich zum nächsten Schritt übergehen und die Images über Customization weiter anpassen.
Die Anpassung der .version funktioniert auch bei mir, aber wennn ich irgend was anderes anpassen will, wie z.B. eigene neutrino.conf, bouquets.xml, services.xml einzubauen, dann funktinieren (zumindest bei mir) die Customization Skripte nicht.

Es macht den Eindruck, daß diese Skripte gar nicht während make aufgerufen werden, denn wenn ich sie manuell außerhalb des make Prozesses aufrufe funktionieren die Skripte.
Mit configure hab ich auch das richtige customdir (--with-customizationsdir) angegeben und bei der .version Sache klappt das auch.

Meine Frage ist jetzt, ob die Konvention zur Namensgebung der Custom Skripte noch beibehalten wurde.

dietmarw hatte glaube ich hier mal folgende Möglichkeiten zusammen gestellt:

Code: Alles auswählen

root-local.sh
root-cramfs-local.sh
root-enigma-cramfs-local.sh
root-enigma-cramfs-p-local.sh
root-enigma-jffs2-local.sh
root-enigma-jffs2-p-local.sh
root-enigma-squashfs-local.sh
root-enigma-squashfs-p-local.sh
root-jffs2-local.sh
root-neutrino-cramfs-local.sh
root-neutrino-cramfs-p-local.sh
root-neutrino-jffs2-local.sh
root-neutrino-jffs2-p-local.sh
root-neutrino-squashfs-local.sh
root-neutrino-squashfs-p-local.sh
root-squashfs-local.sh
var-enigma-local.sh
var-neutrino-local.sh 
Werden diese Skriptnamen aktuell noch unterstützt bzw. übersehe ich irgendwas?


Lostech
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Beitrag von dietmarw »

die ...-p... sind vor einiger zeit weggefallen..
Lostech
Interessierter
Interessierter
Beiträge: 54
Registriert: Freitag 20. September 2002, 08:41

Beitrag von Lostech »

Das habe ich gelesen und daher nutze ich die *-p auch nicht, aber selbst root-local.sh funktiniert aus irgendeinem Grund nicht bei mir.
Schreibe ich testweise die Funktionen, die ich in root-local.sh verwende, z.B. in das funktionierende flash-version-local.sh, werden die Funktionen auch richtig ausgeführt. Deswegen bin ich mir ja auch sicher, daß es daran liegen muß, daß während make z.B. root-local.sh erst gar nicht aufgerufen wird.
Nur fällt mir jetzt kein Grund ein warum das so sein sollte. :gruebel:


Lostech
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Beitrag von dietmarw »

wenn das script für version ausgeführt wird, dann sollten sie ja im richtigen pfad (cdk) liegen..

hmm..

testweise mal ein "touch scriptname.test" an den anfang des scripts gestellt?
Lostech
Interessierter
Interessierter
Beiträge: 54
Registriert: Freitag 20. September 2002, 08:41

Beitrag von Lostech »

Ich hab das Skript im Ordner, den ich mit --with-customizationsdir= bei configure angegeben hab. Mit version-local.sh (bzw. flash-version-local.sh) klappt ja auch alles.
Auch direkt im CDK Ordner, werden ein solche Custom Skript nicht ausgeführt

"touch" hab ich auch mal direkt vor "make" ausprobiert. das Ergebnis war aber das gleiche. Rechte (chmod 755) sollten auch stimmen.
Vor dem make flash-all-all-all (bzw. make flash-neutrino-all-all) habe ich auch schon ein make flash-clean gesetzt.

Ich hab da noch eine Vermutung. Ich werd mal versuchen ein paar im Custom Skript ein paar zusätzliche mkdir es einzusetzen, bevor ich die Settings Dateien in den jeweiligen Zweig rüberkopiere.
Vielleicht wird ja das Skript zu früh aufgerufen, wenn die Ordnerstruktur unter /dbox2/cdkflash noch gar nicht erzeugt ist.


Lostech
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Beitrag von dietmarw »

ich mach in den scripten immer

Code: Alles auswählen

#
{
...
...
} > scriptname.log 2>&1
dann seh ich evtl. scriptfehler
Lostech
Interessierter
Interessierter
Beiträge: 54
Registriert: Freitag 20. September 2002, 08:41

Beitrag von Lostech »

Danke für deine Hilfe!

Es hat wirklich daran gelegen, das die Ordner nicht da waren durch das vorangegange make flash-clean in meinem Hauptskript.
Wenn ich die Skripte manuell gestartet hatte waren ja schon immer Ordner da, deswegen gings dann auch.


Lostech
Mac23
Einsteiger
Einsteiger
Beiträge: 127
Registriert: Donnerstag 23. Oktober 2003, 20:50

Beitrag von Mac23 »

Hallo,

das Titel stimmt eigentlich, also mach ich hier gleich mal weiter.

Ich teste gerade ein wenig newmake und habe bei der Customization folgende Probleme:

Wenn ich in root-local.sh z.B. /etc/init.d/rcS ändere und danach make flash-neutrino-squashfs-all mache, ist im Image plötzlich wieder die "originale" rcS wieder da.

Muss ich die rcS zusätzlich noch(mals) in root-neutrino-local.sh ändern damit es klappt? (warum?) Aus root, root-neutrino und var entsteht ja dann letztendlich das Image.

Etwas irreführend finde in diesen Bezug die Customization-Beispiele. Als ich z.B. auch in root-local.sh (weil es ja GUI unabhängig ist) /var/etc/auto.net geändert habe, ist diese dann auch wieder in cdkflash/var-neutrino durch die originale ersetzt worden. (im Beispiel wird ja auch etwas in var verändert)

Vielleicht kann mir ja jemand erklären, welche Dateien ich für welche Änderung nehmen sollte, damit die Änderungen zum Schluss auch Bestand haben. Danke!

Gruss
Marcus
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Mac23 hat geschrieben:Wenn ich in root-local.sh z.B. /etc/init.d/rcS ändere und danach make flash-neutrino-squashfs-all mache, ist im Image plötzlich wieder die "originale" rcS wieder da.
Soisses. Der Grund ist das rcS und rcS.insmod beide erzeugt aus rcS.m4 wird (um sie, in unterschied zu CVS-HEAD gemeinsam zu verwalten). Du muss also, falls erwünscht, in rcS.m4 ändern. Oder in einem customization überschreiben.

Scheiß CVS, der keine "Antifiles" in Branches zuläßt! :evil:
Etwas irreführend finde in diesen Bezug die Customization-Beispiele. Als ich z.B. auch in root-local.sh (weil es ja GUI unabhängig ist) /var/etc/auto.net geändert habe, ist diese dann auch wieder in cdkflash/var-neutrino durch die originale ersetzt worden. (im Beispiel wird ja auch etwas in var verändert)
Neulich ist automount in newmake per Default aktiviert, und [/var]etc/auto.net wird vom make in Directory cdk/root/etc installiert. Es ist sichelich so, dass es Beispiele existiert, dass nach diese Änderung nicht mehr sinnvoll ist. Danke für den Hinweis.
Vielleicht kann mir ja jemand erklären, welche Dateien ich für welche Änderung nehmen sollte, damit die Änderungen zum Schluss auch Bestand haben. Danke!
Eine "Idiotenregel" gibt es nicht; du muss in etwa verstehen was "normalerweise" passiert bevor du versuchst es zu ändern. Dazu Doku auf meine HP, und make/*.mk bei Bedarf lesen.
Mac23
Einsteiger
Einsteiger
Beiträge: 127
Registriert: Donnerstag 23. Oktober 2003, 20:50

Beitrag von Mac23 »

Eine "Idiotenregel" gibt es nicht; du muss in etwa verstehen was "normalerweise" passiert bevor du versuchst es zu ändern. Dazu Doku auf meine HP, und make/*.mk bei Bedarf lesen.
Ok, ich bin jetzt etwas weiter - falls es falsch ist bitte korrigieren ;) - die Doku war heute längere Zeit schon meine Standardlektüre:

Wichtig ist zu wissen, dass man die Hierarchie der customize-Dateien kennt. Angenommen ich baue mir ein neutrino-squashfs - dabei wird zuerst folgendes gebaut:
- root
- root-neutrino
- root-neutrino-squashfs
- var-neutrino

Mein Problem: ich hatte Änderungen in den ersten beiden custom-Dateien gemacht (root-local.sh und root-neutrino-local.sh) - diese sind/könnten überschrieben werden von den letzten beiden Builds. Also sollte man immer von "unten nach oben cutomizen". Ich hab jetzt alles was readonly ist in root-neutrino-squashfs-local.sh und alles was rw ist in var-neutrino-local.sh - klappt! (auch mit rcS :-))

Ein paar Fragen hab ich aber noch:

- ist es möglich ein Ziel wieder aus dem cdkflash zu nehmen (z.B. wird lufsd immer mit gebaut, was ich aber nicht benötige)?
Gibt es da sowas wie make clean-flash-lufsd etc oder ist die Standardvorgehensweise diese, dass man alles was zu lufs gehört in einer custom-Datei manuell aus dem cdkflash löscht?!

- jetzt der quasi entgegengesetzte Fall. Ich würde gerne den MidnightCommander mit ins flash aufnehmen - hierbei gibt es keine Regel make flash-mc etc. - müssen hier ebenfalls die customize-Dateien bemüht werden und manuell kopiert werden (von cdkroot nach cdkflash)?

- ist es normal, dass man erst ein komplettes Image bauen muss (*.img), danach mit make ein anderes Tool (z.B. dropbear) mit make ins flash aufnimmt und das Image nochmal erstellen muss? D.h. gibt es einen make Befehl der aus dem cdkflash nur die Images baut?
(z.B. make flash-root-neutrino-squashfs; make flash-irgendeintool; make flash-?images?)

- letzte Frage :roll: - gibt es ein Ziel, welches das cdkroot "cleaned" - in dem Sinne, dass man wieder ein jungfäuliches YADD bauen kann? Lt. Homepage ist es einfach ein "clean", oder?

Das wird ja fast ne halbe FAQ...trotzdem Danke für Antworten!

Gruss
Marcus
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Beitrag von Barf »

Mac23 hat geschrieben:- ist es möglich ein Ziel wieder aus dem cdkflash zu nehmen (z.B. wird lufsd immer mit gebaut, was ich aber nicht benötige)?
Gibt es da sowas wie make clean-flash-lufsd etc oder ist die Standardvorgehensweise diese, dass man alles was zu lufs gehört in einer custom-Datei manuell aus dem cdkflash löscht?!
Es gibt z.Z. keine saubere Möglichkeit, z.B. lufsd rauszunehmen. Eine Zeile in make/flashroot.mk auskommentieren?

Leider blicke ich z.Z. nicht ganz durch, wofür lufsd gebraucht wird, und falls es möglich wäre, die Komponente optional zu machen.

- jetzt der quasi entgegengesetzte Fall. Ich würde gerne den MidnightCommander mit ins flash aufnehmen - hierbei gibt es keine Regel make flash-mc etc. - müssen hier ebenfalls die customize-Dateien bemüht werden und manuell kopiert werden (von cdkroot nach cdkflash)?
Dann schreibe die Regeln, und checke es ein in CVS. Solange es sich um optionale Komponente handel, müssen mann sich ja nicht einmal über Qualität und Sinnvollheit sich unterhalten :wink:

- ist es normal, dass man erst ein komplettes Image bauen muss (*.img), danach mit make ein anderes Tool (z.B. dropbear) mit make ins flash aufnimmt und das Image nochmal erstellen muss?
Bin nicht sicher falls ich die Frage verstehe. Du kannst z.B.

make $(flashprefix)/root
make flash-dropbear
make flash-neutrino-squashfs-2x

machen um dropbear in image zu bekommen ohne Customizeskripte schreiben zu müssen.
D.h. gibt es einen make Befehl der aus dem cdkflash nur die Images baut?
(z.B. make flash-root-neutrino-squashfs; make flash-irgendeintool; make flash-?images?)
(Make kennt "Targets", "Befehle" ist was anders.) Ein Target die ein Imagefile erstellt macht dies, solange die Verzeichnisse in cdkflash up-to-date sind.
- letzte Frage :roll: - gibt es ein Ziel, welches das cdkroot "cleaned" - in dem Sinne, dass man wieder ein jungfäuliches YADD bauen kann? Lt. Homepage ist es einfach ein "clean", oder?
Streng genommen, nein gibt es nicht. (Wegen Eigenheiten in der glibc-Erstellung.) "mostlyclean" ist in der Regel ausreichend.
Mac23
Einsteiger
Einsteiger
Beiträge: 127
Registriert: Donnerstag 23. Oktober 2003, 20:50

Beitrag von Mac23 »

Danke für die Antworten! - Umstieg von YADI-Script auf newmake vollzogen :)

Für die zusätzlichen Tools nutze ich nun die root-local.sh, wo entweder ein make flash-xxx steht oder ein make xxx und ein cp.
Wenn man ersteinmal alles benötigte drin stehen hat, reicht es aus. Natürlich wäre für jedes normale Target auch ein flash-target schön.
Wenn ich da was im Zuge meines Imagebaues ändern sollte, werd ich es hier schicken - CVS Zugriff (schreibend) habe ich nicht.

Schön finde ich z.B. die busybox.config.m4 - endlich zentral alles in einer Datei (yadd/flash), so dass man nicht mehr mehrere Dateien ändern muss, wenn man etwas hinzufügen möchte.

Danke nochmal - mal sehen wie sich newmake entwickelt - man liest recht viel Positives :D