git.iko.soy/typeable/pandoc
on master help sign in
Back to using alpine-based Dockerfile for linux build.
0463a57John MacFarlane
linux/Dockerfile+21−9
@@ -1,19 +1,31 @@
1−FROM debian:jessie-slim
1+# USE ALPINE LINUX
2+FROM alpine:edge
3+RUN echo "https://s3-us-west-2.amazonaws.com/alpine-ghc/8.0" >> /etc/apk/repositories
4+ADD https://raw.githubusercontent.com/mitchty/alpine-ghc/master/mitch.tishmack%40gmail.com-55881c97.rsa.pub \
5+ /etc/apk/keys/mitch.tishmack@gmail.com-55881c97.rsa.pub
2−RUN apt-get update
6+RUN apk update
3−RUN apt-get -y install git ca-certificates zlib1g-dev curl \
7+RUN apk add alpine-sdk git ca-certificates ghc cabal stack zlib-dev \
4− dpkg fakeroot sed gawk grep bash xz-utils make build-essential clang \
8+ dpkg fakeroot sed gawk grep bash linux-headers
5− libgmp-dev
9+RUN stack update
6−RUN curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C /usr/bin '*/stack'
10+RUN stack config set system-ghc --global true
7−RUN mkdir -p /etc/stack
11+#RUN mkdir -p /etc/stack
8#RUN echo "build: { split-objs: true }" > /etc/stack/config.yaml
12#RUN echo "build: { split-objs: true }" > /etc/stack/config.yaml
9RUN mkdir -p /usr/src/
13RUN mkdir -p /usr/src/
10WORKDIR /usr/src/
14WORKDIR /usr/src/
11RUN git clone https://github.com/jgm/pandoc
15RUN git clone https://github.com/jgm/pandoc
12WORKDIR /usr/src/pandoc
16WORKDIR /usr/src/pandoc
13−RUN stack setup
14RUN stack install --stack-yaml stack.pkg.yaml --only-dependencies \
17RUN stack install --stack-yaml stack.pkg.yaml --only-dependencies \
15 --flag 'pandoc:embed_data_files' \
18 --flag 'pandoc:embed_data_files' \
19+ --ghc-options '-O2 -optc-Os -optl=-pthread -optl=-static -fPIC' \
16 pandoc pandoc-citeproc
20 pandoc pandoc-citeproc
17CMD git pull && \
21CMD git pull && \
18 git checkout -b work $TREE && \
22 git checkout -b work $TREE && \
19− ARTIFACTS=/artifacts sh linux/make_linux.sh
23+ stack install --stack-yaml stack.pkg.yaml \
24+ --flag 'pandoc:static' \
25+ --flag 'pandoc:embed_data_files' \
26+ --flag 'hslua:-export-dynamic' \
27+ --ghc-options '-O2 -optc-Os -optl=-pthread -optl=-static -fPIC' \
28+ --local-bin-path /artifacts \
29+ pandoc pandoc-citeproc && \
30+ bash linux/make_deb.sh && \
31+ bash linux/make_tarball.sh
linux/make_deb.sh+5−7
@@ -7,9 +7,9 @@ case "$MACHINE" in
7 i386) ARCHITECTURE=i386;;
7 i386) ARCHITECTURE=i386;;
8esac
8esac
9
9
10−ARTIFACTS=/artifacts
10+ARTIFACTS=?/artifacts
11
11
12−VERSION=$(grep -e '^Version' pandoc.cabal | awk '{print $2}')
12+VERSION=`$ARTIFACTS/pandoc --version | awk '{print $2; exit;}'`
13REVISION=${REVISION:-1}
13REVISION=${REVISION:-1}
14DEBVER=$VERSION-$REVISION
14DEBVER=$VERSION-$REVISION
15BASE=pandoc-$DEBVER-$ARCHITECTURE
15BASE=pandoc-$DEBVER-$ARCHITECTURE
@@ -23,8 +23,6 @@ mkdir -p $DEST/bin
23mkdir -p $DEST/share/man/man1
23mkdir -p $DEST/share/man/man1
24mkdir -p $DEST/share/doc/pandoc
24mkdir -p $DEST/share/doc/pandoc
25
25
26−make man/pandoc.1
27−
28mkdir -p $DEST/share/doc/pandoc-citeproc
26mkdir -p $DEST/share/doc/pandoc-citeproc
29find $DIST -type d | xargs chmod 755
27find $DIST -type d | xargs chmod 755
30cp $ARTIFACTS/pandoc $DEST/bin/
28cp $ARTIFACTS/pandoc $DEST/bin/
@@ -32,14 +30,14 @@ cp $ARTIFACTS/pandoc-citeproc $DEST/bin/
32strip $DEST/bin/pandoc
30strip $DEST/bin/pandoc
33strip $DEST/bin/pandoc-citeproc
31strip $DEST/bin/pandoc-citeproc
34cp man/pandoc.1 $DEST/share/man/man1/pandoc.1
32cp man/pandoc.1 $DEST/share/man/man1/pandoc.1
35−/artifacts/pandoc-citeproc --man > $DEST/share/man/man1/pandoc-citeproc.1
33+$ARTIFACTS/pandoc-citeproc --man > $DEST/share/man/man1/pandoc-citeproc.1
36gzip -9 $DEST/share/man/man1/pandoc.1
34gzip -9 $DEST/share/man/man1/pandoc.1
37gzip -9 $DEST/share/man/man1/pandoc-citeproc.1
35gzip -9 $DEST/share/man/man1/pandoc-citeproc.1
38
36
39cp COPYRIGHT $COPYRIGHT
37cp COPYRIGHT $COPYRIGHT
40echo "" >> $COPYRIGHT
38echo "" >> $COPYRIGHT
41echo "pandoc-citeproc" >> $COPYRIGHT
39echo "pandoc-citeproc" >> $COPYRIGHT
42−/artifacts/pandoc-citeproc --license >> $COPYRIGHT
40+$ARTIFACTS/pandoc-citeproc --license >> $COPYRIGHT
43
41
44INSTALLED_SIZE=$(du -k -s $DEST | awk '{print $1}')
42INSTALLED_SIZE=$(du -k -s $DEST | awk '{print $1}')
45mkdir $DIST/DEBIAN
43mkdir $DIST/DEBIAN
@@ -50,4 +48,4 @@ perl -pe "s/VERSION/$DEBVER/" linux/control.in | \
50
48
51fakeroot dpkg-deb --build $DIST
49fakeroot dpkg-deb --build $DIST
52rm -rf $DIST
50rm -rf $DIST
53−cp $BASE.deb /artifacts/
51+cp $BASE.deb $ARTIFACTS/
linux/make_linux.shdeleted−80
@@ -1,80 +0,0 @@
1−#!/bin/bash -e
2−
3−ARTIFACTS=?`pwd`/linux/artifacts
4−
5−mkdir -p $ARTIFACTS
6−stack clean
7−stack install --stack-yaml stack.pkg.yaml \
8− --flag 'pandoc:embed_data_files' \
9− --local-bin-path $ARTIFACTS \
10− pandoc pandoc-citeproc
11−
12−# Make deb
13−
14−MACHINE=$(uname -m)
15−case "$MACHINE" in
16− x86_64) ARCHITECTURE=amd64;;
17− i686) ARCHITECTURE=i386;;
18− i386) ARCHITECTURE=i386;;
19−esac
20−
21−VERSION=`$ARTIFACTS/pandoc --version | awk '{print $2; exit;}'`
22−PANDOC_CITEPROC_VERSION=`$ARTIFACTS/pandoc-citeproc --version | awk '{print $2; exit;}'`
23−REVISION=${REVISION:-1}
24−DEBVER=$VERSION-$REVISION
25−BASE=pandoc-$DEBVER-$ARCHITECTURE
26−DIST=`pwd`/$BASE
27−DEST=$DIST/usr
28−COPYRIGHT=$DEST/share/doc/pandoc/copyright
29−
30−
31−mkdir -p $DEST/bin
32−mkdir -p $DEST/share/man/man1
33−mkdir -p $DEST/share/doc/pandoc
34−
35−make man/pandoc.1
36−
37−mkdir -p $DEST/share/doc/pandoc-citeproc
38−find $DIST -type d | xargs chmod 755
39−cp $ARTIFACTS/pandoc $DEST/bin/
40−cp $ARTIFACTS/pandoc-citeproc $DEST/bin/
41−strip $DEST/bin/pandoc
42−strip $DEST/bin/pandoc-citeproc
43−cp man/pandoc.1 $DEST/share/man/man1/pandoc.1
44−$ARTIFACTS/pandoc-citeproc --man > $DEST/share/man/man1/pandoc-citeproc.1
45−gzip -9 $DEST/share/man/man1/pandoc.1
46−gzip -9 $DEST/share/man/man1/pandoc-citeproc.1
47−
48−cp COPYRIGHT $COPYRIGHT
49−echo "" >> $COPYRIGHT
50−echo "pandoc-citeproc" >> $COPYRIGHT
51−$ARTIFACTS/pandoc-citeproc --license >> $COPYRIGHT
52−
53−INSTALLED_SIZE=$(du -k -s $DEST | awk '{print $1}')
54−mkdir $DIST/DEBIAN
55−perl -pe "s/VERSION/$DEBVER/" linux/control.in | \
56− perl -pe "s/ARCHITECTURE/$ARCHITECTURE/" | \
57− perl -pe "s/INSTALLED_SIZE/$INSTALLED_SIZE/" \
58− > $DIST/DEBIAN/control
59−
60−fakeroot dpkg-deb --build $DIST
61−rm -rf $DIST
62−cp $BASE.deb $ARTIFACTS/
63−
64−# Create tarball
65−
66−TARGET=$ARTIFACTS/pandoc-$VERSION
67−
68−rm -rf $TARGET
69−mkdir $TARGET
70−mkdir $TARGET/bin $TARGET/share $TARGET/share/man $TARGET/share/man/man1
71−$ARTIFACTS/pandoc-citeproc --man > $TARGET/share/man/man1/pandoc-citeproc.1
72−cp man/pandoc.1 $TARGET/share/man/man1
73−mv $ARTIFACTS/pandoc $ARTIFACTS/pandoc-citeproc $TARGET/bin
74−strip $TARGET/bin/pandoc
75−strip $TARGET/bin/pandoc-citeproc
76−gzip -9 $TARGET/share/man/man1/pandoc.1
77−gzip -9 $TARGET/share/man/man1/pandoc-citeproc.1
78−cd $ARTIFACTS
79−tar cvzf pandoc-$VERSION.tar.gz pandoc-$VERSION
80−rm -r $TARGET
linux/make_tarball.sh+3−2
@@ -1,9 +1,10 @@
1set -e
1set -e
2
2
3−VERSION=$(grep -e '^Version' pandoc.cabal | awk '{print $2}')
4TARGET=pandoc-$VERSION
3TARGET=pandoc-$VERSION
4+ARTIFACTS=?/artifacts
5+VERSION=`$ARTIFACTS/pandoc --version | awk '{print $2; exit;}'`
5
6
6−cd /artifacts
7+cd $ARTIFACTS
7rm -rf $TARGET
8rm -rf $TARGET
8mkdir $TARGET
9mkdir $TARGET
9mkdir $TARGET/bin $TARGET/share $TARGET/share/man $TARGET/share/man/man1
10mkdir $TARGET/bin $TARGET/share $TARGET/share/man $TARGET/share/man/man1
stack.pkg.yaml+1−1
@@ -18,7 +18,7 @@ packages:
18 extra-dep: false
18 extra-dep: false
19extra-deps:
19extra-deps:
20- pandoc-types-1.17.2
20- pandoc-types-1.17.2
21−- hslua-0.9.0
21+- hslua-0.9.2
22- skylighting-0.4.1
22- skylighting-0.4.1
23- cmark-gfm-0.1.1
23- cmark-gfm-0.1.1
24- QuickCheck-2.10.0.1
24- QuickCheck-2.10.0.1
stack.yaml+1−1
@@ -8,7 +8,7 @@ packages:
8- '.'
8- '.'
9extra-deps:
9extra-deps:
10- pandoc-types-1.17.2
10- pandoc-types-1.17.2
11−- hslua-0.9.0
11+- hslua-0.9.2
12- skylighting-0.4.1
12- skylighting-0.4.1
13- cmark-gfm-0.1.1
13- cmark-gfm-0.1.1
14- QuickCheck-2.10.0.1
14- QuickCheck-2.10.0.1