diff --git a/clash-lib/clash-lib.cabal b/clash-lib/clash-lib.cabal index c761bb4a45..2967b51818 100644 --- a/clash-lib/clash-lib.cabal +++ b/clash-lib/clash-lib.cabal @@ -346,9 +346,9 @@ executable v16-upgrade-primitives yaml, bytestring, clash-lib, + text, containers, directory, - stringsearch, Glob GHC-Options: -Wall -Wcompat default-language: Haskell2010 diff --git a/clash-lib/tools/v16-upgrade-primitives.hs b/clash-lib/tools/v16-upgrade-primitives.hs index aae23fad47..adb8d59809 100644 --- a/clash-lib/tools/v16-upgrade-primitives.hs +++ b/clash-lib/tools/v16-upgrade-primitives.hs @@ -9,15 +9,16 @@ module Main where #if MIN_VERSION_aeson(2,0,0) import qualified Data.Aeson.KeyMap as Aeson -import Data.ByteString.Lazy.Search (replace) import Data.String (IsString) #endif -import qualified Data.Aeson.Extra as AesonExtra import qualified Data.Aeson as Aeson -import qualified Data.Yaml as Yaml +import qualified Data.Aeson.Extra as AesonExtra import qualified Data.ByteString.Lazy as ByteString import qualified Data.Set as Set +import qualified Data.Text.Lazy as LazyText +import qualified Data.Text.Lazy.Encoding as LazyText +import qualified Data.Yaml as Yaml import Control.Monad (forM_, when) import Data.ByteString.Lazy (ByteString) @@ -89,9 +90,10 @@ customSortOutput x = case x of Just val -> Aeson.insert kNew val (Aeson.delete kOld obj) removeTempKey :: ByteString -> ByteString -removeTempKey inp = foldl go inp keySortingRenames +removeTempKey inp = + LazyText.encodeUtf8 (foldl go (LazyText.decodeUtf8 inp) keySortingRenames) where - go bs (orig,temp) = replace (ByteString.toStrict temp) orig bs + go txt (orig,temp) = LazyText.replace temp orig txt #else -- < aeson-2.0 stores keys in HashMaps, whose order we can't possibly predict. removeTempKey :: ByteString -> ByteString