diff --git a/CURATORS.md b/CURATORS.md index 84f5361d8..90507f8ca 100644 --- a/CURATORS.md +++ b/CURATORS.md @@ -308,7 +308,7 @@ info above). ### Building LTS minor releases Before running the build, please make sure that the Dockerfile in `automated/dockerfiles/lts-X.Y` is up to date, where X is the major version that you're building and Y is the latest minor version of X for which a Dockerfile exists. * If any changes need to be made, (eg, new GHC version), copy `automated/lts-X.Y/Dockerfile` to `automated/lts-X.Z/Dockerfile`, where Z is the minor version you're building, and include the new changes. - * If you are building the first release of a new LTS major version, create a new `lts-X.Z/Dockerfile` based on the previous LTS's, and adjust the variables at the top to match the requirements of the snapshot. Ensure that `STACK_VERSION` is the latest release of Stack, and `BOOTSTRAP_COMMIT` is the commit ID of this repo containing the version of the `bootstrap-commit.sh` used to build the snapshot. Also ensure the FROM image's Ubuntu version matches that used in the [root Dockerfile](Dockerfile) used to build this snapshot. + * If you are building the first release of a new LTS major version, create a new `lts-X.0/Dockerfile` based on the previous LTS's, and adjust the variables at the top to match the requirements of the snapshot. Ensure that `STACK_VERSION` is the latest release of Stack, and `BOOTSTRAP_COMMIT` is the commit ID of this repo containing the version of the `bootstrap-commit.sh` used to build the snapshot. Also ensure the FROM image's Ubuntu version matches that used in the [root Dockerfile](Dockerfile) used to build this snapshot. First run `build.sh` to regenerate updated `ltsXX/work/constraints.yaml` and `ltsXX/work/snapshot-incomplete.yaml` files. @@ -354,7 +354,7 @@ resolve any issues before the next curator shift the coming monday. * You can detect the problem by running `df`. If you see that `/` is out of space, we have a problem. * If you see that `/var/stackage/` is out of space, you can: - * run `./etc/diskspace/clean-old-stack-libs.hs [nightly|lts-XX]` + * run `./etc/diskspace/remove-old-stack-work-libs.hs [nightly|lts-XX]` * If that is insufficient then remove all the old builds under the previous ghc/Cabal version: * `rm -r /var/stackage/stackage/automated/work/[nightly|lts-XX]/unpack-dir/unpacked/*/.stack-work/dist/x86_64-linux/Cabal-X.Y.0.0/` diff --git a/automated/build.sh b/automated/build.sh index 1946a166f..9676ae5f6 100755 --- a/automated/build.sh +++ b/automated/build.sh @@ -64,13 +64,19 @@ BINDIR=$(cd $ROOT/work/bin ; pwd) cd $BINDIR rm -f curator stack *.bz2 -curl -L "https://github.com/commercialhaskell/curator/releases/download/commit-4ae7a59717f163e15c69ddf75d31d0f775de2561/curator.bz2" | bunzip2 > curator +curl -L "https://github.com/commercialhaskell/curator/releases/download/commit-45c4eb5cb7f233c06544843bb479616d63380363/curator.bz2" | bunzip2 > curator chmod +x curator echo -n "curator version: " docker run --rm -v $(pwd)/curator:/exe $IMAGE /exe --version -STACK_VERSION=2.11.1 -curl -L https://github.com/commercialhaskell/stack/releases/download/v${STACK_VERSION}/stack-${STACK_VERSION}-linux-x86_64-bin > stack +if [ $SHORTNAME = "lts" ] +then + STACK_VERSION=2.11.1 + curl -L https://github.com/commercialhaskell/stack/releases/download/v${STACK_VERSION}/stack-${STACK_VERSION}-linux-x86_64-bin > stack +else + STACK_VERSION=2.13.0.1 + curl -L https://github.com/commercialhaskell/stack/releases/download/rc%2Fv${STACK_VERSION}/stack-${STACK_VERSION}-linux-x86_64-bin > stack +fi chmod +x stack echo -n "stack version: " docker run --rm -v $(pwd)/stack:/exe $IMAGE /exe --version diff --git a/automated/dockerfiles/lts-21.12/Dockerfile b/automated/dockerfiles/lts-21.12/Dockerfile new file mode 100644 index 000000000..eb95a9cb3 --- /dev/null +++ b/automated/dockerfiles/lts-21.12/Dockerfile @@ -0,0 +1,90 @@ +FROM ubuntu:22.04 + +LABEL maintainer="manny@fpcomplete.com" + +ARG GHC_VERSION=9.4.7 +ARG LTS_SLUG=lts-21.12 +ARG PID1_VERSION=0.1.2.0 +ARG STACK_VERSION=2.11.1 +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=56d27e1cfead1a37ff55942a9d2f14c0733459c9 + +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"] diff --git a/build-constraints.yaml b/build-constraints.yaml index c0c7cac43..c3b511498 100644 --- a/build-constraints.yaml +++ b/build-constraints.yaml @@ -121,6 +121,7 @@ packages: - newtype - resolv - blaze-builder + - netrc # Some "grandfathered dependencies" I took over because I contributed to them at some time. # Feel free to snatch them from me! @@ -352,10 +353,10 @@ packages: "Scott N. Walck @walck": - cyclotomic - learn-physics - - # @ghorn - - not-gloss - - spatial-math + - SpatialMath + - Vis + - LPFP + - LPFP-core "Phil de Joux @philderbeast": - siggy-chardust @@ -568,6 +569,7 @@ packages: - explicit-exception - fixed-length - fftw-ffi + - ghostscript-parallel - gnuplot - group-by-date - guarded-allocation @@ -588,6 +590,7 @@ packages: - non-negative - numeric-prelude - numeric-quest + - ods2csv - pathtype - pooled-io - probability @@ -1326,8 +1329,8 @@ packages: - liquid-fixpoint "Daniel Casanueva @Daniel-Diaz": - - bimap-server - binary-list + - bounded-qsem - byteset - Clipboard - gmail-simple @@ -1837,6 +1840,7 @@ packages: - http-query - hwk - koji + - koji-tool - pagure - pagure-cli - pdc @@ -4510,7 +4514,6 @@ packages: "Domen Kozar @domenkozar": - elm2nix < 0 # 0.3.0 compile fail - mixpanel-client < 0 # 0.3.0 aeson 2, https://github.com/commercialhaskell/stackage/issues/6443 - - netrc - pretty-sop - servant-auth - servant-auth-server @@ -4898,6 +4901,7 @@ packages: "8c6794b6 <8c6794b6@gmail.com> @8c6794b6": - hpc-codecov + - miniterion "Hiromi Ishii @konn": - equational-reasoning @@ -5240,6 +5244,7 @@ packages: - toml-parser "Andreas Ländle @alaendle": + - co-log - co-log-core - co-log-polysemy @@ -8277,6 +8282,13 @@ packages: # https://github.com/commercialhaskell/stackage/issues/7106 - tls < 1.9 + # https://github.com/commercialhaskell/stackage/issues/7111 + - tasty < 1.5 + - tasty-quickcheck < 0.10.3 + + # https://github.com/commercialhaskell/stackage/issues/7124 + - mpi-hs < 0.7.3 + # end of Stackage upper bounds # end of packages @@ -8970,6 +8982,7 @@ expected-test-failures: - distributed-process - distributed-process-execution # https://github.com/haskell-distributed/distributed-process-execution/issues/2 - distributed-process-task + - dl-fedora # status 404 on http download - fft # test-fft: exited with: ExitFailure (-11) - foldl-statistics # https://github.com/data61/foldl-statistics/issues/2 - friday # https://github.com/RaphaelJ/friday/issues/37 @@ -9018,7 +9031,6 @@ expected-test-failures: - dbcleaner # Requires running PostgreSQL server - dbmigrations # PostgreSQL - dbus # #6373/closed - - dl-fedora # status 404 on http download - dns # https://github.com/commercialhaskell/stackage/issues/6374 - drifter-postgresql # PostgreSQL - egison # executable not found https://github.com/egison/egison/issues/250 @@ -9160,6 +9172,7 @@ expected-test-failures: - character-cases # 0.1.0.6 https://github.com/aiya000/hs-character-cases/issues/3 - codec-beam # 0.2.0 posix_spawnp: does not exist - colonnade # 1.2.0.2 https://github.com/andrewthad/colonnade/issues/31 + - context-wai-middleware # 0.2.0.1 https://github.com/jship/context/issues/3 - control-dsl # 0.2.1.3 - crypt-sha512 # 0 Use -p '/crypt.$6$rounds=10$roundstoolow/' to rerun this test only. - curl-runnings # 0.17.0 @@ -9169,6 +9182,7 @@ expected-test-failures: - fixed-vector-hetero # 0.6.1.1 - generic-optics # 2.2.1.0 optimization output https://github.com/kcsongor/generic-lens/issues/133 - github-types # https://github.com/commercialhaskell/stackage/issues/6549 + - hakyll # https://github.com/commercialhaskell/stackage/issues/7110 - haskoin-node # https://github.com/commercialhaskell/stackage/issues/6769 - heist # https://github.com/commercialhaskell/stackage/issues/6765 - hgeometry-combinatorial # 0.14 diff --git a/etc/diskspace/remove-old-stack-work-libs.hs b/etc/diskspace/remove-old-stack-work-libs.hs index 08486eef3..f39622572 100755 --- a/etc/diskspace/remove-old-stack-work-libs.hs +++ b/etc/diskspace/remove-old-stack-work-libs.hs @@ -111,7 +111,7 @@ withOneDirectory_ act = do [l] -> withCurrentDirectory l act _ -> do cwd <- getCurrentDirectory - error $ "more than one directory found in " ++ cwd ++ ": " ++ unwords ls + error $ show (length ls) ++ " directories found in " ++ cwd ++ ": " ++ unwords ls withOneDirectory :: (FilePath -> IO a) -> IO a withOneDirectory act = do @@ -120,4 +120,4 @@ withOneDirectory act = do [l] -> withCurrentDirectory l $ act l _ -> do cwd <- getCurrentDirectory - error $ "more than one directory found in " ++ cwd ++ ": " ++ unwords ls + error $ show (length ls) ++ " directories found in " ++ cwd ++ ": " ++ unwords ls