on 548ea5f help sign in
4 files changed+37−58
since splitsnapshots
unifiedsplit
CURATORS.md+17−13 build-constraints.yaml+19−24 commenter−20 etc/commenter/src/lib.rs+1−1
CURATORS.md+17−13
@@ -317,7 +317,7 @@ First run `build.sh` to regenerate updated `ltsXX/work/constraints.yaml` and `lt
317317
318318For an LTS minor bump, you'll typically want to:
319319
320−* Add constraints to package `range:` fields _under_ the `source:` field in that `constraints.yaml` (should not be necessary normally to edit `snapshot-incomplete.yaml` to change the version used for that package).
320+* Add constraints to package `range:` fields _under_ the `source:` field in that `constraints.yaml`, and edit `snapshot-incomplete.yaml` to change the version used for that package, if necessary.
321321* Add new packages to the `constraints.yaml` file
322322* Test, benchmark, haddock failures can also be added to package fields in the `constraints.yaml` if necessary, though it should be avoided if possible for LTS.
323323
@@ -422,16 +422,20 @@ errors for builds, tests and benchmarks.
422422
423423### Large scale enabling/disabling of packages
424424
425−`etc/commenter` is a binary that automates `build-constraints.yaml` workflows.
425+`etc/commenter` is a binary that mostly automates the translation of
426+`./check` errors into lines that go into `build-constraints.yaml`. It
427+can only handle bounds issues, compilation issues still need to be
428+handled manually.
429+
430+It disables all offending packages/test suites/benchmarks, so it is
431+only meant to be used when we close bounds issues and want to disable
432+packages, and when upgrading GHC.
426433
427434#### Setup
428435This is currently a rust program, You can install the rust toolchain
429436by using [rustup](https://rustup.rs/).
430437
431−For some commands you also need etc/commenter/latest-version installed.
432−```
433−stack install --stack-yaml etc/commenter/latest-version/stack.yaml
434−```
438+Then `cargo install --locked --path etc/commenter`
435439
436440#### Example usage
437441
@@ -452,7 +456,7 @@ testing-feat (GHC 9 bounds issues, Grandfathered dependencies) (not present) dep
452456
453457Now run:
454458```
455−./check 2>&1 >/dev/null | ./commenter add
459+./check 2>&1 >/dev/null | commenter add
456460```
457461
458462You will get this output:
@@ -479,8 +483,8 @@ Re-run this command until no more packages are disabled.
479483We can periodically remove all packages under the bounds sections and then re-run the disabling flow above until we get a clean plan. This will automatically pick up packages that have been fixed.
480484
481485```
482−./commenter clear
483−./check 2>&1 >/dev/null | ./commenter add
486+commenter clear
487+./check 2>&1 >/dev/null | commenter add
484488```
485489
486490Repeat the second command until no updates are made to build-constraints.yaml.
@@ -489,7 +493,7 @@ Repeat the second command until no updates are made to build-constraints.yaml.
489493
490494Run `stack update` before doing this.
491495
492−`./commenter outdated` looks through all bounds issues and library
496+`commenter outdated` looks through all bounds issues and library
493497compilation failures and compares the marked version with the latest hackage release. Example output is
494498
495499```
@@ -500,7 +504,7 @@ aeson mismatch, auto: 1.5.6.0, hackage: 2.0.2.0
500504where "manual" means the bound was added manually by a curator,
501505perhaps due to a compilation failure so we could try re-enabling the
502506package. "auto" means it's part of the sections generated by
503−`./commenter`, to update that run the `Re-enabling` step as documented
507+`commenter`, to update that run the `Re-enabling` step as documented
504508above.
505509
506510`outdated` only finds packages that are in the auto generated
@@ -516,7 +520,7 @@ To diff existing snapshots, or to evaluate changes before they end up
516520in a snapshot you can run:
517521
518522```
519−./commenter diff-snapshot <old-snapshot.yaml> <new-snapshot.yaml>
523+commenter diff-snapshot <old-snapshot.yaml> <new-snapshot.yaml>
520524```
521525
522526Existing snapshots can be retrieved from https://github.com/commercialhaskell/stackage-snapshots. Preliminary snapshots can be generated by running relevant parts of `automated/build.sh`, at the time of writing:
@@ -531,7 +535,7 @@ TARGET=nightly-2021-01-14 \ # the date doesn't matter
531535
532536#### Finding disabled packages with lots of dependents
533537
534−`./commenter disabled` prints the number of transitive dependents a disabled package has. Low hanging fruit to get a lot of packages included again.
538+`commenter disabled` prints the number of transitive dependents a disabled package has. Low hanging fruit to get a lot of packages included again.
535539
536540Example output:
537541```
build-constraints.yaml+19−24
@@ -10,14 +10,6 @@ cabal-format-version: "3.0"
1010# Constraints for brand new builds
1111packages:
1212
13− "Xy Ren <xy.r@outlook.com> @re-xyr":
14− - cleff
15−
16− "Janus Troelsen <ysangkok@gmail.com> @ysangkok":
17− - ListZipper
18− - rollbar
19− - timezone-olson-th
20−
2113 "David Burkett <david@davidburkett.xyz> @Disco-Dave":
2214 - katip-wai
2315
@@ -74,7 +66,6 @@ packages:
7466 - regex-posix-clib
7567 - regex-tdfa
7668 - java-adt
77− - shelly
7869 - tasty-silver
7970
8071 "Diogo Biazus <diogo@biazus.ca>":
@@ -316,10 +307,8 @@ packages:
316307 - essence-of-live-coding-gloss
317308 - essence-of-live-coding-pulse
318309 - essence-of-live-coding-quickcheck
319− - essence-of-live-coding-warp
320310 - pulse-simple
321311 - simple-affine-space
322− - has-transformers
323312
324313 "Paul Johnson <paul@cogito.org.uk> @PaulJohnson":
325314 - geodetics
@@ -408,7 +397,7 @@ packages:
408397 - normalization-insensitive
409398
410399 "Jacob Stanley <jacob@stanley.io> @jacobstanley":
411− - hedgehog < 1.1 # https://github.com/commercialhaskell/stackage/issues/6415
400+ - hedgehog
412401 - hedgehog-quickcheck
413402 - transformers-bifunctors
414403 - unix-compat
@@ -775,7 +764,7 @@ packages:
775764 - foreign-store
776765 - formatting
777766 - gtk2hs-buildtools
778− - happy < 1.21.0 || > 1.21.0 # https://github.com/commercialhaskell/stackage/issues/6294
767+ - happy
779768 - hybrid-vectors
780769 - indents
781770 - language-c
@@ -901,6 +890,7 @@ packages:
901890 - wai-slack-middleware
902891 - sysinfo
903892 - xmonad-extras
893+ - shelly
904894 - persistent-redis
905895 - fakedata
906896 - fakedata-parser
@@ -1133,7 +1123,7 @@ packages:
11331123 - bugsnag-haskell
11341124 - gravatar
11351125 - load-env
1136− - yesod-auth-oauth2 < 0.7 # https://github.com/commercialhaskell/stackage/issues/6424
1126+ - yesod-auth-oauth2
11371127 - yesod-markdown
11381128 - yesod-paginator
11391129
@@ -2975,7 +2965,7 @@ packages:
29752965 - wai-session-postgresql
29762966
29772967 "Haisheng Wu <freizl@gmail.com> @freizl":
2978− - hoauth2 < 2.0 # https://github.com/commercialhaskell/stackage/issues/6424
2968+ - hoauth2
29792969
29802970 "Falko Peters <falko.peters@gmail.com> @informatikr":
29812971 - scrypt
@@ -3017,7 +3007,7 @@ packages:
30173007 "Justus Adam <dev@justus.science> @JustusAdam":
30183008 - marvin
30193009 - marvin-interpolate
3020− - mustache < 2.4.0 # https://github.com/commercialhaskell/stackage/issues/6421
3010+ - mustache
30213011 - exit-codes >= 1.0.0
30223012
30233013 "Cindy Wang <cindylinz@gmail.com> @CindyLinz":
@@ -3732,7 +3722,7 @@ packages:
37323722 - hslua-classes
37333723 - hslua-core
37343724 - hslua-marshalling
3735− - hslua-module-doclayout < 0 # https://github.com/commercialhaskell/stackage/issues/6416
3725+ - hslua-module-doclayout
37363726 - hslua-module-path
37373727 - hslua-module-system
37383728 - hslua-module-text
@@ -4766,7 +4756,6 @@ packages:
47664756
47674757 "Grandfathered dependencies":
47684758 - Boolean
4769− - Cabal-syntax
47704759 - Decimal
47714760 - Diff
47724761 - FloatingHex
@@ -4894,7 +4883,7 @@ packages:
48944883 - dlist
48954884 - dlist-instances
48964885 - dlist-nonempty
4897− - double-conversion < 2.0.3.0 # https://github.com/commercialhaskell/stackage/issues/6417
4886+ - double-conversion
48984887 - dual-tree
48994888 - easy-file
49004889 - easytest
@@ -5714,6 +5703,9 @@ packages:
57145703 - chronos < 0 # tried chronos-1.1.3, but its *library* requires the disabled package: bytesmith
57155704 - chronos-bench < 0 # tried chronos-bench-0.2.0.2, but its *library* requires the disabled package: chronos
57165705 - clang-compilation-database < 0 # tried clang-compilation-database-0.1.0.1, but its *library* does not support: base-4.15.1.0
5706+ - clash-ghc < 0 # tried clash-ghc-1.4.6, but its *library* does not support: ghc-bignum-1.1
5707+ - clash-lib < 0 # tried clash-lib-1.4.6, but its *library* does not support: ghc-bignum-1.1
5708+ - clash-prelude < 0 # tried clash-prelude-1.4.6, but its *library* does not support: ghc-bignum-1.1
57175709 - classyplate < 0 # tried classyplate-0.3.2.0, but its *library* does not support: base-4.15.1.0
57185710 - classyplate < 0 # tried classyplate-0.3.2.0, but its *library* does not support: template-haskell-2.17.0.0
57195711 - clock-extras < 0 # tried clock-extras-0.1.0.2, but its *library* does not support: clock-0.8.2
@@ -5861,6 +5853,7 @@ packages:
58615853 - ghc-clippy-plugin < 0 # tried ghc-clippy-plugin-0.0.0.1, but its *library* does not support: dhall-1.40.2
58625854 - ghc-clippy-plugin < 0 # tried ghc-clippy-plugin-0.0.0.1, but its *library* does not support: ghc-9.0.2
58635855 - ghc-syb-utils < 0 # tried ghc-syb-utils-0.3.0.0, but its *library* does not support: ghc-9.0.2
5856+ - ghc-typelits-extra < 0 # tried ghc-typelits-extra-0.4.3, but its *library* does not support: ghc-bignum-1.1
58645857 - ghcjs-dom < 0 # tried ghcjs-dom-0.9.5.0, but its *library* requires the disabled package: ghcjs-dom-jsaddle
58655858 - gi-gsk < 0 # tried gi-gsk-4.0.4, but its *library* does not support: gi-gdk-3.0.25
58665859 - gi-webkit2 < 0 # tried gi-webkit2-4.0.28, but its *library* requires the disabled package: gi-soup
@@ -6571,6 +6564,7 @@ packages:
65716564 - tries < 0 # tried tries-0.0.6.1, but its *library* requires the disabled package: rose-trees
65726565 - true-name < 0 # tried true-name-0.1.0.3, but its *library* does not support: template-haskell-2.17.0.0
65736566 - type-combinators-singletons < 0 # tried type-combinators-singletons-0.2.1.0, but its *library* requires the disabled package: type-combinators
6567+ - tz < 0 # tried tz-0.1.3.5, but its *library* does not support: template-haskell-2.17.0.0
65746568 - ucam-webauth < 0 # tried ucam-webauth-0.1.0.0, but its *library* does not support: aeson-1.5.6.0
65756569 - ucam-webauth < 0 # tried ucam-webauth-0.1.0.0, but its *library* does not support: attoparsec-0.14.4
65766570 - ucam-webauth < 0 # tried ucam-webauth-0.1.0.0, but its *library* does not support: base-4.15.1.0
@@ -6692,7 +6686,6 @@ packages:
66926686 - greskell-websocket < 1.0.0.0
66936687 - hruby < 0.4.0.0
66946688 - hspec-expectations-json < 1.0.0.5
6695− - http2 < 3.0.3
66966689 - jose < 0.9
66976690 - jsonpath < 0.2.1.0
66986691 - kanji < 3.5
@@ -6707,6 +6700,11 @@ packages:
67076700 - stripe-wreq < 1.0.1.12
67086701 - yaml < 0.11.7
67096702
6703+ # happy-1.21.0 is deprecated an unbuildable
6704+ # https://github.com/commercialhaskell/stackage/issues/6294
6705+ # see also https://github.com/commercialhaskell/stackage/issues/6242
6706+ - happy < 1.21
6707+
67106708 # https://github.com/commercialhaskell/stackage/issues/6264
67116709 # Requires GHC 9.2
67126710 # Any new package-version that must use GHC 9.2 should be added here.
@@ -7253,6 +7251,7 @@ skipped-tests:
72537251 - temporary-resourcet # tried temporary-resourcet-0.1.0.1, but its *test-suite* does not support: tasty-1.4.2.1
72547252 - test-framework # tried test-framework-0.8.2.0, but its *test-suite* requires the disabled package: libxml
72557253 - transient # tried transient-0.7.0.0, but its *test-suite* does not support: random-1.2.1
7254+ - tzdata # tried tzdata-0.2.20201021.0, but its *test-suite* requires the disabled package: test-framework-th
72567255 - ucam-webauth # tried ucam-webauth-0.1.0.0, but its *test-suite* does not support: QuickCheck-2.14.2
72577256 - ucam-webauth # tried ucam-webauth-0.1.0.0, but its *test-suite* does not support: generic-random-1.5.0.1
72587257 - ucam-webauth # tried ucam-webauth-0.1.0.0, but its *test-suite* does not support: hspec-2.8.5
@@ -7277,8 +7276,6 @@ skipped-tests:
72777276 # https://github.com/commercialhaskell/stackage/issues/6363
72787277 - amqp
72797278
7280− - c2hs # https://github.com/commercialhaskell/stackage/issues/6420
7281−
72827279# end of skipped-tests
72837280
72847281# Tests listed in expected-test-failures configure correctly but may fail to run
@@ -7554,7 +7551,6 @@ expected-test-failures:
75547551 - xml-picklers # https://github.com/Philonous/xml-picklers/issues/5
75557552 - xmlbf
75567553 - yesod-gitrev # needs a git repo https://github.com/commercialhaskell/stackage/issues/6132
7557− - yesod-markdown # https://github.com/pbrisbin/yesod-markdown/issues/77
75587554
75597555 # Assertion failures due to module name ambiguity.
75607556 # These _should_ be fixed by using the `hide` section of this file
@@ -8035,7 +8031,6 @@ no-revisions:
80358031- hi-file-parser
80368032
80378033
8038−# Note, this no longer actually does anything with curator2 unfortunately:
80398034# Do not build these packages in parallel with others. Useful for high memory
80408035# usage.
80418036non-parallel-builds:
commenterdeleted−20
@@ -1,20 +0,0 @@
1−#!/usr/bin/env bash
2−
3−if ! command -v cargo
4−then
5− echo "Rust doesn't seem to be installed. https://rustup.rs/"
6− exit 1
7−fi
8−
9−if [ "$1" = "outdated" ];
10−then
11− if ! command -v latest-version &> /dev/null
12− then
13− echo "This command requires latest-version in your PATH"
14− echo "Install it with: "
15− echo "stack install --stack-yaml etc/commenter/latest-version/stack.yaml"
16− exit 1
17− fi
18−fi
19−
20−cargo run -q --release --manifest-path etc/commenter/Cargo.toml $@
etc/commenter/src/lib.rs+1−1
@@ -164,7 +164,7 @@ fn latest_version(packages: impl Iterator<Item = Package>) -> BTreeMap<Package,
164164 Command::new("latest-version")
165165 .args(packages.map(|p| p.0))
166166 .output()
167− .expect("Could not find latest-version in PATH")
167+ .unwrap()
168168 .stdout,
169169 )
170170 .unwrap()