From 76196ee894c5ba50135955db95cb1a42416f1e41 Mon Sep 17 00:00:00 2001 From: Jens Petersen Date: Wed, 10 Jul 2024 11:44:33 +0800 Subject: [PATCH] instead add dockerfiles/lts-22.29 to bump stack version in next minor Revert "dockerfiles/lts-22.28: bump stack from 2.13 to 2.15" This reverts commit d7a78c946ac260466332d54727d72dd164048a8b. [skip ci] --- automated/dockerfiles/lts-22.28/Dockerfile | 2 +- automated/dockerfiles/lts-22.29/Dockerfile | 90 ++++++++++++++++++++++ 2 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 automated/dockerfiles/lts-22.29/Dockerfile diff --git a/automated/dockerfiles/lts-22.28/Dockerfile b/automated/dockerfiles/lts-22.28/Dockerfile index a67f1269..4bd9826e 100644 --- a/automated/dockerfiles/lts-22.28/Dockerfile +++ b/automated/dockerfiles/lts-22.28/Dockerfile @@ -5,7 +5,7 @@ LABEL maintainer="manny@fpcomplete.com" ARG GHC_VERSION=9.6.6 ARG LTS_SLUG=lts-22.28 ARG PID1_VERSION=0.1.2.0 -ARG STACK_VERSION=2.15.5 +ARG STACK_VERSION=2.13.1 ARG CUDA_VERSION=10.0 ARG JVM_PATH=/usr/lib/jvm/java-8-openjdk-amd64 ARG LLVM_PATH=/usr/lib/llvm-9 diff --git a/automated/dockerfiles/lts-22.29/Dockerfile b/automated/dockerfiles/lts-22.29/Dockerfile new file mode 100644 index 00000000..1fdfa249 --- /dev/null +++ b/automated/dockerfiles/lts-22.29/Dockerfile @@ -0,0 +1,90 @@ +FROM ubuntu:22.04 + +LABEL maintainer="manny@fpcomplete.com" + +ARG GHC_VERSION=9.6.6 +ARG LTS_SLUG=lts-22.29 +ARG PID1_VERSION=0.1.2.0 +ARG STACK_VERSION=2.15.5 +ARG CUDA_VERSION=10.0 +ARG JVM_PATH=/usr/lib/jvm/java-8-openjdk-amd64 +ARG LLVM_PATH=/usr/lib/llvm-9 +ARG BOOTSTRAP_COMMIT=00440d8b56167281e30dd9d292f2a223adeb2a34 + +ARG DEBIAN_FRONTEND=noninteractive +ARG VARIANT=build +ARG STACK_ROOT=/home/stackage/.stack + +# +# Set encoding to UTF-8 and PATH to find GHC and cabal/stack-installed binaries. +# + +ENV LANG=C.UTF-8 \ + LC_ALL=C.UTF-8 \ + PATH=/root/.local/bin:/usr/local/cuda-$CUDA_VERSION/bin:$STACK_ROOT/programs/x86_64-linux/ghc-$GHC_VERSION/bin:$PATH \ + CUDA_PATH=/usr/local/cuda-$CUDA_VERSION \ + CPATH=$JVM_PATH/include:$JVM_PATH/include/linux:$LLVM_PATH/include + +# +# Install pre-requisites +# + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + wget netbase ca-certificates g++ gcc libc6-dev libffi-dev libgmp-dev \ + make xz-utils zlib1g-dev git gnupg libtinfo-dev jq && \ + rm -rf /var/lib/apt/lists/* + +# +# Use Stackage's docker/*.sh scripts to install system libraries and +# tools required to build any Stackage package. +# Re-installs 'stack' *after* running docker/*.sh since that may have +# installed a different version. +# In the case of 'small' image, just install Stack and GHC. +# + +RUN if [ "$VARIANT" != "small" ]; then \ + wget -qO- https://raw.githubusercontent.com/commercialhaskell/stackage/$BOOTSTRAP_COMMIT/docker/01-build-server.sh https://raw.githubusercontent.com/commercialhaskell/stackage/$BOOTSTRAP_COMMIT/docker/02-apt-get-install.sh https://raw.githubusercontent.com/commercialhaskell/stackage/$BOOTSTRAP_COMMIT/docker/03-custom-install.sh https://raw.githubusercontent.com/commercialhaskell/stackage/$BOOTSTRAP_COMMIT/docker/04-cleanup.sh | sed "s/^GHCVER=9.0.1$/GHCVER=$GHC_VERSION/" | GHCVER=$GHC_VERSION bash; \ + fi && \ + wget -qO- https://github.com/commercialhaskell/stack/releases/download/v$STACK_VERSION/stack-$STACK_VERSION-linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C /usr/bin '*/stack' && \ + if [ "$VARIANT" = "small" ]; then \ + stack setup --resolver ghc-$GHC_VERSION; \ + fi && \ + rm -rf /var/lib/apt/lists/* && \ + cd $STACK_ROOT && \ + find . -type f -not -path "./programs/x86_64-linux/ghc-$GHC_VERSION/*" -exec rm '{}' \; && \ + find . -type d -print0 |sort -rz |xargs -0 rmdir 2>/dev/null || true + +# +# Configure Stack to use the GHC installed in the Docker image rather than installing its own +# + +RUN mkdir /etc/stack/ && \ + echo "system-ghc: true" >/etc/stack/config.yaml + +# +# Use 'stack' to install basic Haskell tools like alex, happy, and cpphs. We +# remove most of the STACK_ROOT afterward to save space, but keep the 'share' +# files that some of these tools require. +# + +RUN stack --resolver=$LTS_SLUG --local-bin-path=/usr/bin install \ + happy alex cpphs gtk2hs-buildtools hscolour hlint hindent && \ + cd $STACK_ROOT && \ + find . -type f -not -path './snapshots/*/share/*' -and -not -path "./programs/x86_64-linux/ghc-$GHC_VERSION/*" -exec rm '{}' \; && \ + find . -type d -print0 |sort -rz |xargs -0 rmdir 2>/dev/null || true + +# +# Install 'pid1' init daemon +# + +RUN wget -O- "https://github.com/fpco/pid1/releases/download/v$PID1_VERSION/pid1-$PID1_VERSION-linux-x86_64.tar.gz" | tar xzf - -C /usr/local && \ + chown root:root /usr/local/sbin && \ + chown root:root /usr/local/sbin/pid1 + +# +# Set up pid1 entrypoint and default command +# + +ENTRYPOINT ["/usr/local/sbin/pid1"] +CMD ["bash"]