2017-08-14 11 views
6

मैं stack build कमांड लाइन से एक परियोजना लेकिन जब मैं Emacs में C-c C-l कोशिश ((custom-set-variables '(haskell-process-type 'stack-ghci)) के साथ) मैं एक त्रुटि प्राप्त कर सकते हैं करता है कि सभी पैकेज मैं आयात मॉड्यूल नहीं मिल सकता है।Emacs स्टैक-GHCi कमांड लाइन से इंटरफ़ेस फ़ाइलों लेकिन `ढेर build` लोड नहीं कर सकते में

/home/amcp011/bec/amcp011/accelerate/gpe/src/Numeric/GPE/Utils.hs:30:1: error: 
    Failed to load interface for ‘Data.Array.Accelerate’ 
    Locations searched: 
     Data/Array/Accelerate.hs 
     Data/Array/Accelerate.lhs 
     Data/Array/Accelerate.hsig 
     Data/Array/Accelerate.lhsig 
     /home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.hs 
     /home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.lhs 
     /home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.hsig 
     /home/amcp011/bec/amcp011/accelerate/gpe/src/Data/Array/Accelerate.lhsig 

gpe.cabal:

build-depends:  base >= 4.7 && < 5 
        , bytestring 
        , bytestring-conversion 
        , mtl 
        , time 
        , filepath 
        , directory 
        , accelerate 
        , accelerate-io 

stack.yaml:

extra-deps: [accelerate-1.0.0.0 
      ,accelerate-io-1.0.0.0 
      ] 
+1

आप इस परियोजना का एक सार्वजनिक लिंक हैं तो आप करते हैं? उदाहरण के बिना डीबग करना मुश्किल है ... – Alec

+0

@Alec: https://github.com/amcphail/gpe यह समाप्त नहीं हुआ है, मैंने आपकी टिप्पणी के जवाब में अपलोड किया है। मैं विकास चरण में हूं जहां यह emacs में फ़ाइलों को लोड करने में मददगार है। – vivian

उत्तर

5

मैं stack build साथ अपनी परियोजना को संकलित करने में सक्षम था (जाहिर है, कुछ सिस्टम LLVM, CUDA की तरह विस्तृत निर्भरता स्थापित करने के बाद, fftw3 इत्यादि) और emacs में C-c C-l के साथ इसे ठीक से लोड करें।

यहाँ कम से कम Emacs config कि मेरे लिए काम किया है:

(defun haskell-mode-setup() 
    (setq haskell-process-type 'stack-ghci)) 

(add-hook 'haskell-mode-hook 'interactive-haskell-mode) 
(add-hook 'haskell-mode-hook 'haskell-mode-setup) 

केवल तरीके मैं interactive-haskell-mode के मुद्दे आप inf-haskell-mode के साथ था हो रही है दोहराने के लिए, बजाय कर रहा था, साथ ही बस के रूप में की स्थापना द्वारा (setq haskell-process-type 'ghci)। तो, यह संभव है कि emacs stack नहीं मिला है।

मैं हैकेल-मोड को यह कहने की सलाह दूंगा कि स्टैक है, अगर यह एक गैर-सामान्य स्थान में स्थापित है: (setq haskell-process-path-stack "/path/to/stack")

वैकल्पिक रूप से, मैंने $PATH पर्यावरण चर से संबंधित कुछ मुद्दों को हल किया है जो वर्तमान उपयोगकर्ता के लिए सेट नहीं है, लेकिन वह सिस्टम जो व्यापक रूप से उपयोग किया जाता है। बस exec-path-from-shell emacs पैकेज स्थापित करें और पर (exec-path-from-shell-initialize) जोड़ें।

इसके अलावा, यदि आपने अभी तक यह नहीं किया है, तो हैकेल-मोड लॉग का निरीक्षण उपयोगी साबित हो सकता है। (setq haskell-process-log t) से haskell-mode-setup जोड़ें, जिसके परिणामस्वरूप लॉग के साथ एक अतिरिक्त बफर होगा।

नोट्स:

  • के लिए अपने पैकेज को संकलित करने में, मैं अर्थात् जो कि स्थानीय dirs /home/amcp011/local/, जो रेपो में शामिल नहीं हैं और प्रयोग अपने सिस्टम के बजाय स्थापित gcc शामिल stack.yaml से कुछ लाइनों को हटाने के लिए, था RHEL6.3 से एक का।
  • यदि आप haskell-mode के अलावा कुछ अन्य emacs संकुल का उपयोग करते हैं, तो वे समस्या का भी कारण हो सकते हैं। मैंने बिना किसी समस्या के intero और flycheck के साथ इसका परीक्षण किया है।
  • नवीनतम stack upgrade और haskell-mode पर अपग्रेड करने का प्रयास करें, शायद इससे मदद मिलेगी। मैं पर stack-1.5.1 और haskell-mode-20170824.1124 साथ परीक्षण किया है emacs-25.2.2
संबंधित मुद्दे