on b1be828 help sign in
4 files changed+32−54
since splitsnapshots
unifiedsplit
CURATORS.md+17−13 build-constraints.yaml+14−20 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+14−20
@@ -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
@@ -776,6 +765,7 @@ packages:
776765 - formatting
777766 - gtk2hs-buildtools
778767 - happy < 1.21.0 || > 1.21.0 # https://github.com/commercialhaskell/stackage/issues/6294
768+ - happy
779769 - hybrid-vectors
780770 - indents
781771 - language-c
@@ -901,6 +891,7 @@ packages:
901891 - wai-slack-middleware
902892 - sysinfo
903893 - xmonad-extras
894+ - shelly
904895 - persistent-redis
905896 - fakedata
906897 - fakedata-parser
@@ -1133,7 +1124,7 @@ packages:
11331124 - bugsnag-haskell
11341125 - gravatar
11351126 - load-env
1136− - yesod-auth-oauth2 < 0.7 # https://github.com/commercialhaskell/stackage/issues/6424
1127+ - yesod-auth-oauth2
11371128 - yesod-markdown
11381129 - yesod-paginator
11391130
@@ -2975,7 +2966,7 @@ packages:
29752966 - wai-session-postgresql
29762967
29772968 "Haisheng Wu <freizl@gmail.com> @freizl":
2978− - hoauth2 < 2.0 # https://github.com/commercialhaskell/stackage/issues/6424
2969+ - hoauth2
29792970
29802971 "Falko Peters <falko.peters@gmail.com> @informatikr":
29812972 - scrypt
@@ -3017,7 +3008,7 @@ packages:
30173008 "Justus Adam <dev@justus.science> @JustusAdam":
30183009 - marvin
30193010 - marvin-interpolate
3020− - mustache < 2.4.0 # https://github.com/commercialhaskell/stackage/issues/6421
3011+ - mustache
30213012 - exit-codes >= 1.0.0
30223013
30233014 "Cindy Wang <cindylinz@gmail.com> @CindyLinz":
@@ -3732,7 +3723,7 @@ packages:
37323723 - hslua-classes
37333724 - hslua-core
37343725 - hslua-marshalling
3735− - hslua-module-doclayout < 0 # https://github.com/commercialhaskell/stackage/issues/6416
3726+ - hslua-module-doclayout
37363727 - hslua-module-path
37373728 - hslua-module-system
37383729 - hslua-module-text
@@ -4894,7 +4885,7 @@ packages:
48944885 - dlist
48954886 - dlist-instances
48964887 - dlist-nonempty
4897− - double-conversion < 2.0.3.0 # https://github.com/commercialhaskell/stackage/issues/6417
4888+ - double-conversion
48984889 - dual-tree
48994890 - easy-file
49004891 - easytest
@@ -5714,6 +5705,9 @@ packages:
57145705 - chronos < 0 # tried chronos-1.1.3, but its *library* requires the disabled package: bytesmith
57155706 - chronos-bench < 0 # tried chronos-bench-0.2.0.2, but its *library* requires the disabled package: chronos
57165707 - clang-compilation-database < 0 # tried clang-compilation-database-0.1.0.1, but its *library* does not support: base-4.15.1.0
5708+ - clash-ghc < 0 # tried clash-ghc-1.4.6, but its *library* does not support: ghc-bignum-1.1
5709+ - clash-lib < 0 # tried clash-lib-1.4.6, but its *library* does not support: ghc-bignum-1.1
5710+ - clash-prelude < 0 # tried clash-prelude-1.4.6, but its *library* does not support: ghc-bignum-1.1
57175711 - classyplate < 0 # tried classyplate-0.3.2.0, but its *library* does not support: base-4.15.1.0
57185712 - classyplate < 0 # tried classyplate-0.3.2.0, but its *library* does not support: template-haskell-2.17.0.0
57195713 - clock-extras < 0 # tried clock-extras-0.1.0.2, but its *library* does not support: clock-0.8.2
@@ -5861,6 +5855,7 @@ packages:
58615855 - ghc-clippy-plugin < 0 # tried ghc-clippy-plugin-0.0.0.1, but its *library* does not support: dhall-1.40.2
58625856 - ghc-clippy-plugin < 0 # tried ghc-clippy-plugin-0.0.0.1, but its *library* does not support: ghc-9.0.2
58635857 - ghc-syb-utils < 0 # tried ghc-syb-utils-0.3.0.0, but its *library* does not support: ghc-9.0.2
5858+ - ghc-typelits-extra < 0 # tried ghc-typelits-extra-0.4.3, but its *library* does not support: ghc-bignum-1.1
58645859 - ghcjs-dom < 0 # tried ghcjs-dom-0.9.5.0, but its *library* requires the disabled package: ghcjs-dom-jsaddle
58655860 - gi-gsk < 0 # tried gi-gsk-4.0.4, but its *library* does not support: gi-gdk-3.0.25
58665861 - gi-webkit2 < 0 # tried gi-webkit2-4.0.28, but its *library* requires the disabled package: gi-soup
@@ -6571,6 +6566,7 @@ packages:
65716566 - tries < 0 # tried tries-0.0.6.1, but its *library* requires the disabled package: rose-trees
65726567 - true-name < 0 # tried true-name-0.1.0.3, but its *library* does not support: template-haskell-2.17.0.0
65736568 - type-combinators-singletons < 0 # tried type-combinators-singletons-0.2.1.0, but its *library* requires the disabled package: type-combinators
6569+ - tz < 0 # tried tz-0.1.3.5, but its *library* does not support: template-haskell-2.17.0.0
65746570 - ucam-webauth < 0 # tried ucam-webauth-0.1.0.0, but its *library* does not support: aeson-1.5.6.0
65756571 - ucam-webauth < 0 # tried ucam-webauth-0.1.0.0, but its *library* does not support: attoparsec-0.14.4
65766572 - ucam-webauth < 0 # tried ucam-webauth-0.1.0.0, but its *library* does not support: base-4.15.1.0
@@ -6692,7 +6688,6 @@ packages:
66926688 - greskell-websocket < 1.0.0.0
66936689 - hruby < 0.4.0.0
66946690 - hspec-expectations-json < 1.0.0.5
6695− - http2 < 3.0.3
66966691 - jose < 0.9
66976692 - jsonpath < 0.2.1.0
66986693 - kanji < 3.5
@@ -7253,6 +7248,7 @@ skipped-tests:
72537248 - temporary-resourcet # tried temporary-resourcet-0.1.0.1, but its *test-suite* does not support: tasty-1.4.2.1
72547249 - test-framework # tried test-framework-0.8.2.0, but its *test-suite* requires the disabled package: libxml
72557250 - transient # tried transient-0.7.0.0, but its *test-suite* does not support: random-1.2.1
7251+ - tzdata # tried tzdata-0.2.20201021.0, but its *test-suite* requires the disabled package: test-framework-th
72567252 - ucam-webauth # tried ucam-webauth-0.1.0.0, but its *test-suite* does not support: QuickCheck-2.14.2
72577253 - ucam-webauth # tried ucam-webauth-0.1.0.0, but its *test-suite* does not support: generic-random-1.5.0.1
72587254 - ucam-webauth # tried ucam-webauth-0.1.0.0, but its *test-suite* does not support: hspec-2.8.5
@@ -7277,8 +7273,6 @@ skipped-tests:
72777273 # https://github.com/commercialhaskell/stackage/issues/6363
72787274 - amqp
72797275
7280− - c2hs # https://github.com/commercialhaskell/stackage/issues/6420
7281−
72827276# end of skipped-tests
72837277
72847278# Tests listed in expected-test-failures configure correctly but may fail to run
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()