Используя cabal
Я пытаюсь установить iserv-proxy
, сборка зависит от libiserv
, и я установил его раньше. когда я запускаю команду установки:
ghc/utils/iserv-proxy$ cabal install -flibrary -fproxy
не получается с:
src/Main.hs:53:1: error:
Could not load module `Remote.Message'
It is a member of the hidden package `libiserv-8.6.3'.
Perhaps you need to add `libiserv' to the build-depends in your .cabal file.
Use -v to see a list of the files searched for.
|
53 | import Remote.Message
| ^^^^^^^^^^^^^^^^^^^^^
как говорится в ошибке, Remote.Message
- это exposed-module
в libiserv
, но libiserv
существует в зависящем от сборки файле iserv-proxy.cabal
, как и в 8.6.3
версии ghc
:
(только я изменил containers
верхняя зависимость с 0.6
на 0.7
, что вызывало конфликт зависимостей.)
iserv-proxy.cabal
.
.
.
Executable iserv-proxy
Default-Language: Haskell2010
Main-Is: Main.hs
Hs-Source-Dirs: src
Build-Depends: array >= 0.5 && < 0.6,
base >= 4 && < 5,
binary >= 0.7 && < 0.9,
bytestring >= 0.10 && < 0.11,
containers >= 0.5 && < 0.7,
deepseq >= 1.4 && < 1.5,
directory >= 1.3 && < 1.4,
network >= 2.6,
filepath >= 1.4 && < 1.5,
ghci == 8.6.*,
libiserv == 8.6.*
Кабал знает о libiserv
установке:
$ cabal list --installed libiserv
* libiserv
Default available version: [ Not available from any configured repository ]
Installed versions: 8.6.3
License: BSD-3-Clause
и build-depends
, как это видно из подробного журнала установки (-v
), вы можете найти его здесь в pastebin .
Это так устало, я довольно плохо знаком с cabal
и ghc
, так что я могу что-то напутать. Когда я смотрю на команду ghc
в приведенном выше подробном журнале :
/opt/ghc/bin/ghc --make -no-link -fbuilding-cabal-package -O -static -outputdir dist/build/iserv-proxy/iserv-proxy-tmp -odir dist/build/iserv-proxy/iserv-proxy-tmp -hidir dist/build/iserv-proxy/iserv-proxy-tmp -stubdir dist/build/iserv-proxy/iserv-proxy-tmp -i -idist/build/iserv-proxy/iserv-proxy-tmp -isrc -idist/build/iserv-proxy/autogen -idist/build/global-autogen -Idist/build/iserv-proxy/autogen -Idist/build/global-autogen -Idist/build/iserv-proxy/iserv-proxy-tmp -optP-include -optPdist/build/iserv-proxy/autogen/cabal_macros.h -hide-all-packages -Wmissing-home-modules -package-db dist/package.conf.inplace -package-id array-0.5.3.0 -package-id base-4.12.0.0 -package-id binary-0.8.6.0 -package-id bytestring-0.10.8.2 -package-id containers-0.6.0.1 -package-id deepseq-1.4.4.0 -package-id directory-1.3.3.0 -package-id filepath-1.4.2.1 -package-id ghci-8.6.3 -package-id libiserv-8.6.3 -package-id network-2.8.0.0-AkCJm1aNSYz7ekXKYyI0pF -XHaskell2010 src/Main.hs
Он пропускает любую библиотеку от -I
или -include
до libiserv
, и, что интересно, при установке libiserv
нет никакого файла .h
или include
:
$ ls /root/.cabal/lib/x86_64-linux-ghc-8.6.3/libiserv-8.6.3-EjLBkFaay9bH1Xm2bkeUPB/
GHCi Lib.dyn_hi Lib.hi Remote libHSlibiserv-8.6.3-EjLBkFaay9bH1Xm2bkeUPB.a
мой конфиг:
$ cabal --version
cabal-install version 2.4.1.0
compiled using version 2.4.1.0 of the Cabal library
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.6.3
ghc$ git log -1
Author: Ben Gamari <ben@smart-cactus.org>
Date: Thu Dec 6 16:58:34 2018 -0500
Release 8.6.3
My ghc-pkg check
возвращает пару предупреждений для пропавших без вести документов haddock-html
и haddock-interfaces
. Вы можете найти полный вывод здесь в другой pastebin
Обновление:
добавление --ghc-options="-i../../libraries/libiserv/src/"
к команде установки решило мой случай, но так не должно быть, поэтому я оставил этот вопрос открытым, чтобы найти лучшее решение.