mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-11-10 17:54:53 +01:00
We have generally shipped the latest cabal-install version. Stackage has re-added cabal-install recently which caused cabal-install to get downgraded to 3.4 to match the Cabal version shipped by GHC 9.0.2. This commit reverts that change.
59 lines
1.8 KiB
Bash
Executable file
59 lines
1.8 KiB
Bash
Executable file
#! /usr/bin/env nix-shell
|
|
#! nix-shell -i bash -p nix curl jq nix-prefetch-github git gnused gnugrep -I nixpkgs=.
|
|
|
|
set -eu -o pipefail
|
|
|
|
tmpfile=$(mktemp "update-stackage.XXXXXXX")
|
|
# shellcheck disable=SC2064
|
|
|
|
stackage_config="pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml"
|
|
|
|
trap "rm ${tmpfile} ${tmpfile}.new" 0
|
|
touch "$tmpfile" "$tmpfile.new" # Creating files here so that trap creates no errors.
|
|
|
|
curl -L -s "https://stackage.org/nightly/cabal.config" >"$tmpfile"
|
|
old_version=$(grep "# Stackage Nightly" $stackage_config | sed -E 's/.*([0-9]{4}-[0-9]{2}-[0-9]{2}).*/\1/')
|
|
version=$(sed -rn "s/^--.*http:..(www.)?stackage.org.snapshot.nightly-//p" "$tmpfile")
|
|
|
|
if [[ "$old_version" == "$version" ]]; then
|
|
echo "No new stackage version"
|
|
exit 0 # Nothing to do
|
|
fi
|
|
|
|
echo "Updating Stackage Nightly from $old_version to $version."
|
|
|
|
# Create a simple yaml version of the file.
|
|
sed -r \
|
|
-e '/^--/d' \
|
|
-e 's|^constraints:||' \
|
|
-e 's|^ +| - |' \
|
|
-e 's|,$||' \
|
|
-e '/installed$/d' \
|
|
-e '/^$/d' \
|
|
< "${tmpfile}" | sort --ignore-case >"${tmpfile}.new"
|
|
|
|
cat > $stackage_config << EOF
|
|
# Stackage Nightly $version
|
|
# This file is auto-generated by
|
|
# maintainers/scripts/haskell/update-stackage.sh
|
|
default-package-overrides:
|
|
EOF
|
|
|
|
# Drop restrictions on some tools where we always want the latest version.
|
|
sed -r \
|
|
-e '/ cabal2nix /d' \
|
|
-e '/ distribution-nixpkgs /d' \
|
|
-e '/ jailbreak-cabal /d' \
|
|
-e '/ language-nix /d' \
|
|
-e '/ cabal-install /d' \
|
|
< "${tmpfile}.new" >> $stackage_config
|
|
|
|
if [[ "${1:-}" == "--do-commit" ]]; then
|
|
git add $stackage_config
|
|
git commit -F - << EOF
|
|
haskellPackages: stackage-nightly $old_version -> $version
|
|
|
|
This commit has been generated by maintainers/scripts/haskell/update-stackage.sh
|
|
EOF
|
|
fi
|