aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-03-17 14:17:41 +0100
committerJohn MacFarlane <jgm@berkeley.edu>2017-03-17 14:19:08 +0100
commit63c96f8b91b26f4c12a48ea30f330d689b4c67fa (patch)
tree8e1a26b024aa0b5d185b0c815d6bd99f5bcc2116
parent090165d714221bcfc1e4da7c43e8ad0b585d6dff (diff)
downloadpandoc-63c96f8b91b26f4c12a48ea30f330d689b4c67fa.tar.gz
Added static-linux directory.
This provides a Makefile and Dockerfile sufficient for producing a completely statically linked linux executable for maximum portability. If docker is installed, this should suffice: make setup make build The binary will be placed in artifacts/.
-rw-r--r--static-linux/Dockerfile18
-rw-r--r--static-linux/Makefile11
2 files changed, 29 insertions, 0 deletions
diff --git a/static-linux/Dockerfile b/static-linux/Dockerfile
new file mode 100644
index 000000000..3c62ebcf9
--- /dev/null
+++ b/static-linux/Dockerfile
@@ -0,0 +1,18 @@
+# USE ALPINE LINUX
+FROM alpine:edge
+RUN apk update
+# INSTALL BASIC DEV TOOLS, GHC, GMP & ZLIB
+RUN echo "https://s3-us-west-2.amazonaws.com/alpine-ghc/8.0" >> /etc/apk/repositories
+ADD https://raw.githubusercontent.com/mitchty/alpine-ghc/master/mitch.tishmack%40gmail.com-55881c97.rsa.pub \
+ /etc/apk/keys/mitch.tishmack@gmail.com-55881c97.rsa.pub
+RUN apk update
+RUN apk add alpine-sdk git ca-certificates ghc cabal stack zlib-dev
+RUN stack update
+RUN stack config set system-ghc --global true
+ADD ./ /usr/src/
+WORKDIR /usr/src/
+RUN git clone https://github.com/jgm/pandoc
+WORKDIR /usr/src/pandoc
+CMD git pull
+CMD stack install --local-bin-path /usr/bin hsb2hs
+CMD stack install --local-bin-path /artifacts --flag 'pandoc:embed_data_files' --test --ghc-options '-optl-static -fPIC'
diff --git a/static-linux/Makefile b/static-linux/Makefile
new file mode 100644
index 000000000..d8dc8151d
--- /dev/null
+++ b/static-linux/Makefile
@@ -0,0 +1,11 @@
+ARTIFACTS=`pwd`/artifacts
+
+build:
+ mkdir -p $(ARTIFACTS)
+ docker run -v $(ARTIFACTS):/artifacts alpine-pandoc
+
+setup:
+ docker pull alpine:edge
+ docker build -t alpine-pandoc .
+
+.PHONY: build setup