diff --git a/ci/broken-packages.sh b/ci/config.sh similarity index 55% rename from ci/broken-packages.sh rename to ci/config.sh index cc9c9d389a7b6cb862e13322d34ede7a1da1afa3..0b808cc097281910b6176c0e63ad7f7669149a46 100644 --- a/ci/broken-packages.sh +++ b/ci/config.sh @@ -13,7 +13,25 @@ function broken() { pkg_name="$1" ticket="$2" echo "Marking $pkg_name as broken due to #$ticket" - BROKEN_ARGS="$BROKEN_ARGS --expect-broken=$pkg_name" + EXTRA_OPTS="$EXTRA_OPTS --expect-broken=$pkg_name" +} + +# Return the version number of the most recent release of the given package +function latest_version() { + pkg=$1 + curl -s -H "Accept: application/json" -L -X GET http://hackage.haskell.org/package/$pkg/preferred | jq '.["normal-version"] | .[0]' -r +} + +# Add a package to the set of packages that lack patches but are nevertheless +# tested. +function extra_package() { + pkg_name="$1" + version="$2" + if [ -z "$version" ]; then + version=$(latest_version $pkg_name) + fi + echo "Adding $pkg_name-$version to extra package set" + EXTRA_OPTS="$EXTRA_OPTS --extra-package=$pkg_name==$version" } if [ -z "$GHC" ]; then GHC=ghc; fi @@ -48,3 +66,13 @@ case $version in echo "No broken packages for GHC $version" ;; esac + +# Extra packages +extra_package lens +extra_package aeson +extra_package criterion +extra_package scotty +extra_package generic-lens +extra_package microstache +extra_package singletons +extra_package servant diff --git a/ci/default.nix b/ci/default.nix index 501c4cebc338ec0b9b1f636a0a026ca1f1bb10b6..2cd1e6876380266b5c11338d17d2c852dfa044c0 100644 --- a/ci/default.nix +++ b/ci/default.nix @@ -50,7 +50,7 @@ let deps = [ bash curl gnutar findutils patch rsync openssl cabal-install ghc gcc binutils-unwrapped pwgen gnused - hackage-repo-tool overlay-tool python3 + hackage-repo-tool overlay-tool python3 jq git # cabal-install wants this to fetch source-repository-packages ]; in @@ -68,7 +68,7 @@ let makeWrapper ${../run-ci} $out/bin/run-ci \ --prefix PATH : ${stdenv.lib.makeBinPath deps}:$out/bin \ --set USE_NIX 1 \ - --set BROKEN_LIST ${./broken-packages.sh} + --set CI_CONFIG ${./config.sh} makeWrapper ${xz}/bin/xz $out/bin/xz ''; diff --git a/run-ci b/run-ci index 71e6aba46ba92754b6def86439fb81288e2681d8..0a02add9dd3ba42beb12636591dfa30c1dbab255 100755 --- a/run-ci +++ b/run-ci @@ -9,15 +9,16 @@ if [ -z "$GHC" ]; then GHC="ghc" fi -if [ -z "$BROKEN_LIST" ]; then - BROKEN_LIST=broken-packages.sh +if [ -z "$CI_CONFIG" ]; then + CI_CONFIG=config.sh fi -if [ -f "$BROKEN_LIST" ]; then - source $BROKEN_LIST - EXTRA_OPTS="$EXTRA_OPTS $BROKEN_ARGS" +EXTRA_OPTS="$@" + +if [ -f "$CI_CONFIG" ]; then + source $CI_CONFIG else - echo "Couldn't find broken package list" + echo "Couldn't find CI configuration" fi EXTRA_OPTS="$EXTRA_OPTS --cabal-option=-j$CPUS" # Use cabal's build parallelism