2016-09-02 1 views
0

Ich versuche haskell-Diagramm von here (Github) zu installieren, ich habe es klonen, installieren Stapel, lief Stapel Setup (es installiert GHC erfolgreich), aber dann lief ich machen, dass mit den Nachrichten fehlschlägt: Version StapelInstallation der Haskell-Chart lässt sich nicht mit gtk-0.14.2 Build-Fehler

... 
Chart-cairo-1.8: copy/register 
Chart-diagrams-1.8: copy/register 
Progress: 4/6 
-- While building package gtk-0.14.2 using: 
     /tmp/stack4807/gtk-0.14.2/.stack-work/dist/x86_64-linux/Cabal-1.22.5.0/setup/setup --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.5.0 build --ghc-options " -ddump-hi -ddump-to-file" 
    Process exited with code: ExitFailure 1 
... 

[ 22 of 209] Compiling Graphics.UI.Gtk.Embedding.Plug (.stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Graphics/UI/Gtk/Embedding/Plug.hs, .stack-work/dist/x86_64-linux/Cabal-1.22.5.0/build/Graphics/UI/Gtk/Embedding/Plug.o) 

    /tmp/stack4807/gtk-0.14.2/Graphics/UI/Gtk/Embedding/Plug.chs:120:6: 
     Couldn't match expected type ‘CUInt’ 
        with actual type ‘Maybe DrawWindow’ 
     In the first argument of ‘gtk_plug_new’, namely... 

1.1.2 x86_64 hpack-0.14.1 LTS Haskell 5,18 (GHC-7.10.3). Was kann ich mit diesen Fehlern machen?

+0

Haben Sie versucht, es mit einer neueren LTS Resolver? – leftaroundabout

+0

Ich habe lts-3.22 versucht, dass [sollte] (https://www.stackage.org/lts-3.22/docs) gtk-0.13.9 verwenden, aber die gleichen Fehler über gtk-0.14.2 bekommen. Ich neu in haskell und stack, aber stapeln mit lts-3.22 fragte mich nach einer anderen Version von ghc (das bedeutet, dass Stack wirklich lts-3.22 verwendet). –

+0

Mehr _recent_ Resolver steht in Konflikt mit den Anforderungen von Haskell-Diagramm-Abhängigkeiten. –

Antwort

0

Mit Gebräu Ich habe ein Upgrade gtk + ab Version 2.24.25 bis 2.24.30 und installiert die neueste Version von XQuartz (Version 2.7.9 -. Ich konnte nicht feststellen, welche Version ich ursprünglich installiert hatte)

Mit diesen Änderungen konnte ich das Projekt erfolgreich mit stack build erstellen.

Spezielle Befehle:

$ brew cask install xquartz --force 
$ brew upgrade gtk 
+0

Eigentlich ist diese Flagge bereits im Stack.Yaml. Auch stack build --flag gtk: have-quartz-gtk führt zu den gleichen Fehlern. –

+0

Antwort aktualisiert. – ErikR

+0

Mein Betriebssystem ist Arch Linux, nicht Mac. –

2

Um haskell-Diagramm von Github Quellen auf Linux zu bauen sollte man in stack.yaml

flags: 
    gtk: 
     have-quartz-gtk: true 

mit

flags: {} 

weil Linux don ersetzen‘ t verwenden Quartz Flagge have-quartz-gtk, und Quarz wird nicht benötigt, um zu bauen d gtk (Windows verwendet auch kein Quarz).

+0

danke für die Antwort. Ich habe es zur [github-Ausgabe] hinzugefügt (https://github.com/timbod7/haskell-chart/issues/163#issuecomment-318504387) – palik

0

Beachten Sie, dass Sie gtk nicht wirklich verwenden müssen. Es gibt zwei Rendering-Backends für die Diagrammbibliothek - eine basiert auf cairo von gtk2hs und die andere auf der diagrams-Bibliothek. Das Cairo-Backend ist wesentlich schneller, während das Diagramm-Backend reiner Haskell ist und daher einfacher zu erstellen ist.

Standardmäßig sind beide Backends gebaut, aber man kann nur die Core-Bibliothek erstellen und die Diagramme Backend mit:

stack build ./chart ./chart-diagrams

+0

Tatsächlich verwende ich jetzt _cairo_ für die PDF-Ausgabe. Ich folge deinem [vorherigen Vorschlag] (https://github.com/timbod7/haskell-chart/issues/138) und mache meine Figuren zu einem "Paket" mit eigenen stack.yaml- und cabal-Dateien. Ich sehe jetzt, dass ich gtk nicht benutzen muss, aber ich wollte nur in den Quellcode schauen, vielleicht ein paar Änderungen vornehmen und Haskell dadurch lernen. –

Verwandte Themen