Improved linux tar.gz creation and added Dockerfile to repository.

This commit is contained in:
John MacFarlane 2017-03-19 16:24:52 +01:00
parent 6756e23f94
commit 74fd00b5f6
4 changed files with 111 additions and 0 deletions

31
linux/Dockerfile Normal file
View file

@ -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

14
linux/Makefile Normal file
View file

@ -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

51
linux/make_deb.sh Executable file
View file

@ -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/

15
linux/make_tarball.sh Normal file
View file

@ -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