on master help sign in
4 files changed+55−37
since splitsnapshots
unifiedsplit
CURATORS.md+13−17 build-constraints.yaml+21−19 commenter+20 etc/commenter/src/lib.rs+1−1
CURATORS.md+13−17
@@ -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`, and edit `snapshot-incomplete.yaml` to change the version used for that package, if necessary.
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).
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,20 +422,16 @@ errors for builds, tests and benchmarks.
422422
423423### Large scale enabling/disabling of packages
424424
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.
425+`etc/commenter` is a binary that automates `build-constraints.yaml` workflows.
433426
434427#### Setup
435428This is currently a rust program, You can install the rust toolchain
436429by using [rustup](https://rustup.rs/).
437430
438−Then `cargo install --locked --path etc/commenter`
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+```
439435
440436#### Example usage
441437
@@ -456,7 +452,7 @@ testing-feat (GHC 9 bounds issues, Grandfathered dependencies) (not present) dep
456452
457453Now run:
458454```
459−./check 2>&1 >/dev/null | commenter add
455+./check 2>&1 >/dev/null | ./commenter add
460456```
461457
462458You will get this output:
@@ -483,8 +479,8 @@ Re-run this command until no more packages are disabled.
483479We 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.
484480
485481```
486−commenter clear
487−./check 2>&1 >/dev/null | commenter add
482+./commenter clear
483+./check 2>&1 >/dev/null | ./commenter add
488484```
489485
490486Repeat the second command until no updates are made to build-constraints.yaml.
@@ -493,7 +489,7 @@ Repeat the second command until no updates are made to build-constraints.yaml.
493489
494490Run `stack update` before doing this.
495491
496−`commenter outdated` looks through all bounds issues and library
492+`./commenter outdated` looks through all bounds issues and library
497493compilation failures and compares the marked version with the latest hackage release. Example output is
498494
499495```
@@ -504,7 +500,7 @@ aeson mismatch, auto: 1.5.6.0, hackage: 2.0.2.0
504500where "manual" means the bound was added manually by a curator,
505501perhaps due to a compilation failure so we could try re-enabling the
506502package. "auto" means it's part of the sections generated by
507−`commenter`, to update that run the `Re-enabling` step as documented
503+`./commenter`, to update that run the `Re-enabling` step as documented
508504above.
509505
510506`outdated` only finds packages that are in the auto generated
@@ -520,7 +516,7 @@ To diff existing snapshots, or to evaluate changes before they end up
520516in a snapshot you can run:
521517
522518```
523−commenter diff-snapshot <old-snapshot.yaml> <new-snapshot.yaml>
519+./commenter diff-snapshot <old-snapshot.yaml> <new-snapshot.yaml>
524520```
525521
526522Existing 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:
@@ -535,7 +531,7 @@ TARGET=nightly-2021-01-14 \ # the date doesn't matter
535531
536532#### Finding disabled packages with lots of dependents
537533
538−`commenter disabled` prints the number of transitive dependents a disabled package has. Low hanging fruit to get a lot of packages included again.
534+`./commenter disabled` prints the number of transitive dependents a disabled package has. Low hanging fruit to get a lot of packages included again.
539535
540536Example output:
541537```
build-constraints.yaml+21−19
@@ -10,6 +10,14 @@ 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+
1321 "David Burkett <david@davidburkett.xyz> @Disco-Dave":
1422 - katip-wai
1523
@@ -66,6 +74,7 @@ packages:
6674 - regex-posix-clib
6775 - regex-tdfa
6876 - java-adt
77+ - shelly
6978 - tasty-silver
7079
7180 "Diogo Biazus <diogo@biazus.ca>":
@@ -307,8 +316,10 @@ packages:
307316 - essence-of-live-coding-gloss
308317 - essence-of-live-coding-pulse
309318 - essence-of-live-coding-quickcheck
319+ - essence-of-live-coding-warp
310320 - pulse-simple
311321 - simple-affine-space
322+ - has-transformers
312323
313324 "Paul Johnson <paul@cogito.org.uk> @PaulJohnson":
314325 - geodetics
@@ -397,7 +408,7 @@ packages:
397408 - normalization-insensitive
398409
399410 "Jacob Stanley <jacob@stanley.io> @jacobstanley":
400− - hedgehog
411+ - hedgehog < 1.1 # https://github.com/commercialhaskell/stackage/issues/6415
401412 - hedgehog-quickcheck
402413 - transformers-bifunctors
403414 - unix-compat
@@ -764,7 +775,7 @@ packages:
764775 - foreign-store
765776 - formatting
766777 - gtk2hs-buildtools
767− - happy
778+ - happy < 1.21.0 || > 1.21.0 # https://github.com/commercialhaskell/stackage/issues/6294
768779 - hybrid-vectors
769780 - indents
770781 - language-c
@@ -890,7 +901,6 @@ packages:
890901 - wai-slack-middleware
891902 - sysinfo
892903 - xmonad-extras
893− - shelly
894904 - persistent-redis
895905 - fakedata
896906 - fakedata-parser
@@ -1123,7 +1133,7 @@ packages:
11231133 - bugsnag-haskell
11241134 - gravatar
11251135 - load-env
1126− - yesod-auth-oauth2
1136+ - yesod-auth-oauth2 < 0.7 # https://github.com/commercialhaskell/stackage/issues/6424
11271137 - yesod-markdown
11281138 - yesod-paginator
11291139
@@ -2965,7 +2975,7 @@ packages:
29652975 - wai-session-postgresql
29662976
29672977 "Haisheng Wu <freizl@gmail.com> @freizl":
2968− - hoauth2
2978+ - hoauth2 < 2.0 # https://github.com/commercialhaskell/stackage/issues/6424
29692979
29702980 "Falko Peters <falko.peters@gmail.com> @informatikr":
29712981 - scrypt
@@ -3007,7 +3017,7 @@ packages:
30073017 "Justus Adam <dev@justus.science> @JustusAdam":
30083018 - marvin
30093019 - marvin-interpolate
3010− - mustache
3020+ - mustache < 2.4.0 # https://github.com/commercialhaskell/stackage/issues/6421
30113021 - exit-codes >= 1.0.0
30123022
30133023 "Cindy Wang <cindylinz@gmail.com> @CindyLinz":
@@ -3722,7 +3732,7 @@ packages:
37223732 - hslua-classes
37233733 - hslua-core
37243734 - hslua-marshalling
3725− - hslua-module-doclayout
3735+ - hslua-module-doclayout < 0 # https://github.com/commercialhaskell/stackage/issues/6416
37263736 - hslua-module-path
37273737 - hslua-module-system
37283738 - hslua-module-text
@@ -4884,7 +4894,7 @@ packages:
48844894 - dlist
48854895 - dlist-instances
48864896 - dlist-nonempty
4887− - double-conversion
4897+ - double-conversion < 2.0.3.0 # https://github.com/commercialhaskell/stackage/issues/6417
48884898 - dual-tree
48894899 - easy-file
48904900 - easytest
@@ -5704,9 +5714,6 @@ packages:
57045714 - chronos < 0 # tried chronos-1.1.3, but its *library* requires the disabled package: bytesmith
57055715 - chronos-bench < 0 # tried chronos-bench-0.2.0.2, but its *library* requires the disabled package: chronos
57065716 - clang-compilation-database < 0 # tried clang-compilation-database-0.1.0.1, but its *library* does not support: base-4.15.1.0
5707− - clash-ghc < 0 # tried clash-ghc-1.4.6, but its *library* does not support: ghc-bignum-1.1
5708− - clash-lib < 0 # tried clash-lib-1.4.6, but its *library* does not support: ghc-bignum-1.1
5709− - clash-prelude < 0 # tried clash-prelude-1.4.6, but its *library* does not support: ghc-bignum-1.1
57105717 - classyplate < 0 # tried classyplate-0.3.2.0, but its *library* does not support: base-4.15.1.0
57115718 - classyplate < 0 # tried classyplate-0.3.2.0, but its *library* does not support: template-haskell-2.17.0.0
57125719 - clock-extras < 0 # tried clock-extras-0.1.0.2, but its *library* does not support: clock-0.8.2
@@ -5854,7 +5861,6 @@ packages:
58545861 - ghc-clippy-plugin < 0 # tried ghc-clippy-plugin-0.0.0.1, but its *library* does not support: dhall-1.40.2
58555862 - ghc-clippy-plugin < 0 # tried ghc-clippy-plugin-0.0.0.1, but its *library* does not support: ghc-9.0.2
58565863 - ghc-syb-utils < 0 # tried ghc-syb-utils-0.3.0.0, but its *library* does not support: ghc-9.0.2
5857− - ghc-typelits-extra < 0 # tried ghc-typelits-extra-0.4.3, but its *library* does not support: ghc-bignum-1.1
58585864 - ghcjs-dom < 0 # tried ghcjs-dom-0.9.5.0, but its *library* requires the disabled package: ghcjs-dom-jsaddle
58595865 - gi-gsk < 0 # tried gi-gsk-4.0.4, but its *library* does not support: gi-gdk-3.0.25
58605866 - gi-webkit2 < 0 # tried gi-webkit2-4.0.28, but its *library* requires the disabled package: gi-soup
@@ -6565,7 +6571,6 @@ packages:
65656571 - tries < 0 # tried tries-0.0.6.1, but its *library* requires the disabled package: rose-trees
65666572 - true-name < 0 # tried true-name-0.1.0.3, but its *library* does not support: template-haskell-2.17.0.0
65676573 - type-combinators-singletons < 0 # tried type-combinators-singletons-0.2.1.0, but its *library* requires the disabled package: type-combinators
6568− - tz < 0 # tried tz-0.1.3.5, but its *library* does not support: template-haskell-2.17.0.0
65696574 - ucam-webauth < 0 # tried ucam-webauth-0.1.0.0, but its *library* does not support: aeson-1.5.6.0
65706575 - ucam-webauth < 0 # tried ucam-webauth-0.1.0.0, but its *library* does not support: attoparsec-0.14.4
65716576 - ucam-webauth < 0 # tried ucam-webauth-0.1.0.0, but its *library* does not support: base-4.15.1.0
@@ -6687,6 +6692,7 @@ packages:
66876692 - greskell-websocket < 1.0.0.0
66886693 - hruby < 0.4.0.0
66896694 - hspec-expectations-json < 1.0.0.5
6695+ - http2 < 3.0.3
66906696 - jose < 0.9
66916697 - jsonpath < 0.2.1.0
66926698 - kanji < 3.5
@@ -6701,11 +6707,6 @@ packages:
67016707 - stripe-wreq < 1.0.1.12
67026708 - yaml < 0.11.7
67036709
6704− # happy-1.21.0 is deprecated an unbuildable
6705− # https://github.com/commercialhaskell/stackage/issues/6294
6706− # see also https://github.com/commercialhaskell/stackage/issues/6242
6707− - happy < 1.21
6708−
67096710 # https://github.com/commercialhaskell/stackage/issues/6264
67106711 # Requires GHC 9.2
67116712 # Any new package-version that must use GHC 9.2 should be added here.
@@ -7252,7 +7253,6 @@ skipped-tests:
72527253 - temporary-resourcet # tried temporary-resourcet-0.1.0.1, but its *test-suite* does not support: tasty-1.4.2.1
72537254 - test-framework # tried test-framework-0.8.2.0, but its *test-suite* requires the disabled package: libxml
72547255 - transient # tried transient-0.7.0.0, but its *test-suite* does not support: random-1.2.1
7255− - tzdata # tried tzdata-0.2.20201021.0, but its *test-suite* requires the disabled package: test-framework-th
72567256 - ucam-webauth # tried ucam-webauth-0.1.0.0, but its *test-suite* does not support: QuickCheck-2.14.2
72577257 - ucam-webauth # tried ucam-webauth-0.1.0.0, but its *test-suite* does not support: generic-random-1.5.0.1
72587258 - ucam-webauth # tried ucam-webauth-0.1.0.0, but its *test-suite* does not support: hspec-2.8.5
@@ -7277,6 +7277,8 @@ skipped-tests:
72777277 # https://github.com/commercialhaskell/stackage/issues/6363
72787278 - amqp
72797279
7280+ - c2hs # https://github.com/commercialhaskell/stackage/issues/6420
7281+
72807282# end of skipped-tests
72817283
72827284# Tests listed in expected-test-failures configure correctly but may fail to run
commenternew file+20
@@ -0,0 +1,20 @@
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− .unwrap()
167+ .expect("Could not find latest-version in PATH")
168168 .stdout,
169169 )
170170 .unwrap()