2010-06-30 12 views
8

E perché? Esiste un processo di bootstrap e compila il vero processo del compilatore, ma quale parte consuma più tempo?Perché il pacchetto Macports di GHC impiega così tanto tempo per essere compilato?

+4

Sai che puoi scaricare un compilatore precompilato e un set di librerie per OS X? http://hackage.haskell.org/platform/mac.html –

+0

Capisco che ci sono problemi con l'interpolazione tra la versione pre-build e Macports. – hampurter

+0

OK, non ho bisogno di nulla relativo a Haskell da Macport. L'installatore della piattaforma e la Cabala sono stati sufficienti. –

risposta

2

Alcuni processi di compilazione richiedono un po 'di tempo e la quantità di tempo dipende fortemente dalla velocità della CPU e da quanto tempo di processore può essere dedicato alla build.

Se si è preoccupati che possa essere sospeso a un certo punto, eseguire install con il flag -v per ottenere un output più descrittivo relativo al processo di compilazione. Il comando sarebbe quindi qualcosa del tipo:

sudo port -v install [portfile] 
+1

Oltre a quanto è grande e complesso il progetto, che tipo di disco rigido utilizza la scatola, ecc. – NotMe

+0

A destra - Mi stavo abbastanza generale, ma naturalmente la dimensione del progetto, il numero di file, l'utilità di compilazione/compilazione, il numero di dipendenze, la velocità di lettura/scrittura, ecc., contribuiscono al tempo richiesto. – nearlymonolith

3

Può volerci un po '. Quando l'ho compilato sul mio iBook G4, ci sono volute 7 ore. Anche su un MacBook Pro con molta RAM e un processore veloce, possono essere necessarie 2-3 ore.

4

Edificio GHC è noto per essere utilizzato per sempre. Ho sentito storie dell'orrore a proposito di prendere più di 8 ore per una build da sorgente. Da quello che ho capito, è principalmente dovuto al fatto che la build predefinita di GHC tenta di fare enormi quantità di ottimizzazione al fine di accelerare le proprie prestazioni di runtime. Anche con un sistema parzialmente prebuilt (che è quello che ritengo che Macports fornisce) questo processo può richiedere ancora un po 'a causa di tutti i collegamenti.

EDIT: Vedere il seguente http://hackage.haskell.org/trac/ghc/wiki/Building/Using#HowtomakeGHCbuildquickly

+0

Questa è la risposta corretta: GHC richiede più tempo per compilare qualsiasi software che conosca. L'ho costruito per oltre 8 ore sul mio i3. – Mikhail

9

Dal punto di vista di Gentoo:

In Gentoo, tutto viene compilato. Quello che facciamo per GHC è che noi sviluppatori (inclusi sviluppatori non ufficiali come me) compili una nuova versione di GHC da una versione precedente per creare una versione di bootstrap binario, quindi la impacchetta e lascia che gli utenti usino quella per compilare una nuova versione.

Dalla memoria, la compilazione del file binario può richiedere più del doppio (occorrono circa 45 minuti per utilizzare il binario per compilare una nuova versione sul mio laptop). Ci sono alcune differenze (la documentazione è costruita e spedita con il binario piuttosto che ogni utente che la costruisce da sé) ma nessuna che io possa vedere per spiegare una così grande differenza di tempo. L'ebuild effettivo utilizzato per compilare sia il binario che gli utenti finali può essere trovato qui (abilitando il flag ghcbootstrap significa che crea un binario, abilitando il flag binario significa che gli utenti installano e usano il binario precompilato invece di costruire GHC): http://code.haskell.org/gentoo/gentoo-haskell/dev-lang/ghc/ghc-6.12.3.ebuild

Come tale, la mia ipotesi è che è il processo di avvio iniziale che impiega così tanto tempo se Macports sta effettivamente costruendo un binario iniziale di avvio (specialmente se lo fa dall'ultima versione solo C e si avvia automaticamente alla versione che in realtà vuole installare).

+0

Questa è l'unica risposta che almeno tenta di rispondere alla domanda. –

Problemi correlati