diff --git a/.circleci/config.yml b/.circleci/config.yml index af1247237..9d51f3030 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -44,8 +44,9 @@ defaults: &defaults - run: name: Build (we need the exe for tests) - command: stack -j 1 --stack-yaml=${STACK_FILE} install - # need j1, else ghc-lib-parser triggers OOM + command: + stack -j 1 --stack-yaml=${STACK_FILE} install + # need j1, else ghc-lib-parser triggers OOM no_output_timeout: 30m - run: @@ -101,6 +102,92 @@ defaults: &defaults version: 2 jobs: + ghc-8.4.4-mac: + environment: + - STACK_FILE: "stack-8.4.4.yaml" + <<: *defaults + macos: + xcode: "10.2.1" + steps: + - checkout + - run: + command: git submodule sync --recursive + - run: + command: git submodule update --recursive --init + - run: + name: Install stack + command: curl -sSL https://get.haskellstack.org/ | sh + - run: + name: Write provided stack.yaml with predictable name + command: cp ${STACK_FILE} stack-build.txt + - run: + name: Figure out resolver for better caching + command: grep '^resolver:' stack-build.txt > resolver.txt + - run: + name: Create a composite cabal file for changes detection + command: find . -name "*.cabal" | grep -v -e "stack-work" -e "dist-newstyle" -e "submodules" -e "testdata" | sort | xargs cat > all-cabal.txt + - restore_cache: + keys: + - stack-cache-{{ .Environment.HIE_CACHE }}-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "stack-build.txt" }}-{{ checksum "all-cabal.txt" }} + - stack-cache-{{ .Environment.HIE_CACHE }}-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "stack-build.txt" }} + - stack-cache-{{ .Environment.HIE_CACHE }}-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "resolver.txt" }} + - run: + name: Stack setup + command: stack -j 2 --stack-yaml=${STACK_FILE} setup + - run: + name: Install happy + command: stack --stack-yaml=${STACK_FILE} install happy + - run: + name: Install Hoogle + command: stack -j 1 --stack-yaml=${STACK_FILE} install hoogle + - run: + name: Build (we need the exe for tests) + command: + stack -j 1 --stack-yaml=${STACK_FILE} install + # need j1, else ghc-lib-parser triggers OOM + no_output_timeout: 30m + - run: + name: Build Testsuite without running it + command: stack -j 2 --stack-yaml=${STACK_FILE} build --test --no-run-tests + no_output_timeout: 30m + - store_artifacts: + path: ~/.local/bin + destination: bin + - run: + name: Generate Hoogle database + command: if [ ! -d ~/.hoogle ]; then stack --stack-yaml=${STACK_FILE} exec hoogle generate; fi + - run: + name: Clear cabal-helper cache + command: rm -fr ~/.cache/cabal-helper + - save_cache: + key: stack-cache-{{ .Environment.HIE_CACHE }}-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "resolver.txt" }} + paths: &cache_paths + - ~/.stack + - ~/.cache + - ~/.hoogle + - ~/build/.stack-work + - ~/build/hie-plugin-api/.stack-work + - ~/build/submodules/HaRe/.stack-work + - ~/build/submodules/brittany/.stack-work + - ~/build/submodules/ghc-mod/core/.stack-work + - ~/build/submodules/ghc-mod/.stack-work + - ~/build/submodules/cabal-helper/.stack-work + - run: + name: Test + # Tests MUST run with -j1, since multiple ghc-mod sessions are not allowed + command: stack -j 1 --stack-yaml=${STACK_FILE} test --dump-logs + no_output_timeout: 120m + - store_test_results: + path: test-results + - store_artifacts: + path: test-logs + - save_cache: + key: stack-cache-{{ .Environment.HIE_CACHE }}-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "stack-build.txt" }} + paths: *cache_paths + - save_cache: + key: stack-cache-{{ .Environment.HIE_CACHE }}-{{ arch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "stack-build.txt" }}-{{ checksum "all-cabal.txt" }} + paths: *cache_paths + ghc-8.4.2: environment: - STACK_FILE: "stack-8.4.2.yaml" @@ -179,18 +266,18 @@ jobs: paths: - ~/.cabal - workflows: version: 2 multiple-ghcs: jobs: - - ghc-8.4.2 - - ghc-8.4.3 + # - ghc-8.4.2 + # - ghc-8.4.3 + - ghc-8.4.4-mac - ghc-8.4.4 - - ghc-8.6.1 - - ghc-8.6.2 - # - ghc-8.6.3 - - ghc-8.6.4 - - ghc-8.6.5 - - ghc-nightly - - cabal + # - ghc-8.6.1 + # - ghc-8.6.2 + # # - ghc-8.6.3 + # - ghc-8.6.4 + # - ghc-8.6.5 + # - ghc-nightly + # - cabal diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index bf6fb26c6..000000000 --- a/.travis.yml +++ /dev/null @@ -1,125 +0,0 @@ -sudo: false -language: c -os: osx - -addons: - homebrew: - packages: - - z3 - - stack - - upx - -cache: - directories: - - $HOME/.stack - - $HOME/.cabal/ - - $TRAVIS_BUILD_DIR/.stack-work - - $TRAVIS_BUILD_DIR/submodules/brittany/.stack-work - - $TRAVIS_BUILD_DIR/submodules/HaRe/.stack-work - - $TRAVIS_BUILD_DIR/submodules/ghc-mod/.stack-work - - $TRAVIS_BUILD_DIR/submodules/ghc-mod/core/.stack-work - - $TRAVIS_BUILD_DIR/submodules/haskell-lsp/.stack-work - - $TRAVIS_BUILD_DIR/submodules/haskell-lsp/haskell-lsp-types/.stack-work - - $TRAVIS_BUILD_DIR/submodules/cabal-helper/.stack-work - - $TRAVIS_BUILD_DIR/hie-plugin-api/.stack-work - timeout: 800 -before_cache: - - rm -rf $TRAVIS_BUILD_DIR/.stack-work/logs/ - -stages: - - setup - - dependencies - - test - - deploy - -jobs: - include: - - stage: setup - env: GHC_VER="8.4.4" - script: &setup - - ls .stack-work/install/*/*/*/bin/hie || true - - travis_retry stack --no-terminal --install-ghc --stack-yaml=stack-$GHC_VER.yaml setup - # Build a big package to offload the next stage from doing too much work - - stack --stack-yaml=stack-$GHC_VER.yaml build lens - - - stage: setup - env: GHC_VER="8.4.3" - script: *setup - - - stage: setup - env: GHC_VER="8.4.2" - script: *setup - - - stage: setup - env: GHC_VER="8.2.2" - script: *setup - - - stage: dependencies - env: GHC_VER="8.4.4" - script: &dependencies - - travis_retry stack --no-terminal --install-ghc --stack-yaml=stack-$GHC_VER.yaml build --only-dependencies - - - stage: dependencies - env: GHC_VER="8.4.3" - script: *dependencies - - - stage: dependencies - env: GHC_VER="8.4.2" - script: *dependencies - - - stage: dependencies - env: GHC_VER="8.2.2" - script: *dependencies - - - stage: test - env: GHC_VER="8.4.4" - script: &test - - stack --no-terminal --stack-yaml=stack-$GHC_VER.yaml install - - - stage: test - env: GHC_VER="8.4.3" - script: *test - - - stage: test - env: GHC_VER="8.4.2" - script: *test - - - stage: test - env: GHC_VER="8.2.2" - script: *test - - - stage: deploy - env: GHC_VER="8.4.4" - script: &deploy - - mkdir -p $HOME/hie-macos - - cp .stack-work/install/*/*/$GHC_VER/bin/hie $HOME/hie-macos - - cp .stack-work/install/*/*/$GHC_VER/bin/hie-wrapper $HOME/hie-macos - - upx --best $HOME/hie-macos/hie - - upx --best $HOME/hie-macos/hie-wrapper - - tar czf "hie-$GHC_VER-Darwin.tar.gz" $HOME/hie-macos - deploy: &upload - provider: releases - api_key: - secure: K12xUSzK+VWpnS4gRo04rJjfi71sBi0zuMWKmAcsK1igvmdbsEjyuyX4SxFI58/sM4x5qlyXg/nWSPfECKjpQS7/Q/GG1ub+AjU9kq5iyiWACWjXpDLN9Jz9iLBceyPLaf3y3rswri45v7LdwvMNwSI/wYNKEz97IfJ3VkCR16kWv/cqHGdJUYWZk7lBJX/BL94Bof4zOoXwSiy0GbaSCptcSHm1qwtN1qYsYnmihgLYR0RtLRz6tvBPHmqDjsWAXMDhaEyi0zfZ06igITkm7E4at+c3/wssYfgSg15AT2fd5T+v9keyzyanBzGh9xHYcMmflIA9dAvQawl/vw8sGsnQRaddhmTd0bqKFrtrnMO5dRsbkIyu1r178BQCJVjvy5KqyVpXy1ycDcO17E5qONVr2V838x6eg9uPJBNGR30XMg3ZF+GPsbz0xhzxf2Hhab82pJ+lAAsBlnaPdDNVchs/wjEFMp94hcL+IL4ydaXk91piPVhs3VPsLfGboQ72sUnyPUI2aiKfkk5P4Xug+2UqbX17fXfLgnkRbfyCd/4IeM4IwHgRAKa3tT7017KGSZBShihqe2dDJBjS8MlIxDD+U69HR2TIkAJaDnJe+UFAndoc8w4Ajd2OJ1/C+ey236SZq9R7D3dqyFi6Sxc1kSpNguVmjjvlEUk/Jpz1ckA= - file: - - "hie-$GHC_VER-Darwin.tar.gz" - skip_cleanup: true - draft: true - tag_name: "${TRAVIS_TAG}" - on: - tags: true - - - stage: deploy - env: GHC_VER="8.4.3" - script: *deploy - deploy: *upload - - - stage: deploy - env: GHC_VER="8.4.2" - script: *deploy - deploy: *upload - - - stage: deploy - env: GHC_VER="8.2.2" - script: *deploy - deploy: *upload diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index e45e2ca10..000000000 --- a/appveyor.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: 1.0.{build} -environment: - matrix: -# - GHCVER: 8.6.4 - - GHCVER: 8.6.2 - - GHCVER: 8.6.1 - - GHCVER: 8.4.4 - - GHCVER: 8.4.3 - - GHCVER: 8.4.2 -install: -- cmd: >- - git submodule update --init --recursive - - choco install -y haskell-stack - - refreshenv -cache: -- '%LOCALAPPDATA%\Programs\stack\' -- c:\sr -build_script: -- cmd: stack --stack-yaml=stack-%GHCVER%.yaml install -test: off - -# we're running out of artifact space, disable for now :( -# artifacts: -# - path: .stack-work\install\**\bin\hie.exe -# - path: .stack-work\install\**\bin\hie-wrapper.exe