# packcheck-0.4.2 # You can use any of the options supported by packcheck as environment # variables here. See https://github.com/harendra-kumar/packcheck for all # options and their explanation. # dist: trusty dist: xenial env: # ------------------------------------------------------------------------ # Global options, you can use these per build as well # ------------------------------------------------------------------------ global: # ------------------------------------------------------------------------ # Common options # ------------------------------------------------------------------------ - GHC_OPTIONS="-Werror" - CABAL_REINIT_CONFIG=y - LC_ALL=C.UTF-8 # ------------------------------------------------------------------------ # What to build # ------------------------------------------------------------------------ # - DISABLE_TEST=y # - DISABLE_BENCH=y # - DISABLE_DOCS=y # - DISABLE_SDIST_BUILD=y # - DISABLE_DIST_CHECKS=y - ENABLE_INSTALL=y # ------------------------------------------------------------------------ # stack options # ------------------------------------------------------------------------ # 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" # ------------------------------------------------------------------------ # cabal options # ------------------------------------------------------------------------ - CABAL_CHECK_RELAX=y - CABAL_NO_SANDBOX=y - CABAL_HACKAGE_MIRROR=hackage.haskell.org:http://hackage.fpcomplete.com # ------------------------------------------------------------------------ # Where to find the required tools # ------------------------------------------------------------------------ - PATH=/bin:/usr/bin - TOOLS_DIR=/opt # ------------------------------------------------------------------------ # Location of packcheck.sh (the shell script invoked to perform CI tests ). # ------------------------------------------------------------------------ # You can either commit the packcheck.sh script at this path in your repo or # you can use it by specifying the PACKCHECK_REPO_URL option below in which # case it will be automatically copied from the packcheck repo to this path # during CI tests. In any case it is finally invoked from this path. - PACKCHECK_LOCAL_PATH="./packcheck.sh" # 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="d11a8a68fef00f4932bbedd6134950495ccd7420" notifications: email: on_success: change on_failure: always # 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. matrix: include: # -------------------------------------------------------------------------- # (Linux) cabal builds (BUILD=cabal-v1, BUILD=cabal-v2). Common envvars are: # CABAL_CONFIGURE_OPTIONS (cabal-v1), CABAL_BUILD_OPTIONS (cabal-v2) # -------------------------------------------------------------------------- #- env: BUILD=cabal-v2 GHCVER=head # addons: {apt: {packages: [cabal-install-head,ghc-head], sources: [hvr-ghc]}} - env: BUILD=cabal-v2 GHCVER=8.8.1 GHC_OPTIONS="" CABAL_BUILD_OPTIONS="--flag benchmark --flag inspection --allow-newer=base,ghc" addons: {apt: {packages: [cabal-install-head,ghc-8.8.1], sources: [hvr-ghc]}} - env: BUILD=cabal-v2 GHCVER=8.6.5 GHC_OPTIONS="" CABAL_BUILD_OPTIONS="--flags streamk" addons: {apt: {packages: [cabal-install-2.4,ghc-8.6.5], sources: [hvr-ghc]}} - env: BUILD=cabal-v2 GHCVER=8.4.4 GHC_OPTIONS="" CABAL_BUILD_OPTIONS="--flag debug" addons: {apt: {packages: [cabal-install-2.4,ghc-8.4.4], sources: [hvr-ghc]}} # GHC-8.2.2 hogs memory leading to out-of-memory when compiling benchmarks #- env: BUILD=cabal-v2 GHCVER=8.2.2 GHC_OPTIONS="" DISABLE_BENCH=y # addons: {apt: {packages: [cabal-install-2.4,ghc-8.2.2], sources: [hvr-ghc]}} - env: BUILD=cabal-v2 GHCVER=8.0.2 GHC_OPTIONS="" CABAL_BUILD_OPTIONS="--flags examples-sdl" addons: {apt: {packages: [cabal-install-2.4,ghc-8.0.2,libsdl1.2-dev], sources: [hvr-ghc]}} - env: BUILD=cabal-v2 GHCVER=7.10.3 GHC_OPTIONS="" CABAL_BUILD_OPTIONS="--flags examples-sdl" addons: {apt: {packages: [cabal-install-2.4,ghc-7.10.3,libsdl1.2-dev], sources: [hvr-ghc]}} # You can specify build flags like this: #- env: BUILD=cabal-v2 CABAL_BUILD_OPTIONS="--flags=dev" # addons: {apt: {packages: [cabal-install-head,ghc-head], sources: [hvr-ghc]}} # -------------------------------------------------------------------------- # GHCJS cabal builds # -------------------------------------------------------------------------- # Use CABAL_BUILD_OPTIONS to pass any options to cabal e.g. project-file # DISABLE_SDIST_BUILD is set because of a cabal issue. 'cabal info' # unnecessarily requires "ghc". - env: BUILD=cabal-v2 ENABLE_GHCJS=y ENABLE_INSTALL= DISABLE_SDIST_BUILD=y addons: apt: sources: - hvr-ghc - sourceline: 'ppa:hvr/ghcjs' - sourceline: 'deb https://deb.nodesource.com/node_11.x xenial main' key_url: 'https://deb.nodesource.com/gpgkey/nodesource.gpg.key' packages: [cabal-install-head,ghcjs-8.4] # -------------------------------------------------------------------------- # (Linux) stack builds (BUILD=stack). Some common envvars for stack builds # are: STACK_YAML, STACK_OPTIONS, STACK_BUILD_OPTIONS # -------------------------------------------------------------------------- # # NOTE: cabal-install is required for some of the packcheck options to work. # We just install it so that packcheck does not build it from source # otherwise. #- env: BUILD=stack RESOLVER=nightly # addons: {apt: {packages: [cabal-install-1.24], sources: [hvr-ghc]}} - env: BUILD=stack RESOLVER=lts-13 GHCVER=8.6 STACK_BUILD_OPTIONS="--flag streamly:examples-sdl --flag streamly:benchmark" addons: {apt: {packages: [cabal-install-2.4,libsdl1.2-dev], sources: [hvr-ghc]}} #- env: BUILD=stack RESOLVER=lts-12 GHCVER=8.4 # addons: {apt: {packages: [cabal-install-2.4], sources: [hvr-ghc]}} # GHC-8.2.2 hogs memory leading to out-of-memory when compiling benchmarks # So disable the benchmarks for this build. #- env: BUILD=stack GHCVER=8.2.2 RESOLVER=lts-11 GHC_OPTIONS="" DISABLE_SDIST_BUILD=y DISABLE_DIST_CHECKS=y DISABLE_BENCH=y # addons: {apt: {packages: [cabal-install-2.4], sources: [hvr-ghc]}} #- env: BUILD=stack RESOLVER=lts-9 GHCVER=8.0 # addons: {apt: {packages: [cabal-install-2.4], sources: [hvr-ghc]}} #- env: BUILD=stack RESOLVER=lts-6 GHCVER=7.10 # addons: {apt: {packages: [cabal-install-2.4], sources: [hvr-ghc]}} # You can keep a STACK_YAML file at any path location #- env: BUILD=stack STACK_YAML=.ci/stack-8.0.yaml # You can specify build flags like this: #- env: BUILD=stack RESOLVER=lts-12 STACK_BUILD_OPTIONS="--flag packcheck:dev" # -------------------------------------------------------------------------- # OS X builds # -------------------------------------------------------------------------- # GHC 8.6 cabal build using stack! # On OSX autoreconf is not installed therefore disable sdist build - env: BUILD=cabal-v2 RESOLVER=lts-13 GHCVER=8.6 GHC_OPTIONS="" DISABLE_SDIST_BUILD=y os: osx # GHC 8.4/stack #- env: BUILD=stack RESOLVER=lts-12 GHCVER=8.4 # os: osx # -------------------------------------------------------------------------- # Lint e.g. HLINT_COMMANDS="hlint lint src; hlint lint test" # -------------------------------------------------------------------------- - env: BUILD=stack RESOLVER=lts-13 HLINT_COMMANDS="hlint lint ." # -------------------------------------------------------------------------- # Build and send coverage report to coveralls.io using hpc-coveralls. Add # your project to coveralls.io first, for available options see hpc-coveralls # docs. CAVEATS: # * Works only with BUILD=cabal-v1 # * Does not work for multi-package repos # * hpc-coveralls does not build with Cabal-2.2/GHC-8.4.3. The workaround is # to have a prebuilt hpc-coveralls binary installed on the build machine # and then you can use any version of ghc. # -------------------------------------------------------------------------- #- env: BUILD=cabal-v1 COVERALLS_OPTIONS="--coverage-mode=StrictlyFullLines --exclude-dir=test test" # addons: {apt: {packages: [cabal-install-2.4,ghc-8.2.2], sources: [hvr-ghc]}} # -------------------------------------------------------------------------- # Builds that are allowed to fail # -------------------------------------------------------------------------- allow_failures: - env: BUILD=cabal-v2 GHCVER=head GHC_OPTIONS="" - env: BUILD=stack RESOLVER=nightly DISABLE_SDIST_BUILD=y DISABLE_DIST_CHECKS=y - env: BUILD=stack RESOLVER=lts-13 HLINT_COMMANDS="hlint lint ." - env: BUILD=cabal-v2 ENABLE_GHCJS=y ENABLE_INSTALL= DISABLE_SDIST_BUILD=y # ------------------------------------------------------------------------ # Settings beyond this point are advanced and normally not tweaked # ------------------------------------------------------------------------ language: generic sudo: false cache: directories: - $HOME/.cabal - $HOME/.ghc - $HOME/.ghcjs - $HOME/.local - $HOME/.stack install: true script: - | # If a custom stack-yaml is specified, replace the default with that if test -e "$STACK_YAML"; then rm -f stack.yaml && ln -sv $STACK_YAML stack.yaml; else true; fi unset STACK_YAML # Get packcheck if needed CURL=$(which curl) PACKCHECK_URL=${PACKCHECK_GITHUB_URL}/${PACKCHECK_GITHUB_COMMIT}/packcheck.sh if test ! -e "$PACKCHECK_LOCAL_PATH"; then $CURL -sL -o "$PACKCHECK_LOCAL_PATH" $PACKCHECK_URL; fi; chmod +x $PACKCHECK_LOCAL_PATH # This script is governed by various PACKCHECK envvars that are set above. # In addition, hpc-coveralls needs TRAVIS, TRAVIS_JOB_ID variables set by # the travis CI environment. - bash -c "$PACKCHECK_LOCAL_PATH $BUILD PATH=/bin:/usr/bin"