git.iko.soy/typeable/pandoc
on master help sign in
Back to using alpine-based Dockerfile for linux build.
commit0463a57a5c85bd44223fd17bd1370cd31cecee03 authorJohn MacFarlane <jgm@berkeley.edu> dateSun 22 Oct 2017, 15:04 (9 years ago) parent901c68a
6 files changed+31−100
linux/Dockerfile+21−9 linux/make_deb.sh+5−7 linux/make_linux.sh−80 linux/make_tarball.sh+3−2 stack.pkg.yaml+1−1 stack.yaml+1−1
linux/Dockerfile+21−9
@@ -1,19 +1,31 @@
1−FROM debian:jessie-slim
2−RUN apt-get update
3−RUN apt-get -y install git ca-certificates zlib1g-dev curl \
4− dpkg fakeroot sed gawk grep bash xz-utils make build-essential clang \
5− libgmp-dev
6−RUN curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C /usr/bin '*/stack'
7−RUN mkdir -p /etc/stack
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
6+RUN apk update
7+RUN apk add alpine-sdk git ca-certificates ghc cabal stack zlib-dev \
8+ dpkg fakeroot sed gawk grep bash linux-headers
9+RUN stack update
10+RUN stack config set system-ghc --global true
11+#RUN mkdir -p /etc/stack
812#RUN echo "build: { split-objs: true }" > /etc/stack/config.yaml
913RUN mkdir -p /usr/src/
1014WORKDIR /usr/src/
1115RUN git clone https://github.com/jgm/pandoc
1216WORKDIR /usr/src/pandoc
13−RUN stack setup
1417RUN stack install --stack-yaml stack.pkg.yaml --only-dependencies \
1518 --flag 'pandoc:embed_data_files' \
19+ --ghc-options '-O2 -optc-Os -optl=-pthread -optl=-static -fPIC' \
1620 pandoc pandoc-citeproc
1721CMD git pull && \
1822 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
77 i386) ARCHITECTURE=i386;;
88esac
99
10−ARTIFACTS=/artifacts
10+ARTIFACTS=?/artifacts
1111
12−VERSION=$(grep -e '^Version' pandoc.cabal | awk '{print $2}')
12+VERSION=`$ARTIFACTS/pandoc --version | awk '{print $2; exit;}'`
1313REVISION=${REVISION:-1}
1414DEBVER=$VERSION-$REVISION
1515BASE=pandoc-$DEBVER-$ARCHITECTURE
@@ -23,8 +23,6 @@ mkdir -p $DEST/bin
2323mkdir -p $DEST/share/man/man1
2424mkdir -p $DEST/share/doc/pandoc
2525
26−make man/pandoc.1
27−
2826mkdir -p $DEST/share/doc/pandoc-citeproc
2927find $DIST -type d | xargs chmod 755
3028cp $ARTIFACTS/pandoc $DEST/bin/
@@ -32,14 +30,14 @@ cp $ARTIFACTS/pandoc-citeproc $DEST/bin/
3230strip $DEST/bin/pandoc
3331strip $DEST/bin/pandoc-citeproc
3432cp 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
3634gzip -9 $DEST/share/man/man1/pandoc.1
3735gzip -9 $DEST/share/man/man1/pandoc-citeproc.1
3836
3937cp COPYRIGHT $COPYRIGHT
4038echo "" >> $COPYRIGHT
4139echo "pandoc-citeproc" >> $COPYRIGHT
42−/artifacts/pandoc-citeproc --license >> $COPYRIGHT
40+$ARTIFACTS/pandoc-citeproc --license >> $COPYRIGHT
4341
4442INSTALLED_SIZE=$(du -k -s $DEST | awk '{print $1}')
4543mkdir $DIST/DEBIAN
@@ -50,4 +48,4 @@ perl -pe "s/VERSION/$DEBVER/" linux/control.in | \
5048
5149fakeroot dpkg-deb --build $DIST
5250rm -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 @@
11set -e
22
3−VERSION=$(grep -e '^Version' pandoc.cabal | awk '{print $2}')
43TARGET=pandoc-$VERSION
4+ARTIFACTS=?/artifacts
5+VERSION=`$ARTIFACTS/pandoc --version | awk '{print $2; exit;}'`
56
6−cd /artifacts
7+cd $ARTIFACTS
78rm -rf $TARGET
89mkdir $TARGET
910mkdir $TARGET/bin $TARGET/share $TARGET/share/man $TARGET/share/man/man1
stack.pkg.yaml+1−1
@@ -18,7 +18,7 @@ packages:
1818 extra-dep: false
1919extra-deps:
2020- pandoc-types-1.17.2
21−- hslua-0.9.0
21+- hslua-0.9.2
2222- skylighting-0.4.1
2323- cmark-gfm-0.1.1
2424- QuickCheck-2.10.0.1
stack.yaml+1−1
@@ -8,7 +8,7 @@ packages:
88- '.'
99extra-deps:
1010- pandoc-types-1.17.2
11−- hslua-0.9.0
11+- hslua-0.9.2
1212- skylighting-0.4.1
1313- cmark-gfm-0.1.1
1414- QuickCheck-2.10.0.1