I have created a docker image with based on fpco/stack-build with GHCJS installed and known to stack.
I have a project which I am able to build with ghcjs by copying the project into the docker container and running stack build.
However, if I try to build the project locally (with the appropriate docker section added to the stack.yaml) it complains that it can't find the ghcjs compiler.
It is as if it is looking for the compiler locally instead of in the container.
Is the intended behaviour or what am I doing wrong?
Further details:
The Dockerfile I used to build my image was as follows:
FROM fpco/stack-build:lts-7.0
MAINTAINER Casper Clemence <maninalift@gmail.com>
# install ghcj
COPY "ghcjs/ghc-8.0-2016-09-14-lts-7.0-9007000.tar.gz" "/root/"
ADD ghcjs-build /root/ghcjs-build
RUN cd /root/ghcjs-build && stack setup
RUN rm -rf /root/ghcjs-build
# install Google Closure compiler
RUN sudo apt-get update
RUN sudo apt-get install closure-compiler -y
The directory ghcjs-build contains nothing but a stack.yaml file, the contents of which are:
resolver: lts-7.0
compiler: ghcjs-0.2.0.9007000_ghc-8.0.1
compiler-check: match-exact
setup-info:
ghcjs:
source:
ghcjs-0.2.0.9007000_ghc-8.0.1:
url: "/root/ghc-8.0-2016-09-14-lts-7.0-9007000.tar.gz"
The stack.yaml for the project itself looks like:
resolver: lts-7.0
compiler: ghcjs-0.2.0.9007000_ghc-8.0.1
compiler-check: match-exact
allow-newer: true
docker:
enable: true
repo: "maninalift/stack-ghcjs-build"
auto-pull: true
packages:
- '../project-api/'
- '.'
- location:
git: https://github.com/agrafix/Spock
commit: 77333a2de5dea0dc8eba9432ab16864e93e5d70e
extra-dep: true
subdirs:
- Spock-api
- Spock-api-ghcjs
- reroute
extra-deps:
- ghcjs-dom-0.3.1.0
- ghcjs-dom-jsffi-0.3.1.0
- rawstring-qm-0.2.2.2
By copying the project into a docker container created from the image maninalift/stack-ghcjs-build and deleting the docker section of the stack.yaml file, I can build the project.
If however I try to build the project locally I get the following error:
No compiler found, expected exact version ghcjs-0.2.0.9007000_ghc-8.0.1 (x86_64) (based on resolver setting in /home/caz/repos/pets/xweb/site/project-frontend/stack.yaml).
Try running "stack setup" to install the correct GHC into /home/caz/.stack/programs/x86_64-linux-dk3a4ba5cbb06b149b5ecd98e80c865100/
Am I just misunderstanding the design of stack when I expect it to detect ghcjs inside the docker container? I'd really like users of the repository to be able to download the docker image and start building the project without building ghcjs.
Thank you all for your attention.