stages: - build - tar - test # Used for ci setup in the gitlab mirror of the project: # https://gitlab.haskell.org/haskell/haskell-language-server/-/pipelines variables: # Commit of ghc/ci-images repository from which to pull Docker images DOCKER_REV: "4ed1a4f27828ba96a34662dc954335e29b470cd2" CABAL_INSTALL_VERSION: 3.6.2.0 .windows_matrix: &windows_matrix matrix: - GHC_VERSION: 8.10.7 CABAL_PROJECT: cabal.project - GHC_VERSION: 9.0.2 CABAL_PROJECT: cabal.project - GHC_VERSION: 9.2.2 CABAL_PROJECT: cabal.project - GHC_VERSION: 9.2.3 CABAL_PROJECT: cabal.project workflow: rules: - if: $CI_COMMIT_TAG when: always - when: never .artifacts: artifacts: expire_in: 2 week paths: - out .artifacts:short: artifacts: expire_in: 1 day paths: - out .build: extends: .artifacts:short stage: build script: - bash .gitlab/ci.sh .test: stage: test script: - bash .gitlab/test.sh .aarch64-linux: tags: - aarch64-linux image: "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV" .armv7-linux: tags: - armv7-linux image: "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb10:$DOCKER_REV" .x86_64-linux-deb10: tags: - x86_64-linux image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV" .x86_64-linux-deb9: tags: - x86_64-linux image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb9:$DOCKER_REV" .x86_64-linux-centos7: tags: - x86_64-linux image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-centos7:$DOCKER_REV" .x86_64-linux-fedora27: tags: - x86_64-linux image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora27:$DOCKER_REV" .x86_64-linux-alpine: tags: - x86_64-linux image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_12:$DOCKER_REV" ###################### # aarch64 linux deb10 ###################### build-aarch64-linux-deb10: extends: - .build - .aarch64-linux before_script: - sudo apt update - sudo apt install -y patchelf tree variables: ADD_CABAL_ARGS: "" tar-aarch64-linux-deb10: extends: - .artifacts - .aarch64-linux stage: tar needs: ["build-aarch64-linux-deb10"] script: - ./.gitlab/tar.sh variables: TARBALL_ARCHIVE_SUFFIX: aarch64-deb10-linux TARBALL_EXT: tar.xz test-aarch64-linux-deb10: extends: - .test - .aarch64-linux needs: ["tar-aarch64-linux-deb10"] before_script: - sudo apt update - sudo apt install -y tree ###################### # armv7 linux deb10 ###################### build-armv7-linux-deb10: extends: - .build - .armv7-linux before_script: - sudo apt update - sudo apt install -y patchelf tree variables: ADD_CABAL_ARGS: "" tar-armv7-linux-deb10: extends: - .artifacts - .armv7-linux stage: tar needs: ["build-armv7-linux-deb10"] script: - ./.gitlab/tar.sh variables: TARBALL_ARCHIVE_SUFFIX: armv7-deb10-linux TARBALL_EXT: tar.xz test-armv7-linux-deb10: extends: - .test - .armv7-linux needs: ["tar-armv7-linux-deb10"] before_script: - sudo apt update - sudo apt install -y tree ###################### # x86_64 linux deb10 ###################### build-x86_64-linux-deb10: extends: - .build - .x86_64-linux-deb10 before_script: - sudo apt update - sudo apt install -y patchelf tree variables: ADD_CABAL_ARGS: "--enable-split-sections" tar-x86_64-linux-deb10: extends: - .artifacts - .x86_64-linux-deb10 stage: tar needs: ["build-x86_64-linux-deb10"] script: - ./.gitlab/tar.sh variables: TARBALL_ARCHIVE_SUFFIX: x86_64-deb10-linux TARBALL_EXT: tar.xz test-x86_64-linux-deb10: extends: - .test - .x86_64-linux-deb10 needs: ["tar-x86_64-linux-deb10"] before_script: - sudo apt update - sudo apt install -y tree ###################### # x86_64 linux deb9 ###################### build-x86_64-linux-deb9: extends: - .build - .x86_64-linux-deb9 before_script: - sudo apt update - sudo apt install -y patchelf tree variables: ADD_CABAL_ARGS: "--enable-split-sections" tar-x86_64-linux-deb9: extends: - .artifacts - .x86_64-linux-deb9 stage: tar needs: ["build-x86_64-linux-deb9"] script: - ./.gitlab/tar.sh variables: TARBALL_ARCHIVE_SUFFIX: x86_64-deb9-linux TARBALL_EXT: tar.xz test-x86_64-linux-deb9: extends: - .test - .x86_64-linux-deb9 needs: ["tar-x86_64-linux-deb9"] before_script: - sudo apt update - sudo apt install -y tree ###################### # x86_64 linux centos7 ###################### build-x86_64-linux-centos7: extends: - .build - .x86_64-linux-centos7 before_script: - sudo yum install -y epel-release - sudo yum install -y patchelf tree variables: ADD_CABAL_ARGS: "--enable-split-sections" tar-x86_64-linux-centos7: extends: - .artifacts - .x86_64-linux-centos7 stage: tar needs: ["build-x86_64-linux-centos7"] script: - ./.gitlab/tar.sh variables: TARBALL_ARCHIVE_SUFFIX: x86_64-centos7-linux TARBALL_EXT: tar.xz test-x86_64-linux-centos7: extends: - .test - .x86_64-linux-centos7 needs: ["tar-x86_64-linux-centos7"] before_script: - sudo yum install -y tree ###################### # x86_64 linux fedora27 ###################### build-x86_64-linux-fedora27: extends: - .build - .x86_64-linux-fedora27 before_script: - sudo dnf install -y patchelf tree variables: ADD_CABAL_ARGS: "--enable-split-sections" tar-x86_64-linux-fedora27: extends: - .artifacts - .x86_64-linux-fedora27 stage: tar needs: ["build-x86_64-linux-fedora27"] script: - ./.gitlab/tar.sh variables: TARBALL_ARCHIVE_SUFFIX: x86_64-fedora27-linux TARBALL_EXT: tar.xz test-x86_64-linux-fedora27: extends: - .test - .x86_64-linux-fedora27 needs: ["tar-x86_64-linux-fedora27"] before_script: - sudo dnf install -y tree ###################### # x86_64 linux alpine ###################### build-x86_64-linux-alpine: extends: - .build - .x86_64-linux-alpine before_script: - sudo apk add --no-cache tar zlib zlib-dev zlib-static bzip2 bzip2-dev bzip2-static gmp gmp-dev xz xz-dev ncurses-static patchelf findutils tree variables: ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static" tar-x86_64-linux-alpine: extends: - .artifacts - .x86_64-linux-alpine stage: tar needs: ["build-x86_64-linux-alpine"] before_script: - sudo apk add --no-cache tar zlib zlib-dev zlib-static bzip2 bzip2-dev bzip2-static gmp gmp-dev xz xz-dev ncurses-static script: - ./.gitlab/tar.sh variables: TARBALL_ARCHIVE_SUFFIX: x86_64-alpine3.12-linux TARBALL_EXT: tar.xz test-x86_64-linux-alpine: extends: - .test - .x86_64-linux-alpine needs: ["tar-x86_64-linux-alpine"] before_script: - sudo apk add --no-cache tar zlib zlib-dev zlib-static bzip2 bzip2-dev bzip2-static gmp gmp-dev xz xz-dev ncurses-static tree ###################### # x86_64 freebsd 12 ###################### build-x86_64-freebsd12: extends: .build before_script: - sudo pkg update - sudo pkg install --yes patchelf gmake tree binutils tags: - x86_64-freebsd12 variables: ADD_CABAL_ARGS: "--enable-split-sections -j1" tar-x86_64-freebsd12: extends: .artifacts stage: tar needs: ["build-x86_64-freebsd12"] tags: - x86_64-freebsd12 script: - ./.gitlab/tar.sh variables: TARBALL_ARCHIVE_SUFFIX: x86_64-unknown-freebsd12 TARBALL_EXT: tar.xz test-x86_64-freebsd12: extends: .test needs: ["tar-x86_64-freebsd12"] tags: - x86_64-freebsd12 before_script: - sudo pkg update - sudo pkg install --yes patchelf gmake tree binutils ###################### # x86_64 freebsd 13 ###################### build-x86_64-freebsd13: extends: .build tags: - x86_64-freebsd13 before_script: - sudo pkg update - sudo pkg install --yes compat12x-amd64 patchelf gmake tree binutils - sudo ln -s libncurses.so.6 /usr/local/lib/libncurses.so.6.2 variables: ADD_CABAL_ARGS: "--enable-split-sections -j1" tar-x86_64-freebsd13: extends: .artifacts stage: tar needs: ["build-x86_64-freebsd13"] tags: - x86_64-freebsd13 script: - ./.gitlab/tar.sh variables: TARBALL_ARCHIVE_SUFFIX: x86_64-unknown-freebsd13 TARBALL_EXT: tar.xz test-x86_64-freebsd13: extends: .test needs: ["tar-x86_64-freebsd13"] tags: - x86_64-freebsd13 before_script: - sudo pkg update - sudo pkg install --yes compat12x-amd64 gmake tree binutils - sudo ln -s libncurses.so.6 /usr/local/lib/libncurses.so.6.2 ###################### # x86_64 darwin ###################### build-x86_64-darwin: extends: .build tags: - x86_64-darwin variables: ADD_CABAL_ARGS: "" before_script: - /bin/bash ./.gitlab/brew.sh autoconf automake coreutils make tree # CPATH https://github.com/digital-asset/ghc-lib/issues/352 script: | export PATH="$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH" export CPATH="/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/ffi:$CPATH" /bin/bash ./.gitlab/ci.sh after_script: - rm -Rf /private/tmp/.brew_tmp tar-x86_64-darwin: extends: .artifacts stage: tar needs: ["build-x86_64-darwin"] tags: - x86_64-darwin before_script: - /bin/bash ./.gitlab/brew.sh autoconf automake coreutils make tree script: | export PATH="$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH" /bin/bash ./.gitlab/tar.sh after_script: - rm -Rf /private/tmp/.brew_tmp variables: TARBALL_ARCHIVE_SUFFIX: x86_64-apple-darwin TARBALL_EXT: tar.xz test-x86_64-darwin: extends: .test needs: ["tar-x86_64-darwin"] tags: - x86_64-darwin before_script: - /bin/bash ./.gitlab/brew.sh make tree script: | export PATH="$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH" /bin/bash .gitlab/test.sh after_script: - rm -Rf /private/tmp/.brew_tmp ###################### # aarch64 darwin ###################### build-aarch64-darwin: extends: .artifacts:short stage: build tags: - aarch64-darwin-m1 before_script: - export HOMEBREW_CHANGE_ARCH_TO_ARM=1 - arch -arm64 /bin/bash ./.gitlab/brew.sh llvm autoconf automake coreutils make tree # C_INCLUDE_PATH: https://gitlab.haskell.org/ghc/ghc/-/issues/20592 # CPATH https://github.com/digital-asset/ghc-lib/issues/352 script: | export PATH="$CI_PROJECT_DIR/.brew/opt/llvm/bin:$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH" export CC=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang export CXX=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang++ export LD=ld export AR=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ar export RANLIB=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ranlib export C_INCLUDE_PATH="`xcrun --show-sdk-path`/usr/include/ffi" export CPATH="/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/ffi:$CPATH" arch -arm64 /bin/bash ./.gitlab/ci.sh after_script: - rm -Rf /private/tmp/.brew_tmp variables: MACOSX_DEPLOYMENT_TARGET: "10.7" ADD_CABAL_ARGS: "" tar-aarch64-darwin: extends: .artifacts stage: tar needs: ["build-aarch64-darwin"] tags: - aarch64-darwin-m1 script: - arch -arm64 /bin/bash ./.gitlab/tar.sh variables: TARBALL_ARCHIVE_SUFFIX: aarch64-apple-darwin TARBALL_EXT: tar.xz test-aarch64-darwin: extends: .test needs: ["tar-aarch64-darwin"] tags: - aarch64-darwin-m1 before_script: - export HOMEBREW_CHANGE_ARCH_TO_ARM=1 - arch -arm64 /bin/bash ./.gitlab/brew.sh make tree # C_INCLUDE_PATH: https://gitlab.haskell.org/ghc/ghc/-/issues/20592 # CPATH https://github.com/digital-asset/ghc-lib/issues/352 script: | export PATH="$CI_PROJECT_DIR/.brew/opt/llvm/bin:$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH" export C_INCLUDE_PATH="`xcrun --show-sdk-path`/usr/include/ffi" export CPATH="/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/ffi:$CPATH" arch -arm64 /bin/bash ./.gitlab/test.sh after_script: - rm -Rf /private/tmp/.brew_tmp ###################### # x86_64 windows ###################### build-x86_64-windows: extends: .build tags: - new-x86_64-windows parallel: *windows_matrix script: - $env:CHERE_INVOKING = "yes" - bash '-lc' "ADD_CABAL_ARGS=$env:ADD_CABAL_ARGS GHC_VERSION=$env:GHC_VERSION CABAL_INSTALL_VERSION=$CABAL_INSTALL_VERSION .gitlab/ci.sh" variables: ADD_CABAL_ARGS: "" tar-x86_64-windows: extends: .artifacts stage: tar needs: ["build-x86_64-windows"] tags: - new-x86_64-windows script: - $env:CHERE_INVOKING = "yes" - bash '-lc' "TARBALL_ARCHIVE_SUFFIX=$env:TARBALL_ARCHIVE_SUFFIX TARBALL_EXT=$env:TARBALL_EXT .gitlab/tar.sh" variables: TARBALL_ARCHIVE_SUFFIX: x86_64-unknown-mingw32 TARBALL_EXT: zip