diff --git a/.docker/validate-7.10.3.dockerfile b/.docker/validate-7.10.3.dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..7e6ef100f6e6f58810e1d95fc70b2a8a388714c8 --- /dev/null +++ b/.docker/validate-7.10.3.dockerfile @@ -0,0 +1,51 @@ +FROM phadej/ghc:7.10.3-bionic + +# We need newer compiler, to install cabal-plan +RUN apt-get update +RUN apt-get install -y ghc-8.6.5 + +# Install cabal-plan +RUN cabal v2-update +RUN cabal v2-install -w /opt/ghc/8.6.5/bin/ghc-8.6.5 cabal-plan --constraint 'cabal-plan ^>=0.6' + +# Remove ghc-8.6.5, so it doesn't interfere +RUN apt-get remove -y ghc-8.6.5 + +# We install happy, so it's in the store; we (hopefully) don't use it directly. +RUN cabal v2-install happy --constraint 'happy ^>=1.19.12' + +# Install some other dependencies +# Remove $HOME/.ghc so there aren't any environments +RUN cabal v2-install -w ghc-7.10.3 --lib \ + aeson \ + async \ + base-compat \ + base16-bytestring \ + base64-bytestring \ + cryptohash-sha256 \ + Diff \ + echo \ + ed25519 \ + edit-distance \ + haskell-lexer \ + HTTP \ + network \ + optparse-applicative \ + pretty-show \ + regex-compat-tdfa \ + regex-tdfa \ + resolv \ + statistics \ + tar \ + tasty \ + tasty-golden \ + tasty-hunit \ + tasty-quickcheck \ + tree-diff \ + zlib \ + && rm -rf $HOME/.ghc + +# Validate +WORKDIR /build +COPY . /build +RUN sh ./validate.sh -w ghc-7.10.3 -v diff --git a/.docker/validate-7.8.4.dockerfile b/.docker/validate-7.8.4.dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..83d2e8fc2803ef7f17a1a1a83197a818f4caa98d --- /dev/null +++ b/.docker/validate-7.8.4.dockerfile @@ -0,0 +1,62 @@ +# TODO: change to bionic +# https://github.com/haskell-CI/haskell-ci/issues/342 +FROM phadej/ghc:7.8.4-xenial + +# We need newer compiler, to install cabal-plan +RUN apt-get update +RUN apt-get install -y ghc-8.6.5 ghc-7.8.4-dyn + +# Install cabal-plan +RUN cabal v2-update +RUN cabal v2-install -w /opt/ghc/8.6.5/bin/ghc-8.6.5 cabal-plan --constraint 'cabal-plan ^>=0.6' + +# Remove ghc-8.6.5, so it doesn't interfere +RUN apt-get remove -y ghc-8.6.5 + +# We install happy, so it's in the store; we (hopefully) don't use it directly. +RUN cabal v2-install happy --constraint 'happy ^>=1.19.12' + +# Install some other dependencies +# Remove $HOME/.ghc so there aren't any environments +RUN cabal v2-install -w ghc-7.8.4 --lib \ + aeson \ + async \ + base-compat \ + base16-bytestring \ + base64-bytestring \ + cryptohash-sha256 \ + Diff \ + echo \ + ed25519 \ + edit-distance \ + haskell-lexer \ + HTTP \ + network \ + optparse-applicative \ + pretty-show \ + regex-compat-tdfa \ + regex-tdfa \ + statistics \ + tar \ + tasty \ + tasty-golden \ + tasty-hunit \ + tasty-quickcheck \ + tree-diff \ + zlib \ + --constraint="bytestring installed" \ + --constraint="binary installed" \ + --constraint="containers installed" \ + --constraint="deepseq installed" \ + --constraint="directory installed" \ + --constraint="filepath installed" \ + --constraint="pretty installed" \ + --constraint="process installed" \ + --constraint="time installed" \ + --constraint="unix installed" \ + && rm -rf $HOME/.ghc + +# Validate +WORKDIR /build +COPY . /build +RUN sh ./validate.sh -l -w ghc-7.8.4 -v diff --git a/.docker/validate-8.0.2.dockerfile b/.docker/validate-8.0.2.dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..10147cd0e877782764e78f1a23d5b75c932bc048 --- /dev/null +++ b/.docker/validate-8.0.2.dockerfile @@ -0,0 +1,44 @@ +FROM phadej/ghc:8.0.2-bionic + +# Install cabal-plan +RUN cabal v2-update +RUN cabal v2-install cabal-plan --constraint 'cabal-plan ^>=0.6' + +# We install happy, so it's in the store; we (hopefully) don't use it directly. +RUN cabal v2-install happy --constraint 'happy ^>=1.19.12' + +# Install some other dependencies +# Remove $HOME/.ghc so there aren't any environments +RUN cabal v2-install -w ghc-8.0.2 --lib \ + aeson \ + async \ + base-compat \ + base16-bytestring \ + base64-bytestring \ + cryptohash-sha256 \ + Diff \ + echo \ + ed25519 \ + edit-distance \ + haskell-lexer \ + HTTP \ + network \ + optparse-applicative \ + pretty-show \ + regex-compat-tdfa \ + regex-tdfa \ + resolv \ + statistics \ + tar \ + tasty \ + tasty-golden \ + tasty-hunit \ + tasty-quickcheck \ + tree-diff \ + zlib \ + && rm -rf $HOME/.ghc + +# Validate +WORKDIR /build +COPY . /build +RUN sh ./validate.sh -w ghc-8.0.2 -v diff --git a/.docker/validate-8.2.2.dockerfile b/.docker/validate-8.2.2.dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..e9bb8b904ddbd15d884cb8a39e5522ffcf78453e --- /dev/null +++ b/.docker/validate-8.2.2.dockerfile @@ -0,0 +1,44 @@ +FROM phadej/ghc:8.2.2-bionic + +# Install cabal-plan +RUN cabal v2-update +RUN cabal v2-install cabal-plan --constraint 'cabal-plan ^>=0.6' + +# We install happy, so it's in the store; we (hopefully) don't use it directly. +RUN cabal v2-install happy --constraint 'happy ^>=1.19.12' + +# Install some other dependencies +# Remove $HOME/.ghc so there aren't any environments +RUN cabal v2-install -w ghc-8.2.2 --lib \ + aeson \ + async \ + base-compat \ + base16-bytestring \ + base64-bytestring \ + cryptohash-sha256 \ + Diff \ + echo \ + ed25519 \ + edit-distance \ + haskell-lexer \ + HTTP \ + network \ + optparse-applicative \ + pretty-show \ + regex-compat-tdfa \ + regex-tdfa \ + resolv \ + statistics \ + tar \ + tasty \ + tasty-golden \ + tasty-hunit \ + tasty-quickcheck \ + tree-diff \ + zlib \ + && rm -rf $HOME/.ghc + +# Validate +WORKDIR /build +COPY . /build +RUN sh ./validate.sh -w ghc-8.2.2 -v diff --git a/.docker/validate-8.4.4.dockerfile b/.docker/validate-8.4.4.dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..7b4891399ffa8653f0fc1c991ea6a5e30a07772b --- /dev/null +++ b/.docker/validate-8.4.4.dockerfile @@ -0,0 +1,44 @@ +FROM phadej/ghc:8.6.5-bionic + +# Install cabal-plan +RUN cabal v2-update +RUN cabal v2-install cabal-plan --constraint 'cabal-plan ^>=0.6' + +# We install happy, so it's in the store; we (hopefully) don't use it directly. +RUN cabal v2-install happy --constraint 'happy ^>=1.19.12' + +# Install some other dependencies +# Remove $HOME/.ghc so there aren't any environments +RUN cabal v2-install -w ghc-8.6.5 --lib \ + aeson \ + async \ + base-compat \ + base16-bytestring \ + base64-bytestring \ + cryptohash-sha256 \ + Diff \ + echo \ + ed25519 \ + edit-distance \ + haskell-lexer \ + HTTP \ + network \ + optparse-applicative \ + pretty-show \ + regex-compat-tdfa \ + regex-tdfa \ + resolv \ + statistics \ + tar \ + tasty \ + tasty-golden \ + tasty-hunit \ + tasty-quickcheck \ + tree-diff \ + zlib \ + && rm -rf $HOME/.ghc + +# Validate +WORKDIR /build +COPY . /build +RUN sh ./validate.sh -w ghc-8.6.5 -v diff --git a/Makefile b/Makefile index 659f72cb0fea7df9fdecf933502c4a30a6026054..2b5d5a69d83aa00faf9a965c68222de7d0c90e76 100644 --- a/Makefile +++ b/Makefile @@ -112,9 +112,45 @@ cabal-install-test: # Docker validation +validate-via-docker-all : + @echo "This takes a lot of time" + @echo 5 + @sleep 1 + @echo 4 + @sleep 1 + @echo 3 + @sleep 1 + @echo 2 + @sleep 1 + @echo 1 + @sleep 1 + $(MAKE) validate-via-docker-7.6.3 + $(MAKE) validate-via-docker-7.8.4 + $(MAKE) validate-via-docker-7.10.3 + $(MAKE) validate-via-docker-8.0.2 + $(MAKE) validate-via-docker-8.2.2 + $(MAKE) validate-via-docker-8.4.4 + $(MAKE) validate-via-docker-8.6.5 + $(MAKE) validate-via-docker-8.8.1 + validate-via-docker-7.6.3: docker build -t cabal-validate -f .docker/validate-7.6.3.dockerfile . +validate-via-docker-7.8.4: + docker build -t cabal-validate -f .docker/validate-7.8.4.dockerfile . + +validate-via-docker-7.10.3: + docker build -t cabal-validate -f .docker/validate-7.10.3.dockerfile . + +validate-via-docker-8.0.2: + docker build -t cabal-validate -f .docker/validate-8.0.2.dockerfile . + +validate-via-docker-8.2.2: + docker build -t cabal-validate -f .docker/validate-8.2.2.dockerfile . + +validate-via-docker-8.4.4: + docker build -t cabal-validate -f .docker/validate-8.4.4.dockerfile . + validate-via-docker-8.6.5: docker build -t cabal-validate -f .docker/validate-8.6.5.dockerfile .