summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-03-19 16:24:52 +0100
committerJohn MacFarlane <jgm@berkeley.edu>2017-03-19 16:24:52 +0100
commit74fd00b5f6a776df0fd10d3f4bea58d10ae3a2a3 (patch)
treeb5281ceff47d5e7fe378bbfdb983a456f2fc6c5e
parent6756e23f945c7a9c685ac4e8b06eae052f52b574 (diff)
Improved linux tar.gz creation and added Dockerfile to repository.
-rw-r--r--linux/Dockerfile31
-rw-r--r--linux/Makefile14
-rwxr-xr-xlinux/make_deb.sh51
-rw-r--r--linux/make_tarball.sh15
4 files changed, 111 insertions, 0 deletions
diff --git a/linux/Dockerfile b/linux/Dockerfile
new file mode 100644
index 000000000..0a9cc710d
--- /dev/null
+++ b/linux/Dockerfile
@@ -0,0 +1,31 @@
+# USE ALPINE LINUX
+FROM alpine:edge
+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 \
+ dpkg fakeroot sed gawk grep
+RUN stack update
+RUN stack config set system-ghc --global true
+RUN mkdir -p /etc/stack
+RUN echo "build: { split-objs: true }" > /etc/stack/config.yaml
+RUN mkdir -p /usr/src/
+WORKDIR /usr/src/
+RUN git clone https://github.com/jgm/pandoc
+WORKDIR /usr/src/pandoc
+RUN stack install --local-bin-path /usr/bin hsb2hs
+RUN stack install --stack-yaml stack.pkg.yaml --only-dependencies \
+ --flag 'pandoc:embed_data_files' \
+ --test --ghc-options '-O2 -optc-Os -optl-static -fPIC' \
+ pandoc pandoc-citeproc
+COPY make_deb.sh .
+COPY make_tarball.sh .
+CMD git pull && \
+ git checkout -b work $TREE && \
+ stack install --stack-yaml stack.pkg.yaml \
+ --local-bin-path /artifacts --flag 'pandoc:embed_data_files' \
+ --test --ghc-options '-O2 -optc-Os -optl-static -fPIC' \
+ pandoc pandoc-citeproc && \
+ bash make_deb.sh && \
+ bash make_tarball.sh
diff --git a/linux/Makefile b/linux/Makefile
new file mode 100644
index 000000000..798dcba27
--- /dev/null
+++ b/linux/Makefile
@@ -0,0 +1,14 @@
+TREE?=HEAD
+ARTIFACTS=`pwd`/artifacts
+REVISION?=1
+
+build:
+ mkdir -p $(ARTIFACTS)
+ docker build -t alpine-pandoc .
+ docker run --env TREE=$(TREE) --env REVISION=$(REVISION) \
+ -v $(ARTIFACTS):/artifacts alpine-pandoc
+
+setup:
+ docker pull alpine:edge
+
+.PHONY: build setup
diff --git a/linux/make_deb.sh b/linux/make_deb.sh
new file mode 100755
index 000000000..70b99a5ee
--- /dev/null
+++ b/linux/make_deb.sh
@@ -0,0 +1,51 @@
+set -e
+
+MACHINE=$(uname -m)
+case "$MACHINE" in
+ x86_64) ARCHITECTURE=amd64;;
+ i686) ARCHITECTURE=i386;;
+ i386) ARCHITECTURE=i386;;
+esac
+
+ARTIFACTS=/artifacts
+
+VERSION=$(grep -e '^Version' pandoc.cabal | awk '{print $2}')
+REVISION=${REVISION:-1}
+DEBVER=$VERSION-$REVISION
+BASE=pandoc-$DEBVER-$ARCHITECTURE
+DIST=`pwd`/$BASE
+DEST=$DIST/usr
+COPYRIGHT=$DEST/share/doc/pandoc/copyright
+
+PANDOC_CITEPROC_VERSION=`$ARTIFACTS/pandoc-citeproc --version | awk '{print $2;}'`
+
+mkdir -p $DEST/bin
+mkdir -p $DEST/share/man/man1
+mkdir -p $DEST/share/doc/pandoc
+
+make man/pandoc.1
+
+mkdir -p $DEST/share/doc/pandoc-citeproc
+find $DIST -type d | xargs chmod 755
+cp $ARTIFACTS/pandoc $DEST/bin/
+cp $ARTIFACTS/pandoc-citeproc $DEST/bin/
+cp man/pandoc.1 $DEST/share/man/man1/pandoc.1
+/artifacts/pandoc-citeproc --man > $DEST/share/man/man1/pandoc-citeproc.1
+gzip -9 $DEST/share/man/man1/pandoc.1
+gzip -9 $DEST/share/man/man1/pandoc-citeproc.1
+
+cp COPYRIGHT $COPYRIGHT
+echo "" >> $COPYRIGHT
+echo "pandoc-citeproc" >> $COPYRIGHT
+/artifacts/pandoc-citeproc --license >> $COPYRIGHT
+
+INSTALLED_SIZE=$(du -k -s $DEST | awk '{print $1}')
+mkdir $DIST/DEBIAN
+perl -pe "s/VERSION/$DEBVER/" deb/control.in | \
+ perl -pe "s/ARCHITECTURE/$ARCHITECTURE/" | \
+ perl -pe "s/INSTALLED_SIZE/$INSTALLED_SIZE/" \
+ > $DIST/DEBIAN/control
+
+fakeroot dpkg-deb --build $DIST
+rm -rf $DIST
+cp $BASE.deb /artifacts/
diff --git a/linux/make_tarball.sh b/linux/make_tarball.sh
new file mode 100644
index 000000000..ff54db603
--- /dev/null
+++ b/linux/make_tarball.sh
@@ -0,0 +1,15 @@
+set -e
+
+VERSION=$(grep -e '^Version' pandoc.cabal | awk '{print $2}')
+TARGET=pandoc-$VERSION
+
+cd /artifacts
+mkdir $TARGET
+mkdir $TARGET/bin $TARGET/man $TARGET/man/man1
+./pandoc-citeproc --man > $TARGET/man/man1/pandoc-citeproc.1
+cp /usr/src/pandoc/man/pandoc.1 $TARGET/man/man1
+mv pandoc pandoc-citeproc $TARGET/bin
+gzip -9 $TARGET/man/man1/pandoc.1
+gzip -9 $TARGET/man/man1/pandoc-citeproc.1
+tar cvzf $TARGET.tar.gz $TARGET
+rm -r $TARGET