#! /usr/bin/env nix-shell #! nix-shell -i bash -p coreutils git -I nixpkgs=. # This script uses the data pulled with # maintainers/scripts/haskell/hydra-report.hs get-report to produce a list of # failing builds that get written to the hackage2nix config. Then # hackage-packages.nix gets regenerated and transitive-broken packages get # marked as dont-distribute in the config as well. # This should disable builds for most failing jobs in the haskell-updates jobset. set -euo pipefail broken_config="pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml" tmpfile=$(mktemp) trap "rm ${tmpfile}" 0 echo "Remember that you need to manually run 'maintainers/scripts/haskell/hydra-report.hs get-report' sometime before running this script." echo "Generating a list of broken builds and displaying for manual confirmation ..." maintainers/scripts/haskell/hydra-report.hs mark-broken-list | sort -i > "$tmpfile" $EDITOR "$tmpfile" tail -n +3 "$broken_config" >> "$tmpfile" cat > "$broken_config" << EOF broken-packages: # These packages don't compile. EOF # clear environment here to avoid things like allowing broken builds in sort -iu "$tmpfile" >> "$broken_config" clear="env -u HOME -u NIXPKGS_CONFIG" $clear maintainers/scripts/haskell/regenerate-hackage-packages.sh $clear maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh $clear maintainers/scripts/haskell/regenerate-hackage-packages.sh if [[ "${1:-}" == "--do-commit" ]]; then git add $broken_config git add pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml git add pkgs/development/haskell-modules/hackage-packages.nix git commit -F - << EOF haskellPackages: mark builds failing on hydra as broken This commit has been generated by maintainers/scripts/haskell/mark-broken.sh EOF fi