2016-08-12 89 views
1

我有問題,弄清楚在我的堆棧項目中存在源代碼依賴關係有什麼問題。假設我想在我的項目中測試hsparql庫的修改版本。一個最小的設置是:如何處理堆棧中的子項目的依賴關係

stack new mytest simple 
mkdir 3rdpary 
cd 3rdpary 
git clone https://github.com/robstewart57/hsparql 

修改stack.yml包括hsparql的地方和修改後的版本在我的項目:

packages: 
- '.' 
- 3rdparty/hsparql 

# Dependency packages to be pulled from upstream that are not in the resolver 
# (e.g., acme-missiles-0.3) 
extra-deps: 
- rdf4h-2.0.0 
- hgal-2.0.0.2 

如果我去的3rdParty/hsparql文件夾,我可以stack test沒有任何問題,但是從我的項目的根我得到

$ stack test 
hsparql-0.2.7: build (lib + test) 
Progress: 1/2 
-- While building package hsparql-0.2.7 using: 
     /home/cebrian/.stack/setup-exe-cache/x86_64-linux/setup-Simple-Cabal-1.22.5.0-ghc-7.10.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.22.5.0 build lib:hsparql test:test-hsparql --ghc-options " -ddump-hi -ddump-to-file" 
    Process exited with code: ExitFailure 1 
    Logs have been written to: /home/cebrian/borralodedentro/stack-test/.stack-work/logs/hsparql-0.2.7.log 

    Preprocessing library hsparql-0.2.7... 
    In-place registering hsparql-0.2.7... 
    Preprocessing test suite 'test-hsparql' for hsparql-0.2.7... 

    /home/cebrian/borralodedentro/stack-test/3rdparty/hsparql/tests/Database/HSparql/ConnectionTest.hs:10:18: 
     Could not find module ‘Data.RDF.TriplesGraph’ 
     Use -v to see a list of the files searched for. 

出於某種原因,測試動作無法找到庫rdf4h說」已被指定在原始圖書館和我自己的stack.yml中。

我不知道我做錯了什麼,所以任何幫助將不勝感激。

+0

的再現步驟是有點混亂:我懷疑有一個錯字('3rdpary' /'3rdparty'),而遺漏'CD mytest'作爲第二個步驟。你的錯誤信息也會報告'stack-test'作爲'3rdparty'的父目錄。 – sjakobi

+0

當從項目根目錄調用堆棧測試時,堆棧使用'stack.yaml'中指定的'rdf4h-2.0.0'。該版本的'rdf4h'不包含'Data.RDF.TriplesGraph',因此是錯誤消息。當從'hsparql'目錄運行'stack test'時,堆棧使用不同的'stack.yaml'。 – sjakobi

回答

2

hsparql作者在這裏。感謝您的報告。我推了一個修復與rdf4h> = 2.0.0兼容性的commit。我已經將hsparql版本顛簸推到了0.2.8來進行破解。該stack test命令現在作爲你所期望的:

Progress: 1/2Database.HSparql.Connection tests: 
    selectQuery: [OK] 
    askQuery: [OK] 
    constructQuery: [OK] 
    describeQuery: [OK] 

     Test Cases Total  
Passed 4   4   
Failed 0   0   
Total 4   4