variables: GIT_SSL_NO_VERIFY: "1" before_script: - python3 .gitlab/fix-submodules.py - git submodule sync --recursive - git submodule update --init --recursive - git checkout .gitmodules stages: - lint - build - full-build ############################################################ # Tags ############################################################ # # * x86_64-linux: Any Docker-capable x86_64 Linux machine # * aarch64-linux: Any Docker-capable AArch64 Linux machine # * x86_64-windows: A x86_64 Windows machine # * lint: Any Docker-capable x86_64 Linux machine; distinct from # x86_64-linux to ensure low-latency availability. # ############################################################ # Linting ############################################################ ghc-linters: stage: lint image: ghcci/linters:0.1 script: - | if [ -n "$CI_MERGE_REQUEST_ID" ]; then base="$(git merge-base $CI_MERGE_REQUEST_BRANCH_NAME HEAD)" validate-commit-msg .git $(git rev-list $base..$CI_COMMIT_SHA) submodchecker .git $(git rev-list $base..$CI_COMMIT_SHA) validate-whitespace .git $(git rev-list $base..$CI_COMMIT_SHA) .gitlab/linters/check-makefiles.py $base $CI_COMMIT_SHA .gitlab/linters/check-cpp.py $base $CI_COMMIT_SHA fi tags: - lint ############################################################ # Validation via Pipelines (hadrian) ############################################################ .validate-hadrian: allow_failure: true script: - git clean -xdf && git submodule foreach git clean -xdf - bash .circleci/prepare-system.sh - if [[ -d ./cabal-cache ]]; then cp -R ./.cabal-cache ~/.cabal-cache; fi - ./boot - ./configure $CONFIGURE_ARGS - hadrian/build.cabal.sh -j`mk/detect-cpu-count.sh` cache: key: hadrian paths: - cabal-cache validate-x86_64-linux-deb8-hadrian: extends: .validate-hadrian stage: build image: ghcci/x86_64-linux-deb8:0.1 before_script: # workaround for docker permissions - sudo chown ghc:ghc -R . - python3 .gitlab/fix-submodules.py - git submodule sync --recursive - git submodule update --init --recursive - git checkout .gitmodules tags: - x86_64-linux ############################################################ # Validation via Pipelines (make) ############################################################ .validate: variables: TEST_TYPE: test before_script: - git clean -xdf && git submodule foreach git clean -xdf script: - ./boot - ./configure $CONFIGURE_ARGS - | THREADS=`mk/detect-cpu-count.sh` make V=0 -j$THREADS - | make binary-dist TAR_COMP_OPTS="-1" mv ghc-*.tar.xz ghc.tar.xz - | THREADS=`mk/detect-cpu-count.sh` make $TEST_TYPE THREADS=$THREADS JUNIT_FILE=../../junit.xml artifacts: reports: junit: junit.xml expire_in: 2 week paths: - ghc.tar.xz - junit.xml validate-x86_64-darwin: extends: .validate stage: full-build allow_failure: true tags: - x86_64-darwin variables: GHC_VERSION: 8.6.3 MACOSX_DEPLOYMENT_TARGET: "10.7" # Only Sierra and onwards supports clock_gettime. See #12858 ac_cv_func_clock_gettime: "no" LANG: "en_US.UTF-8" before_script: - git clean -xdf && git submodule foreach git clean -xdf - python .gitlab/fix-submodules.py - git submodule sync --recursive - git submodule update --init --recursive - git checkout .gitmodules - bash .gitlab/darwin-init.sh - PATH="`pwd`/toolchain/bin:$PATH" # Disable sphinx PDF output as MacTeX apparently doesn't provide xelatex - echo "BUILD_SPHINX_PDF=NO" >> mk/build.mk - echo "libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-intree-gmp" >> mk/build.mk after_script: - cp -Rf $HOME/.cabal cabal-cache artifacts: when: always expire_in: 2 week cache: key: darwin paths: - cabal-cache - toolchain .validate-linux: extends: .validate tags: - x86_64-linux before_script: - git clean -xdf && git submodule foreach git clean -xdf - python3 .gitlab/fix-submodules.py - git submodule sync --recursive - git submodule update --init --recursive - git checkout .gitmodules - bash .circleci/prepare-system.sh # workaround for docker permissions - sudo chown ghc:ghc -R . after_script: - cp -Rf $HOME/.cabal cabal-cache cache: key: linux paths: - cabal-cache - toolchain validate-aarch64-linux-deb9: extends: .validate-linux stage: full-build image: ghcci/aarch64-linux-deb9:0.1 allow_failure: true artifacts: when: always expire_in: 2 week cache: key: linux-aarch64-deb9 tags: - aarch64-linux nightly-aarch64-linux-deb9: extends: validate-aarch64-linux-deb9 stage: full-build artifacts: expire_in: 2 year variables: TEST_TYPE: slowtest only: variables: - $NIGHTLY validate-i386-linux-deb9: extends: .validate-linux stage: full-build image: ghcci/i386-linux-deb9:0.1 allow_failure: true artifacts: when: always expire_in: 2 week cache: key: linux-i386-deb9 nightly-i386-linux-deb9: extends: .validate-linux stage: full-build image: ghcci/i386-linux-deb9:0.1 allow_failure: true variables: TEST_TYPE: slowtest artifacts: when: always expire_in: 2 week only: variables: - $NIGHTLY cache: key: linux-i386-deb9 validate-x86_64-linux-deb9: extends: .validate-linux stage: build image: ghcci/x86_64-linux-deb9:0.2 artifacts: when: always expire_in: 2 week cache: key: linux-x86_64-deb9 nightly-x86_64-linux-deb9: extends: validate-x86_64-linux-deb9 stage: build artifacts: expire_in: 2 year variables: TEST_TYPE: slowtest only: variables: - $NIGHTLY validate-x86_64-linux-deb9-llvm: extends: .validate-linux stage: full-build allow_failure: true image: ghcci/x86_64-linux-deb9:0.2 variables: BUILD_FLAVOUR: perf-llvm cache: key: linux-x86_64-deb9 validate-x86_64-linux-deb8: extends: .validate-linux stage: full-build image: ghcci/x86_64-linux-deb8:0.1 cache: key: linux-x86_64-deb8 artifacts: when: always expire_in: 2 week validate-x86_64-linux-fedora27: extends: .validate-linux stage: full-build image: ghcci/x86_64-linux-fedora27:0.1 cache: key: linux-x86_64-fedora27 artifacts: when: always expire_in: 2 week validate-x86_64-linux-deb9-integer-simple: extends: .validate-linux stage: full-build allow_failure: true variables: INTEGER_LIBRARY: integer-simple image: ghcci/x86_64-linux-deb9:0.2 cache: key: linux-x86_64-deb9 nightly-x86_64-linux-deb9-integer-simple: extends: validate-x86_64-linux-deb9-integer-simple stage: full-build artifacts: expire_in: 2 year variables: TEST_TYPE: slowtest only: variables: - $NIGHTLY validate-x86_64-linux-deb9-unreg: extends: .validate-linux stage: full-build variables: CONFIGURE_ARGS: --enable-unregisterised image: ghcci/x86_64-linux-deb9:0.2 cache: key: linux-x86_64-deb9 ############################################################ # Validation via Pipelines (Windows) ############################################################ .validate-windows: before_script: - git clean -xdf - git submodule foreach git clean -xdf - PATH=C:\msys64\usr\bin;%PATH% - python .gitlab/fix-submodules.py - git submodule sync --recursive - git submodule update --init --recursive - git checkout .gitmodules - bash .gitlab/win32-init.sh cache: paths: - cabal-cache - ghc-8.6.2 - ghc-tarballs validate-x86_64-windows-hadrian: extends: .validate-windows stage: full-build variables: GHC_VERSION: "8.6.2" LANG: "en_US.UTF-8" # due to #16073 allow_failure: true script: - | set MSYSTEM=MINGW64 python boot bash -c './configure --with-ghc=`pwd`/toolchain/bin/ghc --enable-tarballs-autodownload HappyCmd=`pwd`/toolchain/bin/happy AlexCmd=`pwd`/toolchain/bin/alex' mkdir -p _build cp -R inplace/mingw _build/mingw # FIXME: --no-lint due to #15950 - bash -c "PATH=`pwd`/toolchain/bin:$PATH hadrian/build.cabal.sh -j`mk/detect-cpu-count.sh` --flavour=Quick --no-lint" - bash -c "PATH=`pwd`/toolchain/bin:$PATH hadrian/build.cabal.sh binary-dist" - bash -c 'make V=0 test THREADS=`mk/detect-cpu-count.sh` JUNIT_FILE=../../junit.xml' - cp -Rf $APPDATA/cabal cabal-cache cache: key: x86_64-windows tags: - x86_64-windows validate-x86_64-windows: extends: .validate-windows stage: full-build variables: GHC_VERSION: "8.6.2" LANG: "en_US.UTF-8" script: - | set MSYSTEM=MINGW64 python boot bash -c './configure --with-ghc=`pwd`/toolchain/bin/ghc --enable-tarballs-autodownload HappyCmd=`pwd`/toolchain/bin/happy AlexCmd=`pwd`/toolchain/bin/alex' - bash -c "PATH=`pwd`/toolchain/bin:$PATH make -j`mk/detect-cpu-count.sh`" - bash -c 'make V=0 test THREADS=`mk/detect-cpu-count.sh` JUNIT_FILE=../../junit.xml' - cp -Rf $APPDATA/cabal cabal-cache cache: key: x86_64-windows tags: - x86_64-windows ############################################################ # Validation via CircleCI ############################################################ .circleci: stage: build image: ghcci/x86_64-linux-deb8:0.1 artifacts: when: always expire_in: 2 week reports: junit: junit.xml paths: - ghc.tar.xz - junit.xml tags: - circleci # All validation jobs keep the bindists and test results are artifacts, # when we get far enough to generate them. # # This requires updating the maximum artifacts size limit in Gitlab to # something like 200MB. .circleci-validate-x86_64-darwin: extends: .circleci stage: full-build allow_failure: true script: ".gitlab/circle-ci-job.sh validate-x86_64-darwin"