2014-10-30 14 views
7

Ho alcuni guasti alla cabala dopo il ponteggio del mio progetto haskell usando holy-project.cabal build --ghc-options = "- fforce-recomp -Wall -fno-code" fallisce

Io non credo la questione è legata a quella del plugin (sembra più simile domanda cabala generale) perché ho potuto riprodurlo partendo da uno standard cabal init. Sarei sorpreso se il problema fosse legato a SublimeHaskell, come molte persone sembrano utilizzarlo.

Ecco il file cabala che è stato generato (ho semplificato/accorciato un po '):

(il santo progetto genera alcuni file sorgente di esempio lungo)

name:     test-holy 
version:    0.1.0.0 
build-type:    Simple 
cabal-version:   >=1.10 

library 
    exposed-modules:  TestHoly 
         , TestHoly.Swallow 
         , TestHoly.Coconut 
    build-depends:  base >=4.7 && <4.8 
    ghc-options:   -Wall 
    hs-source-dirs:  src 
    default-language:  Haskell2010 

cabal build funziona

Il seguente comando non funziona:

$ cabal clean && cabal configure && cabal build --ghc-options="-fforce-recomp -Wall -fno-code" 

cleaning... 
Resolving dependencies... 
Configuring test-non-holy2-0.1.0.0... 
Building test-non-holy2-0.1.0.0... 
Preprocessing library test-non-holy2-0.1.0.0... 
[1 of 3] Compiling TestHoly.Coconut (src/TestHoly/Coconut.hs, nothing) 
[2 of 3] Compiling TestHoly.Swallow (src/TestHoly/Swallow.hs, nothing) 
[3 of 3] Compiling TestHoly   (src/TestHoly.hs, nothing) 
[1 of 3] Compiling TestHoly.Coconut (src/TestHoly/Coconut.hs, nothing) 
[2 of 3] Compiling TestHoly.Swallow (src/TestHoly/Swallow.hs, nothing) 
[3 of 3] Compiling TestHoly   (src/TestHoly.hs, nothing) 
ar: dist/build/TestHoly.o: No such file or directory 
ar: dist/build/TestHoly/Swallow.o: No such file or directory 
ar: dist/build/TestHoly/Coconut.o: No such file or directory 

Da quanto ho capito, a causa del flag -fno-code (omissione della generazione del codice) non vengono generati file oggetto, quindi il linker non riesce. È previsto? O il linker non dovrebbe essere stato chiamato?

Perché sto eseguendo quel comando di cabala?

Come ho detto prima, sto usando SublimeText per modificare il mio progetto. Non riesce il progetto-santa generato il file cabala con il seguente messaggio:

Build FAILED 

REMAINING STDERR: 

Warning: the following files would be used as linker inputs, but linking is not being done: dist/build/TestHoly.dyn_o dist/build/TestHoly/Swallow.dyn_o dist/build/TestHoly/Coconut.dyn_o 
ghc: no input files 
Usage: For basic information, try the `--help' option. 

Attraverso la discussione sul SublimeHaskell#158 ho seguito il suggerimento di NH2 per eseguire questo comando cabala direttamente (perché è quello usato da SublimeHaskell).

Sarei grato se qualcuno possa far luce su questo!

Versione informazioni

$ cabal --version 
cabal-install version 1.18.0.5 
using version 1.18.1.4 of the Cabal library 

$ ghc --version 
The Glorious Glasgow Haskell Compilation System, version 7.8.3 

$ system_profiler SPSoftwareDataType 
Software: 

    System Software Overview: 

     System Version: OS X 10.10 (14A389) 
     Kernel Version: Darwin 14.0.0 
+0

funziona se si passa il flag '-c' a GHC? –

+1

'cabal build --ghc-options =" ​​- c -fforce-recomp -Wall -fno-code "' dà lo stesso problema. Ho controllato passando '--verbose' a cabal e il flag è passato nel comando ghc:'/usr/bin/ghc --make -fbuilding-cabal-package ... -Wall -c -fforce-recomp - Wall -fno-code' – dvekeman

+0

Puoi provare ad aggiungere '-fwrite-interface'? –

risposta

0

Questo è un problema noto in cabala.

Vedi https://github.com/haskell/cabal/issues/1176

Se non si passa -fforce-recomp si potrebbe essere ok per il controllo incrementale e colpire solo l'errore quando si aveva bisogno di fare una generazione pulita.

Ma in mancanza, il cabala semplicemente non sa cosa fare quando GHC realtà non compilare quasi niente ...