Skip to content

Commit 2dd8dac

Browse files
authored
Merge pull request #484 from RyanGlScott/work-around-cabal-7291
Work around haskell/cabal#7291 by writing allow-newer to cabal.project, not ~/.cabal/config
2 parents e435541 + 6575925 commit 2dd8dac

File tree

8 files changed

+44
-8
lines changed

8 files changed

+44
-8
lines changed

.github/workflows/haskell-ci.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ jobs:
119119
url: http://hackage.haskell.org/
120120
EOF
121121
if $HEADHACKAGE; then
122-
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1/g')" >> $CABAL_CONFIG
123122
cat >> $CABAL_CONFIG <<EOF
124123
repository head.hackage.ghc.haskell.org
125124
url: https://ghc.gitlab.haskell.org/head.hackage/
@@ -223,6 +222,9 @@ jobs:
223222
package bytestring
224223
tests: False
225224
EOF
225+
if $HEADHACKAGE; then
226+
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project
227+
fi
226228
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(Cabal|cabal-install-parsers|haskell-ci)$/; }' >> cabal.project.local
227229
cat cabal.project
228230
cat cabal.project.local

fixtures/empty-line.github

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ jobs:
136136
url: http://hackage.haskell.org/
137137
EOF
138138
if $HEADHACKAGE; then
139-
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1/g')" >> $CABAL_CONFIG
140139
cat >> $CABAL_CONFIG <<EOF
141140
repository head.hackage.ghc.haskell.org
142141
url: https://ghc.gitlab.haskell.org/head.hackage/
@@ -214,6 +213,9 @@ jobs:
214213
allow-newer: servant-js:servant
215214
allow-newer: servant-js:servant-foreign
216215
EOF
216+
if $HEADHACKAGE; then
217+
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project
218+
fi
217219
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(servant|servant-client|servant-docs|servant-server)$/; }' >> cabal.project.local
218220
cat cabal.project
219221
cat cabal.project.local

fixtures/empty-line.travis

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,6 @@ before_install:
159159
echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
160160
- |
161161
if $HEADHACKAGE; then
162-
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1/g')" >> $CABALHOME/config
163162
echo "repository head.hackage.ghc.haskell.org" >> $CABALHOME/config
164163
echo " url: https://ghc.gitlab.haskell.org/head.hackage/" >> $CABALHOME/config
165164
echo " secure: True" >> $CABALHOME/config
@@ -197,6 +196,10 @@ install:
197196
echo "constraints: foundatiion >= 0.14" >> cabal.project
198197
echo "allow-newer: servant-js:servant" >> cabal.project
199198
echo "allow-newer: servant-js:servant-foreign" >> cabal.project
199+
- |
200+
if $HEADHACKAGE; then
201+
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> $CABALHOME/config
202+
fi
200203
- "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(servant|servant-client|servant-docs|servant-server)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
201204
- cat cabal.project || true
202205
- cat cabal.project.local || true
@@ -242,6 +245,10 @@ script:
242245
echo "constraints: foundatiion >= 0.14" >> cabal.project
243246
echo "allow-newer: servant-js:servant" >> cabal.project
244247
echo "allow-newer: servant-js:servant-foreign" >> cabal.project
248+
- |
249+
if $HEADHACKAGE; then
250+
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> $CABALHOME/config
251+
fi
245252
- "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(servant|servant-client|servant-docs|servant-server)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
246253
- cat cabal.project || true
247254
- cat cabal.project.local || true

fixtures/messy.github

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ jobs:
136136
url: http://hackage.haskell.org/
137137
EOF
138138
if $HEADHACKAGE; then
139-
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1/g')" >> $CABAL_CONFIG
140139
cat >> $CABAL_CONFIG <<EOF
141140
repository head.hackage.ghc.haskell.org
142141
url: https://ghc.gitlab.haskell.org/head.hackage/
@@ -211,6 +210,9 @@ jobs:
211210
if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
212211
cat >> cabal.project <<EOF
213212
EOF
213+
if $HEADHACKAGE; then
214+
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project
215+
fi
214216
cat >> cabal.project.local <<EOF
215217
constraints: deepseq installed
216218
EOF

fixtures/messy.travis

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,6 @@ before_install:
159159
echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
160160
- |
161161
if $HEADHACKAGE; then
162-
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1/g')" >> $CABALHOME/config
163162
echo "repository head.hackage.ghc.haskell.org" >> $CABALHOME/config
164163
echo " url: https://ghc.gitlab.haskell.org/head.hackage/" >> $CABALHOME/config
165164
echo " secure: True" >> $CABALHOME/config
@@ -194,6 +193,10 @@ install:
194193
- if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo 'package servant-server' >> cabal.project ; fi
195194
- "if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo ' ghc-options: -Werror=missing-methods' >> cabal.project ; fi"
196195
- |
196+
- |
197+
if $HEADHACKAGE; then
198+
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> $CABALHOME/config
199+
fi
197200
- "for pkg in deepseq; do echo \"constraints: $pkg installed\" >> cabal.project.local; done"
198201
- cat cabal.project || true
199202
- cat cabal.project.local || true
@@ -236,6 +239,10 @@ script:
236239
- if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo 'package servant-server' >> cabal.project ; fi
237240
- "if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo ' ghc-options: -Werror=missing-methods' >> cabal.project ; fi"
238241
- |
242+
- |
243+
if $HEADHACKAGE; then
244+
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> $CABALHOME/config
245+
fi
239246
- "for pkg in deepseq; do echo \"constraints: $pkg installed\" >> cabal.project.local; done"
240247
- cat cabal.project || true
241248
- cat cabal.project.local || true

haskell-ci.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cabal-version: 2.2
22
name: haskell-ci
3-
version: 0.11.20210220
3+
version: 0.11.20210221
44
synopsis: Cabal package script generator for Travis-CI
55
description:
66
Script generator (@haskell-ci@) for [Travis-CI](https://travis-ci.org/) for continuous-integration testing of Haskell Cabal packages.

src/HaskellCI/GitHub.hs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ makeGitHub _argv config@Config {..} gitconfig prj jobs@JobVersions {..} = do
169169
-- (locally you want to add it to cabal.project)
170170
unless (S.null headGhcVers) $ sh $ concat $
171171
[ "if $HEADHACKAGE; then\n"
172-
, "echo \"allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\\1/g')\" >> $CABAL_CONFIG\n"
173172
, catCmd "$CABAL_CONFIG" $ unlines headHackageRepoStanza
174173
, "\nfi"
175174
]
@@ -287,6 +286,15 @@ makeGitHub _argv config@Config {..} gitconfig prj jobs@JobVersions {..} = do
287286
-- extra cabal.project fields
288287
cat "cabal.project" $ C.showFields' (const []) (const id) 2 extraCabalProjectFields
289288

289+
-- If using head.hackage, allow building with newer versions of GHC boot libraries.
290+
-- Note that we put this in a cabal.project file, not ~/.cabal/config, in order to avoid
291+
-- https://github.com/haskell/cabal/issues/7291.
292+
unless (S.null headGhcVers) $ sh $ concat $
293+
[ "if $HEADHACKAGE; then\n"
294+
, "echo \"allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\\1,/g')\" >> cabal.project\n"
295+
, "fi"
296+
]
297+
290298
-- also write cabal.project.local file with
291299
-- @
292300
-- constraints: base installed

src/HaskellCI/Travis.hs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ makeTravis argv config@Config {..} prj jobs@JobVersions {..} = do
173173
-- (locally you want to add it to cabal.project)
174174
unless (S.null headGhcVers) $ sh $ unlines $
175175
[ "if $HEADHACKAGE; then"
176-
, "echo \"allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\\1/g')\" >> $CABALHOME/config"
177176
] ++
178177
lines (catCmd Double "$CABALHOME/config" headHackageRepoStanza) ++
179178
[ "fi"
@@ -597,6 +596,15 @@ makeTravis argv config@Config {..} prj jobs@JobVersions {..} = do
597596

598597
cat "cabal.project" $ lines $ C.showFields' (const []) (const id) 2 extraCabalProjectFields
599598

599+
-- If using head.hackage, allow building with newer versions of GHC boot libraries.
600+
-- Note that we put this in a cabal.project file, not ~/.cabal/config, in order to avoid
601+
-- https://github.com/haskell/cabal/issues/7291.
602+
unless (S.null headGhcVers) $ sh $ unlines $
603+
[ "if $HEADHACKAGE; then"
604+
, "echo \"allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\\1,/g')\" >> $CABALHOME/config"
605+
, "fi"
606+
]
607+
600608
-- also write cabal.project.local file with
601609
-- @
602610
-- constraints: base installed

0 commit comments

Comments
 (0)