Tag,
On Thursday, 11. April 2002 19:04, Reinhard Foerster wrote:
Wobei ich die Realisierung durch pentium-builder doof finde. Solche Optimierungen sollten von den Makefiles der Pakete gemacht werden statt durch einen gcc-Wrapper. Irgendwann haben wir sonst den WrapperWrapperWrapperWrapper zu gcc und keiner ahnt mehr, wie der gcc letzendlich wirklich aufgerufen wird.
Bei mir ist das ja schon so, wenn ich den color-gcc verwende (z.B. immer dann wenn ich viel mit STL zu tun hab, weil jede Fehlermeldung dort gleich 5 Terminalseiten belegt wegen der vielen Templates). Und dann ist beim gcc wiederum wählbar, ob der entweder auf gcc-2.95 oder gcc-3.0 zeigt (beim g++ dasselbe). Also eine Kette: gcc: Symlink auf colorgcc colorgcc: Wrapperskript für builder-cc builder-cc: Wrapperskript auf gcc(-2.95,3.0).real Der colorgcc muß aber angepasst werden, einfach die Hash-Werte für die Compilernamen ändern, sonst ruft er wieder 'gcc' (sich selbst) auf...
Eine andere Realisierung dürfte schwer sein, da es ja transparent für alle Beteiligten sein muß. Es gibt noch mehr solche Situationen, z.B. Crosscompiler, und /usr/bin/cc ist ja auch nochmal ein Symlink.
Ist bei Debian was in Arbeit, um die Optimierung auf bestimmte CPUs sauber zu lösen? Man könnte beispielweise festlegen, daß der Build-Prozess $DEBIAN_BUILDARCH auswerten soll.
Also wenn ich meine Pakete baue, dann hab ich das konsequent auf i386 gestellt weil ich sonst böse Mails bekommen würde :)
Bisher sind ja die wenigsten Pakete optimiert (z.B. kernel-image-xxx für xxx Element aus {386,586,686,k6,k7}), wobei man das Problem hat daß die Kombination von Features nur eingeschränkt möglich ist. Alles andere würde zu einer Paketexplosion führen. Andere Pakete bekommt man also nur vom Source optimiert, und dafür ist configure zuständig, was ja einen String wie i586-pc-gnu-linux liefert was dann ausgewertet wird. Ein Beispiel dafür ist aRts von KDE (Werbung, Werbung), wo MMX-Optimierung zur Konfigurationszeit bestimmt wird.
Es gibt ja Überlegungen für Debian, sowas wie BSD-Ports über apt-get bereitzustellen. Beispielsweise gibt man ein apt-get source-autobuild mozilla und der holt die Quellen des Paketes und der Abhängigkeiten, kompiliert die im Hintergrund durch und schickt dann eventuell eine Mail wenn's fertig ist, so daß man nur noch apt-get install-autobuild eingeben muß und dann alles installiert wird. Oder so ähnlich ;)
Jetzt könnte man wieder diskutieren ob man jegliches Paket so optimieren muß, aber für alles was ständig aktiv ist (Kernel, glibc, X11, ...) lohnt sich sowas sicher.
Josef Spillner