Skip to content

Commit 8fdbb23

Browse files
committed
Intial project (code from hw-dsv)
1 parent 3afc006 commit 8fdbb23

39 files changed

+1682
-0
lines changed

.circleci/config.yml

+249
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,249 @@
1+
defaults: &defaults
2+
working_directory: ~/project
3+
docker:
4+
- image: quay.io/haskell_works/stack-build-cabal:2018-01-29
5+
6+
steps:
7+
- checkout
8+
9+
- run:
10+
name: Remove Cabal file
11+
command: rm -f *.cabal
12+
13+
- run:
14+
name: Copying scripts
15+
command: |
16+
mkdir -p ~/.local/bin
17+
cp ./scripts/* ~/.local/bin
18+
19+
- run:
20+
name: Query resolver & ghc version
21+
command: |
22+
resolver "$(resolver $LTS)" > resolver.version
23+
ghc-version $(cat resolver.version) > ghc.version
24+
25+
- run:
26+
name: Find all sub-projects
27+
command: projects-summary > projects.summary
28+
29+
##### Building library
30+
- restore_cache:
31+
keys:
32+
- stack--nAz6PsL--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}--{{ checksum "package.yaml" }}--{{ checksum "stack.yaml" }}
33+
- stack--nAz6PsL--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}--{{ checksum "package.yaml" }}
34+
- stack--nAz6PsL--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}--
35+
- stack--nAz6PsL--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--X
36+
37+
- run:
38+
name: Stack setup
39+
command: stack setup --resolver ${LTS}
40+
41+
- save_cache:
42+
key: stack--nAz6PsL--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--X
43+
paths: [~/.stack, ~/project/.stack-work]
44+
45+
- run:
46+
name: Building dependencies
47+
command: |
48+
stack build --resolver ${LTS} --dependencies-only
49+
stack build --resolver ${LTS} --dependencies-only --test --no-run-tests
50+
51+
- save_cache:
52+
key: stack--nAz6PsL--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}--{{ checksum "package.yaml" }}
53+
paths: [~/.stack, ~/project/.stack-work]
54+
55+
- run: stack build --resolver ${LTS} --test --no-run-tests
56+
57+
- save_cache:
58+
key: stack--nAz6PsL--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}--{{ checksum "package.yaml" }}--{{ checksum "stack.yaml" }}
59+
paths: [~/.stack, ~/project/.stack-work]
60+
61+
##### Running tests
62+
- run:
63+
name: Running tests against latest on hackage
64+
command: stack test --resolver ${LTS}
65+
66+
cabalbuild: &cabalbuild
67+
working_directory: ~/project
68+
69+
steps:
70+
- checkout
71+
72+
- run:
73+
name: Add GHC tools to PATH
74+
command: |
75+
echo "HOME=$HOME"
76+
echo "BASH_ENV=$BASH_ENV"
77+
echo "PATH=$PATH"
78+
echo 'export PATH="$PATH:/opt/ghc/bin/"' >> $BASH_ENV
79+
80+
- run:
81+
name: Copying scripts
82+
command: |
83+
mkdir -p ~/.local/bin
84+
cp ./scripts/* ~/.local/bin
85+
86+
- run:
87+
name: GHC version
88+
command: |
89+
echo "$GHC" > ghc.version
90+
date +%Y-%m > month.version
91+
92+
- run:
93+
name: Find all sub-projects
94+
command: ./scripts/projects-summary > projects.summary
95+
96+
- run:
97+
name: Generate cabal file
98+
command: |
99+
rm -f *.cabal
100+
hpack
101+
102+
##### Building library
103+
- restore_cache:
104+
keys:
105+
- cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}--extra
106+
- cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}--
107+
- cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "month.version"}}
108+
109+
- run:
110+
name: Building build dependencies
111+
command: |
112+
./scripts/mk-cabal-project > cabal.project
113+
cabal update
114+
cabal new-build --disable-tests --disable-benchmarks --project-file="cabal.project" --dep -j${CABAL_THREADS:-4} all
115+
cabal new-build --enable-tests --enable-benchmarks --project-file="cabal.project" --dep -j${CABAL_THREADS:-4} all
116+
117+
- save_cache:
118+
key: cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}--
119+
paths: [~/.cabal/packages, ~/.cabal/store]
120+
121+
- run:
122+
name: Building project
123+
command: |
124+
cabal new-build --enable-tests --enable-benchmarks --project-file="cabal.project" -j${CABAL_THREADS:-4} all
125+
126+
- save_cache:
127+
key: cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}--extra
128+
paths: [~/.cabal/packages, ~/.cabal/store]
129+
130+
- save_cache:
131+
key: cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "month.version"}}
132+
paths: [~/.cabal/packages, ~/.cabal/store]
133+
134+
- run:
135+
name: Running tests
136+
command: |
137+
if grep '^test-suite' *.cabal > /dev/null; then
138+
cabal new-test --project-file="cabal.project" -j${CABAL_THREADS:-4} all
139+
else
140+
echo Not tests to run
141+
fi
142+
143+
version: 2.0
144+
jobs:
145+
ghc-8.4.3:
146+
environment:
147+
- GHC: "ghc8.4.3"
148+
docker:
149+
- image: quay.io/haskell_works/ghc-8.4.3
150+
<<: *cabalbuild
151+
152+
ghc-8.2.2:
153+
environment:
154+
- GHC: "ghc8.2.2"
155+
docker:
156+
- image: quay.io/haskell_works/ghc-8.2.2
157+
<<: *cabalbuild
158+
159+
lts-12:
160+
environment:
161+
- LTS: "lts-12"
162+
<<: *defaults
163+
164+
checked-builds:
165+
docker:
166+
- image: quay.io/haskell_works/ghc-8.4.3
167+
168+
steps:
169+
- checkout
170+
171+
- run:
172+
name: Add GHC tools to PATH
173+
command: |
174+
echo "HOME=$HOME"
175+
echo "BASH_ENV=$BASH_ENV"
176+
echo "PATH=$PATH"
177+
echo 'export PATH="$PATH:/opt/ghc/bin/"' >> $BASH_ENV
178+
179+
- run:
180+
name: Copying scripts
181+
command: |
182+
mkdir -p ~/.local/bin
183+
cp ./scripts/* ~/.local/bin
184+
185+
- deploy:
186+
command: |
187+
hpack
188+
if [ "$CIRCLE_PROJECT_USERNAME" == "haskell-works" ]; then
189+
if [[ "$CIRCLE_BRANCH" == master ]]; then
190+
when tag autotag
191+
elif [[ "$CIRCLE_TAG" =~ v.* ]]; then
192+
publish
193+
fi
194+
fi
195+
196+
release:
197+
docker:
198+
- image: quay.io/haskell_works/ghc-8.4.3
199+
200+
steps:
201+
- checkout
202+
203+
- run:
204+
name: Add GHC tools to PATH
205+
command: |
206+
echo "HOME=$HOME"
207+
echo "BASH_ENV=$BASH_ENV"
208+
echo "PATH=$PATH"
209+
echo 'export PATH="$PATH:/opt/ghc/bin/"' >> $BASH_ENV
210+
211+
- run:
212+
name: Copying scripts
213+
command: |
214+
mkdir -p ~/.local/bin
215+
cp ./scripts/* ~/.local/bin
216+
217+
- deploy:
218+
command: |
219+
hpack
220+
if [ "$CIRCLE_PROJECT_USERNAME" == "haskell-works" ]; then
221+
if [[ "$CIRCLE_BRANCH" == master ]]; then
222+
when tag autotag
223+
elif [[ "$CIRCLE_TAG" =~ v.* ]]; then
224+
publish
225+
fi
226+
fi
227+
228+
workflows:
229+
version: 2
230+
multiple-ghcs:
231+
jobs:
232+
- ghc-8.4.3
233+
- ghc-8.2.2
234+
- lts-12
235+
- checked-builds:
236+
requires:
237+
- lts-12
238+
filters:
239+
branches:
240+
only: master
241+
242+
tagged-release:
243+
jobs:
244+
- release:
245+
filters:
246+
branches:
247+
ignore: /.*/
248+
tags:
249+
only: /^v.*/

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ cabal.sandbox.config
1515
*.aux
1616
*.hp
1717

18+
/*.cabal
1819
/*.submodules
1920
/.stack-work/
2021
/.stack-work-*/

0 commit comments

Comments
 (0)