2016-06-29 5 views
0

Ich betreibe stack Version 1.1.2 x86_64 hpack-0.14.1Woher kommt die Quelle des `GHC.Paths. *` -Werts?

$ stack exec which ghc 
Run from outside a project, using implicit global project config 
Using resolver: lts-5.10 from implicit global project's config file: /home/wisut/.stack/global-project/stack.yaml 
/home/wisut/.stack/programs/x86_64-linux/ghc-7.10.3/bin/ghc 

aber wenn stack ghci mit GHC.Paths verwendet, ist es der falsche Weg

$ stack ghci 
Run from outside a project, using implicit global project config 
Using resolver: lts-5.10 from implicit global project's config file: /home/wisut/.stack/global-project/stack.yaml 
Error parsing targets: The specified targets matched no packages. Perhaps you need to run 'stack init'? 
Warning: build failed, but optimistically launching GHCi anyway 
Configuring GHCi with the following packages: 
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help 
Ok, modules loaded: none. 
Prelude> GHC.Paths.ghc 
"/usr/bin/ghc-7.10.3" 

Ich bin mit Arch Linux mit ghc 8.0 zurückkehren .1 dafür gibt es keine ghc-7 avaliable außerhalb stack

[[email protected] ~]$ which ghc 
/usr/bin/ghc 
[[email protected] ~]$ ghc --version 
The Glorious Glasgow Haskell Compilation System, version 8.0.1 
[[email protected] ~]$ ls -al /usr/bin/ghc 
lrwxrwxrwx 1 root root 9 May 24 18:28 /usr/bin/ghc -> ghc-8.0.1 

Mit Blick auf GHC.P Quelle, ich habe keine Ahnung woher der Wert kommt. Ist es die ENV vars?

{-# LANGUAGE CPP #-} 

module GHC.Paths (
     ghc, ghc_pkg, libdir, docdir 
) where 

libdir, docdir, ghc, ghc_pkg :: FilePath 

libdir = GHC_PATHS_LIBDIR 
docdir = GHC_PATHS_DOCDIR 

ghc  = GHC_PATHS_GHC 
ghc_pkg = GHC_PATHS_GHC_PKG 

Laufen stack exec env hat nichts gesehen.

$ stack exec env | grep -i ghc 
Run from outside a project, using implicit global project config 
GHC_PACKAGE_PATH=/home/wisut/.stack/global-project/.stack-work/installx86_64-linux/lts-5.10/7.10.3/pkgdb:/home/wisut/.stack/snapshots/x86_64-linux/lts-5.10/7.10.3/pkgdb:/home/wisut/.stack/programs/x86_64-linux/ghc-7.10.3/lib/ghc-7.10.3/package.conf.d 
PATH=/home/wisut/.stack/global-project/.stack-work/install/x86_64-linux/lts-5.10/7.10.3/bin:/home/wisut/.stack/snapshots/x86_64-linux/lts-5.10/7.10.3/bin:/home/wisut/.stack/programs/x86_64-linux/ghc-7.10.3/bin:/home/wisut/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl 

Wie kann ich den falschen Wert korrigieren? Wie konfiguriert man stack, um GHC.Paths die richtige zu machen?

UPD Ich versuchte stack mit --no-system-ghc laufen und es machte keinen Unterschied machen. Ich habe versucht, meine ~/.cabal und ~/.stack Ordner zu entfernen. Ich musste stack setup tun, und nach stack den Compiler neu installiert es gibt mir nicht diesen falschen Pfad, aber es gibt mir keine Pfad, die Ausgabe dieses Befehls ist jetzt leer. Ich habe auch nichts besonderes in Setup.hs.

Antwort

1

Sie fast richtig ist, die GHC_ Variablen kommen CPP Definitionen von custom Setup.hs:

let buildinfo = emptyBuildInfo{ 
     cppOptions = ["-DGHC_PATHS_GHC_PKG=" ++ show c_ghc_pkg, 
         "-DGHC_PATHS_GHC=" ++ show c_ghc, 
         "-DGHC_PATHS_LIBDIR=" ++ show libdir, 
         "-DGHC_PATHS_DOCDIR=" ++ show docdir ] 
     } 

über Ihr Problem mit falschem Weg, versuchen stack --no-system-ghc ghci zu laufen. Wenn es immer noch zeigt "/usr/bin/ghc-7.10.3" für GHC Pfade, dann vermute ich, dass Sie hatte es GHC, wenn Sie ghc-paths für GHC-7.10.3 kompiliert und als stack ist recht gut in nicht Sachen Wiederaufbau, die alte Version von ghc-paths immer noch da. Ich kenne keine Möglichkeit, ein Paket in einem Snapshot neu zu erstellen, außer dass ich ~/.stack whiping und neu beginne; was könnte eine gute Idee sein. wenn Sie Ihr globales GHC-Zeug geändert haben.

Es gibt ein ähnliches Problem: Stop using system-ghc silently.

+1

Um zu zwingen, stck, um ein Paket neu aufzubauen - sehen Sie sich an: http://StackOverflow.com/a/37237777/866915 – ErikR

+0

Ich versuchte mit '--no-system-ghc' und es macht keinen Unterschied . Ich habe versucht, meine '~/.cabal' und' ~/.stack'-Ordner zu entfernen und nachdem 'stack' den Compiler neu installiert hat, gibt es mir nicht den falschen Pfad, aber es gibt mir keinen _path_, den Die Ausgabe dieses Befehls ist jetzt leer. Ich habe auch nichts besonderes in 'Setup.hs'. –