Skip to content

Commit

Permalink
Merge pull request #1712 from clash-lang/mergify/copy/1.4/pr-1708
Browse files Browse the repository at this point in the history
Preliminary groundwork for GHC 9.0 compatibility (copy #1708)
  • Loading branch information
martijnbastiaan authored Mar 18, 2021
2 parents 832e086 + a61adfa commit af46aaa
Show file tree
Hide file tree
Showing 18 changed files with 69 additions and 56 deletions.
4 changes: 2 additions & 2 deletions .ci/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ RUN apt-get update \
&& cd .. \
&& rm -rf ghdl-0.37

ARG GHCUP_VERSION="0.1.12"
ARG GHCUP_VERSION="0.1.14"
ARG GHCUP_URL="https://downloads.haskell.org/~ghcup/${GHCUP_VERSION}/x86_64-linux-ghcup-${GHCUP_VERSION}"
ARG GHCUP_BIN=/usr/bin/ghcup

Expand All @@ -38,7 +38,7 @@ RUN curl $GHCUP_URL --output $GHCUP_BIN \
&& ghcup install cabal 2.4.1.0 \
&& ghcup install cabal 3.0.0.0 \
&& ghcup install cabal 3.2.0.0 \
&& ghcup install cabal 3.4.0.0-rc4
&& ghcup install cabal 3.4.0.0

ARG ghc_version
ENV GHC_VERSION=$ghc_version
Expand Down
2 changes: 1 addition & 1 deletion .ci/gitlab/benchmark.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.benchmark:
image: docker.pkg.github.com/clash-lang/clash-compiler/clash-ci-$GHC_VERSION:2021-02-08
image: docker.pkg.github.com/clash-lang/clash-compiler/clash-ci-$GHC_VERSION:2021-03-18
stage: test
timeout: 2 hours
variables:
Expand Down
2 changes: 1 addition & 1 deletion .ci/gitlab/common.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
.common:
image: docker.pkg.github.com/clash-lang/clash-compiler/clash-ci-$GHC_VERSION:2021-02-08
image: docker.pkg.github.com/clash-lang/clash-compiler/clash-ci-$GHC_VERSION:2021-03-18
timeout: 2 hours
stage: build
variables:
Expand Down
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ aliases:
- &build_default
docker:
- image: docker.pkg.github.com/clash-lang/clash-compiler/clash-ci-$GHC_VERSION:2021-02-08
- image: docker.pkg.github.com/clash-lang/clash-compiler/clash-ci-$GHC_VERSION:2021-03-18
# Read-only permissions
auth:
username: clash-lang-builder
Expand Down
3 changes: 1 addition & 2 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,8 @@ tests-8.10:
tests-9.0:
extends: .common-trigger
variables:
GHC_HEAD: "yes" # We need the HEAD overlay for now
GHC_VERSION: 9.0.1
CABAL_VERSION: 3.4.0.0-rc4
CABAL_VERSION: 3.4.0.0

# Tests run on shared runners:
haddock:
Expand Down
20 changes: 18 additions & 2 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ packages:
./benchmark/profiling/run
./clash-term

write-ghc-environment-files: always

-- index state, to go along with the cabal.project.freeze file. update the index
-- state by running `cabal update` twice and looking at the index state it
-- displays to you (as the second update will be a no-op)
index-state: 2021-02-25T05:27:39Z
index-state: 2021-03-18T06:58:19Z

-- For some reason the `clash-testsuite` executable fails to run without
-- this, as it cannot find the related library...
Expand Down Expand Up @@ -43,4 +45,18 @@ optional-packages:
./clash-cores

allow-newer:
brick:base
brick:base,
vector-binary-instances:base,
cryptohash-sha256:base

source-repository-package
type: git
location: https://github.com/kcsongor/generic-lens.git
tag: 8e1fc7dcf444332c474fca17110d4bc554db08c8
subdir: generic-lens-core

source-repository-package
type: git
location: https://github.com/kcsongor/generic-lens.git
tag: 8e1fc7dcf444332c474fca17110d4bc554db08c8
subdir: generic-lens
2 changes: 1 addition & 1 deletion clash-prelude/clash-prelude.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ Library
recursion-schemes >= 5.1 && < 5.3,
QuickCheck >= 2.7 && < 2.15,
reflection >= 2 && < 2.2,
singletons >= 1.0 && < 3.0,
singletons >= 2.0 && < 3.1,
template-haskell >= 2.12.0.0 && < 2.18,
th-abstraction >= 0.2.10 && < 0.5.0,
th-lift >= 0.7.0 && < 0.9,
Expand Down
17 changes: 5 additions & 12 deletions clash-prelude/src/Clash/Class/AutoReg/Internal.hs
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,8 @@ import Language.Haskell.TH.Lib
import Language.Haskell.TH.Ppr

import Control.Lens.Internal.TH (conAppsT)

#if MIN_VERSION_base(4,15,0)
-- | Return 'Name' contained in a 'TyVarBndr'.
bndrName :: TyVarBndr a -> Name
bndrName (PlainTV n _) = n
bndrName (KindedTV n _ _) = n
#else
-- | Return 'Name' contained in a 'TyVarBndr'.
bndrName :: TyVarBndr -> Name
bndrName (PlainTV n) = n
bndrName (KindedTV n _) = n
#if !(MIN_VERSION_th_abstraction(0,4,0))
import Control.Lens.Internal.TH (bndrName)
#endif

-- $setup
Expand Down Expand Up @@ -272,7 +263,9 @@ deriveAutoRegProduct tyInfo conInfo = go (constructorName conInfo) fieldInfos
tyNm = datatypeName tyInfo
tyVarBndrs = datatypeVars tyInfo

#if MIN_VERSION_th_abstraction(0,3,0)
#if MIN_VERSION_th_abstraction(0,4,0)
toTyVar = VarT . tvName
#elif MIN_VERSION_th_abstraction(0,3,0)
toTyVar = VarT . bndrName
#else
toTyVar t = case t of
Expand Down
2 changes: 1 addition & 1 deletion clash-prelude/src/Clash/Explicit/Signal/Delayed.hs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ import Prelude ((.), (<$>), (<*>), id, Num(..))
import Data.Coerce (coerce)
import Data.Kind (Type)
import Data.Proxy (Proxy (..))
import Data.Singletons.Prelude (Apply, TyFun, type (@@))
import Data.Singletons (Apply, TyFun, type (@@))
import GHC.TypeLits (KnownNat, Nat, type (+), type (^), type (*))

import Clash.Sized.Vector
Expand Down
6 changes: 3 additions & 3 deletions clash-prelude/src/Clash/Sized/RTree.hs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ import Data.Default.Class (Default (..))
import Data.Either (isLeft)
import Data.Foldable (toList)
import Data.Kind (Type)
import Data.Singletons.Prelude (Apply, TyFun, type (@@))
import Data.Singletons (Apply, TyFun, type (@@))
import Data.Proxy (Proxy (..))
import GHC.TypeLits (KnownNat, Nat, type (+), type (^), type (*))
import Language.Haskell.TH.Syntax (Lift(..))
Expand Down Expand Up @@ -85,7 +85,7 @@ import Clash.XException
>>> :set -XUndecidableInstances
>>> import Clash.Prelude
>>> import Data.Kind
>>> import Data.Singletons.Prelude (Apply, TyFun)
>>> import Data.Singletons (Apply, TyFun)
>>> import Data.Proxy
>>> data IIndex (f :: TyFun Nat Type) :: Type
>>> type instance Apply IIndex l = Index ((2^l)+1)
Expand Down Expand Up @@ -333,7 +333,7 @@ the form of 'dtfold':
@
{\-\# LANGUAGE UndecidableInstances \#-\}
import Data.Singletons.Prelude
import Data.Singletons
import Data.Proxy
data IIndex (f :: 'TyFun' Nat *) :: *
Expand Down
6 changes: 3 additions & 3 deletions clash-prelude/src/Clash/Sized/Vector.hs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ import Data.Default.Class (Default (..))
import qualified Data.Foldable as F
import Data.Kind (Type)
import Data.Proxy (Proxy (..))
import Data.Singletons.Prelude (TyFun,Apply,type (@@))
import Data.Singletons (TyFun,Apply,type (@@))
import GHC.TypeLits (CmpNat, KnownNat, Nat, type (+), type (-), type (*),
type (^), type (<=), natVal)
import GHC.Base (Int(I#),Int#,isTrue#)
Expand Down Expand Up @@ -2128,7 +2128,7 @@ lazyV = lazyV' (repeat ())
-- now correctly define /append'/:
--
-- @
-- import Data.Singletons.Prelude
-- import Data.Singletons
-- import Data.Proxy
--
-- data Append (m :: Nat) (a :: *) (f :: 'TyFun' Nat *) :: *
Expand Down Expand Up @@ -2258,7 +2258,7 @@ the form of 'dtfold':
@
{\-\# LANGUAGE UndecidableInstances \#-\}
import Data.Singletons.Prelude
import Data.Singletons
import Data.Proxy
data IIndex (f :: 'TyFun' Nat *) :: *
Expand Down
8 changes: 7 additions & 1 deletion tests/shouldwork/Basic/T1591.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,15 @@
module T1591 where

import Clash.Prelude
import Data.Singletons.Prelude

import Data.Singletons
import Data.Singletons.TH

#if MIN_VERSION_singletons(3,0,0)
import Prelude.Singletons
#else
import Data.Singletons.Prelude
#endif

$(singletons [d|
countStates :: Nat -> Nat -> Nat
Expand Down
4 changes: 2 additions & 2 deletions tests/shouldwork/RTree/TFold.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import Data.Kind (Type)

import Data.Proxy
#if MIN_VERSION_singletons(2,4,0)
import Data.Singletons.Prelude hiding (type (+))
import Data.Singletons hiding (type (+))
#else
import Data.Singletons.Prelude
import Data.Singletons
#endif

data IIndex (f :: TyFun Nat Type) :: Type
Expand Down
4 changes: 2 additions & 2 deletions tests/shouldwork/Vector/DFold.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ module DFold where
import Clash.Prelude
import Clash.Explicit.Testbench
#if MIN_VERSION_singletons(2,4,0)
import Data.Singletons.Prelude hiding (type (+))
import Data.Singletons hiding (type (+))
#else
import Data.Singletons.Prelude
import Data.Singletons
#endif
import Data.Proxy
import Data.Kind (Type)
Expand Down
4 changes: 2 additions & 2 deletions tests/shouldwork/Vector/DTFold.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ module DTFold where
import Clash.Prelude
import Clash.Explicit.Testbench
#if MIN_VERSION_singletons(2,4,0)
import Data.Singletons.Prelude hiding (type (+))
import Data.Singletons hiding (type (+))
#else
import Data.Singletons.Prelude
import Data.Singletons
#endif
import Data.Proxy
import Data.Kind (Type)
Expand Down
23 changes: 4 additions & 19 deletions testsuite/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,8 @@ import System.Directory
(createDirectoryIfMissing, removeDirectoryRecursive, getCurrentDirectory,
doesDirectoryExist, makeAbsolute)
import System.Environment
import System.Exit
(exitWith, ExitCode(ExitSuccess, ExitFailure))
import System.FilePath ((</>))
import System.Info
import System.Process (readCreateProcessWithExitCode, proc)
import GHC.Conc (numCapabilities)
import GHC.Stack
import GHC.IO.Unsafe (unsafePerformIO)
Expand Down Expand Up @@ -112,22 +109,10 @@ setClashEnvs :: HasCallStack => RunWith -> IO ()
setClashEnvs Global = setEnv "GHC_ENVIRONMENT" "-"
setClashEnvs Stack = pure ()
setClashEnvs Cabal = do
-- Make sure environment variable exists
let cp = proc "cabal" ["--write-ghc-environment-files=always", "v2-run", "--", "clash", "--help"]
(exitCode, stdout, stderr) <- readCreateProcessWithExitCode cp ""
case exitCode of
ExitSuccess -> do
binDir <- cabalClashBinDir
path <- getEnv "PATH"
setEnv "PATH" (binDir <> ":" <> path)
setCabalPackagePaths
ExitFailure _ -> do
putStrLn "'cabal run clash' failed"
putStrLn ">>> stdout:"
putStrLn stdout
putStrLn ">>> stderr:"
putStrLn stderr
exitWith exitCode
binDir <- cabalClashBinDir
path <- getEnv "PATH"
setEnv "PATH" (binDir <> ":" <> path)
setCabalPackagePaths

clashTestRoot
:: [[TestName] -> TestTree]
Expand Down
13 changes: 13 additions & 0 deletions testsuite/clash-testsuite.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ library
build-depends:
deepseq >=1.4 && <1.5,
concurrent-extra >=0.7 && <0.8,
singletons,
generic-lens,
interpolate,
mtl,
Expand All @@ -94,6 +95,18 @@ executable clash-testsuite
main-is: Main.hs
ghc-options: -threaded -with-rtsopts=-N

build-tool-depends:
clash-ghc:clash

build-depends:
containers,
clash-testsuite

if impl(ghc >= 9.0.0)
build-depends:
singletons,
singletons-base,
singletons-th
else
build-depends:
singletons < 3.0
3 changes: 2 additions & 1 deletion testsuite/src/Test/Tasty/Clash.hs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE TypeApplications #-}

module Test.Tasty.Clash where

Expand Down

0 comments on commit af46aaa

Please sign in to comment.