diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7d19e229e6811afacbc4ac5740328b286e9914d7..b4699f68dc7ed5fa3a02588a4e8e8f25248b59c0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -117,6 +117,14 @@ build-x86_64-linux-deb9: - docker - x86_64-linux +build-x86_64-linux-deb10: + extends: .build + variables: + IMAGE: x86_64-linux-deb10 + tags: + - docker + - x86_64-linux + build-x86_64-linux-fedora27: extends: .build variables: diff --git a/x86_64-linux-deb10/Dockerfile b/x86_64-linux-deb10/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..3ec05790517cbf7f95e0402628df65ca00791877 --- /dev/null +++ b/x86_64-linux-deb10/Dockerfile @@ -0,0 +1,72 @@ +FROM debian:buster + +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +ENV LANG C.UTF-8 + +RUN apt-get update -qq; apt-get install --no-install-recommends -qy gnupg dirmngr \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# http://downloads.haskell.org/debian/ +RUN echo 'deb http://downloads.haskell.org/debian stretch main' > /etc/apt/sources.list.d/ghc.list +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA3CBA3FFE22B574 + +# Core build utilities +RUN apt-get update -qq && apt-get install --no-install-recommends -qy \ + zlib1g-dev libtinfo-dev libsqlite3-0 libsqlite3-dev libgmp-dev \ + ca-certificates g++ git make automake autoconf gcc \ + perl python3 texinfo xz-utils lbzip2 bzip2 patch openssh-client sudo time \ + jq wget curl \ + # For source distributions + xutils-dev \ + # DWARF libraries + libdw1 libdw-dev \ + # For nofib + valgrind \ + # Documentation tools + python3-sphinx texlive-xetex texlive-latex-extra texlive-binaries texlive-fonts-recommended lmodern texlive-generic-extra \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + + +WORKDIR /tmp +# Install GHC and cabal +ENV GHC_VERSION 8.8.1 +#RUN curl https://downloads.haskell.org/~ghc/$GHC_VERSION/ghc-$GHC_VERSION-x86_64-fedora27-linux.tar.xz | tar -Jx; +RUN curl http://home.smart-cactus.org/~ben/ghc/release-prep/$GHC_VERSION/ghc-$GHC_VERSION-x86_64-deb10-linux.tar.xz | tar -Jx; +WORKDIR /tmp/ghc-$GHC_VERSION +RUN ./configure --prefix=/opt/ghc/$GHC_VERSION; \ + make install; + +WORKDIR /tmp +RUN rm -rf /tmp/ghc-$GHC_VERSION +ENV PATH /opt/ghc/$GHC_VERSION/bin:$PATH + +# Get Cabal +ENV CABAL_VERSION 2.4.1.0 +RUN curl https://downloads.haskell.org/cabal/cabal-install-$CABAL_VERSION/cabal-install-$CABAL_VERSION-x86_64-unknown-linux.tar.xz | tar -Jx && \ + mv cabal /usr/local/bin/cabal + +# LLVM +ENV LLVM_DIR /opt/llvm +ENV LLVM_VERSION 7.0.0 +ENV PATH $LLVM_DIR/bin:$PATH +RUN curl http://releases.llvm.org/$LLVM_VERSION/clang+llvm-$LLVM_VERSION-x86_64-linux-gnu-ubuntu-16.04.tar.xz | tar -xJC .; \ + mkdir $LLVM_DIR && \ + cp -R clang+llvm*/* $LLVM_DIR && \ + rm -R clang+llvm* && \ + llc --version + +# Create a normal user. +RUN adduser ghc --gecos "GHC builds" --disabled-password +RUN echo "ghc ALL = NOPASSWD : ALL" > /etc/sudoers.d/ghc +USER ghc +WORKDIR /home/ghc/ + +# Build Haskell tools +RUN cabal v2-update && \ + cabal v2-install hscolour happy alex --constraint 'happy ^>= 1.19.10' +ENV PATH /home/ghc/.cabal/bin:$PATH + +CMD ["bash"]