capnp-0.4.0.0: ci/Dockerfile
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