- Mitglied seit
- 10 Mai 2006
- Beiträge
- 15,148
- Punkte für Reaktionen
- 1,705
- Punkte
- 113
EDIT:
Lösung war (bei mir) dann doch sehr einfach: Aus irgendeinem (mir unerfindlichen) Grund war die Einstellung "FREETZ_CHECK_CHANGED" in der verwendeten .config nicht gesetzt und es handelte sich natürlich gerade nicht um eine "von Grund auf neue Installation" (sonst gäbe es das Versionsproblem ja ohnehin nicht). Mit einer frischen .config (oder eben manueller Kontrolle) sollte sich das "Problem" dann auch bei jedem anderen beheben lassen, die gesamten "Build system options" sind aber erst ab "Advanced" bei "user experience level" (EDIT: nope, heißt "competence level", gerade nachgelesen) sichtbar in der Konfiguration.
-
Nur für den Fall, daß es anderen ebenso ergeht, ein Hinweis meinerseits:
Ich habe auf der Basis eines älteren Build-Systems (Trunk-Version irgendwo aus dem Juli) zu Testzwecken ein neues Image erzeugen wollen, nachdem ich die Quellen auf CS 13439 aktualisiert hatte:
Zwischenzeitlich sind ja einige Änderungen und auch einige neue Versionen für diverse Pakete hinzugekommen.
Dabei haben sich auch die Dateinamen einiger Libraries geändert und - solange man nicht für die betreffenden Pakete explizit (oder generell für alle) ein "distclean" ausführt - beim Zusammenstellen des Images werden alte und neue Versionen parallel aus "packages" nach "build/modified/filesystem" kopiert. Bei der Verarbeitung für "externals" werden dann aber nur die aktuellen Versionen der Libraries nach "build/modified/externals" verschoben, die älteren Versionen bleiben unter "build/modified/filesystem/usr/lib/freetz" stehen und blähen das root-SquashFS entsprechend auf. Bei mir waren das immerhin 6 recht große Bibliotheken (u.a. libgnutls/libgcrypt/libcurl) mit einer unkomprimierten Größe von ca. 4 MB, was im Ergebnis ein Image ergab, das um 1,7 MB zu groß war.
Es empfiehlt sich also, entweder noch einmal einen "Kontrollblick" in das Verzeichnis usr/lib/freetz eines fertigen Images zu werfen, ob dort noch irgendwelche "Leichen" liegen oder die Changesets aufmerksam zu verfolgen, damit man weiß, welche Pakete ggf. ein "distclean" benötigen oder gleich in den sauren Apfel zu beißen und nach einem "make distclean" einfach alles neu zu übersetzen.
Das Problem dieser Abhängigkeiten ist zwar generell bekannt, aber so mancher verwendet eben sein Build-System nur in recht großen Abständen und wenn man nicht (so wie in meinem Falle) die Grenzen seines Images systematisch bis zum letzten Byte ausreizen will, fallen solche älteren Artefakte vielleicht gar nicht auf beim Build und man ist dann eher versucht, durch zusätzliche Remove-Patches den benötigten Platz zu schaffen, obwohl es eigentlich gar nicht notwendig wäre. Das Problem betrifft in aller Regel auch nur die Libraries, da nur diese mit den Versionsnummern im Dateinamen arbeiten ... wurden also viele Libraries aktualisiert, ist die "Gefahr" solcher Überbleibsel besonders hoch. Man sieht es auch dem Buildprozess (bzw. dessen Ausgabe) nicht an (egal wie "geschwätzig" man es haben will), daß diese Reste existieren ... jedenfalls solange nicht, wie das resultierende SquashFS-Dateisystem die "Grenzen" des verfügbaren Speichers nicht überschreitet.
Lösung war (bei mir) dann doch sehr einfach: Aus irgendeinem (mir unerfindlichen) Grund war die Einstellung "FREETZ_CHECK_CHANGED" in der verwendeten .config nicht gesetzt und es handelte sich natürlich gerade nicht um eine "von Grund auf neue Installation" (sonst gäbe es das Versionsproblem ja ohnehin nicht). Mit einer frischen .config (oder eben manueller Kontrolle) sollte sich das "Problem" dann auch bei jedem anderen beheben lassen, die gesamten "Build system options" sind aber erst ab "Advanced" bei "user experience level" (EDIT: nope, heißt "competence level", gerade nachgelesen) sichtbar in der Konfiguration.
-
Nur für den Fall, daß es anderen ebenso ergeht, ein Hinweis meinerseits:
Ich habe auf der Basis eines älteren Build-Systems (Trunk-Version irgendwo aus dem Juli) zu Testzwecken ein neues Image erzeugen wollen, nachdem ich die Quellen auf CS 13439 aktualisiert hatte:
Code:
~/trunk_7390$ svn info
Path: .
Working Copy Root Path: /home/localuser/trunk_7390
URL: http://svn.freetz.org/trunk
Relative URL: ^/trunk
Repository Root: http://svn.freetz.org
Repository UUID: 149334a1-2f27-0410-a3b9-fc62619ac1e6
Revision: 13439
Node Kind: directory
Schedule: normal
Last Changed Author: er13
Last Changed Rev: 13439
Last Changed Date: 2015-10-24 22:26:16 +0200 (Sat, 24 Oct 2015)
Dabei haben sich auch die Dateinamen einiger Libraries geändert und - solange man nicht für die betreffenden Pakete explizit (oder generell für alle) ein "distclean" ausführt - beim Zusammenstellen des Images werden alte und neue Versionen parallel aus "packages" nach "build/modified/filesystem" kopiert. Bei der Verarbeitung für "externals" werden dann aber nur die aktuellen Versionen der Libraries nach "build/modified/externals" verschoben, die älteren Versionen bleiben unter "build/modified/filesystem/usr/lib/freetz" stehen und blähen das root-SquashFS entsprechend auf. Bei mir waren das immerhin 6 recht große Bibliotheken (u.a. libgnutls/libgcrypt/libcurl) mit einer unkomprimierten Größe von ca. 4 MB, was im Ergebnis ein Image ergab, das um 1,7 MB zu groß war.
Es empfiehlt sich also, entweder noch einmal einen "Kontrollblick" in das Verzeichnis usr/lib/freetz eines fertigen Images zu werfen, ob dort noch irgendwelche "Leichen" liegen oder die Changesets aufmerksam zu verfolgen, damit man weiß, welche Pakete ggf. ein "distclean" benötigen oder gleich in den sauren Apfel zu beißen und nach einem "make distclean" einfach alles neu zu übersetzen.
Das Problem dieser Abhängigkeiten ist zwar generell bekannt, aber so mancher verwendet eben sein Build-System nur in recht großen Abständen und wenn man nicht (so wie in meinem Falle) die Grenzen seines Images systematisch bis zum letzten Byte ausreizen will, fallen solche älteren Artefakte vielleicht gar nicht auf beim Build und man ist dann eher versucht, durch zusätzliche Remove-Patches den benötigten Platz zu schaffen, obwohl es eigentlich gar nicht notwendig wäre. Das Problem betrifft in aller Regel auch nur die Libraries, da nur diese mit den Versionsnummern im Dateinamen arbeiten ... wurden also viele Libraries aktualisiert, ist die "Gefahr" solcher Überbleibsel besonders hoch. Man sieht es auch dem Buildprozess (bzw. dessen Ausgabe) nicht an (egal wie "geschwätzig" man es haben will), daß diese Reste existieren ... jedenfalls solange nicht, wie das resultierende SquashFS-Dateisystem die "Grenzen" des verfügbaren Speichers nicht überschreitet.
Zuletzt bearbeitet: