Es ist vielleicht gar nicht notwendig, das Makefile nochmal aufzurufen. Die Binaries von den vorigen Builds sind möglicherweise schon vorhanden und müssen lediglich aus dem Build- ins packages-Verzeichnis kopiert werden. Ich finde übrigens, dass diese $(PKG)_CONFIG_SUBOPTS Variable an ein paar Stellen falsch verwendet wird. Es werden nämlich zu viele menuconfig-Optionen als Makefile-Subopts deklariert. Dies führt dazu, dass das Paket öfter als eigentlich notwendig übersetzt wird (mit übersetzen sind dabei die beiden Schritte configure und make gemeint). Als Beispiel nehme man z.B. e2fsprogs, wird FREETZ_PACKAGE_E2FSPROGS_E2MAKING verstellt, so muss nichts neuübersetzt werden, die Binaries werden genauso sein wie vor dem Verstellen, denn diese Option FREETZ_PACKAGE_E2FSPROGS_E2MAKING hat rein gar keine Auswirkungen auf den Build-Prozess an sich, sie steuert lediglich was man ins Image kopieren möchte. Bei den beiden rausgeschmiessenen vnstat-Optionen ist es genauso...
Ich habe mir die Mühe gemacht, Makefiles aller Pakete anzuschauen. Meiner Meinung nach sind außer vnstat noch folgende Pakete von dem von cuma entdeckten Problem betroffen. Manche enthalten bereits die clean-Regeln, manche noch nicht:
- bird (keine clean-Regeln vorhanden)
- dosfstools (keine clean-Regeln vorhanden)
- dropbear (keine clean-Regeln vorhanden)
- e2fsprogs (keine clean-Regeln vorhanden) (edit)
- espeak (keine clean-Regeln vorhanden) !
- irssi (keine clean-Regeln vorhanden) (edit: hab' mich vertan, ist alles ok)
- lighttpd (keine clean-Regeln vorhanden) !
- mc (clean-Regeln vorhanden)
- nsftp (clean-Regeln vorhanden)
- openssh (clean-Regeln vorhanden)
- pciutils (clean-Regeln vorhanden)
- pppd (keine clean-Regeln vorhanden)
- samba (clean-Regeln vorhanden)
- sispmctl (clean-Regeln vorhanden) !
- subversion (keine clean-Regeln vorhanden)
- transmission (keine clean-Regeln vorhanden)
- usbutils (clean-Regeln vorhanden)
- vnstat (keine clean-Regeln vorhanden)
- xpdf (keine clean-Regeln vorhanden)
Bei den folgenden bin ich mir noch unsicher, muss mir diese genauer anschauen
- callmonitor
- hplip
- iptables
- sane-backends
Bei den mit Ausrufezeichen markierten Paketen meine ich noch ein anderes Problem entdeckt zu haben. Bei diesen ist es nämlich möglich, dass manche Files gar nicht ins Image kopiert werden, obwohl die entsprechenden menuconfig-Optionen gewählt sind. Beispiel: in menuconfig von lighttpd wähle man die Optionen zunächst so, dass keine lighttpd-module ins Image kopiert werden und übersetze lighttpd. Nun rufe man erneut make menuconfig auf und verstelle die Optionen. Man füge jetzt alle lighttpd-module hinzu und rufe make auf. Keins der dazu gewählten Module wird ins packages-Verzeichnis kopiert. Schuldig ist die
$($(PKG)_MODULE_TARGET_BINARY): $($(PKG)_MODULE_BINARY) Regel. Diese ist schlicht und ergreifend falsch. Es werden mehrere Dateien kopiert, dies wird jedoch von einer einzigen (mod_access.so) abhängig gemacht. Das gleiche gilt für espeak-Regel
$(ESPEAK_TARGET_BINARY): $(ESPEAK_BINARY) (nicht alle Sprachdateien werden kopiert) und für sispmctl-Regel
$($(PKG)_TARGET_BINARY): $($(PKG)_BINARY) (webinterface-Dateien werden nicht ins Image kopiert, sofern man davor sispmctl übersetzt hat, ohne webinterface ausgewählt zu haben).
Irgendwie bin ich gar nicht scharf drauf, all das anzupassen, auf der anderen Seite ist es schon ein Fehler, der Aufwand wird sich hoffentlich in Grenzen halten...
p.s. Und übrigens genau dieses Problem habe ich mit dieser neuen Lösung im vorigen Beitrag von mir vermutet.