2014-06-21 5 views
5

würde Ich mag die Eile-Compiler-Paket verwenden, um die Haskell-to-JavaScript, was zu tun:Flucht aus Kabale Hölle mit Eile, Binär- und Zip-Archiv

[email protected]:~/project$ cabal install haste-compiler 
Resolving dependencies... 
... 
Configuring zip-archive-0.2.3... 
Building zip-archive-0.2.3... 
Preprocessing library zip-archive-0.2.3... 
[1 of 1] Compiling Codec.Archive.Zip (src/Codec/Archive/Zip.hs, dist/build/Codec/Archive/Zip.o) 

src/Codec/Archive/Zip.hs:163:27: Not in scope: `decodeOrFail' 
Failed to install zip-archive-0.2.3 
cabal: Error: some packages failed to install: 
haste-compiler-0.3 depends on zip-archive-0.2.3 which failed to install. 
zip-archive-0.2.3 failed during the building phase. The exception was: 
ExitFailure 1 

ich bemerkt, dass es eine neuere Version des Zip-Archivs, das die Version von binary auf> = 0.7 brachte, die die decodeOrFail-Funktion liefert. Also habe ich versucht, die haste-compiler repo zu überprüfen und die Zip-Archiv-Version auf das neue Zip-Archiv 0.2.3.2 zu stoßen. Aber das hilft nicht:

[email protected]:~/project/haste-compiler$ cabal install 
Resolving dependencies... 
cabal: Could not resolve dependencies: 
trying: haste-compiler-0.3 (user goal) 
trying: zip-archive-0.2.3.2/installed-208... (dependency of 
haste-compiler-0.3) 
trying: ghc-7.6.3/installed-0d1... (dependency of haste-compiler-0.3) 
next goal: bin-package-db (dependency of ghc-7.6.3/installed-0d1...) 
rejecting: bin-package-db-0.0.0.0/installed-837... (conflict: zip-archive => 
binary==0.7.1.0/installed-961..., bin-package-db => 
binary==0.5.1.1/installed-5b8...) 
Dependency tree exhaustively searched. 

Ich habe auch versucht manuell Zip-Archiv installieren und binär, und tat dies alles in einer Sandbox. Ich weiß nicht, was ich tun soll - Ich möchte wirklich alle meine Javascript mit gut typisierten hakelly Güte ersetzen. Ich erlebe das gleiche Problem auf meinem macbookpro und meine Linux-Box, die beide die neueste Haskell-Plattform, ghc Version 7.6.3

Antwort

8

Ihr Abhängigkeitsbaum sieht ein bisschen wie diese ausgeführt wird:

     ┌────────────────────┐ 
      ┌─────────┤ haste─compiler─0.3 │ 
      │ depends └─────────────────┬──┘ 
      V       │ 
     ┌───────────┐      │ depends 
     │ ghc─7.6.3 │      │ 
     └─────┬─────┘      V     
      │ depends    ┌─────────────────────┐ 
      V      │ zip─archive─0.2.3.2 │ 
┌────────────────────────┐   └───────────┬─────────┘ 
│ bin─package─db─0.0.0.0 │      │ 
└───────────┬────────────┘      │ depends 
      │ depends       │ 
      V         V 
    ┌────────────────┐ conflicts with ┌────────────────┐ 
    │ binary─0.5.1.1 │<────────────────>│ binary─0.7.1.0 │ 
    └────────────────┘     └────────────────┘ 

Seit Es ist wahrscheinlich nicht machbar, dass Sie GHC neu installieren, und so wird es und alles, was darunter liegt, für uns "fixiert", wir müssen versuchen, zip-archive-0.2.3.2 und binary-0.7.1.0 zu ändern. Schauen wir uns die Zwänge der haste-compiler-0.3 aussehen:

zip-archive 

So ist es keine Version überhaupt nicht angeben. Jeder wird es tun. Wenn wir uns frühere Versionen von zip-archive ansehen, sehen wir, dass Version 0.2.2.1 die früheste Version ist, die eine Beschränkung auf binary hat, die mit der installierten binary-0.5.1.1 kompatibel ist, die ebenfalls auf Hackage aufbaut. Also hier ist, wie Sie sollte es beheben:

  1. Unregister zip-archive-0.2.3.2 und binary-0.7.1.0 in dieser Reihenfolge:

    % ghc-pkg unregister zip-archive-0.2.3.2 
    % ghc-pkg unregister binary-0.7.1.0 
    
  2. löschen diese beiden Pakete von Ihrem GHC Bibliotheksverzeichnis. Das hängt von Ihrer Installation ab, aber schauen Sie in , ~/.cabal, und ~/Library/Haskell für ein lib Verzeichnis (möglicherweise in einem Unterverzeichnis oder zwei) und sehen Sie, ob Sie die Pakete irgendwo dort finden können.

  3. Installieren haste-compiler-0.3 mit einer Einschränkung für die zip-archive Version:

    % cabal install --constraint='zip-archive==0.2.2.1' haste-compiler==0.3 
    

Das sollte funktionieren, aber ich habe es selbst nicht ausprobiert, so dass es schief gehen könnte.