将pkg-config与Haskell Stack的Docker集成一起使用

时间:2017-12-27 22:51:52

标签: haskell-stack

我正在尝试构建一个Haskell Stack项目,其extra-deps包含opencv,它本身依赖于OpenCV 3.0(目前只能从源代码构建)。

我遵循Docker integration指南,并使用我自己的fpco/stack-build:lts-9.20构建的图像并安装OpenCV 3.0(Dockerfile.stack.opencv)。

如果我制作了自己的图片,我可以确认opencv已安装并pkg-config可见:

$ docker build -t stack-opencv -f Dockerfile.stack.opencv .
$ docker run stack-opencv pkg-config --modversion opencv
3.3.1

但是,如果我在stack.yml中指定此图片:

docker:
  image: stack-opencv

尝试stack build收益:

Configuring opencv-0.0.2.0...
setup: The pkg-config package 'opencv' version >=3.0.0 is required but it
could not be found.

我在没有Docker集成的情况下运行构建,并且它成功完成。

1 个答案:

答案 0 :(得分:0)

Dockerfile正在传递CMAKE_INSTALL_PREFIX=$HOME/usr

运行docker build时,会使用root用户,因此$HOME设置为/root

但是,在使用stack build stack用户时,他们无权查看/root,因此pkg-config无法找到opencv。< / p>

通过从-D CMAKE_INSTALL_PREFIX=$HOME/usr删除cmake标记,将使用默认前缀(/usr/local)。 stack用户也可以访问此内容,因此pkg-config可以在stack build期间找到它。