summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-08-02 19:12:42 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-08-02 19:12:42 -0400
commit41a7de163ad854515a1b0315931eef7cd72a924c (patch)
tree334a272b9c5a0f05a618fb23159a59c8e653ba82
parent21ace0d80a401bad0ef1df800e6f881425212249 (diff)
parent0960dde361a79ab5783e79a8039828194358341e (diff)
Merge orca:/tmp/git-annex
-rw-r--r--doc/bugs/git-annex_sync_under_windows_fails_by_using_itself_as_the_ssh_command/comment_7_1542901463c022d4e47bf0329c5887b3._comment8
-rw-r--r--doc/forum/Is_parallel_fsck_for_two_or_more_different_directories_possible__63__.mdwn31
-rw-r--r--doc/walkthrough/fsck:_verifying_your_data.mdwn20
-rw-r--r--standalone/android/cabal.config1182
-rw-r--r--standalone/android/haskell-patches/crypto-numbers_build-fix.patch227
-rw-r--r--standalone/android/haskell-patches/dns_use-android-net.dns1-command-instead-of-resolv.conf.patch38
-rw-r--r--standalone/android/haskell-patches/entropy_cross-build.patch27
-rw-r--r--standalone/android/haskell-patches/gnuidn_fix-build-with-new-base.patch50
-rw-r--r--standalone/android/haskell-patches/iproute_1.2.11_0001-build-without-IPv6-stuff.patch24
-rw-r--r--standalone/android/haskell-patches/network_2.4.1.0_0002-remove-Network.BSD-symbols-not-available-in-bionic.patch50
-rw-r--r--standalone/android/haskell-patches/network_2.4.1.0_0003-configure-misdetects-accept4.patch16
-rw-r--r--standalone/android/haskell-patches/network_2.4.1.0_0006-build-fixes.patch24
-rw-r--r--standalone/android/haskell-patches/unix-time_hack-for-Bionic.patch24
-rw-r--r--standalone/android/haskell-patches/uuid_build-without-v1-uuid-which-needs-network-info.patch59
-rw-r--r--standalone/android/haskell-patches/vector_cross-build.patch24
-rw-r--r--standalone/android/haskell-patches/warp_avoid-ipv6-for-android.patch39
-rwxr-xr-xstandalone/android/install-haskell-packages15
-rw-r--r--standalone/no-th/haskell-patches/DAV_build-without-TH.patch12
-rw-r--r--standalone/no-th/haskell-patches/aeson_remove-TH.patch40
-rw-r--r--standalone/no-th/haskell-patches/file-embed_remove-TH.patch132
-rw-r--r--standalone/no-th/haskell-patches/generic-deriving_remove-TH.patch394
-rw-r--r--standalone/no-th/haskell-patches/lens_no-TH.patch92
-rw-r--r--standalone/no-th/haskell-patches/monad-logger_remove-TH.patch27
-rw-r--r--standalone/no-th/haskell-patches/optparse-applicative_remove-ANN.patch (renamed from standalone/android/haskell-patches/optparse-applicative_remove-ANN.patch)0
-rw-r--r--standalone/no-th/haskell-patches/persistent_1.1.5.1_0001-disable-TH.patch41
-rw-r--r--standalone/no-th/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch (renamed from standalone/android/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch)0
-rw-r--r--standalone/no-th/haskell-patches/reflection_remove-TH.patch59
-rw-r--r--standalone/no-th/haskell-patches/skein_hardcode_little-endian.patch (renamed from standalone/android/haskell-patches/skein_hardcode_little-endian.patch)0
-rw-r--r--standalone/no-th/haskell-patches/vector_hack-to-build-with-new-ghc.patch49
-rw-r--r--standalone/no-th/haskell-patches/wai-app-static_deal-with-TH.patch24
-rw-r--r--standalone/no-th/haskell-patches/xml-hamlet_remove_TH.patch108
-rw-r--r--standalone/no-th/haskell-patches/yesod-core_expand_TH.patch93
-rw-r--r--standalone/no-th/haskell-patches/yesod-form_spliced-TH.patch676
-rw-r--r--standalone/no-th/haskell-patches/yesod-persistent_do-not-really-build.patch16
-rw-r--r--standalone/no-th/haskell-patches/yesod-routes_remove-TH.patch170
-rw-r--r--standalone/no-th/haskell-patches/yesod-static_hack.patch34
-rw-r--r--standalone/no-th/haskell-patches/yesod_hack-TH.patch47
37 files changed, 2158 insertions, 1714 deletions
diff --git a/doc/bugs/git-annex_sync_under_windows_fails_by_using_itself_as_the_ssh_command/comment_7_1542901463c022d4e47bf0329c5887b3._comment b/doc/bugs/git-annex_sync_under_windows_fails_by_using_itself_as_the_ssh_command/comment_7_1542901463c022d4e47bf0329c5887b3._comment
new file mode 100644
index 000000000..e15ce3271
--- /dev/null
+++ b/doc/bugs/git-annex_sync_under_windows_fails_by_using_itself_as_the_ssh_command/comment_7_1542901463c022d4e47bf0329c5887b3._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="threadshuffle"
+ subject="cont'd"
+ date="2015-07-31T22:05:14Z"
+ content="""
+Hi joey, I know my english is not quite correct. What i was trying to say was that i managed to avoid certain parts of the code, because they're governed by some conditions by setting some env variables (what i remember was GIT_SSH and something, but can't say for sure now). So i haven't compiled the code, just went on different code paths based on the conditions described by the code.
+I will get back to this shortly (maybe next week), install the latest version of git-annex and if that still doesn't work, im gonna build a devenv for haskell and try to see what's happening. I'm gonna be able to provide more details at that point.
+"""]]
diff --git a/doc/forum/Is_parallel_fsck_for_two_or_more_different_directories_possible__63__.mdwn b/doc/forum/Is_parallel_fsck_for_two_or_more_different_directories_possible__63__.mdwn
new file mode 100644
index 000000000..41eef7020
--- /dev/null
+++ b/doc/forum/Is_parallel_fsck_for_two_or_more_different_directories_possible__63__.mdwn
@@ -0,0 +1,31 @@
+I can put `git-annex fsck` in a loop to check a large directory like this:
+
+`-S` starts an incremental check, `-m` continues the started incremental check, `&>>` appends all output (both `stdout` and `stderr`) into the `fsck.log` file.
+
+```
+$ git-annex fsck -S large-directory --from remote-repo --time-limit=60s &>>~/log/fsck.log
+#...
+#...
+#...
+$ while (sleep 10); do
+ git-annex fsck -m large-directory --from remote-repo --time-limit=1h &>>~/log/fsck.log
+#...
+#...
+#...
+done;
+```
+
+I need the loop because the connection to `remote-repo` fails after some time (or because remote server error) and needs a reconnect, after that, everything is ok.
+
+Suppose, I have many large directories and it would be faster to check them if I could run them parallelly. Many small files, they do not take too much bandwidth but more I/O and network communication.
+
+I know that the progress of `fsck` is stored in a database (now after every 1000 files or 5 minutes or `--time-limit`) but is the checked directory (large-directory) is taken into account when starting/storing the progress?
+
+**Is the checked directory/path in the primary-key?** Or is it much more complicated?
+
+If I could start checking many directories in the same time, `fsck` would finish much faster (think about thousands of small icon files). Is it just me or somebody else could profit from this?
+
+(This is _not_ a feature request, I would like to know if anybody needs this, if possible at all.)
+
+Thanks,
+parhuzamos
diff --git a/doc/walkthrough/fsck:_verifying_your_data.mdwn b/doc/walkthrough/fsck:_verifying_your_data.mdwn
index 62e15b6fa..240014610 100644
--- a/doc/walkthrough/fsck:_verifying_your_data.mdwn
+++ b/doc/walkthrough/fsck:_verifying_your_data.mdwn
@@ -14,3 +14,23 @@ you're using sha1 and don't want to spend a long time checksumming everything.
# git annex fsck my_cool_big_file
fsck my_cool_big_file (checksum...) ok
+
+If you have a large repo, you may want to check it in smaller steps. You may
+start and continue an aborted or time-limited check.
+
+ # git annex fsck -S <optional-directory> --time-limit=1m
+ fsck some_file (checksum...) ok
+ fsck my_cool_big_file (checksum...) ok
+
+ Time limit (1m) reached!
+
+ # git annex fsck -m <optional-directory>
+ fsck my_other_big_file (checksum...) ok
+ ...
+
+Use `-S` or `--incremental` to start the incremental check. Use `-m`
+or `--more` to continue the started check and continue where it left
+off. Note that saving the progress of `fsck` is performed after every
+1000 files or 5 minutes or when `--time-limit` occours. There may be
+files that will be checked again when `git-annex` exists abnormally
+eg. Ctrl+C and the check is restarted.
diff --git a/standalone/android/cabal.config b/standalone/android/cabal.config
index ccfd3b22b..6e1747fbe 100644
--- a/standalone/android/cabal.config
+++ b/standalone/android/cabal.config
@@ -1,1062 +1,204 @@
-constraints: abstract-deque ==0.3,
- abstract-par ==0.3.3,
- accelerate ==0.15.1.0,
- ace ==0.6,
- action-permutations ==0.0.0.1,
- active ==0.1.0.19,
- AC-Vector ==2.3.2,
- ad ==4.2.2,
- adjunctions ==4.2.1,
- aeson-pretty ==0.7.2,
- aeson-qq ==0.7.4,
- aeson-utils ==0.3.0.1,
- alarmclock ==0.2.0.6,
- alex ==3.1.4,
- amazonka ==0.3.4,
- amazonka-autoscaling ==0.3.4,
- amazonka-cloudformation ==0.3.4,
- amazonka-cloudfront ==0.3.4,
- amazonka-cloudhsm ==0.3.4,
- amazonka-cloudsearch ==0.3.4,
- amazonka-cloudsearch-domains ==0.3.4,
- amazonka-cloudtrail ==0.3.4,
- amazonka-cloudwatch ==0.3.4,
- amazonka-cloudwatch-logs ==0.3.4,
- amazonka-codedeploy ==0.3.4,
- amazonka-cognito-identity ==0.3.4,
- amazonka-cognito-sync ==0.3.4,
- amazonka-config ==0.3.4,
- amazonka-core ==0.3.4,
- amazonka-datapipeline ==0.3.4,
- amazonka-directconnect ==0.3.4,
- amazonka-dynamodb ==0.3.4,
- amazonka-ec2 ==0.3.4,
- amazonka-ecs ==0.3.4,
- amazonka-elasticache ==0.3.4,
- amazonka-elasticbeanstalk ==0.3.4,
- amazonka-elastictranscoder ==0.3.4,
- amazonka-elb ==0.3.4,
- amazonka-emr ==0.3.4,
- amazonka-glacier ==0.3.4,
- amazonka-iam ==0.3.4,
- amazonka-importexport ==0.3.4,
- amazonka-kinesis ==0.3.4,
- amazonka-kms ==0.3.4,
- amazonka-lambda ==0.3.4,
- amazonka-opsworks ==0.3.4,
- amazonka-rds ==0.3.4,
- amazonka-redshift ==0.3.4,
- amazonka-route53 ==0.3.4,
- amazonka-route53-domains ==0.3.4,
- amazonka-s3 ==0.3.4,
- amazonka-sdb ==0.3.4,
- amazonka-ses ==0.3.4,
- amazonka-sns ==0.3.4,
- amazonka-sqs ==0.3.4,
- amazonka-ssm ==0.3.4,
- amazonka-storagegateway ==0.3.4,
- amazonka-sts ==0.3.4,
- amazonka-support ==0.3.4,
- amazonka-swf ==0.3.4,
- amqp ==0.12.2,
- ansi-terminal ==0.6.2.1,
- ansi-wl-pprint ==0.6.7.2,
+constraints: Crypto ==4.2.5.1,
+ binary ==0.7.6.1,
+ DAV ==1.0.3,
+ HTTP ==4000.2.17,
+ HUnit ==1.2.5.2,
+ IfElse ==0.85,
+ MissingH ==1.2.1.0,
+ MonadRandom ==0.1.13,
+ QuickCheck ==2.7.6,
+ SafeSemaphore ==0.10.1,
+ aeson ==0.7.0.6,
+ ansi-terminal ==0.6.1.1,
+ ansi-wl-pprint ==0.6.7.1,
appar ==0.1.4,
- applicative-quoters ==0.1.0.8,
- approximate ==0.2.1.1,
- arbtt ==0.9.0.2,
- arithmoi ==0.4.1.2,
- array installed,
- arrow-list ==0.7,
- asn1-data ==0.7.1,
- asn1-encoding ==0.9.0,
- asn1-parse ==0.9.1,
- asn1-types ==0.3.0,
- async ==2.0.2,
- atto-lisp ==0.2.2,
- attoparsec ==0.12.1.6,
- attoparsec-enumerator ==0.3.4,
- attoparsec-expr ==0.1.1.2,
- authenticate ==1.3.2.11,
- authenticate-oauth ==1.5.1.1,
- auto-update ==0.1.2.1,
- aws ==0.11.4,
- bake ==0.2,
- bank-holidays-england ==0.1.0.3,
- base installed,
+ asn1-encoding ==0.8.1.3,
+ asn1-parse ==0.8.1,
+ asn1-types ==0.2.3,
+ async ==2.0.1.5,
+ attoparsec ==0.11.3.4,
+ attoparsec-conduit ==1.1.0,
+ authenticate ==1.3.2.10,
+ base-unicode-symbols ==0.2.2.4,
base16-bytestring ==0.1.1.6,
base64-bytestring ==1.0.0.1,
- base64-string ==0.2,
- base-compat ==0.6.0,
- base-prelude ==0.1.19,
- base-unicode-symbols ==0.2.2.4,
- basic-prelude ==0.3.13,
- bcrypt ==0.0.6,
- bifunctors ==4.2.1,
- binary installed,
- binary-conduit ==1.2.3,
- binary-list ==1.1.1.0,
- bindings-DSL ==1.0.22,
- bin-package-db installed,
- bioace ==0.0.1,
- bioalign ==0.0.5,
- biocore ==0.3.1,
- biofasta ==0.0.3,
- biofastq ==0.1,
- biophd ==0.0.7,
- biopsl ==0.4,
- biosff ==0.3.7.1,
- bits ==0.4,
- blank-canvas ==0.5,
- BlastHTTP ==1.0.1,
- blastxml ==0.3.2,
- blaze-builder ==0.4.0.1,
- blaze-builder-enumerator ==0.2.1.0,
- blaze-html ==0.8.0.2,
- blaze-markup ==0.7.0.2,
- blaze-svg ==0.3.4.1,
- blaze-textual ==0.2.0.9,
- bloodhound ==0.5.0.1,
- bmp ==1.2.5.2,
- Boolean ==0.2.3,
- boolsimplifier ==0.1.8,
- bound ==1.0.5,
- BoundedChan ==1.0.3.0,
- broadcast-chan ==0.1.0,
- bson ==0.3.1,
- bumper ==0.6.0.3,
+ bifunctors ==4.1.1.1,
+ bloomfilter ==2.0.0.0,
byteable ==0.1.1,
- bytedump ==1.0,
byteorder ==1.0.4,
- bytes ==0.15,
- bytestring installed,
- bytestring-builder ==0.10.6.0.0,
- bytestring-conversion ==0.3.0,
- bytestring-lexing ==0.4.3.2,
- bytestring-mmap ==0.2.2,
- bytestring-progress ==1.0.5,
- bytestring-trie ==0.2.4.1,
- bzlib ==0.5.0.5,
- bzlib-conduit ==0.2.1.3,
- c2hs ==0.25.2,
- Cabal installed,
- cabal-file-th ==0.2.3,
- Cabal-ide-backend ==1.23.0.0,
- cabal-install ==1.18.1.0,
- cabal-rpm ==0.9.6,
- cabal-src ==0.2.5.1,
- cabal-test-quickcheck ==0.1.4,
- cairo ==0.13.1.0,
- cartel ==0.14.2.6,
- case-insensitive ==1.2.0.4,
- cases ==0.1.2.1,
- cassava ==0.4.2.4,
- cereal ==0.4.1.1,
- cereal-conduit ==0.7.2.3,
- certificate ==1.3.9,
- charset ==0.3.7.1,
- Chart ==1.3.3,
- Chart-diagrams ==1.3.3,
- ChasingBottoms ==1.3.0.12,
- check-email ==1.0,
- checkers ==0.4.3,
- chell ==0.4.0.1,
- chell-quickcheck ==0.2.5,
- chunked-data ==0.1.0.1,
- cipher-aes ==0.2.10,
- cipher-aes128 ==0.6.4,
- cipher-blowfish ==0.0.3,
- cipher-camellia ==0.0.2,
+ case-insensitive ==1.2.0.1,
+ cereal ==0.4.0.1,
+ cipher-aes ==0.2.8,
cipher-des ==0.0.6,
cipher-rc4 ==0.1.4,
- circle-packing ==0.1.0.4,
- classy-prelude ==0.11.1.1,
- classy-prelude-conduit ==0.11.1,
- classy-prelude-yesod ==0.11.1,
- clay ==0.10.1,
- clientsession ==0.9.1.1,
- clock ==0.4.6.0,
- cmdargs ==0.10.13,
- code-builder ==0.1.3,
- colour ==2.3.3,
- comonad ==4.2.6,
- comonads-fd ==4.0,
- comonad-transformers ==4.0,
- compdata ==0.9,
- compensated ==0.6.1,
- composition ==1.0.1.1,
- compressed ==3.10,
- concatenative ==1.0.1,
- concurrent-extra ==0.7.0.9,
- concurrent-supply ==0.1.7.1,
- cond ==0.4.1.1,
- conduit ==1.2.4.2,
- conduit-combinators ==0.3.1,
- conduit-extra ==1.1.8,
- configurator ==0.3.0.0,
- connection ==0.2.4,
- constraints ==0.4.1.3,
- consul-haskell ==0.1,
- containers installed,
- containers-unicode-symbols ==0.3.1.1,
- contravariant ==1.3.1.1,
- control-monad-free ==0.6.1,
- control-monad-loop ==0.1,
- convertible ==1.1.1.0,
- cookie ==0.4.1.5,
- courier ==0.1.0.15,
- cpphs ==1.19,
- cprng-aes ==0.6.1,
- cpu ==0.1.2,
- criterion ==1.1.0.0,
+ clientsession ==0.9.0.3,
+ comonad ==4.2,
+ conduit ==1.1.6,
+ conduit-extra ==1.1.3,
+ connection ==0.2.3,
+ contravariant ==0.6.1.1,
+ cookie ==0.4.1.2,
+ cprng-aes ==0.5.2,
crypto-api ==0.13.2,
- crypto-api-tests ==0.3,
- cryptocipher ==0.6.2,
- crypto-cipher-tests ==0.0.11,
crypto-cipher-types ==0.0.9,
+ crypto-numbers ==0.2.3,
+ crypto-pubkey ==0.2.4,
+ crypto-pubkey-types ==0.4.2.2,
+ crypto-random ==0.0.7,
cryptohash ==0.11.6,
cryptohash-conduit ==0.1.1,
- cryptohash-cryptoapi ==0.1.3,
- cryptol ==2.2.2,
- crypto-numbers ==0.2.7,
- crypto-pubkey ==0.2.8,
- crypto-pubkey-types ==0.4.3,
- crypto-random ==0.0.9,
- crypto-random-api ==0.2.0,
css-text ==0.1.2.1,
- csv ==0.1.2,
- csv-conduit ==0.6.6,
- cubicspline ==0.1.1,
- curl ==1.3.8,
- data-accessor ==0.2.2.6,
- data-accessor-mtl ==0.2.0.4,
- data-binary-ieee754 ==0.4.4,
data-default ==0.5.3,
data-default-class ==0.0.1,
data-default-instances-base ==0.0.1,
data-default-instances-containers ==0.0.1,
data-default-instances-dlist ==0.0.1,
data-default-instances-old-locale ==0.0.1,
- data-inttrie ==0.1.0,
- data-lens-light ==0.1.2.1,
- data-memocombinators ==0.5.1,
- data-reify ==0.6.1,
- DAV ==1.0.5,
- Decimal ==0.4.2,
- deepseq installed,
- deepseq-generics ==0.1.1.2,
- derive ==2.5.22,
- descriptive ==0.9.3,
- diagrams ==1.2,
- diagrams-cairo ==1.2.0.7,
- diagrams-canvas ==0.3.0.4,
- diagrams-contrib ==1.1.2.6,
- diagrams-core ==1.2.0.6,
- diagrams-lib ==1.2.0.9,
- diagrams-postscript ==1.1.0.5,
- diagrams-rasterific ==0.1.0.8,
- diagrams-svg ==1.1.0.5,
- Diff ==0.3.2,
- digest ==0.0.1.2,
- digestive-functors ==0.7.1.5,
- dimensional ==0.13.0.2,
- directory installed,
- directory-tree ==0.12.0,
- direct-sqlite ==2.3.15,
- distributed-process ==0.5.3,
- distributed-process-async ==0.2.1,
- distributed-process-client-server ==0.1.2,
- distributed-process-execution ==0.1.1,
- distributed-process-extras ==0.2.0,
- distributed-process-simplelocalnet ==0.2.2.0,
- distributed-process-supervisor ==0.1.2,
- distributed-process-task ==0.1.1,
- distributed-static ==0.3.1.0,
+ sandi ==0.3.0.1,
+ dbus ==0.10.8,
distributive ==0.4.4,
- djinn-ghc ==0.0.2.3,
- djinn-lib ==0.0.1.2,
- dlist ==0.7.1.1,
- dlist-instances ==0.1,
- doctest ==0.9.13,
- double-conversion ==2.0.1.0,
- DRBG ==0.5.4,
- dual-tree ==0.2.0.6,
- easy-file ==0.2.1,
- ede ==0.2.8.2,
- edit-distance ==0.2.1.3,
- effect-handlers ==0.1.0.6,
- either ==4.3.4,
- elm-core-sources ==1.0.0,
- email-validate ==2.0.1,
- enclosed-exceptions ==1.0.1.1,
- entropy ==0.3.6,
- enumerator ==0.4.20,
- eq ==4.0.4,
- erf ==2.0.0.0,
- errorcall-eq-instance ==0.2.0.1,
+ dlist ==0.7.0.1,
+ dns ==1.3.0,
+ edit-distance ==0.2.1.2,
+ either ==4.3,
+ email-validate ==1.0.0,
+ entropy ==0.2.1,
errors ==1.4.7,
- ersatz ==0.3,
- esqueleto ==2.1.3,
- exception-mtl ==0.3.0.5,
- exceptions ==0.8.0.2,
- exception-transformers ==0.3.0.4,
- executable-hash ==0.2.0.0,
- executable-path ==0.0.3,
- extensible-exceptions ==0.1.1.4,
- extra ==1.1,
- fast-logger ==2.3.1,
- fay ==0.23.1.4,
- fay-base ==0.20.0.0,
- fay-builder ==0.2.0.5,
- fay-dom ==0.5.0.1,
- fay-jquery ==0.6.0.3,
- fay-text ==0.3.2.2,
- fay-uri ==0.2.0.0,
- fb ==1.0.10,
- fb-persistent ==0.3.4,
- fclabels ==2.0.2.2,
- FenwickTree ==0.1.2.1,
- fgl ==5.5.1.0,
- file-embed ==0.0.8.2,
- file-location ==0.4.7.1,
- filemanip ==0.3.6.3,
- filepath installed,
- fingertree ==0.1.0.2,
- fixed ==0.2.1.1,
- fixed-list ==0.1.6,
- fixed-vector ==0.7.0.3,
- flexible-defaults ==0.0.1.1,
- flock ==0.3.1.8,
- fmlist ==0.9,
- focus ==0.1.4,
- foldl ==1.0.10,
- FontyFruity ==0.5.1.1,
- force-layout ==0.3.0.11,
- foreign-store ==0.2,
- formatting ==6.2.0,
- free ==4.11,
- freenect ==1.2,
- frisby ==0.2,
- fsnotify ==0.1.0.3,
- fuzzcheck ==0.1.1,
- gd ==3000.7.3,
- generic-aeson ==0.2.0.5,
- generic-deriving ==1.6.3,
- GenericPretty ==1.2.1,
- generics-sop ==0.1.1.2,
- generic-xmlpickler ==0.1.0.2,
- ghc installed,
- ghc-heap-view ==0.5.3,
- ghcid ==0.3.6,
- ghc-mod ==5.2.1.2,
- ghc-mtl ==1.2.1.0,
- ghc-paths ==0.1.0.9,
- ghc-prim installed,
- ghc-syb-utils ==0.2.3,
- gio ==0.13.1.0,
- gipeda ==0.1.0.2,
- git-embed ==0.1.0,
- gitlib ==3.1.0.1,
- gitlib-libgit2 ==3.1.0.4,
- gitlib-test ==3.1.0.2,
- gitrev ==1.0.0,
- gitson ==0.5.1,
- gl ==0.7.7,
- glib ==0.13.1.0,
- Glob ==0.7.5,
- GLURaw ==1.5.0.1,
- GLUT ==2.7.0.1,
- graph-core ==0.2.2.0,
- graphs ==0.6.0.1,
- GraphSCC ==1.0.4,
- graphviz ==2999.17.0.2,
- gravatar ==0.8.0,
- groundhog ==0.7.0.3,
- groundhog-mysql ==0.7.0.1,
- groundhog-postgresql ==0.7.0.2,
- groundhog-sqlite ==0.7.0.1,
- groundhog-th ==0.7.0.1,
- groupoids ==4.0,
- groups ==0.4.0.0,
- gtk ==0.13.6,
- gtk2hs-buildtools ==0.13.0.3,
- gtk3 ==0.13.6,
- hackage-mirror ==0.1.0.0,
- haddock-api ==2.15.0.2,
- haddock-library ==1.1.1,
- hakyll ==4.6.9.0,
- half ==0.2.0.1,
- HandsomeSoup ==0.3.5,
- happstack-server ==7.4.2,
- happy ==1.19.5,
- hashable ==1.2.3.2,
- hashable-extras ==0.2.1,
- hashmap ==1.3.0.1,
- hashtables ==1.2.0.2,
- haskeline installed,
- haskell2010 installed,
- haskell98 installed,
- haskell-lexer ==1.0,
- haskell-names ==0.5.2,
- HaskellNet ==0.4.4,
- haskell-packages ==0.2.4.4,
- haskell-src ==1.0.2.0,
- haskell-src-exts ==1.16.0.1,
- haskell-src-meta ==0.6.0.9,
- haskintex ==0.5.0.3,
- hasql ==0.7.3.1,
- hasql-backend ==0.4.1,
- hasql-postgres ==0.10.3.1,
- hastache ==0.6.1,
- HaTeX ==3.16.1.1,
- HaXml ==1.25.3,
- haxr ==3000.10.4.2,
- HCodecs ==0.5,
- hdaemonize ==0.5.0.0,
- hdevtools ==0.1.0.8,
- hdocs ==0.4.1.3,
- heap ==1.0.2,
- heaps ==0.3.2.1,
- hebrew-time ==0.1.1,
- heist ==0.14.1,
- here ==1.2.7,
- heredoc ==0.2.0.0,
- hexpat ==0.20.9,
- hflags ==0.4,
- highlighting-kate ==0.5.12,
- hindent ==4.4.2,
- hinotify ==0.3.7,
- hint ==0.4.2.3,
- histogram-fill ==0.8.4.1,
- hit ==0.6.3,
+ exceptions ==0.6.1,
+ failure ==0.2.0.3,
+ fast-logger ==2.1.5,
+ fdo-notify ==0.3.1,
+ feed ==0.3.9.2,
+ file-embed ==0.0.6,
+ fingertree ==0.1.0.0,
+ free ==4.9,
+ gnuidn ==0.2,
+ gnutls ==0.1.4,
+ gsasl ==0.3.5,
+ hS3 ==0.5.7,
+ hashable ==1.2.1.0,
+ hinotify ==0.3.5,
hjsmin ==0.1.4.7,
- hledger ==0.24.1,
- hledger-lib ==0.24.1,
- hledger-web ==0.24.1,
- hlibgit2 ==0.18.0.14,
- hlint ==1.9.20,
- hmatrix ==0.16.1.5,
- hmatrix-gsl ==0.16.0.3,
- hmatrix-gsl-stats ==0.2.1,
- hmatrix-repa ==0.1.2.1,
- hoauth2 ==0.4.7,
- holy-project ==0.1.1.1,
- hoogle ==4.2.41,
- hoopl installed,
- hOpenPGP ==2.0,
- hopenpgp-tools ==0.14.1,
- hostname ==1.0,
- hostname-validate ==1.0.0,
- hourglass ==0.2.9,
- hpc installed,
- hpc-coveralls ==0.9.0,
- hPDB ==1.2.0.3,
- hPDB-examples ==1.2.0.2,
- hs-bibutils ==5.5,
- hscolour ==1.22,
- hsdev ==0.1.3.4,
- hse-cpp ==0.1,
- hsignal ==0.2.7,
- hslogger ==1.2.9,
- hslua ==0.3.13,
- HsOpenSSL ==0.11.1.1,
- hspec ==2.1.7,
- hspec-attoparsec ==0.1.0.2,
- hspec-core ==2.1.7,
- hspec-discover ==2.1.7,
- hspec-expectations ==0.6.1.1,
- hspec-meta ==2.1.7,
- hspec-smallcheck ==0.3.0,
- hspec-wai ==0.6.3,
- hspec-wai-json ==0.6.0,
- hstatistics ==0.2.5.2,
- HStringTemplate ==0.8.3,
- hsyslog ==2.0,
- HTF ==0.12.2.4,
- html ==1.0.1.2,
- html-conduit ==1.1.1.2,
- HTTP ==4000.2.19,
- http-client ==0.4.11.2,
- http-client-openssl ==0.2.0.1,
+ hslogger ==1.2.1,
+ http-client ==0.4.11.1,
http-client-tls ==0.2.2,
http-conduit ==2.1.5,
- http-date ==0.0.6.1,
- http-media ==0.6.2,
- http-reverse-proxy ==0.4.2,
- http-types ==0.8.6,
- HUnit ==1.2.5.2,
- hweblib ==0.6.3,
- hxt ==9.3.1.15,
- hxt-charproperties ==9.2.0.1,
- hxt-curl ==9.1.1.1,
- hxt-expat ==9.1.1,
- hxt-http ==9.1.5.2,
- hxt-pickle-utils ==0.1.0.3,
- hxt-regex-xmlschema ==9.2.0.2,
- hxt-relaxng ==9.1.5.5,
- hxt-tagsoup ==9.1.3,
- hxt-unicode ==9.0.2.4,
- hybrid-vectors ==0.1.2.1,
- hyphenation ==0.4.2.1,
- iconv ==0.4.1.2,
- ide-backend ==0.9.0.9,
- ide-backend-common ==0.9.1.1,
- ide-backend-rts ==0.1.3.1,
- idna ==0.3.0,
- ieee754 ==0.7.6,
- IfElse ==0.85,
- imagesize-conduit ==1.1,
- immortal ==0.2,
- include-file ==0.1.0.2,
- incremental-parser ==0.2.3.4,
- indents ==0.3.3,
- ini ==0.3.1,
- integer-gmp installed,
- integration ==0.2.1,
- interpolate ==0.1.0,
- interpolatedstring-perl6 ==0.9.0,
- intervals ==0.7.1,
- io-choice ==0.0.5,
- io-manager ==0.1.0.2,
- io-memoize ==1.1.1.0,
- iproute ==1.3.2,
- iterable ==3.0,
- ixset ==1.0.6,
- jmacro ==0.6.12,
- jmacro-rpc ==0.3.2,
- jmacro-rpc-happstack ==0.3.2,
- jmacro-rpc-snap ==0.3,
- jose-jwt ==0.4.2,
- js-flot ==0.8.3,
- js-jquery ==1.11.3,
- json ==0.9.1,
- json-autotype ==0.2.5.13,
- json-schema ==0.7.3.5,
- JuicyPixels ==3.2.4,
- JuicyPixels-repa ==0.7,
- kan-extensions ==4.2.2,
- kansas-comet ==0.3.1,
- kdt ==0.2.3,
- keter ==1.3.10.1,
- keys ==3.10.2,
- kmeans ==0.1.3,
- koofr-client ==1.0.0.3,
- kure ==2.16.10,
- language-c ==0.4.7,
- language-c-quote ==0.10.2.1,
- language-ecmascript ==0.17,
- language-glsl ==0.1.1,
- language-haskell-extract ==0.2.4,
- language-java ==0.2.7,
- language-javascript ==0.5.13.3,
- lattices ==1.2.1.1,
- lazy-csv ==0.5,
- lca ==0.3,
- lens ==4.7.0.1,
- lens-action ==0.1.0.1,
- lens-aeson ==1.0.0.4,
- lens-family-core ==1.2.0,
- lens-family-th ==0.4.1.0,
- lhs2tex ==1.19,
- libgit ==0.3.1,
- libnotify ==0.1.1.0,
- lifted-async ==0.7.0.1,
- lifted-base ==0.2.3.6,
- linear ==1.18.1.1,
- linear-accelerate ==0.2,
- List ==0.5.2,
- ListLike ==4.2.0,
- list-t ==0.4.5.1,
- loch-th ==0.2.1,
- log-domain ==0.10.0.1,
- logict ==0.6.0.2,
- loop ==0.2.0,
- lrucache ==1.2.0.0,
- lucid ==2.9.2,
- lucid-svg ==0.4.0.4,
- lzma-conduit ==1.1.3,
- machines ==0.4.1,
- machines-directory ==0.2.0.6,
- machines-io ==0.2.0.6,
- machines-process ==0.2.0.4,
- mainland-pretty ==0.2.7.2,
- managed ==1.0.0,
- mandrill ==0.2.2.0,
- map-syntax ==0.2,
- markdown ==0.1.13.2,
- markdown-unlit ==0.2.0.1,
- math-functions ==0.1.5.2,
- matrix ==0.3.4.3,
- maximal-cliques ==0.1.1,
- MaybeT ==0.1.2,
- mbox ==0.3.1,
- MemoTrie ==0.6.2,
- mersenne-random-pure64 ==0.2.0.4,
- messagepack ==0.3.0,
- messagepack-rpc ==0.1.0.3,
- MFlow ==0.4.5.9,
- mime-mail ==0.4.8.2,
- mime-mail-ses ==0.3.2.2,
- mime-types ==0.1.0.6,
- missing-foreign ==0.1.1,
- MissingH ==1.3.0.1,
- mmap ==0.5.9,
- mmorph ==1.0.4,
- MonadCatchIO-transformers ==0.3.1.3,
- monad-control ==1.0.0.4,
- monad-coroutine ==0.9.0.1,
- monadcryptorandom ==0.6.1,
- monadic-arrays ==0.2.1.4,
- monad-journal ==0.7,
- monadLib ==3.7.3,
- monadloc ==0.7.1,
- monad-logger ==0.3.13.1,
- monad-logger-json ==0.1.0.0,
- monad-logger-syslog ==0.1.1.1,
+ http-date ==0.0.2,
+ http-types ==0.8.5,
+ hxt ==9.3.1.4,
+ hxt-charproperties ==9.1.1.1,
+ hxt-regex-xmlschema ==9.0.4,
+ hxt-unicode ==9.0.2.2,
+ idna ==0.2,
+ iproute ==1.2.11,
+ json ==0.5,
+ keys ==3.10.1,
+ language-javascript ==0.5.13,
+ lens ==4.4.0.2,
+ libxml-sax ==0.7.5,
+ mime-mail ==0.4.1.2,
+ mime-types ==0.1.0.4,
+ mmorph ==1.0.3,
+ monad-control ==0.3.2.2,
+ monad-logger ==0.3.6.1,
monad-loops ==0.4.2.1,
- monad-par ==0.3.4.7,
- monad-parallel ==0.7.1.4,
- monad-par-extras ==0.3.3,
- monad-primitive ==0.1,
- monad-products ==4.0.0.1,
- MonadPrompt ==1.0.0.5,
- MonadRandom ==0.3.0.2,
- monad-st ==0.2.4,
monads-tf ==0.1.0.2,
- mongoDB ==2.0.5,
- monoid-extras ==0.3.3.5,
- monoid-subclasses ==0.4.0.4,
- mono-traversable ==0.9.1,
- mtl ==2.1.3.1,
- mtl-compat ==0.2.1.1,
- mtlparse ==0.1.4.0,
- mtl-prelude ==1.0.3,
- multiarg ==0.30.0.8,
- multimap ==1.2.1,
- multipart ==0.1.2,
- MusicBrainz ==0.2.4,
- mutable-containers ==0.3.0,
- mwc-random ==0.13.3.2,
- mysql ==0.1.1.8,
- mysql-simple ==0.2.2.5,
- nanospec ==0.2.1,
- nats ==1,
- neat-interpolation ==0.2.2.1,
- nettle ==0.1.0,
- network ==2.6.1.0,
- network-anonymous-i2p ==0.10.0,
- network-attoparsec ==0.12.2,
+ mtl ==2.1.2,
+ nats ==0.1.2,
+ network ==2.4.1.2,
network-conduit ==1.1.0,
- network-conduit-tls ==1.1.2,
network-info ==0.2.0.5,
- network-multicast ==0.0.11,
- network-simple ==0.4.0.4,
- network-transport ==0.4.1.0,
- network-transport-tcp ==0.4.1,
- network-transport-tests ==0.2.2.0,
- network-uri ==2.6.0.3,
- newtype ==0.2,
- nsis ==0.2.5,
- numbers ==3000.2.0.1,
- numeric-extras ==0.0.3,
- NumInstances ==1.4,
- numtype ==1.1,
- ObjectName ==1.1.0.0,
- Octree ==0.5.4.2,
- old-locale installed,
- OneTuple ==0.2.1,
- opaleye ==0.3.1.2,
- OpenGL ==2.12.0.1,
- OpenGLRaw ==2.4.1.0,
- openpgp-asciiarmor ==0.1,
- operational ==0.2.3.2,
- options ==1.2.1.1,
+ network-multicast ==0.0.10,
+ network-protocol-xmpp ==0.4.6,
+ network-uri ==2.6.0.1,
optparse-applicative ==0.11.0.2,
- optparse-simple ==0.0.2,
- osdkeys ==0.0,
- pagerduty ==0.0.3.1,
- palette ==0.1.0.2,
- pandoc ==1.13.2.1,
- pandoc-citeproc ==0.6.0.1,
- pandoc-types ==1.12.4.2,
- pango ==0.13.1.0,
- parallel ==3.2.0.6,
- parallel-io ==0.3.3,
- parseargs ==0.1.5.2,
- parsec ==3.1.9,
- parsers ==0.12.2.1,
- partial-handler ==0.1.1,
- path-pieces ==0.2.0,
- patience ==0.1.1,
- pcre-heavy ==0.2.2,
- pcre-light ==0.4.0.3,
- pdfinfo ==1.5.4,
+ parallel ==3.2.0.4,
+ path-pieces ==0.1.4,
pem ==0.2.2,
- persistent ==2.1.5,
- persistent-mongoDB ==2.1.2.2,
- persistent-mysql ==2.1.3.1,
- persistent-postgresql ==2.1.5.3,
- persistent-sqlite ==2.1.4.2,
- persistent-template ==2.1.3.1,
- phantom-state ==0.2.0.2,
- picoparsec ==0.1.2.2,
- pipes ==4.1.5,
- pipes-aeson ==0.4.1.3,
- pipes-attoparsec ==0.5.1.2,
- pipes-binary ==0.4.0.4,
- pipes-bytestring ==2.1.1,
- pipes-concurrency ==2.0.3,
- pipes-group ==1.0.2,
- pipes-network ==0.6.4,
- pipes-parse ==3.0.2,
- pipes-safe ==2.2.2,
- placeholders ==0.1,
- plot ==0.2.3.4,
- plot-gtk ==0.2.0.2,
- plot-gtk3 ==0.1,
- pointed ==4.2.0.2,
- polyparse ==1.11,
- postgresql-binary ==0.5.2.1,
- postgresql-libpq ==0.9.0.2,
- postgresql-simple ==0.4.10.0,
- post-mess-age ==0.1.0.0,
- prednote ==0.32.0.6,
- prefix-units ==0.1.0.2,
+ persistent ==1.3.3,
+ persistent-template ==1.3.2.2,
+ pointed ==4.0,
prelude-extras ==0.4,
- presburger ==1.3.1,
- present ==2.2,
- pretty installed,
- prettyclass ==1.0.0.0,
- pretty-class ==1.0.1.1,
- pretty-show ==1.6.8.2,
- primes ==0.2.1.0,
- primitive ==0.6,
- process installed,
- process-extras ==0.3.3.4,
- product-profunctors ==0.6.1,
- profunctor-extras ==4.0,
- profunctors ==4.4.1,
- project-template ==0.1.4.2,
- PSQueue ==1.1,
+ profunctors ==4.0.4,
publicsuffixlist ==0.1,
punycode ==2.0,
- pure-io ==0.2.1,
- pureMD5 ==2.1.2.1,
- pwstore-fast ==2.4.4,
- quandl-api ==0.2.1.0,
- QuasiText ==0.1.2.5,
- QuickCheck ==2.7.6,
- quickcheck-assertions ==0.2.0,
- quickcheck-instances ==0.3.11,
- quickcheck-io ==0.1.1,
- quickcheck-unicode ==1.0.0.1,
- rainbow ==0.22.0.2,
- random ==1.1,
- random-fu ==0.2.6.2,
- random-shuffle ==0.0.4,
- random-source ==0.3.0.6,
- rank1dynamic ==0.2.0.1,
- Rasterific ==0.5.2.1,
- rasterific-svg ==0.1.0.3,
- raw-strings-qq ==1.0.2,
- ReadArgs ==1.2.2,
- reducers ==3.10.3.1,
- reflection ==1.5.2.1,
- RefSerialize ==0.3.1.4,
- regex-applicative ==0.3.1,
+ random ==1.0.1.1,
+ ranges ==0.2.4,
+ reducers ==3.10.2.1,
+ reflection ==1.2.0.1,
regex-base ==0.93.2,
regex-compat ==0.95.1,
- regex-pcre-builtin ==0.94.4.8.8.35,
regex-posix ==0.95.2,
- regexpr ==0.5.4,
regex-tdfa ==1.2.0,
- regex-tdfa-rc ==1.1.8.3,
- regular ==0.3.4.4,
- regular-xmlpickler ==0.2,
- rematch ==0.2.0.0,
- repa ==3.3.1.2,
- repa-algorithms ==3.3.1.2,
- repa-devil ==0.3.2.6,
- repa-io ==3.3.1.2,
- reroute ==0.2.3.0,
- resource-pool ==0.2.3.2,
- resourcet ==1.1.5,
- rest-client ==0.5.0.3,
- rest-core ==0.35.1,
- rest-gen ==0.17.0.4,
- rest-happstack ==0.2.10.8,
- rest-snap ==0.1.17.18,
- rest-stringmap ==0.2.0.4,
- rest-types ==1.13.1,
- rest-wai ==0.1.0.8,
- rethinkdb-client-driver ==0.0.18,
- retry ==0.6,
- rev-state ==0.1,
- rfc5051 ==0.1.0.3,
- RSA ==2.1.0.1,
- rts installed,
- runmemo ==1.0.0.1,
- rvar ==0.2.0.2,
- safe ==0.3.9,
- safecopy ==0.8.5,
- sbv ==4.2,
- scientific ==0.3.3.8,
- scotty ==0.9.1,
- scrobble ==0.2.1.1,
- sdl2 ==1.3.1,
- securemem ==0.1.7,
- semigroupoid-extras ==4.0,
- semigroupoids ==4.3,
- semigroups ==0.16.2.2,
- semver ==0.3.3.1,
- sendfile ==0.7.9,
- seqloc ==0.6.1.1,
- servant ==0.2.2,
- servant-client ==0.2.2,
- servant-docs ==0.3.1,
- servant-jquery ==0.2.2.1,
- servant-server ==0.2.4,
- setenv ==0.1.1.3,
- set-monad ==0.2.0.0,
- SHA ==1.6.4.2,
- shake ==0.15.2,
- shake-language-c ==0.6.4,
+ resource-pool ==0.2.1.1,
+ resourcet ==1.1.2.3,
+ safe ==0.3.8,
+ securemem ==0.1.3,
+ semigroupoids ==4.2,
+ semigroups ==0.15.3,
shakespeare ==2.0.5,
- shakespeare-text ==1.1.0,
- shell-conduit ==4.5.2,
- shelltestrunner ==1.3.5,
- shelly ==1.6.1.2,
silently ==1.2.4.1,
- simple-reflect ==0.3.2,
- simple-sendfile ==0.2.20,
- singletons ==1.1.2,
- siphash ==1.0.3,
- skein ==1.0.9.3,
- slave-thread ==0.1.6,
- smallcheck ==1.1.1,
- smoothie ==0.1.3,
- smtLib ==1.0.7,
- snap ==0.14.0.4,
- snap-core ==0.9.7.0,
- snaplet-fay ==0.3.3.11,
- snap-server ==0.9.5.1,
- snowflake ==0.1.1.1,
- soap ==0.2.2.5,
- soap-openssl ==0.1.0.2,
- soap-tls ==0.1.1.2,
+ simple-sendfile ==0.2.14,
+ skein ==1.0.9,
socks ==0.5.4,
- sodium ==0.11.0.3,
- sourcemap ==0.1.3.0,
- speculation ==1.5.0.2,
- sphinx ==0.6.0.1,
split ==0.2.2,
- Spock ==0.7.9.0,
- Spock-digestive ==0.1.0.0,
- Spock-worker ==0.2.1.3,
- spoon ==0.3.1,
- sqlite-simple ==0.4.8.0,
- srcloc ==0.4.1,
- stackage ==0.7.2.0,
- stackage-build-plan ==0.1.1.0,
- stackage-cli ==0.1.0.2,
- stackage-curator ==0.7.4,
- stackage-install ==0.1.1.1,
- stackage-types ==1.0.1.1,
- stackage-update ==0.1.2,
- stackage-upload ==0.1.0.5,
- stateref ==0.3,
- statestack ==0.2.0.4,
- StateVar ==1.1.0.0,
- statistics ==0.13.2.3,
- statistics-linreg ==0.3,
- stm ==2.4.4,
- stm-chans ==3.0.0.3,
- stm-conduit ==2.5.4,
- stm-containers ==0.2.9,
- stm-stats ==0.2.0.0,
- storable-complex ==0.2.2,
- storable-endian ==0.2.5,
- streaming-commons ==0.1.12.1,
- streams ==3.2,
- strict ==0.3.2,
- stringable ==0.1.3,
- stringbuilder ==0.5.0,
- string-conversions ==0.3.0.3,
- stringprep ==1.0.0,
- stringsearch ==0.3.6.6,
- stylish-haskell ==0.5.13.0,
- SVGFonts ==1.4.0.3,
- svg-tree ==0.1.1,
- syb ==0.4.4,
- syb-with-class ==0.6.1.5,
- symbol ==0.2.4,
- system-canonicalpath ==0.3.2.0,
- system-fileio ==0.3.16.3,
- system-filepath ==0.4.13.4,
- system-posix-redirect ==1.1.0.1,
- tabular ==0.2.2.7,
- tagged ==0.7.3,
- tagshare ==0.0,
- tagsoup ==0.13.3,
- tagstream-conduit ==0.5.5.3,
- tar ==0.4.1.0,
- tardis ==0.3.0.0,
- tasty ==0.10.1.2,
- tasty-ant-xml ==1.0.1,
- tasty-golden ==2.3.0.1,
- tasty-hunit ==0.9.2,
- tasty-kat ==0.0.3,
- tasty-quickcheck ==0.8.3.2,
- tasty-smallcheck ==0.8.0.1,
- tasty-th ==0.1.3,
- TCache ==0.12.0,
- template-haskell installed,
- temporary ==1.2.0.3,
- temporary-rc ==1.2.0.3,
- terminal-progress-bar ==0.0.1.4,
- terminal-size ==0.3.0,
- terminfo installed,
- test-framework ==0.8.1.1,
- test-framework-hunit ==0.3.0.1,
- test-framework-quickcheck2 ==0.3.0.3,
- test-framework-th ==0.2.4,
- testing-feat ==0.4.0.2,
- testpack ==2.1.3.0,
- texmath ==0.8.2,
- text ==1.2.0.6,
- text-binary ==0.1.0,
- text-format ==0.3.1.1,
- text-icu ==0.7.0.1,
- text-manipulate ==0.1.3.1,
+ stm ==2.4.2,
+ stm-chans ==3.0.0.2,
+ streaming-commons ==0.1.4.1,
+ stringprep ==0.1.5,
+ stringsearch ==0.3.6.5,
+ syb ==0.4.0,
+ system-fileio ==0.3.14,
+ system-filepath ==0.4.12,
+ tagged ==0.7.2,
+ tagsoup ==0.13.1,
+ tagstream-conduit ==0.5.5.1,
+ tasty ==0.10,
+ tasty-hunit ==0.9,
+ tasty-quickcheck ==0.8.1,
+ tasty-rerun ==1.1.3,
+ text ==1.1.1.0,
+ text-icu ==0.6.3.7,
tf-random ==0.5,
- th-desugar ==1.5.3,
- th-expand-syns ==0.3.0.6,
- th-extras ==0.0.0.2,
- th-lift ==0.7.2,
- th-orphans ==0.11.1,
- threads ==0.5.1.3,
- th-reify-many ==0.1.3,
- thyme ==0.3.5.5,
- time installed,
- time-compat ==0.1.0.3,
- time-lens ==0.4.0.1,
- time-locale-compat ==0.1.0.1,
- timezone-olson ==0.1.7,
- timezone-series ==0.1.5.1,
- tls ==1.2.17,
- tls-debug ==0.3.4,
- tostring ==0.2.1.1,
- transformers-base ==0.4.4,
- transformers-compat ==0.4.0.3,
- traverse-with-class ==0.2.0.3,
- tree-view ==0.4,
- trifecta ==1.5.1.3,
- tttool ==1.3,
- tuple ==0.3.0.2,
- turtle ==1.0.2,
- type-eq ==0.5,
- type-list ==0.0.0.1,
- udbus ==0.2.1,
- unbounded-delays ==0.1.0.9,
- unbound-generics ==0.1.2.1,
- union-find ==0.2,
- uniplate ==1.6.12,
- unix installed,
- unix-compat ==0.4.1.4,
- unix-time ==0.3.5,
- unordered-containers ==0.2.5.1,
- uri-encode ==1.5.0.4,
- url ==2.1.3,
- users ==0.1.0.0,
- users-postgresql-simple ==0.1.0.1,
- users-test ==0.1.0.0,
- utf8-light ==0.4.2,
- utf8-string ==1,
- uuid ==1.3.10,
- uuid-types ==1.0.1,
- vault ==0.3.0.4,
- vector ==0.10.12.3,
- vector-algorithms ==0.6.0.4,
- vector-binary-instances ==0.2.1.0,
- vector-buffer ==0.4.1,
- vector-instances ==3.3.0.1,
- vector-space ==0.9,
- vector-space-points ==0.2.1.1,
- vector-th-unbox ==0.2.1.2,
- vhd ==0.2.2,
- void ==0.7,
- wai ==3.0.2.3,
- wai-app-static ==3.0.1.1,
- wai-conduit ==3.0.0.2,
- wai-eventsource ==3.0.0,
- wai-extra ==3.0.7.1,
- wai-handler-launch ==3.0.0.3,
- wai-logger ==2.2.4,
- wai-middleware-consul ==0.1.0.2,
- wai-middleware-static ==0.6.0.1,
- waitra ==0.0.3.0,
- wai-websockets ==3.0.0.5,
- warp ==3.0.13.1,
- warp-tls ==3.0.3,
- webdriver ==0.6.1,
- web-fpco ==0.1.1.0,
- websockets ==0.9.4.0,
- wizards ==1.0.2,
- wl-pprint ==1.1,
- wl-pprint-extras ==3.5.0.4,
- wl-pprint-terminfo ==3.7.1.3,
- wl-pprint-text ==1.1.0.4,
- word8 ==0.1.2,
- wordpass ==1.0.0.3,
- Workflow ==0.8.3,
- wrap ==0.0.0,
- wreq ==0.3.0.1,
- X11 ==1.6.1.2,
- x509 ==1.5.0.1,
- x509-store ==1.5.0,
- x509-system ==1.5.0,
- x509-validation ==1.5.2,
- xenstore ==0.1.1,
- xhtml installed,
- xml ==1.3.14,
- xml-conduit ==1.2.6,
- xml-conduit-writer ==0.1.1.1,
- xmlgen ==0.6.2.1,
- xml-hamlet ==0.4.0.11,
- xmlhtml ==0.2.3.4,
- xml-to-json ==2.0.1,
- xml-to-json-fast ==2.0.0,
+ tls ==1.2.9,
+ transformers ==0.3.0.0,
+ transformers-base ==0.4.1,
+ transformers-compat ==0.3.3.3,
+ unbounded-delays ==0.1.0.8,
+ unix-compat ==0.4.1.3,
+ unix-time ==0.2.2,
+ unordered-containers ==0.2.5.0,
+ utf8-string ==0.3.7,
+ uuid ==1.3.3,
+ vault ==0.3.0.3,
+ vector ==0.10.0.1,
+ void ==0.6.1,
+ wai ==3.0.1.1,
+ wai-app-static ==3.0.0.1,
+ wai-extra ==3.0.1.2,
+ wai-logger ==2.1.1,
+ warp ==3.0.0.5,
+ warp-tls ==3.0.0,
+ word8 ==0.1.1,
+ x509 ==1.4.11,
+ x509-store ==1.4.4,
+ x509-system ==1.4.5,
+ x509-validation ==1.5.0,
+ xml ==1.3.13,
+ xml-conduit ==1.2.1,
+ xml-hamlet ==0.4.0.9,
xml-types ==0.3.4,
- xss-sanitize ==0.3.5.5,
- yackage ==0.7.0.8,
- yaml ==0.8.11,
- Yampa ==0.9.7,
- YampaSynth ==0.2,
- yarr ==1.3.3.3,
- yesod ==1.4.1.5,
- yesod-auth ==1.4.5,
- yesod-auth-deskcom ==1.4.0,
- yesod-auth-fb ==1.6.6,
- yesod-auth-hashdb ==1.4.2.1,
- yesod-auth-oauth ==1.4.0.2,
- yesod-auth-oauth2 ==0.0.12,
- yesod-bin ==1.4.9.2,
- yesod-core ==1.4.9.1,
- yesod-eventsource ==1.4.0.1,
- yesod-fay ==0.7.1,
- yesod-fb ==0.3.4,
- yesod-form ==1.4.4.1,
- yesod-gitrepo ==0.1.1.0,
- yesod-newsfeed ==1.4.0.1,
- yesod-persistent ==1.4.0.2,
- yesod-sitemap ==1.4.0.1,
- yesod-static ==1.4.0.4,
- yesod-test ==1.4.3.1,
- yesod-text-markdown ==0.1.7,
- yesod-websockets ==0.2.1.1,
- zeromq4-haskell ==0.6.3,
- zip-archive ==0.2.3.7,
- zlib ==0.5.4.2,
- zlib-bindings ==0.1.1.5,
- zlib-enum ==0.2.3.1,
- zlib-lens ==0.1.2
+ xss-sanitize ==0.3.5.2,
+ yaml ==0.8.9.3,
+ yesod ==1.2.6.1,
+ yesod-auth ==1.3.4.6,
+ yesod-core ==1.2.20.1,
+ yesod-default ==1.2.0,
+ yesod-form ==1.3.16,
+ yesod-persistent ==1.2.3.1,
+ yesod-routes ==1.2.0.7,
+ yesod-static ==1.2.4,
+ zlib ==0.5.4.1,
+ bytestring ==0.10.4.0,
+ scientific ==0.3.3.1,
+ clock ==0.4.6.0
diff --git a/standalone/android/haskell-patches/crypto-numbers_build-fix.patch b/standalone/android/haskell-patches/crypto-numbers_build-fix.patch
new file mode 100644
index 000000000..5c0693a31
--- /dev/null
+++ b/standalone/android/haskell-patches/crypto-numbers_build-fix.patch
@@ -0,0 +1,227 @@
+From 0cfdb30120976290068f4bcbebbf236b960afbb6 Mon Sep 17 00:00:00 2001
+From: dummy <dummy@example.com>
+Date: Thu, 26 Dec 2013 20:01:30 -0400
+Subject: [PATCH] hack to build
+
+---
+ Crypto/Number/Basic.hs | 14 --------------
+ Crypto/Number/ModArithmetic.hs | 29 -----------------------------
+ Crypto/Number/Prime.hs | 18 ------------------
+ crypto-numbers.cabal | 2 +-
+ 4 files changed, 1 insertion(+), 62 deletions(-)
+
+diff --git a/Crypto/Number/Basic.hs b/Crypto/Number/Basic.hs
+index 65c14b3..eaee853 100644
+--- a/Crypto/Number/Basic.hs
++++ b/Crypto/Number/Basic.hs
+@@ -20,11 +20,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
+@@ -63,25 +59,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'
+@@ -105,7 +92,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 942c12f..f8cfc32 100644
+--- a/Crypto/Number/ModArithmetic.hs
++++ b/Crypto/Number/ModArithmetic.hs
+@@ -29,12 +29,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
+@@ -55,13 +51,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
+@@ -74,11 +64,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
+@@ -87,22 +73,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
+@@ -110,7 +89,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
+@@ -122,17 +100,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 0cea9da..458c94d 100644
+--- a/Crypto/Number/Prime.hs
++++ b/Crypto/Number/Prime.hs
+@@ -3,9 +3,7 @@
+ #ifndef MIN_VERSION_integer_gmp
+ #define MIN_VERSION_integer_gmp(a,b,c) 0
+ #endif
+-#if MIN_VERSION_integer_gmp(0,5,1)
+ {-# LANGUAGE MagicHash #-}
+-#endif
+ -- |
+ -- Module : Crypto.Number.Prime
+ -- License : BSD-style
+@@ -30,12 +28,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,
+@@ -78,21 +71,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)
+@@ -129,7 +112,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 9610e34..6669d78 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
+
diff --git a/standalone/android/haskell-patches/dns_use-android-net.dns1-command-instead-of-resolv.conf.patch b/standalone/android/haskell-patches/dns_use-android-net.dns1-command-instead-of-resolv.conf.patch
index 2b23c6d24..962a64207 100644
--- a/standalone/android/haskell-patches/dns_use-android-net.dns1-command-instead-of-resolv.conf.patch
+++ b/standalone/android/haskell-patches/dns_use-android-net.dns1-command-instead-of-resolv.conf.patch
@@ -1,6 +1,6 @@
-From e5072d9b721cc25fa1017df97d71bf926a78d4e5 Mon Sep 17 00:00:00 2001
+From 087f1ae5e17f0e6d7c9f6b4092a5bb5bb6f5bf60 Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
-Date: Fri, 3 Jul 2015 02:24:19 +0000
+Date: Thu, 16 Oct 2014 02:59:11 +0000
Subject: [PATCH] port
---
@@ -9,48 +9,48 @@ Subject: [PATCH] port
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/Network/DNS/Resolver.hs b/Network/DNS/Resolver.hs
-index 31f6373..6487c7b 100644
+index 5721e03..c4400d1 100644
--- a/Network/DNS/Resolver.hs
+++ b/Network/DNS/Resolver.hs
-@@ -18,7 +18,7 @@ module Network.DNS.Resolver (
- , fromDNSFormat
+@@ -19,7 +19,7 @@ module Network.DNS.Resolver (
) where
+ import Control.Applicative ((<$>), (<*>), pure)
-import Control.Exception (bracket)
+import Control.Exception (bracket, catch, IOException)
+ import qualified Data.ByteString.Char8 as BS
import Data.Char (isSpace)
import Data.List (isPrefixOf)
- import Data.Maybe (fromMaybe)
-@@ -32,6 +32,7 @@ import Network.Socket (AddrInfoFlag(..), AddrInfo(..), SockAddr(..), PortNumber(
+@@ -32,6 +32,7 @@ import Network.Socket (AddrInfoFlag(..), AddrInfo(..), defaultHints, getAddrInfo
import Prelude hiding (lookup)
import System.Random (getStdRandom, randomR)
import System.Timeout (timeout)
+import System.Process
- #if __GLASGOW_HASKELL__ < 709
- import Control.Applicative ((<$>), (<*>), pure)
-@@ -136,10 +137,12 @@ makeResolvSeed conf = ResolvSeed <$> addr
+ #if mingw32_HOST_OS == 1
+ import Network.Socket (send)
+@@ -130,10 +131,12 @@ makeResolvSeed conf = ResolvSeed <$> addr
+ where
addr = case resolvInfo conf of
- RCHostName numhost -> makeAddrInfo numhost Nothing
- RCHostPort numhost mport -> makeAddrInfo numhost $ Just mport
-- RCFilePath file -> toAddr <$> readFile file >>= \i -> makeAddrInfo i Nothing
+ RCHostName numhost -> makeAddrInfo numhost
+- RCFilePath file -> toAddr <$> readFile file >>= makeAddrInfo
- toAddr cs = let l:_ = filter ("nameserver" `isPrefixOf`) $ lines cs
- in extract l
- extract = reverse . dropWhile isSpace . reverse . dropWhile isSpace . drop 11
+ RCFilePath file -> do
+ -- Android has no /etc/resolv.conf; use getprop command.
+ ls <- catch (lines <$> readProcess "getprop" ["net.dns1"] []) (const (return []) :: IOException -> IO [String])
-+ flip makeAddrInfo Nothing $ case ls of
++ makeAddrInfo $ case ls of
+ [] -> "8.8.8.8" -- google public dns as a fallback only
+ (l:_) -> l
- makeAddrInfo :: HostName -> Maybe PortNumber -> IO AddrInfo
- makeAddrInfo addr mport = do
+ makeAddrInfo :: HostName -> IO AddrInfo
+ makeAddrInfo addr = do
diff --git a/dns.cabal b/dns.cabal
-index 0745754..8cf4b67 100644
+index ceaf5f4..cd15e61 100644
--- a/dns.cabal
+++ b/dns.cabal
-@@ -39,6 +39,7 @@ Library
+@@ -37,6 +37,7 @@ Library
, network >= 2.3
, random
, resourcet
@@ -59,5 +59,5 @@ index 0745754..8cf4b67 100644
Build-Depends: base >= 4 && < 5
, attoparsec
--
-2.1.4
+2.1.1
diff --git a/standalone/android/haskell-patches/entropy_cross-build.patch b/standalone/android/haskell-patches/entropy_cross-build.patch
deleted file mode 100644
index 4c27ac479..000000000
--- a/standalone/android/haskell-patches/entropy_cross-build.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 8e942c1f661b30e5477607b78528634e6d345ae8 Mon Sep 17 00:00:00 2001
-From: androidbuilder <androidbuilder@example.com>
-Date: Thu, 2 Jul 2015 21:16:15 +0000
-Subject: [PATCH] cross build
-
----
- entropy.cabal | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/entropy.cabal b/entropy.cabal
-index e4fb436..e26896c 100644
---- a/entropy.cabal
-+++ b/entropy.cabal
-@@ -14,10 +14,7 @@ category: Data, Cryptography
- homepage: https://github.com/TomMD/entropy
- bug-reports: https://github.com/TomMD/entropy/issues
- stability: stable
---- build-type: Simple
---- ^^ Used for HaLVM
--build-type: Custom
---- ^^ Test for RDRAND support using 'ghc'
-+build-type: Simple
- cabal-version: >=1.10
- tested-with: GHC == 7.8.2
- -- data-files:
---
-2.1.4
diff --git a/standalone/android/haskell-patches/gnuidn_fix-build-with-new-base.patch b/standalone/android/haskell-patches/gnuidn_fix-build-with-new-base.patch
new file mode 100644
index 000000000..ff9d8f245
--- /dev/null
+++ b/standalone/android/haskell-patches/gnuidn_fix-build-with-new-base.patch
@@ -0,0 +1,50 @@
+From afdec6c9e66211a0ac8419fffe191b059d1fd00c Mon Sep 17 00:00:00 2001
+From: foo <foo@bar>
+Date: Sun, 22 Sep 2013 17:24:33 +0000
+Subject: [PATCH] fix build with new base
+
+---
+ Data/Text/IDN/IDNA.chs | 1 +
+ Data/Text/IDN/Punycode.chs | 1 +
+ Data/Text/IDN/StringPrep.chs | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/Data/Text/IDN/IDNA.chs b/Data/Text/IDN/IDNA.chs
+index ed29ee4..dbb4ba5 100644
+--- a/Data/Text/IDN/IDNA.chs
++++ b/Data/Text/IDN/IDNA.chs
+@@ -31,6 +31,7 @@ import Foreign
+ import Foreign.C
+
+ import Data.Text.IDN.Internal
++import System.IO.Unsafe
+
+ #include <idna.h>
+ #include <idn-free.h>
+diff --git a/Data/Text/IDN/Punycode.chs b/Data/Text/IDN/Punycode.chs
+index 24b5fa6..4e62555 100644
+--- a/Data/Text/IDN/Punycode.chs
++++ b/Data/Text/IDN/Punycode.chs
+@@ -32,6 +32,7 @@ import Data.List (unfoldr)
+ import qualified Data.ByteString as B
+ import qualified Data.Text as T
+
++import System.IO.Unsafe
+ import Foreign
+ import Foreign.C
+
+diff --git a/Data/Text/IDN/StringPrep.chs b/Data/Text/IDN/StringPrep.chs
+index 752dc9e..5e9fd84 100644
+--- a/Data/Text/IDN/StringPrep.chs
++++ b/Data/Text/IDN/StringPrep.chs
+@@ -39,6 +39,7 @@ import qualified Data.ByteString as B
+ import qualified Data.Text as T
+ import qualified Data.Text.Encoding as TE
+
++import System.IO.Unsafe
+ import Foreign
+ import Foreign.C
+
+--
+1.7.10.4
+
diff --git a/standalone/android/haskell-patches/iproute_1.2.11_0001-build-without-IPv6-stuff.patch b/standalone/android/haskell-patches/iproute_1.2.11_0001-build-without-IPv6-stuff.patch
index 13cfbd232..bb9caec77 100644
--- a/standalone/android/haskell-patches/iproute_1.2.11_0001-build-without-IPv6-stuff.patch
+++ b/standalone/android/haskell-patches/iproute_1.2.11_0001-build-without-IPv6-stuff.patch
@@ -1,31 +1,31 @@
-From b2b88224426fe6c7c72ebdec2946fd1ddbacbfaf Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 2 Jul 2015 20:42:50 +0000
+From 7beec2e707d59f9573aa2dc7c57bd2a62f16b480 Mon Sep 17 00:00:00 2001
+From: Joey Hess <joey@kitenet.net>
+Date: Wed, 15 May 2013 19:06:03 -0400
Subject: [PATCH] build without IPv6 stuff
---
- Data/IP.hs | 2 +-
- Data/IP/Addr.hs | 3 +++
+ Data/IP.hs | 2 +-
+ Data/IP/Addr.hs | 3 +++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/Data/IP.hs b/Data/IP.hs
-index 306a488..e3f252e 100644
+index cffef93..ea486c9 100644
--- a/Data/IP.hs
+++ b/Data/IP.hs
@@ -6,7 +6,7 @@ module Data.IP (
-- ** IP data
IP (..)
, IPv4, toIPv4, fromIPv4, fromHostAddress, toHostAddress
-- , IPv6, toIPv6, toIPv6b, fromIPv6, fromIPv6b, fromHostAddress6, toHostAddress6
-+ , IPv6, toIPv6, toIPv6b, fromIPv6, fromIPv6b -- , fromHostAddress6, toHostAddress6
+- , IPv6, toIPv6, fromIPv6, fromHostAddress6, toHostAddress6
++ , IPv6, toIPv6, fromIPv6 -- , fromHostAddress6, toHostAddress6
-- ** IP range data
, IPRange (..)
, AddrRange (addr, mask, mlen)
diff --git a/Data/IP/Addr.hs b/Data/IP/Addr.hs
-index 8d4131e..868a572 100644
+index faaf0c7..5b556fb 100644
--- a/Data/IP/Addr.hs
+++ b/Data/IP/Addr.hs
-@@ -376,6 +376,7 @@ toHostAddress (IP4 addr4)
+@@ -312,6 +312,7 @@ toHostAddress (IP4 addr4)
| byteOrder == LittleEndian = fixByteOrder addr4
| otherwise = addr4
@@ -33,7 +33,7 @@ index 8d4131e..868a572 100644
-- | The 'fromHostAddress6' function converts 'HostAddress6' to 'IPv6'.
fromHostAddress6 :: HostAddress6 -> IPv6
fromHostAddress6 = IP6
-@@ -384,6 +385,8 @@ fromHostAddress6 = IP6
+@@ -320,6 +321,8 @@ fromHostAddress6 = IP6
toHostAddress6 :: IPv6 -> HostAddress6
toHostAddress6 (IP6 addr6) = addr6
@@ -43,5 +43,5 @@ index 8d4131e..868a572 100644
fixByteOrder s = d1 .|. d2 .|. d3 .|. d4
where
--
-2.1.4
+1.7.10.4
diff --git a/standalone/android/haskell-patches/network_2.4.1.0_0002-remove-Network.BSD-symbols-not-available-in-bionic.patch b/standalone/android/haskell-patches/network_2.4.1.0_0002-remove-Network.BSD-symbols-not-available-in-bionic.patch
index e4ebc3ef4..5b07f233b 100644
--- a/standalone/android/haskell-patches/network_2.4.1.0_0002-remove-Network.BSD-symbols-not-available-in-bionic.patch
+++ b/standalone/android/haskell-patches/network_2.4.1.0_0002-remove-Network.BSD-symbols-not-available-in-bionic.patch
@@ -1,17 +1,17 @@
-From 508b4701c1610d9772564b97a74b5fa01dab48e2 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 2 Jul 2015 20:12:59 +0000
+From 7861b133bb269b50fcf709291449cb0473818902 Mon Sep 17 00:00:00 2001
+From: Joey Hess <joey@kitenet.net>
+Date: Sun, 29 Dec 2013 21:29:23 +0000
Subject: [PATCH] remove Network.BSD symbols not available in bionic
---
- Network/BSD.hsc | 100 --------------------------------------------------------
- 1 file changed, 100 deletions(-)
+ Network/BSD.hsc | 98 -------------------------------------------------------
+ 1 file changed, 98 deletions(-)
diff --git a/Network/BSD.hsc b/Network/BSD.hsc
-index b5e9a26..f085f2a 100644
+index d6dae85..27910f4 100644
--- a/Network/BSD.hsc
+++ b/Network/BSD.hsc
-@@ -27,15 +27,6 @@ module Network.BSD
+@@ -30,15 +30,6 @@ module Network.BSD
, getHostByAddr
, hostAddress
@@ -27,7 +27,7 @@ index b5e9a26..f085f2a 100644
-- * Service names
, ServiceEntry(..)
, ServiceName
-@@ -61,14 +52,6 @@ module Network.BSD
+@@ -64,14 +55,6 @@ module Network.BSD
, getProtocolNumber
, defaultProtocol
@@ -42,7 +42,7 @@ index b5e9a26..f085f2a 100644
-- * Port numbers
, PortNumber
-@@ -80,11 +63,7 @@ module Network.BSD
+@@ -83,11 +66,7 @@ module Network.BSD
#if !defined(cygwin32_HOST_OS) && !defined(mingw32_HOST_OS) && !defined(_WIN32)
, getNetworkByName
, getNetworkByAddr
@@ -52,9 +52,9 @@ index b5e9a26..f085f2a 100644
- , getNetworkEntry
- , endNetworkEntry
#endif
+ ) where
- #if defined(HAVE_IF_NAMETOINDEX)
-@@ -298,31 +277,6 @@ getProtocolNumber proto = do
+@@ -303,31 +282,6 @@ getProtocolNumber proto = do
(ProtocolEntry _ _ num) <- getProtocolByName proto
return num
@@ -62,18 +62,18 @@ index b5e9a26..f085f2a 100644
-getProtocolEntry :: IO ProtocolEntry -- Next Protocol Entry from DB
-getProtocolEntry = withLock $ do
- ent <- throwNoSuchThingIfNull "getProtocolEntry" "no such protocol entry"
-- $ c_getprotoent
+- $ trySysCall c_getprotoent
- peek ent
-
-foreign import ccall unsafe "getprotoent" c_getprotoent :: IO (Ptr ProtocolEntry)
-
-setProtocolEntry :: Bool -> IO () -- Keep DB Open ?
--setProtocolEntry flg = withLock $ c_setprotoent (fromBool flg)
+-setProtocolEntry flg = withLock $ trySysCall $ c_setprotoent (fromBool flg)
-
-foreign import ccall unsafe "setprotoent" c_setprotoent :: CInt -> IO ()
-
-endProtocolEntry :: IO ()
--endProtocolEntry = withLock $ c_endprotoent
+-endProtocolEntry = withLock $ trySysCall $ c_endprotoent
-
-foreign import ccall unsafe "endprotoent" c_endprotoent :: IO ()
-
@@ -86,7 +86,7 @@ index b5e9a26..f085f2a 100644
-- ---------------------------------------------------------------------------
-- Host lookups
-@@ -397,31 +351,6 @@ getHostByAddr family addr = do
+@@ -402,31 +356,6 @@ getHostByAddr family addr = do
foreign import CALLCONV safe "gethostbyaddr"
c_gethostbyaddr :: Ptr HostAddress -> CInt -> CInt -> IO (Ptr HostEntry)
@@ -94,13 +94,13 @@ index b5e9a26..f085f2a 100644
-getHostEntry :: IO HostEntry
-getHostEntry = withLock $ do
- throwNoSuchThingIfNull "getHostEntry" "unable to retrieve host entry"
-- $ c_gethostent
+- $ trySysCall $ c_gethostent
- >>= peek
-
-foreign import ccall unsafe "gethostent" c_gethostent :: IO (Ptr HostEntry)
-
-setHostEntry :: Bool -> IO ()
--setHostEntry flg = withLock $ c_sethostent (fromBool flg)
+-setHostEntry flg = withLock $ trySysCall $ c_sethostent (fromBool flg)
-
-foreign import ccall unsafe "sethostent" c_sethostent :: CInt -> IO ()
-
@@ -118,14 +118,14 @@ index b5e9a26..f085f2a 100644
-- ---------------------------------------------------------------------------
-- Accessing network information
-@@ -483,35 +412,6 @@ getNetworkByAddr addr family = withLock $ do
+@@ -488,33 +417,6 @@ getNetworkByAddr addr family = withLock $ do
foreign import ccall unsafe "getnetbyaddr"
c_getnetbyaddr :: NetworkAddr -> CInt -> IO (Ptr NetworkEntry)
-getNetworkEntry :: IO NetworkEntry
-getNetworkEntry = withLock $ do
- throwNoSuchThingIfNull "getNetworkEntry" "no more network entries"
-- $ c_getnetent
+- $ trySysCall $ c_getnetent
- >>= peek
-
-foreign import ccall unsafe "getnetent" c_getnetent :: IO (Ptr NetworkEntry)
@@ -134,13 +134,13 @@ index b5e9a26..f085f2a 100644
--- whether a connection is maintained open between various
--- networkEntry calls
-setNetworkEntry :: Bool -> IO ()
--setNetworkEntry flg = withLock $ c_setnetent (fromBool flg)
+-setNetworkEntry flg = withLock $ trySysCall $ c_setnetent (fromBool flg)
-
-foreign import ccall unsafe "setnetent" c_setnetent :: CInt -> IO ()
-
--- | Close the connection to the network name database.
-endNetworkEntry :: IO ()
--endNetworkEntry = withLock $ c_endnetent
+-endNetworkEntry = withLock $ trySysCall $ c_endnetent
-
-foreign import ccall unsafe "endnetent" c_endnetent :: IO ()
-
@@ -149,11 +149,9 @@ index b5e9a26..f085f2a 100644
-getNetworkEntries stayOpen = do
- setNetworkEntry stayOpen
- getEntries (getNetworkEntry) (endNetworkEntry)
--#endif
--
- -- ---------------------------------------------------------------------------
- -- Interface names
+ #endif
+ -- Mutex for name service lockdown
--
-2.1.4
+1.7.10.4
diff --git a/standalone/android/haskell-patches/network_2.4.1.0_0003-configure-misdetects-accept4.patch b/standalone/android/haskell-patches/network_2.4.1.0_0003-configure-misdetects-accept4.patch
index 932bfe3da..084d355ba 100644
--- a/standalone/android/haskell-patches/network_2.4.1.0_0003-configure-misdetects-accept4.patch
+++ b/standalone/android/haskell-patches/network_2.4.1.0_0003-configure-misdetects-accept4.patch
@@ -1,6 +1,6 @@
-From 21af25e922b00171c07f951a235ff7d7edbbd2be Mon Sep 17 00:00:00 2001
+From 478fc7ae42030c1345e75727e54e1f8f895d3e22 Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
-Date: Thu, 2 Jul 2015 20:14:40 +0000
+Date: Wed, 15 Oct 2014 15:16:21 +0000
Subject: [PATCH] avoid accept4
---
@@ -8,19 +8,19 @@ Subject: [PATCH] avoid accept4
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Network/Socket.hsc b/Network/Socket.hsc
-index 6553bfc..802a7e9 100644
+index 2fe62ee..94db7a4 100644
--- a/Network/Socket.hsc
+++ b/Network/Socket.hsc
-@@ -489,7 +489,7 @@ accept sock@(MkSocket s family stype protocol status) = do
- return new_sock
+@@ -511,7 +511,7 @@ accept sock@(MkSocket s family stype protocol status) = do
#else
with (fromIntegral sz) $ \ ptr_len -> do
+ new_sock <-
-# ifdef HAVE_ACCEPT4
+#if 0
- new_sock <- throwSocketErrorIfMinus1RetryMayBlock "accept"
+ throwSocketErrorIfMinus1RetryMayBlock "accept"
(threadWaitRead (fromIntegral s))
(c_accept4 s sockaddr ptr_len (#const SOCK_NONBLOCK))
-@@ -1565,7 +1565,7 @@ foreign import CALLCONV SAFE_ON_WIN "connect"
+@@ -1602,7 +1602,7 @@ foreign import CALLCONV SAFE_ON_WIN "connect"
c_connect :: CInt -> Ptr SockAddr -> CInt{-CSockLen???-} -> IO CInt
foreign import CALLCONV unsafe "accept"
c_accept :: CInt -> Ptr SockAddr -> Ptr CInt{-CSockLen???-} -> IO CInt
@@ -30,5 +30,5 @@ index 6553bfc..802a7e9 100644
c_accept4 :: CInt -> Ptr SockAddr -> Ptr CInt{-CSockLen???-} -> CInt -> IO CInt
#endif
--
-2.1.4
+2.1.1
diff --git a/standalone/android/haskell-patches/network_2.4.1.0_0006-build-fixes.patch b/standalone/android/haskell-patches/network_2.4.1.0_0006-build-fixes.patch
deleted file mode 100644
index f7cf7c747..000000000
--- a/standalone/android/haskell-patches/network_2.4.1.0_0006-build-fixes.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From cf110acc7f5863bb80ba835a009a7f59d3453239 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Thu, 2 Jul 2015 20:19:14 +0000
-Subject: [PATCH] fix build
-
----
- Network/BSD.hsc | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/Network/BSD.hsc b/Network/BSD.hsc
-index e11ac71..039d0f1 100644
---- a/Network/BSD.hsc
-+++ b/Network/BSD.hsc
-@@ -396,7 +396,6 @@ instance Storable NetworkEntry where
- poke _p = error "Storable.poke(BSD.NetEntry) not implemented"
-
-
--#if !defined(cygwin32_HOST_OS) && !defined(mingw32_HOST_OS) && !defined(_WIN32)
- getNetworkByName :: NetworkName -> IO NetworkEntry
- getNetworkByName name = withLock $ do
- withCString name $ \ name_cstr -> do
---
-2.1.4
-
diff --git a/standalone/android/haskell-patches/unix-time_hack-for-Bionic.patch b/standalone/android/haskell-patches/unix-time_hack-for-Bionic.patch
index 3f7d2aae7..16c4f92a2 100644
--- a/standalone/android/haskell-patches/unix-time_hack-for-Bionic.patch
+++ b/standalone/android/haskell-patches/unix-time_hack-for-Bionic.patch
@@ -1,6 +1,6 @@
-From da127aa3b2c6cbf679950eb593eb8c88384cc26b Mon Sep 17 00:00:00 2001
+From db9eb179885874af342bb2c3adef7185496ba1f1 Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
-Date: Thu, 2 Jul 2015 20:34:05 +0000
+Date: Wed, 15 Oct 2014 16:37:32 +0000
Subject: [PATCH] hack for bionic
---
@@ -9,10 +9,10 @@ Subject: [PATCH] hack for bionic
2 files changed, 1 insertion(+), 13 deletions(-)
diff --git a/Data/UnixTime/Types.hsc b/Data/UnixTime/Types.hsc
-index 6253b27..fb5b3fa 100644
+index d30f39b..ec7ca4c 100644
--- a/Data/UnixTime/Types.hsc
+++ b/Data/UnixTime/Types.hsc
-@@ -12,8 +12,6 @@ import Data.Binary
+@@ -9,8 +9,6 @@ import Foreign.Storable
#include <sys/time.h>
@@ -20,8 +20,8 @@ index 6253b27..fb5b3fa 100644
-
-- |
-- Data structure for Unix time.
- --
-@@ -33,16 +31,6 @@ data UnixTime = UnixTime {
+ data UnixTime = UnixTime {
+@@ -20,16 +18,6 @@ data UnixTime = UnixTime {
, utMicroSeconds :: {-# UNPACK #-} !Int32
} deriving (Eq,Ord,Show)
@@ -35,14 +35,14 @@ index 6253b27..fb5b3fa 100644
- (#poke struct timeval, tv_sec) ptr (utSeconds ut)
- (#poke struct timeval, tv_usec) ptr (utMicroSeconds ut)
-
- #if __GLASGOW_HASKELL__ >= 704
- instance Binary UnixTime where
- put (UnixTime (CTime sec) msec) = do
+ -- |
+ -- Format of the strptime()/strftime() style.
+ type Format = ByteString
diff --git a/cbits/conv.c b/cbits/conv.c
-index 669cfda..8fa5f9a 100644
+index ec31fef..b7bc0f9 100644
--- a/cbits/conv.c
+++ b/cbits/conv.c
-@@ -98,7 +98,7 @@ time_t c_parse_unix_time_gmt(char *fmt, char *src) {
+@@ -96,7 +96,7 @@ time_t c_parse_unix_time_gmt(char *fmt, char *src) {
#else
strptime(src, fmt, &dst);
#endif
@@ -52,5 +52,5 @@ index 669cfda..8fa5f9a 100644
size_t c_format_unix_time(char *fmt, time_t src, char* dst, int siz) {
--
-2.1.4
+2.1.1
diff --git a/standalone/android/haskell-patches/uuid_build-without-v1-uuid-which-needs-network-info.patch b/standalone/android/haskell-patches/uuid_build-without-v1-uuid-which-needs-network-info.patch
index 048a87fab..12cb2a922 100644
--- a/standalone/android/haskell-patches/uuid_build-without-v1-uuid-which-needs-network-info.patch
+++ b/standalone/android/haskell-patches/uuid_build-without-v1-uuid-which-needs-network-info.patch
@@ -1,15 +1,16 @@
-From 04a1230cf4d740d37ab427165eef4b4db2a3898f Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Fri, 3 Jul 2015 02:20:42 +0000
-Subject: [PATCH] build without v1 uuid which needs network-info
+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 -----------
- uuid.cabal | 2 --
- 2 files changed, 13 deletions(-)
+ 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 8817f51..0d43b01 100644
+index 581391a..399e508 100644
--- a/Data/UUID/Util.hs
+++ b/Data/UUID/Util.hs
@@ -3,7 +3,6 @@ module Data.UUID.Util (
@@ -23,37 +24,49 @@ index 8817f51..0d43b01 100644
@@ -13,7 +12,6 @@ import Data.Word
import Data.Word.Util
import Data.Bits
- import Data.UUID.Types.Internal
+ import Data.UUID.Internal
-import Network.Info
import Data.Int (Int64)
version :: UUID -> Int
-@@ -42,12 +40,3 @@ extractTime uuid =
-
+@@ -43,12 +41,3 @@ extractTime uuid =
timeAndVersionToTime :: Word16 -> Word16
timeAndVersionToTime tv = tv .&. 0x0FFF
--
+
-extractMac :: UUID -> Maybe MAC
--extractMac uuid =
+-extractMac uuid =
- if version uuid == 1
-- then Just $
+- 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 2fa548b..9d86fd2 100644
+index 0a53059..57b1b86 100644
--- a/uuid.cabal
+++ b/uuid.cabal
-@@ -30,7 +30,6 @@ Library
- binary >= 0.4 && < 0.8,
- bytestring >= 0.9 && < 0.11,
+@@ -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.2,
- time >= 1.1 && < 1.6,
- uuid-types >= 1.0 && < 2
-@@ -38,7 +37,6 @@ Library
+ random >= 1.0.1 && < 1.1,
+ time >= 1.1 && < 1.5
+
Exposed-Modules:
Data.UUID
Data.UUID.Util
@@ -62,5 +75,5 @@ index 2fa548b..9d86fd2 100644
Data.UUID.V4
Data.UUID.V5
--
-2.1.4
+1.7.10.4
diff --git a/standalone/android/haskell-patches/vector_cross-build.patch b/standalone/android/haskell-patches/vector_cross-build.patch
deleted file mode 100644
index 2abc30599..000000000
--- a/standalone/android/haskell-patches/vector_cross-build.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 6ffd4fcb7d27ec6df709d80a40a262406446a259 Mon Sep 17 00:00:00 2001
-From: dummy <dummy@example.com>
-Date: Wed, 15 Oct 2014 17:00:56 +0000
-Subject: [PATCH] cross build
-
----
- Data/Vector/Fusion/Stream/Monadic.hs | 1 -
- 2 files changed, 14 deletions(-)
-
-diff --git a/Data/Vector/Fusion/Stream/Monadic.hs b/Data/Vector/Fusion/Stream/Monadic.hs
-index 51fec75..b089b3d 100644
---- a/Data/Vector/Fusion/Stream/Monadic.hs
-+++ b/Data/Vector/Fusion/Stream/Monadic.hs
-@@ -101,7 +101,6 @@ import GHC.Exts ( SpecConstrAnnotation(..) )
-
- data SPEC = SPEC | SPEC2
- #if __GLASGOW_HASKELL__ >= 700
--{-# ANN type SPEC ForceSpecConstr #-}
- #endif
-
- emptyStream :: String
---
-2.1.1
-
diff --git a/standalone/android/haskell-patches/warp_avoid-ipv6-for-android.patch b/standalone/android/haskell-patches/warp_avoid-ipv6-for-android.patch
deleted file mode 100644
index 6144aa0fa..000000000
--- a/standalone/android/haskell-patches/warp_avoid-ipv6-for-android.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From a33437e3150fb33d2fd22d29ff196be28a81c747 Mon Sep 17 00:00:00 2001
-From: androidbuilder <androidbuilder@example.com>
-Date: Thu, 2 Jul 2015 21:48:18 +0000
-Subject: [PATCH] avoid ipv6 for android
-
----
- Network/Wai/Handler/Warp/Run.hs | 9 +--------
- 1 file changed, 1 insertion(+), 8 deletions(-)
-
-diff --git a/Network/Wai/Handler/Warp/Run.hs b/Network/Wai/Handler/Warp/Run.hs
-index 34ae455..ea7475c 100644
---- a/Network/Wai/Handler/Warp/Run.hs
-+++ b/Network/Wai/Handler/Warp/Run.hs
-@@ -14,7 +14,7 @@ import Control.Monad (when, unless, void)
- import Data.ByteString (ByteString)
- import qualified Data.ByteString as S
- import Data.Char (chr)
--import Data.IP (toHostAddress, toHostAddress6)
-+import Data.IP (toHostAddress)
- import Data.IORef (IORef, newIORef, readIORef, writeIORef)
- import Data.Streaming.Network (bindPortTCP)
- import Network (sClose, Socket)
-@@ -323,13 +323,6 @@ serveConnection conn ii origAddr transport settings app = do
- [a] -> Just (SockAddrInet (readInt clientPort)
- (toHostAddress a))
- _ -> Nothing
-- ["PROXY","TCP6",clientAddr,_,clientPort,_] ->
-- case [x | (x, t) <- reads (decodeAscii clientAddr), null t] of
-- [a] -> Just (SockAddrInet6 (readInt clientPort)
-- 0
-- (toHostAddress6 a)
-- 0)
-- _ -> Nothing
- ("PROXY":"UNKNOWN":_) ->
- Just origAddr
- _ ->
---
-2.1.4
-
diff --git a/standalone/android/install-haskell-packages b/standalone/android/install-haskell-packages
index a2e1008fb..f338cc6c7 100755
--- a/standalone/android/install-haskell-packages
+++ b/standalone/android/install-haskell-packages
@@ -55,7 +55,7 @@ patched () {
if [ -e config.guess ]; then
cp /usr/share/misc/config.guess .
fi
- cabal install # --reinstall --force-reinstalls
+ cabal install # --force-reinstalls --reinstall
rm -f cabal.config
rm -rf $pkg*
@@ -65,7 +65,7 @@ patched () {
installgitannexdeps () {
pushd ../..
ln -sf standalone/android/cabal.config
- cabal install --only-dependencies "$@"
+ cabal install --only-dependencies "$@" # --force-reinstalls --reinstall
rm -f cabal.config
popd
}
@@ -86,9 +86,9 @@ EOF
patched iproute
patched primitive
patched socks
- patched entropy
patched vector
patched stm-chans
+ patched persistent
patched profunctors
patched skein
patched lens
@@ -97,32 +97,35 @@ EOF
patched persistent-template
patched system-filepath
patched optparse-applicative
- patched warp
patched wai-app-static
+ patched yesod-routes
patched shakespeare
patched yesod-core
+ patched yesod-persistent
patched yesod-form
+ patched crypto-numbers
patched clock
patched yesod-auth
patched yesod
patched process-conduit
patched DAV
patched yesod-static
- patched uuid
patched dns
patched gnutls
patched unbounded-delays
+ patched gnuidn
patched network-protocol-xmpp
+ patched uuid
cd ..
installgitannexdeps -fAndroid -f-Pairing
}
+cabal update
setupcabal
# Install packages for host ghc.
-cabal update
installgitannexdeps
# Install packages for cross ghc, with patches as necessary.
diff --git a/standalone/no-th/haskell-patches/DAV_build-without-TH.patch b/standalone/no-th/haskell-patches/DAV_build-without-TH.patch
index 8009d92f9..6d17d634e 100644
--- a/standalone/no-th/haskell-patches/DAV_build-without-TH.patch
+++ b/standalone/no-th/haskell-patches/DAV_build-without-TH.patch
@@ -1,6 +1,6 @@
-From 6d4a7c63d737c9215ee55996715250c89f14c398 Mon Sep 17 00:00:00 2001
+From e54cfacbb9fb24f75d3d93cd8ee6da67b161574f Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
-Date: Fri, 3 Jul 2015 01:36:31 +0000
+Date: Thu, 16 Oct 2014 02:51:28 +0000
Subject: [PATCH] remove TH
---
@@ -10,7 +10,7 @@ Subject: [PATCH] remove TH
3 files changed, 306 insertions(+), 46 deletions(-)
diff --git a/DAV.cabal b/DAV.cabal
-index f78c2e5..1ec4d80 100644
+index 95fffd8..5669c51 100644
--- a/DAV.cabal
+++ b/DAV.cabal
@@ -47,33 +47,7 @@ library
@@ -27,7 +27,7 @@ index f78c2e5..1ec4d80 100644
- , containers
- , data-default
- , either >= 4.3
-- , errors < 2.0
+- , errors
- , exceptions
- , http-client >= 0.2
- , http-client-tls >= 0.2
@@ -49,7 +49,7 @@ index f78c2e5..1ec4d80 100644
source-repository head
type: git
diff --git a/Network/Protocol/HTTP/DAV.hs b/Network/Protocol/HTTP/DAV.hs
-index 5d5d6fd..7265d42 100644
+index 4c6d68f..55979b6 100644
--- a/Network/Protocol/HTTP/DAV.hs
+++ b/Network/Protocol/HTTP/DAV.hs
@@ -82,6 +82,7 @@ import Network.HTTP.Types (hContentType, Method, Status, RequestHeaders, unautho
@@ -416,5 +416,5 @@ index 0ecd476..1653bf6 100644
+ Data.Functor.<$> (_f_a3k7 __userAgent'_a3kg))
+{-# INLINE userAgent #-}
--
-2.1.4
+2.1.1
diff --git a/standalone/no-th/haskell-patches/aeson_remove-TH.patch b/standalone/no-th/haskell-patches/aeson_remove-TH.patch
new file mode 100644
index 000000000..dc40de79e
--- /dev/null
+++ b/standalone/no-th/haskell-patches/aeson_remove-TH.patch
@@ -0,0 +1,40 @@
+From f147ec9aeaa03ca6e30232c84c413ef29b95fb62 Mon Sep 17 00:00:00 2001
+From: Your Name <you@example.com>
+Date: Tue, 20 May 2014 19:53:55 +0000
+Subject: [PATCH] avoid TH
+
+---
+ aeson.cabal | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/aeson.cabal b/aeson.cabal
+index 493d625..02dc6f4 100644
+--- a/aeson.cabal
++++ b/aeson.cabal
+@@ -88,7 +88,6 @@ library
+ Data.Aeson.Generic
+ Data.Aeson.Parser
+ Data.Aeson.Types
+- Data.Aeson.TH
+
+ other-modules:
+ Data.Aeson.Functions
+@@ -121,7 +120,6 @@ library
+ old-locale,
+ scientific >= 0.3.1 && < 0.4,
+ syb,
+- template-haskell >= 2.4,
+ time,
+ unordered-containers >= 0.2.3.0,
+ vector >= 0.7.1
+@@ -164,7 +162,6 @@ test-suite tests
+ base,
+ containers,
+ bytestring,
+- template-haskell,
+ test-framework,
+ test-framework-quickcheck2,
+ test-framework-hunit,
+--
+2.0.0.rc2
+
diff --git a/standalone/no-th/haskell-patches/file-embed_remove-TH.patch b/standalone/no-th/haskell-patches/file-embed_remove-TH.patch
new file mode 100644
index 000000000..12e344504
--- /dev/null
+++ b/standalone/no-th/haskell-patches/file-embed_remove-TH.patch
@@ -0,0 +1,132 @@
+From 497d09a91f9eb1e5979948cd128078491b0e8bca Mon Sep 17 00:00:00 2001
+From: Joey Hess <joey@kitenet.net>
+Date: Fri, 12 Sep 2014 20:52:08 -0400
+Subject: [PATCH] remove TH
+
+---
+ Data/FileEmbed.hs | 87 ++++---------------------------------------------------
+ 1 file changed, 5 insertions(+), 82 deletions(-)
+
+diff --git a/Data/FileEmbed.hs b/Data/FileEmbed.hs
+index 5617493..adacdba 100644
+--- a/Data/FileEmbed.hs
++++ b/Data/FileEmbed.hs
+@@ -17,13 +17,13 @@
+ -- > {-# LANGUAGE TemplateHaskell #-}
+ module Data.FileEmbed
+ ( -- * Embed at compile time
+- embedFile
+- , embedOneFileOf
+- , embedDir
+- , getDir
++ -- embedFile
++ --, embedOneFileOf
++ --, embedDir
++ getDir
+ -- * Inject into an executable
+ #if MIN_VERSION_template_haskell(2,5,0)
+- , dummySpace
++ --, dummySpace
+ #endif
+ , inject
+ , injectFile
+@@ -56,73 +56,12 @@ import Data.ByteString.Unsafe (unsafePackAddressLen)
+ import System.IO.Unsafe (unsafePerformIO)
+ import System.FilePath ((</>))
+
+--- | Embed a single file in your source code.
+---
+--- > import qualified Data.ByteString
+--- >
+--- > myFile :: Data.ByteString.ByteString
+--- > myFile = $(embedFile "dirName/fileName")
+-embedFile :: FilePath -> Q Exp
+-embedFile fp =
+-#if MIN_VERSION_template_haskell(2,7,0)
+- qAddDependentFile fp >>
+-#endif
+- (runIO $ B.readFile fp) >>= bsToExp
+-
+--- | Embed a single existing file in your source code
+--- out of list a list of paths supplied.
+---
+--- > import qualified Data.ByteString
+--- >
+--- > myFile :: Data.ByteString.ByteString
+--- > myFile = $(embedFile' [ "dirName/fileName", "src/dirName/fileName" ])
+-embedOneFileOf :: [FilePath] -> Q Exp
+-embedOneFileOf ps =
+- (runIO $ readExistingFile ps) >>= \ ( path, content ) -> do
+-#if MIN_VERSION_template_haskell(2,7,0)
+- qAddDependentFile path
+-#endif
+- bsToExp content
+- where
+- readExistingFile :: [FilePath] -> IO ( FilePath, B.ByteString )
+- readExistingFile xs = do
+- ys <- filterM doesFileExist xs
+- case ys of
+- (p:_) -> B.readFile p >>= \ c -> return ( p, c )
+- _ -> throw $ ErrorCall "Cannot find file to embed as resource"
+-
+--- | Embed a directory recursively in your source code.
+---
+--- > import qualified Data.ByteString
+--- >
+--- > myDir :: [(FilePath, Data.ByteString.ByteString)]
+--- > myDir = $(embedDir "dirName")
+-embedDir :: FilePath -> Q Exp
+-embedDir fp = do
+- typ <- [t| [(FilePath, B.ByteString)] |]
+- e <- ListE <$> ((runIO $ fileList fp) >>= mapM (pairToExp fp))
+- return $ SigE e typ
+-
+ -- | Get a directory tree in the IO monad.
+ --
+ -- This is the workhorse of 'embedDir'
+ getDir :: FilePath -> IO [(FilePath, B.ByteString)]
+ getDir = fileList
+
+-pairToExp :: FilePath -> (FilePath, B.ByteString) -> Q Exp
+-pairToExp _root (path, bs) = do
+-#if MIN_VERSION_template_haskell(2,7,0)
+- qAddDependentFile $ _root ++ '/' : path
+-#endif
+- exp' <- bsToExp bs
+- return $! TupE [LitE $ StringL path, exp']
+-
+-bsToExp :: B.ByteString -> Q Exp
+-bsToExp bs = do
+- helper <- [| stringToBs |]
+- let chars = B8.unpack bs
+- return $! AppE helper $! LitE $! StringL chars
+-
+ stringToBs :: String -> B.ByteString
+ stringToBs = B8.pack
+
+@@ -164,22 +103,6 @@ padSize i =
+ let s = show i
+ in replicate (sizeLen - length s) '0' ++ s
+
+-#if MIN_VERSION_template_haskell(2,5,0)
+-dummySpace :: Int -> Q Exp
+-dummySpace space = do
+- let size = padSize space
+- let start = magic ++ size
+- let chars = LitE $ StringPrimL $
+-#if MIN_VERSION_template_haskell(2,6,0)
+- map (toEnum . fromEnum) $
+-#endif
+- start ++ replicate space '0'
+- let len = LitE $ IntegerL $ fromIntegral $ length start + space
+- upi <- [|unsafePerformIO|]
+- pack <- [|unsafePackAddressLen|]
+- getInner' <- [|getInner|]
+- return $ getInner' `AppE` (upi `AppE` (pack `AppE` len `AppE` chars))
+-#endif
+
+ inject :: B.ByteString -- ^ bs to inject
+ -> B.ByteString -- ^ original BS containing dummy
+--
+2.1.0
+
diff --git a/standalone/no-th/haskell-patches/generic-deriving_remove-TH.patch b/standalone/no-th/haskell-patches/generic-deriving_remove-TH.patch
new file mode 100644
index 000000000..83c8ffd2a
--- /dev/null
+++ b/standalone/no-th/haskell-patches/generic-deriving_remove-TH.patch
@@ -0,0 +1,394 @@
+From 9a41401d903f160e11d56fff35c24eb59d97885d Mon Sep 17 00:00:00 2001
+From: Joey Hess <joey@kitenet.net>
+Date: Tue, 17 Dec 2013 19:04:40 +0000
+Subject: [PATCH] remove TH
+
+---
+ src/Generics/Deriving/TH.hs | 354 --------------------------------------------
+ 1 file changed, 354 deletions(-)
+
+diff --git a/src/Generics/Deriving/TH.hs b/src/Generics/Deriving/TH.hs
+index 783cb65..9aab713 100644
+--- a/src/Generics/Deriving/TH.hs
++++ b/src/Generics/Deriving/TH.hs
+@@ -19,18 +19,6 @@
+
+ -- Adapted from Generics.Regular.TH
+ module Generics.Deriving.TH (
+-
+- deriveMeta
+- , deriveData
+- , deriveConstructors
+- , deriveSelectors
+-
+-#if __GLASGOW_HASKELL__ < 701
+- , deriveAll
+- , deriveRepresentable0
+- , deriveRep0
+- , simplInstance
+-#endif
+ ) where
+
+ import Generics.Deriving.Base
+@@ -41,124 +29,6 @@ import Language.Haskell.TH.Syntax (Lift(..))
+ import Data.List (intercalate)
+ import Control.Monad
+
+--- | Given the names of a generic class, a type to instantiate, a function in
+--- the class and the default implementation, generates the code for a basic
+--- generic instance.
+-simplInstance :: Name -> Name -> Name -> Name -> Q [Dec]
+-simplInstance cl ty fn df = do
+- i <- reify (genRepName 0 ty)
+- x <- newName "x"
+- let typ = ForallT [PlainTV x] []
+- ((foldl (\a -> AppT a . VarT . tyVarBndrToName) (ConT (genRepName 0 ty))
+- (typeVariables i)) `AppT` (VarT x))
+- fmap (: []) $ instanceD (cxt []) (conT cl `appT` conT ty)
+- [funD fn [clause [] (normalB (varE df `appE`
+- (sigE (global 'undefined) (return typ)))) []]]
+-
+-
+--- | Given the type and the name (as string) for the type to derive,
+--- generate the 'Data' instance, the 'Constructor' instances, the 'Selector'
+--- instances, and the 'Representable0' instance.
+-deriveAll :: Name -> Q [Dec]
+-deriveAll n =
+- do a <- deriveMeta n
+- b <- deriveRepresentable0 n
+- return (a ++ b)
+-
+--- | Given the type and the name (as string) for the type to derive,
+--- generate the 'Data' instance, the 'Constructor' instances, and the 'Selector'
+--- instances.
+-deriveMeta :: Name -> Q [Dec]
+-deriveMeta n =
+- do a <- deriveData n
+- b <- deriveConstructors n
+- c <- deriveSelectors n
+- return (a ++ b ++ c)
+-
+--- | Given a datatype name, derive a datatype and instance of class 'Datatype'.
+-deriveData :: Name -> Q [Dec]
+-deriveData = dataInstance
+-
+--- | Given a datatype name, derive datatypes and
+--- instances of class 'Constructor'.
+-deriveConstructors :: Name -> Q [Dec]
+-deriveConstructors = constrInstance
+-
+--- | Given a datatype name, derive datatypes and instances of class 'Selector'.
+-deriveSelectors :: Name -> Q [Dec]
+-deriveSelectors = selectInstance
+-
+--- | Given the type and the name (as string) for the Representable0 type
+--- synonym to derive, generate the 'Representable0' instance.
+-deriveRepresentable0 :: Name -> Q [Dec]
+-deriveRepresentable0 n = do
+- rep0 <- deriveRep0 n
+- inst <- deriveInst n
+- return $ rep0 ++ inst
+-
+--- | Derive only the 'Rep0' type synonym. Not needed if 'deriveRepresentable0'
+--- is used.
+-deriveRep0 :: Name -> Q [Dec]
+-deriveRep0 n = do
+- i <- reify n
+- fmap (:[]) $ tySynD (genRepName 0 n) (typeVariables i) (rep0Type n)
+-
+-deriveInst :: Name -> Q [Dec]
+-deriveInst t = do
+- i <- reify t
+- let typ q = foldl (\a -> AppT a . VarT . tyVarBndrToName) (ConT q)
+- (typeVariables i)
+-#if __GLASGOW_HASKELL__ >= 707
+- let tyIns = TySynInstD ''Rep (TySynEqn [typ t] (typ (genRepName 0 t)))
+-#else
+- let tyIns = TySynInstD ''Rep [typ t] (typ (genRepName 0 t))
+-#endif
+- fcs <- mkFrom t 1 0 t
+- tcs <- mkTo t 1 0 t
+- liftM (:[]) $
+- instanceD (cxt []) (conT ''Generic `appT` return (typ t))
+- [return tyIns, funD 'from fcs, funD 'to tcs]
+-
+-
+-dataInstance :: Name -> Q [Dec]
+-dataInstance n = do
+- i <- reify n
+- case i of
+- TyConI (DataD _ n _ _ _) -> mkInstance n
+- TyConI (NewtypeD _ n _ _ _) -> mkInstance n
+- _ -> return []
+- where
+- mkInstance n = do
+- ds <- mkDataData n
+- is <- mkDataInstance n
+- return $ [ds,is]
+-
+-constrInstance :: Name -> Q [Dec]
+-constrInstance n = do
+- i <- reify n
+- case i of
+- TyConI (DataD _ n _ cs _) -> mkInstance n cs
+- TyConI (NewtypeD _ n _ c _) -> mkInstance n [c]
+- _ -> return []
+- where
+- mkInstance n cs = do
+- ds <- mapM (mkConstrData n) cs
+- is <- mapM (mkConstrInstance n) cs
+- return $ ds ++ is
+-
+-selectInstance :: Name -> Q [Dec]
+-selectInstance n = do
+- i <- reify n
+- case i of
+- TyConI (DataD _ n _ cs _) -> mkInstance n cs
+- TyConI (NewtypeD _ n _ c _) -> mkInstance n [c]
+- _ -> return []
+- where
+- mkInstance n cs = do
+- ds <- mapM (mkSelectData n) cs
+- is <- mapM (mkSelectInstance n) cs
+- return $ concat (ds ++ is)
+-
+ typeVariables :: Info -> [TyVarBndr]
+ typeVariables (TyConI (DataD _ _ tv _ _)) = tv
+ typeVariables (TyConI (NewtypeD _ _ tv _ _)) = tv
+@@ -179,233 +49,9 @@ genName = mkName . (++"_") . intercalate "_" . map nameBase
+ genRepName :: Int -> Name -> Name
+ genRepName n = mkName . (++"_") . (("Rep" ++ show n) ++) . nameBase
+
+-mkDataData :: Name -> Q Dec
+-mkDataData n = dataD (cxt []) (genName [n]) [] [] []
+-
+-mkConstrData :: Name -> Con -> Q Dec
+-mkConstrData dt (NormalC n _) =
+- dataD (cxt []) (genName [dt, n]) [] [] []
+-mkConstrData dt r@(RecC _ _) =
+- mkConstrData dt (stripRecordNames r)
+-mkConstrData dt (InfixC t1 n t2) =
+- mkConstrData dt (NormalC n [t1,t2])
+-
+-mkSelectData :: Name -> Con -> Q [Dec]
+-mkSelectData dt r@(RecC n fs) = return (map one fs)
+- where one (f, _, _) = DataD [] (genName [dt, n, f]) [] [] []
+-mkSelectData dt _ = return []
+-
+-
+-mkDataInstance :: Name -> Q Dec
+-mkDataInstance n =
+- instanceD (cxt []) (appT (conT ''Datatype) (conT $ genName [n]))
+- [funD 'datatypeName [clause [wildP] (normalB (stringE (nameBase n))) []]
+- ,funD 'moduleName [clause [wildP] (normalB (stringE name)) []]]
+- where
+- name = maybe (error "Cannot fetch module name!") id (nameModule n)
+-
+-instance Lift Fixity where
+- lift Prefix = conE 'Prefix
+- lift (Infix a n) = conE 'Infix `appE` [| a |] `appE` [| n |]
+-
+-instance Lift Associativity where
+- lift LeftAssociative = conE 'LeftAssociative
+- lift RightAssociative = conE 'RightAssociative
+- lift NotAssociative = conE 'NotAssociative
+-
+-mkConstrInstance :: Name -> Con -> Q Dec
+-mkConstrInstance dt (NormalC n _) = mkConstrInstanceWith dt n []
+-mkConstrInstance dt (RecC n _) = mkConstrInstanceWith dt n
+- [ funD 'conIsRecord [clause [wildP] (normalB (conE 'True)) []]]
+-mkConstrInstance dt (InfixC t1 n t2) =
+- do
+- i <- reify n
+- let fi = case i of
+- DataConI _ _ _ f -> convertFixity f
+- _ -> Prefix
+- instanceD (cxt []) (appT (conT ''Constructor) (conT $ genName [dt, n]))
+- [funD 'conName [clause [wildP] (normalB (stringE (nameBase n))) []],
+- funD 'conFixity [clause [wildP] (normalB [| fi |]) []]]
+- where
+- convertFixity (Fixity n d) = Infix (convertDirection d) n
+- convertDirection InfixL = LeftAssociative
+- convertDirection InfixR = RightAssociative
+- convertDirection InfixN = NotAssociative
+-
+-mkConstrInstanceWith :: Name -> Name -> [Q Dec] -> Q Dec
+-mkConstrInstanceWith dt n extra =
+- instanceD (cxt []) (appT (conT ''Constructor) (conT $ genName [dt, n]))
+- (funD 'conName [clause [wildP] (normalB (stringE (nameBase n))) []] : extra)
+-
+-mkSelectInstance :: Name -> Con -> Q [Dec]
+-mkSelectInstance dt r@(RecC n fs) = return (map one fs) where
+- one (f, _, _) =
+- InstanceD ([]) (AppT (ConT ''Selector) (ConT $ genName [dt, n, f]))
+- [FunD 'selName [Clause [WildP]
+- (NormalB (LitE (StringL (nameBase f)))) []]]
+-mkSelectInstance _ _ = return []
+-
+-rep0Type :: Name -> Q Type
+-rep0Type n =
+- do
+- -- runIO $ putStrLn $ "processing " ++ show n
+- i <- reify n
+- let b = case i of
+- TyConI (DataD _ dt vs cs _) ->
+- (conT ''D1) `appT` (conT $ genName [dt]) `appT`
+- (foldr1' sum (conT ''V1)
+- (map (rep0Con (dt, map tyVarBndrToName vs)) cs))
+- TyConI (NewtypeD _ dt vs c _) ->
+- (conT ''D1) `appT` (conT $ genName [dt]) `appT`
+- (rep0Con (dt, map tyVarBndrToName vs) c)
+- TyConI (TySynD t _ _) -> error "type synonym?"
+- _ -> error "unknown construct"
+- --appT b (conT $ mkName (nameBase n))
+- b where
+- sum :: Q Type -> Q Type -> Q Type
+- sum a b = conT ''(:+:) `appT` a `appT` b
+-
+-
+-rep0Con :: (Name, [Name]) -> Con -> Q Type
+-rep0Con (dt, vs) (NormalC n []) =
+- conT ''C1 `appT` (conT $ genName [dt, n]) `appT`
+- (conT ''S1 `appT` conT ''NoSelector `appT` conT ''U1)
+-rep0Con (dt, vs) (NormalC n fs) =
+- conT ''C1 `appT` (conT $ genName [dt, n]) `appT`
+- (foldr1 prod (map (repField (dt, vs) . snd) fs)) where
+- prod :: Q Type -> Q Type -> Q Type
+- prod a b = conT ''(:*:) `appT` a `appT` b
+-rep0Con (dt, vs) r@(RecC n []) =
+- conT ''C1 `appT` (conT $ genName [dt, n]) `appT` conT ''U1
+-rep0Con (dt, vs) r@(RecC n fs) =
+- conT ''C1 `appT` (conT $ genName [dt, n]) `appT`
+- (foldr1 prod (map (repField' (dt, vs) n) fs)) where
+- prod :: Q Type -> Q Type -> Q Type
+- prod a b = conT ''(:*:) `appT` a `appT` b
+-
+-rep0Con d (InfixC t1 n t2) = rep0Con d (NormalC n [t1,t2])
+-
+---dataDeclToType :: (Name, [Name]) -> Type
+---dataDeclToType (dt, vs) = foldl (\a b -> AppT a (VarT b)) (ConT dt) vs
+-
+-repField :: (Name, [Name]) -> Type -> Q Type
+---repField d t | t == dataDeclToType d = conT ''I
+-repField d t = conT ''S1 `appT` conT ''NoSelector `appT`
+- (conT ''Rec0 `appT` return t)
+-
+-repField' :: (Name, [Name]) -> Name -> (Name, Strict, Type) -> Q Type
+---repField' d ns (_, _, t) | t == dataDeclToType d = conT ''I
+-repField' (dt, vs) ns (f, _, t) = conT ''S1 `appT` conT (genName [dt, ns, f])
+- `appT` (conT ''Rec0 `appT` return t)
+--- Note: we should generate Par0 too, at some point
+-
+-
+-mkFrom :: Name -> Int -> Int -> Name -> Q [Q Clause]
+-mkFrom ns m i n =
+- do
+- -- runIO $ putStrLn $ "processing " ++ show n
+- let wrapE e = lrE m i e
+- i <- reify n
+- let b = case i of
+- TyConI (DataD _ dt vs cs _) ->
+- zipWith (fromCon wrapE ns (dt, map tyVarBndrToName vs)
+- (length cs)) [0..] cs
+- TyConI (NewtypeD _ dt vs c _) ->
+- [fromCon wrapE ns (dt, map tyVarBndrToName vs) 1 0 c]
+- TyConI (TySynD t _ _) -> error "type synonym?"
+- -- [clause [varP (field 0)] (normalB (wrapE $ conE 'K1 `appE` varE (field 0))) []]
+- _ -> error "unknown construct"
+- return b
+-
+-mkTo :: Name -> Int -> Int -> Name -> Q [Q Clause]
+-mkTo ns m i n =
+- do
+- -- runIO $ putStrLn $ "processing " ++ show n
+- let wrapP p = lrP m i p
+- i <- reify n
+- let b = case i of
+- TyConI (DataD _ dt vs cs _) ->
+- zipWith (toCon wrapP ns (dt, map tyVarBndrToName vs)
+- (length cs)) [0..] cs
+- TyConI (NewtypeD _ dt vs c _) ->
+- [toCon wrapP ns (dt, map tyVarBndrToName vs) 1 0 c]
+- TyConI (TySynD t _ _) -> error "type synonym?"
+- -- [clause [wrapP $ conP 'K1 [varP (field 0)]] (normalB $ varE (field 0)) []]
+- _ -> error "unknown construct"
+- return b
+-
+-fromCon :: (Q Exp -> Q Exp) -> Name -> (Name, [Name]) -> Int -> Int -> Con -> Q Clause
+-fromCon wrap ns (dt, vs) m i (NormalC cn []) =
+- clause
+- [conP cn []]
+- (normalB $ appE (conE 'M1) $ wrap $ lrE m i $ appE (conE 'M1) $
+- conE 'M1 `appE` (conE 'U1)) []
+-fromCon wrap ns (dt, vs) m i (NormalC cn fs) =
+- -- runIO (putStrLn ("constructor " ++ show ix)) >>
+- clause
+- [conP cn (map (varP . field) [0..length fs - 1])]
+- (normalB $ appE (conE 'M1) $ wrap $ lrE m i $ conE 'M1 `appE`
+- foldr1 prod (zipWith (fromField (dt, vs)) [0..] (map snd fs))) []
+- where prod x y = conE '(:*:) `appE` x `appE` y
+-fromCon wrap ns (dt, vs) m i r@(RecC cn []) =
+- clause
+- [conP cn []]
+- (normalB $ appE (conE 'M1) $ wrap $ lrE m i $ conE 'M1 `appE` (conE 'U1)) []
+-fromCon wrap ns (dt, vs) m i r@(RecC cn fs) =
+- clause
+- [conP cn (map (varP . field) [0..length fs - 1])]
+- (normalB $ appE (conE 'M1) $ wrap $ lrE m i $ conE 'M1 `appE`
+- foldr1 prod (zipWith (fromField (dt, vs)) [0..] (map trd fs))) []
+- where prod x y = conE '(:*:) `appE` x `appE` y
+-fromCon wrap ns (dt, vs) m i (InfixC t1 cn t2) =
+- fromCon wrap ns (dt, vs) m i (NormalC cn [t1,t2])
+-
+-fromField :: (Name, [Name]) -> Int -> Type -> Q Exp
+---fromField (dt, vs) nr t | t == dataDeclToType (dt, vs) = conE 'I `appE` varE (field nr)
+-fromField (dt, vs) nr t = conE 'M1 `appE` (conE 'K1 `appE` varE (field nr))
+-
+-toCon :: (Q Pat -> Q Pat) -> Name -> (Name, [Name]) -> Int -> Int -> Con -> Q Clause
+-toCon wrap ns (dt, vs) m i (NormalC cn []) =
+- clause
+- [wrap $ conP 'M1 [lrP m i $ conP 'M1 [conP 'M1 [conP 'U1 []]]]]
+- (normalB $ conE cn) []
+-toCon wrap ns (dt, vs) m i (NormalC cn fs) =
+- -- runIO (putStrLn ("constructor " ++ show ix)) >>
+- clause
+- [wrap $ conP 'M1 [lrP m i $ conP 'M1
+- [foldr1 prod (zipWith (toField (dt, vs)) [0..] (map snd fs))]]]
+- (normalB $ foldl appE (conE cn) (map (varE . field) [0..length fs - 1])) []
+- where prod x y = conP '(:*:) [x,y]
+-toCon wrap ns (dt, vs) m i r@(RecC cn []) =
+- clause
+- [wrap $ conP 'M1 [lrP m i $ conP 'M1 [conP 'U1 []]]]
+- (normalB $ conE cn) []
+-toCon wrap ns (dt, vs) m i r@(RecC cn fs) =
+- clause
+- [wrap $ conP 'M1 [lrP m i $ conP 'M1
+- [foldr1 prod (zipWith (toField (dt, vs)) [0..] (map trd fs))]]]
+- (normalB $ foldl appE (conE cn) (map (varE . field) [0..length fs - 1])) []
+- where prod x y = conP '(:*:) [x,y]
+-toCon wrap ns (dt, vs) m i (InfixC t1 cn t2) =
+- toCon wrap ns (dt, vs) m i (NormalC cn [t1,t2])
+-
+-toField :: (Name, [Name]) -> Int -> Type -> Q Pat
+---toField (dt, vs) nr t | t == dataDeclToType (dt, vs) = conP 'I [varP (field nr)]
+-toField (dt, vs) nr t = conP 'M1 [conP 'K1 [varP (field nr)]]
+-
+-
+ field :: Int -> Name
+ field n = mkName $ "f" ++ show n
+
+-lrP :: Int -> Int -> (Q Pat -> Q Pat)
+-lrP 1 0 p = p
+-lrP m 0 p = conP 'L1 [p]
+-lrP m i p = conP 'R1 [lrP (m-1) (i-1) p]
+-
+-lrE :: Int -> Int -> (Q Exp -> Q Exp)
+-lrE 1 0 e = e
+-lrE m 0 e = conE 'L1 `appE` e
+-lrE m i e = conE 'R1 `appE` lrE (m-1) (i-1) e
+
+ trd (_,_,c) = c
+
+--
+1.8.5.1
+
diff --git a/standalone/no-th/haskell-patches/lens_no-TH.patch b/standalone/no-th/haskell-patches/lens_no-TH.patch
index 9b15c0448..bc453bfa1 100644
--- a/standalone/no-th/haskell-patches/lens_no-TH.patch
+++ b/standalone/no-th/haskell-patches/lens_no-TH.patch
@@ -1,20 +1,20 @@
-From 88ff2174944daf90530a33ee06e2e3f667089b6a Mon Sep 17 00:00:00 2001
+From 10c9ade98b3ac2054947f411d77db2eb28896b9f Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
-Date: Fri, 3 Jul 2015 02:06:43 +0000
-Subject: [PATCH] remove TH
+Date: Thu, 16 Oct 2014 01:43:10 +0000
+Subject: [PATCH] avoid TH
---
- lens.cabal | 16 +---------------
- src/Control/Lens.hs | 6 ++----
+ lens.cabal | 17 +----------------
+ src/Control/Lens.hs | 8 ++------
src/Control/Lens/Cons.hs | 2 --
src/Control/Lens/Internal/Fold.hs | 2 --
src/Control/Lens/Operators.hs | 2 +-
src/Control/Lens/Prism.hs | 2 --
src/Control/Monad/Primitive/Lens.hs | 1 -
- 7 files changed, 4 insertions(+), 27 deletions(-)
+ 7 files changed, 4 insertions(+), 30 deletions(-)
diff --git a/lens.cabal b/lens.cabal
-index c7f6009..ab206c5 100644
+index 5388301..d7b02b9 100644
--- a/lens.cabal
+++ b/lens.cabal
@@ -10,7 +10,7 @@ stability: provisional
@@ -26,7 +26,15 @@ index c7f6009..ab206c5 100644
-- build-tools: cpphs
tested-with: GHC == 7.4.1, GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.1, GHC == 7.8.2
synopsis: Lenses, Folds and Traversals
-@@ -230,8 +230,6 @@ library
+@@ -217,7 +217,6 @@ library
+ Control.Exception.Lens
+ Control.Lens
+ Control.Lens.Action
+- Control.Lens.At
+ Control.Lens.Combinators
+ Control.Lens.Cons
+ Control.Lens.Each
+@@ -234,8 +233,6 @@ library
Control.Lens.Internal.Context
Control.Lens.Internal.Deque
Control.Lens.Internal.Exception
@@ -35,7 +43,7 @@ index c7f6009..ab206c5 100644
Control.Lens.Internal.Fold
Control.Lens.Internal.Getter
Control.Lens.Internal.Indexed
-@@ -243,25 +241,21 @@ library
+@@ -247,25 +244,21 @@ library
Control.Lens.Internal.Reflection
Control.Lens.Internal.Review
Control.Lens.Internal.Setter
@@ -61,7 +69,7 @@ index c7f6009..ab206c5 100644
Control.Monad.Primitive.Lens
Control.Parallel.Strategies.Lens
Control.Seq.Lens
-@@ -287,12 +281,8 @@ library
+@@ -291,12 +284,8 @@ library
Data.Typeable.Lens
Data.Vector.Lens
Data.Vector.Generic.Lens
@@ -74,7 +82,7 @@ index c7f6009..ab206c5 100644
Numeric.Lens
other-modules:
-@@ -395,7 +385,6 @@ test-suite doctests
+@@ -403,7 +392,6 @@ test-suite doctests
deepseq,
doctest >= 0.9.1,
filepath,
@@ -82,7 +90,7 @@ index c7f6009..ab206c5 100644
mtl,
nats,
parallel,
-@@ -433,7 +422,6 @@ benchmark plated
+@@ -441,7 +429,6 @@ benchmark plated
comonad,
criterion,
deepseq,
@@ -90,7 +98,7 @@ index c7f6009..ab206c5 100644
lens,
transformers
-@@ -468,7 +456,6 @@ benchmark unsafe
+@@ -476,7 +463,6 @@ benchmark unsafe
comonads-fd,
criterion,
deepseq,
@@ -98,7 +106,7 @@ index c7f6009..ab206c5 100644
lens,
transformers
-@@ -485,6 +472,5 @@ benchmark zipper
+@@ -493,6 +479,5 @@ benchmark zipper
comonads-fd,
criterion,
deepseq,
@@ -106,10 +114,18 @@ index c7f6009..ab206c5 100644
lens,
transformers
diff --git a/src/Control/Lens.hs b/src/Control/Lens.hs
-index d879c58..3d6015b 100644
+index 7e15267..433f1fc 100644
--- a/src/Control/Lens.hs
+++ b/src/Control/Lens.hs
-@@ -56,12 +56,11 @@ module Control.Lens
+@@ -41,7 +41,6 @@
+ ----------------------------------------------------------------------------
+ module Control.Lens
+ ( module Control.Lens.Action
+- , module Control.Lens.At
+ , module Control.Lens.Cons
+ , module Control.Lens.Each
+ , module Control.Lens.Empty
+@@ -53,12 +52,11 @@ module Control.Lens
, module Control.Lens.Lens
, module Control.Lens.Level
, module Control.Lens.Loupe
@@ -123,7 +139,15 @@ index d879c58..3d6015b 100644
, module Control.Lens.TH
#endif
, module Control.Lens.Traversal
-@@ -83,12 +82,11 @@ import Control.Lens.Iso
+@@ -69,7 +67,6 @@ module Control.Lens
+ ) where
+
+ import Control.Lens.Action
+-import Control.Lens.At
+ import Control.Lens.Cons
+ import Control.Lens.Each
+ import Control.Lens.Empty
+@@ -81,12 +78,11 @@ import Control.Lens.Iso
import Control.Lens.Lens
import Control.Lens.Level
import Control.Lens.Loupe
@@ -138,12 +162,12 @@ index d879c58..3d6015b 100644
#endif
import Control.Lens.Traversal
diff --git a/src/Control/Lens/Cons.hs b/src/Control/Lens/Cons.hs
-index 7b35db4..269f307 100644
+index a80e9c8..7d27b80 100644
--- a/src/Control/Lens/Cons.hs
+++ b/src/Control/Lens/Cons.hs
-@@ -56,8 +56,6 @@ import qualified Data.Vector.Unboxed as Unbox
+@@ -55,8 +55,6 @@ import Data.Vector.Unboxed (Unbox)
+ import qualified Data.Vector.Unboxed as Unbox
import Data.Word
- import Prelude
-{-# ANN module "HLint: ignore Eta reduce" #-}
-
@@ -151,12 +175,12 @@ index 7b35db4..269f307 100644
-- >>> :set -XNoOverloadedStrings
-- >>> import Control.Lens
diff --git a/src/Control/Lens/Internal/Fold.hs b/src/Control/Lens/Internal/Fold.hs
-index 4bbde21..16295f4 100644
+index ab09c6b..43aa905 100644
--- a/src/Control/Lens/Internal/Fold.hs
+++ b/src/Control/Lens/Internal/Fold.hs
-@@ -35,8 +35,6 @@ import Data.Semigroup hiding (Min, getMin, Max, getMax)
+@@ -37,8 +37,6 @@ import Data.Maybe
+ import Data.Semigroup hiding (Min, getMin, Max, getMax)
import Data.Reflection
- import Prelude
-{-# ANN module "HLint: ignore Avoid lambda" #-}
-
@@ -164,10 +188,10 @@ index 4bbde21..16295f4 100644
-- Folding
------------------------------------------------------------------------------
diff --git a/src/Control/Lens/Operators.hs b/src/Control/Lens/Operators.hs
-index 302f68e..1625fe5 100644
+index 9992e63..631e8e6 100644
--- a/src/Control/Lens/Operators.hs
+++ b/src/Control/Lens/Operators.hs
-@@ -104,7 +104,7 @@ module Control.Lens.Operators
+@@ -111,7 +111,7 @@ module Control.Lens.Operators
, (<#~)
, (<#=)
-- * "Control.Lens.Plated"
@@ -177,12 +201,12 @@ index 302f68e..1625fe5 100644
, ( # )
-- * "Control.Lens.Setter"
diff --git a/src/Control/Lens/Prism.hs b/src/Control/Lens/Prism.hs
-index 36152d6..3af6bd3 100644
+index b75c870..c6c6596 100644
--- a/src/Control/Lens/Prism.hs
+++ b/src/Control/Lens/Prism.hs
-@@ -62,8 +62,6 @@ import Data.Profunctor.Unsafe
+@@ -61,8 +61,6 @@ import Unsafe.Coerce
+ import Data.Profunctor.Unsafe
#endif
- import Prelude
-{-# ANN module "HLint: ignore Use camelCase" #-}
-
@@ -190,17 +214,17 @@ index 36152d6..3af6bd3 100644
-- >>> :set -XNoOverloadedStrings
-- >>> import Control.Lens
diff --git a/src/Control/Monad/Primitive/Lens.hs b/src/Control/Monad/Primitive/Lens.hs
-index 8f1ec94..482764a 100644
+index ee942c6..2f37134 100644
--- a/src/Control/Monad/Primitive/Lens.hs
+++ b/src/Control/Monad/Primitive/Lens.hs
-@@ -26,7 +26,6 @@ import Control.Lens
- import Control.Monad.Primitive
+@@ -20,7 +20,6 @@ import Control.Lens
+ import Control.Monad.Primitive (PrimMonad(..))
import GHC.Prim (State#)
-{-# ANN module "HLint: ignore Unused LANGUAGE pragma" #-}
- #if MIN_VERSION_primitive(0,6,0)
- prim :: PrimBase m => Iso' (m a) (State# (PrimState m) -> (# State# (PrimState m), a #))
+ prim :: (PrimMonad m) => Iso' (m a) (State# (PrimState m) -> (# State# (PrimState m), a #))
+ prim = iso internal primitive
--
-2.1.4
+2.1.1
diff --git a/standalone/no-th/haskell-patches/monad-logger_remove-TH.patch b/standalone/no-th/haskell-patches/monad-logger_remove-TH.patch
new file mode 100644
index 000000000..c24fa5aa2
--- /dev/null
+++ b/standalone/no-th/haskell-patches/monad-logger_remove-TH.patch
@@ -0,0 +1,27 @@
+From 8e78a25ce0cc19e52d063f66bd4cd316462393d4 Mon Sep 17 00:00:00 2001
+From: dummy <dummy@example.com>
+Date: Thu, 6 Mar 2014 23:27:06 +0000
+Subject: [PATCH] disable th
+
+---
+ monad-logger.cabal | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/monad-logger.cabal b/monad-logger.cabal
+index b0aa271..cd56c0f 100644
+--- a/monad-logger.cabal
++++ b/monad-logger.cabal
+@@ -14,8 +14,8 @@ cabal-version: >=1.8
+
+ flag template_haskell {
+ Description: Enable Template Haskell support
+- Default: True
+- Manual: True
++ Default: False
++ Manual: False
+ }
+
+ library
+--
+1.9.0
+
diff --git a/standalone/android/haskell-patches/optparse-applicative_remove-ANN.patch b/standalone/no-th/haskell-patches/optparse-applicative_remove-ANN.patch
index 1bb843524..1bb843524 100644
--- a/standalone/android/haskell-patches/optparse-applicative_remove-ANN.patch
+++ b/standalone/no-th/haskell-patches/optparse-applicative_remove-ANN.patch
diff --git a/standalone/no-th/haskell-patches/persistent_1.1.5.1_0001-disable-TH.patch b/standalone/no-th/haskell-patches/persistent_1.1.5.1_0001-disable-TH.patch
new file mode 100644
index 000000000..cd86ccd2d
--- /dev/null
+++ b/standalone/no-th/haskell-patches/persistent_1.1.5.1_0001-disable-TH.patch
@@ -0,0 +1,41 @@
+From aae3ace106cf26c931cc94c96fb6fbfe83f950f2 Mon Sep 17 00:00:00 2001
+From: dummy <dummy@example.com>
+Date: Wed, 15 Oct 2014 17:05:37 +0000
+Subject: [PATCH] avoid TH
+
+---
+ Database/Persist/Sql/Raw.hs | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/Database/Persist/Sql/Raw.hs b/Database/Persist/Sql/Raw.hs
+index 3ac2ca9..bcc2011 100644
+--- a/Database/Persist/Sql/Raw.hs
++++ b/Database/Persist/Sql/Raw.hs
+@@ -11,7 +11,7 @@ import Data.IORef (writeIORef, readIORef, newIORef)
+ import Control.Exception (throwIO)
+ import Control.Monad (when, liftM)
+ import Data.Text (Text, pack)
+-import Control.Monad.Logger (logDebugS)
++--import Control.Monad.Logger (logDebugS)
+ import Data.Int (Int64)
+ import Control.Monad.Trans.Class (lift)
+ import qualified Data.Text as T
+@@ -23,7 +23,6 @@ rawQuery :: (MonadSqlPersist m, MonadResource m)
+ -> [PersistValue]
+ -> Source m [PersistValue]
+ rawQuery sql vals = do
+- lift $ $logDebugS (pack "SQL") $ pack $ show sql ++ " " ++ show vals
+ conn <- lift askSqlConn
+ bracketP
+ (getStmtConn conn sql)
+@@ -35,7 +34,6 @@ rawExecute x y = liftM (const ()) $ rawExecuteCount x y
+
+ rawExecuteCount :: MonadSqlPersist m => Text -> [PersistValue] -> m Int64
+ rawExecuteCount sql vals = do
+- $logDebugS (pack "SQL") $ pack $ show sql ++ " " ++ show vals
+ stmt <- getStmt sql
+ res <- liftIO $ stmtExecute stmt vals
+ liftIO $ stmtReset stmt
+--
+2.1.1
+
diff --git a/standalone/android/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch b/standalone/no-th/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch
index 45397f3e5..45397f3e5 100644
--- a/standalone/android/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch
+++ b/standalone/no-th/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch
diff --git a/standalone/no-th/haskell-patches/reflection_remove-TH.patch b/standalone/no-th/haskell-patches/reflection_remove-TH.patch
new file mode 100644
index 000000000..4f8b4bc20
--- /dev/null
+++ b/standalone/no-th/haskell-patches/reflection_remove-TH.patch
@@ -0,0 +1,59 @@
+From c0f5dcfd6ba7a05bb84b6adc4664c8dde109e6ac Mon Sep 17 00:00:00 2001
+From: dummy <dummy@example.com>
+Date: Fri, 7 Mar 2014 04:30:22 +0000
+Subject: [PATCH] remove TH
+
+---
+ fast/Data/Reflection.hs | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/fast/Data/Reflection.hs b/fast/Data/Reflection.hs
+index ca57d35..d3f8356 100644
+--- a/fast/Data/Reflection.hs
++++ b/fast/Data/Reflection.hs
+@@ -59,7 +59,7 @@ module Data.Reflection
+ , Given(..)
+ , give
+ -- * Template Haskell reflection
+- , int, nat
++ --, int, nat
+ -- * Useful compile time naturals
+ , Z, D, SD, PD
+ ) where
+@@ -161,6 +161,7 @@ instance Reifies n Int => Reifies (PD n) Int where
+ -- instead of @$(int 3)@. Sometimes the two will produce the same
+ -- representation (if compiled without the @-DUSE_TYPE_LITS@ preprocessor
+ -- directive).
++{-
+ int :: Int -> TypeQ
+ int n = case quotRem n 2 of
+ (0, 0) -> conT ''Z
+@@ -176,7 +177,7 @@ nat :: Int -> TypeQ
+ nat n
+ | n >= 0 = int n
+ | otherwise = error "nat: negative"
+-
++-}
+ #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL < 704
+ instance Show (Q a)
+ instance Eq (Q a)
+@@ -195,6 +196,7 @@ instance Fractional a => Fractional (Q a) where
+ recip = fmap recip
+ fromRational = return . fromRational
+
++{-
+ -- | This permits the use of $(5) as a type splice.
+ instance Num Type where
+ #ifdef USE_TYPE_LITS
+@@ -254,7 +256,7 @@ instance Num Exp where
+ abs = onProxyType1 abs
+ signum = onProxyType1 signum
+ fromInteger n = ConE 'Proxy `SigE` (ConT ''Proxy `AppT` fromInteger n)
+-
++-}
+ #ifdef USE_TYPE_LITS
+ addProxy :: Proxy a -> Proxy b -> Proxy (a + b)
+ addProxy _ _ = Proxy
+--
+1.9.0
+
diff --git a/standalone/android/haskell-patches/skein_hardcode_little-endian.patch b/standalone/no-th/haskell-patches/skein_hardcode_little-endian.patch
index 7333742b0..7333742b0 100644
--- a/standalone/android/haskell-patches/skein_hardcode_little-endian.patch
+++ b/standalone/no-th/haskell-patches/skein_hardcode_little-endian.patch
diff --git a/standalone/no-th/haskell-patches/vector_hack-to-build-with-new-ghc.patch b/standalone/no-th/haskell-patches/vector_hack-to-build-with-new-ghc.patch
new file mode 100644
index 000000000..f89f0d60b
--- /dev/null
+++ b/standalone/no-th/haskell-patches/vector_hack-to-build-with-new-ghc.patch
@@ -0,0 +1,49 @@
+From 6ffd4fcb7d27ec6df709d80a40a262406446a259 Mon Sep 17 00:00:00 2001
+From: dummy <dummy@example.com>
+Date: Wed, 15 Oct 2014 17:00:56 +0000
+Subject: [PATCH] cross build
+
+---
+ Data/Vector/Fusion/Stream/Monadic.hs | 1 -
+ Data/Vector/Unboxed/Base.hs | 13 -------------
+ 2 files changed, 14 deletions(-)
+
+diff --git a/Data/Vector/Fusion/Stream/Monadic.hs b/Data/Vector/Fusion/Stream/Monadic.hs
+index 51fec75..b089b3d 100644
+--- a/Data/Vector/Fusion/Stream/Monadic.hs
++++ b/Data/Vector/Fusion/Stream/Monadic.hs
+@@ -101,7 +101,6 @@ import GHC.Exts ( SpecConstrAnnotation(..) )
+
+ data SPEC = SPEC | SPEC2
+ #if __GLASGOW_HASKELL__ >= 700
+-{-# ANN type SPEC ForceSpecConstr #-}
+ #endif
+
+ emptyStream :: String
+diff --git a/Data/Vector/Unboxed/Base.hs b/Data/Vector/Unboxed/Base.hs
+index 00350cb..34bfc4a 100644
+--- a/Data/Vector/Unboxed/Base.hs
++++ b/Data/Vector/Unboxed/Base.hs
+@@ -65,19 +65,6 @@ vectorTyCon = mkTyCon3 "vector"
+ vectorTyCon m s = mkTyCon $ m ++ "." ++ s
+ #endif
+
+-instance Typeable1 Vector where
+- typeOf1 _ = mkTyConApp (vectorTyCon "Data.Vector.Unboxed" "Vector") []
+-
+-instance Typeable2 MVector where
+- typeOf2 _ = mkTyConApp (vectorTyCon "Data.Vector.Unboxed.Mutable" "MVector") []
+-
+-instance (Data a, Unbox a) => Data (Vector a) where
+- gfoldl = G.gfoldl
+- toConstr _ = error "toConstr"
+- gunfold _ _ = error "gunfold"
+- dataTypeOf _ = G.mkType "Data.Vector.Unboxed.Vector"
+- dataCast1 = G.dataCast
+-
+ -- ----
+ -- Unit
+ -- ----
+--
+2.1.1
+
diff --git a/standalone/no-th/haskell-patches/wai-app-static_deal-with-TH.patch b/standalone/no-th/haskell-patches/wai-app-static_deal-with-TH.patch
index 76beafd03..93314312f 100644
--- a/standalone/no-th/haskell-patches/wai-app-static_deal-with-TH.patch
+++ b/standalone/no-th/haskell-patches/wai-app-static_deal-with-TH.patch
@@ -1,8 +1,12 @@
-From a020dd27eda45263db6ac887df4a94efb6ca86db Mon Sep 17 00:00:00 2001
+From 3aef808eee43c973ae1fbf6e8769d89b7f0d355b Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
-Date: Thu, 2 Jul 2015 21:36:02 +0000
+Date: Tue, 10 Jun 2014 14:47:42 +0000
Subject: [PATCH] deal with TH
+Export modules referenced by it.
+
+Should not need these icons in git-annex, so not worth using the Evil
+Splicer.
---
Network/Wai/Application/Static.hs | 4 ----
WaiAppStatic/Storage/Embedded.hs | 8 ++++----
@@ -10,10 +14,10 @@ Subject: [PATCH] deal with TH
3 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/Network/Wai/Application/Static.hs b/Network/Wai/Application/Static.hs
-index 228582d..7d72bb0 100644
+index db2b835..b2c1aec 100644
--- a/Network/Wai/Application/Static.hs
+++ b/Network/Wai/Application/Static.hs
-@@ -34,8 +34,6 @@ import Control.Monad.IO.Class (liftIO)
+@@ -33,8 +33,6 @@ import Control.Monad.IO.Class (liftIO)
import Blaze.ByteString.Builder (toByteString)
@@ -22,10 +26,10 @@ index 228582d..7d72bb0 100644
import Data.Text (Text)
import qualified Data.Text as T
-@@ -218,8 +216,6 @@ staticAppPieces _ _ req sendResponse
+@@ -198,8 +196,6 @@ staticAppPieces _ _ req sendResponse
H.status405
[("Content-Type", "text/plain")]
- "Only GET or HEAD is supported"
+ "Only GET is supported"
-staticAppPieces _ [".hidden", "folder.png"] _ sendResponse = sendResponse $ W.responseLBS H.status200 [("Content-Type", "image/png")] $ L.fromChunks [$(embedFile "images/folder.png")]
-staticAppPieces _ [".hidden", "haskell.png"] _ sendResponse = sendResponse $ W.responseLBS H.status200 [("Content-Type", "image/png")] $ L.fromChunks [$(embedFile "images/haskell.png")]
staticAppPieces ss rawPieces req sendResponse = liftIO $ do
@@ -51,10 +55,10 @@ index daa6e50..9873d4e 100644
-import WaiAppStatic.Storage.Embedded.TH
+--import WaiAppStatic.Storage.Embedded.TH
diff --git a/wai-app-static.cabal b/wai-app-static.cabal
-index 4cca237..3fbfcee 100644
+index ef6f898..9a59d71 100644
--- a/wai-app-static.cabal
+++ b/wai-app-static.cabal
-@@ -35,7 +35,6 @@ library
+@@ -33,7 +33,6 @@ library
, containers >= 0.2
, time >= 1.1.4
, old-locale >= 1.0.0.2
@@ -62,7 +66,7 @@ index 4cca237..3fbfcee 100644
, text >= 0.7
, blaze-builder >= 0.2.1.4
, base64-bytestring >= 0.1
-@@ -63,9 +62,8 @@ library
+@@ -61,9 +60,8 @@ library
WaiAppStatic.Listing
WaiAppStatic.Types
WaiAppStatic.CmdLine
@@ -74,5 +78,5 @@ index 4cca237..3fbfcee 100644
extensions: CPP
--
-2.1.4
+2.0.0
diff --git a/standalone/no-th/haskell-patches/xml-hamlet_remove_TH.patch b/standalone/no-th/haskell-patches/xml-hamlet_remove_TH.patch
new file mode 100644
index 000000000..b6334d31f
--- /dev/null
+++ b/standalone/no-th/haskell-patches/xml-hamlet_remove_TH.patch
@@ -0,0 +1,108 @@
+From b53713fbb4f3bb6bdd25b07afcaed4940b32dfa8 Mon Sep 17 00:00:00 2001
+From: Joey Hess <joey@kitenet.net>
+Date: Wed, 18 Dec 2013 03:32:44 +0000
+Subject: [PATCH] remove TH
+
+---
+ Text/Hamlet/XML.hs | 81 +-----------------------------------------------------
+ 1 file changed, 1 insertion(+), 80 deletions(-)
+
+diff --git a/Text/Hamlet/XML.hs b/Text/Hamlet/XML.hs
+index f587410..4e830bd 100644
+--- a/Text/Hamlet/XML.hs
++++ b/Text/Hamlet/XML.hs
+@@ -1,9 +1,7 @@
+ {-# LANGUAGE TemplateHaskell #-}
+ {-# OPTIONS_GHC -fno-warn-missing-fields #-}
+ module Text.Hamlet.XML
+- ( xml
+- , xmlFile
+- ) where
++ () where
+
+ import Language.Haskell.TH.Syntax
+ import Language.Haskell.TH.Quote
+@@ -19,80 +17,3 @@ import qualified Data.Foldable as F
+ import Data.Maybe (fromMaybe)
+ import qualified Data.Map as Map
+
+-xml :: QuasiQuoter
+-xml = QuasiQuoter { quoteExp = strToExp }
+-
+-xmlFile :: FilePath -> Q Exp
+-xmlFile = strToExp . TL.unpack <=< qRunIO . readUtf8File
+-
+-strToExp :: String -> Q Exp
+-strToExp s =
+- case parseDoc s of
+- Error e -> error e
+- Ok x -> docsToExp [] x
+-
+-docsToExp :: Scope -> [Doc] -> Q Exp
+-docsToExp scope docs = [| concat $(fmap ListE $ mapM (docToExp scope) docs) |]
+-
+-docToExp :: Scope -> Doc -> Q Exp
+-docToExp scope (DocTag name attrs cs) =
+- [| [ X.NodeElement (X.Element ($(liftName name)) $(mkAttrs scope attrs) $(docsToExp scope cs))
+- ] |]
+-docToExp _ (DocContent (ContentRaw s)) = [| [ X.NodeContent (pack $(lift s)) ] |]
+-docToExp scope (DocContent (ContentVar d)) = [| [ X.NodeContent $(return $ derefToExp scope d) ] |]
+-docToExp scope (DocContent (ContentEmbed d)) = return $ derefToExp scope d
+-docToExp scope (DocForall deref ident@(Ident ident') inside) = do
+- let list' = derefToExp scope deref
+- name <- newName ident'
+- let scope' = (ident, VarE name) : scope
+- inside' <- docsToExp scope' inside
+- let lam = LamE [VarP name] inside'
+- [| F.concatMap $(return lam) $(return list') |]
+-docToExp scope (DocWith [] inside) = docsToExp scope inside
+-docToExp scope (DocWith ((deref, ident@(Ident name)):dis) inside) = do
+- let deref' = derefToExp scope deref
+- name' <- newName name
+- let scope' = (ident, VarE name') : scope
+- inside' <- docToExp scope' (DocWith dis inside)
+- let lam = LamE [VarP name'] inside'
+- return $ lam `AppE` deref'
+-docToExp scope (DocMaybe deref ident@(Ident name) just nothing) = do
+- let deref' = derefToExp scope deref
+- name' <- newName name
+- let scope' = (ident, VarE name') : scope
+- inside' <- docsToExp scope' just
+- let inside'' = LamE [VarP name'] inside'
+- nothing' <-
+- case nothing of
+- Nothing -> [| [] |]
+- Just n -> docsToExp scope n
+- [| maybe $(return nothing') $(return inside'') $(return deref') |]
+-docToExp scope (DocCond conds final) = do
+- unit <- [| () |]
+- body <- fmap GuardedB $ mapM go $ conds ++ [(DerefIdent $ Ident "otherwise", fromMaybe [] final)]
+- return $ CaseE unit [Match (TupP []) body []]
+- where
+- go (deref, inside) = do
+- inside' <- docsToExp scope inside
+- return (NormalG $ derefToExp scope deref, inside')
+-
+-mkAttrs :: Scope -> [(Maybe Deref, String, [Content])] -> Q Exp
+-mkAttrs _ [] = [| Map.empty |]
+-mkAttrs scope ((mderef, name, value):rest) = do
+- rest' <- mkAttrs scope rest
+- this <- [| Map.insert $(liftName name) (T.concat $(fmap ListE $ mapM go value)) |]
+- let with = [| $(return this) $(return rest') |]
+- case mderef of
+- Nothing -> with
+- Just deref -> [| if $(return $ derefToExp scope deref) then $(with) else $(return rest') |]
+- where
+- go (ContentRaw s) = [| pack $(lift s) |]
+- go (ContentVar d) = return $ derefToExp scope d
+- go ContentEmbed{} = error "Cannot use embed interpolation in attribute value"
+-
+-liftName :: String -> Q Exp
+-liftName s = do
+- X.Name local mns _ <- return $ fromString s
+- case mns of
+- Nothing -> [| X.Name (pack $(lift $ unpack local)) Nothing Nothing |]
+- Just ns -> [| X.Name (pack $(lift $ unpack local)) (Just $ pack $(lift $ unpack ns)) Nothing |]
+--
+1.8.5.1
+
diff --git a/standalone/no-th/haskell-patches/yesod-core_expand_TH.patch b/standalone/no-th/haskell-patches/yesod-core_expand_TH.patch
index 723ec099a..f58fcb353 100644
--- a/standalone/no-th/haskell-patches/yesod-core_expand_TH.patch
+++ b/standalone/no-th/haskell-patches/yesod-core_expand_TH.patch
@@ -1,6 +1,6 @@
-From bec7dac77cc7fbe9a620c371d7c2cdbcf234eac6 Mon Sep 17 00:00:00 2001
+From f1feea61dcba0b16afed5ce8dd5d2433fe505461 Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
-Date: Fri, 3 Jul 2015 00:39:53 +0000
+Date: Thu, 16 Oct 2014 02:15:23 +0000
Subject: [PATCH] hack TH
---
@@ -15,7 +15,7 @@ Subject: [PATCH] hack TH
8 files changed, 213 insertions(+), 288 deletions(-)
diff --git a/Yesod/Core.hs b/Yesod/Core.hs
-index f7436e6..2fa62cc 100644
+index 9b29317..7c0792d 100644
--- a/Yesod/Core.hs
+++ b/Yesod/Core.hs
@@ -31,16 +31,16 @@ module Yesod.Core
@@ -45,7 +45,7 @@ index f7436e6..2fa62cc 100644
-- * Sessions
, SessionBackend (..)
, customizeSessionCookies
-@@ -90,17 +90,15 @@ module Yesod.Core
+@@ -87,17 +87,15 @@ module Yesod.Core
, readIntegral
-- * Shakespeare
-- ** Hamlet
@@ -68,10 +68,10 @@ index f7436e6..2fa62cc 100644
, renderCssUrl
) where
diff --git a/Yesod/Core/Class/Yesod.hs b/Yesod/Core/Class/Yesod.hs
-index c2e707a..b594353 100644
+index 8631d27..c40eb10 100644
--- a/Yesod/Core/Class/Yesod.hs
+++ b/Yesod/Core/Class/Yesod.hs
-@@ -5,11 +5,15 @@
+@@ -5,18 +5,22 @@
{-# LANGUAGE CPP #-}
module Yesod.Core.Class.Yesod where
@@ -88,16 +88,15 @@ index c2e707a..b594353 100644
import Blaze.ByteString.Builder (Builder)
import Blaze.ByteString.Builder.Char.Utf8 (fromText)
-@@ -18,7 +22,7 @@ import Control.Exception (bracket)
+ import Control.Arrow ((***), second)
import Control.Monad (forM, when, void)
import Control.Monad.IO.Class (MonadIO (liftIO))
- import Control.Monad.Logger (LogLevel (LevelInfo, LevelOther),
-- LogSource)
-+ LogSource, Loc)
- import Control.Monad.Trans.Resource (InternalState, createInternalState, closeInternalState)
+-import Control.Monad.Logger (LogLevel (LevelInfo, LevelOther),
++import Control.Monad.Logger (Loc, LogLevel (LevelInfo, LevelOther),
+ LogSource)
import qualified Data.ByteString.Char8 as S8
import qualified Data.ByteString.Lazy as L
-@@ -35,7 +39,6 @@ import qualified Data.Text.Encoding.Error as TEE
+@@ -33,7 +37,6 @@ import qualified Data.Text.Encoding.Error as TEE
import Data.Text.Lazy.Builder (toLazyText)
import Data.Text.Lazy.Encoding (encodeUtf8)
import Data.Word (Word64)
@@ -105,7 +104,7 @@ index c2e707a..b594353 100644
import Network.HTTP.Types (encodePath)
import qualified Network.Wai as W
import Data.Default (def)
-@@ -87,18 +90,26 @@ class RenderRoute site => Yesod site where
+@@ -94,18 +97,26 @@ class RenderRoute site => Yesod site where
defaultLayout w = do
p <- widgetToPageContent w
mmsg <- getMessage
@@ -144,7 +143,7 @@ index c2e707a..b594353 100644
-- | Override the rendering function for a particular URL. One use case for
-- this is to offload static hosting to a different domain name to avoid
-@@ -410,45 +421,103 @@ widgetToPageContent w = do
+@@ -374,45 +385,103 @@ widgetToPageContent w = do
-- modernizr should be at the end of the <head> http://www.modernizr.com/docs/#installing
-- the asynchronous loader means your page doesn't have to wait for all the js to load
let (mcomplete, asyncScripts) = asyncHelper render scripts jscript jsLoc
@@ -287,7 +286,7 @@ index c2e707a..b594353 100644
return $ PageContent title headAll $
case jsLoader master of
-@@ -478,10 +547,13 @@ defaultErrorHandler NotFound = selectRep $ do
+@@ -442,10 +511,13 @@ defaultErrorHandler NotFound = selectRep $ do
r <- waiRequest
let path' = TE.decodeUtf8With TEE.lenientDecode $ W.rawPathInfo r
setTitle "Not Found"
@@ -305,7 +304,7 @@ index c2e707a..b594353 100644
provideRep $ return $ object ["message" .= ("Not Found" :: Text)]
-- For API requests.
-@@ -491,10 +563,11 @@ defaultErrorHandler NotFound = selectRep $ do
+@@ -455,10 +527,11 @@ defaultErrorHandler NotFound = selectRep $ do
defaultErrorHandler NotAuthenticated = selectRep $ do
provideRep $ defaultLayout $ do
setTitle "Not logged in"
@@ -321,7 +320,7 @@ index c2e707a..b594353 100644
provideRep $ do
-- 401 *MUST* include a WWW-Authenticate header
-@@ -516,10 +589,13 @@ defaultErrorHandler NotAuthenticated = selectRep $ do
+@@ -480,10 +553,13 @@ defaultErrorHandler NotAuthenticated = selectRep $ do
defaultErrorHandler (PermissionDenied msg) = selectRep $ do
provideRep $ defaultLayout $ do
setTitle "Permission Denied"
@@ -339,7 +338,7 @@ index c2e707a..b594353 100644
provideRep $
return $ object $ [
"message" .= ("Permission Denied. " <> msg)
-@@ -528,30 +604,42 @@ defaultErrorHandler (PermissionDenied msg) = selectRep $ do
+@@ -492,30 +568,42 @@ defaultErrorHandler (PermissionDenied msg) = selectRep $ do
defaultErrorHandler (InvalidArgs ia) = selectRep $ do
provideRep $ defaultLayout $ do
setTitle "Invalid Arguments"
@@ -397,7 +396,7 @@ index c2e707a..b594353 100644
provideRep $ return $ object ["message" .= ("Bad method" :: Text), "method" .= TE.decodeUtf8With TEE.lenientDecode m]
asyncHelper :: (url -> [x] -> Text)
-@@ -718,8 +806,4 @@ loadClientSession key getCachedDate sessionName req = load
+@@ -682,8 +770,4 @@ loadClientSession key getCachedDate sessionName req = load
-- turn the TH Loc loaction information into a human readable string
-- leaving out the loc_end parameter
fileLocationToString :: Loc -> String
@@ -408,7 +407,7 @@ index c2e707a..b594353 100644
- char = show . snd . loc_start
+fileLocationToString loc = "unknown"
diff --git a/Yesod/Core/Dispatch.hs b/Yesod/Core/Dispatch.hs
-index 7e43f74..625a901 100644
+index e0d1f0e..cc23fdd 100644
--- a/Yesod/Core/Dispatch.hs
+++ b/Yesod/Core/Dispatch.hs
@@ -1,4 +1,3 @@
@@ -445,9 +444,9 @@ index 7e43f74..625a901 100644
, PathMultiPiece (..)
, Texts
-- * Convert to WAI
-@@ -141,13 +140,6 @@ toWaiAppLogger logger site = do
+@@ -135,13 +134,6 @@ toWaiAppLogger logger site = do
+ , yreSite = site
, yreSessionBackend = sb
- , yreGen = gen
}
- messageLoggerSource
- site
@@ -459,10 +458,10 @@ index 7e43f74..625a901 100644
middleware <- mkDefaultMiddlewares logger
return $ middleware $ toWaiAppYre yre
-@@ -167,14 +159,7 @@ warp port site = do
- Network.Wai.Handler.Warp.setPort port $
- Network.Wai.Handler.Warp.setServerName serverValue $
- Network.Wai.Handler.Warp.setOnException (\_ e ->
+@@ -170,14 +162,7 @@ warp port site = do
+ ]
+ -}
+ , Network.Wai.Handler.Warp.settingsOnException = const $ \e ->
- when (shouldLog' e) $
- messageLoggerSource
- site
@@ -470,12 +469,12 @@ index 7e43f74..625a901 100644
- $(qLocation >>= liftLoc)
- "yesod-core"
- LevelError
-- (toLogStr $ "Exception from Warp: " ++ show e)) $
-+ when (shouldLog' e) $ error (show e)) $
- Network.Wai.Handler.Warp.defaultSettings)
+- (toLogStr $ "Exception from Warp: " ++ show e)
++ when (shouldLog' e) $ error (show e)
+ }
where
- shouldLog' = Network.Wai.Handler.Warp.defaultShouldDisplayException
-@@ -208,7 +193,6 @@ defaultMiddlewaresNoLogging = acceptOverride . autohead . gzip def . methodOverr
+ shouldLog' =
+@@ -211,7 +196,6 @@ defaultMiddlewaresNoLogging = acceptOverride . autohead . gzip def . methodOverr
-- | Deprecated synonym for 'warp'.
warpDebug :: YesodDispatch site => Int -> site -> IO ()
warpDebug = warp
@@ -484,10 +483,10 @@ index 7e43f74..625a901 100644
-- | Runs your application using default middlewares (i.e., via 'toWaiApp'). It
-- reads port information from the PORT environment variable, as used by tools
diff --git a/Yesod/Core/Handler.hs b/Yesod/Core/Handler.hs
-index 19f4152..c97fb24 100644
+index d2b196b..13cac17 100644
--- a/Yesod/Core/Handler.hs
+++ b/Yesod/Core/Handler.hs
-@@ -178,7 +178,7 @@ import Data.Text.Encoding (decodeUtf8With, encodeUtf8)
+@@ -174,7 +174,7 @@ import Data.Text.Encoding (decodeUtf8With, encodeUtf8)
import Data.Text.Encoding.Error (lenientDecode)
import qualified Data.Text.Lazy as TL
import qualified Text.Blaze.Html.Renderer.Text as RenderText
@@ -496,7 +495,7 @@ index 19f4152..c97fb24 100644
import qualified Data.ByteString as S
import qualified Data.ByteString.Lazy as L
-@@ -206,6 +206,7 @@ import Control.Exception (throwIO)
+@@ -203,6 +203,7 @@ import Control.Exception (throwIO)
import Blaze.ByteString.Builder (Builder)
import Safe (headMay)
import Data.CaseInsensitive (CI)
@@ -504,7 +503,7 @@ index 19f4152..c97fb24 100644
import qualified Data.Conduit.List as CL
import Control.Monad (unless)
import Control.Monad.Trans.Resource (MonadResource, InternalState, runResourceT, withInternalState, getInternalState, liftResourceT, resourceForkIO
-@@ -848,19 +849,15 @@ redirectToPost :: (MonadHandler m, RedirectUrl (HandlerSite m) url)
+@@ -855,19 +856,15 @@ redirectToPost :: (MonadHandler m, RedirectUrl (HandlerSite m) url)
-> m a
redirectToPost url = do
urlText <- toTextUrl url
@@ -534,7 +533,7 @@ index 19f4152..c97fb24 100644
-- | Wraps the 'Content' generated by 'hamletToContent' in a 'RepHtml'.
hamletToRepHtml :: MonadHandler m => HtmlUrl (Route (HandlerSite m)) -> m Html
diff --git a/Yesod/Core/Internal/Run.hs b/Yesod/Core/Internal/Run.hs
-index 651c11c..46e1d2a 100644
+index 311f208..63f666f 100644
--- a/Yesod/Core/Internal/Run.hs
+++ b/Yesod/Core/Internal/Run.hs
@@ -16,7 +16,7 @@ import Control.Exception.Lifted (catch)
@@ -544,18 +543,18 @@ index 651c11c..46e1d2a 100644
-import Control.Monad.Logger (LogLevel (LevelError), LogSource,
+import Control.Monad.Logger (Loc, LogLevel (LevelError), LogSource,
liftLoc)
- import Control.Monad.Trans.Resource (runResourceT, withInternalState, runInternalState)
+ import Control.Monad.Trans.Resource (runResourceT, withInternalState, runInternalState, createInternalState, closeInternalState)
import qualified Data.ByteString as S
-@@ -32,7 +32,7 @@ import Data.Text.Encoding (encodeUtf8)
+@@ -31,7 +31,7 @@ import qualified Data.Text as T
+ import Data.Text.Encoding (encodeUtf8)
import Data.Text.Encoding (decodeUtf8With)
import Data.Text.Encoding.Error (lenientDecode)
- import Data.Time (getCurrentTime, addUTCTime)
-import Language.Haskell.TH.Syntax (Loc, qLocation)
+import Language.Haskell.TH.Syntax (qLocation)
import qualified Network.HTTP.Types as H
import Network.Wai
- import Network.Wai.Internal
-@@ -160,8 +160,6 @@ safeEh :: (Loc -> LogSource -> LogLevel -> LogStr -> IO ())
+ #if MIN_VERSION_wai(2, 0, 0)
+@@ -158,8 +158,6 @@ safeEh :: (Loc -> LogSource -> LogLevel -> LogStr -> IO ())
-> ErrorResponse
-> YesodApp
safeEh log' er req = do
@@ -684,26 +683,26 @@ index 7e84c1c..a273c29 100644
- ]
- return $ LetE [fun] (VarE helper)
diff --git a/Yesod/Core/Types.hs b/Yesod/Core/Types.hs
-index 5fa5c3d..1646d54 100644
+index 388dfe3..b3fce0f 100644
--- a/Yesod/Core/Types.hs
+++ b/Yesod/Core/Types.hs
-@@ -19,6 +19,7 @@ import Control.Monad.Base (MonadBase (liftBase))
- import Control.Monad.Catch (MonadCatch (..))
+@@ -21,6 +21,7 @@ import Control.Monad.Catch (MonadCatch (..))
import Control.Monad.Catch (MonadMask (..))
+ #endif
import Control.Monad.IO.Class (MonadIO (liftIO))
+import qualified Control.Monad.Logger
import Control.Monad.Logger (LogLevel, LogSource,
MonadLogger (..))
import Control.Monad.Trans.Control (MonadBaseControl (..))
-@@ -179,7 +180,7 @@ data RunHandlerEnv site = RunHandlerEnv
+@@ -191,7 +192,7 @@ data RunHandlerEnv site = RunHandlerEnv
, rheRoute :: !(Maybe (Route site))
, rheSite :: !site
, rheUpload :: !(RequestBodyLength -> FileUpload)
- , rheLog :: !(Loc -> LogSource -> LogLevel -> LogStr -> IO ())
+ , rheLog :: !(Control.Monad.Logger.Loc -> LogSource -> LogLevel -> LogStr -> IO ())
, rheOnError :: !(ErrorResponse -> YesodApp)
- , rheGetMaxExpires :: IO Text
-- ^ How to respond when an error is thrown internally.
+ --
diff --git a/Yesod/Core/Widget.hs b/Yesod/Core/Widget.hs
index 481199e..8489fbe 100644
--- a/Yesod/Core/Widget.hs
@@ -765,5 +764,5 @@ index 481199e..8489fbe 100644
ihamletToRepHtml :: (MonadHandler m, RenderMessage (HandlerSite m) message)
=> HtmlUrlI18n message (Route (HandlerSite m))
--
-2.1.4
+2.1.1
diff --git a/standalone/no-th/haskell-patches/yesod-form_spliced-TH.patch b/standalone/no-th/haskell-patches/yesod-form_spliced-TH.patch
index b9a84b1ad..84314a8d9 100644
--- a/standalone/no-th/haskell-patches/yesod-form_spliced-TH.patch
+++ b/standalone/no-th/haskell-patches/yesod-form_spliced-TH.patch
@@ -1,27 +1,22 @@
-From 4cf9a045569ea0b51b4ee11df2dadbde330f7813 Mon Sep 17 00:00:00 2001
+From 1b24ece1a40c9365f719472ca6e342c8c4065c25 Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
-Date: Fri, 3 Jul 2015 01:06:34 +0000
+Date: Thu, 16 Oct 2014 02:31:20 +0000
Subject: [PATCH] hack TH
-1. EvilSplicer
-2. Add imports
-3. Fix some syntax errors in spliced code
-4. Remove some persistent stuff that doesn't build.
---
- Yesod/Form/Bootstrap3.hs | 189 +++++++++--
- Yesod/Form/Fields.hs | 811 ++++++++++++++++++++++++++++++++++++-----------
- Yesod/Form/Functions.hs | 255 ++++++++++++---
- Yesod/Form/Jquery.hs | 124 ++++++--
+ Yesod/Form/Bootstrap3.hs | 186 +++++++++--
+ Yesod/Form/Fields.hs | 816 +++++++++++++++++++++++++++++++++++------------
+ Yesod/Form/Functions.hs | 257 ++++++++++++---
+ Yesod/Form/Jquery.hs | 134 ++++++--
Yesod/Form/MassInput.hs | 226 ++++++++++---
- Yesod/Form/Nic.hs | 60 +++-
- yesod-form.cabal | 2 +-
- 7 files changed, 1311 insertions(+), 356 deletions(-)
+ Yesod/Form/Nic.hs | 67 +++-
+ 6 files changed, 1322 insertions(+), 364 deletions(-)
diff --git a/Yesod/Form/Bootstrap3.hs b/Yesod/Form/Bootstrap3.hs
-index 8377a68..fa8b7d4 100644
+index 84e85fc..1954fb4 100644
--- a/Yesod/Form/Bootstrap3.hs
+++ b/Yesod/Form/Bootstrap3.hs
-@@ -35,6 +35,9 @@ import Data.String (IsString(..))
+@@ -26,6 +26,9 @@ import Data.String (IsString(..))
import Yesod.Core
import qualified Data.Text as T
@@ -31,7 +26,7 @@ index 8377a68..fa8b7d4 100644
import Yesod.Form.Types
import Yesod.Form.Functions
-@@ -155,44 +158,144 @@ renderBootstrap3 formLayout aform fragment = do
+@@ -152,44 +155,144 @@ renderBootstrap3 formLayout aform fragment = do
let views = views' []
has (Just _) = True
has Nothing = False
@@ -64,22 +59,22 @@ index 8377a68..fa8b7d4 100644
- |]
+ widget = do { (asWidgetT . toWidget) (toHtml fragment);
+ Data.Foldable.mapM_
-+ (\ view_a2d4p
++ (\ view_as0a
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack)
+ "<div class=\"form-group ");
+ Text.Hamlet.condH
-+ [(fvRequired view_a2d4p,
++ [(fvRequired view_as0a,
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "required "))]
+ Nothing;
+ Text.Hamlet.condH
-+ [(not (fvRequired view_a2d4p),
++ [(not (fvRequired view_as0a),
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "optional "))]
+ Nothing;
+ Text.Hamlet.condH
-+ [(has (fvErrors view_a2d4p),
++ [(has (fvErrors view_as0a),
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "has-error"))]
+ Nothing;
@@ -88,66 +83,66 @@ index 8377a68..fa8b7d4 100644
+ case formLayout of {
+ ; BootstrapBasicForm
+ -> do { Text.Hamlet.condH
-+ [((/=) (fvId view_a2d4p) bootstrapSubmitId,
++ [((/=) (fvId view_as0a) bootstrapSubmitId,
+ do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack)
+ "<label for=\"");
-+ (asWidgetT . toWidget) (toHtml (fvId view_a2d4p));
++ (asWidgetT . toWidget) (toHtml (fvId view_as0a));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "\">");
-+ (asWidgetT . toWidget) (toHtml (fvLabel view_a2d4p));
++ (asWidgetT . toWidget) (toHtml (fvLabel view_as0a));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack)
+ "</label>") })]
+ Nothing;
-+ (asWidgetT . toWidget) (fvInput view_a2d4p);
-+ (asWidgetT . toWidget) (helpWidget view_a2d4p) }
++ (asWidgetT . toWidget) (fvInput view_as0a);
++ (asWidgetT . toWidget) (helpWidget view_as0a) }
+ ; BootstrapInlineForm
+ -> do { Text.Hamlet.condH
-+ [((/=) (fvId view_a2d4p) bootstrapSubmitId,
++ [((/=) (fvId view_as0a) bootstrapSubmitId,
+ do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack)
+ "<label class=\"sr-only\" for=\"");
-+ (asWidgetT . toWidget) (toHtml (fvId view_a2d4p));
++ (asWidgetT . toWidget) (toHtml (fvId view_as0a));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "\">");
-+ (asWidgetT . toWidget) (toHtml (fvLabel view_a2d4p));
++ (asWidgetT . toWidget) (toHtml (fvLabel view_as0a));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack)
+ "</label>") })]
+ Nothing;
-+ (asWidgetT . toWidget) (fvInput view_a2d4p);
-+ (asWidgetT . toWidget) (helpWidget view_a2d4p) }
-+ ; BootstrapHorizontalForm labelOffset_a2d4q
-+ labelSize_a2d4r
-+ inputOffset_a2d4s
-+ inputSize_a2d4t
++ (asWidgetT . toWidget) (fvInput view_as0a);
++ (asWidgetT . toWidget) (helpWidget view_as0a) }
++ ; BootstrapHorizontalForm labelOffset_as0b
++ labelSize_as0c
++ inputOffset_as0d
++ inputSize_as0e
+ -> Text.Hamlet.condH
-+ [((/=) (fvId view_a2d4p) bootstrapSubmitId,
++ [((/=) (fvId view_as0a) bootstrapSubmitId,
+ do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack)
+ "<label class=\"control-label ");
-+ (asWidgetT . toWidget) (toHtml (toOffset labelOffset_a2d4q));
++ (asWidgetT . toWidget) (toHtml (toOffset labelOffset_as0b));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) " ");
-+ (asWidgetT . toWidget) (toHtml (toColumn labelSize_a2d4r));
++ (asWidgetT . toWidget) (toHtml (toColumn labelSize_as0c));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "\" for=\"");
-+ (asWidgetT . toWidget) (toHtml (fvId view_a2d4p));
++ (asWidgetT . toWidget) (toHtml (fvId view_as0a));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "\">");
-+ (asWidgetT . toWidget) (toHtml (fvLabel view_a2d4p));
++ (asWidgetT . toWidget) (toHtml (fvLabel view_as0a));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack)
+ "</label><div class=\"");
-+ (asWidgetT . toWidget) (toHtml (toOffset inputOffset_a2d4s));
++ (asWidgetT . toWidget) (toHtml (toOffset inputOffset_as0d));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) " ");
-+ (asWidgetT . toWidget) (toHtml (toColumn inputSize_a2d4t));
++ (asWidgetT . toWidget) (toHtml (toColumn inputSize_as0e));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "\">");
-+ (asWidgetT . toWidget) (fvInput view_a2d4p);
-+ (asWidgetT . toWidget) (helpWidget view_a2d4p);
++ (asWidgetT . toWidget) (fvInput view_as0a);
++ (asWidgetT . toWidget) (helpWidget view_as0a);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "</div>") })]
+ (Just
@@ -158,15 +153,15 @@ index 8377a68..fa8b7d4 100644
+ (toHtml
+ (toOffset
+ (addGO
-+ inputOffset_a2d4s
-+ (addGO labelOffset_a2d4q labelSize_a2d4r))));
++ inputOffset_as0d
++ (addGO labelOffset_as0b labelSize_as0c))));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) " ");
-+ (asWidgetT . toWidget) (toHtml (toColumn inputSize_a2d4t));
++ (asWidgetT . toWidget) (toHtml (toColumn inputSize_as0e));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "\">");
-+ (asWidgetT . toWidget) (fvInput view_a2d4p);
-+ (asWidgetT . toWidget) (helpWidget view_a2d4p);
++ (asWidgetT . toWidget) (fvInput view_as0a);
++ (asWidgetT . toWidget) (helpWidget view_as0a);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack)
+ "</div>") })) };
@@ -187,21 +182,21 @@ index 8377a68..fa8b7d4 100644
-|]
+helpWidget view = do { Text.Hamlet.maybeH
+ (fvTooltip view)
-+ (\ tt_a2d5x
++ (\ tt_as0k
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack)
+ "<span class=\"help-block\">");
-+ (asWidgetT . toWidget) (toHtml tt_a2d5x);
++ (asWidgetT . toWidget) (toHtml tt_as0k);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "</span>") })
+ Nothing;
+ Text.Hamlet.maybeH
+ (fvErrors view)
-+ (\ err_a2d5y
++ (\ err_as0l
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack)
+ "<span class=\"help-block\">");
-+ (asWidgetT . toWidget) (toHtml err_a2d5y);
++ (asWidgetT . toWidget) (toHtml err_as0l);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "</span>") })
+ Nothing }
@@ -209,7 +204,7 @@ index 8377a68..fa8b7d4 100644
-- | How the 'bootstrapSubmit' button should be rendered.
-@@ -247,7 +350,23 @@ mbootstrapSubmit
+@@ -244,7 +347,22 @@ mbootstrapSubmit
=> BootstrapSubmit msg -> MForm m (FormResult (), FieldView site)
mbootstrapSubmit (BootstrapSubmit msg classes attrs) =
let res = FormSuccess ()
@@ -226,26 +221,40 @@ index 8377a68..fa8b7d4 100644
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) ">");
+ ((liftM (toHtml .) getMessageRender)
-+ >>=
-+ (\ urender_a2d6f -> (asWidgetT . toWidget) (urender_a2d6f msg)));
++ >>= (\ urender_as0w -> (asWidgetT . toWidget) (urender_as0w msg)));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . T.pack) "</button>") }
+
fv = FieldView { fvLabel = ""
, fvTooltip = Nothing
, fvId = bootstrapSubmitId
-@@ -314,4 +433,4 @@ bootstrapSubmitId = "b:ootstrap___unique__:::::::::::::::::submit-id"
- -- > <$> areq textField nameSettings Nothing
- -- > where nameSettings = withAutofocus $
- -- > withPlaceholder "First name" $
---- > (bfs ("Name" :: Text))
-\ No newline at end of file
-+-- > (bfs ("Name" :: Text))
diff --git a/Yesod/Form/Fields.hs b/Yesod/Form/Fields.hs
-index 5fe123e..42fd7d6 100644
+index c6091a9..9e6bd4e 100644
--- a/Yesod/Form/Fields.hs
+++ b/Yesod/Form/Fields.hs
-@@ -52,8 +52,6 @@ module Yesod.Form.Fields
+@@ -1,4 +1,3 @@
+-{-# LANGUAGE QuasiQuotes #-}
+ {-# LANGUAGE TypeFamilies #-}
+ {-# LANGUAGE OverloadedStrings #-}
+ {-# LANGUAGE GeneralizedNewtypeDeriving #-}
+@@ -18,9 +17,6 @@ module Yesod.Form.Fields
+ , timeField
+ , htmlField
+ , emailField
+- , multiEmailField
+- , searchField
+- , AutoFocus
+ , urlField
+ , doubleField
+ , parseDate
+@@ -37,15 +33,11 @@ module Yesod.Form.Fields
+ , selectFieldList
+ , radioField
+ , radioFieldList
+- , checkboxesFieldList
+- , checkboxesField
+ , multiSelectField
+ , multiSelectFieldList
, Option (..)
, OptionList (..)
, mkOptionList
@@ -254,7 +263,7 @@ index 5fe123e..42fd7d6 100644
, optionsPairs
, optionsEnum
) where
-@@ -80,6 +78,15 @@ import Control.Monad (when, unless)
+@@ -72,6 +64,15 @@ import Control.Monad (when, unless)
import Data.Either (partitionEithers)
import Data.Maybe (listToMaybe, fromMaybe)
@@ -270,7 +279,14 @@ index 5fe123e..42fd7d6 100644
import qualified Blaze.ByteString.Builder.Html.Utf8 as B
import Blaze.ByteString.Builder (writeByteString, toLazyByteString)
import Blaze.ByteString.Builder.Internal.Write (fromWriteList)
-@@ -102,8 +109,6 @@ import Control.Applicative ((<$>), (<|>))
+@@ -91,15 +92,12 @@ import qualified Data.Text as T (drop, dropWhile)
+ import qualified Data.Text.Read
+
+ import qualified Data.Map as Map
+-import Yesod.Persist (selectList, runDB, Filter, SelectOpt, Key, YesodPersist, PersistEntity, PersistQuery)
+ import Control.Arrow ((&&&))
+
+ import Control.Applicative ((<$>), (<|>))
import Data.Attoparsec.Text (Parser, char, string, digit, skipSpace, endOfInput, parseOnly)
@@ -279,7 +295,7 @@ index 5fe123e..42fd7d6 100644
defaultFormMessage :: FormMessage -> Text
defaultFormMessage = englishFormMessage
-@@ -115,10 +120,25 @@ intField = Field
+@@ -111,10 +109,25 @@ intField = Field
Right (a, "") -> Right a
_ -> Left $ MsgInvalidInteger s
@@ -287,7 +303,7 @@ index 5fe123e..42fd7d6 100644
-$newline never
-<input id="#{theId}" name="#{name}" *{attrs} type="number" step=1 :isReq:required="" value="#{showVal val}">
-|]
-+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_a2nCq
++ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_aJJh
+ -> do { id
+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
+ id (toHtml theId);
@@ -309,7 +325,7 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
where
-@@ -133,10 +153,25 @@ doubleField = Field
+@@ -128,10 +141,25 @@ doubleField = Field
Right (a, "") -> Right a
_ -> Left $ MsgInvalidNumber s
@@ -317,7 +333,7 @@ index 5fe123e..42fd7d6 100644
-$newline never
-<input id="#{theId}" name="#{name}" *{attrs} type="number" step=any :isReq:required="" value="#{showVal val}">
-|]
-+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_a2nCV
++ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_aJJu
+ -> do { id
+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
+ id (toHtml theId);
@@ -339,7 +355,7 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
where showVal = either id (pack . show)
-@@ -147,10 +182,24 @@ $newline never
+@@ -139,10 +167,24 @@ $newline never
dayField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Day
dayField = Field
{ fieldParse = parseHelper $ parseDate . unpack
@@ -347,7 +363,7 @@ index 5fe123e..42fd7d6 100644
-$newline never
-<input id="#{theId}" name="#{name}" *{attrs} type="date" :isReq:required="" value="#{showVal val}">
-|]
-+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_a2nDh
++ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_aJJF
+ -> do { id
+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
+ id (toHtml theId);
@@ -368,22 +384,20 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
where showVal = either id (pack . show)
-@@ -179,10 +228,25 @@ timeFieldTypeText = timeFieldOfType "text"
- timeFieldOfType :: Monad m => RenderMessage (HandlerSite m) FormMessage => Text -> Field m TimeOfDay
- timeFieldOfType inputType = Field
+@@ -150,10 +192,23 @@ $newline never
+ timeField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m TimeOfDay
+ timeField = Field
{ fieldParse = parseHelper parseTime
- , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
-$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="#{inputType}" :isReq:required="" value="#{showVal val}">
+-<input id="#{theId}" name="#{name}" *{attrs} :isReq:required="" value="#{showVal val}">
-|]
-+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_a2nDN
++ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_aJJT
+ -> do { id
+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
+ id (toHtml theId);
+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
+ id (toHtml name);
-+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"");
-+ id (toHtml inputType);
+ id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
+ condH
+ [(isReq,
@@ -398,7 +412,7 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
where
-@@ -196,10 +260,23 @@ $newline never
+@@ -166,10 +221,23 @@ $newline never
htmlField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Html
htmlField = Field
{ fieldParse = parseHelper $ Right . preEscapedText . sanitizeBalance
@@ -406,7 +420,7 @@ index 5fe123e..42fd7d6 100644
-$newline never
-<textarea :isReq:required="" id="#{theId}" name="#{name}" *{attrs}>#{showVal val}
-|]
-+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_a2nEc
++ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_aJK4
+ -> do { id
+ ((Text.Blaze.Internal.preEscapedText . pack) "<textarea");
+ condH
@@ -426,25 +440,21 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
where showVal = either id (pack . renderHtml)
-@@ -231,10 +308,22 @@ instance ToHtml Textarea where
+@@ -197,10 +265,18 @@ instance ToHtml Textarea where
textareaField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Textarea
textareaField = Field
{ fieldParse = parseHelper $ Right . Textarea
-- , fieldView = \theId name attrs val isReq -> toWidget [hamlet|
+- , fieldView = \theId name attrs val _isReq -> toWidget [hamlet|
-$newline never
--<textarea id="#{theId}" name="#{name}" :isReq:required="" *{attrs}>#{either id unTextarea val}
+-<textarea id="#{theId}" name="#{name}" *{attrs}>#{either id unTextarea val}
-|]
-+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_a2nEL
++ , fieldView = \theId name attrs val _isReq -> toWidget $ \ _render_aJKe
+ -> do { id
+ ((Text.Blaze.Internal.preEscapedText . pack) "<textarea id=\"");
+ id (toHtml theId);
+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
+ id (toHtml name);
+ id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
-+ condH
-+ [(isReq,
-+ id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
-+ Nothing;
+ id ((attrsToHtml . toAttributes) attrs);
+ id ((Text.Blaze.Internal.preEscapedText . pack) ">");
+ id (toHtml (either id unTextarea val));
@@ -453,7 +463,7 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
-@@ -243,10 +332,19 @@ hiddenField :: (Monad m, PathPiece p, RenderMessage (HandlerSite m) FormMessage)
+@@ -208,10 +284,19 @@ hiddenField :: (Monad m, PathPiece p, RenderMessage (HandlerSite m) FormMessage)
=> Field m p
hiddenField = Field
{ fieldParse = parseHelper $ maybe (Left MsgValueRequired) Right . fromPathPiece
@@ -461,7 +471,7 @@ index 5fe123e..42fd7d6 100644
-$newline never
-<input type="hidden" id="#{theId}" name="#{name}" *{attrs} value="#{either id toPathPiece val}">
-|]
-+ , fieldView = \theId name attrs val _isReq -> toWidget $ \ _render_a2nFl
++ , fieldView = \theId name attrs val _isReq -> toWidget $ \ _render_aJKo
+ -> do { id
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "<input type=\"hidden\" id=\"");
@@ -477,7 +487,7 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
-@@ -255,20 +353,53 @@ textField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Tex
+@@ -219,20 +304,53 @@ textField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Tex
textField = Field
{ fieldParse = parseHelper $ Right
, fieldView = \theId name attrs val isReq ->
@@ -509,7 +519,7 @@ index 5fe123e..42fd7d6 100644
+
, fieldEnctype = UrlEncoded
}
- -- | Creates an input with @type="password"@.
+
passwordField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Text
passwordField = Field
{ fieldParse = parseHelper $ Right
@@ -517,7 +527,7 @@ index 5fe123e..42fd7d6 100644
-$newline never
-<input id="#{theId}" name="#{name}" *{attrs} type="password" :isReq:required="" value="#{either id id val}">
-|]
-+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_a2nG7
++ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_aJKH
+ -> do { id
+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
+ id (toHtml theId);
@@ -539,7 +549,7 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
-@@ -342,10 +473,24 @@ emailField = Field
+@@ -304,10 +422,24 @@ emailField = Field
case Email.canonicalizeEmail $ encodeUtf8 s of
Just e -> Right $ decodeUtf8With lenientDecode e
Nothing -> Left $ MsgInvalidEmail s
@@ -547,7 +557,7 @@ index 5fe123e..42fd7d6 100644
-$newline never
-<input id="#{theId}" name="#{name}" *{attrs} type="email" :isReq:required="" value="#{either id id val}">
-|]
-+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_a2nKu
++ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_aJLq
+ -> do { id
+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
+ id (toHtml theId);
@@ -568,7 +578,7 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
-@@ -360,10 +505,25 @@ multiEmailField = Field
+@@ -322,10 +454,25 @@ multiEmailField = Field
in case partitionEithers addrs of
([], good) -> Right good
(bad, _) -> Left $ MsgInvalidEmail $ cat bad
@@ -576,7 +586,7 @@ index 5fe123e..42fd7d6 100644
-$newline never
-<input id="#{theId}" name="#{name}" *{attrs} type="email" multiple :isReq:required="" value="#{either id cat val}">
-|]
-+ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_a2nL5
++ , fieldView = \theId name attrs val isReq -> toWidget $ \ _render_aJMd
+ -> do { id
+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
+ id (toHtml theId);
@@ -598,7 +608,7 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
where
-@@ -380,20 +540,74 @@ searchField :: Monad m => RenderMessage (HandlerSite m) FormMessage => AutoFocus
+@@ -341,20 +488,75 @@ searchField :: Monad m => RenderMessage (HandlerSite m) FormMessage => AutoFocus
searchField autoFocus = Field
{ fieldParse = parseHelper Right
, fieldView = \theId name attrs val isReq -> do
@@ -651,31 +661,32 @@ index 5fe123e..42fd7d6 100644
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "').focus();}</script>") }
+
-+ toWidget $ \ _render_a2nMA
-+ -> (Text.Css.CssNoWhitespace . (foldr ($) []))
++ toWidget $ \ _render_aJMx
++ -> (Text.Css.CssNoWhitespace
++ . (foldr ($) []))
+ [((++)
+ $ (map
+ Text.Css.TopBlock
+ (((Text.Css.Block
+ {Text.Css.blockSelector = Data.Monoid.mconcat
-+ [(Text.Css.fromText
-+ . Text.Css.pack)
-+ "#",
-+ toCss theId],
++ [(Text.Css.fromText
++ . Text.Css.pack)
++ "#",
++ toCss theId],
+ Text.Css.blockAttrs = (Prelude.concat
-+ $ ([Text.Css.Attr
-+ (Data.Monoid.mconcat
-+ [(Text.Css.fromText
-+ . Text.Css.pack)
-+ "-webkit-appearance"])
-+ (Data.Monoid.mconcat
-+ [(Text.Css.fromText
-+ . Text.Css.pack)
-+ "textfield"])]
-+ :
-+ (map
-+ Text.Css.mixinAttrs
-+ []))),
++ $ ([Text.Css.Attr
++ (Data.Monoid.mconcat
++ [(Text.Css.fromText
++ . Text.Css.pack)
++ "-webkit-appearance"])
++ (Data.Monoid.mconcat
++ [(Text.Css.fromText
++ . Text.Css.pack)
++ "textfield"])]
++ :
++ (map
++ Text.Css.mixinAttrs
++ []))),
+ Text.Css.blockBlocks = (),
+ Text.Css.blockMixins = ()} :)
+ . ((foldr (.) id [])
@@ -684,8 +695,8 @@ index 5fe123e..42fd7d6 100644
+
, fieldEnctype = UrlEncoded
}
- -- | Creates an input with @type="url"@, validating the URL according to RFC3986.
-@@ -404,7 +618,28 @@ urlField = Field
+
+@@ -365,7 +567,28 @@ urlField = Field
Nothing -> Left $ MsgInvalidUrl s
Just _ -> Right s
, fieldView = \theId name attrs val isReq ->
@@ -715,7 +726,7 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
-@@ -423,18 +658,54 @@ selectField :: (Eq a, RenderMessage site FormMessage)
+@@ -378,18 +601,54 @@ selectField :: (Eq a, RenderMessage site FormMessage)
=> HandlerT site IO (OptionList a)
-> Field (HandlerT site IO) a
selectField = selectFieldHelper
@@ -758,8 +769,8 @@ index 5fe123e..42fd7d6 100644
+ ((Text.Blaze.Internal.preEscapedText . pack) ">");
+ ((Control.Monad.liftM (toHtml .) getMessageRender)
+ >>=
-+ (\ urender_a2nOk
-+ -> (asWidgetT . toWidget) (urender_a2nOk MsgSelectNone)));
++ (\ urender_aJMX
++ -> (asWidgetT . toWidget) (urender_aJMX MsgSelectNone)));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</option>") })
+ -- onOpt
@@ -780,9 +791,9 @@ index 5fe123e..42fd7d6 100644
+ ((Text.Blaze.Internal.preEscapedText . pack) "</option>") })
+ -- inside
- -- | Creates a @\<select>@ tag for selecting multiple options.
multiSelectFieldList :: (Eq a, RenderMessage site FormMessage, RenderMessage site msg)
-@@ -459,11 +730,45 @@ multiSelectField ioptlist =
+ => [(msg, a)]
+@@ -412,11 +671,45 @@ multiSelectField ioptlist =
view theId name attrs val isReq = do
opts <- fmap olOptions $ handlerToWidget ioptlist
let selOpts = map (id &&& (optselected val)) opts
@@ -810,20 +821,20 @@ index 5fe123e..42fd7d6 100644
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) ">");
+ Data.Foldable.mapM_
-+ (\ (opt_a2nPy, optsel_a2nPz)
++ (\ (opt_aJNs, optsel_aJNt)
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "<option value=\"");
-+ (asWidgetT . toWidget) (toHtml (optionExternalValue opt_a2nPy));
++ (asWidgetT . toWidget) (toHtml (optionExternalValue opt_aJNs));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "\"");
+ condH
-+ [(optsel_a2nPz,
++ [(optsel_aJNt,
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) " selected"))]
+ Nothing;
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+ (asWidgetT . toWidget) (toHtml (optionDisplay opt_a2nPy));
++ (asWidgetT . toWidget) (toHtml (optionDisplay opt_aJNs));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</option>") })
+ selOpts;
@@ -833,7 +844,7 @@ index 5fe123e..42fd7d6 100644
where
optselected (Left _) _ = False
optselected (Right vals) opt = (optionInternalValue opt) `elem` vals
-@@ -489,37 +794,115 @@ checkboxesField ioptlist = (multiSelectField ioptlist)
+@@ -439,54 +732,196 @@ checkboxesField ioptlist = (multiSelectField ioptlist)
opts <- fmap olOptions $ handlerToWidget ioptlist
let optselected (Left _) _ = False
optselected (Right vals) opt = (optionInternalValue opt) `elem` vals
@@ -850,25 +861,25 @@ index 5fe123e..42fd7d6 100644
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "\">");
+ Data.Foldable.mapM_
-+ (\ opt_a2nQo
++ (\ opt_aJNI
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "<label><input type=\"checkbox\" name=\"");
+ (asWidgetT . toWidget) (toHtml name);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "\" value=\"");
-+ (asWidgetT . toWidget) (toHtml (optionExternalValue opt_a2nQo));
++ (asWidgetT . toWidget) (toHtml (optionExternalValue opt_aJNI));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "\"");
+ condH
-+ [(optselected val opt_a2nQo,
++ [(optselected val opt_aJNI,
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) " checked"))]
+ Nothing;
+ (asWidgetT . toWidget) ((attrsToHtml . toAttributes) attrs);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) ">");
-+ (asWidgetT . toWidget) (toHtml (optionDisplay opt_a2nQo));
++ (asWidgetT . toWidget) (toHtml (optionDisplay opt_aJNI));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</label>") })
+ opts;
@@ -876,7 +887,7 @@ index 5fe123e..42fd7d6 100644
+ ((Text.Blaze.Internal.preEscapedText . pack) "</span>") }
+
}
- -- | Creates an input with @type="radio"@ for selecting one option.
+
radioField :: (Eq a, RenderMessage site FormMessage)
=> HandlerT site IO (OptionList a)
-> Field (HandlerT site IO) a
@@ -931,8 +942,8 @@ index 5fe123e..42fd7d6 100644
+ ((Text.Blaze.Internal.preEscapedText . pack) ">");
+ ((Control.Monad.liftM (toHtml .) getMessageRender)
+ >>=
-+ (\ urender_a2nR7
-+ -> (asWidgetT . toWidget) (urender_a2nR7 MsgSelectNone)));
++ (\ urender_aJNY
++ -> (asWidgetT . toWidget) (urender_aJNY MsgSelectNone)));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</div></label>") })
+
@@ -972,9 +983,6 @@ index 5fe123e..42fd7d6 100644
+ ((Text.Blaze.Internal.preEscapedText . pack) "</div></label>") })
+
- -- | Creates a group of radio buttons to answer the question given in the message. Radio buttons are used to allow differentiating between an empty response (@Nothing@) and a no response (@Just False@). Consider using the simpler 'checkBoxField' if you don't need to make this distinction.
- --
-@@ -531,19 +914,83 @@ $newline never
boolField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Bool
boolField = Field
{ fieldParse = \e _ -> return $ boolParser e
@@ -984,9 +992,6 @@ index 5fe123e..42fd7d6 100644
- <input id=#{theId}-none *{attrs} type=radio name=#{name} value=none checked>
- <label for=#{theId}-none>_{MsgSelectNone}
-
--
--<input id=#{theId}-yes *{attrs} type=radio name=#{name} value=yes :showVal id val:checked>
--<label for=#{theId}-yes>_{MsgBoolYes}
+ , fieldView = \theId name attrs val isReq -> do { condH
+ [(not isReq,
+ do { (asWidgetT . toWidget)
@@ -1007,8 +1012,8 @@ index 5fe123e..42fd7d6 100644
+ ((Text.Blaze.Internal.preEscapedText . pack) "-none\">");
+ ((Control.Monad.liftM (toHtml .) getMessageRender)
+ >>=
-+ (\ urender_a2nSk
-+ -> (asWidgetT . toWidget) (urender_a2nSk MsgSelectNone)));
++ (\ urender_aJOn
++ -> (asWidgetT . toWidget) (urender_aJOn MsgSelectNone)));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</label>") })]
+ Nothing;
@@ -1034,8 +1039,8 @@ index 5fe123e..42fd7d6 100644
+ ((Text.Blaze.Internal.preEscapedText . pack) "-yes\">");
+ ((Control.Monad.liftM (toHtml .) getMessageRender)
+ >>=
-+ (\ urender_a2nSl
-+ -> (asWidgetT . toWidget) (urender_a2nSl MsgBoolYes)));
++ (\ urender_aJOo
++ -> (asWidgetT . toWidget) (urender_aJOo MsgBoolYes)));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "</label><input id=\"");
@@ -1059,18 +1064,21 @@ index 5fe123e..42fd7d6 100644
+ ((Text.Blaze.Internal.preEscapedText . pack) "-no\">");
+ ((Control.Monad.liftM (toHtml .) getMessageRender)
+ >>=
-+ (\ urender_a2nSm
-+ -> (asWidgetT . toWidget) (urender_a2nSm MsgBoolNo)));
++ (\ urender_aJOp
++ -> (asWidgetT . toWidget) (urender_aJOp MsgBoolNo)));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</label>") }
+-<input id=#{theId}-yes *{attrs} type=radio name=#{name} value=yes :showVal id val:checked>
+-<label for=#{theId}-yes>_{MsgBoolYes}
+-
-<input id=#{theId}-no *{attrs} type=radio name=#{name} value=no :showVal not val:checked>
-<label for=#{theId}-no>_{MsgBoolNo}
-|]
, fieldEnctype = UrlEncoded
}
where
-@@ -570,10 +1017,24 @@ $newline never
+@@ -512,10 +947,24 @@ $newline never
checkBoxField :: Monad m => RenderMessage (HandlerSite m) FormMessage => Field m Bool
checkBoxField = Field
{ fieldParse = \e _ -> return $ checkBoxParser e
@@ -1099,31 +1107,25 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = UrlEncoded
}
-@@ -619,66 +1080,6 @@ optionsPairs opts = do
+@@ -559,69 +1008,6 @@ 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]
---- | Selects a list of 'Entity's with the given 'Filter' and 'SelectOpt's. The @(a -> msg)@ function is then used to derive the display value for an 'OptionList'. Example usage:
----
---- > Country
---- > name Text
---- > deriving Eq -- Must derive Eq
----
---- > data CountryForm = CountryForm
---- > { country :: Entity Country
---- > }
---- >
---- > countryNameForm :: AForm Handler CountryForm
---- > countryNameForm = CountryForm
---- > <$> areq (selectField countries) "Which country do you live in?" Nothing
---- > where
---- > countries = optionsPersist [] [Asc CountryName] countryName
+-#if MIN_VERSION_persistent(2, 0, 0)
-optionsPersist :: ( YesodPersist site, PersistEntity a
- , PersistQuery (PersistEntityBackend a)
- , PathPiece (Key a)
- , RenderMessage site msg
- , YesodPersistBackend site ~ PersistEntityBackend a
- )
+-#else
+-optionsPersist :: ( YesodPersist site, PersistEntity a
+- , PersistQuery (YesodPersistBackend site (HandlerT site IO))
+- , PathPiece (Key a)
+- , PersistEntityBackend a ~ PersistMonadBackend (YesodPersistBackend site (HandlerT site IO))
+- , RenderMessage site msg
+- )
+-#endif
- => [Filter a]
- -> [SelectOpt a]
- -> (a -> msg)
@@ -1137,10 +1139,11 @@ index 5fe123e..42fd7d6 100644
- , optionExternalValue = toPathPiece key
- }) pairs
-
---- | An alternative to 'optionsPersist' which returns just the 'Key' instead of
---- the entire 'Entity'.
+--- | An alternative to 'optionsPersist' which returns just the @Key@ instead of
+--- the entire @Entity@.
---
--- Since 1.3.2
+-#if MIN_VERSION_persistent(2, 0, 0)
-optionsPersistKey
- :: (YesodPersist site
- , PersistEntity a
@@ -1149,6 +1152,15 @@ index 5fe123e..42fd7d6 100644
- , RenderMessage site msg
- , YesodPersistBackend site ~ PersistEntityBackend a
- )
+-#else
+-optionsPersistKey
+- :: (YesodPersist site
+- , PersistEntity a
+- , PersistQuery (YesodPersistBackend site (HandlerT site IO))
+- , PathPiece (Key a)
+- , RenderMessage site msg
+- , PersistEntityBackend a ~ PersistMonadBackend (YesodDB site))
+-#endif
- => [Filter a]
- -> [SelectOpt a]
- -> (a -> msg)
@@ -1162,18 +1174,17 @@ index 5fe123e..42fd7d6 100644
- , optionInternalValue = key
- , optionExternalValue = toPathPiece key
- }) pairs
--
+
selectFieldHelper
:: (Eq a, RenderMessage site FormMessage)
- => (Text -> Text -> [(Text, Text)] -> WidgetT site IO () -> WidgetT site IO ())
-@@ -722,9 +1123,21 @@ fileField = Field
+@@ -665,9 +1051,21 @@ fileField = Field
case files of
[] -> Right Nothing
file:_ -> Right $ Just file
- , fieldView = \id' name attrs _ isReq -> toWidget [hamlet|
- <input id=#{id'} name=#{name} *{attrs} type=file :isReq:required>
- |]
-+ , fieldView = \id' name attrs _ isReq -> toWidget $ \ _render_a2nUV
++ , fieldView = \id' name attrs _ isReq -> toWidget $ \ _render_aJPt
+ -> do { id
+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
+ id (toHtml id');
@@ -1191,7 +1202,7 @@ index 5fe123e..42fd7d6 100644
, fieldEnctype = Multipart
}
-@@ -751,10 +1164,19 @@ fileAFormReq fs = AForm $ \(site, langs) menvs ints -> do
+@@ -694,10 +1092,19 @@ 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'
@@ -1215,7 +1226,7 @@ index 5fe123e..42fd7d6 100644
, fvErrors = errs
, fvRequired = True
}
-@@ -783,10 +1205,19 @@ fileAFormOpt fs = AForm $ \(master, langs) menvs ints -> do
+@@ -726,10 +1133,19 @@ 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'
@@ -1240,26 +1251,28 @@ index 5fe123e..42fd7d6 100644
, fvRequired = False
}
diff --git a/Yesod/Form/Functions.hs b/Yesod/Form/Functions.hs
-index 0d83b79..61e9b66 100644
+index 9e6abaf..0c2a0ce 100644
--- a/Yesod/Form/Functions.hs
+++ b/Yesod/Form/Functions.hs
-@@ -60,12 +60,14 @@ import Text.Blaze (Markup, toMarkup)
+@@ -60,12 +60,16 @@ import Text.Blaze (Markup, toMarkup)
#define toHtml toMarkup
import Yesod.Core
import Network.Wai (requestMethod)
-import Text.Hamlet (shamlet)
++--import Text.Hamlet (shamlet)
import Data.Monoid (mempty)
import Data.Maybe (listToMaybe, fromMaybe)
import qualified Data.Map as Map
import qualified Data.Text.Encoding as TE
import Control.Arrow (first)
-+import qualified Text.Hamlet
+import qualified Text.Blaze.Internal
++import qualified Yesod.Core.Widget
+import qualified Data.Foldable
++import qualified Text.Hamlet
-- | Get a unique identifier.
newFormIdent :: Monad m => MForm m Text
-@@ -217,7 +219,14 @@ postHelper form env = do
+@@ -217,7 +221,14 @@ postHelper form env = do
let token =
case reqToken req of
Nothing -> mempty
@@ -1275,7 +1288,7 @@ index 0d83b79..61e9b66 100644
m <- getYesod
langs <- languages
((res, xml), enctype) <- runFormGeneric (form token) m langs env
-@@ -298,7 +307,12 @@ getHelper :: MonadHandler m
+@@ -297,7 +308,12 @@ getHelper :: MonadHandler m
-> Maybe (Env, FileEnv)
-> m (a, Enctype)
getHelper form env = do
@@ -1289,7 +1302,7 @@ index 0d83b79..61e9b66 100644
langs <- languages
m <- getYesod
runFormGeneric (form fragment) m langs env
-@@ -333,10 +347,15 @@ identifyForm
+@@ -332,10 +348,15 @@ identifyForm
identifyForm identVal form = \fragment -> do
-- Create hidden <input>.
let fragment' =
@@ -1309,7 +1322,7 @@ index 0d83b79..61e9b66 100644
-- Check if we got its value back.
mp <- askParams
-@@ -366,22 +385,70 @@ renderTable, renderDivs, renderDivsNoLabels :: Monad m => FormRender m a
+@@ -365,22 +386,70 @@ renderTable, renderDivs, renderDivsNoLabels :: Monad m => FormRender m a
renderTable aform fragment = do
(res, views') <- aFormToForm aform
let views = views' []
@@ -1332,20 +1345,20 @@ index 0d83b79..61e9b66 100644
+ let widget = do { Text.Hamlet.condH
+ [(null views, (asWidgetT . toWidget) (toHtml fragment))] Nothing;
+ Data.Foldable.mapM_
-+ (\ (isFirst_aNqW, view_aNqX)
++ (\ (isFirst_ab5u, view_ab5v)
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "<tr");
+ Text.Hamlet.condH
-+ [(or [fvRequired view_aNqX, not (fvRequired view_aNqX)],
++ [(or [fvRequired view_ab5v, not (fvRequired view_ab5v)],
+ do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) " class=\"");
+ Text.Hamlet.condH
-+ [(fvRequired view_aNqX,
++ [(fvRequired view_ab5v,
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "required "))]
+ Nothing;
+ Text.Hamlet.condH
-+ [(not (fvRequired view_aNqX),
++ [(not (fvRequired view_ab5v),
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "optional"))]
+ Nothing;
@@ -1355,37 +1368,37 @@ index 0d83b79..61e9b66 100644
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "><td>");
+ Text.Hamlet.condH
-+ [(isFirst_aNqW, (asWidgetT . toWidget) (toHtml fragment))] Nothing;
++ [(isFirst_ab5u, (asWidgetT . toWidget) (toHtml fragment))] Nothing;
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "<label for=\"");
-+ (asWidgetT . toWidget) (toHtml (fvId view_aNqX));
++ (asWidgetT . toWidget) (toHtml (fvId view_ab5v));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "\">");
-+ (asWidgetT . toWidget) (toHtml (fvLabel view_aNqX));
++ (asWidgetT . toWidget) (toHtml (fvLabel view_ab5v));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</label>");
+ Text.Hamlet.maybeH
-+ (fvTooltip view_aNqX)
-+ (\ tt_aNqY
++ (fvTooltip view_ab5v)
++ (\ tt_ab5w
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "<div class=\"tooltip\">");
-+ (asWidgetT . toWidget) (toHtml tt_aNqY);
++ (asWidgetT . toWidget) (toHtml tt_ab5w);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</div>") })
+ Nothing;
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</td><td>");
-+ (asWidgetT . toWidget) (fvInput view_aNqX);
++ (asWidgetT . toWidget) (fvInput view_ab5v);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</td>");
+ Text.Hamlet.maybeH
-+ (fvErrors view_aNqX)
-+ (\ err_aNqZ
++ (fvErrors view_ab5v)
++ (\ err_ab5x
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "<td class=\"errors\">");
-+ (asWidgetT . toWidget) (toHtml err_aNqZ);
++ (asWidgetT . toWidget) (toHtml err_ab5x);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</td>") })
+ Nothing;
@@ -1396,7 +1409,7 @@ index 0d83b79..61e9b66 100644
return (res, widget)
where
addIsFirst [] = []
-@@ -397,19 +464,66 @@ renderDivsMaybeLabels :: Monad m => Bool -> FormRender m a
+@@ -396,19 +465,66 @@ renderDivsMaybeLabels :: Monad m => Bool -> FormRender m a
renderDivsMaybeLabels withLabels aform fragment = do
(res, views') <- aFormToForm aform
let views = views' []
@@ -1415,20 +1428,20 @@ index 0d83b79..61e9b66 100644
-|]
+ let widget = do { (asWidgetT . toWidget) (toHtml fragment);
+ Data.Foldable.mapM_
-+ (\ view_aNsz
++ (\ view_ab5K
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "<div");
+ Text.Hamlet.condH
-+ [(or [fvRequired view_aNsz, not (fvRequired view_aNsz)],
++ [(or [fvRequired view_ab5K, not (fvRequired view_ab5K)],
+ do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) " class=\"");
+ Text.Hamlet.condH
-+ [(fvRequired view_aNsz,
++ [(fvRequired view_ab5K,
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "required "))]
+ Nothing;
+ Text.Hamlet.condH
-+ [(not (fvRequired view_aNsz),
++ [(not (fvRequired view_ab5K),
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "optional"))]
+ Nothing;
@@ -1441,31 +1454,31 @@ index 0d83b79..61e9b66 100644
+ [(withLabels,
+ do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "<label for=\"");
-+ (asWidgetT . toWidget) (toHtml (fvId view_aNsz));
++ (asWidgetT . toWidget) (toHtml (fvId view_ab5K));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "\">");
-+ (asWidgetT . toWidget) (toHtml (fvLabel view_aNsz));
++ (asWidgetT . toWidget) (toHtml (fvLabel view_ab5K));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</label>") })]
+ Nothing;
+ Text.Hamlet.maybeH
-+ (fvTooltip view_aNsz)
-+ (\ tt_aNsL
++ (fvTooltip view_ab5K)
++ (\ tt_ab5L
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "<div class=\"tooltip\">");
-+ (asWidgetT . toWidget) (toHtml tt_aNsL);
++ (asWidgetT . toWidget) (toHtml tt_ab5L);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</div>") })
+ Nothing;
-+ (asWidgetT . toWidget) (fvInput view_aNsz);
++ (asWidgetT . toWidget) (fvInput view_ab5K);
+ Text.Hamlet.maybeH
-+ (fvErrors view_aNsz)
-+ (\ err_aNsP
++ (fvErrors view_ab5K)
++ (\ err_ab5M
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "<div class=\"errors\">");
-+ (asWidgetT . toWidget) (toHtml err_aNsP);
++ (asWidgetT . toWidget) (toHtml err_ab5M);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</div>") })
+ Nothing;
@@ -1476,7 +1489,7 @@ index 0d83b79..61e9b66 100644
return (res, widget)
-- | Render a form using Bootstrap v2-friendly shamlet syntax.
-@@ -437,19 +551,62 @@ renderBootstrap2 aform fragment = do
+@@ -436,19 +552,62 @@ renderBootstrap2 aform fragment = do
let views = views' []
has (Just _) = True
has Nothing = False
@@ -1495,53 +1508,53 @@ index 0d83b79..61e9b66 100644
- |]
+ let widget = do { (asWidgetT . toWidget) (toHtml fragment);
+ Data.Foldable.mapM_
-+ (\ view_aNw8
++ (\ view_ab5Y
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "<div class=\"control-group clearfix ");
+ Text.Hamlet.condH
-+ [(fvRequired view_aNw8,
++ [(fvRequired view_ab5Y,
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "required "))]
+ Nothing;
+ Text.Hamlet.condH
-+ [(not (fvRequired view_aNw8),
++ [(not (fvRequired view_ab5Y),
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "optional "))]
+ Nothing;
+ Text.Hamlet.condH
-+ [(has (fvErrors view_aNw8),
++ [(has (fvErrors view_ab5Y),
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "error"))]
+ Nothing;
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "\"><label class=\"control-label\" for=\"");
-+ (asWidgetT . toWidget) (toHtml (fvId view_aNw8));
++ (asWidgetT . toWidget) (toHtml (fvId view_ab5Y));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "\">");
-+ (asWidgetT . toWidget) (toHtml (fvLabel view_aNw8));
++ (asWidgetT . toWidget) (toHtml (fvLabel view_ab5Y));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "</label><div class=\"controls input\">");
-+ (asWidgetT . toWidget) (fvInput view_aNw8);
++ (asWidgetT . toWidget) (fvInput view_ab5Y);
+ Text.Hamlet.maybeH
-+ (fvTooltip view_aNw8)
-+ (\ tt_aNw9
++ (fvTooltip view_ab5Y)
++ (\ tt_ab5Z
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "<span class=\"help-block\">");
-+ (asWidgetT . toWidget) (toHtml tt_aNw9);
++ (asWidgetT . toWidget) (toHtml tt_ab5Z);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</span>") })
+ Nothing;
+ Text.Hamlet.maybeH
-+ (fvErrors view_aNw8)
-+ (\ err_aNwa
++ (fvErrors view_ab5Y)
++ (\ err_ab60
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack)
+ "<span class=\"help-block\">");
-+ (asWidgetT . toWidget) (toHtml err_aNwa);
++ (asWidgetT . toWidget) (toHtml err_ab60);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . pack) "</span>") })
+ Nothing;
@@ -1553,15 +1566,16 @@ index 0d83b79..61e9b66 100644
-- | Deprecated synonym for 'renderBootstrap2'.
diff --git a/Yesod/Form/Jquery.hs b/Yesod/Form/Jquery.hs
-index 63e3d57..47503c2 100644
+index 362eb8a..1df9966 100644
--- a/Yesod/Form/Jquery.hs
+++ b/Yesod/Form/Jquery.hs
-@@ -18,11 +18,23 @@ import Yesod.Core
+@@ -17,11 +17,23 @@ import Yesod.Core
import Yesod.Form
import Data.Time (Day)
import Data.Default
-import Text.Hamlet (shamlet)
-import Text.Julius (julius, rawJS)
++--import Text.Hamlet (shamlet)
+import Text.Julius (rawJS)
import Data.Text (Text, pack, unpack)
import Data.Monoid (mconcat)
@@ -1577,27 +1591,25 @@ index 63e3d57..47503c2 100644
+import qualified Text.Julius
+import qualified Data.Text.Lazy.Builder
+import qualified Text.Shakespeare
-+import qualified Data.Text.Lazy.Builder as Data.Text.Internal.Builder
+
-- | Gets the Google hosted jQuery UI 1.8 CSS file with the given theme.
googleHostedJqueryUiCss :: Text -> Text
googleHostedJqueryUiCss theme = mconcat
-@@ -71,27 +83,54 @@ jqueryDayField' jds inputType = Field
+@@ -61,27 +73,59 @@ jqueryDayField jds = Field
. readMay
. unpack
, fieldView = \theId name attrs val isReq -> do
- toWidget [shamlet|
-$newline never
--<input id="#{theId}" name="#{name}" *{attrs} type="#{inputType}" :isReq:required="" value="#{showVal val}">
+-<input id="#{theId}" name="#{name}" *{attrs} type="date" :isReq:required="" value="#{showVal val}">
-|]
+ toWidget $ do { id
+ ((Text.Blaze.Internal.preEscapedText . pack) "<input id=\"");
+ id (toHtml theId);
+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
+ id (toHtml name);
-+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"");
-+ id (toHtml inputType);
-+ id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
++ id
++ ((Text.Blaze.Internal.preEscapedText . pack) "\" type=\"date\"");
+ Text.Hamlet.condH
+ [(isReq,
+ id ((Text.Blaze.Internal.preEscapedText . pack) " required=\"\""))]
@@ -1626,36 +1638,42 @@ index 63e3d57..47503c2 100644
-});
-|]
+ toWidget $ Text.Julius.asJavascriptUrl
-+ (\ _render_a3iGM
++ (\ _render_a2l4S
+ -> mconcat
+ [Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
-+ "\n\n$(function(){\n\n var i = document.getElementById(\""),
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
++ "\n$(function(){\n var i = document.getElementById(\""),
+ Text.Julius.toJavascript (rawJS theId),
+ Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
-+ "\");\n\n if (i.type != \"date\") {\n\n $(i).datepicker({\n\n dateFormat:'yy-mm-dd',\n\n changeMonth:"),
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
++ "\");\n if (i.type != \"date\") {\n $(i).datepicker({\n dateFormat:'yy-mm-dd',\n changeMonth:"),
+ Text.Julius.toJavascript (jsBool (jdsChangeMonth jds)),
+ Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
-+ ",\n\n changeYear:"),
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
++ ",\n changeYear:"),
+ Text.Julius.toJavascript (jsBool (jdsChangeYear jds)),
+ Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
-+ ",\n\n numberOfMonths:"),
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
++ ",\n numberOfMonths:"),
+ Text.Julius.toJavascript (rawJS (mos (jdsNumberOfMonths jds))),
+ Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
-+ ",\n\n yearRange:"),
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
++ ",\n yearRange:"),
+ Text.Julius.toJavascript (toJSON (jdsYearRange jds)),
+ Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
-+ "\n\n });\n\n }\n\n});")])
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
++ "\n });\n }\n});")])
+
, fieldEnctype = UrlEncoded
}
where
-@@ -118,16 +157,47 @@ jqueryAutocompleteField' :: (RenderMessage site FormMessage, YesodJquery site)
+@@ -108,16 +152,52 @@ jqueryAutocompleteField' :: (RenderMessage site FormMessage, YesodJquery site)
jqueryAutocompleteField' minLen src = Field
{ fieldParse = parseHelper $ Right
, fieldView = \theId name attrs val isReq -> do
@@ -1688,35 +1706,40 @@ index 63e3d57..47503c2 100644
-$(function(){$("##{rawJS theId}").autocomplete({source:"@{src}",minLength:#{toJSON minLen}})});
-|]
+ toWidget $ Text.Julius.asJavascriptUrl
-+ (\ _render_a3iHO
++ (\ _render_a2l58
+ -> mconcat
+ [Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
-+ "\n\n$(function(){$(\"#"),
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
++ "\n$(function(){$(\"#"),
+ Text.Julius.toJavascript (rawJS theId),
+ Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
+ "\").autocomplete({source:\""),
+ Text.Julius.Javascript
-+ (Data.Text.Internal.Builder.fromText (_render_a3iHO src [])),
++ (Data.Text.Lazy.Builder.fromText
++ (_render_a2l58 src [])),
+ Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
+ "\",minLength:"),
+ Text.Julius.toJavascript (toJSON minLen),
+ Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
+ "})});")])
+
, fieldEnctype = UrlEncoded
}
diff --git a/Yesod/Form/MassInput.hs b/Yesod/Form/MassInput.hs
-index a2b434d..29b45b5 100644
+index a2b434d..75eb484 100644
--- a/Yesod/Form/MassInput.hs
+++ b/Yesod/Form/MassInput.hs
-@@ -22,6 +22,16 @@ import Data.Traversable (sequenceA)
- import qualified Data.Map as Map
- import Data.Maybe (listToMaybe)
+@@ -9,6 +9,16 @@ module Yesod.Form.MassInput
+ , massTable
+ ) where
+import qualified Data.Text
+import qualified Text.Blaze as Text.Blaze.Internal
@@ -1728,9 +1751,9 @@ index a2b434d..29b45b5 100644
+import qualified Data.Foldable
+import qualified Control.Monad
+
- down :: Monad m => Int -> MForm m ()
- down 0 = return ()
- down i | i < 0 = error "called down with a negative number"
+ import Yesod.Form.Types
+ import Yesod.Form.Functions
+ import Yesod.Form.Fields (checkBoxField)
@@ -70,16 +80,27 @@ inputList label fixXml single mdef = formToAForm $ do
{ fvLabel = label
, fvTooltip = Nothing
@@ -1749,7 +1772,7 @@ index a2b434d..29b45b5 100644
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "<p>");
+ Data.Foldable.mapM_
-+ (\ xml_a3hPg -> (asWidgetT . toWidget) xml_a3hPg) xmls;
++ (\ xml_a1yM1 -> (asWidgetT . toWidget) xml_a1yM1) xmls;
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "<input class=\"count\" type=\"hidden\" name=\"");
@@ -1806,27 +1829,27 @@ index a2b434d..29b45b5 100644
- <div .errors>#{err}
-|]
+massDivs viewss = Data.Foldable.mapM_
-+ (\ views_a3hPz
++ (\ views_a1yMm
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "<fieldset>");
+ Data.Foldable.mapM_
-+ (\ view_a3hPA
++ (\ view_a1yMn
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "<div");
+ Text.Hamlet.condH
-+ [(or [fvRequired view_a3hPA, not (fvRequired view_a3hPA)],
++ [(or [fvRequired view_a1yMn, not (fvRequired view_a1yMn)],
+ do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ " class=\"");
+ Text.Hamlet.condH
-+ [(fvRequired view_a3hPA,
++ [(fvRequired view_a1yMn,
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "required "))]
+ Nothing;
+ Text.Hamlet.condH
-+ [(not (fvRequired view_a3hPA),
++ [(not (fvRequired view_a1yMn),
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "optional"))]
@@ -1838,38 +1861,38 @@ index a2b434d..29b45b5 100644
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "><label for=\"");
-+ (asWidgetT . toWidget) (toHtml (fvId view_a3hPA));
++ (asWidgetT . toWidget) (toHtml (fvId view_a1yMn));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "\">");
-+ (asWidgetT . toWidget) (toHtml (fvLabel view_a3hPA));
++ (asWidgetT . toWidget) (toHtml (fvLabel view_a1yMn));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</label>");
+ Text.Hamlet.maybeH
-+ (fvTooltip view_a3hPA)
-+ (\ tt_a3hPB
++ (fvTooltip view_a1yMn)
++ (\ tt_a1yMo
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "<div class=\"tooltip\">");
-+ (asWidgetT . toWidget) (toHtml tt_a3hPB);
++ (asWidgetT . toWidget) (toHtml tt_a1yMo);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "</div>") })
+ Nothing;
-+ (asWidgetT . toWidget) (fvInput view_a3hPA);
++ (asWidgetT . toWidget) (fvInput view_a1yMn);
+ Text.Hamlet.maybeH
-+ (fvErrors view_a3hPA)
-+ (\ err_a3hPC
++ (fvErrors view_a1yMn)
++ (\ err_a1yMp
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "<div class=\"errors\">");
-+ (asWidgetT . toWidget) (toHtml err_a3hPC);
++ (asWidgetT . toWidget) (toHtml err_a1yMp);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "</div>") })
+ Nothing;
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</div>") })
-+ views_a3hPz;
++ views_a1yMm;
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "</fieldset>") })
@@ -1877,27 +1900,27 @@ index a2b434d..29b45b5 100644
+
+
+massTable viewss = Data.Foldable.mapM_
-+ (\ views_a3hPH
++ (\ views_a1yMv
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "<fieldset><table>");
+ Data.Foldable.mapM_
-+ (\ view_a3hPI
++ (\ view_a1yMw
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "<tr");
+ Text.Hamlet.condH
-+ [(or [fvRequired view_a3hPI, not (fvRequired view_a3hPI)],
++ [(or [fvRequired view_a1yMw, not (fvRequired view_a1yMw)],
+ do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ " class=\"");
+ Text.Hamlet.condH
-+ [(fvRequired view_a3hPI,
++ [(fvRequired view_a1yMw,
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "required "))]
+ Nothing;
+ Text.Hamlet.condH
-+ [(not (fvRequired view_a3hPI),
++ [(not (fvRequired view_a1yMw),
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "optional"))]
@@ -1909,19 +1932,19 @@ index a2b434d..29b45b5 100644
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "><td><label for=\"");
-+ (asWidgetT . toWidget) (toHtml (fvId view_a3hPI));
++ (asWidgetT . toWidget) (toHtml (fvId view_a1yMw));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "\">");
-+ (asWidgetT . toWidget) (toHtml (fvLabel view_a3hPI));
++ (asWidgetT . toWidget) (toHtml (fvLabel view_a1yMw));
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</label>");
+ Text.Hamlet.maybeH
-+ (fvTooltip view_a3hPI)
-+ (\ tt_a3hPJ
++ (fvTooltip view_a1yMw)
++ (\ tt_a1yMx
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "<div class=\"tooltip\">");
-+ (asWidgetT . toWidget) (toHtml tt_a3hPJ);
++ (asWidgetT . toWidget) (toHtml tt_a1yMx);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "</div>") })
@@ -1929,23 +1952,23 @@ index a2b434d..29b45b5 100644
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "</td><td>");
-+ (asWidgetT . toWidget) (fvInput view_a3hPI);
++ (asWidgetT . toWidget) (fvInput view_a1yMw);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</td>");
+ Text.Hamlet.maybeH
-+ (fvErrors view_a3hPI)
-+ (\ err_a3hPK
++ (fvErrors view_a1yMw)
++ (\ err_a1yMy
+ -> do { (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "<td class=\"errors\">");
-+ (asWidgetT . toWidget) (toHtml err_a3hPK);
++ (asWidgetT . toWidget) (toHtml err_a1yMy);
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "</td>") })
+ Nothing;
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack) "</tr>") })
-+ views_a3hPH;
++ views_a1yMv;
+ (asWidgetT . toWidget)
+ ((Text.Blaze.Internal.preEscapedText . Data.Text.pack)
+ "</table></fieldset>") })
@@ -1967,19 +1990,12 @@ index a2b434d..29b45b5 100644
- <td .errors>#{err}
-|]
diff --git a/Yesod/Form/Nic.hs b/Yesod/Form/Nic.hs
-index 2862678..a773553 100644
+index 7e4af07..b59745a 100644
--- a/Yesod/Form/Nic.hs
+++ b/Yesod/Form/Nic.hs
-@@ -12,12 +12,24 @@ module Yesod.Form.Nic
- import Yesod.Core
- import Yesod.Form
- import Text.HTML.SanitizeXSS (sanitizeBalance)
--import Text.Hamlet (shamlet)
--import Text.Julius (julius, rawJS)
-+import Text.Julius (rawJS)
- import Text.Blaze.Html.Renderer.String (renderHtml)
- import Data.Text (Text, pack)
- import Data.Maybe (listToMaybe)
+@@ -9,11 +9,22 @@ module Yesod.Form.Nic
+ , nicHtmlField
+ ) where
+import qualified Text.Blaze as Text.Blaze.Internal
+import qualified Text.Blaze.Internal
@@ -1991,19 +2007,24 @@ index 2862678..a773553 100644
+import qualified Control.Monad
+import qualified Text.Julius
+import qualified Data.Text.Lazy.Builder
-+import qualified Data.Text.Lazy.Builder as Data.Text.Internal.Builder
+import qualified Text.Shakespeare
+
- class Yesod a => YesodNic a where
- -- | NIC Editor Javascript file.
- urlNicEdit :: a -> Either (Route a) Text
-@@ -27,20 +39,44 @@ nicHtmlField :: YesodNic site => Field (HandlerT site IO) Html
+ import Yesod.Core
+ import Yesod.Form
+ import Text.HTML.SanitizeXSS (sanitizeBalance)
+-import Text.Hamlet (shamlet)
+-import Text.Julius (julius, rawJS)
++import Text.Julius ( rawJS)
+ import Text.Blaze.Html.Renderer.String (renderHtml)
+ import Data.Text (Text, pack)
+ import Data.Maybe (listToMaybe)
+@@ -27,20 +38,52 @@ nicHtmlField :: YesodNic site => Field (HandlerT site IO) Html
nicHtmlField = Field
{ fieldParse = \e _ -> return . Right . fmap (preEscapedToMarkup . sanitizeBalance) . listToMaybe $ e
- , fieldView = \theId name attrs val _isReq -> do
+ , fieldView = \theId name attrs val isReq -> do
- toWidget [shamlet|
-$newline never
-- <textarea id="#{theId}" *{attrs} name="#{name}" .html>#{showVal val}
+- <textarea id="#{theId}" *{attrs} name="#{name}" :isReq:required .html>#{showVal val}
-|]
+ toWidget $ do { id
+ ((Text.Blaze.Internal.preEscapedText . pack)
@@ -2012,6 +2033,10 @@ index 2862678..a773553 100644
+ id ((Text.Blaze.Internal.preEscapedText . pack) "\" name=\"");
+ id (toHtml name);
+ id ((Text.Blaze.Internal.preEscapedText . pack) "\"");
++ Text.Hamlet.condH
++ [(isReq,
++ id ((Text.Blaze.Internal.preEscapedText . pack) " required"))]
++ Nothing;
+ id ((Text.Hamlet.attrsToHtml . Text.Hamlet.toAttributes) attrs);
+ id ((Text.Blaze.Internal.preEscapedText . pack) ">");
+ id (toHtml (showVal val));
@@ -2028,43 +2053,34 @@ index 2862678..a773553 100644
-(function(){new nicEditor({fullPanel:true}).panelInstance("#{rawJS theId}")})();
-|]
+ BottomOfHeadBlocking -> Text.Julius.asJavascriptUrl
-+ (\ _render_a3hYy
++ (\ _render_a2rMh
+ -> Data.Monoid.mconcat
+ [Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
-+ "\n\nbkLib.onDomLoaded(function(){new nicEditor({fullPanel:true}).panelInstance(\""),
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
++ "\nbkLib.onDomLoaded(function(){new nicEditor({fullPanel:true}).panelInstance(\""),
+ Text.Julius.toJavascript (rawJS theId),
+ Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
+ "\")});")])
+
+ _ -> Text.Julius.asJavascriptUrl
-+ (\ _render_a3i1Q
++ (\ _render_a2rMm
+ -> Data.Monoid.mconcat
+ [Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
-+ "\n\n(function(){new nicEditor({fullPanel:true}).panelInstance(\""),
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
++ "\n(function(){new nicEditor({fullPanel:true}).panelInstance(\""),
+ Text.Julius.toJavascript (rawJS theId),
+ Text.Julius.Javascript
-+ ((Data.Text.Internal.Builder.fromText . Text.Shakespeare.pack')
++ ((Data.Text.Lazy.Builder.fromText
++ . Text.Shakespeare.pack')
+ "\")})();")])
+
, fieldEnctype = UrlEncoded
}
where
-diff --git a/yesod-form.cabal b/yesod-form.cabal
-index 7849763..9694fe1 100644
---- a/yesod-form.cabal
-+++ b/yesod-form.cabal
-@@ -23,7 +23,7 @@ library
- , yesod-core >= 1.4 && < 1.5
- , yesod-persistent >= 1.4 && < 1.5
- , time >= 1.1.4
-- , shakespeare >= 2.0
-+ , shakespeare >= 2.0.5
- , persistent
- , template-haskell
- , transformers >= 0.2.2
--
-2.1.4
+2.1.1
diff --git a/standalone/no-th/haskell-patches/yesod-persistent_do-not-really-build.patch b/standalone/no-th/haskell-patches/yesod-persistent_do-not-really-build.patch
index 1b850d282..76aad4e34 100644
--- a/standalone/no-th/haskell-patches/yesod-persistent_do-not-really-build.patch
+++ b/standalone/no-th/haskell-patches/yesod-persistent_do-not-really-build.patch
@@ -1,6 +1,6 @@
-From 4d8650bd806f50aa2538270f80fa93261c43d056 Mon Sep 17 00:00:00 2001
+From e82ed4e6fd7b5ea6dbe474b5de2755ec5794161c Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
-Date: Fri, 3 Jul 2015 00:12:02 +0000
+Date: Thu, 16 Oct 2014 02:23:50 +0000
Subject: [PATCH] stub out
---
@@ -8,16 +8,16 @@ Subject: [PATCH] stub out
1 file changed, 10 deletions(-)
diff --git a/yesod-persistent.cabal b/yesod-persistent.cabal
-index c3bc1bf..1727dba 100644
+index b116f3a..017b184 100644
--- a/yesod-persistent.cabal
+++ b/yesod-persistent.cabal
-@@ -15,16 +15,6 @@ extra-source-files: README.md ChangeLog.md
+@@ -14,16 +14,6 @@ description: Some helpers for using Persistent from Yesod.
library
build-depends: base >= 4 && < 5
-- , yesod-core >= 1.4.0 && < 1.5
-- , persistent >= 2.1 && < 2.2
-- , persistent-template >= 2.1 && < 2.2
+- , yesod-core >= 1.2.2 && < 1.3
+- , persistent >= 1.2 && < 2.1
+- , persistent-template >= 1.2 && < 2.1
- , transformers >= 0.2.2
- , blaze-builder
- , conduit
@@ -29,5 +29,5 @@ index c3bc1bf..1727dba 100644
test-suite test
--
-2.1.4
+2.1.1
diff --git a/standalone/no-th/haskell-patches/yesod-routes_remove-TH.patch b/standalone/no-th/haskell-patches/yesod-routes_remove-TH.patch
new file mode 100644
index 000000000..99d6c9025
--- /dev/null
+++ b/standalone/no-th/haskell-patches/yesod-routes_remove-TH.patch
@@ -0,0 +1,170 @@
+From 8ba08c0efc035486a65f2fd33916a5da7e5210e7 Mon Sep 17 00:00:00 2001
+From: dummy <dummy@example.com>
+Date: Thu, 26 Dec 2013 19:32:55 -0400
+Subject: [PATCH] remove TH
+
+---
+ Yesod/Routes/Parse.hs | 40 +++++-----------------------------------
+ Yesod/Routes/TH.hs | 16 ++++++++--------
+ Yesod/Routes/TH/Types.hs | 16 ----------------
+ yesod-routes.cabal | 4 ----
+ 4 files changed, 13 insertions(+), 63 deletions(-)
+
+diff --git a/Yesod/Routes/Parse.hs b/Yesod/Routes/Parse.hs
+index 232982d..7df7750 100644
+--- a/Yesod/Routes/Parse.hs
++++ b/Yesod/Routes/Parse.hs
+@@ -2,11 +2,11 @@
+ {-# LANGUAGE DeriveDataTypeable #-}
+ {-# OPTIONS_GHC -fno-warn-missing-fields #-} -- QuasiQuoter
+ module Yesod.Routes.Parse
+- ( parseRoutes
+- , parseRoutesFile
+- , parseRoutesNoCheck
+- , parseRoutesFileNoCheck
+- , parseType
++ --( parseRoutes
++ --, parseRoutesFile
++ --, parseRoutesNoCheck
++ --, parseRoutesFileNoCheck
++ ( parseType
+ , parseTypeTree
+ , TypeTree (..)
+ ) where
+@@ -19,42 +19,12 @@ import Yesod.Routes.TH
+ import Yesod.Routes.Overlap (findOverlapNames)
+ import Data.List (foldl')
+
+--- | A quasi-quoter to parse a string into a list of 'Resource's. Checks for
+--- overlapping routes, failing if present; use 'parseRoutesNoCheck' to skip the
+--- checking. See documentation site for details on syntax.
+-parseRoutes :: QuasiQuoter
+-parseRoutes = QuasiQuoter { quoteExp = x }
+- where
+- x s = do
+- let res = resourcesFromString s
+- case findOverlapNames res of
+- [] -> lift res
+- z -> error $ unlines $ "Overlapping routes: " : map show z
+-
+-parseRoutesFile :: FilePath -> Q Exp
+-parseRoutesFile = parseRoutesFileWith parseRoutes
+-
+-parseRoutesFileNoCheck :: FilePath -> Q Exp
+-parseRoutesFileNoCheck = parseRoutesFileWith parseRoutesNoCheck
+-
+-parseRoutesFileWith :: QuasiQuoter -> FilePath -> Q Exp
+-parseRoutesFileWith qq fp = do
+- qAddDependentFile fp
+- s <- qRunIO $ readUtf8File fp
+- quoteExp qq s
+-
+ readUtf8File :: FilePath -> IO String
+ readUtf8File fp = do
+ h <- SIO.openFile fp SIO.ReadMode
+ SIO.hSetEncoding h SIO.utf8_bom
+ SIO.hGetContents h
+
+--- | Same as 'parseRoutes', but performs no overlap checking.
+-parseRoutesNoCheck :: QuasiQuoter
+-parseRoutesNoCheck = QuasiQuoter
+- { quoteExp = lift . resourcesFromString
+- }
+-
+ -- | Convert a multi-line string to a set of resources. See documentation for
+ -- the format of this string. This is a partial function which calls 'error' on
+ -- invalid input.
+diff --git a/Yesod/Routes/TH.hs b/Yesod/Routes/TH.hs
+index 7b2e50b..b05fc57 100644
+--- a/Yesod/Routes/TH.hs
++++ b/Yesod/Routes/TH.hs
+@@ -2,15 +2,15 @@
+ module Yesod.Routes.TH
+ ( module Yesod.Routes.TH.Types
+ -- * Functions
+- , module Yesod.Routes.TH.RenderRoute
+- , module Yesod.Routes.TH.ParseRoute
+- , module Yesod.Routes.TH.RouteAttrs
++ -- , module Yesod.Routes.TH.RenderRoute
++ -- , module Yesod.Routes.TH.ParseRoute
++ -- , module Yesod.Routes.TH.RouteAttrs
+ -- ** Dispatch
+- , module Yesod.Routes.TH.Dispatch
++ -- , module Yesod.Routes.TH.Dispatch
+ ) where
+
+ import Yesod.Routes.TH.Types
+-import Yesod.Routes.TH.RenderRoute
+-import Yesod.Routes.TH.ParseRoute
+-import Yesod.Routes.TH.RouteAttrs
+-import Yesod.Routes.TH.Dispatch
++--import Yesod.Routes.TH.RenderRoute
++--import Yesod.Routes.TH.ParseRoute
++--import Yesod.Routes.TH.RouteAttrs
++--import Yesod.Routes.TH.Dispatch
+diff --git a/Yesod/Routes/TH/Types.hs b/Yesod/Routes/TH/Types.hs
+index d0a0405..3232e99 100644
+--- a/Yesod/Routes/TH/Types.hs
++++ b/Yesod/Routes/TH/Types.hs
+@@ -31,10 +31,6 @@ instance Functor ResourceTree where
+ fmap f (ResourceLeaf r) = ResourceLeaf (fmap f r)
+ fmap f (ResourceParent a b c) = ResourceParent a (map (second $ fmap f) b) $ map (fmap f) c
+
+-instance Lift t => Lift (ResourceTree t) where
+- lift (ResourceLeaf r) = [|ResourceLeaf $(lift r)|]
+- lift (ResourceParent a b c) = [|ResourceParent $(lift a) $(lift b) $(lift c)|]
+-
+ data Resource typ = Resource
+ { resourceName :: String
+ , resourcePieces :: [(CheckOverlap, Piece typ)]
+@@ -48,9 +44,6 @@ type CheckOverlap = Bool
+ instance Functor Resource where
+ fmap f (Resource a b c d) = Resource a (map (second $ fmap f) b) (fmap f c) d
+
+-instance Lift t => Lift (Resource t) where
+- lift (Resource a b c d) = [|Resource a b c d|]
+-
+ data Piece typ = Static String | Dynamic typ
+ deriving Show
+
+@@ -58,10 +51,6 @@ instance Functor Piece where
+ fmap _ (Static s) = (Static s)
+ fmap f (Dynamic t) = Dynamic (f t)
+
+-instance Lift t => Lift (Piece t) where
+- lift (Static s) = [|Static $(lift s)|]
+- lift (Dynamic t) = [|Dynamic $(lift t)|]
+-
+ data Dispatch typ =
+ Methods
+ { methodsMulti :: Maybe typ -- ^ type of the multi piece at the end
+@@ -77,11 +66,6 @@ instance Functor Dispatch where
+ fmap f (Methods a b) = Methods (fmap f a) b
+ fmap f (Subsite a b) = Subsite (f a) b
+
+-instance Lift t => Lift (Dispatch t) where
+- lift (Methods Nothing b) = [|Methods Nothing $(lift b)|]
+- lift (Methods (Just t) b) = [|Methods (Just $(lift t)) $(lift b)|]
+- lift (Subsite t b) = [|Subsite $(lift t) $(lift b)|]
+-
+ resourceMulti :: Resource typ -> Maybe typ
+ resourceMulti Resource { resourceDispatch = Methods (Just t) _ } = Just t
+ resourceMulti _ = Nothing
+diff --git a/yesod-routes.cabal b/yesod-routes.cabal
+index 61980d1..33d2380 100644
+--- a/yesod-routes.cabal
++++ b/yesod-routes.cabal
+@@ -27,10 +27,6 @@ library
+ Yesod.Routes.Class
+ Yesod.Routes.Parse
+ Yesod.Routes.Overlap
+- other-modules: Yesod.Routes.TH.Dispatch
+- Yesod.Routes.TH.RenderRoute
+- Yesod.Routes.TH.ParseRoute
+- Yesod.Routes.TH.RouteAttrs
+ Yesod.Routes.TH.Types
+ ghc-options: -Wall
+
+--
+1.7.10.4
+
diff --git a/standalone/no-th/haskell-patches/yesod-static_hack.patch b/standalone/no-th/haskell-patches/yesod-static_hack.patch
index 20e47b5dd..46e4b654c 100644
--- a/standalone/no-th/haskell-patches/yesod-static_hack.patch
+++ b/standalone/no-th/haskell-patches/yesod-static_hack.patch
@@ -1,6 +1,6 @@
-From 09d7340ff4c9b43f7c8c2ad6529a6c60871d265f Mon Sep 17 00:00:00 2001
+From 606c5f4f4b2d476d274907eb2bb8c12b60fc451f Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
-Date: Fri, 3 Jul 2015 01:39:14 +0000
+Date: Wed, 21 May 2014 04:43:30 +0000
Subject: [PATCH] remove TH
---
@@ -31,7 +31,7 @@ index 08febb9..e3a6d51 100644
-- | Use <https://github.com/mishoo/UglifyJS2 UglifyJS2> to compress javascript.
-- Assumes @uglifyjs@ is located in the path and uses options @[\"-m\", \"-c\"]@
diff --git a/Yesod/Static.hs b/Yesod/Static.hs
-index a18d88e..afb1cda 100644
+index 725ebf4..33eaffd 100644
--- a/Yesod/Static.hs
+++ b/Yesod/Static.hs
@@ -37,8 +37,8 @@ module Yesod.Static
@@ -99,7 +99,7 @@ index a18d88e..afb1cda 100644
@@ -267,7 +270,7 @@ staticFilesList dir fs =
-- see if their copy is up-to-date.
publicFiles :: Prelude.FilePath -> Q [Dec]
- publicFiles dir = mkStaticFiles' dir False
+ publicFiles dir = mkStaticFiles' dir "StaticRoute" False
-
+-}
@@ -111,17 +111,17 @@ index a18d88e..afb1cda 100644
+{-
mkStaticFiles :: Prelude.FilePath -> Q [Dec]
- mkStaticFiles fp = mkStaticFiles' fp True
+ mkStaticFiles fp = mkStaticFiles' fp "StaticRoute" True
-@@ -354,6 +358,7 @@ mkStaticFilesList fp fs makeHash = do
- [ Clause [] (NormalB $ (ConE 'StaticRoute) `AppE` f' `AppE` qs) []
+@@ -357,6 +361,7 @@ mkStaticFilesList fp fs routeConName makeHash = do
+ [ Clause [] (NormalB $ (ConE route) `AppE` f' `AppE` qs) []
]
]
+-}
base64md5File :: Prelude.FilePath -> IO String
base64md5File = fmap (base64 . encode) . hashFile
-@@ -392,7 +397,7 @@ base64 = map tr
+@@ -395,7 +400,7 @@ base64 = map tr
-- single static file at compile time.
data CombineType = JS | CSS
@@ -130,7 +130,7 @@ index a18d88e..afb1cda 100644
combineStatics' :: CombineType
-> CombineSettings
-> [Route Static] -- ^ files to combine
-@@ -426,7 +431,7 @@ combineStatics' combineType CombineSettings {..} routes = do
+@@ -429,7 +434,7 @@ combineStatics' combineType CombineSettings {..} routes = do
case combineType of
JS -> "js"
CSS -> "css"
@@ -139,7 +139,7 @@ index a18d88e..afb1cda 100644
-- | Data type for holding all settings for combining files.
--
-- This data type is a settings type. For more information, see:
-@@ -502,6 +507,7 @@ instance Default CombineSettings where
+@@ -505,6 +510,7 @@ instance Default CombineSettings where
errorIntro :: [FilePath] -> [Char] -> [Char]
errorIntro fps s = "Error minifying " ++ show fps ++ ": " ++ s
@@ -147,7 +147,7 @@ index a18d88e..afb1cda 100644
liftRoutes :: [Route Static] -> Q Exp
liftRoutes =
fmap ListE . mapM go
-@@ -548,4 +554,5 @@ combineScripts' :: Bool -- ^ development? if so, perform no combining
+@@ -551,4 +557,5 @@ combineScripts' :: Bool -- ^ development? if so, perform no combining
-> Q Exp
combineScripts' development cs con routes
| development = [| mapM_ (addScript . $(return $ ConE con)) $(liftRoutes routes) |]
@@ -155,18 +155,18 @@ index a18d88e..afb1cda 100644
+ | otherwise = [| addScript $ $(return $ ConE con) $(combineStatics' JS cs routes) |]a
+-}
diff --git a/yesod-static.cabal b/yesod-static.cabal
-index 4ccb0d7..8758aaa 100644
+index 2582a95..5df03b3 100644
--- a/yesod-static.cabal
+++ b/yesod-static.cabal
-@@ -50,7 +50,6 @@ library
- , system-fileio >= 0.3
+@@ -49,7 +49,6 @@ library
, data-default
+ , shakespeare-css >= 1.0.3
, mime-types >= 0.1
- , hjsmin
, filepath >= 1.3
, resourcet >= 0.4
, unordered-containers >= 0.2
-@@ -63,13 +62,6 @@ library
+@@ -62,13 +61,6 @@ library
, hashable >= 1.1
exposed-modules: Yesod.Static
@@ -181,13 +181,13 @@ index 4ccb0d7..8758aaa 100644
ghc-options: -Wall
extensions: TemplateHaskell
@@ -108,7 +100,6 @@ test-suite tests
- , system-fileio
, data-default
+ , shakespeare-css
, mime-types
- , hjsmin
, filepath
, resourcet
, unordered-containers
--
-2.1.4
+2.0.0.rc2
diff --git a/standalone/no-th/haskell-patches/yesod_hack-TH.patch b/standalone/no-th/haskell-patches/yesod_hack-TH.patch
index 1365b277d..ebf8a786b 100644
--- a/standalone/no-th/haskell-patches/yesod_hack-TH.patch
+++ b/standalone/no-th/haskell-patches/yesod_hack-TH.patch
@@ -1,13 +1,13 @@
-From 86e7cf433fcd3386893556d690748781f46d3f03 Mon Sep 17 00:00:00 2001
+From 59091cd37958fee79b9e346fe3118d5ed7d0104b Mon Sep 17 00:00:00 2001
From: dummy <dummy@example.com>
-Date: Fri, 3 Jul 2015 01:33:03 +0000
+Date: Thu, 16 Oct 2014 02:36:37 +0000
Subject: [PATCH] hack TH
---
Yesod.hs | 19 ++++++++++++--
- Yesod/Default/Main.hs | 28 +--------------------
- Yesod/Default/Util.hs | 68 ++-------------------------------------------------
- 3 files changed, 20 insertions(+), 95 deletions(-)
+ Yesod/Default/Main.hs | 31 +----------------------
+ Yesod/Default/Util.hs | 69 ++-------------------------------------------------
+ 3 files changed, 20 insertions(+), 99 deletions(-)
diff --git a/Yesod.hs b/Yesod.hs
index b367144..fbe309c 100644
@@ -41,7 +41,7 @@ index b367144..fbe309c 100644
+insert = undefined
+
diff --git a/Yesod/Default/Main.hs b/Yesod/Default/Main.hs
-index 2694825..5a5fbb9 100644
+index 565ed35..bf46642 100644
--- a/Yesod/Default/Main.hs
+++ b/Yesod/Default/Main.hs
@@ -1,10 +1,8 @@
@@ -64,7 +64,7 @@ index 2694825..5a5fbb9 100644
import System.Log.FastLogger (LogStr, toLogStr)
import Language.Haskell.TH.Syntax (qLocation)
-@@ -56,30 +54,6 @@ defaultMain load getApp = do
+@@ -55,33 +53,6 @@ defaultMain load getApp = do
type LogFunc = Loc -> LogSource -> LogLevel -> LogStr -> IO ()
@@ -79,24 +79,27 @@ index 2694825..5a5fbb9 100644
-defaultMainLog load getApp = do
- config <- load
- (app, logFunc) <- getApp config
-- runSettings
-- ( setPort (appPort config)
-- $ setHost (appHost config)
-- $ setOnException (const $ \e -> when (shouldLog' e) $ logFunc
+- runSettings defaultSettings
+- { settingsPort = appPort config
+- , settingsHost = appHost config
+- , settingsOnException = const $ \e -> when (shouldLog' e) $ logFunc
- $(qLocation >>= liftLoc)
- "yesod"
- LevelError
-- (toLogStr $ "Exception from Warp: " ++ show e))
-- $ defaultSettings
-- ) app
+- (toLogStr $ "Exception from Warp: " ++ show e)
+- } app
- where
-- shouldLog' = Warp.defaultShouldDisplayException
--
+- shouldLog' =
+-#if MIN_VERSION_warp(2,1,3)
+- Warp.defaultShouldDisplayException
+-#else
+- const True
+-#endif
+
-- | Run your application continously, listening for SIGINT and exiting
-- when received
- --
diff --git a/Yesod/Default/Util.hs b/Yesod/Default/Util.hs
-index 488312a..5476b54 100644
+index a10358e..0547424 100644
--- a/Yesod/Default/Util.hs
+++ b/Yesod/Default/Util.hs
@@ -5,10 +5,9 @@
@@ -122,7 +125,7 @@ index 488312a..5476b54 100644
import Text.Hamlet (HamletSettings, defaultHamletSettings)
import Data.Maybe (catMaybes)
import Data.Default (Default (def))
-@@ -69,68 +65,8 @@ data TemplateLanguage = TemplateLanguage
+@@ -69,68 +65,7 @@ data TemplateLanguage = TemplateLanguage
, tlReload :: FilePath -> Q Exp
}
@@ -140,7 +143,7 @@ index 488312a..5476b54 100644
{ wfsLanguages :: HamletSettings -> [TemplateLanguage]
, wfsHamletSettings :: HamletSettings
}
-
+-
-instance Default WidgetFileSettings where
- def = WidgetFileSettings defaultTemplateLanguages defaultHamletSettings
-
@@ -159,7 +162,7 @@ index 488312a..5476b54 100644
- , func
- , " on "
- , show file
-- , ", but no templates were found."
+- , ", but no template were found."
- ]
- exps -> return $ DoE $ map NoBindS exps
- where
@@ -192,5 +195,5 @@ index 488312a..5476b54 100644
- else return $ Just ex
- else return Nothing
--
-2.1.4
+2.1.1