packages feed

haskell-ci 0.4 → 0.6

raw patch · 24 files changed

+361/−205 lines, 24 filesdep +network-uridep ~Diffdep ~HsYAMLdep ~ansi-terminalPVP ok

version bump matches the API change (PVP)

Dependencies added: network-uri

Dependency ranges changed: Diff, HsYAML, ansi-terminal, base, base-compat, generic-lens, optparse-applicative

API changes (from Hackage documentation)

- HaskellCI.Sh: instance Control.Monad.Fail.MonadFail HaskellCI.Sh.ShM
+ HaskellCI.Config: [cfgGhcjsTools] :: Config -> ![PackageName]
+ HaskellCI.Config: [cfgGoogleChrome] :: Config -> !Bool
+ HaskellCI.Prelude: class Monad m => MonadFail (m :: Type -> Type)
+ HaskellCI.Prelude: data URI
+ HaskellCI.Prelude: parseURI :: String -> Maybe URI
+ HaskellCI.Prelude: partitionEithers :: () => [Either a b] -> ([a], [b])
+ HaskellCI.Prelude: prettyShow :: Pretty a => a -> String
+ HaskellCI.Prelude: simpleParsec :: Parsec a => String -> Maybe a
+ HaskellCI.Prelude: uriToString :: (String -> String) -> URI -> ShowS
+ HaskellCI.Project: [prjUriPackages] :: Project b a -> [URI]
+ HaskellCI.Travis.Yaml: [taGoogleChrome] :: TravisAddons -> Bool
- HaskellCI.Config: Config :: Maybe Version -> Maybe Jobs -> !Ubuntu -> !TestedWithJobs -> !CopyFields -> [String] -> !Bool -> !Bool -> !Bool -> [Installed] -> !VersionRange -> !VersionRange -> !VersionRange -> !VersionRange -> !VersionRange -> !VersionRange -> !VersionRange -> !Bool -> !Bool -> [String] -> [String] -> Maybe String -> Set Fold -> !Bool -> !Bool -> Map Version String -> !VersionRange -> !Bool -> Set Version -> Set String -> [FilePath] -> !Bool -> !Bool -> !DoctestConfig -> !HLintConfig -> [ConstraintSet] -> [PrettyField ()] -> Config
+ HaskellCI.Config: Config :: Maybe Version -> Maybe Jobs -> !Ubuntu -> !TestedWithJobs -> !CopyFields -> [String] -> !Bool -> !Bool -> !Bool -> [Installed] -> !VersionRange -> !VersionRange -> !VersionRange -> !VersionRange -> !VersionRange -> !VersionRange -> !VersionRange -> !Bool -> ![PackageName] -> !Bool -> [String] -> [String] -> Maybe String -> Set Fold -> !Bool -> !Bool -> !Bool -> Map Version String -> !VersionRange -> !Bool -> Set Version -> Set String -> [FilePath] -> !Bool -> !Bool -> !DoctestConfig -> !HLintConfig -> [ConstraintSet] -> [PrettyField ()] -> Config
- HaskellCI.Prelude: fail :: Monad m => String -> m a
+ HaskellCI.Prelude: fail :: MonadFail m => String -> m a
- HaskellCI.Prelude: infixl 1 <&>
+ HaskellCI.Prelude: infixl 1 &
- HaskellCI.Project: Project :: [a] -> [b] -> [String] -> [String] -> Bool -> Maybe Int -> Optimization -> [SourceRepo] -> [PrettyField ()] -> Project b a
+ HaskellCI.Project: Project :: [a] -> [b] -> [URI] -> [String] -> [String] -> Bool -> Maybe Int -> Optimization -> [SourceRepo] -> [PrettyField ()] -> Project b a
- HaskellCI.Travis.Yaml: TravisAddons :: TravisApt -> Maybe String -> TravisAddons
+ HaskellCI.Travis.Yaml: TravisAddons :: TravisApt -> Maybe String -> Bool -> TravisAddons

Files

CHANGELOG.md view
@@ -1,3 +1,14 @@+## 0.6++- ghc-options limiting heap size+- GHCJS tests can be run in simple cases+- Work around cabal#6214 (haddock failing with `build-type: Custom` packages)+- Support requesting `google-chrome` addon+- Nicer `docctest-filter-packages`+- Buildable with GHC-8.8+- Record `haskell-ci` version in REGENDATA;+  warn if older executable is used to `regenerate`+ ## 0.4  * Make default `--output` to be `.travis.yml`; use `--stdout` to output to standard output.
fixtures/cabal.project.copy-fields.all.travis.yml view
@@ -69,6 +69,7 @@ before_install:   - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')   - WITHCOMPILER="-w $HC"+  - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')   - HCPKG="$HC-pkg"   - unset CC   - CABAL=/opt/ghc/bin/cabal@@ -105,21 +106,32 @@   - HEADHACKAGE=false   - rm -f $CABALHOME/config   - |-    echo "verbose: normal +nowrap +markoutput"          >> $CABALHOME/config-    echo "remote-build-reporting: anonymous"            >> $CABALHOME/config-    echo "write-ghc-environment-files: always"          >> $CABALHOME/config-    echo "remote-repo-cache: $CABALHOME/packages"       >> $CABALHOME/config-    echo "logs-dir:          $CABALHOME/logs"           >> $CABALHOME/config-    echo "world-file:        $CABALHOME/world"          >> $CABALHOME/config-    echo "extra-prog-path:   $CABALHOME/bin"            >> $CABALHOME/config-    echo "symlink-bindir:    $CABALHOME/bin"            >> $CABALHOME/config-    echo "installdir:        $CABALHOME/bin"            >> $CABALHOME/config-    echo "build-summary:     $CABALHOME/logs/build.log" >> $CABALHOME/config-    echo "store-dir:         $CABALHOME/store"          >> $CABALHOME/config-    echo "install-dirs user"                            >> $CABALHOME/config-    echo "  prefix: $CABALHOME"                         >> $CABALHOME/config-    echo "repository hackage.haskell.org"               >> $CABALHOME/config-    echo "  url: http://hackage.haskell.org/"           >> $CABALHOME/config+    echo "verbose: normal +nowrap +markoutput"                                  >> $CABALHOME/config+    echo "remote-build-reporting: anonymous"                                    >> $CABALHOME/config+    echo "write-ghc-environment-files: always"                                  >> $CABALHOME/config+    echo "remote-repo-cache: $CABALHOME/packages"                               >> $CABALHOME/config+    echo "logs-dir:          $CABALHOME/logs"                                   >> $CABALHOME/config+    echo "world-file:        $CABALHOME/world"                                  >> $CABALHOME/config+    echo "extra-prog-path:   $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "symlink-bindir:    $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "installdir:        $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "build-summary:     $CABALHOME/logs/build.log"                         >> $CABALHOME/config+    echo "store-dir:         $CABALHOME/store"                                  >> $CABALHOME/config+    echo "install-dirs user"                                                    >> $CABALHOME/config+    echo "  prefix: $CABALHOME"                                                 >> $CABALHOME/config+    echo "repository hackage.haskell.org"                                       >> $CABALHOME/config+    echo "  url: http://hackage.haskell.org/"                                   >> $CABALHOME/config+    echo "  secure: True"                                                       >> $CABALHOME/config+    echo "  key-threshold: 3"                                                   >> $CABALHOME/config+    echo "  root-keys:"                                                         >> $CABALHOME/config+    echo "    fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0" >> $CABALHOME/config+    echo "    1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42" >> $CABALHOME/config+    echo "    2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3" >> $CABALHOME/config+    echo "    0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d" >> $CABALHOME/config+    echo "    51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921" >> $CABALHOME/config+  - |+    echo "program-default-options"                >> $CABALHOME/config+    echo "  ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config   - cat $CABALHOME/config   - rm -fv cabal.project cabal.project.local cabal.project.freeze   - travis_retry ${CABAL} v2-update -v@@ -195,7 +207,7 @@   - (cd ${PKGDIR_servant_docs} && ${CABAL} -vnormal check)   - (cd ${PKGDIR_servant_server} && ${CABAL} -vnormal check)   # haddock...-  - ${CABAL} v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output+  - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all | color_cabal_output   # Building without installed constraints for packages in global-db...   - rm -f cabal.project.local   - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
fixtures/cabal.project.copy-fields.none.travis.yml view
@@ -69,6 +69,7 @@ before_install:   - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')   - WITHCOMPILER="-w $HC"+  - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')   - HCPKG="$HC-pkg"   - unset CC   - CABAL=/opt/ghc/bin/cabal@@ -105,21 +106,32 @@   - HEADHACKAGE=false   - rm -f $CABALHOME/config   - |-    echo "verbose: normal +nowrap +markoutput"          >> $CABALHOME/config-    echo "remote-build-reporting: anonymous"            >> $CABALHOME/config-    echo "write-ghc-environment-files: always"          >> $CABALHOME/config-    echo "remote-repo-cache: $CABALHOME/packages"       >> $CABALHOME/config-    echo "logs-dir:          $CABALHOME/logs"           >> $CABALHOME/config-    echo "world-file:        $CABALHOME/world"          >> $CABALHOME/config-    echo "extra-prog-path:   $CABALHOME/bin"            >> $CABALHOME/config-    echo "symlink-bindir:    $CABALHOME/bin"            >> $CABALHOME/config-    echo "installdir:        $CABALHOME/bin"            >> $CABALHOME/config-    echo "build-summary:     $CABALHOME/logs/build.log" >> $CABALHOME/config-    echo "store-dir:         $CABALHOME/store"          >> $CABALHOME/config-    echo "install-dirs user"                            >> $CABALHOME/config-    echo "  prefix: $CABALHOME"                         >> $CABALHOME/config-    echo "repository hackage.haskell.org"               >> $CABALHOME/config-    echo "  url: http://hackage.haskell.org/"           >> $CABALHOME/config+    echo "verbose: normal +nowrap +markoutput"                                  >> $CABALHOME/config+    echo "remote-build-reporting: anonymous"                                    >> $CABALHOME/config+    echo "write-ghc-environment-files: always"                                  >> $CABALHOME/config+    echo "remote-repo-cache: $CABALHOME/packages"                               >> $CABALHOME/config+    echo "logs-dir:          $CABALHOME/logs"                                   >> $CABALHOME/config+    echo "world-file:        $CABALHOME/world"                                  >> $CABALHOME/config+    echo "extra-prog-path:   $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "symlink-bindir:    $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "installdir:        $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "build-summary:     $CABALHOME/logs/build.log"                         >> $CABALHOME/config+    echo "store-dir:         $CABALHOME/store"                                  >> $CABALHOME/config+    echo "install-dirs user"                                                    >> $CABALHOME/config+    echo "  prefix: $CABALHOME"                                                 >> $CABALHOME/config+    echo "repository hackage.haskell.org"                                       >> $CABALHOME/config+    echo "  url: http://hackage.haskell.org/"                                   >> $CABALHOME/config+    echo "  secure: True"                                                       >> $CABALHOME/config+    echo "  key-threshold: 3"                                                   >> $CABALHOME/config+    echo "  root-keys:"                                                         >> $CABALHOME/config+    echo "    fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0" >> $CABALHOME/config+    echo "    1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42" >> $CABALHOME/config+    echo "    2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3" >> $CABALHOME/config+    echo "    0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d" >> $CABALHOME/config+    echo "    51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921" >> $CABALHOME/config+  - |+    echo "program-default-options"                >> $CABALHOME/config+    echo "  ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config   - cat $CABALHOME/config   - rm -fv cabal.project cabal.project.local cabal.project.freeze   - travis_retry ${CABAL} v2-update -v@@ -183,7 +195,7 @@   - (cd ${PKGDIR_servant_docs} && ${CABAL} -vnormal check)   - (cd ${PKGDIR_servant_server} && ${CABAL} -vnormal check)   # haddock...-  - ${CABAL} v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output+  - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all | color_cabal_output   # Building without installed constraints for packages in global-db...   - rm -f cabal.project.local   - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
fixtures/cabal.project.copy-fields.some.travis.yml view
@@ -69,6 +69,7 @@ before_install:   - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')   - WITHCOMPILER="-w $HC"+  - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')   - HCPKG="$HC-pkg"   - unset CC   - CABAL=/opt/ghc/bin/cabal@@ -105,21 +106,32 @@   - HEADHACKAGE=false   - rm -f $CABALHOME/config   - |-    echo "verbose: normal +nowrap +markoutput"          >> $CABALHOME/config-    echo "remote-build-reporting: anonymous"            >> $CABALHOME/config-    echo "write-ghc-environment-files: always"          >> $CABALHOME/config-    echo "remote-repo-cache: $CABALHOME/packages"       >> $CABALHOME/config-    echo "logs-dir:          $CABALHOME/logs"           >> $CABALHOME/config-    echo "world-file:        $CABALHOME/world"          >> $CABALHOME/config-    echo "extra-prog-path:   $CABALHOME/bin"            >> $CABALHOME/config-    echo "symlink-bindir:    $CABALHOME/bin"            >> $CABALHOME/config-    echo "installdir:        $CABALHOME/bin"            >> $CABALHOME/config-    echo "build-summary:     $CABALHOME/logs/build.log" >> $CABALHOME/config-    echo "store-dir:         $CABALHOME/store"          >> $CABALHOME/config-    echo "install-dirs user"                            >> $CABALHOME/config-    echo "  prefix: $CABALHOME"                         >> $CABALHOME/config-    echo "repository hackage.haskell.org"               >> $CABALHOME/config-    echo "  url: http://hackage.haskell.org/"           >> $CABALHOME/config+    echo "verbose: normal +nowrap +markoutput"                                  >> $CABALHOME/config+    echo "remote-build-reporting: anonymous"                                    >> $CABALHOME/config+    echo "write-ghc-environment-files: always"                                  >> $CABALHOME/config+    echo "remote-repo-cache: $CABALHOME/packages"                               >> $CABALHOME/config+    echo "logs-dir:          $CABALHOME/logs"                                   >> $CABALHOME/config+    echo "world-file:        $CABALHOME/world"                                  >> $CABALHOME/config+    echo "extra-prog-path:   $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "symlink-bindir:    $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "installdir:        $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "build-summary:     $CABALHOME/logs/build.log"                         >> $CABALHOME/config+    echo "store-dir:         $CABALHOME/store"                                  >> $CABALHOME/config+    echo "install-dirs user"                                                    >> $CABALHOME/config+    echo "  prefix: $CABALHOME"                                                 >> $CABALHOME/config+    echo "repository hackage.haskell.org"                                       >> $CABALHOME/config+    echo "  url: http://hackage.haskell.org/"                                   >> $CABALHOME/config+    echo "  secure: True"                                                       >> $CABALHOME/config+    echo "  key-threshold: 3"                                                   >> $CABALHOME/config+    echo "  root-keys:"                                                         >> $CABALHOME/config+    echo "    fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0" >> $CABALHOME/config+    echo "    1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42" >> $CABALHOME/config+    echo "    2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3" >> $CABALHOME/config+    echo "    0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d" >> $CABALHOME/config+    echo "    51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921" >> $CABALHOME/config+  - |+    echo "program-default-options"                >> $CABALHOME/config+    echo "  ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config   - cat $CABALHOME/config   - rm -fv cabal.project cabal.project.local cabal.project.freeze   - travis_retry ${CABAL} v2-update -v@@ -189,7 +201,7 @@   - (cd ${PKGDIR_servant_docs} && ${CABAL} -vnormal check)   - (cd ${PKGDIR_servant_server} && ${CABAL} -vnormal check)   # haddock...-  - ${CABAL} v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output+  - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all | color_cabal_output   # Building without installed constraints for packages in global-db...   - rm -f cabal.project.local   - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
fixtures/cabal.project.empty-line.travis.yml view
@@ -73,6 +73,7 @@ before_install:   - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')   - WITHCOMPILER="-w $HC"+  - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')   - HCPKG="$HC-pkg"   - unset CC   - CABAL=/opt/ghc/bin/cabal@@ -110,21 +111,29 @@   - if [ $HCNUMVER -gt 80801 ] ; then HEADHACKAGE=true ; fi   - rm -f $CABALHOME/config   - |-    echo "verbose: normal +nowrap +markoutput"          >> $CABALHOME/config-    echo "remote-build-reporting: anonymous"            >> $CABALHOME/config-    echo "write-ghc-environment-files: always"          >> $CABALHOME/config-    echo "remote-repo-cache: $CABALHOME/packages"       >> $CABALHOME/config-    echo "logs-dir:          $CABALHOME/logs"           >> $CABALHOME/config-    echo "world-file:        $CABALHOME/world"          >> $CABALHOME/config-    echo "extra-prog-path:   $CABALHOME/bin"            >> $CABALHOME/config-    echo "symlink-bindir:    $CABALHOME/bin"            >> $CABALHOME/config-    echo "installdir:        $CABALHOME/bin"            >> $CABALHOME/config-    echo "build-summary:     $CABALHOME/logs/build.log" >> $CABALHOME/config-    echo "store-dir:         $CABALHOME/store"          >> $CABALHOME/config-    echo "install-dirs user"                            >> $CABALHOME/config-    echo "  prefix: $CABALHOME"                         >> $CABALHOME/config-    echo "repository hackage.haskell.org"               >> $CABALHOME/config-    echo "  url: http://hackage.haskell.org/"           >> $CABALHOME/config+    echo "verbose: normal +nowrap +markoutput"                                  >> $CABALHOME/config+    echo "remote-build-reporting: anonymous"                                    >> $CABALHOME/config+    echo "write-ghc-environment-files: always"                                  >> $CABALHOME/config+    echo "remote-repo-cache: $CABALHOME/packages"                               >> $CABALHOME/config+    echo "logs-dir:          $CABALHOME/logs"                                   >> $CABALHOME/config+    echo "world-file:        $CABALHOME/world"                                  >> $CABALHOME/config+    echo "extra-prog-path:   $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "symlink-bindir:    $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "installdir:        $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "build-summary:     $CABALHOME/logs/build.log"                         >> $CABALHOME/config+    echo "store-dir:         $CABALHOME/store"                                  >> $CABALHOME/config+    echo "install-dirs user"                                                    >> $CABALHOME/config+    echo "  prefix: $CABALHOME"                                                 >> $CABALHOME/config+    echo "repository hackage.haskell.org"                                       >> $CABALHOME/config+    echo "  url: http://hackage.haskell.org/"                                   >> $CABALHOME/config+    echo "  secure: True"                                                       >> $CABALHOME/config+    echo "  key-threshold: 3"                                                   >> $CABALHOME/config+    echo "  root-keys:"                                                         >> $CABALHOME/config+    echo "    fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0" >> $CABALHOME/config+    echo "    1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42" >> $CABALHOME/config+    echo "    2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3" >> $CABALHOME/config+    echo "    0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d" >> $CABALHOME/config+    echo "    51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921" >> $CABALHOME/config   - |     if $HEADHACKAGE; then     echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1/g')" >> $CABALHOME/config@@ -136,6 +145,9 @@     echo "              f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89" >> $CABALHOME/config     echo "   key-threshold: 3"                                                            >> $CABALHOME/config     fi+  - |+    echo "program-default-options"                >> $CABALHOME/config+    echo "  ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config   - cat $CABALHOME/config   - rm -fv cabal.project cabal.project.local cabal.project.freeze   - travis_retry ${CABAL} v2-update -v@@ -205,7 +217,7 @@   - (cd ${PKGDIR_servant_docs} && ${CABAL} -vnormal check)   - (cd ${PKGDIR_servant_server} && ${CABAL} -vnormal check)   # haddock...-  - ${CABAL} v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output+  - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all | color_cabal_output   # Building without installed constraints for packages in global-db...   - rm -f cabal.project.local   - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
fixtures/cabal.project.messy.travis.yml view
@@ -73,6 +73,7 @@ before_install:   - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')   - WITHCOMPILER="-w $HC"+  - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')   - HCPKG="$HC-pkg"   - unset CC   - CABAL=/opt/ghc/bin/cabal@@ -110,21 +111,29 @@   - if [ $HCNUMVER -gt 80801 ] ; then HEADHACKAGE=true ; fi   - rm -f $CABALHOME/config   - |-    echo "verbose: normal +nowrap +markoutput"          >> $CABALHOME/config-    echo "remote-build-reporting: anonymous"            >> $CABALHOME/config-    echo "write-ghc-environment-files: always"          >> $CABALHOME/config-    echo "remote-repo-cache: $CABALHOME/packages"       >> $CABALHOME/config-    echo "logs-dir:          $CABALHOME/logs"           >> $CABALHOME/config-    echo "world-file:        $CABALHOME/world"          >> $CABALHOME/config-    echo "extra-prog-path:   $CABALHOME/bin"            >> $CABALHOME/config-    echo "symlink-bindir:    $CABALHOME/bin"            >> $CABALHOME/config-    echo "installdir:        $CABALHOME/bin"            >> $CABALHOME/config-    echo "build-summary:     $CABALHOME/logs/build.log" >> $CABALHOME/config-    echo "store-dir:         $CABALHOME/store"          >> $CABALHOME/config-    echo "install-dirs user"                            >> $CABALHOME/config-    echo "  prefix: $CABALHOME"                         >> $CABALHOME/config-    echo "repository hackage.haskell.org"               >> $CABALHOME/config-    echo "  url: http://hackage.haskell.org/"           >> $CABALHOME/config+    echo "verbose: normal +nowrap +markoutput"                                  >> $CABALHOME/config+    echo "remote-build-reporting: anonymous"                                    >> $CABALHOME/config+    echo "write-ghc-environment-files: always"                                  >> $CABALHOME/config+    echo "remote-repo-cache: $CABALHOME/packages"                               >> $CABALHOME/config+    echo "logs-dir:          $CABALHOME/logs"                                   >> $CABALHOME/config+    echo "world-file:        $CABALHOME/world"                                  >> $CABALHOME/config+    echo "extra-prog-path:   $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "symlink-bindir:    $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "installdir:        $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "build-summary:     $CABALHOME/logs/build.log"                         >> $CABALHOME/config+    echo "store-dir:         $CABALHOME/store"                                  >> $CABALHOME/config+    echo "install-dirs user"                                                    >> $CABALHOME/config+    echo "  prefix: $CABALHOME"                                                 >> $CABALHOME/config+    echo "repository hackage.haskell.org"                                       >> $CABALHOME/config+    echo "  url: http://hackage.haskell.org/"                                   >> $CABALHOME/config+    echo "  secure: True"                                                       >> $CABALHOME/config+    echo "  key-threshold: 3"                                                   >> $CABALHOME/config+    echo "  root-keys:"                                                         >> $CABALHOME/config+    echo "    fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0" >> $CABALHOME/config+    echo "    1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42" >> $CABALHOME/config+    echo "    2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3" >> $CABALHOME/config+    echo "    0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d" >> $CABALHOME/config+    echo "    51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921" >> $CABALHOME/config   - |     if $HEADHACKAGE; then     echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1/g')" >> $CABALHOME/config@@ -136,6 +145,9 @@     echo "              f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89" >> $CABALHOME/config     echo "   key-threshold: 3"                                                            >> $CABALHOME/config     fi+  - |+    echo "program-default-options"                >> $CABALHOME/config+    echo "  ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config   - cat $CABALHOME/config   - rm -fv cabal.project cabal.project.local cabal.project.freeze   - travis_retry ${CABAL} v2-update -v@@ -199,7 +211,7 @@   - (cd ${PKGDIR_servant_docs} && ${CABAL} -vnormal check)   - (cd ${PKGDIR_servant_server} && ${CABAL} -vnormal check)   # haddock...-  - ${CABAL} v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output+  - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all | color_cabal_output   # Building without installed constraints for packages in global-db...   - rm -f cabal.project.local   - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
fixtures/cabal.project.travis-patch.travis.yml view
@@ -69,6 +69,7 @@ before_install:   - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')   - WITHCOMPILER="-w $HC"+  - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')   - HCPKG="$HC-pkg"   - unset CC   - CABAL=/opt/ghc/bin/cabal@@ -105,21 +106,32 @@   - HEADHACKAGE=false   - rm -f $CABALHOME/config   - |-    echo "verbose: normal +nowrap +markoutput"          >> $CABALHOME/config-    echo "remote-build-reporting: anonymous"            >> $CABALHOME/config-    echo "write-ghc-environment-files: always"          >> $CABALHOME/config-    echo "remote-repo-cache: $CABALHOME/packages"       >> $CABALHOME/config-    echo "logs-dir:          $CABALHOME/logs"           >> $CABALHOME/config-    echo "world-file:        $CABALHOME/world"          >> $CABALHOME/config-    echo "extra-prog-path:   $CABALHOME/bin"            >> $CABALHOME/config-    echo "symlink-bindir:    $CABALHOME/bin"            >> $CABALHOME/config-    echo "installdir:        $CABALHOME/bin"            >> $CABALHOME/config-    echo "build-summary:     $CABALHOME/logs/build.log" >> $CABALHOME/config-    echo "store-dir:         $CABALHOME/store"          >> $CABALHOME/config-    echo "install-dirs user"                            >> $CABALHOME/config-    echo "  prefix: $CABALHOME"                         >> $CABALHOME/config-    echo "repository hackage.haskell.org"               >> $CABALHOME/config-    echo "  url: http://hackage.haskell.org/"           >> $CABALHOME/config+    echo "verbose: normal +nowrap +markoutput"                                  >> $CABALHOME/config+    echo "remote-build-reporting: anonymous"                                    >> $CABALHOME/config+    echo "write-ghc-environment-files: always"                                  >> $CABALHOME/config+    echo "remote-repo-cache: $CABALHOME/packages"                               >> $CABALHOME/config+    echo "logs-dir:          $CABALHOME/logs"                                   >> $CABALHOME/config+    echo "world-file:        $CABALHOME/world"                                  >> $CABALHOME/config+    echo "extra-prog-path:   $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "symlink-bindir:    $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "installdir:        $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "build-summary:     $CABALHOME/logs/build.log"                         >> $CABALHOME/config+    echo "store-dir:         $CABALHOME/store"                                  >> $CABALHOME/config+    echo "install-dirs user"                                                    >> $CABALHOME/config+    echo "  prefix: $CABALHOME"                                                 >> $CABALHOME/config+    echo "repository hackage.haskell.org"                                       >> $CABALHOME/config+    echo "  url: http://hackage.haskell.org/"                                   >> $CABALHOME/config+    echo "  secure: True"                                                       >> $CABALHOME/config+    echo "  key-threshold: 3"                                                   >> $CABALHOME/config+    echo "  root-keys:"                                                         >> $CABALHOME/config+    echo "    fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0" >> $CABALHOME/config+    echo "    1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42" >> $CABALHOME/config+    echo "    2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3" >> $CABALHOME/config+    echo "    0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d" >> $CABALHOME/config+    echo "    51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921" >> $CABALHOME/config+  - |+    echo "program-default-options"                >> $CABALHOME/config+    echo "  ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config   - cat $CABALHOME/config   - rm -fv cabal.project cabal.project.local cabal.project.freeze   - travis_retry ${CABAL} v2-update -v@@ -168,7 +180,7 @@   # cabal check...   - (cd ${PKGDIR_servant} && ${CABAL} -vnormal check)   # haddock...-  - ${CABAL} v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output+  - ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK ${TEST} ${BENCH} all | color_cabal_output   # Building without installed constraints for packages in global-db...   - rm -f cabal.project.local   - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
fixtures/haskell-ci.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.2 name:               haskell-ci-version:            0.4+version:            0.6 synopsis:           Cabal package script generator for Travis-CI description:   Script generator (@haskell-ci@) for [Travis-CI](https://travis-ci.org/) for continuous-integration testing of Haskell Cabal packages.@@ -30,7 +30,7 @@ maintainer:         hvr@gnu.org category:           Development build-type:         Simple-tested-with:        GHC ==8.6.5 || ==8.4.4 || ==8.2.2+tested-with:        GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1 extra-source-files:   CHANGELOG.md   fixtures/cabal.haskell-ci@@ -112,14 +112,15 @@     HaskellCI.Travis.Yaml     HaskellCI.YamlSyntax -  ghc-options:-    -Wall -Wcompat -Wnoncanonical-monad-instances-    -Wnoncanonical-monadfail-instances+  ghc-options:        -Wall -Wcompat -Wnoncanonical-monad-instances +  if impl(ghc <8.8)+    ghc-options: -Wnoncanonical-monadfail-instances+   hs-source-dirs:     src   default-extensions:-    BangPatterns     NoImplicitPrelude+    BangPatterns     DeriveAnyClass     DeriveFoldable     DeriveFunctor@@ -136,7 +137,7 @@     ViewPatterns    build-depends:-    , base          >=4.10     && <4.13+    , base          >=4.10     && <4.14     , bytestring    ^>=0.10.8.1     , Cabal         ^>=3.0     , containers    ^>=0.5.7.1 || ^>=0.6.0.1@@ -156,13 +157,14 @@   -- other dependencies   build-depends:     , aeson                 ^>=1.4.2.0-    , base-compat           ^>=0.10.5+    , base-compat           ^>=0.11     , exceptions            ^>=0.10.0-    , generic-lens          ^>=1.1.0.0-    , HsYAML                ^>=0.1.1.3+    , generic-lens          ^>=1.2.0.0+    , HsYAML                ^>=0.2.0.0     , lattices              ^>=2     , microlens             ^>=0.4.10-    , optparse-applicative  ^>=0.14.3.0+    , network-uri           ^>=2.6.1.0+    , optparse-applicative  ^>=0.15     , temporary             ^>=1.3     , unordered-containers  ^>=0.2.10.0 @@ -186,10 +188,11 @@   main-is:          Tests.hs   hs-source-dirs:   test   build-depends:-    , ansi-terminal        ^>=0.8.0.2 || ^>=0.9.1+    , ansi-terminal        ^>=0.10     , base+    , base-compat     , bytestring-    , Diff                 ^>=0.3.4+    , Diff                 ^>=0.4.0     , directory     , filepath     , haskell-ci-internal
fixtures/haskell-ci.cabal.stderr view
@@ -1,2 +1,2 @@-*INFO* Generating Travis-CI config for testing for GHC versions: ghc-head 8.2.2 8.4.4 8.6.5+*INFO* Generating Travis-CI config for testing for GHC versions: ghc-head 8.2.2 8.4.4 8.6.5 8.8.1 *INFO* Also OSX jobs for: 8.4.4 8.6.5
fixtures/haskell-ci.cabal.travis.yml view
@@ -28,6 +28,8 @@   - rm -rfv $CABALHOME/packages/head.hackage matrix:   include:+    - compiler: ghc-8.8.1+      addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.8.1","cabal-install-3.0"]}}     - compiler: ghc-8.6.5       addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.6.5","cabal-install-3.0"]}}     - compiler: ghc-8.4.4@@ -47,6 +49,7 @@ before_install:   - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')   - WITHCOMPILER="-w $HC"+  - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//')   - HCPKG="$HC-pkg"   - unset CC   - CABAL=/opt/ghc/bin/cabal@@ -83,24 +86,32 @@   - TEST=--enable-tests   - BENCH=--enable-benchmarks   - HEADHACKAGE=false-  - if [ $HCNUMVER -gt 80605 ] ; then HEADHACKAGE=true ; fi+  - if [ $HCNUMVER -gt 80801 ] ; then HEADHACKAGE=true ; fi   - rm -f $CABALHOME/config   - |-    echo "verbose: normal +nowrap +markoutput"          >> $CABALHOME/config-    echo "remote-build-reporting: anonymous"            >> $CABALHOME/config-    echo "write-ghc-environment-files: always"          >> $CABALHOME/config-    echo "remote-repo-cache: $CABALHOME/packages"       >> $CABALHOME/config-    echo "logs-dir:          $CABALHOME/logs"           >> $CABALHOME/config-    echo "world-file:        $CABALHOME/world"          >> $CABALHOME/config-    echo "extra-prog-path:   $CABALHOME/bin"            >> $CABALHOME/config-    echo "symlink-bindir:    $CABALHOME/bin"            >> $CABALHOME/config-    echo "installdir:        $CABALHOME/bin"            >> $CABALHOME/config-    echo "build-summary:     $CABALHOME/logs/build.log" >> $CABALHOME/config-    echo "store-dir:         $CABALHOME/store"          >> $CABALHOME/config-    echo "install-dirs user"                            >> $CABALHOME/config-    echo "  prefix: $CABALHOME"                         >> $CABALHOME/config-    echo "repository hackage.haskell.org"               >> $CABALHOME/config-    echo "  url: http://hackage.haskell.org/"           >> $CABALHOME/config+    echo "verbose: normal +nowrap +markoutput"                                  >> $CABALHOME/config+    echo "remote-build-reporting: anonymous"                                    >> $CABALHOME/config+    echo "write-ghc-environment-files: always"                                  >> $CABALHOME/config+    echo "remote-repo-cache: $CABALHOME/packages"                               >> $CABALHOME/config+    echo "logs-dir:          $CABALHOME/logs"                                   >> $CABALHOME/config+    echo "world-file:        $CABALHOME/world"                                  >> $CABALHOME/config+    echo "extra-prog-path:   $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "symlink-bindir:    $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "installdir:        $CABALHOME/bin"                                    >> $CABALHOME/config+    echo "build-summary:     $CABALHOME/logs/build.log"                         >> $CABALHOME/config+    echo "store-dir:         $CABALHOME/store"                                  >> $CABALHOME/config+    echo "install-dirs user"                                                    >> $CABALHOME/config+    echo "  prefix: $CABALHOME"                                                 >> $CABALHOME/config+    echo "repository hackage.haskell.org"                                       >> $CABALHOME/config+    echo "  url: http://hackage.haskell.org/"                                   >> $CABALHOME/config+    echo "  secure: True"                                                       >> $CABALHOME/config+    echo "  key-threshold: 3"                                                   >> $CABALHOME/config+    echo "  root-keys:"                                                         >> $CABALHOME/config+    echo "    fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0" >> $CABALHOME/config+    echo "    1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42" >> $CABALHOME/config+    echo "    2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3" >> $CABALHOME/config+    echo "    0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d" >> $CABALHOME/config+    echo "    51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921" >> $CABALHOME/config   - |     if $HEADHACKAGE; then     echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1/g')" >> $CABALHOME/config@@ -113,14 +124,15 @@     echo "   key-threshold: 3"                                                            >> $CABALHOME/config     fi   - "echo 'jobs: 2' >> $CABALHOME/config"+  - GHCJOBS=-j2   - |-    echo "program-default-options" >> $CABALHOME/config-    echo "  ghc-options: -j2"      >> $CABALHOME/config+    echo "program-default-options"                >> $CABALHOME/config+    echo "  ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config   - cat $CABALHOME/config   - rm -fv cabal.project cabal.project.local cabal.project.freeze   - travis_retry ${CABAL} v2-update -v   - (cd /tmp && ${CABAL} v2-install $WITHCOMPILER -j2 doctest --constraint='doctest ==0.16.*' | color_cabal_output)-  - if [ $HCNUMVER -ge 80600 ] && [ $HCNUMVER -lt 80606 ] ; then (cd /tmp && ${CABAL} v2-install $WITHCOMPILER -j2 hlint --constraint='hlint ==2.1.*' | color_cabal_output) ; fi+  - if [ $HCNUMVER -ge 80800 ] && [ $HCNUMVER -lt 80802 ] ; then (cd /tmp && ${CABAL} v2-install $WITHCOMPILER -j2 hlint --constraint='hlint ==2.1.*' | color_cabal_output) ; fi   # Generate cabal.project   - rm -rf cabal.project cabal.project.local cabal.project.freeze   - touch cabal.project@@ -178,10 +190,10 @@   # Testing...   - ${CABAL} v2-test $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output   # Doctest...-  - (cd ${PKGDIR_haskell_ci} && doctest --fast -XBangPatterns -XNoImplicitPrelude -XDeriveAnyClass -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable -XDerivingStrategies -XGeneralizedNewtypeDeriving -XScopedTypeVariables src)+  - (cd ${PKGDIR_haskell_ci} && doctest --fast -XNoImplicitPrelude -XBangPatterns -XDeriveAnyClass -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable -XDerivingStrategies -XGeneralizedNewtypeDeriving -XScopedTypeVariables src)   # HLint..-  - if [ $HCNUMVER -ge 80600 ] && [ $HCNUMVER -lt 80606 ] ; then (cd ${PKGDIR_haskell_ci} && hlint -h ${TOP}/.hlint.yaml -XBangPatterns -XNoImplicitPrelude -XDeriveAnyClass -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable -XDerivingStrategies -XGeneralizedNewtypeDeriving -XScopedTypeVariables src) ; fi-  - if [ $HCNUMVER -ge 80600 ] && [ $HCNUMVER -lt 80606 ] ; then (cd ${PKGDIR_haskell_ci} && hlint -h ${TOP}/.hlint.yaml cli) ; fi+  - if [ $HCNUMVER -ge 80800 ] && [ $HCNUMVER -lt 80802 ] ; then (cd ${PKGDIR_haskell_ci} && hlint -h ${TOP}/.hlint.yaml -XNoImplicitPrelude -XBangPatterns -XDeriveAnyClass -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable -XDerivingStrategies -XGeneralizedNewtypeDeriving -XScopedTypeVariables src) ; fi+  - if [ $HCNUMVER -ge 80800 ] && [ $HCNUMVER -lt 80802 ] ; then (cd ${PKGDIR_haskell_ci} && hlint -h ${TOP}/.hlint.yaml cli) ; fi   # cabal check...   - (cd ${PKGDIR_haskell_ci} && ${CABAL} -vnormal check)   # Building without installed constraints for packages in global-db...@@ -192,7 +204,7 @@   # Constraint set deepseq-1.4   - echo 'Constraint set deepseq-1.4' && echo -en 'travis_fold:start:constraint-sets-deepseq-1.4\\r'   - if [ $HCNUMVER -lt 80400 ] ; then ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='deepseq ==1.4.*' --constraint='binary installed' all | color_cabal_output ; fi-  - if [ $HCNUMVER -lt 80400 ] ; then ${CABAL} v2-haddock $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='deepseq ==1.4.*' --constraint='binary installed' all | color_cabal_output ; fi+  - if [ $HCNUMVER -lt 80400 ] ; then ${CABAL} v2-haddock $WITHCOMPILER --with-haddock $HADDOCK --disable-tests --disable-benchmarks --constraint='deepseq ==1.4.*' --constraint='binary installed' all | color_cabal_output ; fi   - echo -en 'travis_fold:end:constraint-sets-deepseq-1.4\\r'  # REGENDATA ["--config=cabal.haskell-ci","cabal.project"]
haskell-ci.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.2 name:               haskell-ci-version:            0.4+version:            0.6 synopsis:           Cabal package script generator for Travis-CI description:   Script generator (@haskell-ci@) for [Travis-CI](https://travis-ci.org/) for continuous-integration testing of Haskell Cabal packages.@@ -30,7 +30,7 @@ maintainer:         hvr@gnu.org category:           Development build-type:         Simple-tested-with:        GHC ==8.6.5 || ==8.4.4 || ==8.2.2+tested-with:        GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.1 extra-source-files:   CHANGELOG.md   fixtures/cabal.haskell-ci@@ -112,14 +112,15 @@     HaskellCI.Travis.Yaml     HaskellCI.YamlSyntax -  ghc-options:-    -Wall -Wcompat -Wnoncanonical-monad-instances-    -Wnoncanonical-monadfail-instances+  ghc-options:        -Wall -Wcompat -Wnoncanonical-monad-instances +  if impl(ghc <8.8)+    ghc-options: -Wnoncanonical-monadfail-instances+   hs-source-dirs:     src   default-extensions:-    BangPatterns     NoImplicitPrelude+    BangPatterns     DeriveAnyClass     DeriveFoldable     DeriveFunctor@@ -136,7 +137,7 @@     ViewPatterns    build-depends:-    , base          >=4.10     && <4.13+    , base          >=4.10     && <4.14     , bytestring    ^>=0.10.8.1     , Cabal         ^>=3.0     , containers    ^>=0.5.7.1 || ^>=0.6.0.1@@ -156,13 +157,14 @@   -- other dependencies   build-depends:     , aeson                 ^>=1.4.2.0-    , base-compat           ^>=0.10.5+    , base-compat           ^>=0.11     , exceptions            ^>=0.10.0-    , generic-lens          ^>=1.1.0.0-    , HsYAML                ^>=0.1.1.3+    , generic-lens          ^>=1.2.0.0+    , HsYAML                ^>=0.2.0.0     , lattices              ^>=2     , microlens             ^>=0.4.10-    , optparse-applicative  ^>=0.14.3.0+    , network-uri           ^>=2.6.1.0+    , optparse-applicative  ^>=0.15     , temporary             ^>=1.3     , unordered-containers  ^>=0.2.10.0 @@ -186,10 +188,11 @@   main-is:          Tests.hs   hs-source-dirs:   test   build-depends:-    , ansi-terminal        ^>=0.8.0.2 || ^>=0.9.1+    , ansi-terminal        ^>=0.10     , base+    , base-compat     , bytestring-    , Diff                 ^>=0.3.4+    , Diff                 ^>=0.4.0     , directory     , filepath     , haskell-ci-internal
src/HaskellCI.hs view
@@ -20,7 +20,7 @@  import HaskellCI.Prelude -import Data.List                    (intercalate, isPrefixOf, nub, nubBy, sort, sortBy, (\\))+import Data.List                    (nubBy, sort, sortBy, (\\)) import System.Directory             (canonicalizePath, doesDirectoryExist, doesFileExist, makeRelativeToCurrentDirectory, setCurrentDirectory) import System.Environment           (getArgs) import System.Exit                  (ExitCode (..), exitFailure)@@ -89,15 +89,22 @@                 Nothing     -> do                     hPutStrLn stderr $ "Error: expected REGENDATA line in " ++ fp                     exitFailure-                Just argv   -> do+                Just (mversion, argv) -> do+                    -- warn if we regenerate using older haskell-ci+                    for_ mversion $ \version -> for_ (simpleParsec haskellCIVerStr) $ \haskellCIVer ->+                        when (haskellCIVer < version) $ do+                            hPutStrLn stderr $ "Regenerating using older haskell-ci-" ++ haskellCIVerStr+                            hPutStrLn stderr $ "File generated using haskell-ci-" ++ prettyShow version+                     (f, opts') <- parseTravis argv                     doTravis argv f (optionsWithOutputFile newFp <> opts' <> opts)         CommandTravis f -> doTravis argv0 f opts   where-    findArgv :: [String] -> Maybe [String]+    findArgv :: [String] -> Maybe (Maybe Version, [String])     findArgv ls = do         l <- findMaybe (afterInfix "REGENDATA") ls-        readMaybe l+        first simpleParsec <$> (readMaybe l :: Maybe (String, [String]))+            <|> (,) Nothing <$> (readMaybe l :: Maybe [String])      groupedVersions :: [(Version, NonEmpty Version)]     groupedVersions = map ((\vs -> (head vs, vs)) . NE.sortBy (flip compare))@@ -154,21 +161,27 @@             contents <- liftIO $ BS.readFile path             prj  <- either putStrLnErr return $ parseProjectFile path contents             prj' <- bitraverse findOptProjectPackage findProjectPackage prj+            let (uris, pkgs) = partitionEithers $ concat $ prjPackages prj'             return prj'-                { prjPackages    = concat $ prjPackages prj' ++ prjOptPackages prj'+                { prjPackages    = pkgs ++ concat (prjOptPackages prj')                 , prjOptPackages = []+                , prjUriPackages = uris                 }      rootdir = takeDirectory path      -- See findProjectPackages in cabal-install codebase     -- this is simple variant.-    findProjectPackage :: String -> m [FilePath]+    findProjectPackage :: String -> m [Either URI FilePath]     findProjectPackage pkglocstr = do-        mfp <- checkisFileGlobPackage pkglocstr `mplusMaybeT`-               checkIsSingleFilePackage pkglocstr+        mfp <- fmap3 Right (checkisFileGlobPackage pkglocstr) `mplusMaybeT`+               fmap3 Right (checkIsSingleFilePackage pkglocstr) `mplusMaybeT`+               fmap2 (\uri -> [Left uri]) (return $ parseURI pkglocstr)         maybe (putStrLnErr $ "bad package location: " ++ pkglocstr) return mfp +    fmap2 f = fmap (fmap f)+    fmap3 f = fmap (fmap (fmap f))+     findOptProjectPackage :: String -> m [FilePath]     findOptProjectPackage pkglocstr = do         mfp <- checkisFileGlobPackage pkglocstr `mplusMaybeT`@@ -217,7 +230,7 @@                 lines (prettyYaml id $ reann (travisHeader (cfgInsertVersion config) argv ++) $ toYaml travis)                 ++                 [ ""-                , "# REGENDATA " ++ show argv+                , "# REGENDATA " ++ if cfgInsertVersion config then show (haskellCIVerStr, argv) else show argv                 , "# EOF"                 ] 
src/HaskellCI/Compiler.hs view
@@ -24,8 +24,7 @@  import HaskellCI.Prelude -import Data.Set             (Set)-import Distribution.Version (Version, VersionRange, hasUpperBound, invertVersionRange, mkVersion, versionNumbers, withinRange)+import Distribution.Version (hasUpperBound, invertVersionRange, versionNumbers, withinRange)  import qualified Data.Set            as S import qualified Distribution.Pretty as C
src/HaskellCI/Config.hs view
@@ -6,9 +6,7 @@  import HaskellCI.Prelude -import Distribution.Simple.Utils       (fromUTF8BS)-import Distribution.Types.Version      (Version)-import Distribution.Types.VersionRange (VersionRange, anyVersion, noVersion)+import Distribution.Simple.Utils (fromUTF8BS)  import qualified Data.ByteString                 as BS import qualified Data.Map                        as M@@ -21,6 +19,7 @@ import qualified Distribution.Parsec             as C import qualified Distribution.Parsec.Newtypes    as C import qualified Distribution.Pretty             as C+import qualified Distribution.Types.PackageName  as C import qualified Distribution.Types.Version      as C import qualified Distribution.Types.VersionRange as C import qualified Text.PrettyPrint                as PP@@ -61,6 +60,7 @@     , cfgUnconstrainted      :: !VersionRange     , cfgHeadHackage         :: !VersionRange     , cfgGhcjsTests          :: !Bool+    , cfgGhcjsTools          :: ![C.PackageName]     , cfgCheck               :: !Bool     , cfgOnlyBranches        :: [String]     , cfgIrcChannels         :: [String]@@ -68,6 +68,7 @@     , cfgFolds               :: S.Set Fold     , cfgGhcHead             :: !Bool     , cfgPostgres            :: !Bool+    , cfgGoogleChrome        :: !Bool     , cfgEnv                 :: M.Map Version String     , cfgAllowFailures       :: !VersionRange     , cfgLastInSeries        :: !Bool@@ -120,6 +121,7 @@     , cfgUnconstrainted  = anyVersion     , cfgHeadHackage     = defaultHeadHackage     , cfgGhcjsTests      = False+    , cfgGhcjsTools      = []     , cfgCheck           = True     , cfgOnlyBranches    = []     , cfgIrcChannels     = []@@ -127,6 +129,7 @@     , cfgFolds           = S.empty     , cfgGhcHead         = False     , cfgPostgres        = False+    , cfgGoogleChrome    = False     , cfgEnv             = M.empty     , cfgAllowFailures   = noVersion     , cfgLastInSeries    = False@@ -180,8 +183,10 @@         ^^^ metahelp "RANGE" "Make unconstrained build"     <*> rangeField            "head-hackage"                                                  #cfgHeadHackage defaultHeadHackage         ^^^ metahelp "RANGE" "Use head.hackage repository. Also marks as allow-failures"-    <*> C.booleanFieldDef "ghcjs-tests"                                                       #cfgGhcjsTests False+    <*> C.booleanFieldDef     "ghcjs-tests"                                                   #cfgGhcjsTests False         ^^^ help "Run tests with GHCJS (experimental, relies on cabal-plan finding test-suites)"+    <*> C.monoidalFieldAla    "ghcjs-tools"               (C.alaList C.FSep)                  #cfgGhcjsTools+--        ^^^ metahelp "TOOL" "Additional host tools to install with GHCJS"     <*> C.booleanFieldDef "cabal-check"                                                       #cfgCheck True         ^^^ help "Disable cabal check run"     <*> C.monoidalFieldAla    "branches"                  (C.alaList' C.FSep C.Token')        #cfgOnlyBranches@@ -196,6 +201,8 @@         ^^^ help "Add ghc-head job"     <*> C.booleanFieldDef     "postgresql"                                                    #cfgPostgres False         ^^^ help "Add postgresql service"+    <*> C.booleanFieldDef     "google-chrome"                                                 #cfgGoogleChrome False+        ^^^ help "Add google-chrome service"     <*> C.monoidalFieldAla    "env"                       Env                                 #cfgEnv         ^^^ metahelp "ENV" "Environment variables per job (e.g. `8.0.2:HADDOCK=false`)"     <*> C.optionalFieldDefAla "allow-failures"            Range                               #cfgAllowFailures noVersion
src/HaskellCI/Config/Doctest.hs view
@@ -4,7 +4,7 @@  import HaskellCI.Prelude -import Distribution.Version (mkVersion, noVersion, withinVersion)+import Distribution.Version (withinVersion)  import qualified Distribution.FieldGrammar      as C import qualified Distribution.Parsec.Newtypes   as C
src/HaskellCI/Glob.hs view
@@ -3,7 +3,7 @@ import HaskellCI.Prelude  import Control.Applicative       as App ((<$>))-import Control.Monad             (filterM, liftM2, void)+import Control.Monad             (filterM, liftM2) import System.Directory          (doesDirectoryExist, getDirectoryContents) import System.FilePath.Posix     ((</>)) import Text.ParserCombinators.ReadP
src/HaskellCI/List.hs view
@@ -7,8 +7,6 @@  import HaskellCI.Prelude -import Control.Monad (ap)- newtype ListBuilder x a = LB { unLB :: forall r. (([x] -> [x]) -> a -> r) -> r }  instance Functor (ListBuilder x) where
src/HaskellCI/Prelude.hs view
@@ -19,6 +19,7 @@ import Data.ByteString        as X (ByteString) import Data.Char              as X (isSpace, isUpper, toLower) import Data.Coerce            as X (coerce)+import Data.Either            as X (partitionEithers) import Data.Foldable          as X (for_, toList, traverse_) import Data.Function          as X (on) import Data.Functor.Identity  as X (Identity (..))@@ -31,8 +32,11 @@ import Data.Void              as X (Void) import GHC.Generics           as X (Generic) import Lens.Micro             as X (mapped, over, (&), (.~), (<&>), (^.), (^..))+import Network.URI            as X (URI, parseURI, uriToString) import Text.Read              as X (readMaybe) +import Distribution.Parsec  as X (simpleParsec)+import Distribution.Pretty  as X (prettyShow) import Distribution.Version as X (Version, VersionRange, anyVersion, mkVersion, noVersion)  import qualified Distribution.Version as C
src/HaskellCI/Project.hs view
@@ -28,6 +28,7 @@ data Project b a = Project     { prjPackages     :: [a]     , prjOptPackages  :: [b]+    , prjUriPackages  :: [URI]     , prjConstraints  :: [String]     , prjAllowNewer   :: [String]     , prjReorderGoals :: Bool@@ -47,7 +48,7 @@         <*> traverse g (prjPackages prj)  emptyProject :: Project b a-emptyProject = Project [] [] [] [] False Nothing OptimizationOn [] []+emptyProject = Project [] [] [] [] [] False Nothing OptimizationOn [] []  -- | Parse project file. Extracts only few fields. --@@ -86,6 +87,7 @@ grammar origFields = Project     <$> C.monoidalFieldAla "packages"          (C.alaList' C.FSep PackageLocation) #prjPackages     <*> C.monoidalFieldAla "optional-packages" (C.alaList' C.FSep PackageLocation) #prjOptPackages+    <*> pure []     <*> C.monoidalFieldAla "constraints"       (C.alaList' C.CommaVCat NoCommas)   #prjConstraints     <*> C.monoidalFieldAla "allow-newer"       (C.alaList' C.CommaVCat NoCommas)   #prjAllowNewer     <*> C.booleanFieldDef  "reorder-goals"                                         #prjReorderGoals False
src/HaskellCI/Sh.hs view
@@ -19,8 +19,6 @@ import qualified ShellCheck.Interface  as SC #endif -import qualified Control.Monad.Fail as Fail- import HaskellCI.MonadErr  -------------------------------------------------------------------------------@@ -104,11 +102,6 @@         (shs1, x) <- unShM m     shs0         (shs2, y) <- unShM (k x) shs1         return (shs2, y)--    fail = Fail.fail--instance Fail.MonadFail ShM where-    fail = throwErr . ShError  instance MonadErr ShError ShM where     throwErr err = ShM $ \_ -> Left err
src/HaskellCI/ShVersionRange.hs view
@@ -4,7 +4,7 @@  import HaskellCI.Prelude -import Algebra.Lattice (bottom, top, joins)+import Algebra.Lattice (joins) import Algebra.Heyting.Free (Free (..)) import Algebra.Lattice.Wide (Wide (..)) 
src/HaskellCI/Travis.hs view
@@ -126,6 +126,9 @@         shForJob RangeGHCJS "HC=${HC}js"         shForJob RangeGHCJS "WITHCOMPILER=\"--ghcjs ${WITHCOMPILER}js\"" +        -- Needed to work around haskell/cabal#6214+        sh "HADDOCK=$(echo \"/opt/$CC/bin/haddock\" | sed 's/-/\\//')"+         -- Hack: happy needs ghc. Let's install version matching GHCJS.         -- At the moment, there is only GHCJS-8.4, so we install GHC-8.4.4         when anyGHCJS $ do@@ -210,6 +213,14 @@             , "  prefix: $CABALHOME"             , "repository hackage.haskell.org"             , "  url: http://hackage.haskell.org/"+            , "  secure: True"+            , "  key-threshold: 3"+            , "  root-keys:"+            , "    fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0"+            , "    1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42"+            , "    2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3"+            , "    0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d"+            , "    51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921"             ]          -- Add head.hackage repository to ~/.cabal/config@@ -234,12 +245,13 @@         for_ (cfgJobs >>= cabalJobs) $ \n ->             sh $ "echo 'jobs: " ++ show n ++ "' >> $CABALHOME/config" -        -- GHC jobs+        -- GHC jobs + ghc-options         for_ (cfgJobs >>= ghcJobs) $ \m -> do-            catForJob (Range $ C.orLaterVersion (C.mkVersion [7,8])) "$CABALHOME/config"-                [ "program-default-options"-                , "  ghc-options: -j" ++ show m-                ]+            shForJob (Range $ C.orLaterVersion (C.mkVersion [7,8])) $ "GHCJOBS=-j" ++ show m+        cat "$CABALHOME/config"+            [ "program-default-options"+            , "  ghc-options: $GHCJOBS +RTS -M6G -RTS"+            ]          sh "cat $CABALHOME/config" @@ -264,10 +276,13 @@         when (cfgHLintEnabled cfgHLint) $ shForJob (hlintJobVersionRange versions cfgHeadHackage (cfgHLintJob cfgHLint)) $             cabalInTmp $ "v2-install $WITHCOMPILER -j2 hlint" ++ hlintVersionConstraint -        when (anyGHCJS && cfgGhcjsTests) $ shForJob RangeGHCJS $ cabalInTmp "v2-install -w ghc-8.4.4 cabal-plan"+        -- Install cabal-plan (for ghcjs tests)+        when (anyGHCJS && cfgGhcjsTests) $ do+            shForJob RangeGHCJS $ cabalInTmp "v2-install -w ghc-8.4.4 cabal-plan --constraint='cabal-plan ^>=0.6.0.0' --constraint='cabal-plan +exe'"          -- Install happy-        when anyGHCJS $ shForJob RangeGHCJS $ cabalInTmp "v2-install -w ghc-8.4.4 happy"+        when anyGHCJS $ for_ cfgGhcjsTools $ \t ->+            shForJob RangeGHCJS $ cabalInTmp $ "v2-install -w ghc-8.4.4 " ++ C.prettyShow t          -- create cabal.project file         generateCabalProject False@@ -310,6 +325,17 @@              generateCabalProject True +            when (anyGHCJS && cfgGhcjsTests) $ sh $ unlines $+                [ "pkgdir() {"+                , "  case $1 in"+                ] +++                [ "    " ++ pkgName ++ ") echo " ++ pkgNameDirVariable pkgName ++ " ;;"+                | Pkg{pkgName} <- pkgs+                ] +++                [ "  esac"+                , "}"+                ]+         -- build no-tests no-benchmarks         unless (equivVersionRanges C.noVersion cfgNoTestsNoBench) $ foldedSh FoldBuild "Building..." cfgFolds $ do             comment "this builds all libraries and executables (without tests/benchmarks)"@@ -325,24 +351,21 @@             shForJob (RangeGHC /\ Range (cfgTests /\ cfgRunTests) /\ hasTests) $                 cabal "v2-test $WITHCOMPILER ${TEST} ${BENCH} all" -            when cfgGhcjsTests $ shForJob (RangeGHCJS /\ hasTests)-                "for testexe in $(cabal-plan list-bins '*:test:*' | awk '{ print $2 }'); do echo $testexe; nodejs ${testexe}.jsexe/all.js; done"+            when cfgGhcjsTests $ shForJob (RangeGHCJS /\ hasTests) $ unwords+                [ "cabal-plan list-bins '*:test:*' | while read -r line; do"+                , "testpkg=$(echo \"$line\" | perl -pe 's/:.*//');"+                , "testexe=$(echo \"$line\" | awk '{ print $2 }');"+                , "echo \"testing $textexe in package $textpkg\";"+                , "(cd \"$(pkgdir $testpkg)\" && nodejs \"$testexe\".jsexe/all.js);"+                , "done"+                ]          -- doctest         when doctestEnabled $ foldedSh FoldDoctest "Doctest..." cfgFolds $ do             let doctestOptions = unwords $ cfgDoctestOptions cfgDoctest             unless (null $ cfgDoctestFilterPkgs cfgDoctest) $ do-                sh $ unlines $ concat-                    [ [ "for ghcenv in .ghc.environment.*; do"-                      , "mv $ghcenv ghcenv;"-                      ]-                    , cfgDoctestFilterPkgs cfgDoctest <&> \pn ->-                        "grep -vE '^package-id " ++ C.unPackageName pn ++ "-([0-9]+(\\.[0-9]+)*)-' ghcenv > ghcenv.tmp; mv ghcenv.tmp ghcenv;"-                    , [ "mv ghcenv $ghcenv;"-                      , "cat $ghcenv;"-                      , "done"-                      ]-                    ]+                let filterPkgs = intercalate "|" $ map C.unPackageName $ cfgDoctestFilterPkgs cfgDoctest+                sh $ "perl -i -e 'while (<ARGV>) { print unless /package-id\\s+(" ++ filterPkgs ++ ")-\\d+(\\.\\d+)*/; }' .ghc.environment.*"             for_ pkgs $ \Pkg{pkgName,pkgGpd,pkgJobs} -> do                 for_ (doctestArgs pkgGpd) $ \args -> do                     let args' = unwords args@@ -378,7 +401,7 @@         -- haddock         when (hasLibrary && not (equivVersionRanges C.noVersion cfgHaddock)) $             foldedSh FoldHaddock "haddock..." cfgFolds $-                shForJob (RangeGHC /\ Range cfgHaddock) $ cabal "v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all"+                shForJob (RangeGHC /\ Range cfgHaddock) $ cabal $ "v2-haddock $WITHCOMPILER " ++ withHaddock ++ " ${TEST} ${BENCH} all"          -- unconstained build         -- Have to build last, as we remove cabal.project.local@@ -406,7 +429,7 @@                     when (csRunTests cs) $                         shForCs $ cabal $ "v2-test $WITHCOMPILER " ++ allFlags ++ " all"                     when (csHaddock cs) $-                        shForCs $ cabal $ "v2-haddock $WITHCOMPILER " ++ allFlags ++ " all"+                        shForCs $ cabal $ "v2-haddock $WITHCOMPILER " ++ withHaddock ++ " " ++ allFlags ++ " all"      -- assemble travis configuration     return Travis@@ -439,8 +462,9 @@         , travisServices      = buildList $ do             when cfgPostgres $ item "postgresql"         , travisAddons        = TravisAddons-            { taApt      = TravisApt [] []-            , taPostgres = if cfgPostgres then Just "10" else Nothing+            { taApt          = TravisApt [] []+            , taPostgres     = if cfgPostgres then Just "10" else Nothing+            , taGoogleChrome = cfgGoogleChrome             }         , travisMatrix        = TravisMatrix             { tmInclude = buildList $ do@@ -464,7 +488,9 @@                                     { taPackages = addGvs $ ("cabal-install-" ++ cvs) : S.toList cfgApt                                     , taSources  = ["hvr-ghc"]                                     }-                                , taPostgres = Nothing++                                , taPostgres     = Nothing+                                , taGoogleChrome = False                                 }                             } @@ -484,6 +510,7 @@         }   where     pkgs = prjPackages prj+    uris = prjUriPackages prj     projectName = fromMaybe (pkgName $ Prelude.head pkgs) cfgProjectName      justIf True x  = Just x@@ -558,10 +585,14 @@     shForJob :: CompilerRange -> String -> ShM ()     shForJob vr cmd = maybe (pure ()) sh (forJob vr cmd) -    catForJob vr fp contents = shForJob vr (catCmd Double fp contents)+    -- catForJob vr fp contents = shForJob vr (catCmd Double fp contents)      generateCabalProjectFields :: Bool -> [C.PrettyField ()]     generateCabalProjectFields dist = buildList $ do+        -- generate package fields for URI packages.+        for_ uris $ \uri ->+            item $ C.PrettyField () "packages" $ PP.text $ uriToString id uri ""+         -- copy files from original cabal.project         case cfgCopyFields of             CopyFieldsNone -> pure ()@@ -650,6 +681,10 @@          sh "cat cabal.project || true"         sh "cat cabal.project.local || true"++    -- Needed to work around haskell/cabal#6214+    withHaddock :: String+    withHaddock = "--with-haddock $HADDOCK"  pkgNameDirVariable' :: String -> String pkgNameDirVariable' n = "PKGDIR_" ++ map f n where
src/HaskellCI/Travis/Yaml.hs view
@@ -77,8 +77,9 @@   deriving Show  data TravisAddons = TravisAddons-    { taApt      :: TravisApt-    , taPostgres :: Maybe String+    { taApt          :: TravisApt+    , taPostgres     :: Maybe String+    , taGoogleChrome :: Bool     }   deriving Show @@ -214,6 +215,8 @@         -- no apt on purpose         for_ taPostgres $ \p ->             item $ "postgresql" ~> fromString p+        when taGoogleChrome $+            item $ "google" ~> fromString "stable"  ------------------------------------------------------------------------------- -- ToJSON
test/Tests.hs view
@@ -1,15 +1,16 @@ {-# LANGUAGE ViewPatterns #-} module Main (main) where +import Prelude ()+import Prelude.Compat+ import HaskellCI             hiding (main) import HaskellCI.Diagnostics (runDiagnosticsT) -import Control.Applicative        ((<$>), (<*>)) import Control.Exception          (ErrorCall (..), throwIO)-import Data.Algorithm.Diff        (Diff (..), getGroupedDiff)+import Data.Algorithm.Diff        (PolyDiff (..), getGroupedDiff) import Data.List                  (stripPrefix) import Data.Maybe                 (mapMaybe)-import Data.Monoid                (mconcat) import System.Directory           (doesFileExist, setCurrentDirectory) import System.FilePath            (addExtension) import Test.Tasty                 (TestName, TestTree, defaultMain, testGroup)