diff --git a/.travis.yml b/.travis.yml index 04d0bfce61ffaa87549496b79157c66b00ef06a5..477818174f5566c7741086f150681fcb685f57a1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,8 +11,8 @@ # Use new container infrastructure to enable caching sudo: false -# Choose a lightweight base image; we provide our own build tools. -language: c +# Do not choose a language; we provide our own build tools. +language: generic # Caching so the next build will be fast too. cache: @@ -20,6 +20,7 @@ cache: - $HOME/.ghc - $HOME/.cabal - $HOME/.stack + - $TRAVIS_BUILD_DIR/.stack-work # The different configurations we want to test. We have BUILD=cabal which uses # cabal-install, and BUILD=stack which uses Stack. More documentation on each @@ -35,27 +36,18 @@ matrix: include: # We grab the appropriate GHC and cabal-install versions from hvr's PPA. See: # https://github.com/hvr/multi-ghc-travis - #- env: BUILD=cabal GHCVER=7.0.4 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7 - # compiler: ": #GHC 7.0.4" - # addons: {apt: {packages: [cabal-install-1.16,ghc-7.0.4,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} - - env: BUILD=cabal GHCVER=7.2.2 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7 - compiler: ": #GHC 7.2.2" - addons: {apt: {packages: [cabal-install-1.16,ghc-7.2.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} - - env: BUILD=cabal GHCVER=7.4.2 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7 - compiler: ": #GHC 7.4.2" - addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} - - env: BUILD=cabal GHCVER=7.6.3 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7 - compiler: ": #GHC 7.6.3" - addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} - - env: BUILD=cabal GHCVER=7.8.4 CABALVER=1.18 HAPPYVER=1.19.5 ALEXVER=3.1.7 - compiler: ": #GHC 7.8.4" - addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} - env: BUILD=cabal GHCVER=7.10.3 CABALVER=1.22 HAPPYVER=1.19.5 ALEXVER=3.1.7 compiler: ": #GHC 7.10.3" addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} - - env: BUILD=cabal GHCVER=8.0.1 CABALVER=1.24 HAPPYVER=1.19.5 ALEXVER=3.1.7 - compiler: ": #GHC 8.0.1" - addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.1,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} + - env: BUILD=cabal GHCVER=8.0.2 CABALVER=1.24 HAPPYVER=1.19.5 ALEXVER=3.1.7 + compiler: ": #GHC 8.0.2" + addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} + - env: BUILD=cabal GHCVER=8.2.2 CABALVER=2.0 HAPPYVER=1.19.5 ALEXVER=3.1.7 + compiler: ": #GHC 8.2.2" + addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} + - env: BUILD=cabal GHCVER=8.4.3 CABALVER=2.2 HAPPYVER=1.19.5 ALEXVER=3.1.7 + compiler: ": #GHC 8.4.3" + addons: {apt: {packages: [cabal-install-2.2,ghc-8.4.3,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}} # Build with the newest GHC and cabal-install. This is an accepted failure, # see below. @@ -69,16 +61,6 @@ matrix: compiler: ": #stack default" addons: {apt: {packages: [libgmp-dev]}} - # Caused trouble: https://travis-ci.org/haskell/process/jobs/175453678 - # It's OK, covered by cabal build above - #- env: BUILD=stack ARGS="--resolver lts-2" - # compiler: ": #stack 7.8.4" - # addons: {apt: {packages: [libgmp-dev]}} - - - env: BUILD=stack ARGS="--resolver lts-3" - compiler: ": #stack 7.10.2" - addons: {apt: {packages: [libgmp-dev]}} - - env: BUILD=stack ARGS="--resolver lts-6" compiler: ": #stack 7.10.3" addons: {apt: {packages: [libgmp-dev]}} @@ -87,25 +69,24 @@ matrix: compiler: ": #stack 8.0.1" addons: {apt: {packages: [libgmp-dev]}} + - env: BUILD=stack ARGS="--resolver lts-9" + compiler: ": #stack 8.0.2" + addons: {apt: {packages: [libgmp-dev]}} + + - env: BUILD=stack ARGS="--resolver lts-11" + compiler: ": #stack 8.2.2" + addons: {apt: {packages: [libgmp-dev]}} + # Nightly builds are allowed to fail - env: BUILD=stack ARGS="--resolver nightly" compiler: ": #stack nightly" addons: {apt: {packages: [libgmp-dev]}} - # Build on OS X in addition to Linux + # Build on macOS in addition to Linux - env: BUILD=stack ARGS="" compiler: ": #stack default osx" os: osx - # Travis includes an OS X which is incompatible with GHC 7.8.4 - #- env: BUILD=stack ARGS="--resolver lts-2" - # compiler: ": #stack 7.8.4 osx" - # os: osx - - - env: BUILD=stack ARGS="--resolver lts-3" - compiler: ": #stack 7.10.2 osx" - os: osx - - env: BUILD=stack ARGS="--resolver lts-6" compiler: ": #stack 7.10.3 osx" os: osx @@ -114,13 +95,20 @@ matrix: compiler: ": #stack 8.0.1 osx" os: osx + - env: BUILD=stack ARGS="--resolver lts-9" + compiler: ": #stack 8.0.2 osx" + os: osx + + - env: BUILD=stack ARGS="--resolver lts-11" + compiler: ": #stack 8.2.2 osx" + os: osx + - env: BUILD=stack ARGS="--resolver nightly" compiler: ": #stack nightly osx" os: osx allow_failures: - env: BUILD=cabal GHCVER=head CABALVER=head HAPPYVER=1.19.5 ALEXVER=3.1.7 - - env: BUILD=stack ARGS="--resolver nightly" before_install: # Using compiler above sets CC to an invalid value, so unset it @@ -136,9 +124,9 @@ before_install: - | if [ `uname` = "Darwin" ] then - travis_retry curl --insecure -L https://www.stackage.org/stack/osx-x86_64 | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin + travis_retry curl --insecure -L https://get.haskellstack.org/stable/osx-x86_64.tar.gz | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin else - travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack' + travis_retry curl -L https://get.haskellstack.org/stable/linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack' fi # Use the more reliable S3 mirror of Hackage @@ -146,10 +134,6 @@ before_install: echo 'remote-repo: hackage.haskell.org:http://hackage.fpcomplete.com/' > $HOME/.cabal/config echo 'remote-repo-cache: $HOME/.cabal/packages' >> $HOME/.cabal/config - if [ "$CABALVER" != "1.16" ] - then - echo 'jobs: $ncpus' >> $HOME/.cabal/config - fi install: - echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]" @@ -193,8 +177,13 @@ script: cd dist tar zxfv "$SRC_TGZ" cd "$PKGVER" - cabal configure --enable-tests + cabal configure --enable-tests --ghc-options -O0 cabal build + if [ "$CABALVER" = "1.16" ] || [ "$CABALVER" = "1.18" ]; then + cabal test + else + cabal test --show-details=streaming --log=/dev/stdout + fi cd $ORIGDIR done ;; diff --git a/System/Process/Windows.hsc b/System/Process/Windows.hsc index c2bd83bb18b13ad49ff03801a30e779c465d9ef1..23498f5f55e1fdf8e87ecfb0cec5b4a596b3eb0a 100644 --- a/System/Process/Windows.hsc +++ b/System/Process/Windows.hsc @@ -208,7 +208,7 @@ waitForJobCompletion job io timeout = then Just <$> peek p_exitCode else return Nothing -insertItem :: Eq k => MVar [(k, v)] -> k -> v -> IO () +insertItem :: MVar [(k, v)] -> k -> v -> IO () insertItem env_ k v = modifyMVar_ env_ (return . ((k, v):)) getItem :: Eq k => MVar [(k, v)] -> k -> IO v diff --git a/appveyor.yml b/appveyor.yml index e9f71fe61cf8a50b6ab92819524315a4d5c8bfa9..62f2b75b67bc6b8ddb5257bd89c8abdb2ed68657 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,15 +15,21 @@ environment: global: STACK_ROOT: "c:\\sr" -test_script: + matrix: + - ARGS: "--resolver lts-6" + - ARGS: "--resolver lts-7" + - ARGS: "--resolver lts-9" + - ARGS: "--resolver lts-11" + - ARGS: "--resolver nightly" +test_script: # Generate the configure script. This took way too long to figure out # correctly. - c:\msys64\usr\bin\bash -lc "cd /c/process && autoreconf -i" # Install toolchain, but do it silently due to lots of output -- stack setup > nul +- stack %ARGS% setup > nul # The ugly echo "" hack is to avoid complaints about 0 being an invalid file # descriptor -- echo "" | stack --no-terminal test --pedantic +- echo "" | stack %ARGS% --no-terminal test --pedantic diff --git a/changelog.md b/changelog.md index 76e963e2f7cacdfb0b13dc2eb4101e34b4e9828c..d4c43ae3ff8f3ffa3ad88d7d30f1da958170644d 100644 --- a/changelog.md +++ b/changelog.md @@ -6,6 +6,7 @@ [#122](https://github.com/haskell/process/issues/122) * Expose `cleanupProcess` from `System.Process` [#130](https://github.com/haskell/process/pull/130) +* Drop support for GHC before 7.10.3 ## 1.6.3.0 *January 2018* diff --git a/process.cabal b/process.cabal index e93e63baf3158601542c5f9a3c4b10b2db20132e..535d53be114fdbdfb8184cc1df75ba3c63be4ee0 100644 --- a/process.cabal +++ b/process.cabal @@ -46,8 +46,9 @@ library InterruptibleFFI RecordWildCards Trustworthy - if impl(ghc>=7.9) - other-extensions: Safe + Safe + if impl(ghc<7.10.3) + buildable: False exposed-modules: System.Cmd @@ -74,7 +75,7 @@ library ghc-options: -Wall - build-depends: base >= 4.4 && < 4.13, + build-depends: base >= 4.8.2 && < 4.13, directory >= 1.1 && < 1.4, filepath >= 1.2 && < 1.5, deepseq >= 1.1 && < 1.5