Skip to content

Commit da23255

Browse files
committed
Unbreak Travis.
Replace a hand-written .travis.yml with a haskell-ci generated one. Also add a GHC 8.6 configuration and bump the GHC version in the 8.4 one. Also fix various small issues with the .cabal files to make 'cabal check' pass.
1 parent 1ad20d3 commit da23255

File tree

9 files changed

+193
-61
lines changed

9 files changed

+193
-61
lines changed

.travis.yml

Lines changed: 147 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,170 @@
1-
# See also https://github.com/hvr/multi-ghc-travis
1+
# This Travis job script has been generated by a script via
2+
#
3+
# haskell-ci '--ghc-head' 'cabal.project'
4+
#
5+
# For more information, see https://github.com/haskell-CI/haskell-ci
6+
#
7+
# version: 0.3
8+
#
29
language: c
3-
sudo: false
10+
dist: xenial
11+
12+
git:
13+
submodules: false # whether to recursively clone submodules
414

515
cache:
616
directories:
717
- $HOME/.cabal/packages
818
- $HOME/.cabal/store
919

1020
before_cache:
11-
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log
21+
- rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log
1222
# remove files that are regenerated by 'cabal update'
13-
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.*
14-
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/*.json
15-
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.cache
16-
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar
17-
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar.idx
23+
- rm -fv $CABALHOME/packages/hackage.haskell.org/00-index.*
24+
- rm -fv $CABALHOME/packages/hackage.haskell.org/*.json
25+
- rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.cache
26+
- rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar
27+
- rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx
28+
29+
- rm -rfv $CABALHOME/packages/head.hackage
1830

1931
matrix:
2032
include:
21-
- compiler: "ghc-7.4.2"
22-
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-7.4.2], sources: [hvr-ghc]}}
23-
- compiler: "ghc-7.6.3"
24-
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-7.6.3], sources: [hvr-ghc]}}
25-
- compiler: "ghc-7.8.4"
26-
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-7.8.4], sources: [hvr-ghc]}}
27-
- compiler: "ghc-7.10.3"
28-
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-7.10.3], sources: [hvr-ghc]}}
29-
- compiler: "ghc-8.0.2"
30-
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.0.2], sources: [hvr-ghc]}}
33+
- compiler: "ghc-8.6.4"
34+
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.4], sources: [hvr-ghc]}}
35+
- compiler: "ghc-8.4.4"
36+
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.4.4], sources: [hvr-ghc]}}
3137
- compiler: "ghc-8.2.2"
32-
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.2.2], sources: [hvr-ghc]}}
33-
- compiler: "ghc-8.4.3"
34-
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.4.3], sources: [hvr-ghc]}}
38+
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.2.2], sources: [hvr-ghc]}}
39+
- compiler: "ghc-8.0.2"
40+
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.0.2], sources: [hvr-ghc]}}
41+
- compiler: "ghc-7.10.3"
42+
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-7.10.3], sources: [hvr-ghc]}}
43+
- compiler: "ghc-7.8.4"
44+
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-7.8.4], sources: [hvr-ghc]}}
45+
- compiler: "ghc-7.6.3"
46+
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-7.6.3], sources: [hvr-ghc]}}
47+
- compiler: "ghc-7.4.2"
48+
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-7.4.2], sources: [hvr-ghc]}}
49+
- compiler: "ghc-head"
50+
env: GHCHEAD=true
51+
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-head], sources: [hvr-ghc]}}
52+
53+
allow_failures:
54+
- compiler: "ghc-head"
3555

3656
before_install:
37-
- HC=${CC}
38-
- unset CC
39-
- PATH=/opt/ghc/bin:/opt/ghc-ppa-tools/bin:$PATH
57+
- HC=/opt/ghc/bin/${CC}
58+
- HCPKG=${HC/ghc/ghc-pkg}
59+
- unset CC
60+
- CABAL=/opt/ghc/bin/cabal
61+
- CABALHOME=$HOME/.cabal
62+
- export PATH="$CABALHOME/bin:$PATH"
63+
- ROOTDIR=$(pwd)
64+
- HCNUMVER=$(( $(${HC} --numeric-version|sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+).*/\1 * 10000 + \2 * 100 + \3/') ))
65+
- echo $HCNUMVER
4066

4167
install:
42-
- cabal --version
43-
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
44-
- travis_retry cabal update -v
45-
- cabal new-build -w ${HC} --dep ${XCABFLAGS} all
68+
- ${CABAL} --version
69+
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
70+
- TEST=--enable-tests
71+
- BENCH=--enable-benchmarks
72+
- GHCHEAD=${GHCHEAD-false}
73+
- travis_retry ${CABAL} update -v
74+
- sed -i.bak 's/^jobs:/-- jobs:/' $CABALHOME/config
75+
- rm -fv cabal.project cabal.project.local
76+
# Overlay Hackage Package Index for GHC HEAD: https://github.com/hvr/head.hackage
77+
- |
78+
if $GHCHEAD; then
79+
sed -i 's/-- allow-newer: .*/allow-newer: *:base/' $CABALHOME/config
80+
for pkg in $($HCPKG list --simple-output); do pkg=$(echo $pkg | sed 's/-[^-]*$//'); sed -i "s/allow-newer: /allow-newer: *:$pkg, /" $CABALHOME/config; done
81+
82+
echo 'repository head.hackage' >> $CABALHOME/config
83+
echo ' url: http://head.hackage.haskell.org/' >> $CABALHOME/config
84+
echo ' secure: True' >> $CABALHOME/config
85+
echo ' root-keys: 07c59cb65787dedfaef5bd5f987ceb5f7e5ebf88b904bbd4c5cbdeb2ff71b740' >> $CABALHOME/config
86+
echo ' 2e8555dde16ebd8df076f1a8ef13b8f14c66bad8eafefd7d9e37d0ed711821fb' >> $CABALHOME/config
87+
echo ' 8f79fd2389ab2967354407ec852cbe73f2e8635793ac446d09461ffb99527f6e' >> $CABALHOME/config
88+
echo ' key-threshold: 3' >> $CABALHOME.config
89+
90+
grep -Ev -- '^\s*--' $CABALHOME/config | grep -Ev '^\s*$'
91+
92+
${CABAL} new-update head.hackage -v
93+
fi
94+
- grep -Ev -- '^\s*--' $CABALHOME/config | grep -Ev '^\s*$'
95+
- rm -f cabal.project
96+
- touch cabal.project
97+
- "printf 'packages: \"hackage-security\"\\n' >> cabal.project"
98+
- "printf 'packages: \"hackage-security-http-client\"\\n' >> cabal.project"
99+
- "printf 'packages: \"example-client\"\\n' >> cabal.project"
100+
- "printf 'packages: \"hackage-security-curl\"\\n' >> cabal.project"
101+
- "printf 'packages: \"hackage-root-tool\"\\n' >> cabal.project"
102+
- "printf 'packages: \"hackage-repo-tool\"\\n' >> cabal.project"
103+
- "printf 'packages: \"hackage-security-HTTP\"\\n' >> cabal.project"
104+
- "printf 'write-ghc-environment-files: always\\n' >> cabal.project"
105+
- touch cabal.project.local
106+
- "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | grep -vE -- '^(example-client|hackage-repo-tool|hackage-root-tool|hackage-security|hackage-security-HTTP|hackage-security-curl|hackage-security-http-client)$' | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
107+
- cat cabal.project || true
108+
- cat cabal.project.local || true
109+
- if [ -f "hackage-security/configure.ac" ]; then (cd "hackage-security" && autoreconf -i); fi
110+
- if [ -f "hackage-security-http-client/configure.ac" ]; then (cd "hackage-security-http-client" && autoreconf -i); fi
111+
- if [ -f "example-client/configure.ac" ]; then (cd "example-client" && autoreconf -i); fi
112+
- if [ -f "hackage-security-curl/configure.ac" ]; then (cd "hackage-security-curl" && autoreconf -i); fi
113+
- if [ -f "hackage-root-tool/configure.ac" ]; then (cd "hackage-root-tool" && autoreconf -i); fi
114+
- if [ -f "hackage-repo-tool/configure.ac" ]; then (cd "hackage-repo-tool" && autoreconf -i); fi
115+
- if [ -f "hackage-security-HTTP/configure.ac" ]; then (cd "hackage-security-HTTP" && autoreconf -i); fi
116+
- rm -f cabal.project.freeze
117+
- ${CABAL} new-freeze -w ${HC} ${TEST} ${BENCH} --project-file="cabal.project" --dry
118+
- "cat \"cabal.project.freeze\" | sed -E 's/^(constraints: *| *)//' | sed 's/any.//'"
119+
- rm "cabal.project.freeze"
120+
- ${CABAL} new-build -w ${HC} ${TEST} ${BENCH} --project-file="cabal.project" --dep -j2 all
121+
- ${CABAL} new-build -w ${HC} --disable-tests --disable-benchmarks --project-file="cabal.project" --dep -j2 all
122+
- rm -rf .ghc.environment.* "hackage-security"/dist "hackage-security-http-client"/dist "example-client"/dist "hackage-security-curl"/dist "hackage-root-tool"/dist "hackage-repo-tool"/dist "hackage-security-HTTP"/dist
123+
- DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
46124

47125
# Here starts the actual work to be performed for the package under test;
48126
# any command which exits with a non-zero exit code causes the build to fail.
49127
script:
50-
# prepare `cabal sdist` source-tree environment to make sure source-tarballs are complete
51-
- read -a PKGS <<< "hackage-security hackage-security-http-client hackage-security-curl hackage-security-HTTP hackage-security hackage-root-tool hackage-repo-tool example-client"
52-
- rm -rf sdists; mkdir sdists
53-
- for PKG in "${PKGS[@]}"; do
54-
cd "$PKG"; cabal sdist --output-directory="../sdists/$PKG" || break; cd ..;
55-
done
56-
- cd sdists/
57-
58-
# first build just hackage-security with installed constraints, with and without tests.
59-
# silly yaml, seeing : colon
60-
- "echo packages: hackage-security > cabal.project"
61-
- cabal new-build --disable-tests --constraint "directory installed" --constraint "bytestring installed" ${XCABFLAGS} all
62-
- cabal new-test --enable-tests --constraint "directory installed" --constraint "bytestring installed" ${XCABFLAGS} all
63-
64-
# build all packages and run testsuite
65-
- cp -v ../cabal.project ./
66-
- cabal new-build ${XCABFLAGS} -j1 all
67-
- cabal new-test ${XCABFLAGS} -j1 all
128+
# test that source-distributions can be generated
129+
- ${CABAL} new-sdist all
130+
- mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/
131+
- cd ${DISTDIR} || false
132+
- find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
133+
- rm -f cabal.project
134+
- touch cabal.project
135+
- "printf 'packages: \"hackage-security-*/*.cabal\"\\n' >> cabal.project"
136+
- "printf 'packages: \"hackage-security-http-client-*/*.cabal\"\\n' >> cabal.project"
137+
- "printf 'packages: \"example-client-*/*.cabal\"\\n' >> cabal.project"
138+
- "printf 'packages: \"hackage-security-curl-*/*.cabal\"\\n' >> cabal.project"
139+
- "printf 'packages: \"hackage-root-tool-*/*.cabal\"\\n' >> cabal.project"
140+
- "printf 'packages: \"hackage-repo-tool-*/*.cabal\"\\n' >> cabal.project"
141+
- "printf 'packages: \"hackage-security-HTTP-*/*.cabal\"\\n' >> cabal.project"
142+
- "printf 'write-ghc-environment-files: always\\n' >> cabal.project"
143+
- touch cabal.project.local
144+
- "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | grep -vE -- '^(example-client|hackage-repo-tool|hackage-root-tool|hackage-security|hackage-security-HTTP|hackage-security-curl|hackage-security-http-client)$' | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
145+
- cat cabal.project || true
146+
- cat cabal.project.local || true
147+
# this builds all libraries and executables (without tests/benchmarks)
148+
- ${CABAL} new-build -w ${HC} --disable-tests --disable-benchmarks all
149+
150+
# build & run tests, build benchmarks
151+
- ${CABAL} new-build -w ${HC} ${TEST} ${BENCH} all
152+
- ${CABAL} new-test -w ${HC} ${TEST} ${BENCH} all
153+
154+
# cabal check
155+
- (cd hackage-security-* && ${CABAL} check)
156+
- (cd hackage-security-http-client-* && ${CABAL} check)
157+
- (cd example-client-* && ${CABAL} check)
158+
- (cd hackage-security-curl-* && ${CABAL} check)
159+
- (cd hackage-root-tool-* && ${CABAL} check)
160+
- (cd hackage-repo-tool-* && ${CABAL} check)
161+
- (cd hackage-security-HTTP-* && ${CABAL} check)
162+
163+
# haddock
164+
- ${CABAL} new-haddock -w ${HC} ${TEST} ${BENCH} all
165+
166+
# Build without installed constraints for packages in global-db
167+
- rm -f cabal.project.local; ${CABAL} new-build -w ${HC} --disable-tests --disable-benchmarks all
68168

169+
# REGENDATA ["--ghc-head","cabal.project"]
69170
# EOF

example-client/example-client.cabal

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: example-client
22
version: 0.1.0.0
3-
synopsis: Example client using the Hackage security library
4-
-- description:
3+
synopsis: Example hackage-security client
4+
description: Example client using the hackage-security library.
55
license: BSD3
66
license-file: LICENSE
77
author: Edsko de Vries
@@ -10,6 +10,8 @@ copyright: Copyright 2015 Well-Typed LLP
1010
category: Distribution
1111
build-type: Simple
1212
cabal-version: >=1.10
13+
tested-with: GHC==8.6.4, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3,
14+
GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
1315

1416
flag use-network-uri
1517
description: Are we using network-uri?
@@ -19,7 +21,7 @@ executable example-client
1921
main-is: Main.hs
2022
other-modules: Prelude ExampleClient.Options
2123

22-
build-depends: base >= 4.4,
24+
build-depends: base >= 4.5 && < 4.13,
2325
bytestring >= 0.9,
2426
Cabal >= 1.12,
2527
directory >= 1.1,

hackage-repo-tool/hackage-repo-tool.cabal

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@ cabal-version: 1.12
22
name: hackage-repo-tool
33
version: 0.1.1.1
44

5-
synopsis: Utility to manage secure file-based package repositories
5+
synopsis: Manage secure file-based package repositories
66
description: This utility can be used to manage secure file-based package
7-
repositories (creating [TUF](https://theupdateframework.github.io/)
8-
metadata as well as a Hackage index tarball) which can be used by
9-
clients such as [cabal-install](http://hackage.haskell.org/package/cabal-install).
10-
Currently it also provides various lower level utilities for creating
11-
and signing TUF files.
7+
repositories (creating
8+
[TUF](https://theupdateframework.github.io/)
9+
metadata as well as a Hackage index tarball) which can be used
10+
by clients such as
11+
[cabal-install](http://hackage.haskell.org/package/cabal-install).
12+
Currently it also provides various lower level utilities
13+
for creating and signing TUF files.
1214
.
13-
This is part of the [Hackage Security](https://github.com/haskell/hackage-security#readme)
15+
This is part of the
16+
[Hackage Security](https://github.com/haskell/hackage-security#readme)
1417
infrastructure.
1518
license: BSD3
1619
license-file: LICENSE
@@ -21,6 +24,8 @@ category: Distribution
2124
homepage: https://github.com/haskell/hackage-security
2225
bug-reports: https://github.com/haskell/hackage-security/issues
2326
build-type: Simple
27+
tested-with: GHC==8.6.4, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3,
28+
GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
2429

2530
extra-source-files:
2631
ChangeLog.md

hackage-root-tool/hackage-root-tool.cabal

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: hackage-root-tool
22
version: 0.1.0.0
3-
synopsis: Utility for Hackage key holders to generate keys and sign root info.
3+
synopsis: Generate Hackage keys and sign root info
44
description: A command line tool for people who hold Hackage root keys.
55
It can generate new keys, and can sign root information.
66
.
@@ -14,6 +14,8 @@ copyright: Copyright 2015 Well-Typed LLP
1414
category: Distribution
1515
build-type: Simple
1616
cabal-version: >=1.10
17+
tested-with: GHC==8.6.4, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3,
18+
GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
1719

1820
extra-source-files:
1921
ChangeLog.md

hackage-security-HTTP/hackage-security-HTTP.cabal

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ homepage: https://github.com/haskell/hackage-security
1515
bug-reports: https://github.com/haskell/hackage-security/issues
1616
build-type: Simple
1717
cabal-version: >=1.10
18+
tested-with: GHC==8.6.4, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3,
19+
GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
1820

1921
extra-source-files:
2022
ChangeLog.md

hackage-security-curl/hackage-security-curl.cabal

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
name: hackage-security-curl
22
version: 0.1.0.0
3-
synopsis: Hackage security bindings against curl (and other external downloaders)
3+
synopsis: curl bindings for hackage-security
4+
description: hackage-security bindings for curl (and other
5+
external downloaders)
6+
.
7+
This is part of the Hackage Security infrastructure.
48
homepage: http://github.com/well-typed/hackage-security/
59
license: BSD3
610
license-file: LICENSE
@@ -10,14 +14,16 @@ copyright: Copyright 2015 Well-Typed LLP
1014
category: Distribution
1115
build-type: Simple
1216
cabal-version: >=1.10
17+
tested-with: GHC==8.6.4, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3,
18+
GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
1319

1420
flag use-network-uri
1521
description: Are we using network-uri?
1622
manual: False
1723

1824
library
1925
exposed-modules: Hackage.Security.Client.Repository.HttpLib.Curl
20-
build-depends: base >= 4.4,
26+
build-depends: base >= 4.5 && < 4.13,
2127
bytestring >= 0.9,
2228
process >= 1.1,
2329
hackage-security

hackage-security-http-client/hackage-security-http-client.cabal

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
name: hackage-security-http-client
22
version: 0.1.1
3-
synopsis: Hackage security bindings for the http-client library
3+
synopsis: hackage-security bindings for http-client
4+
description: hackage-security bindings for the http-client library.
5+
.
6+
This is part of the Hackage Security infrastructure.
47
homepage: http://github.com/well-typed/hackage-security/
58
license: BSD3
69
license-file: LICENSE
@@ -10,14 +13,16 @@ copyright: Copyright 2015 Well-Typed LLP
1013
category: Distribution
1114
build-type: Simple
1215
cabal-version: >=1.10
16+
tested-with: GHC==8.6.4, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3,
17+
GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
1318

1419
flag use-network-uri
1520
description: Are we using network-uri?
1621
manual: False
1722

1823
library
1924
exposed-modules: Hackage.Security.Client.Repository.HttpLib.HttpClient
20-
build-depends: base >= 4.4,
25+
build-depends: base >= 4.5 && < 4.13,
2126
bytestring >= 0.9,
2227
data-default-class >= 0.0,
2328
http-client >= 0.5 && < 0.6,

hackage-security/hackage-security.cabal

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ category: Distribution
2929
homepage: https://github.com/haskell/hackage-security
3030
bug-reports: https://github.com/haskell/hackage-security/issues
3131
build-type: Simple
32+
tested-with: GHC==8.6.4, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3,
33+
GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
34+
3235

3336
extra-source-files:
3437
ChangeLog.md

precompute-fileinfo/precompute-fileinfo.cabal

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
name: precompute-fileinfo
22
version: 0.1.0.0
33
synopsis: Precompute fileinfo for faster Hackage migration
4+
description: Utility for precomputing fileinfo
5+
for faster Hackage migration.
6+
.
7+
This is part of the Hackage Security infrastructure.
48
license: BSD3
59
license-file: LICENSE
610
author: Edsko de Vries
@@ -9,6 +13,8 @@ copyright: Copyright 2015 Well-Typed LLP
913
category: Distribution
1014
build-type: Simple
1115
cabal-version: >=1.10
16+
tested-with: GHC==8.6.4, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3,
17+
GHC==7.8.4, GHC==7.6.3, GHC==7.4.2
1218

1319
executable precompute-fileinfo
1420
main-is: Main.hs

0 commit comments

Comments
 (0)