mirror of
https://github.com/zap-proto/haskell.git
synced 2026-10-30 15:05:00 +00:00
66 lines
1.8 KiB
Docker
66 lines
1.8 KiB
Docker
FROM alpine:3.8
|
|
WORKDIR /usr/src/
|
|
|
|
# Cabal does not like busybox's wget:
|
|
RUN apk add \
|
|
wget
|
|
|
|
# Install the Haskell tooling.
|
|
RUN apk add \
|
|
build-base \
|
|
ghc \
|
|
cabal
|
|
|
|
# Install the linters up front; this saves a lot of build time during the actual
|
|
# CI run.
|
|
RUN cabal update
|
|
RUN cabal install happy alex
|
|
RUN cabal install hlint stylish-haskell
|
|
|
|
# We're getting an error from cabal re: creating these symlinks automatically,
|
|
# so we just do it ourselves. TODO: figure out why this is happening
|
|
|
|
RUN ln -s /root/.cabal/bin/hlint /usr/local/bin/hlint
|
|
RUN ln -s /root/.cabal/bin/stylish-haskell /usr/local/bin/stylish-haskell
|
|
|
|
# Install stuff needed to build capnproto:
|
|
RUN apk add \
|
|
autoconf \
|
|
automake \
|
|
libtool \
|
|
linux-headers
|
|
|
|
# Build and install a recent version of capnproto; it isn't in the alpine
|
|
# repos. Furthermore, we use the calculator-client & server examples as
|
|
# part of our test suite, so we need to build that anyway:
|
|
RUN wget "https://github.com/capnproto/capnproto/archive/v0.6.1.tar.gz"
|
|
RUN tar -xvf *.tar.gz
|
|
RUN cd capnproto-*/c++ && \
|
|
autoreconf -i && \
|
|
./configure --prefix=/usr/local && \
|
|
make -j && \
|
|
make install
|
|
|
|
# Build and install the C++ calculator example client & server, which
|
|
# we'll use to validate our own implementations:
|
|
RUN cd capnproto-*/c++/samples && \
|
|
capnpc -oc++ calculator.capnp && \
|
|
c++ \
|
|
calculator-client.c++ \
|
|
-std=c++14 \
|
|
calculator.capnp.c++ \
|
|
$(pkg-config --cflags --libs capnp-rpc) \
|
|
-o calculator-client && \
|
|
c++ \
|
|
calculator-server.c++ \
|
|
-std=c++14 \
|
|
calculator.capnp.c++ \
|
|
$(pkg-config --cflags --libs capnp-rpc) \
|
|
-o calculator-server && \
|
|
install -Dm755 calculator-client /usr/local/bin/c++-calculator-client && \
|
|
install -Dm755 calculator-server /usr/local/bin/c++-calculator-server
|
|
|
|
# Add other tools we use during the run:
|
|
RUN apk add \
|
|
git
|