diff options
author | Ben Gamari <ben@smart-cactus.org> | 2018-12-07 20:23:58 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2018-12-11 10:03:40 -0500 |
commit | 6eab7cda23b5421895cd0ecb06d637e2fa054154 (patch) | |
tree | a69e2b91c5f6fd6f54e289e95d57ba6c8616fc93 /.circleci | |
parent | 3ab8234a973598800e95d15e9beefa653318e90e (diff) | |
download | haskell-6eab7cda23b5421895cd0ecb06d637e2fa054154.tar.gz |
CircleCI: Add configurations for Centos 7 and Debian 9
Diffstat (limited to '.circleci')
-rw-r--r-- | .circleci/config.yml | 176 | ||||
-rw-r--r-- | .circleci/images/i386-linux-deb8/Dockerfile (renamed from .circleci/images/i386-linux/Dockerfile) | 0 | ||||
-rwxr-xr-x | .circleci/images/update-image | 14 | ||||
-rw-r--r-- | .circleci/images/x86_64-linux-centos7/Dockerfile | 54 | ||||
-rw-r--r-- | .circleci/images/x86_64-linux-deb8/Dockerfile (renamed from .circleci/images/x86_64-linux/Dockerfile) | 0 | ||||
-rw-r--r-- | .circleci/images/x86_64-linux-deb9/Dockerfile | 37 | ||||
-rw-r--r-- | .circleci/images/x86_64-linux-fedora27/Dockerfile (renamed from .circleci/images/x86_64-linux-fedora/Dockerfile) | 0 |
7 files changed, 225 insertions, 56 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml index eaac9455ea..8eb13627d7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -108,14 +108,42 @@ aliases: only: /^ghc-.*/ jobs: - "validate-x86_64-linux": + "validate-x86_64-freebsd": resource_class: xlarge docker: - - image: ghcci/x86_64-linux:0.0.8 + - image: ghcci/x86_64-freebsd environment: + TARGET: FreeBSD <<: *buildenv - GHC_COLLECTOR_FLAVOR: x86_64-linux - TEST_ENV: x86_64-linux + GHC_COLLECTOR_FLAVOR: x86_64-freebsd + TEST_ENV: x86_64-freebsd + steps: + - checkout + - *set_git_identity + - *prepare + - *submodules + - *boot + - *configure_bsd + - *make + - *bindist + - *store_bindist + - *test + - *store_test_results + - *store_test_artifacts + - *push_perf_note + + "validate-x86_64-darwin": + macos: + xcode: "9.0" + environment: + # Disable sphinx PDF output as MacTeX apparently doesn't provide xelatex + BUILD_SPHINX_PDF: "NO" + MACOSX_DEPLOYMENT_TARGET: "10.7" + # Only Sierra and onwards supports clock_gettime. See #12858 + ac_cv_func_clock_gettime: "no" + GHC_COLLECTOR_FLAVOR: x86_64-darwin + <<: *buildenv + TEST_ENV: x86_64-darwin steps: - checkout - *set_git_identity @@ -131,22 +159,21 @@ jobs: - *store_test_artifacts - *push_perf_note - "validate-x86_64-freebsd": + "validate-x86_64-linux-deb8": resource_class: xlarge docker: - - image: ghcci/x86_64-freebsd + - image: ghcci/x86_64-linux-deb8:0.1 environment: - TARGET: FreeBSD <<: *buildenv - GHC_COLLECTOR_FLAVOR: x86_64-freebsd - TEST_ENV: x86_64-freebsd + GHC_COLLECTOR_FLAVOR: x86_64-linux + TEST_ENV: x86_64-linux-deb8 steps: - checkout - *set_git_identity - *prepare - *submodules - *boot - - *configure_bsd + - *configure_unix - *make - *bindist - *store_bindist @@ -155,18 +182,14 @@ jobs: - *store_test_artifacts - *push_perf_note - "validate-x86_64-darwin": - macos: - xcode: "9.0" + "validate-x86_64-linux-deb9": + resource_class: xlarge + docker: + - image: ghcci/x86_64-linux-deb9:0.1 environment: - # Disable sphinx PDF output as MacTeX apparently doesn't provide xelatex - BUILD_SPHINX_PDF: "NO" - MACOSX_DEPLOYMENT_TARGET: "10.7" - # Only Sierra and onwards supports clock_gettime. See #12858 - ac_cv_func_clock_gettime: "no" - GHC_COLLECTOR_FLAVOR: x86_64-darwin <<: *buildenv - TEST_ENV: x86_64-darwin + GHC_COLLECTOR_FLAVOR: x86_64-linux-deb9 + TEST_ENV: x86_64-linux steps: - checkout - *set_git_identity @@ -182,10 +205,10 @@ jobs: - *store_test_artifacts - *push_perf_note - "validate-hadrian-x86_64-linux": + "validate-hadrian-x86_64-linux-deb8": resource_class: xlarge docker: - - image: ghcci/x86_64-linux:0.0.8 + - image: ghcci/x86_64-linux-deb8:0.1 environment: <<: *buildenv steps: @@ -197,13 +220,13 @@ jobs: - *configure_unix - *build_hadrian - "validate-x86_64-linux-unreg": + "validate-x86_64-linux-deb8-unreg": resource_class: xlarge docker: - - image: ghcci/x86_64-linux:0.0.8 + - image: ghcci/x86_64-linux-deb8:0.1 environment: <<: *buildenv - TEST_ENV: x86_64-linux-unreg + TEST_ENV: x86_64-linux-deb8-unreg steps: - checkout - *set_git_identity @@ -217,14 +240,14 @@ jobs: - *push_perf_note - *store_test_artifacts - "validate-x86_64-linux-llvm": + "validate-x86_64-linux-deb8-llvm": resource_class: xlarge docker: - - image: ghcci/x86_64-linux:0.0.8 + - image: ghcci/x86_64-linux-deb8:0.1 environment: <<: *buildenv BUILD_FLAVOUR: perf-llvm - TEST_ENV: x86_64-linux-llvm + TEST_ENV: x86_64-linux-deb8-llvm steps: - run: name: Install LLVM @@ -247,14 +270,14 @@ jobs: - *push_perf_note # Nightly build with -DDEBUG using devel2 flavour - "validate-x86_64-linux-debug": + "validate-x86_64-linux-deb8-debug": resource_class: xlarge docker: - - image: ghcci/x86_64-linux:0.0.8 + - image: ghcci/x86_64-linux-deb8:0.1 environment: BUILD_FLAVOUR: devel2 <<: *buildenv - TEST_ENV: x86_64-linux-debug + TEST_ENV: x86_64-linux-deb8-debug SKIP_PERF_TESTS: YES steps: - checkout @@ -269,14 +292,37 @@ jobs: - *store_test_artifacts - *push_perf_note - "validate-i386-linux": + "validate-i386-linux-deb9": + resource_class: xlarge + docker: + - image: ghcci/i386-linux-deb9:0.1 + environment: + <<: *buildenv + GHC_COLLECTOR_FLAVOR: i386-linux-deb9 + TEST_ENV: i386-linux-deb9 + steps: + - checkout + - *set_git_identity + - *prepare + - *submodules + - *boot + - *configure_unix_32 + - *make + - *bindist + - *store_bindist + - *test + - *store_test_results + - *store_test_artifacts + - *push_perf_note + + "validate-i386-linux-deb8": resource_class: xlarge docker: - - image: ghcci/i386-linux:0.0.7 + - image: ghcci/i386-linux-deb8:0.1 environment: <<: *buildenv GHC_COLLECTOR_FLAVOR: i386-linux - TEST_ENV: i386-linux + TEST_ENV: i386-linux-deb8 steps: - checkout - *set_git_identity @@ -292,14 +338,40 @@ jobs: - *store_test_artifacts - *push_perf_note - "validate-x86_64-fedora": + "validate-x86_64-linux-centos7": + resource_class: xlarge + docker: + - image: ghcci/x86_64-linux-centos7:0.1 + environment: + <<: *buildenv + GHC_COLLECTOR_FLAVOR: x86_64-centos7 + LANG: en_US.UTF-8 + TEST_ENV: x86_64-centos7 + # Sphinx is too old + BUILD_SPHINX_PDF: NO + steps: + - checkout + - *set_git_identity + - *prepare + - *submodules + - *boot + - *configure_unix + - *make + - *bindist + - *store_bindist + - *test + - *store_test_results + - *store_test_artifacts + - *push_perf_note + + "validate-x86_64-linux-fedora27": resource_class: xlarge docker: - - image: ghcci/x86_64-linux-fedora:0.0.17 + - image: ghcci/x86_64-linux-fedora27:0.1 environment: <<: *buildenv GHC_COLLECTOR_FLAVOR: x86_64-fedora - TEST_ENV: x86_64-fedora + TEST_ENV: x86_64-linux-fedora27 steps: - checkout - *set_git_identity @@ -315,13 +387,13 @@ jobs: - *store_test_artifacts - *push_perf_note - "slow-validate-x86_64-linux": + "slow-validate-x86_64-linux-deb8": resource_class: xlarge docker: - - image: ghcci/x86_64-linux:0.0.8 + - image: ghcci/x86_64-linux-deb8:0.1 environment: <<: *buildenv - GHC_COLLECTOR_FLAVOR: x86_64-linux + GHC_COLLECTOR_FLAVOR: x86_64-linux-deb8 steps: - checkout - *prepare @@ -338,17 +410,23 @@ workflows: version: 2 validate: jobs: - - validate-x86_64-linux: + - validate-x86_64-linux-deb8: *trigger_on_tags # FreeBSD disabled: https://github.com/haskell/unix/issues/102 # - validate-x86_64-freebsd - validate-x86_64-darwin: *trigger_on_tags - - validate-x86_64-linux-llvm - - validate-i386-linux: + - validate-x86_64-linux-deb8-llvm + - validate-i386-linux-deb8: + *trigger_on_tags + - validate-x86_64-linux-deb9: + *trigger_on_tags + - validate-i386-linux-deb9: + *trigger_on_tags + - validate-x86_64-linux-centos7: *trigger_on_tags - - validate-hadrian-x86_64-linux - - validate-x86_64-fedora: + - validate-hadrian-x86_64-linux-deb8 + - validate-x86_64-linux-fedora27: *trigger_on_tags nightly: @@ -360,10 +438,10 @@ workflows: only: - master jobs: - - validate-x86_64-linux-unreg - - validate-x86_64-linux-llvm - - validate-x86_64-linux-debug - - slow-validate-x86_64-linux + - validate-x86_64-linux-deb8-unreg + - validate-x86_64-linux-deb8-llvm + - validate-x86_64-linux-deb8-debug + - slow-validate-x86_64-linux-deb8 notify: webhooks: diff --git a/.circleci/images/i386-linux/Dockerfile b/.circleci/images/i386-linux-deb8/Dockerfile index c8e51810c2..c8e51810c2 100644 --- a/.circleci/images/i386-linux/Dockerfile +++ b/.circleci/images/i386-linux-deb8/Dockerfile diff --git a/.circleci/images/update-image b/.circleci/images/update-image index 5a3cae506c..9900b354da 100755 --- a/.circleci/images/update-image +++ b/.circleci/images/update-image @@ -17,13 +17,13 @@ fi name=$1 version=$2 -versions="$(curl -s https://registry.hub.docker.com/v1/repositories/$repo/$name/tags | jq -r .[].name)" -if echo "$versions" | grep $version > /dev/null; then - echo "Version $version of $name already exists" - echo "Previous versions are:" - echo "$versions" - exit 1 -fi +#versions="$(curl -s https://registry.hub.docker.com/v1/repositories/$repo/$name/tags | jq -r .[].name)" +#if echo "$versions" | grep $version > /dev/null; then +# echo "Version $version of $name already exists" +# echo "Previous versions are:" +# echo "$versions" +# exit 1 +#fi docker build $name -t $repo/$name:$version docker push $repo/$name:$version diff --git a/.circleci/images/x86_64-linux-centos7/Dockerfile b/.circleci/images/x86_64-linux-centos7/Dockerfile new file mode 100644 index 0000000000..32acea5ca3 --- /dev/null +++ b/.circleci/images/x86_64-linux-centos7/Dockerfile @@ -0,0 +1,54 @@ +FROM centos:7 + +ENV LANG C.UTF-8 + +# Core build utilities +RUN yum -y install coreutils binutils which git make \ + automake autoconf gcc perl python3 texinfo xz lbzip2 \ + patch openssh-clients sudo zlib-devel sqlite \ + ncurses-compat-libs gmp-devel ncurses-devel gcc-c++ findutils \ + curl wget jq + +# Python 3 +RUN yum install -y https://centos7.iuscommunity.org/ius-release.rpm; \ + yum install -y python34u python34u-libs + +# Documentation tools +RUN yum -y install python-sphinx \ + texlive texlive-latex texlive-xetex \ + texlive-collection-latex texlive-collection-latexrecommended \ + texlive-xetex-def texlive-collection-xetex \ + python-sphinx-latex dejavu-sans-fonts dejavu-serif-fonts \ + dejavu-sans-mono-fonts + +# This is in the PATH when I ssh into the CircleCI machine but somehow +# sphinx-build isn't found during configure unless we explicitly +# add it here as well; perhaps PATH is being overridden by CircleCI's +# infrastructure? +ENV PATH /usr/libexec/python3-sphinx:$PATH + +# systemd isn't running so remove it from nsswitch.conf +# Failing to do this will result in testsuite failures due to +# non-functional user lookup (#15230). +RUN sed -i -e 's/systemd//g' /etc/nsswitch.conf + +# Install GHC and cabal +RUN cd /tmp && curl https://downloads.haskell.org/~ghc/8.4.2/ghc-8.4.2-x86_64-deb8-linux.tar.xz | tar -Jx +RUN cd /tmp/ghc-8.4.2 && ./configure --prefix=/opt/ghc/8.4.2 +RUN cd /tmp/ghc-8.4.2 && make install +RUN mkdir -p /opt/cabal/bin +RUN cd /opt/cabal/bin && curl https://www.haskell.org/cabal/release/cabal-install-2.2.0.0/cabal-install-2.2.0.0-x86_64-unknown-linux.tar.gz | tar -zx +ENV PATH /opt/ghc/8.4.2/bin:/opt/cabal/bin:$PATH + +# Create a normal user. +RUN adduser ghc --comment "GHC builds" +RUN echo "ghc ALL = NOPASSWD : ALL" > /etc/sudoers.d/ghc +USER ghc +WORKDIR /home/ghc/ + +# Install Alex, Happy, and HsColor with Cabal +RUN cabal update && \ + cabal install hscolour happy alex +ENV PATH /home/ghc/.cabal/bin:$PATH + +CMD ["bash"] diff --git a/.circleci/images/x86_64-linux/Dockerfile b/.circleci/images/x86_64-linux-deb8/Dockerfile index 0491ad9bba..0491ad9bba 100644 --- a/.circleci/images/x86_64-linux/Dockerfile +++ b/.circleci/images/x86_64-linux-deb8/Dockerfile diff --git a/.circleci/images/x86_64-linux-deb9/Dockerfile b/.circleci/images/x86_64-linux-deb9/Dockerfile new file mode 100644 index 0000000000..6d14daaf8d --- /dev/null +++ b/.circleci/images/x86_64-linux-deb9/Dockerfile @@ -0,0 +1,37 @@ +FROM debian:stretch + +ENV LANG C.UTF-8 + +RUN apt-get update -qq; apt-get install -qy gnupg + +RUN echo 'deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main' > /etc/apt/sources.list.d/ghc.list +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F6F88286 +RUN apt-get update -qq + +# Core build utilities +RUN apt-get install -qy zlib1g-dev libtinfo-dev libsqlite3-0 libsqlite3-dev \ + ca-certificates g++ git make automake autoconf gcc \ + perl python3 texinfo xz-utils lbzip2 patch openssh-client sudo \ + jq wget curl + +# Documentation tools +RUN apt-get install -qy python3-sphinx texlive-xetex texlive-latex-extra + +# Basic Haskell toolchain +RUN apt-get install -qy cabal-install-2.2 ghc-8.4.2 + +ENV PATH /home/ghc/.local/bin:/opt/cabal/2.2/bin:/opt/ghc/8.4.2/bin:$PATH + +# Create a normal user. +RUN adduser ghc --gecos "GHC builds" --disabled-password +RUN echo "ghc ALL = NOPASSWD : ALL" > /etc/sudoers.d/ghc +USER ghc + +# Build Haskell tools +RUN cabal update && \ + cabal install hscolour happy alex +ENV PATH /home/ghc/.cabal/bin:$PATH + +WORKDIR /home/ghc/ + +CMD ["bash"] diff --git a/.circleci/images/x86_64-linux-fedora/Dockerfile b/.circleci/images/x86_64-linux-fedora27/Dockerfile index 6fad77f1c5..6fad77f1c5 100644 --- a/.circleci/images/x86_64-linux-fedora/Dockerfile +++ b/.circleci/images/x86_64-linux-fedora27/Dockerfile |