From 74fd00b5f6a776df0fd10d3f4bea58d10ae3a2a3 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sun, 19 Mar 2017 16:24:52 +0100 Subject: Improved linux tar.gz creation and added Dockerfile to repository. --- linux/Dockerfile | 31 +++++++++++++++++++++++++++++++ linux/Makefile | 14 ++++++++++++++ linux/make_deb.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ linux/make_tarball.sh | 15 +++++++++++++++ 4 files changed, 111 insertions(+) create mode 100644 linux/Dockerfile create mode 100644 linux/Makefile create mode 100755 linux/make_deb.sh create mode 100644 linux/make_tarball.sh (limited to 'linux') 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 -- cgit v1.2.3