Support GHC 7.10. Add new GitHub URL. Add Travis.

This commit is contained in:
Franklin Chen 2015-10-09 14:18:21 -04:00
parent 6e9c954e60
commit 53a0f5b97b
6 changed files with 206 additions and 25 deletions

9
.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
/config.h
/config.log
/config.mk
/config.status
/testsuite/hier/hier2/A/B/C/Module.hi
/testsuite/hier/hier2/A/B/C/Module.o
/testsuite/makewith/io/TestIO.conf
/testsuite/makewith/unsafeio/Unsafe.conf
/.stack-work/

130
.travis.yml Normal file
View File

@ -0,0 +1,130 @@
# This file has been generated -- see https://github.com/hvr/multi-ghc-travis
language: c
sudo: false
cache:
directories:
- $HOME/.cabsnap
- $HOME/.cabal/packages
before_cache:
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar
matrix:
include:
- env: CABALVER=1.16 GHCVER=7.0.1
compiler: ": #GHC 7.0.1"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.0.1,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.16 GHCVER=7.0.2
compiler: ": #GHC 7.0.2"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.0.2,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.16 GHCVER=7.0.3
compiler: ": #GHC 7.0.3"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.0.3,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.16 GHCVER=7.0.4
compiler: ": #GHC 7.0.4"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.0.4,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.16 GHCVER=7.2.1
compiler: ": #GHC 7.2.1"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.2.1,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.16 GHCVER=7.2.2
compiler: ": #GHC 7.2.2"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.2.2,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.16 GHCVER=7.4.1
compiler: ": #GHC 7.4.1"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.1,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.16 GHCVER=7.4.2
compiler: ": #GHC 7.4.2"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.16 GHCVER=7.6.1
compiler: ": #GHC 7.6.1"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.1,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.16 GHCVER=7.6.2
compiler: ": #GHC 7.6.2"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.2,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.16 GHCVER=7.6.3
compiler: ": #GHC 7.6.3"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.18 GHCVER=7.8.1
compiler: ": #GHC 7.8.1"
addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.1,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.18 GHCVER=7.8.2
compiler: ": #GHC 7.8.2"
addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.2,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.18 GHCVER=7.8.3
compiler: ": #GHC 7.8.3"
addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.3,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.18 GHCVER=7.8.4
compiler: ": #GHC 7.8.4"
addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.22 GHCVER=7.10.1
compiler: ": #GHC 7.10.1"
addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.1,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.22 GHCVER=7.10.2
compiler: ": #GHC 7.10.2"
addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.2,happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=head GHCVER=head
compiler: ": #GHC head"
addons: {apt: {packages: [cabal-install-head,ghc-head,happy-1.19.5], sources: [hvr-ghc]}}
allow_failures:
- env: CABALVER=head GHCVER=head
before_install:
- unset CC
- export PATH=/opt/happy/1.19.5/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
install:
- cabal --version
- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
- if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ];
then
zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz >
$HOME/.cabal/packages/hackage.haskell.org/00-index.tar;
fi
- travis_retry cabal update -v
- sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config
- cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt
- sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt
# check whether current requested install-plan matches cached package-db snapshot
- if diff -u installplan.txt $HOME/.cabsnap/installplan.txt;
then
echo "cabal build-cache HIT";
rm -rfv .ghc;
cp -a $HOME/.cabsnap/ghc $HOME/.ghc;
cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;
else
echo "cabal build-cache MISS";
rm -rf $HOME/.cabsnap;
mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;
cabal install --only-dependencies --enable-tests --enable-benchmarks;
fi
# snapshot package-db on cache miss
- if [ ! -d $HOME/.cabsnap ];
then
echo "snapshotting package-db to build-cache";
mkdir $HOME/.cabsnap;
cp -a $HOME/.ghc $HOME/.cabsnap/ghc;
cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;
fi
# 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:
- if [ -f configure.ac ]; then autoreconf -i; fi
- cabal configure --enable-tests --enable-benchmarks -v2 # -v2 provides useful information for debugging
- cabal build # this builds all libraries and executables (including tests/benchmarks)
- cabal test
- cabal check
- cabal sdist # tests that a source-distribution can be generated
# Check that the resulting source distribution can be built & installed.
# If there are no other `.tar.gz` files in `dist`, this can be even simpler:
# `cabal install --force-reinstalls dist/*-*.tar.gz`
- SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz &&
(cd dist && cabal install --force-reinstalls "$SRC_TGZ")
# EOF

View File

@ -59,3 +59,7 @@ library
if impl(ghc >= 7.2)
build-depends: ghc-paths
source-repository head
type: git
location: https://github.com/stepcut/plugins

View File

@ -69,11 +69,14 @@ import System.IO.Error ( catch, ioError, isDoesNotExistError )
import Control.Concurrent.MVar ( MVar(), newMVar, withMVar )
import Distribution.Package hiding (depends, packageName, PackageName(..))
import Distribution.Package hiding (depends, packageName, PackageName(..)
#if MIN_VERSION_ghc(7,10,0)
, installedPackageId
#endif
)
import Distribution.Text
import Distribution.InstalledPackageInfo
-- import Distribution.Package hiding (packageName, PackageName(..))
import Distribution.Simple.Compiler
import Distribution.Simple.GHC
import Distribution.Simple.PackageIndex

View File

@ -72,7 +72,11 @@ import System.Plugins.LoadTypes
-- import Language.Hi.Parser
import BinIface
import HscTypes
#if MIN_VERSION_ghc(7,10,0)
import Module (moduleName, moduleNameString, packageKeyString)
#else
import Module (moduleName, moduleNameString, packageIdString)
#endif
import HscMain (newHscEnv)
import TcRnMonad (initTcRnIf)
@ -701,7 +705,9 @@ loadDepends obj incpaths = do
-- and find some packages to load, as well.
let ps = dep_pkgs ds
#if MIN_VERSION_ghc(7,2,0)
#if MIN_VERSION_ghc(7,10,0)
ps' <- filterM loaded . map packageKeyString . nub $ map fst ps
#elif MIN_VERSION_ghc(7,2,0)
ps' <- filterM loaded . map packageIdString . nub $ map fst ps
#else
ps' <- filterM loaded . map packageIdString . nub $ ps

29
stack.yaml Normal file
View File

@ -0,0 +1,29 @@
# For more information, see: https://github.com/commercialhaskell/stack/blob/master/doc/yaml_configuration.md
# Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
resolver: lts-3.8
# Local packages, usually specified by relative directory name
packages:
- '.'
# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
extra-deps: []
# Override default flag values for local packages and extra-deps
flags: {}
# Control whether we use the GHC we find on the path
# system-ghc: true
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: >= 0.1.4.0
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]