summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--Utility/WebApp.hs3
-rw-r--r--Utility/Yesod.hs14
-rw-r--r--git-annex.cabal17
4 files changed, 32 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 89deedd65..3dcae1364 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@ CFLAGS=-Wall
GIT_ANNEX_TMP_BUILD_DIR?=tmp
IGNORE=-ignore-package monads-fd -ignore-package monads-tf
BASEFLAGS=-threaded -Wall $(IGNORE) -outputdir $(GIT_ANNEX_TMP_BUILD_DIR) -IUtility
-FEATURES=-DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBAPP
+FEATURES=-DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBAPP -DWITH_OLD_YESOD
bins=git-annex
mans=git-annex.1 git-annex-shell.1
diff --git a/Utility/WebApp.hs b/Utility/WebApp.hs
index be186baa2..14718d543 100644
--- a/Utility/WebApp.hs
+++ b/Utility/WebApp.hs
@@ -26,6 +26,7 @@ import Crypto.Random
import Data.Digest.Pure.SHA
import qualified Web.ClientSession as CS
import qualified Data.ByteString.Lazy as L
+import qualified Data.ByteString as B
import qualified Data.Text as T
import qualified Data.Text.Encoding as TE
import Blaze.ByteString.Builder.Char.Utf8 (fromText)
@@ -113,7 +114,7 @@ logRequest req = do
where
frombs v = toString $ L.fromChunks [v]
-lookupRequestField :: CI.CI Ascii -> Wai.Request -> Ascii
+lookupRequestField :: CI.CI B.ByteString -> Wai.Request -> B.ByteString
lookupRequestField k req = fromMaybe "" . lookup k $ Wai.requestHeaders req
{- Rather than storing a session key on disk, use a random key
diff --git a/Utility/Yesod.hs b/Utility/Yesod.hs
index 2d2c6c343..b6748f240 100644
--- a/Utility/Yesod.hs
+++ b/Utility/Yesod.hs
@@ -5,13 +5,27 @@
- Licensed under the GNU GPL version 3 or higher.
-}
+{-# LANGUAGE CPP #-}
+
module Utility.Yesod where
import Yesod.Default.Util
import Language.Haskell.TH.Syntax
+#ifndef WITH_OLD_YESOD
+import Data.Default (def)
+import Text.Hamlet
+#endif
widgetFile :: String -> Q Exp
+#ifdef WITH_OLD_YESOD
widgetFile = widgetFileNoReload
+#else
+widgetFile = widgetFileNoReload $ def
+ { wfsHamletSettings = defaultHamletSettings
+ { hamletNewlines = AlwaysNewlines
+ }
+ }
+#endif
hamletTemplate :: FilePath -> FilePath
hamletTemplate f = globFile "hamlet" f
diff --git a/git-annex.cabal b/git-annex.cabal
index ec96bdc32..cdac47bc7 100644
--- a/git-annex.cabal
+++ b/git-annex.cabal
@@ -40,6 +40,12 @@ Flag Assistant
Flag Webapp
Description: Enable git-annex webapp
+Flag CurrentYesod
+ Description: Using a current version of Yesod
+
+Flag OldYesod
+ Description: Using an old version of Yesod
+
Executable git-annex
Main-Is: git-annex.hs
Build-Depends: MissingH, hslogger, directory, filepath,
@@ -73,8 +79,15 @@ Executable git-annex
Build-Depends: dbus
CPP-Options: -DWITH_DBUS
- if flag(Webapp)
- Build-Depends: yesod, yesod-static, yesod-default, case-insensitive,
+ if flag(CurrentYesod)
+ Build-Depends: yesod-default (>= 1.1.0)
+
+ if flag(OldYesod)
+ Build-Depends: yesod-default (<= 1.0.1.1)
+ CPP-Options: -DWITH_OLD_YESOD
+
+ if flag(Webapp) && (flag(CurrentYesod) || flag(OldYesod))
+ Build-Depends: yesod, yesod-static, case-insensitive,
http-types, transformers, wai, wai-logger, warp, blaze-builder,
blaze-html, crypto-api, hamlet, clientsession,
template-haskell