update to arm-linux-androideabi-4.8 and current cabal

This commit is contained in:
Joey Hess 2013-11-11 00:03:24 -04:00
parent ba204c6e8e
commit d128d1aae6
10 changed files with 385 additions and 46 deletions

View file

@ -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

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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