mirror of
https://github.com/jgm/pandoc.git
synced 2026-07-10 19:37:12 +00:00
110 lines
2.9 KiB
Bash
110 lines
2.9 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
cabal update
|
|
cabal clean
|
|
cabal build $CABALOPTS --ghc-options="$GHCOPTS" pandoc-cli
|
|
BINPATH=$(cabal list-bin $CABALOPTS --ghc-options="$GHCOPTS" pandoc-cli)
|
|
echo "Built executable: $BINPATH"
|
|
|
|
WORK="$(pwd)"
|
|
|
|
MACHINE=$(uname -m)
|
|
case "$MACHINE" in
|
|
x86_64) ARCHITECTURE=amd64;;
|
|
i686) ARCHITECTURE=i386;;
|
|
i386) ARCHITECTURE=i386;;
|
|
aarch64) ARCHITECTURE=arm64;;
|
|
armv6l | armv7l) ARCHITECTURE=armhf;;
|
|
riscv64) ARCHITECTURE=riscv64;;
|
|
*) ARCHITECTURE=unknown;;
|
|
esac
|
|
|
|
ARTIFACTS="$WORK/linux-${ARCHITECTURE}"
|
|
echo "Creating $ARTIFACTS directory"
|
|
mkdir -p $ARTIFACTS
|
|
|
|
echo "Copying and stripping pandoc binary"
|
|
cp "$BINPATH" "$ARTIFACTS/pandoc"
|
|
strip "$ARTIFACTS/pandoc"
|
|
|
|
echo "Checking that the binary is statically linked..."
|
|
file "$ARTIFACTS/pandoc" | grep "statically linked"
|
|
|
|
echo "Checking that the binary has +lua and +server support..."
|
|
"$ARTIFACTS/pandoc" --version | grep -q '+server +lua'
|
|
|
|
echo "Checking that the binary 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=$WORK/$BASE
|
|
DEST=$DIST/usr
|
|
COPYRIGHT=$DEST/share/doc/pandoc/copyright
|
|
|
|
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/"
|
|
pushd "$DEST/bin"
|
|
ln -s pandoc pandoc-server
|
|
ln -s pandoc pandoc-lua
|
|
popd
|
|
for manpage in pandoc.1 pandoc-lua.1 pandoc-server.1
|
|
do
|
|
cp "$WORK/pandoc-cli/man/$manpage" "$DEST/share/man/man1/$manpage"
|
|
gzip -9 "$DEST/share/man/man1/$manpage"
|
|
done
|
|
cp $WORK/COPYRIGHT "$COPYRIGHT"
|
|
echo "" >> "$COPYRIGHT"
|
|
|
|
INSTALLED_SIZE=$(du -k -s "$DEST" | awk '{print $1}')
|
|
mkdir "$DIST/DEBIAN"
|
|
perl -pe "s/VERSION/$DEBVER/" $WORK/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/"
|
|
echo "Created $BASE.deb"
|
|
}
|
|
|
|
# Make tarball for pandoc
|
|
make_tarball() {
|
|
TARGET=pandoc-$VERSION
|
|
pushd "$ARTIFACTS"
|
|
rm -rf "$TARGET"
|
|
mkdir "$TARGET"
|
|
mkdir "$TARGET/bin" "$TARGET/share" "$TARGET/share/man" "$TARGET/share/man/man1"
|
|
cp $WORK/pandoc-cli/man/pandoc.1 $WORK/pandoc-cli/man/pandoc-server.1 $WORK/pandoc-cli/man/pandoc-lua.1 "$TARGET/share/man/man1"
|
|
gzip -9 "$TARGET"/share/man/man1/*.1
|
|
mv pandoc "$TARGET/bin"
|
|
pushd "$TARGET/bin"
|
|
ln -s pandoc pandoc-server
|
|
ln -s pandoc pandoc-lua
|
|
popd
|
|
|
|
tar cvzf "$TARGET-linux-$ARCHITECTURE.tar.gz" "$TARGET"
|
|
echo "Created $TARGET-linux-$ARCHITECTURE.tar.gz"
|
|
rm -r "$TARGET"
|
|
popd
|
|
}
|
|
|
|
echo "Making debian package..."
|
|
make_deb
|
|
|
|
echo "Making tarball..."
|
|
make_tarball
|
|
|
|
echo "Finished!"
|
|
exit 0
|