@@ -1,130 +1,71 @@
11version: "2.1"
2−
3−env: &env
2+jobs:
3+ build:
4+ macos:
5+ xcode: 9.4.1
46 environment:
5− LC_ALL: "C.UTF-8"
6− docker:
7− - image: fpco/stack-build:lts-13
8−
9−#-----------------------------------------------------------------------------
10−# Common utility stuff, not to be modified usually
11−#-----------------------------------------------------------------------------
12−
13−preinstall: &preinstall
14− run: |
15− echo 'export PATH=/opt/cabal/bin:/opt/ghc/bin:$PATH' >> $BASH_ENV
16− source $BASH_ENV
17− apt-get update
18−
19−restore: &restore
20− # Needs to happen after installing ca-certificates
21− restore_cache:
22− key: v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
23−
24−save: &save
25− save_cache:
26− key: v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}
27− paths:
28− - ~/.cabal
29− - ~/.ghc
30− - ~/.local
31− - ~/.stack
32−
33−commands:
34− cabal_build:
35− parameters:
36− ghcversion:
37− type: string
7+ HOMEBREW_NO_AUTO_UPDATE: 1
388 steps:
39− - checkout
40− - *preinstall
41− - *restore
42− - run:
43− name: install cabal
44− command: apt-get install -y cabal-install-2.4
45− - run:
46− name: install ghc
47− command: |
48− apt-get install -y ghc-<< parameters.ghcversion >>
49− - run:
50− name: build and test project
51− command: |
52− set -e
53− cabal v2-update
54− TMPDIR=`mktemp -d -t circleci.XXXXXXX`
55− cabal v2-sdist --output-dir=${TMPDIR}
56− cd ${TMPDIR}
57− tar xvzf *.tar.gz
58− cd *
59− cabal v2-build -w ghc-<< parameters.ghcversion >> -j2 --disable-optimization --dependencies-only --enable-tests --enable-benchmarks
60− cabal v2-build -w ghc-<< parameters.ghcversion >> -j2 --disable-optimization --enable-tests --enable-benchmarks 2>build.log
61− cat build.log
62− # fail if we had warnings in local build
63− # this is to work around the fact that cabal v2 doesn't allow
64− # us to use -Werror for just local build:
65− # https://github.com/haskell/cabal/issues/4247
66− ! grep -q "[Ww]arning:" build.log
67− cabal v2-test -w ghc-<< parameters.ghcversion >> -j2 --disable-optimization --enable-tests
68− cabal v2-haddock -w ghc-<< parameters.ghcversion >>
69− cabal check
70− - *save
9+ - checkout
10+ - restore_cache:
11+ # See https://circleci.com/docs/2.0/caching/
12+ name: Restore Cached Dependencies
13+ keys:
14+ - stack-dependencies-{{ checksum "stack.yaml" }}
15+ - run:
16+ name: Install stack
17+ command: stack --version || brew update && brew install haskell-stack
18+ - run:
19+ name: Resolve/Update Dependencies
20+ command: stack --no-terminal setup
21+ - run:
22+ name: Run tests
23+ command: stack --no-terminal test
24+ - run:
25+ name: Install executable
26+ command: stack --no-terminal install
27+ - run:
28+ name: Create artifacts
29+ command: |
30+ export VERSION=$(grep '^[Vv]ersion:' pandoc.cabal | awk '{print $$2;}')
31+ export ARTIFACTS=macos-release-candidate
32+ export RESOURCES=${ARTIFACTS}/Resources
33+ export ROOT=${ARTIFACTS}/pandoc
34+ export DEST=${ROOT}/usr/local
35+ export ME=$(whoami)
36+ export BASE=pandoc-$VERSION
37+ mkdir -p ${ARTIFACTS}
38+ mkdir -p ${RESOURCES}
39+ mkdir -p ${DEST}/bin
40+ mkdir -p ${DEST}/share/man/man1
41+ cp ~/.local/bin/pandoc ${DEST}/bin/
42+ strip ${DEST}/bin/pandoc
43+ cp man/pandoc.1 ${DEST}/share/man/man1/pandoc.1
44+ ~/.local/bin/pandoc -s COPYING.md -Vpagetitle=License -o ${RESOURCES}/license.html
45+ chown -R $ME:staff ${ROOT}
46+ sed -e "s/PANDOCVERSION/${VERSION}/" macos/distribution.xml.in > ${ARTIFACTS}/distribution.xml
47+ cp macos/Makefile ${ARTIFACTS}/
48+ zip -r macos-release-candidate.zip ${ARTIFACTS}
7149
72−#-----------------------------------------------------------------------------
73−# Build matrix
74−#-----------------------------------------------------------------------------
50+ - save_cache:
51+ name: Cache Dependencies
52+ key: stack-dependencies-{{ checksum "stack.yaml" }}
53+ paths:
54+ - "/root/.stack"
55+ - ".stack-work"
56+ - "/usr/local/bin/stack"
7557
76−jobs:
77− cabal-ghc-8_8_1:
78− <<: *env
79− steps:
80− - cabal_build:
81− ghcversion: 8.8.1
82−
83− cabal-ghc-8_6_5:
84− <<: *env
85− steps:
86− - cabal_build:
87− ghcversion: 8.6.5
88−
89− cabal-ghc-8_4_4:
90− <<: *env
91− steps:
92− - cabal_build:
93− ghcversion: 8.4.4
94−
95− cabal-ghc-8_2_2:
96− <<: *env
97− steps:
98− - cabal_build:
99− ghcversion: 8.2.2
100−
101− cabal-ghc-8_0_2:
102− <<: *env
103− steps:
104− - cabal_build:
105− ghcversion: 8.0.2
106−
107− stack-ghc-8_6:
108− <<: *env
109− steps:
110− - checkout
111− - *preinstall
112− - *restore
113− - run: |
114− set -e
115− apt-get install -y ghc-8.6.5
116− stack update
117− stack test --system-ghc --fast --ghc-options="-Werror" .
118− - *save
58+ - store_artifacts:
59+ # https://circleci.com/docs/2.0/artifacts/
60+ path: macos-release-candidate.zip
61+ destination: macos-release-candidate.zip
11962
12063workflows:
121− version: "2.1"
122− build:
64+ version: 2
65+ release:
12366 jobs:
124− - cabal-ghc-8_6_5
125− - cabal-ghc-8_4_4
126− - cabal-ghc-8_2_2
127− - cabal-ghc-8_0_2
128− - stack-ghc-8_6
129− # - cabal-ghc-8_8_1
130−
67+ - build:
68+ filters:
69+ branches:
70+ only:
71+ - /rc\/.*/