From d90a0b2a61edb282daad66b3bb7b19ecb20def99 Mon Sep 17 00:00:00 2001 From: threadshuffle Date: Fri, 31 Jul 2015 22:05:14 +0000 Subject: Added a comment: cont'd --- .../comment_7_1542901463c022d4e47bf0329c5887b3._comment | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 doc/bugs/git-annex_sync_under_windows_fails_by_using_itself_as_the_ssh_command/comment_7_1542901463c022d4e47bf0329c5887b3._comment 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. +"""]] -- cgit v1.2.3 From c248a932c61fece3735b84ce108e71f0c4fd813c Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawnWvnTWY6LrcPB4BzYEBn5mRTpNhg5EtEg" Date: Sat, 1 Aug 2015 21:54:28 +0000 Subject: --- ..._more_different_directories_possible__63__.mdwn | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 doc/forum/Is_parallel_fsck_for_two_or_more_different_directories_possible__63__.mdwn 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 -- cgit v1.2.3 From f37922856e7ac2ad535f8da11dc291f485e22b98 Mon Sep 17 00:00:00 2001 From: "https://www.google.com/accounts/o8/id?id=AItOawnWvnTWY6LrcPB4BzYEBn5mRTpNhg5EtEg" Date: Sat, 1 Aug 2015 22:29:25 +0000 Subject: I hope these notes do not make this walkthrough page too big. --- doc/walkthrough/fsck:_verifying_your_data.mdwn | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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 --time-limit=1m + fsck some_file (checksum...) ok + fsck my_cool_big_file (checksum...) ok + + Time limit (1m) reached! + + # git annex fsck -m + 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. -- cgit v1.2.3 From d03dd472b7f987695489f01d52cedb8b16e5b6c1 Mon Sep 17 00:00:00 2001 From: androidbuilder Date: Sun, 2 Aug 2015 19:48:36 +0000 Subject: reverted updates to new lib versions that broke android build I ran into several evilsplicer problems with the new lib versions, most notably including a problem with encoding of embedded binary files --- standalone/android/cabal.config | 1190 +++--------------- .../haskell-patches/crypto-numbers_build-fix.patch | 227 ++++ ...d-net.dns1-command-instead-of-resolv.conf.patch | 38 +- .../haskell-patches/entropy_cross-build.patch | 27 - .../gnuidn_fix-build-with-new-base.patch | 50 + ...oute_1.2.11_0001-build-without-IPv6-stuff.patch | 24 +- ...twork.BSD-symbols-not-available-in-bionic.patch | 50 +- ...2.4.1.0_0003-configure-misdetects-accept4.patch | 16 +- .../network_2.4.1.0_0006-build-fixes.patch | 24 - .../optparse-applicative_remove-ANN.patch | 33 - .../profunctors_3.3-0001-fix-cross-build.patch | 26 - .../shakespeare-text_remove-TH.patch | 153 +++ .../skein_hardcode_little-endian.patch | 26 - .../unix-time_hack-for-Bionic.patch | 24 +- ...-without-v1-uuid-which-needs-network-info.patch | 59 +- .../haskell-patches/vector_cross-build.patch | 24 - .../warp_avoid-ipv6-for-android.patch | 39 - standalone/android/install-haskell-packages | 23 +- .../haskell-patches/DAV_build-without-TH.patch | 12 +- .../no-th/haskell-patches/aeson_remove-TH.patch | 40 + .../haskell-patches/file-embed_remove-TH.patch | 132 ++ .../generic-deriving_remove-TH.patch | 394 ++++++ standalone/no-th/haskell-patches/lens_no-TH.patch | 92 +- .../haskell-patches/monad-logger_remove-TH.patch | 27 + .../optparse-applicative_remove-ANN.patch | 33 + .../persistent_1.1.5.1_0001-disable-TH.patch | 41 + .../profunctors_3.3-0001-fix-cross-build.patch | 26 + .../haskell-patches/reflection_remove-TH.patch | 59 + .../shakespeare-css_remove_TH.patch | 366 ++++++ .../haskell-patches/shakespeare-js_hack_TH.patch | 316 +++++ .../haskell-patches/shakespeare_remove-TH.patch | 1283 +------------------- .../skein_hardcode_little-endian.patch | 26 + .../vector_hack-to-build-with-new-ghc.patch | 49 + .../wai-app-static_deal-with-TH.patch | 24 +- .../haskell-patches/xml-hamlet_remove_TH.patch | 108 ++ .../haskell-patches/yesod-core_expand_TH.patch | 93 +- .../haskell-patches/yesod-form_spliced-TH.patch | 676 ++++++----- .../yesod-persistent_do-not-really-build.patch | 16 +- .../haskell-patches/yesod-routes_remove-TH.patch | 170 +++ .../no-th/haskell-patches/yesod-static_hack.patch | 34 +- .../no-th/haskell-patches/yesod_hack-TH.patch | 47 +- 41 files changed, 3045 insertions(+), 3072 deletions(-) create mode 100644 standalone/android/haskell-patches/crypto-numbers_build-fix.patch delete mode 100644 standalone/android/haskell-patches/entropy_cross-build.patch create mode 100644 standalone/android/haskell-patches/gnuidn_fix-build-with-new-base.patch delete mode 100644 standalone/android/haskell-patches/network_2.4.1.0_0006-build-fixes.patch delete mode 100644 standalone/android/haskell-patches/optparse-applicative_remove-ANN.patch delete mode 100644 standalone/android/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch create mode 100644 standalone/android/haskell-patches/shakespeare-text_remove-TH.patch delete mode 100644 standalone/android/haskell-patches/skein_hardcode_little-endian.patch delete mode 100644 standalone/android/haskell-patches/vector_cross-build.patch delete mode 100644 standalone/android/haskell-patches/warp_avoid-ipv6-for-android.patch create mode 100644 standalone/no-th/haskell-patches/aeson_remove-TH.patch create mode 100644 standalone/no-th/haskell-patches/file-embed_remove-TH.patch create mode 100644 standalone/no-th/haskell-patches/generic-deriving_remove-TH.patch create mode 100644 standalone/no-th/haskell-patches/monad-logger_remove-TH.patch create mode 100644 standalone/no-th/haskell-patches/optparse-applicative_remove-ANN.patch create mode 100644 standalone/no-th/haskell-patches/persistent_1.1.5.1_0001-disable-TH.patch create mode 100644 standalone/no-th/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch create mode 100644 standalone/no-th/haskell-patches/reflection_remove-TH.patch create mode 100644 standalone/no-th/haskell-patches/shakespeare-css_remove_TH.patch create mode 100644 standalone/no-th/haskell-patches/shakespeare-js_hack_TH.patch create mode 100644 standalone/no-th/haskell-patches/skein_hardcode_little-endian.patch create mode 100644 standalone/no-th/haskell-patches/vector_hack-to-build-with-new-ghc.patch create mode 100644 standalone/no-th/haskell-patches/xml-hamlet_remove_TH.patch create mode 100644 standalone/no-th/haskell-patches/yesod-routes_remove-TH.patch diff --git a/standalone/android/cabal.config b/standalone/android/cabal.config index ccfd3b22b..4cda02637 100644 --- a/standalone/android/cabal.config +++ b/standalone/android/cabal.config @@ -1,1062 +1,208 @@ -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, + 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, + shakespeare-text ==1.0.2, 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, + hamlet ==1.1.9.2, + 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, - 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, + network-multicast ==0.0.10, + network-protocol-xmpp ==0.4.6, + network-uri ==2.6.0.1, + optparse-applicative ==0.10.0, + 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, - shakespeare ==2.0.5, - shakespeare-text ==1.1.0, - shell-conduit ==4.5.2, - shelltestrunner ==1.3.5, - shelly ==1.6.1.2, + 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 ==1.2.1.1, + shakespeare-css ==1.0.7.4, + shakespeare-i18n ==1.0.0.5, + shakespeare-js ==1.2.0.4, 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 +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 -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 -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 +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 + #include +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 -Date: Thu, 2 Jul 2015 20:42:50 +0000 +From 7beec2e707d59f9573aa2dc7c57bd2a62f16b480 Mon Sep 17 00:00:00 2001 +From: Joey Hess +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 -Date: Thu, 2 Jul 2015 20:12:59 +0000 +From 7861b133bb269b50fcf709291449cb0473818902 Mon Sep 17 00:00:00 2001 +From: Joey Hess +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 -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 -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/optparse-applicative_remove-ANN.patch b/standalone/android/haskell-patches/optparse-applicative_remove-ANN.patch deleted file mode 100644 index 1bb843524..000000000 --- a/standalone/android/haskell-patches/optparse-applicative_remove-ANN.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b128590966d4946219e45e2efd88acf7a354abc2 Mon Sep 17 00:00:00 2001 -From: androidbuilder -Date: Tue, 14 Oct 2014 02:28:02 +0000 -Subject: [PATCH] remove ANN - ---- - Options/Applicative.hs | 2 -- - Options/Applicative/Help/Core.hs | 2 -- - 2 files changed, 4 deletions(-) - -diff --git a/Options/Applicative.hs b/Options/Applicative.hs -index bd4129d..f412062 100644 ---- a/Options/Applicative.hs -+++ b/Options/Applicative.hs -@@ -34,5 +34,3 @@ import Options.Applicative.Common - import Options.Applicative.Builder - import Options.Applicative.Builder.Completer - import Options.Applicative.Extra -- --{-# ANN module "HLint: ignore Use import/export shortcut" #-} -diff --git a/Options/Applicative/Help/Core.hs b/Options/Applicative/Help/Core.hs -index 0a79169..3f1ce3f 100644 ---- a/Options/Applicative/Help/Core.hs -+++ b/Options/Applicative/Help/Core.hs -@@ -139,5 +139,3 @@ parserUsage pprefs p progn = hsep - [ string "Usage:" - , string progn - , align (extractChunk (briefDesc pprefs p)) ] -- --{-# ANN footerHelp "HLint: ignore Eta reduce" #-} --- -1.7.10.4 - diff --git a/standalone/android/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch b/standalone/android/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch deleted file mode 100644 index 45397f3e5..000000000 --- a/standalone/android/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 392602f5ff14c0b5a801397d075ddcbcd890aa83 Mon Sep 17 00:00:00 2001 -From: Joey Hess -Date: Thu, 18 Apr 2013 17:50:59 -0400 -Subject: [PATCH] fix cross build - ---- - src/Data/Profunctor/Unsafe.hs | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/src/Data/Profunctor/Unsafe.hs b/src/Data/Profunctor/Unsafe.hs -index 025c7c4..0249274 100644 ---- a/src/Data/Profunctor/Unsafe.hs -+++ b/src/Data/Profunctor/Unsafe.hs -@@ -40,9 +40,6 @@ import Data.Tagged - import Prelude hiding (id,(.),sequence) - import Unsafe.Coerce - --{-# ANN module "Hlint: ignore Redundant lambda" #-} --{-# ANN module "Hlint: ignore Collapse lambdas" #-} -- - infixr 9 #. - infixl 8 .# - --- -1.8.2.rc3 - diff --git a/standalone/android/haskell-patches/shakespeare-text_remove-TH.patch b/standalone/android/haskell-patches/shakespeare-text_remove-TH.patch new file mode 100644 index 000000000..ece906f4b --- /dev/null +++ b/standalone/android/haskell-patches/shakespeare-text_remove-TH.patch @@ -0,0 +1,153 @@ +From dca2a30ca06865bf66cd25cc14b06f5d28190231 Mon Sep 17 00:00:00 2001 +From: dummy +Date: Thu, 16 Oct 2014 02:46:57 +0000 +Subject: [PATCH] remove TH + +--- + Text/Shakespeare/Text.hs | 125 +++++------------------------------------------ + 1 file changed, 11 insertions(+), 114 deletions(-) + +diff --git a/Text/Shakespeare/Text.hs b/Text/Shakespeare/Text.hs +index 6865a5a..e25a8be 100644 +--- a/Text/Shakespeare/Text.hs ++++ b/Text/Shakespeare/Text.hs +@@ -7,18 +7,18 @@ module Text.Shakespeare.Text + ( TextUrl + , ToText (..) + , renderTextUrl +- , stext +- , text +- , textFile +- , textFileDebug +- , textFileReload +- , st -- | strict text +- , lt -- | lazy text, same as stext :) ++ --, stext ++ --, text ++ --, textFile ++ --, textFileDebug ++ --, textFileReload ++ --, st -- | strict text ++ --, lt -- | lazy text, same as stext :) + -- * Yesod code generation +- , codegen +- , codegenSt +- , codegenFile +- , codegenFileReload ++ --, codegen ++ --, codegenSt ++ --, codegenFile ++ --, codegenFileReload + ) where + + import Language.Haskell.TH.Quote (QuasiQuoter (..)) +@@ -45,106 +45,3 @@ instance ToText Int32 where toText = toText . show + instance ToText Int64 where toText = toText . show + instance ToText Int where toText = toText . show + +-settings :: Q ShakespeareSettings +-settings = do +- toTExp <- [|toText|] +- wrapExp <- [|id|] +- unWrapExp <- [|id|] +- return $ defaultShakespeareSettings { toBuilder = toTExp +- , wrap = wrapExp +- , unwrap = unWrapExp +- } +- +- +-stext, lt, st, text :: QuasiQuoter +-stext = +- QuasiQuoter { quoteExp = \s -> do +- rs <- settings +- render <- [|toLazyText|] +- rendered <- shakespeareFromString rs { justVarInterpolation = True } s +- return (render `AppE` rendered) +- } +-lt = stext +- +-st = +- QuasiQuoter { quoteExp = \s -> do +- rs <- settings +- render <- [|TL.toStrict . toLazyText|] +- rendered <- shakespeareFromString rs { justVarInterpolation = True } s +- return (render `AppE` rendered) +- } +- +-text = QuasiQuoter { quoteExp = \s -> do +- rs <- settings +- quoteExp (shakespeare rs) $ filter (/='\r') s +- } +- +- +-textFile :: FilePath -> Q Exp +-textFile fp = do +- rs <- settings +- shakespeareFile rs fp +- +- +-textFileDebug :: FilePath -> Q Exp +-textFileDebug = textFileReload +-{-# DEPRECATED textFileDebug "Please use textFileReload instead" #-} +- +-textFileReload :: FilePath -> Q Exp +-textFileReload fp = do +- rs <- settings +- shakespeareFileReload rs fp +- +--- | codegen is designed for generating Yesod code, including templates +--- So it uses different interpolation characters that won't clash with templates. +-codegenSettings :: Q ShakespeareSettings +-codegenSettings = do +- toTExp <- [|toText|] +- wrapExp <- [|id|] +- unWrapExp <- [|id|] +- return $ defaultShakespeareSettings { toBuilder = toTExp +- , wrap = wrapExp +- , unwrap = unWrapExp +- , varChar = '~' +- , urlChar = '*' +- , intChar = '&' +- , justVarInterpolation = True -- always! +- } +- +--- | codegen is designed for generating Yesod code, including templates +--- So it uses different interpolation characters that won't clash with templates. +--- You can use the normal text quasiquoters to generate code +-codegen :: QuasiQuoter +-codegen = +- QuasiQuoter { quoteExp = \s -> do +- rs <- codegenSettings +- render <- [|toLazyText|] +- rendered <- shakespeareFromString rs { justVarInterpolation = True } s +- return (render `AppE` rendered) +- } +- +--- | Generates strict Text +--- codegen is designed for generating Yesod code, including templates +--- So it uses different interpolation characters that won't clash with templates. +-codegenSt :: QuasiQuoter +-codegenSt = +- QuasiQuoter { quoteExp = \s -> do +- rs <- codegenSettings +- render <- [|TL.toStrict . toLazyText|] +- rendered <- shakespeareFromString rs { justVarInterpolation = True } s +- return (render `AppE` rendered) +- } +- +-codegenFileReload :: FilePath -> Q Exp +-codegenFileReload fp = do +- rs <- codegenSettings +- render <- [|TL.toStrict . toLazyText|] +- rendered <- shakespeareFileReload rs{ justVarInterpolation = True } fp +- return (render `AppE` rendered) +- +-codegenFile :: FilePath -> Q Exp +-codegenFile fp = do +- rs <- codegenSettings +- render <- [|TL.toStrict . toLazyText|] +- rendered <- shakespeareFile rs{ justVarInterpolation = True } fp +- return (render `AppE` rendered) +-- +2.1.1 + diff --git a/standalone/android/haskell-patches/skein_hardcode_little-endian.patch b/standalone/android/haskell-patches/skein_hardcode_little-endian.patch deleted file mode 100644 index 7333742b0..000000000 --- a/standalone/android/haskell-patches/skein_hardcode_little-endian.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 3a04b41ffce4e4e87b0fedd3a1e3434a3f06cc76 Mon Sep 17 00:00:00 2001 -From: foo -Date: Sun, 22 Sep 2013 00:18:12 +0000 -Subject: [PATCH] hardcode little endian - -This is the same as building with a cabal flag. - ---- - c_impl/optimized/skein_port.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/c_impl/optimized/skein_port.h b/c_impl/optimized/skein_port.h -index a2d0fc2..6929bb0 100644 ---- a/c_impl/optimized/skein_port.h -+++ b/c_impl/optimized/skein_port.h -@@ -45,6 +45,7 @@ typedef uint64_t u64b_t; /* 64-bit unsigned integer */ - * platform-specific code instead (e.g., for big-endian CPUs). - * - */ -+#define SKEIN_NEED_SWAP (0) - #ifndef SKEIN_NEED_SWAP /* compile-time "override" for endianness? */ - - #include "brg_endian.h" /* get endianness selection */ --- -1.7.10.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 -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 @@ -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 -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 +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 -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 -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..4e7f4a24b 100755 --- a/standalone/android/install-haskell-packages +++ b/standalone/android/install-haskell-packages @@ -8,6 +8,10 @@ # versions that have been gotten working. To update, delete the # cabal.config, run this script with an empty cabal and fix up the broken # patches, and then use cabal freeze to generate a new cabal.config. +# +# This only installs haskell packages for ghc-android. The host ghc +# also needs to have all the git-annex build deps installed, in similar +# versions. Those are installed from Debian packages using apt. set -e @@ -86,9 +90,10 @@ EOF patched iproute patched primitive patched socks - patched entropy + # patched entropy # needed for newer version, not current pinned version patched vector patched stm-chans + patched persistent patched profunctors patched skein patched lens @@ -97,14 +102,19 @@ EOF patched persistent-template patched system-filepath patched optparse-applicative - patched warp patched wai-app-static patched shakespeare + patched shakespeare-css + patched shakespeare-js + patched yesod-routes patched yesod-core + patched yesod-persistent patched yesod-form + patched crypto-numbers patched clock patched yesod-auth patched yesod + patched shakespeare-text patched process-conduit patched DAV patched yesod-static @@ -112,6 +122,7 @@ EOF patched dns patched gnutls patched unbounded-delays + patched gnuidn patched network-protocol-xmpp cd .. @@ -119,13 +130,11 @@ EOF installgitannexdeps -fAndroid -f-Pairing } -setupcabal - -# Install packages for host ghc. +# native cabal needs its own update cabal update -installgitannexdeps -# Install packages for cross ghc, with patches as necessary. PATH=$HOME/.ghc/$(cat abiversion)/bin:$HOME/.ghc/$(cat abiversion)/arm-linux-androideabi/bin:$PATH +setupcabal cabal update + install_pkgs 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 -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 +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 +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 +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 -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 +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/no-th/haskell-patches/optparse-applicative_remove-ANN.patch b/standalone/no-th/haskell-patches/optparse-applicative_remove-ANN.patch new file mode 100644 index 000000000..1bb843524 --- /dev/null +++ b/standalone/no-th/haskell-patches/optparse-applicative_remove-ANN.patch @@ -0,0 +1,33 @@ +From b128590966d4946219e45e2efd88acf7a354abc2 Mon Sep 17 00:00:00 2001 +From: androidbuilder +Date: Tue, 14 Oct 2014 02:28:02 +0000 +Subject: [PATCH] remove ANN + +--- + Options/Applicative.hs | 2 -- + Options/Applicative/Help/Core.hs | 2 -- + 2 files changed, 4 deletions(-) + +diff --git a/Options/Applicative.hs b/Options/Applicative.hs +index bd4129d..f412062 100644 +--- a/Options/Applicative.hs ++++ b/Options/Applicative.hs +@@ -34,5 +34,3 @@ import Options.Applicative.Common + import Options.Applicative.Builder + import Options.Applicative.Builder.Completer + import Options.Applicative.Extra +- +-{-# ANN module "HLint: ignore Use import/export shortcut" #-} +diff --git a/Options/Applicative/Help/Core.hs b/Options/Applicative/Help/Core.hs +index 0a79169..3f1ce3f 100644 +--- a/Options/Applicative/Help/Core.hs ++++ b/Options/Applicative/Help/Core.hs +@@ -139,5 +139,3 @@ parserUsage pprefs p progn = hsep + [ string "Usage:" + , string progn + , align (extractChunk (briefDesc pprefs p)) ] +- +-{-# ANN footerHelp "HLint: ignore Eta reduce" #-} +-- +1.7.10.4 + 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 +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/no-th/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch b/standalone/no-th/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch new file mode 100644 index 000000000..45397f3e5 --- /dev/null +++ b/standalone/no-th/haskell-patches/profunctors_3.3-0001-fix-cross-build.patch @@ -0,0 +1,26 @@ +From 392602f5ff14c0b5a801397d075ddcbcd890aa83 Mon Sep 17 00:00:00 2001 +From: Joey Hess +Date: Thu, 18 Apr 2013 17:50:59 -0400 +Subject: [PATCH] fix cross build + +--- + src/Data/Profunctor/Unsafe.hs | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/src/Data/Profunctor/Unsafe.hs b/src/Data/Profunctor/Unsafe.hs +index 025c7c4..0249274 100644 +--- a/src/Data/Profunctor/Unsafe.hs ++++ b/src/Data/Profunctor/Unsafe.hs +@@ -40,9 +40,6 @@ import Data.Tagged + import Prelude hiding (id,(.),sequence) + import Unsafe.Coerce + +-{-# ANN module "Hlint: ignore Redundant lambda" #-} +-{-# ANN module "Hlint: ignore Collapse lambdas" #-} +- + infixr 9 #. + infixl 8 .# + +-- +1.8.2.rc3 + 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 +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/no-th/haskell-patches/shakespeare-css_remove_TH.patch b/standalone/no-th/haskell-patches/shakespeare-css_remove_TH.patch new file mode 100644 index 000000000..82e2c6420 --- /dev/null +++ b/standalone/no-th/haskell-patches/shakespeare-css_remove_TH.patch @@ -0,0 +1,366 @@ +From 657fa7135bbcf3d5adb3cc0032e09887dd80a2a7 Mon Sep 17 00:00:00 2001 +From: dummy +Date: Thu, 16 Oct 2014 02:05:14 +0000 +Subject: [PATCH] hack TH + +--- + Text/Cassius.hs | 23 -------- + Text/Css.hs | 151 -------------------------------------------------- + Text/CssCommon.hs | 4 -- + Text/Lucius.hs | 46 +-------------- + shakespeare-css.cabal | 2 +- + 5 files changed, 3 insertions(+), 223 deletions(-) + +diff --git a/Text/Cassius.hs b/Text/Cassius.hs +index 91fc90f..c515807 100644 +--- a/Text/Cassius.hs ++++ b/Text/Cassius.hs +@@ -13,10 +13,6 @@ module Text.Cassius + , renderCss + , renderCssUrl + -- * Parsing +- , cassius +- , cassiusFile +- , cassiusFileDebug +- , cassiusFileReload + -- * ToCss instances + -- ** Color + , Color (..) +@@ -27,11 +23,8 @@ module Text.Cassius + , AbsoluteUnit (..) + , AbsoluteSize (..) + , absoluteSize +- , EmSize (..) +- , ExSize (..) + , PercentageSize (..) + , percentageSize +- , PixelSize (..) + -- * Internal + , cassiusUsedIdentifiers + ) where +@@ -43,25 +36,9 @@ import Language.Haskell.TH.Quote (QuasiQuoter (..)) + import Language.Haskell.TH.Syntax + import qualified Data.Text.Lazy as TL + import Text.CssCommon +-import Text.Lucius (lucius) + import qualified Text.Lucius + import Text.IndentToBrace (i2b) + +-cassius :: QuasiQuoter +-cassius = QuasiQuoter { quoteExp = quoteExp lucius . i2b } +- +-cassiusFile :: FilePath -> Q Exp +-cassiusFile fp = do +-#ifdef GHC_7_4 +- qAddDependentFile fp +-#endif +- contents <- fmap TL.unpack $ qRunIO $ readUtf8File fp +- quoteExp cassius contents +- +-cassiusFileDebug, cassiusFileReload :: FilePath -> Q Exp +-cassiusFileDebug = cssFileDebug True [|Text.Lucius.parseTopLevels|] Text.Lucius.parseTopLevels +-cassiusFileReload = cassiusFileDebug +- + -- | Determine which identifiers are used by the given template, useful for + -- creating systems like yesod devel. + cassiusUsedIdentifiers :: String -> [(Deref, VarType)] +diff --git a/Text/Css.hs b/Text/Css.hs +index 75dc549..20c206c 100644 +--- a/Text/Css.hs ++++ b/Text/Css.hs +@@ -166,22 +166,6 @@ cssUsedIdentifiers toi2b parseBlocks s' = + (scope, rest') = go rest + go' (Attr k v) = k ++ v + +-cssFileDebug :: Bool -- ^ perform the indent-to-brace conversion +- -> Q Exp +- -> Parser [TopLevel Unresolved] +- -> FilePath +- -> Q Exp +-cssFileDebug toi2b parseBlocks' parseBlocks fp = do +- s <- fmap TL.unpack $ qRunIO $ readUtf8File fp +-#ifdef GHC_7_4 +- qAddDependentFile fp +-#endif +- let vs = cssUsedIdentifiers toi2b parseBlocks s +- c <- mapM vtToExp vs +- cr <- [|cssRuntime toi2b|] +- parseBlocks'' <- parseBlocks' +- return $ cr `AppE` parseBlocks'' `AppE` (LitE $ StringL fp) `AppE` ListE c +- + combineSelectors :: HasLeadingSpace + -> [Contents] + -> [Contents] +@@ -287,18 +271,6 @@ cssRuntime toi2b parseBlocks fp cd render' = unsafePerformIO $ do + + addScope scope = map (DerefIdent . Ident *** CDPlain . fromString) scope ++ cd + +-vtToExp :: (Deref, VarType) -> Q Exp +-vtToExp (d, vt) = do +- d' <- lift d +- c' <- c vt +- return $ TupE [d', c' `AppE` derefToExp [] d] +- where +- c :: VarType -> Q Exp +- c VTPlain = [|CDPlain . toCss|] +- c VTUrl = [|CDUrl|] +- c VTUrlParam = [|CDUrlParam|] +- c VTMixin = [|CDMixin|] +- + getVars :: Monad m => [(String, String)] -> Content -> m [(Deref, VarType)] + getVars _ ContentRaw{} = return [] + getVars scope (ContentVar d) = +@@ -342,111 +314,8 @@ compressBlock (Block x y blocks mixins) = + cc (ContentRaw a:ContentRaw b:c) = cc $ ContentRaw (a ++ b) : c + cc (a:b) = a : cc b + +-blockToMixin :: Name +- -> Scope +- -> Block Unresolved +- -> Q Exp +-blockToMixin r scope (Block _sel props subblocks mixins) = +- [|Mixin +- { mixinAttrs = concat +- $ $(listE $ map go props) +- : map mixinAttrs $mixinsE +- -- FIXME too many complications to implement sublocks for now... +- , mixinBlocks = [] -- foldr (.) id $(listE $ map subGo subblocks) [] +- }|] +- {- +- . foldr (.) id $(listE $ map subGo subblocks) +- . (concatMap mixinBlocks $mixinsE ++) +- |] +- -} +- where +- mixinsE = return $ ListE $ map (derefToExp []) mixins +- go (Attr x y) = conE 'Attr +- `appE` (contentsToBuilder r scope x) +- `appE` (contentsToBuilder r scope y) +- subGo (Block sel' b c d) = blockToCss r scope $ Block sel' b c d +- +-blockToCss :: Name +- -> Scope +- -> Block Unresolved +- -> Q Exp +-blockToCss r scope (Block sel props subblocks mixins) = +- [|((Block +- { blockSelector = $(selectorToBuilder r scope sel) +- , blockAttrs = concat +- $ $(listE $ map go props) +- : map mixinAttrs $mixinsE +- , blockBlocks = () +- , blockMixins = () +- } :: Block Resolved):) +- . foldr (.) id $(listE $ map subGo subblocks) +- . (concatMap mixinBlocks $mixinsE ++) +- |] +- where +- mixinsE = return $ ListE $ map (derefToExp []) mixins +- go (Attr x y) = conE 'Attr +- `appE` (contentsToBuilder r scope x) +- `appE` (contentsToBuilder r scope y) +- subGo (hls, Block sel' b c d) = +- blockToCss r scope $ Block sel'' b c d +- where +- sel'' = combineSelectors hls sel sel' +- +-selectorToBuilder :: Name -> Scope -> [Contents] -> Q Exp +-selectorToBuilder r scope sels = +- contentsToBuilder r scope $ intercalate [ContentRaw ","] sels +- +-contentsToBuilder :: Name -> Scope -> [Content] -> Q Exp +-contentsToBuilder r scope contents = +- appE [|mconcat|] $ listE $ map (contentToBuilder r scope) contents +- +-contentToBuilder :: Name -> Scope -> Content -> Q Exp +-contentToBuilder _ _ (ContentRaw x) = +- [|fromText . pack|] `appE` litE (StringL x) +-contentToBuilder _ scope (ContentVar d) = +- case d of +- DerefIdent (Ident s) +- | Just val <- lookup s scope -> [|fromText . pack|] `appE` litE (StringL val) +- _ -> [|toCss|] `appE` return (derefToExp [] d) +-contentToBuilder r _ (ContentUrl u) = +- [|fromText|] `appE` +- (varE r `appE` return (derefToExp [] u) `appE` listE []) +-contentToBuilder r _ (ContentUrlParam u) = +- [|fromText|] `appE` +- ([|uncurry|] `appE` varE r `appE` return (derefToExp [] u)) +-contentToBuilder _ _ ContentMixin{} = error "contentToBuilder on ContentMixin" +- + type Scope = [(String, String)] + +-topLevelsToCassius :: [TopLevel Unresolved] +- -> Q Exp +-topLevelsToCassius a = do +- r <- newName "_render" +- lamE [varP r] $ appE [|CssNoWhitespace . foldr ($) []|] $ fmap ListE $ go r [] a +- where +- go _ _ [] = return [] +- go r scope (TopBlock b:rest) = do +- e <- [|(++) $ map TopBlock ($(blockToCss r scope b) [])|] +- es <- go r scope rest +- return $ e : es +- go r scope (TopAtBlock name s b:rest) = do +- let s' = contentsToBuilder r scope s +- e <- [|(:) $ TopAtBlock $(lift name) $(s') $(blocksToCassius r scope b)|] +- es <- go r scope rest +- return $ e : es +- go r scope (TopAtDecl dec cs:rest) = do +- e <- [|(:) $ TopAtDecl $(lift dec) $(contentsToBuilder r scope cs)|] +- es <- go r scope rest +- return $ e : es +- go r scope (TopVar k v:rest) = go r ((k, v) : scope) rest +- +-blocksToCassius :: Name +- -> Scope +- -> [Block Unresolved] +- -> Q Exp +-blocksToCassius r scope a = do +- appE [|foldr ($) []|] $ listE $ map (blockToCss r scope) a +- + renderCss :: Css -> TL.Text + renderCss css = + toLazyText $ mconcat $ map go tops +@@ -515,23 +384,3 @@ renderBlock haveWhiteSpace indent (Block sel attrs () ()) + | haveWhiteSpace = fromString ";\n" + | otherwise = singleton ';' + +-instance Lift Mixin where +- lift (Mixin a b) = [|Mixin a b|] +-instance Lift (Attr Unresolved) where +- lift (Attr k v) = [|Attr k v :: Attr Unresolved |] +-instance Lift (Attr Resolved) where +- lift (Attr k v) = [|Attr $(liftBuilder k) $(liftBuilder v) :: Attr Resolved |] +- +-liftBuilder :: Builder -> Q Exp +-liftBuilder b = [|fromText $ pack $(lift $ TL.unpack $ toLazyText b)|] +- +-instance Lift Content where +- lift (ContentRaw s) = [|ContentRaw s|] +- lift (ContentVar d) = [|ContentVar d|] +- lift (ContentUrl d) = [|ContentUrl d|] +- lift (ContentUrlParam d) = [|ContentUrlParam d|] +- lift (ContentMixin m) = [|ContentMixin m|] +-instance Lift (Block Unresolved) where +- lift (Block a b c d) = [|Block a b c d|] +-instance Lift (Block Resolved) where +- lift (Block a b () ()) = [|Block $(liftBuilder a) b () ()|] +diff --git a/Text/CssCommon.hs b/Text/CssCommon.hs +index 719e0a8..8c40e8c 100644 +--- a/Text/CssCommon.hs ++++ b/Text/CssCommon.hs +@@ -1,4 +1,3 @@ +-{-# LANGUAGE TemplateHaskell #-} + {-# LANGUAGE GeneralizedNewtypeDeriving #-} + {-# LANGUAGE FlexibleInstances #-} + {-# LANGUAGE CPP #-} +@@ -156,6 +155,3 @@ showSize :: Rational -> String -> String + showSize value' unit = printf "%f" value ++ unit + where value = fromRational value' :: Double + +-mkSizeType "EmSize" "em" +-mkSizeType "ExSize" "ex" +-mkSizeType "PixelSize" "px" +diff --git a/Text/Lucius.hs b/Text/Lucius.hs +index 346883d..f38492b 100644 +--- a/Text/Lucius.hs ++++ b/Text/Lucius.hs +@@ -8,13 +8,9 @@ + {-# OPTIONS_GHC -fno-warn-missing-fields #-} + module Text.Lucius + ( -- * Parsing +- lucius +- , luciusFile +- , luciusFileDebug +- , luciusFileReload + -- ** Mixins +- , luciusMixin +- , Mixin ++ -- luciusMixin ++ Mixin + -- ** Runtime + , luciusRT + , luciusRT' +@@ -40,11 +36,8 @@ module Text.Lucius + , AbsoluteUnit (..) + , AbsoluteSize (..) + , absoluteSize +- , EmSize (..) +- , ExSize (..) + , PercentageSize (..) + , percentageSize +- , PixelSize (..) + -- * Internal + , parseTopLevels + , luciusUsedIdentifiers +@@ -67,18 +60,6 @@ import Data.List (isSuffixOf) + import Control.Arrow (second) + import Text.Shakespeare (VarType) + +--- | +--- +--- >>> renderCss ([lucius|foo{bar:baz}|] undefined) +--- "foo{bar:baz}" +-lucius :: QuasiQuoter +-lucius = QuasiQuoter { quoteExp = luciusFromString } +- +-luciusFromString :: String -> Q Exp +-luciusFromString s = +- topLevelsToCassius +- $ either (error . show) id $ parse parseTopLevels s s +- + whiteSpace :: Parser () + whiteSpace = many whiteSpace1 >> return () + +@@ -218,17 +199,6 @@ parseComment = do + _ <- manyTill anyChar $ try $ string "*/" + return $ ContentRaw "" + +-luciusFile :: FilePath -> Q Exp +-luciusFile fp = do +-#ifdef GHC_7_4 +- qAddDependentFile fp +-#endif +- contents <- fmap TL.unpack $ qRunIO $ readUtf8File fp +- luciusFromString contents +- +-luciusFileDebug, luciusFileReload :: FilePath -> Q Exp +-luciusFileDebug = cssFileDebug False [|parseTopLevels|] parseTopLevels +-luciusFileReload = luciusFileDebug + + parseTopLevels :: Parser [TopLevel Unresolved] + parseTopLevels = +@@ -377,15 +347,3 @@ luciusRTMinified tl scope = either Left (Right . renderCss . CssNoWhitespace) $ + -- creating systems like yesod devel. + luciusUsedIdentifiers :: String -> [(Deref, VarType)] + luciusUsedIdentifiers = cssUsedIdentifiers False parseTopLevels +- +-luciusMixin :: QuasiQuoter +-luciusMixin = QuasiQuoter { quoteExp = luciusMixinFromString } +- +-luciusMixinFromString :: String -> Q Exp +-luciusMixinFromString s' = do +- r <- newName "_render" +- case fmap compressBlock $ parse parseBlock s s of +- Left e -> error $ show e +- Right block -> blockToMixin r [] block +- where +- s = concat ["mixin{", s', "}"] +diff --git a/shakespeare-css.cabal b/shakespeare-css.cabal +index 2d3b25a..cc0553c 100644 +--- a/shakespeare-css.cabal ++++ b/shakespeare-css.cabal +@@ -35,8 +35,8 @@ library + + exposed-modules: Text.Cassius + Text.Lucius +- other-modules: Text.MkSizeType + Text.Css ++ other-modules: Text.MkSizeType + Text.IndentToBrace + Text.CssCommon + ghc-options: -Wall +-- +2.1.1 + diff --git a/standalone/no-th/haskell-patches/shakespeare-js_hack_TH.patch b/standalone/no-th/haskell-patches/shakespeare-js_hack_TH.patch new file mode 100644 index 000000000..905467130 --- /dev/null +++ b/standalone/no-th/haskell-patches/shakespeare-js_hack_TH.patch @@ -0,0 +1,316 @@ +From 26f7328b0123d3ffa66873b91189ba3bdae3356c Mon Sep 17 00:00:00 2001 +From: dummy +Date: Thu, 16 Oct 2014 02:07:32 +0000 +Subject: [PATCH] hack TH + +--- + Text/Coffee.hs | 56 ++++----------------------------------------- + Text/Julius.hs | 67 +++++++++--------------------------------------------- + Text/Roy.hs | 51 ++++------------------------------------- + Text/TypeScript.hs | 51 ++++------------------------------------- + 4 files changed, 24 insertions(+), 201 deletions(-) + +diff --git a/Text/Coffee.hs b/Text/Coffee.hs +index 488c81b..61db85b 100644 +--- a/Text/Coffee.hs ++++ b/Text/Coffee.hs +@@ -51,13 +51,13 @@ module Text.Coffee + -- ** Template-Reading Functions + -- | These QuasiQuoter and Template Haskell methods return values of + -- type @'JavascriptUrl' url@. See the Yesod book for details. +- coffee +- , coffeeFile +- , coffeeFileReload +- , coffeeFileDebug ++ -- coffee ++ --, coffeeFile ++ --, coffeeFileReload ++ --, coffeeFileDebug + + #ifdef TEST_EXPORT +- , coffeeSettings ++ --, coffeeSettings + #endif + ) where + +@@ -65,49 +65,3 @@ import Language.Haskell.TH.Quote (QuasiQuoter (..)) + import Language.Haskell.TH.Syntax + import Text.Shakespeare + import Text.Julius +- +-coffeeSettings :: Q ShakespeareSettings +-coffeeSettings = do +- jsettings <- javascriptSettings +- return $ jsettings { varChar = '%' +- , preConversion = Just PreConvert { +- preConvert = ReadProcess "coffee" ["-spb"] +- , preEscapeIgnoreBalanced = "'\"`" -- don't insert backtacks for variable already inside strings or backticks. +- , preEscapeIgnoreLine = "#" -- ignore commented lines +- , wrapInsertion = Just WrapInsertion { +- wrapInsertionIndent = Just " " +- , wrapInsertionStartBegin = "(" +- , wrapInsertionSeparator = ", " +- , wrapInsertionStartClose = ") =>" +- , wrapInsertionEnd = "" +- , wrapInsertionAddParens = False +- } +- } +- } +- +--- | Read inline, quasiquoted CoffeeScript. +-coffee :: QuasiQuoter +-coffee = QuasiQuoter { quoteExp = \s -> do +- rs <- coffeeSettings +- quoteExp (shakespeare rs) s +- } +- +--- | Read in a CoffeeScript template file. This function reads the file once, at +--- compile time. +-coffeeFile :: FilePath -> Q Exp +-coffeeFile fp = do +- rs <- coffeeSettings +- shakespeareFile rs fp +- +--- | Read in a CoffeeScript template file. This impure function uses +--- unsafePerformIO to re-read the file on every call, allowing for rapid +--- iteration. +-coffeeFileReload :: FilePath -> Q Exp +-coffeeFileReload fp = do +- rs <- coffeeSettings +- shakespeareFileReload rs fp +- +--- | Deprecated synonym for 'coffeeFileReload' +-coffeeFileDebug :: FilePath -> Q Exp +-coffeeFileDebug = coffeeFileReload +-{-# DEPRECATED coffeeFileDebug "Please use coffeeFileReload instead." #-} +diff --git a/Text/Julius.hs b/Text/Julius.hs +index ec30690..5b5a075 100644 +--- a/Text/Julius.hs ++++ b/Text/Julius.hs +@@ -14,17 +14,17 @@ module Text.Julius + -- ** Template-Reading Functions + -- | These QuasiQuoter and Template Haskell methods return values of + -- type @'JavascriptUrl' url@. See the Yesod book for details. +- js +- , julius +- , juliusFile +- , jsFile +- , juliusFileDebug +- , jsFileDebug +- , juliusFileReload +- , jsFileReload ++ -- js ++ -- julius ++ -- juliusFile ++ -- jsFile ++ --, juliusFileDebug ++ --, jsFileDebug ++ --, juliusFileReload ++ --, jsFileReload + + -- * Datatypes +- , JavascriptUrl ++ JavascriptUrl + , Javascript (..) + , RawJavascript (..) + +@@ -37,9 +37,9 @@ module Text.Julius + , renderJavascriptUrl + + -- ** internal, used by 'Text.Coffee' +- , javascriptSettings ++ --, javascriptSettings + -- ** internal +- , juliusUsedIdentifiers ++ --, juliusUsedIdentifiers + , asJavascriptUrl + ) where + +@@ -102,48 +102,3 @@ instance RawJS TL.Text where rawJS = RawJavascript . fromLazyText + instance RawJS Builder where rawJS = RawJavascript + instance RawJS Bool where rawJS = RawJavascript . unJavascript . toJavascript + +-javascriptSettings :: Q ShakespeareSettings +-javascriptSettings = do +- toJExp <- [|toJavascript|] +- wrapExp <- [|Javascript|] +- unWrapExp <- [|unJavascript|] +- asJavascriptUrl' <- [|asJavascriptUrl|] +- return $ defaultShakespeareSettings { toBuilder = toJExp +- , wrap = wrapExp +- , unwrap = unWrapExp +- , modifyFinalValue = Just asJavascriptUrl' +- } +- +-js, julius :: QuasiQuoter +-js = QuasiQuoter { quoteExp = \s -> do +- rs <- javascriptSettings +- quoteExp (shakespeare rs) s +- } +- +-julius = js +- +-jsFile, juliusFile :: FilePath -> Q Exp +-jsFile fp = do +- rs <- javascriptSettings +- shakespeareFile rs fp +- +-juliusFile = jsFile +- +- +-jsFileReload, juliusFileReload :: FilePath -> Q Exp +-jsFileReload fp = do +- rs <- javascriptSettings +- shakespeareFileReload rs fp +- +-juliusFileReload = jsFileReload +- +-jsFileDebug, juliusFileDebug :: FilePath -> Q Exp +-juliusFileDebug = jsFileReload +-{-# DEPRECATED juliusFileDebug "Please use juliusFileReload instead." #-} +-jsFileDebug = jsFileReload +-{-# DEPRECATED jsFileDebug "Please use jsFileReload instead." #-} +- +--- | Determine which identifiers are used by the given template, useful for +--- creating systems like yesod devel. +-juliusUsedIdentifiers :: String -> [(Deref, VarType)] +-juliusUsedIdentifiers = shakespeareUsedIdentifiers defaultShakespeareSettings +diff --git a/Text/Roy.hs b/Text/Roy.hs +index 6e5e246..9ab0dbc 100644 +--- a/Text/Roy.hs ++++ b/Text/Roy.hs +@@ -39,12 +39,12 @@ module Text.Roy + -- ** Template-Reading Functions + -- | These QuasiQuoter and Template Haskell methods return values of + -- type @'JavascriptUrl' url@. See the Yesod book for details. +- roy +- , royFile +- , royFileReload ++ -- roy ++ --, royFile ++ --, royFileReload + + #ifdef TEST_EXPORT +- , roySettings ++ --, roySettings + #endif + ) where + +@@ -53,46 +53,3 @@ import Language.Haskell.TH.Syntax + import Text.Shakespeare + import Text.Julius + +--- | The Roy language compiles down to Javascript. +--- We do this compilation once at compile time to avoid needing to do it during the request. +--- We call this a preConversion because other shakespeare modules like Lucius use Haskell to compile during the request instead rather than a system call. +-roySettings :: Q ShakespeareSettings +-roySettings = do +- jsettings <- javascriptSettings +- return $ jsettings { varChar = '#' +- , preConversion = Just PreConvert { +- preConvert = ReadProcess "roy" ["--stdio", "--browser"] +- , preEscapeIgnoreBalanced = "'\"" +- , preEscapeIgnoreLine = "//" +- , wrapInsertion = Just WrapInsertion { +- wrapInsertionIndent = Just " " +- , wrapInsertionStartBegin = "(\\" +- , wrapInsertionSeparator = " " +- , wrapInsertionStartClose = " ->\n" +- , wrapInsertionEnd = ")" +- , wrapInsertionAddParens = True +- } +- } +- } +- +--- | Read inline, quasiquoted Roy. +-roy :: QuasiQuoter +-roy = QuasiQuoter { quoteExp = \s -> do +- rs <- roySettings +- quoteExp (shakespeare rs) s +- } +- +--- | Read in a Roy template file. This function reads the file once, at +--- compile time. +-royFile :: FilePath -> Q Exp +-royFile fp = do +- rs <- roySettings +- shakespeareFile rs fp +- +--- | Read in a Roy template file. This impure function uses +--- unsafePerformIO to re-read the file on every call, allowing for rapid +--- iteration. +-royFileReload :: FilePath -> Q Exp +-royFileReload fp = do +- rs <- roySettings +- shakespeareFileReload rs fp +diff --git a/Text/TypeScript.hs b/Text/TypeScript.hs +index 70c8820..5be994a 100644 +--- a/Text/TypeScript.hs ++++ b/Text/TypeScript.hs +@@ -57,12 +57,12 @@ module Text.TypeScript + -- ** Template-Reading Functions + -- | These QuasiQuoter and Template Haskell methods return values of + -- type @'JavascriptUrl' url@. See the Yesod book for details. +- tsc +- , typeScriptFile +- , typeScriptFileReload ++ -- tsc ++ --, typeScriptFile ++ --, typeScriptFileReload + + #ifdef TEST_EXPORT +- , typeScriptSettings ++ --, typeScriptSettings + #endif + ) where + +@@ -71,46 +71,3 @@ import Language.Haskell.TH.Syntax + import Text.Shakespeare + import Text.Julius + +--- | The TypeScript language compiles down to Javascript. +--- We do this compilation once at compile time to avoid needing to do it during the request. +--- We call this a preConversion because other shakespeare modules like Lucius use Haskell to compile during the request instead rather than a system call. +-typeScriptSettings :: Q ShakespeareSettings +-typeScriptSettings = do +- jsettings <- javascriptSettings +- return $ jsettings { varChar = '#' +- , preConversion = Just PreConvert { +- preConvert = ReadProcess "sh" ["-c", "TMP_IN=$(mktemp XXXXXXXXXX.ts); TMP_OUT=$(mktemp XXXXXXXXXX.js); cat /dev/stdin > ${TMP_IN} && tsc --out ${TMP_OUT} ${TMP_IN} && cat ${TMP_OUT}; rm ${TMP_IN} && rm ${TMP_OUT}"] +- , preEscapeIgnoreBalanced = "'\"" +- , preEscapeIgnoreLine = "//" +- , wrapInsertion = Just WrapInsertion { +- wrapInsertionIndent = Nothing +- , wrapInsertionStartBegin = ";(function(" +- , wrapInsertionSeparator = ", " +- , wrapInsertionStartClose = "){" +- , wrapInsertionEnd = "})" +- , wrapInsertionAddParens = False +- } +- } +- } +- +--- | Read inline, quasiquoted TypeScript +-tsc :: QuasiQuoter +-tsc = QuasiQuoter { quoteExp = \s -> do +- rs <- typeScriptSettings +- quoteExp (shakespeare rs) s +- } +- +--- | Read in a TypeScript template file. This function reads the file once, at +--- compile time. +-typeScriptFile :: FilePath -> Q Exp +-typeScriptFile fp = do +- rs <- typeScriptSettings +- shakespeareFile rs fp +- +--- | Read in a Roy template file. This impure function uses +--- unsafePerformIO to re-read the file on every call, allowing for rapid +--- iteration. +-typeScriptFileReload :: FilePath -> Q Exp +-typeScriptFileReload fp = do +- rs <- typeScriptSettings +- shakespeareFileReload rs fp +-- +2.1.1 + diff --git a/standalone/no-th/haskell-patches/shakespeare_remove-TH.patch b/standalone/no-th/haskell-patches/shakespeare_remove-TH.patch index 68226dcc6..940514756 100644 --- a/standalone/no-th/haskell-patches/shakespeare_remove-TH.patch +++ b/standalone/no-th/haskell-patches/shakespeare_remove-TH.patch @@ -1,1039 +1,18 @@ -From 4694f3a7ee4eb15d33ecda9d62712ea236304c1b Mon Sep 17 00:00:00 2001 +From 38a22dae4f7f9726379fdaa3f85d78d75eee9d8e Mon Sep 17 00:00:00 2001 From: dummy -Date: Thu, 2 Jul 2015 22:17:29 +0000 +Date: Thu, 16 Oct 2014 02:01:22 +0000 Subject: [PATCH] hack TH --- - Text/Cassius.hs | 30 +--- - Text/Coffee.hs | 56 +------- - Text/Css.hs | 151 --------------------- - Text/CssCommon.hs | 22 --- - Text/Hamlet.hs | 346 +++-------------------------------------------- - Text/Julius.hs | 59 +------- - Text/Lucius.hs | 47 +------ - Text/Roy.hs | 52 +------ - Text/Shakespeare.hs | 70 ++-------- - Text/Shakespeare/Base.hs | 28 ---- - Text/Shakespeare/Text.hs | 117 ++-------------- - Text/TypeScript.hs | 48 +------ - shakespeare.cabal | 6 +- - 13 files changed, 69 insertions(+), 963 deletions(-) + Text/Shakespeare.hs | 70 ++++++++---------------------------------------- + Text/Shakespeare/Base.hs | 28 ------------------- + 2 files changed, 11 insertions(+), 87 deletions(-) -diff --git a/Text/Cassius.hs b/Text/Cassius.hs -index ba73bdd..ffe7c51 100644 ---- a/Text/Cassius.hs -+++ b/Text/Cassius.hs -@@ -14,12 +14,7 @@ module Text.Cassius - , renderCss - , renderCssUrl - -- * Parsing -- , cassius -- , cassiusFile -- , cassiusFileDebug -- , cassiusFileReload - -- ** Mixims -- , cassiusMixin - , Mixin - -- * ToCss instances - -- ** Color -@@ -27,15 +22,12 @@ module Text.Cassius - , colorRed - , colorBlack - -- ** Size -- , mkSize -+ --, mkSize - , AbsoluteUnit (..) - , AbsoluteSize (..) - , absoluteSize -- , EmSize (..) -- , ExSize (..) - , PercentageSize (..) - , percentageSize -- , PixelSize (..) - -- * Internal - , cassiusUsedIdentifiers - ) where -@@ -47,25 +39,9 @@ import Language.Haskell.TH.Quote (QuasiQuoter (..)) - import Language.Haskell.TH.Syntax - import qualified Data.Text.Lazy as TL - import Text.CssCommon --import Text.Lucius (lucius) - import qualified Text.Lucius - import Text.IndentToBrace (i2b) - --cassius :: QuasiQuoter --cassius = QuasiQuoter { quoteExp = quoteExp lucius . i2b } -- --cassiusFile :: FilePath -> Q Exp --cassiusFile fp = do --#ifdef GHC_7_4 -- qAddDependentFile fp --#endif -- contents <- fmap TL.unpack $ qRunIO $ readUtf8File fp -- quoteExp cassius contents -- --cassiusFileDebug, cassiusFileReload :: FilePath -> Q Exp --cassiusFileDebug = cssFileDebug True [|Text.Lucius.parseTopLevels|] Text.Lucius.parseTopLevels --cassiusFileReload = cassiusFileDebug -- - -- | Determine which identifiers are used by the given template, useful for - -- creating systems like yesod devel. - cassiusUsedIdentifiers :: String -> [(Deref, VarType)] -@@ -74,10 +50,6 @@ cassiusUsedIdentifiers = cssUsedIdentifiers True Text.Lucius.parseTopLevels - -- | Create a mixin with Cassius syntax. - -- - -- Since 2.0.3 --cassiusMixin :: QuasiQuoter --cassiusMixin = QuasiQuoter -- { quoteExp = quoteExp Text.Lucius.luciusMixin . i2bMixin -- } - - i2bMixin :: String -> String - i2bMixin s' = -diff --git a/Text/Coffee.hs b/Text/Coffee.hs -index 488c81b..4e28c94 100644 ---- a/Text/Coffee.hs -+++ b/Text/Coffee.hs -@@ -51,13 +51,13 @@ module Text.Coffee - -- ** Template-Reading Functions - -- | These QuasiQuoter and Template Haskell methods return values of - -- type @'JavascriptUrl' url@. See the Yesod book for details. -- coffee -- , coffeeFile -- , coffeeFileReload -- , coffeeFileDebug -+ -- coffee -+ --, coffeeFile -+ --, coffeeFileReload -+ --, coffeeFileDebug - - #ifdef TEST_EXPORT -- , coffeeSettings -+ -- , coffeeSettings - #endif - ) where - -@@ -65,49 +65,3 @@ import Language.Haskell.TH.Quote (QuasiQuoter (..)) - import Language.Haskell.TH.Syntax - import Text.Shakespeare - import Text.Julius -- --coffeeSettings :: Q ShakespeareSettings --coffeeSettings = do -- jsettings <- javascriptSettings -- return $ jsettings { varChar = '%' -- , preConversion = Just PreConvert { -- preConvert = ReadProcess "coffee" ["-spb"] -- , preEscapeIgnoreBalanced = "'\"`" -- don't insert backtacks for variable already inside strings or backticks. -- , preEscapeIgnoreLine = "#" -- ignore commented lines -- , wrapInsertion = Just WrapInsertion { -- wrapInsertionIndent = Just " " -- , wrapInsertionStartBegin = "(" -- , wrapInsertionSeparator = ", " -- , wrapInsertionStartClose = ") =>" -- , wrapInsertionEnd = "" -- , wrapInsertionAddParens = False -- } -- } -- } -- ---- | Read inline, quasiquoted CoffeeScript. --coffee :: QuasiQuoter --coffee = QuasiQuoter { quoteExp = \s -> do -- rs <- coffeeSettings -- quoteExp (shakespeare rs) s -- } -- ---- | Read in a CoffeeScript template file. This function reads the file once, at ---- compile time. --coffeeFile :: FilePath -> Q Exp --coffeeFile fp = do -- rs <- coffeeSettings -- shakespeareFile rs fp -- ---- | Read in a CoffeeScript template file. This impure function uses ---- unsafePerformIO to re-read the file on every call, allowing for rapid ---- iteration. --coffeeFileReload :: FilePath -> Q Exp --coffeeFileReload fp = do -- rs <- coffeeSettings -- shakespeareFileReload rs fp -- ---- | Deprecated synonym for 'coffeeFileReload' --coffeeFileDebug :: FilePath -> Q Exp --coffeeFileDebug = coffeeFileReload --{-# DEPRECATED coffeeFileDebug "Please use coffeeFileReload instead." #-} -diff --git a/Text/Css.hs b/Text/Css.hs -index 75dc549..20c206c 100644 ---- a/Text/Css.hs -+++ b/Text/Css.hs -@@ -166,22 +166,6 @@ cssUsedIdentifiers toi2b parseBlocks s' = - (scope, rest') = go rest - go' (Attr k v) = k ++ v - --cssFileDebug :: Bool -- ^ perform the indent-to-brace conversion -- -> Q Exp -- -> Parser [TopLevel Unresolved] -- -> FilePath -- -> Q Exp --cssFileDebug toi2b parseBlocks' parseBlocks fp = do -- s <- fmap TL.unpack $ qRunIO $ readUtf8File fp --#ifdef GHC_7_4 -- qAddDependentFile fp --#endif -- let vs = cssUsedIdentifiers toi2b parseBlocks s -- c <- mapM vtToExp vs -- cr <- [|cssRuntime toi2b|] -- parseBlocks'' <- parseBlocks' -- return $ cr `AppE` parseBlocks'' `AppE` (LitE $ StringL fp) `AppE` ListE c -- - combineSelectors :: HasLeadingSpace - -> [Contents] - -> [Contents] -@@ -287,18 +271,6 @@ cssRuntime toi2b parseBlocks fp cd render' = unsafePerformIO $ do - - addScope scope = map (DerefIdent . Ident *** CDPlain . fromString) scope ++ cd - --vtToExp :: (Deref, VarType) -> Q Exp --vtToExp (d, vt) = do -- d' <- lift d -- c' <- c vt -- return $ TupE [d', c' `AppE` derefToExp [] d] -- where -- c :: VarType -> Q Exp -- c VTPlain = [|CDPlain . toCss|] -- c VTUrl = [|CDUrl|] -- c VTUrlParam = [|CDUrlParam|] -- c VTMixin = [|CDMixin|] -- - getVars :: Monad m => [(String, String)] -> Content -> m [(Deref, VarType)] - getVars _ ContentRaw{} = return [] - getVars scope (ContentVar d) = -@@ -342,111 +314,8 @@ compressBlock (Block x y blocks mixins) = - cc (ContentRaw a:ContentRaw b:c) = cc $ ContentRaw (a ++ b) : c - cc (a:b) = a : cc b - --blockToMixin :: Name -- -> Scope -- -> Block Unresolved -- -> Q Exp --blockToMixin r scope (Block _sel props subblocks mixins) = -- [|Mixin -- { mixinAttrs = concat -- $ $(listE $ map go props) -- : map mixinAttrs $mixinsE -- -- FIXME too many complications to implement sublocks for now... -- , mixinBlocks = [] -- foldr (.) id $(listE $ map subGo subblocks) [] -- }|] -- {- -- . foldr (.) id $(listE $ map subGo subblocks) -- . (concatMap mixinBlocks $mixinsE ++) -- |] -- -} -- where -- mixinsE = return $ ListE $ map (derefToExp []) mixins -- go (Attr x y) = conE 'Attr -- `appE` (contentsToBuilder r scope x) -- `appE` (contentsToBuilder r scope y) -- subGo (Block sel' b c d) = blockToCss r scope $ Block sel' b c d -- --blockToCss :: Name -- -> Scope -- -> Block Unresolved -- -> Q Exp --blockToCss r scope (Block sel props subblocks mixins) = -- [|((Block -- { blockSelector = $(selectorToBuilder r scope sel) -- , blockAttrs = concat -- $ $(listE $ map go props) -- : map mixinAttrs $mixinsE -- , blockBlocks = () -- , blockMixins = () -- } :: Block Resolved):) -- . foldr (.) id $(listE $ map subGo subblocks) -- . (concatMap mixinBlocks $mixinsE ++) -- |] -- where -- mixinsE = return $ ListE $ map (derefToExp []) mixins -- go (Attr x y) = conE 'Attr -- `appE` (contentsToBuilder r scope x) -- `appE` (contentsToBuilder r scope y) -- subGo (hls, Block sel' b c d) = -- blockToCss r scope $ Block sel'' b c d -- where -- sel'' = combineSelectors hls sel sel' -- --selectorToBuilder :: Name -> Scope -> [Contents] -> Q Exp --selectorToBuilder r scope sels = -- contentsToBuilder r scope $ intercalate [ContentRaw ","] sels -- --contentsToBuilder :: Name -> Scope -> [Content] -> Q Exp --contentsToBuilder r scope contents = -- appE [|mconcat|] $ listE $ map (contentToBuilder r scope) contents -- --contentToBuilder :: Name -> Scope -> Content -> Q Exp --contentToBuilder _ _ (ContentRaw x) = -- [|fromText . pack|] `appE` litE (StringL x) --contentToBuilder _ scope (ContentVar d) = -- case d of -- DerefIdent (Ident s) -- | Just val <- lookup s scope -> [|fromText . pack|] `appE` litE (StringL val) -- _ -> [|toCss|] `appE` return (derefToExp [] d) --contentToBuilder r _ (ContentUrl u) = -- [|fromText|] `appE` -- (varE r `appE` return (derefToExp [] u) `appE` listE []) --contentToBuilder r _ (ContentUrlParam u) = -- [|fromText|] `appE` -- ([|uncurry|] `appE` varE r `appE` return (derefToExp [] u)) --contentToBuilder _ _ ContentMixin{} = error "contentToBuilder on ContentMixin" -- - type Scope = [(String, String)] - --topLevelsToCassius :: [TopLevel Unresolved] -- -> Q Exp --topLevelsToCassius a = do -- r <- newName "_render" -- lamE [varP r] $ appE [|CssNoWhitespace . foldr ($) []|] $ fmap ListE $ go r [] a -- where -- go _ _ [] = return [] -- go r scope (TopBlock b:rest) = do -- e <- [|(++) $ map TopBlock ($(blockToCss r scope b) [])|] -- es <- go r scope rest -- return $ e : es -- go r scope (TopAtBlock name s b:rest) = do -- let s' = contentsToBuilder r scope s -- e <- [|(:) $ TopAtBlock $(lift name) $(s') $(blocksToCassius r scope b)|] -- es <- go r scope rest -- return $ e : es -- go r scope (TopAtDecl dec cs:rest) = do -- e <- [|(:) $ TopAtDecl $(lift dec) $(contentsToBuilder r scope cs)|] -- es <- go r scope rest -- return $ e : es -- go r scope (TopVar k v:rest) = go r ((k, v) : scope) rest -- --blocksToCassius :: Name -- -> Scope -- -> [Block Unresolved] -- -> Q Exp --blocksToCassius r scope a = do -- appE [|foldr ($) []|] $ listE $ map (blockToCss r scope) a -- - renderCss :: Css -> TL.Text - renderCss css = - toLazyText $ mconcat $ map go tops -@@ -515,23 +384,3 @@ renderBlock haveWhiteSpace indent (Block sel attrs () ()) - | haveWhiteSpace = fromString ";\n" - | otherwise = singleton ';' - --instance Lift Mixin where -- lift (Mixin a b) = [|Mixin a b|] --instance Lift (Attr Unresolved) where -- lift (Attr k v) = [|Attr k v :: Attr Unresolved |] --instance Lift (Attr Resolved) where -- lift (Attr k v) = [|Attr $(liftBuilder k) $(liftBuilder v) :: Attr Resolved |] -- --liftBuilder :: Builder -> Q Exp --liftBuilder b = [|fromText $ pack $(lift $ TL.unpack $ toLazyText b)|] -- --instance Lift Content where -- lift (ContentRaw s) = [|ContentRaw s|] -- lift (ContentVar d) = [|ContentVar d|] -- lift (ContentUrl d) = [|ContentUrl d|] -- lift (ContentUrlParam d) = [|ContentUrlParam d|] -- lift (ContentMixin m) = [|ContentMixin m|] --instance Lift (Block Unresolved) where -- lift (Block a b c d) = [|Block a b c d|] --instance Lift (Block Resolved) where -- lift (Block a b () ()) = [|Block $(liftBuilder a) b () ()|] -diff --git a/Text/CssCommon.hs b/Text/CssCommon.hs -index 719e0a8..0635cf4 100644 ---- a/Text/CssCommon.hs -+++ b/Text/CssCommon.hs -@@ -1,4 +1,3 @@ --{-# LANGUAGE TemplateHaskell #-} - {-# LANGUAGE GeneralizedNewtypeDeriving #-} - {-# LANGUAGE FlexibleInstances #-} - {-# LANGUAGE CPP #-} -@@ -47,24 +46,6 @@ colorBlack = Color 0 0 0 - - -- CSS size wrappers - ---- | Create a CSS size, e.g. $(mkSize "100px"). --mkSize :: String -> ExpQ --mkSize s = appE nameE valueE -- where [(value, unit)] = reads s :: [(Double, String)] -- absoluteSizeE = varE $ mkName "absoluteSize" -- nameE = case unit of -- "cm" -> appE absoluteSizeE (conE $ mkName "Centimeter") -- "em" -> conE $ mkName "EmSize" -- "ex" -> conE $ mkName "ExSize" -- "in" -> appE absoluteSizeE (conE $ mkName "Inch") -- "mm" -> appE absoluteSizeE (conE $ mkName "Millimeter") -- "pc" -> appE absoluteSizeE (conE $ mkName "Pica") -- "pt" -> appE absoluteSizeE (conE $ mkName "Point") -- "px" -> conE $ mkName "PixelSize" -- "%" -> varE $ mkName "percentageSize" -- _ -> error $ "In mkSize, invalid unit: " ++ unit -- valueE = litE $ rationalL (toRational value) -- - -- | Absolute size units. - data AbsoluteUnit = Centimeter - | Inch -@@ -156,6 +137,3 @@ showSize :: Rational -> String -> String - showSize value' unit = printf "%f" value ++ unit - where value = fromRational value' :: Double - --mkSizeType "EmSize" "em" --mkSizeType "ExSize" "ex" --mkSizeType "PixelSize" "px" -diff --git a/Text/Hamlet.hs b/Text/Hamlet.hs -index 4618be3..4ad3633 100644 ---- a/Text/Hamlet.hs -+++ b/Text/Hamlet.hs -@@ -11,36 +11,36 @@ - module Text.Hamlet - ( -- * Plain HTML - Html -- , shamlet -- , shamletFile -- , xshamlet -- , xshamletFile -+ --, shamlet -+ --, shamletFile -+ --, xshamlet -+ --, xshamletFile - -- * Hamlet - , HtmlUrl -- , hamlet -- , hamletFile -- , hamletFileReload -- , ihamletFileReload -- , xhamlet -- , xhamletFile -+ --, hamlet -+ -- , hamletFile -+ -- , hamletFileReload -+ -- , ihamletFileReload -+ -- , xhamlet -+ -- , xhamletFile - -- * I18N Hamlet - , HtmlUrlI18n -- , ihamlet -- , ihamletFile -+ -- , ihamlet -+ -- , ihamletFile - -- * Type classes - , ToAttributes (..) - -- * Internal, for making more - , HamletSettings (..) - , NewlineStyle (..) -- , hamletWithSettings -- , hamletFileWithSettings -+ -- , hamletWithSettings -+ -- , hamletFileWithSettings - , defaultHamletSettings - , xhtmlHamletSettings -- , Env (..) -- , HamletRules (..) -- , hamletRules -- , ihamletRules -- , htmlRules -+ --, Env (..) -+ --, HamletRules (..) -+ --, hamletRules -+ --, ihamletRules -+ --, htmlRules - , CloseStyle (..) - -- * Used by generated code - , condH -@@ -109,48 +109,9 @@ type HtmlUrl url = Render url -> Html - -- | A function generating an 'Html' given a message translator and a URL rendering function. - type HtmlUrlI18n msg url = Translate msg -> Render url -> Html - --docsToExp :: Env -> HamletRules -> Scope -> [Doc] -> Q Exp --docsToExp env hr scope docs = do -- exps <- mapM (docToExp env hr scope) docs -- case exps of -- [] -> [|return ()|] -- [x] -> return x -- _ -> return $ DoE $ map NoBindS exps -- - unIdent :: Ident -> String - unIdent (Ident s) = s - --bindingPattern :: Binding -> Q (Pat, [(Ident, Exp)]) --bindingPattern (BindAs i@(Ident s) b) = do -- name <- newName s -- (pattern, scope) <- bindingPattern b -- return (AsP name pattern, (i, VarE name):scope) --bindingPattern (BindVar i@(Ident s)) -- | s == "_" = return (WildP, []) -- | all isDigit s = do -- return (LitP $ IntegerL $ read s, []) -- | otherwise = do -- name <- newName s -- return (VarP name, [(i, VarE name)]) --bindingPattern (BindTuple is) = do -- (patterns, scopes) <- fmap unzip $ mapM bindingPattern is -- return (TupP patterns, concat scopes) --bindingPattern (BindList is) = do -- (patterns, scopes) <- fmap unzip $ mapM bindingPattern is -- return (ListP patterns, concat scopes) --bindingPattern (BindConstr con is) = do -- (patterns, scopes) <- fmap unzip $ mapM bindingPattern is -- return (ConP (mkConName con) patterns, concat scopes) --bindingPattern (BindRecord con fields wild) = do -- let f (Ident field,b) = -- do (p,s) <- bindingPattern b -- return ((mkName field,p),s) -- (patterns, scopes) <- fmap unzip $ mapM f fields -- (patterns1, scopes1) <- if wild -- then bindWildFields con $ map fst fields -- else return ([],[]) -- return (RecP (mkConName con) (patterns++patterns1), concat scopes ++ scopes1) -- - mkConName :: DataConstr -> Name - mkConName = mkName . conToStr - -@@ -158,257 +119,15 @@ conToStr :: DataConstr -> String - conToStr (DCUnqualified (Ident x)) = x - conToStr (DCQualified (Module xs) (Ident x)) = intercalate "." $ xs ++ [x] - ---- Wildcards bind all of the unbound fields to variables whose name ---- matches the field name. ---- ---- For example: data R = C { f1, f2 :: Int } ---- C {..} is equivalent to C {f1=f1, f2=f2} ---- C {f1 = a, ..} is equivalent to C {f1=a, f2=f2} ---- C {f2 = a, ..} is equivalent to C {f1=f1, f2=a} --bindWildFields :: DataConstr -> [Ident] -> Q ([(Name, Pat)], [(Ident, Exp)]) --bindWildFields conName fields = do -- fieldNames <- recordToFieldNames conName -- let available n = nameBase n `notElem` map unIdent fields -- let remainingFields = filter available fieldNames -- let mkPat n = do -- e <- newName (nameBase n) -- return ((n,VarP e), (Ident (nameBase n), VarE e)) -- fmap unzip $ mapM mkPat remainingFields -- ---- Important note! reify will fail if the record type is defined in the ---- same module as the reify is used. This means quasi-quoted Hamlet ---- literals will not be able to use wildcards to match record types ---- defined in the same module. --recordToFieldNames :: DataConstr -> Q [Name] --recordToFieldNames conStr = do -- -- use 'lookupValueName' instead of just using 'mkName' so we reify the -- -- data constructor and not the type constructor if their names match. -- Just conName <- lookupValueName $ conToStr conStr -- DataConI _ _ typeName _ <- reify conName -- TyConI (DataD _ _ _ cons _) <- reify typeName -- [fields] <- return [fields | RecC name fields <- cons, name == conName] -- return [fieldName | (fieldName, _, _) <- fields] -- --docToExp :: Env -> HamletRules -> Scope -> Doc -> Q Exp --docToExp env hr scope (DocForall list idents inside) = do -- let list' = derefToExp scope list -- (pat, extraScope) <- bindingPattern idents -- let scope' = extraScope ++ scope -- mh <- [|F.mapM_|] -- inside' <- docsToExp env hr scope' inside -- let lam = LamE [pat] inside' -- return $ mh `AppE` lam `AppE` list' --docToExp env hr scope (DocWith [] inside) = do -- inside' <- docsToExp env hr scope inside -- return $ inside' --docToExp env hr scope (DocWith ((deref, idents):dis) inside) = do -- let deref' = derefToExp scope deref -- (pat, extraScope) <- bindingPattern idents -- let scope' = extraScope ++ scope -- inside' <- docToExp env hr scope' (DocWith dis inside) -- let lam = LamE [pat] inside' -- return $ lam `AppE` deref' --docToExp env hr scope (DocMaybe val idents inside mno) = do -- let val' = derefToExp scope val -- (pat, extraScope) <- bindingPattern idents -- let scope' = extraScope ++ scope -- inside' <- docsToExp env hr scope' inside -- let inside'' = LamE [pat] inside' -- ninside' <- case mno of -- Nothing -> [|Nothing|] -- Just no -> do -- no' <- docsToExp env hr scope no -- j <- [|Just|] -- return $ j `AppE` no' -- mh <- [|maybeH|] -- return $ mh `AppE` val' `AppE` inside'' `AppE` ninside' --docToExp env hr scope (DocCond conds final) = do -- conds' <- mapM go conds -- final' <- case final of -- Nothing -> [|Nothing|] -- Just f -> do -- f' <- docsToExp env hr scope f -- j <- [|Just|] -- return $ j `AppE` f' -- ch <- [|condH|] -- return $ ch `AppE` ListE conds' `AppE` final' -- where -- go :: (Deref, [Doc]) -> Q Exp -- go (d, docs) = do -- let d' = derefToExp ((specialOrIdent, VarE 'or):scope) d -- docs' <- docsToExp env hr scope docs -- return $ TupE [d', docs'] --docToExp env hr scope (DocCase deref cases) = do -- let exp_ = derefToExp scope deref -- matches <- mapM toMatch cases -- return $ CaseE exp_ matches -- where -- toMatch :: (Binding, [Doc]) -> Q Match -- toMatch (idents, inside) = do -- (pat, extraScope) <- bindingPattern idents -- let scope' = extraScope ++ scope -- insideExp <- docsToExp env hr scope' inside -- return $ Match pat (NormalB insideExp) [] --docToExp env hr v (DocContent c) = contentToExp env hr v c -- --contentToExp :: Env -> HamletRules -> Scope -> Content -> Q Exp --contentToExp _ hr _ (ContentRaw s) = do -- os <- [|preEscapedText . pack|] -- let s' = LitE $ StringL s -- return $ hrFromHtml hr `AppE` (os `AppE` s') --contentToExp _ hr scope (ContentVar d) = do -- str <- [|toHtml|] -- return $ hrFromHtml hr `AppE` (str `AppE` derefToExp scope d) --contentToExp env hr scope (ContentUrl hasParams d) = -- case urlRender env of -- Nothing -> error "URL interpolation used, but no URL renderer provided" -- Just wrender -> wrender $ \render -> do -- let render' = return render -- ou <- if hasParams -- then [|\(u, p) -> $(render') u p|] -- else [|\u -> $(render') u []|] -- let d' = derefToExp scope d -- pet <- [|toHtml|] -- return $ hrFromHtml hr `AppE` (pet `AppE` (ou `AppE` d')) --contentToExp env hr scope (ContentEmbed d) = hrEmbed hr env $ derefToExp scope d --contentToExp env hr scope (ContentMsg d) = -- case msgRender env of -- Nothing -> error "Message interpolation used, but no message renderer provided" -- Just wrender -> wrender $ \render -> -- return $ hrFromHtml hr `AppE` (render `AppE` derefToExp scope d) --contentToExp _ hr scope (ContentAttrs d) = do -- html <- [|attrsToHtml . toAttributes|] -- return $ hrFromHtml hr `AppE` (html `AppE` derefToExp scope d) -- --shamlet :: QuasiQuoter --shamlet = hamletWithSettings htmlRules defaultHamletSettings -- --xshamlet :: QuasiQuoter --xshamlet = hamletWithSettings htmlRules xhtmlHamletSettings -- --htmlRules :: Q HamletRules --htmlRules = do -- i <- [|id|] -- return $ HamletRules i ($ (Env Nothing Nothing)) (\_ b -> return b) -- --hamlet :: QuasiQuoter --hamlet = hamletWithSettings hamletRules defaultHamletSettings -- --xhamlet :: QuasiQuoter --xhamlet = hamletWithSettings hamletRules xhtmlHamletSettings -- - asHtmlUrl :: HtmlUrl url -> HtmlUrl url - asHtmlUrl = id - --hamletRules :: Q HamletRules --hamletRules = do -- i <- [|id|] -- let ur f = do -- r <- newName "_render" -- let env = Env -- { urlRender = Just ($ (VarE r)) -- , msgRender = Nothing -- } -- h <- f env -- return $ LamE [VarP r] h -- return $ HamletRules i ur em -- where -- em (Env (Just urender) Nothing) e = do -- asHtmlUrl' <- [|asHtmlUrl|] -- urender $ \ur' -> return ((asHtmlUrl' `AppE` e) `AppE` ur') -- em _ _ = error "bad Env" -- --ihamlet :: QuasiQuoter --ihamlet = hamletWithSettings ihamletRules defaultHamletSettings -- --ihamletRules :: Q HamletRules --ihamletRules = do -- i <- [|id|] -- let ur f = do -- u <- newName "_urender" -- m <- newName "_mrender" -- let env = Env -- { urlRender = Just ($ (VarE u)) -- , msgRender = Just ($ (VarE m)) -- } -- h <- f env -- return $ LamE [VarP m, VarP u] h -- return $ HamletRules i ur em -- where -- em (Env (Just urender) (Just mrender)) e = -- urender $ \ur' -> mrender $ \mr -> return (e `AppE` mr `AppE` ur') -- em _ _ = error "bad Env" -- --hamletWithSettings :: Q HamletRules -> HamletSettings -> QuasiQuoter --hamletWithSettings hr set = -- QuasiQuoter -- { quoteExp = hamletFromString hr set -- } -- --data HamletRules = HamletRules -- { hrFromHtml :: Exp -- , hrWithEnv :: (Env -> Q Exp) -> Q Exp -- , hrEmbed :: Env -> Exp -> Q Exp -- } -- --data Env = Env -- { urlRender :: Maybe ((Exp -> Q Exp) -> Q Exp) -- , msgRender :: Maybe ((Exp -> Q Exp) -> Q Exp) -- } -- --hamletFromString :: Q HamletRules -> HamletSettings -> String -> Q Exp --hamletFromString qhr set s = do -- hr <- qhr -- hrWithEnv hr $ \env -> docsToExp env hr [] $ docFromString set s -- - docFromString :: HamletSettings -> String -> [Doc] - docFromString set s = - case parseDoc set s of - Error s' -> error s' - Ok (_, d) -> d - --hamletFileWithSettings :: Q HamletRules -> HamletSettings -> FilePath -> Q Exp --hamletFileWithSettings qhr set fp = do --#ifdef GHC_7_4 -- qAddDependentFile fp --#endif -- contents <- fmap TL.unpack $ qRunIO $ readUtf8File fp -- hamletFromString qhr set contents -- --hamletFile :: FilePath -> Q Exp --hamletFile = hamletFileWithSettings hamletRules defaultHamletSettings -- --hamletFileReload :: FilePath -> Q Exp --hamletFileReload = hamletFileReloadWithSettings runtimeRules defaultHamletSettings -- where runtimeRules = HamletRuntimeRules { hrrI18n = False } -- --ihamletFileReload :: FilePath -> Q Exp --ihamletFileReload = hamletFileReloadWithSettings runtimeRules defaultHamletSettings -- where runtimeRules = HamletRuntimeRules { hrrI18n = True } -- --xhamletFile :: FilePath -> Q Exp --xhamletFile = hamletFileWithSettings hamletRules xhtmlHamletSettings -- --shamletFile :: FilePath -> Q Exp --shamletFile = hamletFileWithSettings htmlRules defaultHamletSettings -- --xshamletFile :: FilePath -> Q Exp --xshamletFile = hamletFileWithSettings htmlRules xhtmlHamletSettings -- --ihamletFile :: FilePath -> Q Exp --ihamletFile = hamletFileWithSettings ihamletRules defaultHamletSettings -- --varName :: Scope -> String -> Exp --varName _ "" = error "Illegal empty varName" --varName scope v@(_:_) = fromMaybe (strToExp v) $ lookup (Ident v) scope -- --strToExp :: String -> Exp --strToExp s@(c:_) -- | all isDigit s = LitE $ IntegerL $ read s -- | isUpper c = ConE $ mkName s -- | otherwise = VarE $ mkName s --strToExp "" = error "strToExp on empty string" -- - -- | Checks for truth in the left value in each pair in the first argument. If - -- a true exists, then the corresponding right action is performed. Only the - -- first is performed. In there are no true values, then the second argument is -@@ -461,33 +180,6 @@ data HamletRuntimeRules = HamletRuntimeRules { - hrrI18n :: Bool - } - --hamletFileReloadWithSettings :: HamletRuntimeRules -- -> HamletSettings -> FilePath -> Q Exp --hamletFileReloadWithSettings hrr settings fp = do -- s <- readFileQ fp -- let b = hamletUsedIdentifiers settings s -- c <- mapM vtToExp b -- rt <- if hrrI18n hrr -- then [|hamletRuntimeMsg settings fp|] -- else [|hamletRuntime settings fp|] -- return $ rt `AppE` ListE c -- where -- vtToExp :: (Deref, VarType) -> Q Exp -- vtToExp (d, vt) = do -- d' <- lift d -- c' <- toExp vt -- return $ TupE [d', c' `AppE` derefToExp [] d] -- where -- toExp = c -- where -- c :: VarType -> Q Exp -- c VTAttrs = [|EPlain . attrsToHtml . toAttributes|] -- c VTPlain = [|EPlain . toHtml|] -- c VTUrl = [|EUrl|] -- c VTUrlParam = [|EUrlParam|] -- c VTMixin = [|\r -> EMixin $ \c -> r c|] -- c VTMsg = [|EMsg|] -- - -- move to Shakespeare.Base? - readFileUtf8 :: FilePath -> IO String - readFileUtf8 fp = fmap TL.unpack $ readUtf8File fp -diff --git a/Text/Julius.hs b/Text/Julius.hs -index 8c15a99..47b42fd 100644 ---- a/Text/Julius.hs -+++ b/Text/Julius.hs -@@ -14,17 +14,9 @@ module Text.Julius - -- ** Template-Reading Functions - -- | These QuasiQuoter and Template Haskell methods return values of - -- type @'JavascriptUrl' url@. See the Yesod book for details. -- js -- , julius -- , juliusFile -- , jsFile -- , juliusFileDebug -- , jsFileDebug -- , juliusFileReload -- , jsFileReload - - -- * Datatypes -- , JavascriptUrl -+ JavascriptUrl - , Javascript (..) - , RawJavascript (..) - -@@ -37,9 +29,9 @@ module Text.Julius - , renderJavascriptUrl - - -- ** internal, used by 'Text.Coffee' -- , javascriptSettings -+ --, javascriptSettings - -- ** internal -- , juliusUsedIdentifiers -+ --, juliusUsedIdentifiers - , asJavascriptUrl - ) where - -@@ -102,48 +94,3 @@ instance RawJS TL.Text where rawJS = RawJavascript . fromLazyText - instance RawJS Builder where rawJS = RawJavascript - instance RawJS Bool where rawJS = RawJavascript . unJavascript . toJavascript - --javascriptSettings :: Q ShakespeareSettings --javascriptSettings = do -- toJExp <- [|toJavascript|] -- wrapExp <- [|Javascript|] -- unWrapExp <- [|unJavascript|] -- asJavascriptUrl' <- [|asJavascriptUrl|] -- return $ defaultShakespeareSettings { toBuilder = toJExp -- , wrap = wrapExp -- , unwrap = unWrapExp -- , modifyFinalValue = Just asJavascriptUrl' -- } -- --js, julius :: QuasiQuoter --js = QuasiQuoter { quoteExp = \s -> do -- rs <- javascriptSettings -- quoteExp (shakespeare rs) s -- } -- --julius = js -- --jsFile, juliusFile :: FilePath -> Q Exp --jsFile fp = do -- rs <- javascriptSettings -- shakespeareFile rs fp -- --juliusFile = jsFile -- -- --jsFileReload, juliusFileReload :: FilePath -> Q Exp --jsFileReload fp = do -- rs <- javascriptSettings -- shakespeareFileReload rs fp -- --juliusFileReload = jsFileReload -- --jsFileDebug, juliusFileDebug :: FilePath -> Q Exp --juliusFileDebug = jsFileReload --{-# DEPRECATED juliusFileDebug "Please use juliusFileReload instead." #-} --jsFileDebug = jsFileReload --{-# DEPRECATED jsFileDebug "Please use jsFileReload instead." #-} -- ---- | Determine which identifiers are used by the given template, useful for ---- creating systems like yesod devel. --juliusUsedIdentifiers :: String -> [(Deref, VarType)] --juliusUsedIdentifiers = shakespeareUsedIdentifiers defaultShakespeareSettings -diff --git a/Text/Lucius.hs b/Text/Lucius.hs -index 3226b79..fd0b7be 100644 ---- a/Text/Lucius.hs -+++ b/Text/Lucius.hs -@@ -9,13 +9,13 @@ - {-# OPTIONS_GHC -fno-warn-missing-fields #-} - module Text.Lucius - ( -- * Parsing -- lucius -- , luciusFile -- , luciusFileDebug -- , luciusFileReload -+ -- lucius -+ --, luciusFile -+ --, luciusFileDebug -+ --, luciusFileReload - -- ** Mixins -- , luciusMixin -- , Mixin -+ --, luciusMixin -+ Mixin - -- ** Runtime - , luciusRT - , luciusRT' -@@ -37,15 +37,12 @@ module Text.Lucius - , colorRed - , colorBlack - -- ** Size -- , mkSize -+ --, mkSize - , AbsoluteUnit (..) - , AbsoluteSize (..) - , absoluteSize -- , EmSize (..) -- , ExSize (..) - , PercentageSize (..) - , percentageSize -- , PixelSize (..) - -- * Internal - , parseTopLevels - , luciusUsedIdentifiers -@@ -72,13 +69,6 @@ import Text.Shakespeare (VarType) - -- - -- >>> renderCss ([lucius|foo{bar:baz}|] undefined) - -- "foo{bar:baz}" --lucius :: QuasiQuoter --lucius = QuasiQuoter { quoteExp = luciusFromString } -- --luciusFromString :: String -> Q Exp --luciusFromString s = -- topLevelsToCassius -- $ either (error . show) id $ parse parseTopLevels s s - - whiteSpace :: Parser () - whiteSpace = many whiteSpace1 >> return () -@@ -219,18 +209,6 @@ parseComment = do - _ <- manyTill anyChar $ try $ string "*/" - return $ ContentRaw "" - --luciusFile :: FilePath -> Q Exp --luciusFile fp = do --#ifdef GHC_7_4 -- qAddDependentFile fp --#endif -- contents <- fmap TL.unpack $ qRunIO $ readUtf8File fp -- luciusFromString contents -- --luciusFileDebug, luciusFileReload :: FilePath -> Q Exp --luciusFileDebug = cssFileDebug False [|parseTopLevels|] parseTopLevels --luciusFileReload = luciusFileDebug -- - parseTopLevels :: Parser [TopLevel Unresolved] - parseTopLevels = - go id -@@ -379,14 +357,3 @@ luciusRTMinified tl scope = either Left (Right . renderCss . CssNoWhitespace) $ - luciusUsedIdentifiers :: String -> [(Deref, VarType)] - luciusUsedIdentifiers = cssUsedIdentifiers False parseTopLevels - --luciusMixin :: QuasiQuoter --luciusMixin = QuasiQuoter { quoteExp = luciusMixinFromString } -- --luciusMixinFromString :: String -> Q Exp --luciusMixinFromString s' = do -- r <- newName "_render" -- case fmap compressBlock $ parse parseBlock s s of -- Left e -> error $ show e -- Right block -> blockToMixin r [] block -- where -- s = concat ["mixin{", s', "}"] -diff --git a/Text/Roy.hs b/Text/Roy.hs -index 6e5e246..a08b019 100644 ---- a/Text/Roy.hs -+++ b/Text/Roy.hs -@@ -39,12 +39,12 @@ module Text.Roy - -- ** Template-Reading Functions - -- | These QuasiQuoter and Template Haskell methods return values of - -- type @'JavascriptUrl' url@. See the Yesod book for details. -- roy -- , royFile -- , royFileReload -+ -- roy -+ --, royFile -+ --, royFileReload - - #ifdef TEST_EXPORT -- , roySettings -+ --, roySettings - #endif - ) where - -@@ -52,47 +52,3 @@ import Language.Haskell.TH.Quote (QuasiQuoter (..)) - import Language.Haskell.TH.Syntax - import Text.Shakespeare - import Text.Julius -- ---- | The Roy language compiles down to Javascript. ---- We do this compilation once at compile time to avoid needing to do it during the request. ---- We call this a preConversion because other shakespeare modules like Lucius use Haskell to compile during the request instead rather than a system call. --roySettings :: Q ShakespeareSettings --roySettings = do -- jsettings <- javascriptSettings -- return $ jsettings { varChar = '#' -- , preConversion = Just PreConvert { -- preConvert = ReadProcess "roy" ["--stdio", "--browser"] -- , preEscapeIgnoreBalanced = "'\"" -- , preEscapeIgnoreLine = "//" -- , wrapInsertion = Just WrapInsertion { -- wrapInsertionIndent = Just " " -- , wrapInsertionStartBegin = "(\\" -- , wrapInsertionSeparator = " " -- , wrapInsertionStartClose = " ->\n" -- , wrapInsertionEnd = ")" -- , wrapInsertionAddParens = True -- } -- } -- } -- ---- | Read inline, quasiquoted Roy. --roy :: QuasiQuoter --roy = QuasiQuoter { quoteExp = \s -> do -- rs <- roySettings -- quoteExp (shakespeare rs) s -- } -- ---- | Read in a Roy template file. This function reads the file once, at ---- compile time. --royFile :: FilePath -> Q Exp --royFile fp = do -- rs <- roySettings -- shakespeareFile rs fp -- ---- | Read in a Roy template file. This impure function uses ---- unsafePerformIO to re-read the file on every call, allowing for rapid ---- iteration. --royFileReload :: FilePath -> Q Exp --royFileReload fp = do -- rs <- roySettings -- shakespeareFileReload rs fp diff --git a/Text/Shakespeare.hs b/Text/Shakespeare.hs -index 98c0c2d..2f6431b 100644 +index 68e344f..97361a2 100644 --- a/Text/Shakespeare.hs +++ b/Text/Shakespeare.hs -@@ -16,12 +16,12 @@ module Text.Shakespeare +@@ -14,12 +14,12 @@ module Text.Shakespeare , WrapInsertion (..) , PreConversion (..) , defaultShakespeareSettings @@ -1051,7 +30,7 @@ index 98c0c2d..2f6431b 100644 , RenderUrl , VarType (..) , Deref -@@ -153,38 +153,6 @@ defaultShakespeareSettings = ShakespeareSettings { +@@ -154,38 +154,6 @@ defaultShakespeareSettings = ShakespeareSettings { , modifyFinalValue = Nothing } @@ -1090,7 +69,7 @@ index 98c0c2d..2f6431b 100644 type QueryParameters = [(TS.Text, TS.Text)] type RenderUrl url = (url -> QueryParameters -> TS.Text) -@@ -348,6 +316,7 @@ pack' = TS.pack +@@ -349,6 +317,7 @@ pack' = TS.pack {-# NOINLINE pack' #-} #endif @@ -1098,7 +77,7 @@ index 98c0c2d..2f6431b 100644 contentsToShakespeare :: ShakespeareSettings -> [Content] -> Q Exp contentsToShakespeare rs a = do r <- newName "_render" -@@ -399,16 +368,19 @@ shakespeareFile r fp = +@@ -400,16 +369,19 @@ shakespeareFile r fp = qAddDependentFile fp >> #endif readFileQ fp >>= shakespeareFromString r @@ -1118,7 +97,7 @@ index 98c0c2d..2f6431b 100644 data VarExp url = EPlain Builder | EUrl url -@@ -417,8 +389,10 @@ data VarExp url = EPlain Builder +@@ -418,8 +390,10 @@ data VarExp url = EPlain Builder -- | Determine which identifiers are used by the given template, useful for -- creating systems like yesod devel. @@ -1129,7 +108,7 @@ index 98c0c2d..2f6431b 100644 type MTime = UTCTime -@@ -435,28 +409,6 @@ insertReloadMap :: FilePath -> (MTime, [Content]) -> IO [Content] +@@ -436,28 +410,6 @@ insertReloadMap :: FilePath -> (MTime, [Content]) -> IO [Content] insertReloadMap fp (mt, content) = atomicModifyIORef reloadMapRef (\reloadMap -> (M.insert fp (mt, content) reloadMap, content)) @@ -1197,242 +176,6 @@ index a0e983c..23b4692 100644 derefParens, derefCurlyBrackets :: UserParser a Deref derefParens = between (char '(') (char ')') parseDeref derefCurlyBrackets = between (char '{') (char '}') parseDeref -diff --git a/Text/Shakespeare/Text.hs b/Text/Shakespeare/Text.hs -index f490d7f..5154618 100644 ---- a/Text/Shakespeare/Text.hs -+++ b/Text/Shakespeare/Text.hs -@@ -7,20 +7,20 @@ module Text.Shakespeare.Text - ( TextUrl - , ToText (..) - , renderTextUrl -- , stext -- , text -- , textFile -- , textFileDebug -- , textFileReload -- , st -- | strict text -- , lt -- | lazy text, same as stext :) -- , sbt -- | strict text whose left edge is aligned with bar ('|') -- , lbt -- | lazy text, whose left edge is aligned with bar ('|') -+ --, stext -+ --, text -+ --, textFile -+ --, textFileDebug -+ --, textFileReload -+ --, st -- | strict text -+ --, lt -- | lazy text, same as stext :) -+ --, sbt -- | strict text whose left edge is aligned with bar ('|') -+ --, lbt -- | lazy text, whose left edge is aligned with bar ('|') - -- * Yesod code generation -- , codegen -- , codegenSt -- , codegenFile -- , codegenFileReload -+ --, codegen -+ --, codegenSt -+ --, codegenFile -+ --, codegenFileReload - ) where - - import Language.Haskell.TH.Quote (QuasiQuoter (..)) -@@ -59,66 +59,12 @@ settings = do - } - - --stext, lt, st, text, lbt, sbt :: QuasiQuoter --stext = -- QuasiQuoter { quoteExp = \s -> do -- rs <- settings -- render <- [|toLazyText|] -- rendered <- shakespeareFromString rs { justVarInterpolation = True } s -- return (render `AppE` rendered) -- } --lt = stext -- --st = -- QuasiQuoter { quoteExp = \s -> do -- rs <- settings -- render <- [|TL.toStrict . toLazyText|] -- rendered <- shakespeareFromString rs { justVarInterpolation = True } s -- return (render `AppE` rendered) -- } -- --text = QuasiQuoter { quoteExp = \s -> do -- rs <- settings -- quoteExp (shakespeare rs) $ filter (/='\r') s -- } -- - dropBar :: [TL.Text] -> [TL.Text] - dropBar [] = [] - dropBar (c:cx) = c:dropBar' cx - where - dropBar' txt = reverse $ drop 1 $ map (TL.drop 1 . TL.dropWhile (/= '|')) $ reverse txt - --lbt = -- QuasiQuoter { quoteExp = \s -> do -- rs <- settings -- render <- [|TL.unlines . dropBar . TL.lines . toLazyText|] -- rendered <- shakespeareFromString rs { justVarInterpolation = True } s -- return (render `AppE` rendered) -- } -- --sbt = -- QuasiQuoter { quoteExp = \s -> do -- rs <- settings -- render <- [|TL.toStrict . TL.unlines . dropBar . TL.lines . toLazyText|] -- rendered <- shakespeareFromString rs { justVarInterpolation = True } s -- return (render `AppE` rendered) -- } -- --textFile :: FilePath -> Q Exp --textFile fp = do -- rs <- settings -- shakespeareFile rs fp -- -- --textFileDebug :: FilePath -> Q Exp --textFileDebug = textFileReload --{-# DEPRECATED textFileDebug "Please use textFileReload instead" #-} -- --textFileReload :: FilePath -> Q Exp --textFileReload fp = do -- rs <- settings -- shakespeareFileReload rs fp -- - -- | codegen is designed for generating Yesod code, including templates - -- So it uses different interpolation characters that won't clash with templates. - codegenSettings :: Q ShakespeareSettings -@@ -135,40 +81,3 @@ codegenSettings = do - , justVarInterpolation = True -- always! - } - ---- | codegen is designed for generating Yesod code, including templates ---- So it uses different interpolation characters that won't clash with templates. ---- You can use the normal text quasiquoters to generate code --codegen :: QuasiQuoter --codegen = -- QuasiQuoter { quoteExp = \s -> do -- rs <- codegenSettings -- render <- [|toLazyText|] -- rendered <- shakespeareFromString rs { justVarInterpolation = True } s -- return (render `AppE` rendered) -- } -- ---- | Generates strict Text ---- codegen is designed for generating Yesod code, including templates ---- So it uses different interpolation characters that won't clash with templates. --codegenSt :: QuasiQuoter --codegenSt = -- QuasiQuoter { quoteExp = \s -> do -- rs <- codegenSettings -- render <- [|TL.toStrict . toLazyText|] -- rendered <- shakespeareFromString rs { justVarInterpolation = True } s -- return (render `AppE` rendered) -- } -- --codegenFileReload :: FilePath -> Q Exp --codegenFileReload fp = do -- rs <- codegenSettings -- render <- [|TL.toStrict . toLazyText|] -- rendered <- shakespeareFileReload rs{ justVarInterpolation = True } fp -- return (render `AppE` rendered) -- --codegenFile :: FilePath -> Q Exp --codegenFile fp = do -- rs <- codegenSettings -- render <- [|TL.toStrict . toLazyText|] -- rendered <- shakespeareFile rs{ justVarInterpolation = True } fp -- return (render `AppE` rendered) -diff --git a/Text/TypeScript.hs b/Text/TypeScript.hs -index 85f6abd..3188272 100644 ---- a/Text/TypeScript.hs -+++ b/Text/TypeScript.hs -@@ -57,12 +57,12 @@ module Text.TypeScript - -- ** Template-Reading Functions - -- | These QuasiQuoter and Template Haskell methods return values of - -- type @'JavascriptUrl' url@. See the Yesod book for details. -- tsc -- , typeScriptFile -- , typeScriptFileReload -+ -- tsc -+ --, typeScriptFile -+ --, typeScriptFileReload - - #ifdef TEST_EXPORT -- , typeScriptSettings -+ --, typeScriptSettings - #endif - ) where - -@@ -74,43 +74,3 @@ import Text.Julius - -- | The TypeScript language compiles down to Javascript. - -- We do this compilation once at compile time to avoid needing to do it during the request. - -- We call this a preConversion because other shakespeare modules like Lucius use Haskell to compile during the request instead rather than a system call. --typeScriptSettings :: Q ShakespeareSettings --typeScriptSettings = do -- jsettings <- javascriptSettings -- return $ jsettings { varChar = '#' -- , preConversion = Just PreConvert { -- preConvert = ReadProcess "sh" ["-c", "TMP_IN=$(mktemp XXXXXXXXXX.ts); TMP_OUT=$(mktemp XXXXXXXXXX.js); cat /dev/stdin > ${TMP_IN} && tsc --out ${TMP_OUT} ${TMP_IN} && cat ${TMP_OUT}; rm ${TMP_IN} && rm ${TMP_OUT}"] -- , preEscapeIgnoreBalanced = "'\"" -- , preEscapeIgnoreLine = "//" -- , wrapInsertion = Just WrapInsertion { -- wrapInsertionIndent = Nothing -- , wrapInsertionStartBegin = ";(function(" -- , wrapInsertionSeparator = ", " -- , wrapInsertionStartClose = "){" -- , wrapInsertionEnd = "})" -- , wrapInsertionAddParens = False -- } -- } -- } -- ---- | Read inline, quasiquoted TypeScript --tsc :: QuasiQuoter --tsc = QuasiQuoter { quoteExp = \s -> do -- rs <- typeScriptSettings -- quoteExp (shakespeare rs) s -- } -- ---- | Read in a TypeScript template file. This function reads the file once, at ---- compile time. --typeScriptFile :: FilePath -> Q Exp --typeScriptFile fp = do -- rs <- typeScriptSettings -- shakespeareFile rs fp -- ---- | Read in a TypeScript template file. This impure function uses ---- unsafePerformIO to re-read the file on every call, allowing for rapid ---- iteration. --typeScriptFileReload :: FilePath -> Q Exp --typeScriptFileReload fp = do -- rs <- typeScriptSettings -- shakespeareFileReload rs fp -diff --git a/shakespeare.cabal b/shakespeare.cabal -index 37029fc..2c4b557 100644 ---- a/shakespeare.cabal -+++ b/shakespeare.cabal -@@ -62,18 +62,16 @@ library - Text.Shakespeare.Base - Text.Shakespeare - Text.TypeScript -- other-modules: Text.Hamlet.Parse - Text.Css -+ Text.CssCommon -+ other-modules: Text.Hamlet.Parse - Text.MkSizeType - Text.IndentToBrace -- Text.CssCommon - ghc-options: -Wall - - if flag(test_export) - cpp-options: -DTEST_EXPORT - -- extensions: TemplateHaskell -- - if impl(ghc >= 7.4) - cpp-options: -DGHC_7_4 - -- -2.1.4 +2.1.1 diff --git a/standalone/no-th/haskell-patches/skein_hardcode_little-endian.patch b/standalone/no-th/haskell-patches/skein_hardcode_little-endian.patch new file mode 100644 index 000000000..7333742b0 --- /dev/null +++ b/standalone/no-th/haskell-patches/skein_hardcode_little-endian.patch @@ -0,0 +1,26 @@ +From 3a04b41ffce4e4e87b0fedd3a1e3434a3f06cc76 Mon Sep 17 00:00:00 2001 +From: foo +Date: Sun, 22 Sep 2013 00:18:12 +0000 +Subject: [PATCH] hardcode little endian + +This is the same as building with a cabal flag. + +--- + c_impl/optimized/skein_port.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/c_impl/optimized/skein_port.h b/c_impl/optimized/skein_port.h +index a2d0fc2..6929bb0 100644 +--- a/c_impl/optimized/skein_port.h ++++ b/c_impl/optimized/skein_port.h +@@ -45,6 +45,7 @@ typedef uint64_t u64b_t; /* 64-bit unsigned integer */ + * platform-specific code instead (e.g., for big-endian CPUs). + * + */ ++#define SKEIN_NEED_SWAP (0) + #ifndef SKEIN_NEED_SWAP /* compile-time "override" for endianness? */ + + #include "brg_endian.h" /* get endianness selection */ +-- +1.7.10.4 + 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 +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 -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 +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 -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 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 -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) + "
do { Text.Hamlet.condH -+ [((/=) (fvId view_a2d4p) bootstrapSubmitId, ++ [((/=) (fvId view_as0a) bootstrapSubmitId, + do { (asWidgetT . toWidget) + ((Text.Blaze.Internal.preEscapedText . T.pack) + "") })] + 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) + "") })] + 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) + "
"); -+ (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) "
") })] + (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) + "
") })) }; @@ -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) + ""); -+ (asWidgetT . toWidget) (toHtml tt_a2d5x); ++ (asWidgetT . toWidget) (toHtml tt_as0k); + (asWidgetT . toWidget) + ((Text.Blaze.Internal.preEscapedText . T.pack) "") }) + Nothing; + Text.Hamlet.maybeH + (fvErrors view) -+ (\ err_a2d5y ++ (\ err_as0l + -> do { (asWidgetT . toWidget) + ((Text.Blaze.Internal.preEscapedText . T.pack) + ""); -+ (asWidgetT . toWidget) (toHtml err_a2d5y); ++ (asWidgetT . toWidget) (toHtml err_as0l); + (asWidgetT . toWidget) + ((Text.Blaze.Internal.preEscapedText . T.pack) "") }) + 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) "") } + 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 - -|] -+ , 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) " Right a _ -> Left $ MsgInvalidNumber s @@ -317,7 +333,7 @@ index 5fe123e..42fd7d6 100644 -$newline never - -|] -+ , 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) " RenderMessage (HandlerSite m) FormMessage => Field m Day dayField = Field { fieldParse = parseHelper $ parseDate . unpack @@ -347,7 +363,7 @@ index 5fe123e..42fd7d6 100644 -$newline never - -|] -+ , 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) " 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 -- +- -|] -+ , 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) " RenderMessage (HandlerSite m) FormMessage => Field m Html htmlField = Field { fieldParse = parseHelper $ Right . preEscapedText . sanitizeBalance @@ -406,7 +420,7 @@ index 5fe123e..42fd7d6 100644 -$newline never -