From adbd153c1afffe0bb7122ce23470b79b493b2de1 Mon Sep 17 00:00:00 2001 From: Harendra Kumar Date: Thu, 15 Mar 2018 19:24:43 +0530 Subject: [PATCH] Update packcheck commit-id, readme, stack resolver Also, reduce number of builds in default configs --- .travis.yml | 55 +++++++++++++++++++++++++++++-------------------- Changelog.md | 3 ++- README.md | 16 +++++++------- appveyor.yml | 12 ++++++++--- packcheck.cabal | 4 ++-- stack.yaml | 2 +- 6 files changed, 56 insertions(+), 36 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3563c02..54276d2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,13 +6,19 @@ env: # Global options used for all CI tests # ------------------------------------------------------------------------ - GHC_OPTIONS="-Werror" + # ------------------------------------------------------------------------ - # Options for builds that need stack + # Options for builds that need stack (note, cabal builds can use stack) # ------------------------------------------------------------------------ + # Note requiring a specific version of stack using STACKVER may fail due to + # github API limit while checking and upgrading/downgrading to the specific + # version. #- STACKVER="1.6.5" - STACK_UPGRADE="y" + # ------------------------------------------------------------------------ # Other options: Normally you would not need to customize these + # Note - these are used by both stack and cabal builds # ------------------------------------------------------------------------ - CABAL_REINIT_CONFIG=y - CABAL_CHECK_RELAX=y @@ -21,6 +27,7 @@ env: - TEST_INSTALL=y - PATH=/bin:/usr/bin - LC_ALL=C.UTF-8 + # ------------------------------------------------------------------------ # Location of packcheck.sh (the shell script invoked to perform CI tests ). # ------------------------------------------------------------------------ @@ -32,15 +39,15 @@ env: # If you have not committed packcheck.sh in your repo at PACKCHECK_LOCAL_PATH # then it is automatically pulled from this URL. - PACKCHECK_GITHUB_URL="https://raw.githubusercontent.com/harendra-kumar/packcheck" - - PACKCHECK_GITHUB_COMMIT="da9d6da3d18d6250c06617817f0879324c75c224" + - PACKCHECK_GITHUB_COMMIT="3be460b9c8d4cf53eeacf1ac319c97420f6345cc" notifications: email: false -# This matrix has total 11 builds enabled, 4 builds each (3 last major compiler -# versions and head) for stack and cabal, 2 OSX builds (stack and cabal for -# latest compiler version), and one hlint build. You may want to comment out -# some of the builds to be lighter on the CI infrastructure. +# This matrix has total of 6 builds enabled, we try to cover last three major +# GHC versions, stack, cabal, Linux and OSX with minimum number of builds +# possible. You can uncomment other disabled builds or comment out existing +# ones to your taste. # # We pre-install the cabal-install package to not incur the penalty of building # it the first time in cached builds or every time in uncached builds. @@ -51,13 +58,13 @@ matrix: # (Linux) stack builds # -------------------------------------------------------------------------- - - env: BUILD=stack CABALVER=1.22 GHCVER=7.10.3 RESOLVER=lts-6 - addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}} + #- env: BUILD=stack CABALVER=1.22 GHCVER=7.10.3 RESOLVER=lts-6 + # addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}} - env: BUILD=stack CABALVER=1.24 GHCVER=8.0.2 RESOLVER=lts-9 addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2], sources: [hvr-ghc]}} - - env: BUILD=stack CABALVER=2.0 GHCVER=8.2.2 RESOLVER=lts-10 + - env: BUILD=stack CABALVER=2.0 GHCVER=8.2.2 RESOLVER=lts-11 addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2], sources: [hvr-ghc]}} # Nightly @@ -68,20 +75,24 @@ matrix: # You can customize a stack build even without a custom stack-yaml # using STACK_OPTIONS, STACK_BUILD_OPTIONS, GHC_OPTIONS etc. - #- env: BUILD=stack RESOLVER=lts-10.0 STACK_BUILD_OPTIONS="--flag packcheck:dev" + #- env: BUILD=stack RESOLVER=lts-11 STACK_BUILD_OPTIONS="--flag packcheck:dev" # -------------------------------------------------------------------------- - # (Linux) cabal builds require pre-installed cabal-install and ghc + # (Linux) cabal builds # -------------------------------------------------------------------------- - - env: BUILD=cabal CABALVER=1.22 GHCVER=7.10.3 - addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}} + #- env: BUILD=cabal CABALVER=1.22 GHCVER=7.10.3 + # addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}} - - env: BUILD=cabal CABALVER=1.24 GHCVER=8.0.2 - addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2], sources: [hvr-ghc]}} + #- env: BUILD=cabal CABALVER=1.24 GHCVER=8.0.2 + # addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2], sources: [hvr-ghc]}} - - env: BUILD=cabal CABALVER=2.0 GHCVER=8.2.2 - addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2], sources: [hvr-ghc]}} + # Consider that we do an 8.2.2 cabal build for OSX, see below + #- env: BUILD=cabal CABALVER=2.0 GHCVER=8.2.2 + # addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2], sources: [hvr-ghc]}} + + - env: BUILD=cabal CABALVER=2.2 GHCVER=8.4.1 + addons: {apt: {packages: [cabal-install-2.2,ghc-8.4.1], sources: [hvr-ghc]}} - env: BUILD=cabal CABALVER=head GHCVER=head addons: {apt: {packages: [cabal-install-head,ghc-head], sources: [hvr-ghc]}} @@ -91,18 +102,18 @@ matrix: # -------------------------------------------------------------------------- # GHC 8.2.2/cabal build via stack - - env: BUILD=cabal RESOLVER=lts-10 + - env: BUILD=cabal RESOLVER=lts-11 os: osx # GHC 8.2.2/stack - - env: BUILD=stack RESOLVER=lts-10 - os: osx + #- env: BUILD=stack RESOLVER=lts-11 + # os: osx # -------------------------------------------------------------------------- # Lint # -------------------------------------------------------------------------- - - env: BUILD=stack RESOLVER=lts-10 HLINT_COMMANDS="hlint lint ." + #- env: BUILD=stack RESOLVER=lts-11 HLINT_COMMANDS="hlint lint ." # -------------------------------------------------------------------------- # Build and send coverage report to coveralls.io using hpc-coveralls @@ -120,7 +131,7 @@ matrix: allow_failures: - env: BUILD=stack RESOLVER=nightly - env: BUILD=cabal CABALVER=head GHCVER=head - - env: BUILD=stack RESOLVER=lts-10 HLINT_COMMANDS="hlint lint ." + - env: BUILD=stack RESOLVER=lts-11 HLINT_COMMANDS="hlint lint ." # ------------------------------------------------------------------------ # Settings beyond this point are advanced and normally not tweaked diff --git a/Changelog.md b/Changelog.md index 25aa72f..c4ab448 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,13 +1,14 @@ ## 0.1.2 ### Breaking Changes -* STACK_BUILD_OPTIONS and CABAL_CONFIGURE_OPTIONS now append to the existing +* Make STACK_BUILD_OPTIONS and CABAL_CONFIGURE_OPTIONS append to the existing options instead of overriding them. * Do not enforce specific stack version in CI configs - to avoid failures due to github API limits when upgrading or downgrading. ### Enhancements * Better documentation in travis and appveyor configs +* Reduce the number of builds in default config from 11 to 6 ## 0.1.1 diff --git a/README.md b/README.md index 500ed58..ddabe94 100644 --- a/README.md +++ b/README.md @@ -162,7 +162,8 @@ For pure cabal builds i.e. when `BUILD=cabal` and `RESOLVER` is not specified, `cabal` and `ghc` must be pre-installed on the system before building. ``` -cueball $ packcheck.sh --help +$ packcheck.sh --help + -------------------------------------------------- Usage -------------------------------------------------- @@ -193,7 +194,7 @@ CABALVER : [a.b.c.d] Cabal version (prefix) to use STACKVER : [a.b.c.d] Stack version (prefix) to use GHC_OPTIONS : Specify GHC options to use SDIST_OPTIONS : Arguments to stack/cabal sdist command (e.g. --pvp-bounds) -DISABLE_SDIST_BUILD : Do not build from source distribution +DISABLE_SDIST_BUILD : [y] Do not build from source distribution DISABLE_BENCH : [y] Do not build benchmarks, default is to build but not run PATH : [path] Set PATH explicitly for predictable builds TEST_INSTALL : [y] DESTRUCTIVE! Install the package after building (force install with cabal) @@ -202,15 +203,15 @@ TEST_INSTALL : [y] DESTRUCTIVE! Install the package after building (f Advanced stack build parameters or env variables -------------------------------------------------- STACK_YAML : Alternative stack config, cannot be a path, just the file name -STACK_OPTIONS : Provide additional stack global options (e.g. -v) -STACK_BUILD_OPTIONS : Override the default stack build command options -STACK_UPGRADE : DESTRUCTIVE! Upgrades stack to latest version +STACK_OPTIONS : ADDITIONAL stack global options (e.g. -v) to append +STACK_BUILD_OPTIONS : ADDITIONAL stack build command options to append +STACK_UPGRADE : [y] DESTRUCTIVE! Upgrades stack to latest version -------------------------------------------------- Advanced cabal build parameters or env variables -------------------------------------------------- CABAL_USE_STACK_SDIST : [y] Use stack sdist (to use --pvp-bounds) -CABAL_CONFIGURE_OPTIONS : Override the default cabal configure options +CABAL_CONFIGURE_OPTIONS : ADDITIONAL default cabal configure options to append CABAL_CHECK_RELAX : [y] Do not fail if cabal check fails on the package. CABAL_NO_SANDBOX : [y] DESTRUCTIVE! Clobber (force install) global cabal ghc package db CABAL_HACKAGE_MIRROR : [y] DESTRUCTIVE! Specify an alternative mirror, will modify the cabal user config file. @@ -230,4 +231,5 @@ HLINT_COMMANDS : hlint commands e.g.'hlint lint src; hlint lint test' -------------------------------------------------- Diagnostics parameters or env variables -------------------------------------------------- -CHECK_ENV : Treat unknown env variables as error, used with env -i +CHECK_ENV : [y] Treat unknown env variables as error, used with env -i +BASE_TIME : System time to be used as base for timeline reporting diff --git a/appveyor.yml b/appveyor.yml index 696a34c..8fb82d6 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -6,12 +6,17 @@ environment: # Global options used for all CI tests # ------------------------------------------------------------------------ GHC_OPTIONS: "-Werror" + # ------------------------------------------------------------------------ - # Options for builds that need stack + # Options for builds that need stack (note, cabal builds can use stack) # ------------------------------------------------------------------------ + # Note requiring a specific version of stack using STACKVER may fail due to + # github API limit while checking and upgrading/downgrading to the specific + # version. #STACKVER: "1.6.5" STACK_UPGRADE: "y" - RESOLVER: "lts-10.0" + RESOLVER: "lts-11.0" + # ------------------------------------------------------------------------ # Normally you would not need to customize these params # ------------------------------------------------------------------------ @@ -24,6 +29,7 @@ environment: PATH: "%PATH%;%APPDATA%\\local\\bin" STACK_ROOT: "c:\\sr" LOCAL_BIN: "%APPDATA%\\local\\bin" + # ------------------------------------------------------------------------ # Location of packcheck.sh (the shell script invoked to perform CI tests ). # ------------------------------------------------------------------------ @@ -35,7 +41,7 @@ environment: # If you have not committed packcheck.sh in your repo at PACKCHECK_LOCAL_PATH # then it is automatically pulled from this URL. PACKCHECK_GITHUB_URL: "https://raw.githubusercontent.com/harendra-kumar/packcheck" - PACKCHECK_GITHUB_COMMIT: "da9d6da3d18d6250c06617817f0879324c75c224" + PACKCHECK_GITHUB_COMMIT: "3be460b9c8d4cf53eeacf1ac319c97420f6345cc" cache: - "%STACK_ROOT%" diff --git a/packcheck.cabal b/packcheck.cabal index 06ddc01..d7c3e7d 100644 --- a/packcheck.cabal +++ b/packcheck.cabal @@ -15,7 +15,7 @@ description: . To use it for CI, simply copy the @.travis.yml@, @appveyor.yml@ config files from this package to your package and that's it. It should work without modification, - of course you can edit them to customize. For use on local host, just copy + and of course you can customize the configs. For use on local host, just copy over the @packcheck.sh@ script and put it in your `PATH`. Run the script from the package directory of the package you want to build. . @@ -25,7 +25,7 @@ description: This is also a minimal yet complete model package (with tests, benchmarks, Linux\/MacOS\/Windows CI already working) that can be used as a starting point to develop a new package. Beginners can use it to learn about haskell package - metadata structure. + metadata structure, benchmarks, tests, CI configs etc. . See the README for comprehensive documentation. diff --git a/stack.yaml b/stack.yaml index aaee5c9..2815bdf 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,3 +1,3 @@ -resolver: lts-10.3 +resolver: lts-11.0 packages: - '.'