mirror of
https://github.com/xmonad/xmonad.git
synced 2025-07-25 09:11:52 -07:00
A side effect of that change is that our code no longer compiles with GHC versions prior to 8.0.x. We could work around that, no doubt, but the resulting code would require CPP and Cabal flags and whatnot. It feels more reasonable to just require a moderately recent compiler instead of going through all that trouble.
134 lines
6.1 KiB
YAML
134 lines
6.1 KiB
YAML
# This Travis job script has been generated by a script via
|
|
#
|
|
# runghc make_travis_yml_2.hs '-o' '.travis.yml' 'xmonad.cabal' 'libxrandr-dev'
|
|
#
|
|
# For more information, see https://github.com/haskell-CI/haskell-ci
|
|
#
|
|
language: c
|
|
sudo: false
|
|
|
|
git:
|
|
submodules: false # whether to recursively clone submodules
|
|
|
|
cache:
|
|
directories:
|
|
- $HOME/.cabal/packages
|
|
- $HOME/.cabal/store
|
|
|
|
before_cache:
|
|
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log
|
|
# remove files that are regenerated by 'cabal update'
|
|
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.*
|
|
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/*.json
|
|
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.cache
|
|
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar
|
|
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar.idx
|
|
|
|
- rm -rfv $HOME/.cabal/packages/head.hackage
|
|
|
|
matrix:
|
|
include:
|
|
- compiler: "ghc-8.6.1"
|
|
env: GHCHEAD=true
|
|
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.6.1,libxrandr-dev], sources: [hvr-ghc]}}
|
|
- compiler: "ghc-8.4.3"
|
|
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
|
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.4.3,libxrandr-dev], sources: [hvr-ghc]}}
|
|
- compiler: "ghc-8.2.2"
|
|
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
|
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.2.2,libxrandr-dev], sources: [hvr-ghc]}}
|
|
- compiler: "ghc-8.0.2"
|
|
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
|
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.0.2,libxrandr-dev], sources: [hvr-ghc]}}
|
|
|
|
allow_failures:
|
|
- compiler: "ghc-8.6.1"
|
|
|
|
before_install:
|
|
- HC=${CC}
|
|
- HCPKG=${HC/ghc/ghc-pkg}
|
|
- unset CC
|
|
- ROOTDIR=$(pwd)
|
|
- mkdir -p $HOME/.local/bin
|
|
- "PATH=/opt/ghc/bin:/opt/ghc-ppa-tools/bin:$HOME/local/bin:$PATH"
|
|
- HCNUMVER=$(( $(${HC} --numeric-version|sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+).*/\1 * 10000 + \2 * 100 + \3/') ))
|
|
- echo $HCNUMVER
|
|
|
|
install:
|
|
- cabal --version
|
|
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
|
|
- BENCH=${BENCH---enable-benchmarks}
|
|
- TEST=${TEST---enable-tests}
|
|
- HADDOCK=${HADDOCK-true}
|
|
- UNCONSTRAINED=${UNCONSTRAINED-true}
|
|
- NOINSTALLEDCONSTRAINTS=${NOINSTALLEDCONSTRAINTS-false}
|
|
- GHCHEAD=${GHCHEAD-false}
|
|
- travis_retry cabal update -v
|
|
- "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config"
|
|
- rm -fv cabal.project cabal.project.local
|
|
# Overlay Hackage Package Index for GHC HEAD: https://github.com/hvr/head.hackage
|
|
- |
|
|
if $GHCHEAD; then
|
|
sed -i 's/-- allow-newer: .*/allow-newer: *:base/' ${HOME}/.cabal/config
|
|
for pkg in $($HCPKG list --simple-output); do pkg=$(echo $pkg | sed 's/-[^-]*$//'); sed -i "s/allow-newer: /allow-newer: *:$pkg, /" ${HOME}/.cabal/config; done
|
|
|
|
echo 'repository head.hackage' >> ${HOME}/.cabal/config
|
|
echo ' url: http://head.hackage.haskell.org/' >> ${HOME}/.cabal/config
|
|
echo ' secure: True' >> ${HOME}/.cabal/config
|
|
echo ' root-keys: 07c59cb65787dedfaef5bd5f987ceb5f7e5ebf88b904bbd4c5cbdeb2ff71b740' >> ${HOME}/.cabal/config
|
|
echo ' 2e8555dde16ebd8df076f1a8ef13b8f14c66bad8eafefd7d9e37d0ed711821fb' >> ${HOME}/.cabal/config
|
|
echo ' 8f79fd2389ab2967354407ec852cbe73f2e8635793ac446d09461ffb99527f6e' >> ${HOME}/.cabal/config
|
|
echo ' key-threshold: 3' >> ${HOME}/.cabal.config
|
|
|
|
grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
|
|
|
|
cabal new-update head.hackage -v
|
|
fi
|
|
- grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
|
|
- "printf 'packages: \".\"\\n' > cabal.project"
|
|
- touch cabal.project.local
|
|
- "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | grep -vw -- xmonad | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
|
|
- cat cabal.project || true
|
|
- cat cabal.project.local || true
|
|
- if [ -f "./configure.ac" ]; then
|
|
(cd "." && autoreconf -i);
|
|
fi
|
|
- rm -f cabal.project.freeze
|
|
- cabal new-build -w ${HC} ${TEST} ${BENCH} --project-file="cabal.project" --dep -j2 all
|
|
- cabal new-build -w ${HC} --disable-tests --disable-benchmarks --project-file="cabal.project" --dep -j2 all
|
|
- rm -rf .ghc.environment.* "."/dist
|
|
- DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
|
|
|
|
# Here starts the actual work to be performed for the package under test;
|
|
# any command which exits with a non-zero exit code causes the build to fail.
|
|
script:
|
|
# test that source-distributions can be generated
|
|
- (cd "." && cabal sdist)
|
|
- mv "."/dist/xmonad-*.tar.gz ${DISTDIR}/
|
|
- cd ${DISTDIR} || false
|
|
- find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
|
|
- "printf 'packages: xmonad-*/*.cabal\\n' > cabal.project"
|
|
- touch cabal.project.local
|
|
- "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | grep -vw -- xmonad | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
|
|
- cat cabal.project || true
|
|
- cat cabal.project.local || true
|
|
# this builds all libraries and executables (without tests/benchmarks)
|
|
- cabal new-build -w ${HC} --disable-tests --disable-benchmarks all
|
|
|
|
# build & run tests, build benchmarks
|
|
- cabal new-build -w ${HC} ${TEST} ${BENCH} all
|
|
- if [ "x$TEST" = "x--enable-tests" ]; then cabal new-test -w ${HC} ${TEST} ${BENCH} all; fi
|
|
|
|
# cabal check
|
|
- (cd xmonad-* && cabal check)
|
|
|
|
# haddock
|
|
- rm -rf ./dist-newstyle
|
|
- if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} all; else echo "Skipping haddock generation";fi
|
|
|
|
# Build without installed constraints for packages in global-db
|
|
- if $UNCONSTRAINED; then rm -f cabal.project.local; echo cabal new-build -w ${HC} --disable-tests --disable-benchmarks all; else echo "Not building without installed constraints"; fi
|
|
|
|
# REGENDATA ["-o",".travis.yml","xmonad.cabal","libxrandr-dev"]
|
|
# EOF
|