summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2019-12-14 20:08:52 +0000
committerSergei Trofimovich <slyfox@gentoo.org>2019-12-14 21:26:52 +0000
commitd5dbd873fae620fe8f73c2946ae2a5d75768123f (patch)
tree8f4f5a5f9c9918c01838350f650c578f24957a57 /dev-haskell/json
parentdev-haskell/language-ecmascript: bump up to 0.17.1.0-r2 (diff)
downloadgentoo-d5dbd873fae620fe8f73c2946ae2a5d75768123f.tar.gz
gentoo-d5dbd873fae620fe8f73c2946ae2a5d75768123f.tar.bz2
gentoo-d5dbd873fae620fe8f73c2946ae2a5d75768123f.zip
dev-haskell/json: bump up to 0.9.3
Package-Manager: Portage-2.3.81, Repoman-2.3.20 Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to 'dev-haskell/json')
-rw-r--r--dev-haskell/json/Manifest1
-rw-r--r--dev-haskell/json/files/json-0.9.3-ghc-8.8.patch172
-rw-r--r--dev-haskell/json/json-0.9.3.ebuild37
3 files changed, 210 insertions, 0 deletions
diff --git a/dev-haskell/json/Manifest b/dev-haskell/json/Manifest
index 0763e7dbb70b..99269fc1f1d7 100644
--- a/dev-haskell/json/Manifest
+++ b/dev-haskell/json/Manifest
@@ -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
index 000000000000..d8dc402ae19b
--- /dev/null
+++ b/dev-haskell/json/files/json-0.9.3-ghc-8.8.patch
@@ -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
index 000000000000..ce29d2693235
--- /dev/null
+++ b/dev-haskell/json/json-0.9.3.ebuild
@@ -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)
+}