Skip to content

Commit 8e5a948

Browse files
authored
Merge pull request #781 from haskell-CI/prefer-oldest
Resolve #653: Add prefer-oldest option to constraint-sets
2 parents 5bb403c + 35668e7 commit 8e5a948

File tree

6 files changed

+33
-19
lines changed

6 files changed

+33
-19
lines changed

.github/workflows/haskell-ci.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,12 @@ jobs:
292292
- name: prepare for constraint sets
293293
run: |
294294
rm -f cabal.project.local
295+
- name: constraint set prefer-oldest
296+
run: |
297+
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --prefer-oldest all --dry-run
298+
cabal-plan topo | sort
299+
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --prefer-oldest --dependencies-only -j2 all
300+
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --prefer-oldest all
295301
- name: save cache
296302
if: always()
297303
uses: actions/cache/save@v4

cabal.haskell-ci

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,21 +91,24 @@ macos-jobs: ==8.10.*
9191
-- Package will be build with different constraints.
9292
-- This is useful to check compatibility with older versions of dependencies.
9393

94-
constraint-set deepseq-1.4
95-
ghc: (>= 7.8 && <7.10) || == 8.2.2
96-
constraints: deepseq ==1.4.*
97-
constraints: binary installed
94+
constraint-set prefer-oldest
95+
-- we can limit GHC's and add extra constraints for each constraint-set
96+
-- for haskell-ci itself, we don't.
97+
98+
-- ghc: (>= 7.8 && <7.10) || == 8.2.2
99+
-- constraints: deepseq ==1.4.*
98100

99101
-- Constraint sets accept booleans for few steps, as the main script
100102
-- Defaults are False.
101103
-- These fields don't accept version ranges: you should rather create
102104
-- another constraint set.
103105

104-
-- tests: False
105-
-- run-tests: False
106+
tests: False
107+
run-tests: False
108+
prefer-oldest: True
106109
-- docspec: False
107110
-- benchmarks: False
108-
haddock: True
111+
-- haddock: True
109112

110113
-- Copy over additional properties specified in a cabal.project file.
111114
-- Possible values are:

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.19.20250506
3+
version: 0.19.20250531
44
synopsis: Haskell CI script generator
55
description:
66
Script generator (@haskell-ci@) for

haskell-ci.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,9 @@ run_cmd $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
549549
# constraint sets
550550
put_info "constraint sets"
551551
run_cmd rm -f cabal.project.local
552-
put_info "constraint set deepseq-1.4"
552+
put_info "constraint set prefer-oldest"
553+
run_cmd $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --dependencies-only -j all
554+
run_cmd $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
553555

554556

555557
# Done

src/HaskellCI/Config/ConstraintSet.hs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,16 @@ import HaskellCI.Newtypes
1111
import HaskellCI.OptionsGrammar
1212

1313
data ConstraintSet = ConstraintSet
14-
{ csName :: String
15-
, csGhcVersions :: VersionRange
16-
, csGhcjs :: Bool
17-
, csConstraints :: [String] -- we parse these simply as strings
18-
, csTests :: Bool
19-
, csRunTests :: Bool
20-
, csDocspec :: Bool
21-
, csBenchmarks :: Bool
22-
, csHaddock :: Bool
14+
{ csName :: String
15+
, csGhcVersions :: VersionRange
16+
, csGhcjs :: Bool
17+
, csConstraints :: [String] -- we parse these simply as strings
18+
, csTests :: Bool
19+
, csRunTests :: Bool
20+
, csDocspec :: Bool
21+
, csBenchmarks :: Bool
22+
, csHaddock :: Bool
23+
, csPreferOldest :: Bool
2324
}
2425
deriving (Show, Generic)
2526

@@ -40,3 +41,4 @@ constraintSetGrammar name = ConstraintSet name
4041
<*> C.booleanFieldDef "docspec" (field @"csDocspec") False
4142
<*> C.booleanFieldDef "benchmarks" (field @"csBenchmarks") False
4243
<*> C.booleanFieldDef "haddock" (field @"csHaddock") False
44+
<*> C.booleanFieldDef "prefer-oldest" (field @"csPreferOldest") False

src/HaskellCI/GitHub.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,8 @@ makeGitHub _argv config@Config {..} gitconfig prj jobs@JobVersions {..} = do
497497
let testFlag = if csTests cs then "--enable-tests" else "--disable-tests"
498498
let benchFlag = if csBenchmarks cs then "--enable-benchmarks" else "--disable-benchmarks"
499499
let constraintFlags = map (\x -> "--constraint='" ++ x ++ "'") (csConstraints cs)
500-
let allFlags = unwords (testFlag : benchFlag : constraintFlags)
500+
let preferFlags = if csPreferOldest cs then ["--prefer-oldest"] else []
501+
let allFlags = unwords (testFlag : benchFlag : constraintFlags ++ preferFlags)
501502

502503
sh_cs $ "$CABAL v2-build $ARG_COMPILER " ++ allFlags ++ " all --dry-run"
503504
sh_cs $ "cabal-plan topo | sort"

0 commit comments

Comments
 (0)