dev-haskell/json: bump up to 0.9.3
authorSergei Trofimovich <slyfox@gentoo.org>
Sat, 14 Dec 2019 20:08:52 +0000 (20:08 +0000)
committerSergei Trofimovich <slyfox@gentoo.org>
Sat, 14 Dec 2019 21:26:52 +0000 (21:26 +0000)
Package-Manager: Portage-2.3.81, Repoman-2.3.20
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
dev-haskell/json/Manifest
dev-haskell/json/files/json-0.9.3-ghc-8.8.patch [new file with mode: 0644]
dev-haskell/json/json-0.9.3.ebuild [new file with mode: 0644]

index 0763e7dbb70b43843feb3b871962e203d6476d52..99269fc1f1d770bba093e49e3540c545fd975b58 100644 (file)
@@ -1 +1,2 @@
 DIST json-0.9.1.tar.gz 22568 BLAKE2B b1c73771e24ccafb2019ffff61e392f2eec18768c4bdd09f1a5ee8275c92d8982cda3fab4d91222f726fae65324776c9e79ccd602dbd4ac9c435749d61a1015e SHA512 537257fed476683d0657c6474e465ca437e43e36b60ab132c0f584cece99a18d222ef9a33171543689ba5589434bc78cf2e0e5ff550804ff8969052d09430d57
+DIST json-0.9.3.tar.gz 22562 BLAKE2B 8947d2b4bea1ee86eea19e25b73b991d186274c7a6beaff09e8f346756e870d440c4511c599d6ee5f82df08975076e47f0f528cc03cabb5063fb768506b9a660 SHA512 836ae920ef19e0cff5b617a579090ea1d760e253513d3fb28c56650a1fa413c0bd852165be487c211a52be6246eac3241a97f729342223be10275917a34230a6
diff --git a/dev-haskell/json/files/json-0.9.3-ghc-8.8.patch b/dev-haskell/json/files/json-0.9.3-ghc-8.8.patch
new file mode 100644 (file)
index 0000000..d8dc402
--- /dev/null
@@ -0,0 +1,172 @@
+commit a0d8bcde5ab5329d11be8cd89c407e6aa0db83a4
+Author: Fumiaki Kinoshita <fumiexcel@gmail.com>
+Date:   Tue Apr 30 18:37:40 2019 +0900
+
+    Support GHC 8.8
+
+diff --git a/Text/JSON.hs b/Text/JSON.hs
+index f2e2618..6f80949 100644
+--- a/Text/JSON.hs
++++ b/Text/JSON.hs
+@@ -37,7 +37,7 @@ module Text.JSON (
+     -- ** Instance helpers
+   , makeObj, valFromObj
+   , JSKey(..), encJSDict, decJSDict
+-  
++
+   ) where
+ import Text.JSON.Types
+@@ -60,7 +60,7 @@ import qualified Data.Text as T
+ ------------------------------------------------------------------------
+--- | Decode a String representing a JSON value 
++-- | Decode a String representing a JSON value
+ -- (either an object, array, bool, number, null)
+ --
+ -- This is a superset of JSON, as types other than
+@@ -137,7 +137,9 @@ instance MonadPlus Result where
+ instance Monad Result where
+   return x      = Ok x
++#if !MIN_VERSION_base(4,13,0)
+   fail x        = Error x
++#endif
+   Ok a >>= f    = f a
+   Error x >>= _ = Error x
+@@ -199,7 +201,7 @@ instance JSON Ordering where
+   showJSON = encJSString show
+   readJSON = decJSString "Ordering" readOrd
+     where
+-     readOrd x = 
++     readOrd x =
+        case x of
+          "LT" -> return Prelude.LT
+          "EQ" -> return Prelude.EQ
+@@ -460,7 +462,7 @@ instance JSKey Int where
+ instance JSKey String where
+   toJSKey   = id
+   fromJSKey = Just
+-  
++
+ -- | Encode an association list as 'JSObject' value.
+ encJSDict :: (JSKey a, JSON b) => [(a,b)] -> JSValue
+ encJSDict v = makeObj [ (toJSKey x, showJSON y) | (x,y) <- v ]
+@@ -477,5 +479,3 @@ decJSDict l (JSObject o) = mapM rd (fromJSObject o)
+                                     "unable to read dict; invalid object key")
+ decJSDict l _ = mkError ("readJSON{"++l ++ "}: unable to read dict; expected JSON object")
+-
+-
+diff --git a/Text/JSON/String.hs b/Text/JSON/String.hs
+index 51463cd..67fdca8 100644
+--- a/Text/JSON/String.hs
++++ b/Text/JSON/String.hs
+@@ -1,7 +1,8 @@
++{-# LANGUAGE CPP #-}
+ -- | Basic support for working with JSON values.
+-module Text.JSON.String 
+-     ( 
++module Text.JSON.String
++     (
+        -- * Parsing
+        --
+        GetJSON
+@@ -35,6 +36,7 @@ import Text.JSON.Types (JSValue(..),
+                         JSObject, toJSObject, fromJSObject)
+ import Control.Monad (liftM, ap)
++import qualified Control.Monad.Fail as Fail
+ import Control.Applicative((<$>))
+ import qualified Control.Applicative as A
+ import Data.Char (isSpace, isDigit, digitToInt)
+@@ -52,9 +54,14 @@ instance A.Applicative GetJSON where
+   pure  = return
+   (<*>) = ap
++instance Fail.MonadFail GetJSON where
++  fail x          = GetJSON (\_ -> Left x)
++
+ instance Monad GetJSON where
+   return x        = GetJSON (\s -> Right (x,s))
+-  fail x          = GetJSON (\_ -> Left x)
++#if !MIN_VERSION_base(4,13,0)
++  fail = Fail.fail
++#endif
+   GetJSON m >>= f = GetJSON (\s -> case m s of
+                                      Left err -> Left err
+                                      Right (a,s1) -> un (f a) s1)
+@@ -93,7 +100,7 @@ tryJSNull k = do
+   xs <- getInput
+   case xs of
+     'n':'u':'l':'l':xs1 -> setInput xs1 >> return JSNull
+-    _ -> k 
++    _ -> k
+ -- | Read the JSON Bool type
+ readJSBool :: GetJSON JSValue
+@@ -111,8 +118,8 @@ readJSString = do
+   case x of
+        '"' : cs -> parse [] cs
+        _        -> fail $ "Malformed JSON: expecting string: " ++ context x
+- where 
+-  parse rs cs = 
++ where
++  parse rs cs =
+     case cs of
+       '\\' : c : ds -> esc rs c ds
+       '"'  : ds     -> do setInput ds
+@@ -153,22 +160,22 @@ readJSRational = do
+     '-' : ds -> negate <$> pos ds
+     _        -> pos cs
+-  where 
++  where
+    pos []     = fail $ "Unable to parse JSON Rational: " ++ context []
+    pos (c:cs) =
+      case c of
+        '0' -> frac 0 cs
+-       _ 
++       _
+         | not (isDigit c) -> fail $ "Unable to parse JSON Rational: " ++ context cs
+         | otherwise -> readDigits (digitToIntI c) cs
+    readDigits acc [] = frac (fromInteger acc) []
+    readDigits acc (x:xs)
+-    | isDigit x = let acc' = 10*acc + digitToIntI x in 
++    | isDigit x = let acc' = 10*acc + digitToIntI x in
+                       acc' `seq` readDigits acc' xs
+     | otherwise = frac (fromInteger acc) (x:xs)
+-   frac n ('.' : ds) = 
++   frac n ('.' : ds) =
+        case span isDigit ds of
+          ([],_) -> setInput ds >> return n
+          (as,bs) -> let x = read as :: Integer
+@@ -320,15 +327,15 @@ showJSRational :: Rational -> ShowS
+ showJSRational r = showJSRational' False r
+ showJSRational' :: Bool -> Rational -> ShowS
+-showJSRational' asFloat r 
++showJSRational' asFloat r
+  | denominator r == 1      = shows $ numerator r
+  | isInfinite x || isNaN x = showJSNull
+  | asFloat                 = shows xf
+  | otherwise               = shows x
+- where 
++ where
+    x :: Double
+    x = realToFrac r
+-   
++
+    xf :: Float
+    xf = realToFrac r
+@@ -382,4 +389,3 @@ encJSString jss ss = go (fromJSString jss)
+       | x < '\x1000' -> 'u' : '0' : hexxs
+       | otherwise    -> 'u' : hexxs
+       where hexxs = showHex (fromEnum x) xs
+-
diff --git a/dev-haskell/json/json-0.9.3.ebuild b/dev-haskell/json/json-0.9.3.ebuild
new file mode 100644 (file)
index 0000000..ce29d26
--- /dev/null
@@ -0,0 +1,37 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# ebuild generated by hackport 0.6.9999
+
+CABAL_FEATURES="lib profile haddock hoogle hscolour"
+inherit haskell-cabal
+
+DESCRIPTION="Support for serialising Haskell to and from JSON"
+HOMEPAGE="http://hackage.haskell.org/package/json"
+SRC_URI="https://hackage.haskell.org/package/${P}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0/${PV}"
+KEYWORDS="~amd64 ~ppc64 ~x86 ~amd64-linux"
+IUSE="mapdict +parsec +pretty"
+
+RDEPEND="dev-haskell/mtl:=[profile?]
+       >=dev-haskell/syb-0.3.3:=[profile?]
+       dev-haskell/text:=[profile?]
+       >=dev-lang/ghc-7.4.1:=
+       parsec? ( dev-haskell/parsec:=[profile?] )
+"
+DEPEND="${RDEPEND}
+       >=dev-haskell/cabal-1.6
+"
+
+PATCHES=( "${FILESDIR}"/${PN}-0.9.3-ghc-8.8.patch )
+
+src_configure() {
+       haskell-cabal_src_configure \
+               $(cabal_flag mapdict mapdict) \
+               $(cabal_flag parsec parsec) \
+               $(cabal_flag pretty pretty)
+}