如何处理stack中子项目的依赖关系

How to deal with dependencies of subprojects in stack

我无法弄清楚在我的堆栈项目中存在源代码依赖性有什么问题。假设我想在我的项目中测试 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.

出于某种原因,测试操作无法找到在原始库和我自己的 stack.yml.

中指定的库 rdf4h

我不知道自己做错了什么,所以我们将不胜感激。

这里是 hsparql 作者。感谢您的报告。我推出了 commit 修复了与 rdf4h >= 2.0.0 的兼容性。我已经将 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