diff options
author | John MacFarlane <jgm@berkeley.edu> | 2020-07-24 09:57:27 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2020-08-11 21:33:21 -0700 |
commit | c9900278321a14071c6721fdfb702e39ca5e2a38 (patch) | |
tree | 1724171740a0569330e7c48d055e13735878a4b4 | |
parent | 5d4932d7ef8e1edec31d99661ffe8e2f4a77244f (diff) | |
download | pandoc-c9900278321a14071c6721fdfb702e39ca5e2a38.tar.gz |
Linux rc build: use ghc-musl container.
This simplifies our build process a bit (over using
a customized alpine container).
Use new `--enable-executable-static` flag in build.
make_artifacts.sh: Fix deprecated find -perm syntax.
-rw-r--r-- | .github/workflows/release-candidate.yml | 1 | ||||
-rw-r--r-- | Makefile | 9 | ||||
-rw-r--r-- | linux/Dockerfile | 30 | ||||
-rw-r--r-- | linux/Makefile | 18 | ||||
-rw-r--r--[-rwxr-xr-x] | linux/make_artifacts.sh (renamed from linux/make_deb.sh) | 41 | ||||
-rw-r--r-- | linux/make_tarball.sh | 19 |
6 files changed, 43 insertions, 75 deletions
diff --git a/.github/workflows/release-candidate.yml b/.github/workflows/release-candidate.yml index 7e169e3fb..3edbaa624 100644 --- a/.github/workflows/release-candidate.yml +++ b/.github/workflows/release-candidate.yml @@ -138,4 +138,3 @@ jobs: with: name: macos-release-candidate path: macos-release-candidate - @@ -5,6 +5,7 @@ BRANCH?=master RESOLVER?=lts-13 GHCOPTS=-fdiagnostics-color=always WEBSITE=../../web/pandoc.org +REVISION?=1 quick: stack install --ghc-options='$(GHCOPTS)' --install-ghc --flag 'pandoc:embed_data_files' --fast --test --ghc-options='-j +RTS -A64m -RTS' --test-arguments='-j4 --hide-successes $(TESTARGS)' @@ -70,8 +71,12 @@ checkdocs: README.md ! grep -n -e "\t" MANUAL.txt changelog debpkg: man/pandoc.1 - make -C linux && \ - cp linux/artifacts/pandoc-$(version)-*.* . + docker run -v `pwd`:/mnt \ + -v `pwd`/linux/artifacts:/artifacts \ + -e REVISION=$(REVISION) \ + -w /mnt \ + utdemir/ghc-musl:v12-libgmp-ghc8101 bash \ + /mnt/linux/make_artifacts.sh macospkg: man/pandoc.1 ./macos/make_macos_package.sh diff --git a/linux/Dockerfile b/linux/Dockerfile deleted file mode 100644 index f577d8765..000000000 --- a/linux/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -# USE ALPINE LINUX -FROM alpine:3.11 -RUN apk --no-cache add \ - alpine-sdk \ - bash \ - ca-certificates \ - cabal \ - dpkg \ - fakeroot \ - ghc \ - git \ - gmp-dev \ - xz \ - zlib-dev \ - zlib-static -RUN mkdir -p /usr/src/ && \ - git clone https://github.com/jgm/pandoc /usr/src/pandoc -WORKDIR /usr/src/pandoc -CMD cabal --version && \ - ghc --version && \ - git pull && \ - git checkout -b work $TREE && \ - cabal new-update && \ - cabal new-clean && \ - cabal new-configure --enable-tests -f-export-dynamic -fstatic -fembed_data_files -fbibutils --ghc-options '-optc-Os -optl=-pthread -optl=-static -fPIC -split-sections' . pandoc-citeproc && \ - cabal new-build . pandoc-citeproc && \ - cabal new-test -j1 . pandoc-citeproc && \ - for f in $(find dist-newstyle -name 'pandoc*' -type f -perm +400); do cp $f /artifacts/; done && \ - bash linux/make_deb.sh && \ - bash linux/make_tarball.sh diff --git a/linux/Makefile b/linux/Makefile deleted file mode 100644 index 4e8eeb00a..000000000 --- a/linux/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -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 - -interact: - docker run --env TREE=$(TREE) --env REVISION=$(REVISION) \ - -v $(ARTIFACTS):/artifacts -it alpine-pandoc bash - -setup: - docker pull alpine:edge - -.PHONY: build setup interact diff --git a/linux/make_deb.sh b/linux/make_artifacts.sh index cbbc8a184..3cb892a8e 100755..100644 --- a/linux/make_deb.sh +++ b/linux/make_artifacts.sh @@ -9,6 +9,20 @@ esac ARTIFACTS="${ARTIFACTS:-/artifacts}" +# build binaries + +cabal --version +ghc --version + +cabal v2-update +cabal v2-clean +cabal v2-configure --enable-tests -f-export-dynamic -fstatic -fembed_data_files -fbibutils --enable-executable-static --ghc-options '-optc-Os -optl=-pthread -split-sections' . pandoc-citeproc +cabal v2-build . pandoc-citeproc +cabal v2-test -j1 . pandoc-citeproc +for f in $(find dist-newstyle -name 'pandoc*' -type f -perm /400); do cp $f /artifacts/; done + +# make deb + VERSION=`$ARTIFACTS/pandoc --version | awk '{print $2; exit;}'` REVISION=${REVISION:-1} DEBVER=$VERSION-$REVISION @@ -17,8 +31,6 @@ 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 @@ -29,12 +41,12 @@ cp $ARTIFACTS/pandoc $DEST/bin/ cp $ARTIFACTS/pandoc-citeproc $DEST/bin/ strip $DEST/bin/pandoc strip $DEST/bin/pandoc-citeproc -cp man/pandoc.1 $DEST/share/man/man1/pandoc.1 +cp /mnt/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 +cp /mnt/COPYRIGHT $COPYRIGHT echo "" >> $COPYRIGHT echo "pandoc-citeproc" >> $COPYRIGHT $ARTIFACTS/pandoc-citeproc --license >> $COPYRIGHT @@ -46,6 +58,25 @@ perl -pe "s/VERSION/$DEBVER/" linux/control.in | \ perl -pe "s/INSTALLED_SIZE/$INSTALLED_SIZE/" \ > $DIST/DEBIAN/control -fakeroot dpkg-deb --build $DIST +# we limit compression to avoid OOM error +fakeroot dpkg-deb -Zgzip -z9 --build $DIST rm -rf $DIST cp $BASE.deb $ARTIFACTS/ + +# Make tarball + +TARGET=pandoc-$VERSION +cd $ARTIFACTS +rm -rf $TARGET +mkdir $TARGET +mkdir $TARGET/bin $TARGET/share $TARGET/share/man $TARGET/share/man/man1 +./pandoc-citeproc --man > $TARGET/share/man/man1/pandoc-citeproc.1 +cp /mnt/man/pandoc.1 $TARGET/share/man/man1 +mv pandoc pandoc-citeproc $TARGET/bin +strip $TARGET/bin/pandoc +strip $TARGET/bin/pandoc-citeproc +gzip -9 $TARGET/share/man/man1/pandoc.1 +gzip -9 $TARGET/share/man/man1/pandoc-citeproc.1 + +tar cvzf $TARGET-linux-amd64.tar.gz $TARGET +rm -r $TARGET diff --git a/linux/make_tarball.sh b/linux/make_tarball.sh deleted file mode 100644 index 8961d7ee5..000000000 --- a/linux/make_tarball.sh +++ /dev/null @@ -1,19 +0,0 @@ -set -e - -ARTIFACTS="${ARTIFACTS:-/artifacts}" -VERSION=`$ARTIFACTS/pandoc --version | awk '{print $2; exit;}'` -TARGET=pandoc-$VERSION - -cd $ARTIFACTS -rm -rf $TARGET -mkdir $TARGET -mkdir $TARGET/bin $TARGET/share $TARGET/share/man $TARGET/share/man/man1 -./pandoc-citeproc --man > $TARGET/share/man/man1/pandoc-citeproc.1 -cp /usr/src/pandoc/man/pandoc.1 $TARGET/share/man/man1 -mv pandoc pandoc-citeproc $TARGET/bin -strip $TARGET/bin/pandoc -strip $TARGET/bin/pandoc-citeproc -gzip -9 $TARGET/share/man/man1/pandoc.1 -gzip -9 $TARGET/share/man/man1/pandoc-citeproc.1 -tar cvzf $TARGET-linux-amd64.tar.gz $TARGET -rm -r $TARGET |