blob: 1b4d6dbe00b17f16dbab32f19db7fcd58b8442f9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
#!/bin/bash
set -e
CABALOPTS="-f-export-dynamic -fembed_data_files --enable-executable-static -j4"
GHCOPTS="-j4 +RTS -A256m -RTS -split-sections -optc-Os -optl=-pthread"
MACHINE=$(uname -m)
case "$MACHINE" in
x86_64) ARCHITECTURE=amd64;;
i686) ARCHITECTURE=i386;;
i386) ARCHITECTURE=i386;;
aarch64) ARCHITECTURE=arm64;;
armv6l | armv7l) ARCHITECTURE=armhf;;
*) ARCHITECTURE=unknown;;
esac
ARTIFACTS="${ARTIFACTS:-/artifacts}"
# This is our sentinel that tells us when we're done.
rm -f $ARTIFACTS/DONE
clean_up() {
echo "All done!" > "$ARTIFACTS/DONE"
}
trap clean_up EXIT
# build binaries
cabal --version
ghc --version
cabal update
cabal clean
cabal build $CABALOPTS --ghc-options="$GHCOPTS" all
cabal test $CABALOPTS --ghc-options="$GHCOPTS" all
# Copy executable to ARTIFACTS
find dist-newstyle -name 'pandoc' -type f -perm /400 -exec cp {} "$ARTIFACTS"/ \;
# Strip executable
strip "$ARTIFACTS/pandoc"
# Confirm that we have static builds
file "$ARTIFACTS/pandoc" | grep "statically linked"
# Confirm that it has +lua and +server support
"$ARTIFACTS/pandoc" --version | grep -q '+server +lua'
# Confirm that it has data files baked in:
strings "$ARTIFACTS/pandoc" | grep -q '\$title\$'
make_deb() {
VERSION=$("$ARTIFACTS"/pandoc --version | awk '{print $2; exit;}')
REVISION=${REVISION:-1}
DEBVER=$VERSION-$REVISION
BASE=pandoc-$DEBVER-$ARCHITECTURE
DIST=$HOME/$BASE
DEST=$DIST/usr
COPYRIGHT=$DEST/share/doc/pandoc/copyright
cd $HOME
mkdir -p "$DEST/bin"
mkdir -p "$DEST/share/man/man1"
mkdir -p "$DEST/share/doc/pandoc"
find "$DIST" -type d -exec chmod 755 {} \;
cp "$ARTIFACTS/pandoc" "$DEST/bin/"
cd "$DEST/bin"
ln -s pandoc pandoc-server
ln -s pandoc pandoc-lua
cd $HOME
for manpage in pandoc.1 pandoc-lua.1 pandoc-server.1
do
cp $HOME/man/$manpage "$DEST/share/man/man1/$manpage"
gzip -9 "$DEST/share/man/man1/$manpage"
done
cp $HOME/COPYRIGHT "$COPYRIGHT"
echo "" >> "$COPYRIGHT"
INSTALLED_SIZE=$(du -k -s "$DEST" | awk '{print $1}')
mkdir "$DIST/DEBIAN"
perl -pe "s/VERSION/$DEBVER/" $HOME/linux/control.in | \
perl -pe "s/ARCHITECTURE/$ARCHITECTURE/" | \
perl -pe "s/INSTALLED_SIZE/$INSTALLED_SIZE/" \
> "$DIST/DEBIAN/control"
# we limit compression to avoid OOM error
fakeroot dpkg-deb -Zgzip -z9 --build "$DIST"
rm -rf "$DIST"
cp "$BASE.deb" "$ARTIFACTS/"
}
# Make tarball for pandoc
make_tarball() {
TARGET=pandoc-$VERSION
cd "$ARTIFACTS"
rm -rf "$TARGET"
mkdir "$TARGET"
mkdir "$TARGET/bin" "$TARGET/share" "$TARGET/share/man" "$TARGET/share/man/man1"
cp $HOME/man/pandoc.1 $HOME/man/pandoc-server.1 $HOME/man/pandoc-lua.1 "$TARGET/share/man/man1"
gzip -9 "$TARGET"/share/man/man1/*.1
mv pandoc "$TARGET/bin"
cd "$TARGET/bin"
ln -s pandoc pandoc-server
ln -s pandoc pandoc-lua
cd "$ARTIFACTS"
tar cvzf "$TARGET-linux-$ARCHITECTURE.tar.gz" "$TARGET"
rm -r "$TARGET"
}
make_deb
make_tarball
exit 0
|