2010-06-30 10 views
8

Und warum? Es gibt einen Bootstrap-Prozess und kompiliert den echten Compiler-Prozess, aber welcher Teil verbraucht am meisten Zeit?Warum dauert das Kompilieren des Macports-Pakets von GHC so lange?

+4

Sie wissen, dass Sie einen vorgefertigten Compiler und eine Reihe von Bibliotheken für OS X herunterladen können? http://hackage.haskell.org/platform/mac.html –

+0

Ich verstehe, dass es Probleme mit der Interop zwischen den vorgefertigten Versionen und Macports gibt. – hampurter

+0

OK, ich habe nichts Haskell-bezogen von Macports benötigt. Der Plattform-Installer und Cabal haben gereicht. –

Antwort

2

Einige Build-Prozesse brauchen eine Weile, und die Zeit hängt stark von der Geschwindigkeit Ihrer CPU und davon ab, wie viel Prozessorzeit für den Build verwendet werden kann.

Wenn Sie befürchten, dass es an einem bestimmten Punkt hängen bleibt, führen Sie install mit dem Flag -v aus, um eine aussagekräftigere Ausgabe zum Buildprozess zu erhalten. Der Befehl wäre so etwas wie:

sudo port -v install [portfile] 
+1

Ebenso wie groß und komplex das Projekt ist, welche Art von Festplatte die Box verwendet, etc. – NotMe

+0

Richtig - ich war ganz allgemein, aber natürlich die Größe des Projekts, Anzahl der Dateien, welches Compiler/Build-Dienstprogramm verwendet wird, Anzahl der Abhängigkeiten, Lese-/Schreibgeschwindigkeit usw. tragen alle zu der benötigten Zeit bei. – nearlymonolith

3

Es kann eine Weile dauern. Als ich es auf meinem iBook G4 kompilierte, dauerte es bis zu 7 Stunden. Selbst auf einem MacBook Pro mit viel RAM und einem schnellen Prozessor kann es 2-3 Stunden dauern.

4

Der Bau von GHC ist berüchtigt dafür, dass es ewig dauert. Ich habe Horrorgeschichten darüber gehört, die mehr als 8 Stunden in Anspruch nehmen, um von einem Quellcode zu kommen. Soweit ich weiß, ist dies hauptsächlich auf die Tatsache zurückzuführen, dass der Standard-Build von GHC versucht, große Mengen an Optimierung vorzunehmen, um die eigene Laufzeitleistung zu beschleunigen. Selbst mit einem teilweise vorgefertigten System (was ich glaube, Macports bietet) kann dieser Prozess wegen der ganzen Verlinkung noch eine Weile dauern.

EDIT: Siehe folgende http://hackage.haskell.org/trac/ghc/wiki/Building/Using#HowtomakeGHCbuildquickly

+0

Dies ist die richtige Antwort: GHC, die länger dauert, um dann jede Software zu kompilieren, die ich kenne. Ich habe es über 8 Stunden auf meiner i3 gebaut. – Mikhail

9

Aus Sicht Gentoo:

In Gentoo, alles kompiliert wird. Was wir für GHC tun, ist, dass wir Entwickler (einschließlich inoffizieller Entwickler wie ich) eine neue Version von GHC von einem älteren kompilieren, um eine binäre Bootstrapping-Version zu erstellen, und diese dann verpacken, damit Benutzer eine neue Version kompilieren können.

Aus dem Speicher kann das Kompilieren der Binärdatei mehr als doppelt so lange dauern (dauert etwa 45 Minuten, um die Binärdatei zu verwenden, um eine neue Version auf meinem Laptop zu kompilieren). Es gibt einige Unterschiede (die Dokumentation wird mit dem Binärcode erstellt und ausgeliefert, anstatt dass jeder Benutzer sie selbst erstellt), aber keine, die ich sehen kann, um einen so großen Zeitunterschied zu berücksichtigen. Das eigentliche Ebuild, das sowohl für die Binärdatei als auch für die Endbenutzer verwendet wird, kann hier gefunden werden (das ghcbootstrap-Flag bedeutet, dass es eine Binärdatei erstellt, dh, die Benutzer installieren und verwenden die vordefinierte Binärdatei, anstatt GHC selbst zu erstellen): http://code.haskell.org/gentoo/gentoo-haskell/dev-lang/ghc/ghc-6.12.3.ebuild

Daher ist meine Vermutung, dass es der erste Bootstrapping-Prozess ist, der so lange dauert, wenn Macports in der Tat eine anfängliche Bootstrapping-Binärdatei erstellt (besonders wenn es von der letzten C-only-Version und Bootstrapping bis zu der Version Sie tut möchte eigentlich installieren).

+0

Dies ist die einzige Antwort, die zumindest versucht, die Frage zu beantworten. –