ccef06da41
Was able to reuse many of the android patches, but several had to be re-done. On Android, ghc is a stage2 build, so can compile, but not run TH code. But debian's ghc on armel cannot even compile TH code, so it has to be patched out. Some haskell packages have been updated to new versions, including yesod and DAV, and their patches had to be redone. The Makefile now has 2 new targets. The first is run on a companion x86 system to do the build and get TH splices. Then the second target is run the same source tree on the arm system to build without needing TH. This commit was sponsored by Svenne Krap.
175 lines
5.8 KiB
Diff
175 lines
5.8 KiB
Diff
From 2b5fa1851a84f58b43e7c4224bd5695a32a80de9 Mon Sep 17 00:00:00 2001
|
|
From: dummy <dummy@example.com>
|
|
Date: Wed, 18 Dec 2013 03:27:54 +0000
|
|
Subject: [PATCH] avoid TH
|
|
|
|
---
|
|
lens.cabal | 13 +------------
|
|
src/Control/Lens.hs | 4 ++--
|
|
src/Control/Lens/Internal/Exception.hs | 30 ------------------------------
|
|
src/Control/Lens/Prism.hs | 2 --
|
|
4 files changed, 3 insertions(+), 46 deletions(-)
|
|
|
|
diff --git a/lens.cabal b/lens.cabal
|
|
index 8477892..a6ac7a5 100644
|
|
--- a/lens.cabal
|
|
+++ b/lens.cabal
|
|
@@ -10,7 +10,7 @@ stability: provisional
|
|
homepage: http://github.com/ekmett/lens/
|
|
bug-reports: http://github.com/ekmett/lens/issues
|
|
copyright: Copyright (C) 2012-2013 Edward A. Kmett
|
|
-build-type: Custom
|
|
+build-type: Simple
|
|
tested-with: GHC == 7.6.3
|
|
synopsis: Lenses, Folds and Traversals
|
|
description:
|
|
@@ -173,7 +173,6 @@ library
|
|
containers >= 0.4.0 && < 0.6,
|
|
distributive >= 0.3 && < 1,
|
|
filepath >= 1.2.0.0 && < 1.4,
|
|
- generic-deriving >= 1.4 && < 1.7,
|
|
ghc-prim,
|
|
hashable >= 1.1.2.3 && < 1.3,
|
|
MonadCatchIO-transformers >= 0.3 && < 0.4,
|
|
@@ -235,14 +234,12 @@ library
|
|
Control.Lens.Review
|
|
Control.Lens.Setter
|
|
Control.Lens.Simple
|
|
- Control.Lens.TH
|
|
Control.Lens.Traversal
|
|
Control.Lens.Tuple
|
|
Control.Lens.Type
|
|
Control.Lens.Wrapped
|
|
Control.Lens.Zipper
|
|
Control.Lens.Zoom
|
|
- Control.Monad.Error.Lens
|
|
Control.Parallel.Strategies.Lens
|
|
Control.Seq.Lens
|
|
Data.Array.Lens
|
|
@@ -266,12 +263,8 @@ library
|
|
Data.Typeable.Lens
|
|
Data.Vector.Lens
|
|
Data.Vector.Generic.Lens
|
|
- Generics.Deriving.Lens
|
|
- GHC.Generics.Lens
|
|
System.Exit.Lens
|
|
System.FilePath.Lens
|
|
- System.IO.Error.Lens
|
|
- Language.Haskell.TH.Lens
|
|
Numeric.Lens
|
|
|
|
if flag(safe)
|
|
@@ -370,7 +363,6 @@ test-suite doctests
|
|
deepseq,
|
|
doctest >= 0.9.1,
|
|
filepath,
|
|
- generic-deriving,
|
|
mtl,
|
|
nats,
|
|
parallel,
|
|
@@ -396,7 +388,6 @@ benchmark plated
|
|
comonad,
|
|
criterion,
|
|
deepseq,
|
|
- generic-deriving,
|
|
lens,
|
|
transformers
|
|
|
|
@@ -431,7 +422,6 @@ benchmark unsafe
|
|
comonads-fd,
|
|
criterion,
|
|
deepseq,
|
|
- generic-deriving,
|
|
lens,
|
|
transformers
|
|
|
|
@@ -448,6 +438,5 @@ benchmark zipper
|
|
comonads-fd,
|
|
criterion,
|
|
deepseq,
|
|
- generic-deriving,
|
|
lens,
|
|
transformers
|
|
diff --git a/src/Control/Lens.hs b/src/Control/Lens.hs
|
|
index f7c6548..125153e 100644
|
|
--- a/src/Control/Lens.hs
|
|
+++ b/src/Control/Lens.hs
|
|
@@ -59,7 +59,7 @@ module Control.Lens
|
|
, module Control.Lens.Review
|
|
, module Control.Lens.Setter
|
|
, module Control.Lens.Simple
|
|
-#ifndef DISABLE_TEMPLATE_HASKELL
|
|
+#if 0
|
|
, module Control.Lens.TH
|
|
#endif
|
|
, module Control.Lens.Traversal
|
|
@@ -89,7 +89,7 @@ import Control.Lens.Reified
|
|
import Control.Lens.Review
|
|
import Control.Lens.Setter
|
|
import Control.Lens.Simple
|
|
-#ifndef DISABLE_TEMPLATE_HASKELL
|
|
+#if 0
|
|
import Control.Lens.TH
|
|
#endif
|
|
import Control.Lens.Traversal
|
|
diff --git a/src/Control/Lens/Internal/Exception.hs b/src/Control/Lens/Internal/Exception.hs
|
|
index 387203e..bb1ca10 100644
|
|
--- a/src/Control/Lens/Internal/Exception.hs
|
|
+++ b/src/Control/Lens/Internal/Exception.hs
|
|
@@ -128,18 +128,6 @@ class Handleable e (m :: * -> *) (h :: * -> *) | h -> e m where
|
|
handler_ l = handler l . const
|
|
{-# INLINE handler_ #-}
|
|
|
|
-instance Handleable SomeException IO Exception.Handler where
|
|
- handler = handlerIO
|
|
-
|
|
-instance Handleable SomeException m (CatchIO.Handler m) where
|
|
- handler = handlerCatchIO
|
|
-
|
|
-handlerIO :: forall a r. Getting (First a) SomeException a -> (a -> IO r) -> Exception.Handler r
|
|
-handlerIO l f = reify (preview l) $ \ (_ :: Proxy s) -> Exception.Handler (\(Handling a :: Handling a s IO) -> f a)
|
|
-
|
|
-handlerCatchIO :: forall m a r. Getting (First a) SomeException a -> (a -> m r) -> CatchIO.Handler m r
|
|
-handlerCatchIO l f = reify (preview l) $ \ (_ :: Proxy s) -> CatchIO.Handler (\(Handling a :: Handling a s m) -> f a)
|
|
-
|
|
------------------------------------------------------------------------------
|
|
-- Helpers
|
|
------------------------------------------------------------------------------
|
|
@@ -159,21 +147,3 @@ supply = unsafePerformIO $ newIORef 0
|
|
-- | This permits the construction of an \"impossible\" 'Control.Exception.Handler' that matches only if some function does.
|
|
newtype Handling a s (m :: * -> *) = Handling a
|
|
|
|
--- the m parameter exists simply to break the Typeable1 pattern, so we can provide this without overlap.
|
|
--- here we simply generate a fresh TypeRep so we'll fail to compare as equal to any other TypeRep.
|
|
-instance Typeable (Handling a s m) where
|
|
- typeOf _ = unsafePerformIO $ do
|
|
- i <- atomicModifyIORef supply $ \a -> let a' = a + 1 in a' `seq` (a', a)
|
|
- return $ mkTyConApp (mkTyCon3 "lens" "Control.Lens.Internal.Exception" ("Handling" ++ show i)) []
|
|
- {-# INLINE typeOf #-}
|
|
-
|
|
--- The @Handling@ wrapper is uninteresting, and should never be thrown, so you won't get much benefit here.
|
|
-instance Show (Handling a s m) where
|
|
- showsPrec d _ = showParen (d > 10) $ showString "Handling ..."
|
|
- {-# INLINE showsPrec #-}
|
|
-
|
|
-instance Reifies s (SomeException -> Maybe a) => Exception (Handling a s m) where
|
|
- toException _ = SomeException HandlingException
|
|
- {-# INLINE toException #-}
|
|
- fromException = fmap Handling . reflect (Proxy :: Proxy s)
|
|
- {-# INLINE fromException #-}
|
|
diff --git a/src/Control/Lens/Prism.hs b/src/Control/Lens/Prism.hs
|
|
index 45b5cfe..88c7ff9 100644
|
|
--- a/src/Control/Lens/Prism.hs
|
|
+++ b/src/Control/Lens/Prism.hs
|
|
@@ -53,8 +53,6 @@ import Unsafe.Coerce
|
|
import Data.Profunctor.Unsafe
|
|
#endif
|
|
|
|
-{-# ANN module "HLint: ignore Use camelCase" #-}
|
|
-
|
|
-- $setup
|
|
-- >>> :set -XNoOverloadedStrings
|
|
-- >>> import Control.Lens
|
|
--
|
|
1.8.5.1
|
|
|