update to arm-linux-androideabi-4.8 and current cabal
This commit is contained in:
parent
ba204c6e8e
commit
d128d1aae6
10 changed files with 385 additions and 46 deletions
4
Makefile
4
Makefile
|
@ -190,9 +190,9 @@ android: Build/EvilSplicer
|
|||
# Cabal cannot cross compile with custom build type, so workaround.
|
||||
sed -i 's/Build-type: Custom/Build-type: Simple/' tmp/androidtree/git-annex.cabal
|
||||
if [ ! -e tmp/androidtree/dist/setup/setup ]; then \
|
||||
cd tmp/androidtree && $$HOME/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/bin/cabal configure -fAndroid $(ANDROID_FLAGS); \
|
||||
cd tmp/androidtree && $$HOME/.ghc/android-14/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/cabal configure -fAndroid $(ANDROID_FLAGS); \
|
||||
fi
|
||||
cd tmp/androidtree && $$HOME/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/bin/cabal build
|
||||
cd tmp/androidtree && $$HOME/.ghc/android-14/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/cabal build
|
||||
|
||||
adb:
|
||||
ANDROID_FLAGS="-Production" $(MAKE) android
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# and builds the Android app.
|
||||
|
||||
# Add Android cross-compiler to PATH (as installed by ghc-android)
|
||||
ANDROID_CROSS_COMPILER?=$(HOME)/.ghc/android-14/arm-linux-androideabi-4.7/bin
|
||||
ANDROID_CROSS_COMPILER?=$(HOME)/.ghc/android-14/arm-linux-androideabi-4.8/bin
|
||||
PATH:=$(ANDROID_CROSS_COMPILER):$(PATH)
|
||||
|
||||
# Paths to the Android SDK and NDK.
|
||||
|
|
|
@ -30,7 +30,7 @@ rm -rf adt-bundle-linux-x86/eclipse
|
|||
|
||||
# The git-annex android Makefile needs this cc symlink.
|
||||
ln -s arm-linux-androideabi-gcc \
|
||||
$HOME/.ghc/android-14/arm-linux-androideabi-4.7/bin/cc
|
||||
$HOME/.ghc/android-14/arm-linux-androideabi-4.8/bin/cc
|
||||
|
||||
cd
|
||||
git clone git://git-annex.branchable.com/ git-annex
|
||||
|
|
|
@ -2,5 +2,5 @@
|
|||
# Removes all currently installed cross-compiled haskell packages
|
||||
# except those part of ghc.
|
||||
# Useful if the build failed.
|
||||
rm -f $(grep -l $HOME/.ghc/android-14/arm-linux-androideabi-4.7/.cabal/lib/ $HOME/.ghc/android-14/arm-linux-androideabi-4.7/lib/*-ghc-*/package.conf.d/*.conf)
|
||||
$HOME/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/bin/ghc-pkg recache
|
||||
rm -f $(grep -l $HOME/.ghc/android-14/arm-linux-androideabi-4.8/.cabal/lib/ $HOME/.ghc/android-14/arm-linux-androideabi-4.8/lib/*-ghc-*/package.conf.d/*.conf)
|
||||
$HOME/.ghc/android-14/arm-linux-androideabi-4.8/arm-linux-androideabi/bin/ghc-pkg recache
|
||||
|
|
|
@ -0,0 +1,235 @@
|
|||
From f6ed5c3093111ffe0276f5b5bb6241783611ab1c Mon Sep 17 00:00:00 2001
|
||||
From: androidbuilder <androidbuilder@example.com>
|
||||
Date: Mon, 11 Nov 2013 01:54:25 +0000
|
||||
Subject: [PATCH] hack to build
|
||||
|
||||
---
|
||||
Crypto/Number/Basic.hs | 17 -----------------
|
||||
Crypto/Number/ModArithmetic.hs | 29 -----------------------------
|
||||
Crypto/Number/Prime.hs | 18 ------------------
|
||||
crypto-numbers.cabal | 2 +-
|
||||
4 files changed, 1 insertion(+), 65 deletions(-)
|
||||
|
||||
diff --git a/Crypto/Number/Basic.hs b/Crypto/Number/Basic.hs
|
||||
index af03052..5de8518 100644
|
||||
--- a/Crypto/Number/Basic.hs
|
||||
+++ b/Crypto/Number/Basic.hs
|
||||
@@ -1,8 +1,5 @@
|
||||
{-# LANGUAGE BangPatterns #-}
|
||||
{-# LANGUAGE CPP #-}
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
-{-# LANGUAGE UnboxedTuples #-}
|
||||
-#endif
|
||||
-- |
|
||||
-- Module : Crypto.Number.Basic
|
||||
-- License : BSD-style
|
||||
@@ -17,11 +14,7 @@ module Crypto.Number.Basic
|
||||
, areEven
|
||||
) where
|
||||
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
-import GHC.Integer.GMP.Internals
|
||||
-#else
|
||||
import Data.Bits
|
||||
-#endif
|
||||
|
||||
-- | sqrti returns two integer (l,b) so that l <= sqrt i <= b
|
||||
-- the implementation is quite naive, use an approximation for the first number
|
||||
@@ -60,25 +53,16 @@ sqrti i
|
||||
-- gcde 'a' 'b' find (x,y,gcd(a,b)) where ax + by = d
|
||||
--
|
||||
gcde :: Integer -> Integer -> (Integer, Integer, Integer)
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
-gcde a b = (s, t, g)
|
||||
- where (# g, s #) = gcdExtInteger a b
|
||||
- t = (g - s * a) `div` b
|
||||
-#else
|
||||
gcde a b = if d < 0 then (-x,-y,-d) else (x,y,d) where
|
||||
(d, x, y) = f (a,1,0) (b,0,1)
|
||||
f t (0, _, _) = t
|
||||
f (a', sa, ta) t@(b', sb, tb) =
|
||||
let (q, r) = a' `divMod` b' in
|
||||
f t (r, sa - (q * sb), ta - (q * tb))
|
||||
-#endif
|
||||
|
||||
-- | get the extended GCD of two integer using the extended binary algorithm (HAC 14.61)
|
||||
-- get (x,y,d) where d = gcd(a,b) and x,y satisfying ax + by = d
|
||||
gcde_binary :: Integer -> Integer -> (Integer, Integer, Integer)
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
-gcde_binary = gcde
|
||||
-#else
|
||||
gcde_binary a' b'
|
||||
| b' == 0 = (1,0,a')
|
||||
| a' >= b' = compute a' b'
|
||||
@@ -102,7 +86,6 @@ gcde_binary a' b'
|
||||
in if u2 >= v2
|
||||
then loop g x y (u2 - v2) v2 (a2 - c2) (b2 - d2) c2 d2
|
||||
else loop g x y u2 (v2 - u2) a2 b2 (c2 - a2) (d2 - b2)
|
||||
-#endif
|
||||
|
||||
-- | check if a list of integer are all even
|
||||
areEven :: [Integer] -> Bool
|
||||
diff --git a/Crypto/Number/ModArithmetic.hs b/Crypto/Number/ModArithmetic.hs
|
||||
index 031f477..38b22b7 100644
|
||||
--- a/Crypto/Number/ModArithmetic.hs
|
||||
+++ b/Crypto/Number/ModArithmetic.hs
|
||||
@@ -26,12 +26,8 @@ module Crypto.Number.ModArithmetic
|
||||
import Control.Exception (throw, Exception)
|
||||
import Data.Typeable
|
||||
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
-import GHC.Integer.GMP.Internals
|
||||
-#else
|
||||
import Crypto.Number.Basic (gcde_binary)
|
||||
import Data.Bits
|
||||
-#endif
|
||||
|
||||
-- | Raised when two numbers are supposed to be coprimes but are not.
|
||||
data CoprimesAssertionError = CoprimesAssertionError
|
||||
@@ -52,13 +48,7 @@ expSafe :: Integer -- ^ base
|
||||
-> Integer -- ^ exponant
|
||||
-> Integer -- ^ modulo
|
||||
-> Integer -- ^ result
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
-expSafe b e m
|
||||
- | odd m = powModSecInteger b e m
|
||||
- | otherwise = powModInteger b e m
|
||||
-#else
|
||||
expSafe = exponentiation
|
||||
-#endif
|
||||
|
||||
-- | Compute the modular exponentiation of base^exponant using
|
||||
-- the fastest algorithm without any consideration for
|
||||
@@ -71,11 +61,7 @@ expFast :: Integer -- ^ base
|
||||
-> Integer -- ^ modulo
|
||||
-> Integer -- ^ result
|
||||
expFast =
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
- powModInteger
|
||||
-#else
|
||||
exponentiation
|
||||
-#endif
|
||||
|
||||
-- note on exponentiation: 0^0 is treated as 1 for mimicking the standard library;
|
||||
-- the mathematic debate is still open on whether or not this is true, but pratically
|
||||
@@ -84,22 +70,15 @@ expFast =
|
||||
-- | exponentiation_rtl_binary computes modular exponentiation as b^e mod m
|
||||
-- using the right-to-left binary exponentiation algorithm (HAC 14.79)
|
||||
exponentiation_rtl_binary :: Integer -> Integer -> Integer -> Integer
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
-exponentiation_rtl_binary = expSafe
|
||||
-#else
|
||||
exponentiation_rtl_binary 0 0 m = 1 `mod` m
|
||||
exponentiation_rtl_binary b e m = loop e b 1
|
||||
where sq x = (x * x) `mod` m
|
||||
loop !0 _ !a = a `mod` m
|
||||
loop !i !s !a = loop (i `shiftR` 1) (sq s) (if odd i then a * s else a)
|
||||
-#endif
|
||||
|
||||
-- | exponentiation computes modular exponentiation as b^e mod m
|
||||
-- using repetitive squaring.
|
||||
exponentiation :: Integer -> Integer -> Integer -> Integer
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
-exponentiation = expSafe
|
||||
-#else
|
||||
exponentiation b e m
|
||||
| b == 1 = b
|
||||
| e == 0 = 1
|
||||
@@ -107,7 +86,6 @@ exponentiation b e m
|
||||
| even e = let p = (exponentiation b (e `div` 2) m) `mod` m
|
||||
in (p^(2::Integer)) `mod` m
|
||||
| otherwise = (b * exponentiation b (e-1) m) `mod` m
|
||||
-#endif
|
||||
|
||||
--{-# DEPRECATED exponantiation_rtl_binary "typo in API name it's called exponentiation_rtl_binary #-}
|
||||
exponantiation_rtl_binary :: Integer -> Integer -> Integer -> Integer
|
||||
@@ -119,17 +97,10 @@ exponantiation = exponentiation
|
||||
|
||||
-- | inverse computes the modular inverse as in g^(-1) mod m
|
||||
inverse :: Integer -> Integer -> Maybe Integer
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
-inverse g m
|
||||
- | r == 0 = Nothing
|
||||
- | otherwise = Just r
|
||||
- where r = recipModInteger g m
|
||||
-#else
|
||||
inverse g m
|
||||
| d > 1 = Nothing
|
||||
| otherwise = Just (x `mod` m)
|
||||
where (x,_,d) = gcde_binary g m
|
||||
-#endif
|
||||
|
||||
-- | Compute the modular inverse of 2 coprime numbers.
|
||||
-- This is equivalent to inverse except that the result
|
||||
diff --git a/Crypto/Number/Prime.hs b/Crypto/Number/Prime.hs
|
||||
index 2060f4d..61d37c0 100644
|
||||
--- a/Crypto/Number/Prime.hs
|
||||
+++ b/Crypto/Number/Prime.hs
|
||||
@@ -1,8 +1,6 @@
|
||||
{-# LANGUAGE CPP #-}
|
||||
{-# LANGUAGE BangPatterns #-}
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
{-# LANGUAGE MagicHash #-}
|
||||
-#endif
|
||||
-- |
|
||||
-- Module : Crypto.Number.Prime
|
||||
-- License : BSD-style
|
||||
@@ -27,12 +25,7 @@ import Crypto.Number.Generate
|
||||
import Crypto.Number.Basic (sqrti, gcde_binary)
|
||||
import Crypto.Number.ModArithmetic (exponantiation)
|
||||
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
-import GHC.Integer.GMP.Internals
|
||||
-import GHC.Base
|
||||
-#else
|
||||
import Data.Bits
|
||||
-#endif
|
||||
|
||||
-- | returns if the number is probably prime.
|
||||
-- first a list of small primes are implicitely tested for divisibility,
|
||||
@@ -75,21 +68,11 @@ findPrimeFromWith rng prop !n
|
||||
-- | find a prime from a starting point with no specific property.
|
||||
findPrimeFrom :: CPRG g => g -> Integer -> (Integer, g)
|
||||
findPrimeFrom rng n =
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
- (nextPrimeInteger n, rng)
|
||||
-#else
|
||||
findPrimeFromWith rng (\g _ -> (True, g)) n
|
||||
-#endif
|
||||
|
||||
-- | Miller Rabin algorithm return if the number is probably prime or composite.
|
||||
-- the tries parameter is the number of recursion, that determines the accuracy of the test.
|
||||
primalityTestMillerRabin :: CPRG g => g -> Int -> Integer -> (Bool, g)
|
||||
-#if MIN_VERSION_integer_gmp(0,5,1)
|
||||
-primalityTestMillerRabin rng (I# tries) !n =
|
||||
- case testPrimeInteger n tries of
|
||||
- 0# -> (False, rng)
|
||||
- _ -> (True, rng)
|
||||
-#else
|
||||
primalityTestMillerRabin rng tries !n
|
||||
| n <= 3 = error "Miller-Rabin requires tested value to be > 3"
|
||||
| even n = (False, rng)
|
||||
@@ -126,7 +109,6 @@ primalityTestMillerRabin rng tries !n
|
||||
| x2 == 1 = False
|
||||
| x2 /= nm1 = loop' ws ((x2*x2) `mod` n) (r+1)
|
||||
| otherwise = loop ws
|
||||
-#endif
|
||||
|
||||
{-
|
||||
n < z -> witness to test
|
||||
diff --git a/crypto-numbers.cabal b/crypto-numbers.cabal
|
||||
index 05c00c1..8da5e2a 100644
|
||||
--- a/crypto-numbers.cabal
|
||||
+++ b/crypto-numbers.cabal
|
||||
@@ -15,7 +15,7 @@ Extra-Source-Files: Tests/*.hs
|
||||
|
||||
Flag integer-gmp
|
||||
Description: Are we using integer-gmp?
|
||||
- Default: True
|
||||
+ Default: False
|
||||
|
||||
Library
|
||||
Build-Depends: base >= 4 && < 5
|
||||
--
|
||||
1.7.10.4
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
From cb5252db1a0d515da69d9167a8b2facd839940b2 Mon Sep 17 00:00:00 2001
|
||||
From: androidbuilder <androidbuilder@example.com>
|
||||
Date: Mon, 11 Nov 2013 02:29:06 +0000
|
||||
Subject: [PATCH] fix build with new ghc
|
||||
|
||||
---
|
||||
src/Language/JavaScript/Parser/Lexer.hs | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/Language/JavaScript/Parser/Lexer.hs b/src/Language/JavaScript/Parser/Lexer.hs
|
||||
index 79fa9c5..fa96e29 100644
|
||||
--- a/src/Language/JavaScript/Parser/Lexer.hs
|
||||
+++ b/src/Language/JavaScript/Parser/Lexer.hs
|
||||
@@ -712,7 +712,7 @@ alex_scan_tkn user orig_input len input s last_acc =
|
||||
(offset) = (base +# ord_c)
|
||||
(check) = alexIndexInt16OffAddr alex_check offset
|
||||
|
||||
- (new_s) = if (offset >=# 0#) && (check ==# ord_c)
|
||||
+ (new_s) = if (tagToEnum# (offset >=# 0#)) && (tagToEnum# (check ==# ord_c))
|
||||
then alexIndexInt16OffAddr alex_table offset
|
||||
else alexIndexInt16OffAddr alex_deflt s
|
||||
in
|
||||
--
|
||||
1.7.10.4
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
From 28e6a6599ee91e15aa7b2f9d25433490f192f22e Mon Sep 17 00:00:00 2001
|
||||
From: foo <foo@bar>
|
||||
Date: Sat, 21 Sep 2013 23:17:29 +0000
|
||||
Subject: [PATCH] remove IPv6 stuff
|
||||
From e1a2f80f6bec25921ab645a0aaf1c6422a8917ab Mon Sep 17 00:00:00 2001
|
||||
From: dummy <dummy@example.com>
|
||||
Date: Mon, 11 Nov 2013 01:06:58 +0000
|
||||
Subject: [PATCH] fix
|
||||
|
||||
---
|
||||
Network/Socks5/Command.hs | 8 +-------
|
||||
|
@ -12,10 +12,10 @@ Subject: [PATCH] remove IPv6 stuff
|
|||
5 files changed, 2 insertions(+), 28 deletions(-)
|
||||
|
||||
diff --git a/Network/Socks5/Command.hs b/Network/Socks5/Command.hs
|
||||
index 8ce06ec..222d954 100644
|
||||
index db95fbd..fdba5ec 100644
|
||||
--- a/Network/Socks5/Command.hs
|
||||
+++ b/Network/Socks5/Command.hs
|
||||
@@ -12,7 +12,6 @@ module Network.Socks5.Command
|
||||
@@ -13,7 +13,6 @@ module Network.Socks5.Command
|
||||
, Connect(..)
|
||||
, Command(..)
|
||||
, connectIPV4
|
||||
|
@ -23,7 +23,7 @@ index 8ce06ec..222d954 100644
|
|||
, connectDomainName
|
||||
-- * lowlevel interface
|
||||
, rpc
|
||||
@@ -28,7 +27,7 @@ import qualified Data.ByteString as B
|
||||
@@ -29,7 +28,7 @@ import qualified Data.ByteString as B
|
||||
import qualified Data.ByteString.Char8 as BC
|
||||
import Data.Serialize
|
||||
|
||||
|
@ -32,7 +32,7 @@ index 8ce06ec..222d954 100644
|
|||
import Network.Socket.ByteString
|
||||
|
||||
import Network.Socks5.Types
|
||||
@@ -64,11 +63,6 @@ connectIPV4 socket hostaddr port = onReply <$> rpc_ socket (Connect $ SocksAddre
|
||||
@@ -65,11 +64,6 @@ connectIPV4 socket hostaddr port = onReply <$> rpc_ socket (Connect $ SocksAddre
|
||||
where onReply (SocksAddrIPV4 h, p) = (h, p)
|
||||
onReply _ = error "ipv4 requested, got something different"
|
||||
|
||||
|
@ -114,14 +114,14 @@ index 7fbec25..17c7c83 100644
|
|||
data SocksAddress = SocksAddress !SocksHostAddress !PortNumber
|
||||
deriving (Show,Eq,Ord)
|
||||
diff --git a/Network/Socks5/Wire.hs b/Network/Socks5/Wire.hs
|
||||
index 3ab95a8..2881988 100644
|
||||
index 10bd262..a30f32e 100644
|
||||
--- a/Network/Socks5/Wire.hs
|
||||
+++ b/Network/Socks5/Wire.hs
|
||||
@@ -46,12 +46,10 @@ data SocksResponse = SocksResponse
|
||||
|
||||
getAddr 1 = SocksAddrIPV4 <$> getWord32be
|
||||
getAddr 1 = SocksAddrIPV4 <$> getWord32host
|
||||
getAddr 3 = SocksAddrDomainName <$> (getWord8 >>= getByteString . fromIntegral)
|
||||
-getAddr 4 = SocksAddrIPV6 <$> (liftM4 (,,,) getWord32le getWord32le getWord32le getWord32le)
|
||||
-getAddr 4 = SocksAddrIPV6 <$> (liftM4 (,,,) getWord32host getWord32host getWord32host getWord32host)
|
||||
getAddr n = error ("cannot get unknown socket address type: " ++ show n)
|
||||
|
||||
putAddr (SocksAddrIPV4 h) = putWord8 1 >> putWord32host h
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
From 87283f9b6f992a7f0e36c7b1bafc288bf2bf106a Mon Sep 17 00:00:00 2001
|
||||
From: androidbuilder <androidbuilder@example.com>
|
||||
Date: Mon, 11 Nov 2013 02:46:27 +0000
|
||||
Subject: [PATCH] build without v1 uuid which needs network-ino
|
||||
|
||||
---
|
||||
Data/UUID/Util.hs | 11 -----------
|
||||
Data/UUID/V1.hs | 2 --
|
||||
uuid.cabal | 2 --
|
||||
3 files changed, 15 deletions(-)
|
||||
|
||||
diff --git a/Data/UUID/Util.hs b/Data/UUID/Util.hs
|
||||
index 581391a..399e508 100644
|
||||
--- a/Data/UUID/Util.hs
|
||||
+++ b/Data/UUID/Util.hs
|
||||
@@ -3,7 +3,6 @@ module Data.UUID.Util (
|
||||
UnpackedUUID(..)
|
||||
, unpack, pack
|
||||
, version
|
||||
- , extractMac
|
||||
, extractTime
|
||||
, setTime
|
||||
) where
|
||||
@@ -13,7 +12,6 @@ import Data.Word
|
||||
import Data.Word.Util
|
||||
import Data.Bits
|
||||
import Data.UUID.Internal
|
||||
-import Network.Info
|
||||
import Data.Int (Int64)
|
||||
|
||||
version :: UUID -> Int
|
||||
@@ -43,12 +41,3 @@ extractTime uuid =
|
||||
timeAndVersionToTime :: Word16 -> Word16
|
||||
timeAndVersionToTime tv = tv .&. 0x0FFF
|
||||
|
||||
-extractMac :: UUID -> Maybe MAC
|
||||
-extractMac uuid =
|
||||
- if version uuid == 1
|
||||
- then Just $
|
||||
- MAC (node_0 unpacked) (node_1 unpacked) (node_2 unpacked) (node_3 unpacked) (node_4 unpacked) (node_5 unpacked)
|
||||
- else Nothing
|
||||
- where
|
||||
- unpacked = unpack uuid
|
||||
-
|
||||
diff --git a/Data/UUID/V1.hs b/Data/UUID/V1.hs
|
||||
index 067e729..ca4c235 100644
|
||||
--- a/Data/UUID/V1.hs
|
||||
+++ b/Data/UUID/V1.hs
|
||||
@@ -37,8 +37,6 @@ import System.IO.Unsafe
|
||||
|
||||
import qualified System.Random as R
|
||||
|
||||
-import Network.Info
|
||||
-
|
||||
import Data.UUID.Builder
|
||||
import Data.UUID.Internal
|
||||
|
||||
diff --git a/uuid.cabal b/uuid.cabal
|
||||
index 0a53059..57b1b86 100644
|
||||
--- a/uuid.cabal
|
||||
+++ b/uuid.cabal
|
||||
@@ -32,14 +32,12 @@ Library
|
||||
cryptohash >= 0.7 && < 0.12,
|
||||
deepseq == 1.3.*,
|
||||
hashable (>= 1.1.1.0 && < 1.2.0) || (>= 1.2.1 && < 1.3),
|
||||
- network-info == 0.2.*,
|
||||
random >= 1.0.1 && < 1.1,
|
||||
time >= 1.1 && < 1.5
|
||||
|
||||
Exposed-Modules:
|
||||
Data.UUID
|
||||
Data.UUID.Util
|
||||
- Data.UUID.V1
|
||||
Data.UUID.V3
|
||||
Data.UUID.V4
|
||||
Data.UUID.V5
|
||||
--
|
||||
1.7.10.4
|
||||
|
|
@ -1,11 +1,8 @@
|
|||
From c5b0db193fd6e9fd6be22891ae988babbfac3ff0 Mon Sep 17 00:00:00 2001
|
||||
From f645acc0efbfcba7715cd2b6734f0e9df98f7020 Mon Sep 17 00:00:00 2001
|
||||
From: dummy <dummy@example.com>
|
||||
Date: Sat, 19 Oct 2013 02:14:38 +0000
|
||||
Subject: [PATCH] spliced TH
|
||||
Date: Mon, 11 Nov 2013 01:26:56 +0000
|
||||
Subject: [PATCH] update
|
||||
|
||||
Used EvilSplicer. Needed a few syntax fixes, and a lot of added imports.
|
||||
|
||||
Removed some things I don't need, rather than re-splicing to handle a new version.
|
||||
---
|
||||
Yesod/Form/Fields.hs | 771 +++++++++++++++++++++++++++++++++++------------
|
||||
Yesod/Form/Functions.hs | 237 ++++++++++++---
|
||||
|
@ -13,10 +10,10 @@ Removed some things I don't need, rather than re-splicing to handle a new versio
|
|||
Yesod/Form/MassInput.hs | 233 +++++++++++---
|
||||
Yesod/Form/Nic.hs | 61 +++-
|
||||
yesod-form.cabal | 1 +
|
||||
6 files changed, 1123 insertions(+), 305 deletions(-)
|
||||
6 files changed, 1122 insertions(+), 306 deletions(-)
|
||||
|
||||
diff --git a/Yesod/Form/Fields.hs b/Yesod/Form/Fields.hs
|
||||
index b8109df..9bde340 100644
|
||||
index 0689859..1e9d49b 100644
|
||||
--- a/Yesod/Form/Fields.hs
|
||||
+++ b/Yesod/Form/Fields.hs
|
||||
@@ -1,4 +1,3 @@
|
||||
|
@ -209,16 +206,16 @@ index b8109df..9bde340 100644
|
|||
, fieldEnctype = UrlEncoded
|
||||
}
|
||||
where showVal = either id (pack . renderHtml)
|
||||
@@ -168,7 +233,7 @@ $newline never
|
||||
-- | A newtype wrapper around a 'Text' that converts newlines to HTML
|
||||
@@ -169,8 +234,6 @@ $newline never
|
||||
-- br-tags.
|
||||
newtype Textarea = Textarea { unTextarea :: Text }
|
||||
- deriving (Show, Read, Eq, PersistField, PersistFieldSql, Ord)
|
||||
+ deriving (Show, Read, Eq, PersistField, Ord)
|
||||
deriving (Show, Read, Eq, PersistField, Ord)
|
||||
-instance PersistFieldSql Textarea where
|
||||
- sqlType _ = SqlString
|
||||
instance ToHtml Textarea where
|
||||
toHtml =
|
||||
unsafeByteString
|
||||
@@ -186,10 +251,18 @@ instance ToHtml Textarea where
|
||||
@@ -188,10 +251,18 @@ instance ToHtml Textarea where
|
||||
textareaField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Textarea
|
||||
textareaField = Field
|
||||
{ fieldParse = parseHelper $ Right . Textarea
|
||||
|
@ -241,7 +238,7 @@ index b8109df..9bde340 100644
|
|||
, fieldEnctype = UrlEncoded
|
||||
}
|
||||
|
||||
@@ -197,10 +270,19 @@ hiddenField :: (Monad m, PathPiece p, RenderMessage (HandlerSite m) FormMessage)
|
||||
@@ -199,10 +270,19 @@ hiddenField :: (Monad m, PathPiece p, RenderMessage (HandlerSite m) FormMessage)
|
||||
=> Field m p
|
||||
hiddenField = Field
|
||||
{ fieldParse = parseHelper $ maybe (Left MsgValueRequired) Right . fromPathPiece
|
||||
|
@ -265,7 +262,7 @@ index b8109df..9bde340 100644
|
|||
, fieldEnctype = UrlEncoded
|
||||
}
|
||||
|
||||
@@ -208,20 +290,55 @@ textField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Tex
|
||||
@@ -210,20 +290,55 @@ textField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Tex
|
||||
textField = Field
|
||||
{ fieldParse = parseHelper $ Right
|
||||
, fieldView = \theId name attrs val isReq ->
|
||||
|
@ -329,7 +326,7 @@ index b8109df..9bde340 100644
|
|||
, fieldEnctype = UrlEncoded
|
||||
}
|
||||
|
||||
@@ -293,10 +410,24 @@ emailField = Field
|
||||
@@ -295,10 +410,24 @@ emailField = Field
|
||||
case Email.canonicalizeEmail $ encodeUtf8 s of
|
||||
Just e -> Right $ decodeUtf8With lenientDecode e
|
||||
Nothing -> Left $ MsgInvalidEmail s
|
||||
|
@ -358,7 +355,7 @@ index b8109df..9bde340 100644
|
|||
, fieldEnctype = UrlEncoded
|
||||
}
|
||||
|
||||
@@ -305,20 +436,78 @@ searchField :: Monad m => RenderMessage (HandlerSite m) FormMessage => AutoFocus
|
||||
@@ -307,20 +436,78 @@ searchField :: Monad m => RenderMessage (HandlerSite m) FormMessage => AutoFocus
|
||||
searchField autoFocus = Field
|
||||
{ fieldParse = parseHelper Right
|
||||
, fieldView = \theId name attrs val isReq -> do
|
||||
|
@ -449,7 +446,7 @@ index b8109df..9bde340 100644
|
|||
, fieldEnctype = UrlEncoded
|
||||
}
|
||||
|
||||
@@ -329,7 +518,30 @@ urlField = Field
|
||||
@@ -331,7 +518,30 @@ urlField = Field
|
||||
Nothing -> Left $ MsgInvalidUrl s
|
||||
Just _ -> Right s
|
||||
, fieldView = \theId name attrs val isReq ->
|
||||
|
@ -481,7 +478,7 @@ index b8109df..9bde340 100644
|
|||
, fieldEnctype = UrlEncoded
|
||||
}
|
||||
|
||||
@@ -342,18 +554,56 @@ selectField :: (Eq a, RenderMessage site FormMessage)
|
||||
@@ -344,18 +554,56 @@ selectField :: (Eq a, RenderMessage site FormMessage)
|
||||
=> HandlerT site IO (OptionList a)
|
||||
-> Field (HandlerT site IO) a
|
||||
selectField = selectFieldHelper
|
||||
|
@ -550,7 +547,7 @@ index b8109df..9bde340 100644
|
|||
|
||||
multiSelectFieldList :: (Eq a, RenderMessage site FormMessage, RenderMessage site msg)
|
||||
=> [(msg, a)]
|
||||
@@ -376,11 +626,48 @@ multiSelectField ioptlist =
|
||||
@@ -378,11 +626,48 @@ multiSelectField ioptlist =
|
||||
view theId name attrs val isReq = do
|
||||
opts <- fmap olOptions $ handlerToWidget ioptlist
|
||||
let selOpts = map (id &&& (optselected val)) opts
|
||||
|
@ -604,7 +601,7 @@ index b8109df..9bde340 100644
|
|||
where
|
||||
optselected (Left _) _ = False
|
||||
optselected (Right vals) opt = (optionInternalValue opt) `elem` vals
|
||||
@@ -390,67 +677,172 @@ radioFieldList :: (Eq a, RenderMessage site FormMessage, RenderMessage site msg)
|
||||
@@ -392,67 +677,172 @@ radioFieldList :: (Eq a, RenderMessage site FormMessage, RenderMessage site msg)
|
||||
-> Field (HandlerT site IO) a
|
||||
radioFieldList = radioField . optionsPairs
|
||||
|
||||
|
@ -828,7 +825,7 @@ index b8109df..9bde340 100644
|
|||
, fieldEnctype = UrlEncoded
|
||||
}
|
||||
where
|
||||
@@ -476,10 +868,25 @@ $newline never
|
||||
@@ -478,10 +868,25 @@ $newline never
|
||||
checkBoxField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Bool
|
||||
checkBoxField = Field
|
||||
{ fieldParse = \e _ -> return $ checkBoxParser e
|
||||
|
@ -858,7 +855,7 @@ index b8109df..9bde340 100644
|
|||
, fieldEnctype = UrlEncoded
|
||||
}
|
||||
|
||||
@@ -523,49 +930,7 @@ optionsPairs opts = do
|
||||
@@ -525,49 +930,7 @@ optionsPairs opts = do
|
||||
optionsEnum :: (MonadHandler m, Show a, Enum a, Bounded a) => m (OptionList a)
|
||||
optionsEnum = optionsPairs $ map (\x -> (pack $ show x, x)) [minBound..maxBound]
|
||||
|
||||
|
@ -909,7 +906,7 @@ index b8109df..9bde340 100644
|
|||
|
||||
selectFieldHelper
|
||||
:: (Eq a, RenderMessage site FormMessage)
|
||||
@@ -609,9 +974,21 @@ fileField = Field
|
||||
@@ -611,9 +974,21 @@ fileField = Field
|
||||
case files of
|
||||
[] -> Right Nothing
|
||||
file:_ -> Right $ Just file
|
||||
|
@ -934,7 +931,7 @@ index b8109df..9bde340 100644
|
|||
, fieldEnctype = Multipart
|
||||
}
|
||||
|
||||
@@ -638,10 +1015,20 @@ fileAFormReq fs = AForm $ \(site, langs) menvs ints -> do
|
||||
@@ -640,10 +1015,20 @@ fileAFormReq fs = AForm $ \(site, langs) menvs ints -> do
|
||||
{ fvLabel = toHtml $ renderMessage site langs $ fsLabel fs
|
||||
, fvTooltip = fmap (toHtml . renderMessage site langs) $ fsTooltip fs
|
||||
, fvId = id'
|
||||
|
@ -959,7 +956,7 @@ index b8109df..9bde340 100644
|
|||
, fvErrors = errs
|
||||
, fvRequired = True
|
||||
}
|
||||
@@ -670,10 +1057,20 @@ fileAFormOpt fs = AForm $ \(master, langs) menvs ints -> do
|
||||
@@ -672,10 +1057,20 @@ fileAFormOpt fs = AForm $ \(master, langs) menvs ints -> do
|
||||
{ fvLabel = toHtml $ renderMessage master langs $ fsLabel fs
|
||||
, fvTooltip = fmap (toHtml . renderMessage master langs) $ fsTooltip fs
|
||||
, fvId = id'
|
||||
|
@ -1770,7 +1767,7 @@ index 2862678..7b49b1a 100644
|
|||
}
|
||||
where
|
||||
diff --git a/yesod-form.cabal b/yesod-form.cabal
|
||||
index afd2de5..49fd684 100644
|
||||
index 39fa680..88ed066 100644
|
||||
--- a/yesod-form.cabal
|
||||
+++ b/yesod-form.cabal
|
||||
@@ -19,6 +19,7 @@ library
|
||||
|
|
|
@ -50,7 +50,7 @@ patched () {
|
|||
|
||||
installgitannexdeps () {
|
||||
pushd ../..
|
||||
echo cabal install --only-dependencies
|
||||
echo cabal install --only-dependencies "$@"
|
||||
cabal install --only-dependencies "$@"
|
||||
popd
|
||||
}
|
||||
|
@ -90,11 +90,14 @@ install_pkgs () {
|
|||
patched yesod-core
|
||||
patched yesod-persistent
|
||||
patched yesod-form
|
||||
patched crypto-numbers
|
||||
patched yesod-auth
|
||||
patched yesod
|
||||
patched async
|
||||
patched gnuidn
|
||||
patched DAV
|
||||
patched language-javascript
|
||||
patched uuid
|
||||
|
||||
cd ..
|
||||
|
||||
|
@ -112,6 +115,6 @@ echo
|
|||
echo
|
||||
echo cross build
|
||||
echo
|
||||
PATH=$HOME/.ghc/android-14/arm-linux-androideabi-4.7/bin:$HOME/.ghc/android-14/arm-linux-androideabi-4.7/arm-linux-androideabi/bin:$PATH
|
||||
PATH=$HOME/.ghc/android-14/arm-linux-androideabi-4.8/bin:$HOME/.ghc/android-14/arm-linux-androideabi-4.8/arm-linux-androideabi/bin:$PATH
|
||||
cabal update
|
||||
install_pkgs
|
||||
|
|
Loading…
Reference in a new issue