support building with yesod-default 1.1.0

Old 1.0.1 version is still supported as well. Cabal autodetects
which version is available, but in the Makefile, WITH_OLD_YESOD
has to be configured appropriately.

I have not squashed all the $newline warnings with the new Yesod.
They should go away eventually anyway as Yesod moves past that transition.
This commit is contained in:
Joey Hess 2012-08-09 13:33:04 -04:00
parent 20203b45b9
commit be310ac4d0
4 changed files with 32 additions and 4 deletions

View file

@ -2,7 +2,7 @@ CFLAGS=-Wall
GIT_ANNEX_TMP_BUILD_DIR?=tmp GIT_ANNEX_TMP_BUILD_DIR?=tmp
IGNORE=-ignore-package monads-fd -ignore-package monads-tf IGNORE=-ignore-package monads-fd -ignore-package monads-tf
BASEFLAGS=-threaded -Wall $(IGNORE) -outputdir $(GIT_ANNEX_TMP_BUILD_DIR) -IUtility 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 bins=git-annex
mans=git-annex.1 git-annex-shell.1 mans=git-annex.1 git-annex-shell.1

View file

@ -26,6 +26,7 @@ import Crypto.Random
import Data.Digest.Pure.SHA import Data.Digest.Pure.SHA
import qualified Web.ClientSession as CS import qualified Web.ClientSession as CS
import qualified Data.ByteString.Lazy as L import qualified Data.ByteString.Lazy as L
import qualified Data.ByteString as B
import qualified Data.Text as T import qualified Data.Text as T
import qualified Data.Text.Encoding as TE import qualified Data.Text.Encoding as TE
import Blaze.ByteString.Builder.Char.Utf8 (fromText) import Blaze.ByteString.Builder.Char.Utf8 (fromText)
@ -113,7 +114,7 @@ logRequest req = do
where where
frombs v = toString $ L.fromChunks [v] 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 lookupRequestField k req = fromMaybe "" . lookup k $ Wai.requestHeaders req
{- Rather than storing a session key on disk, use a random key {- Rather than storing a session key on disk, use a random key

View file

@ -5,13 +5,27 @@
- Licensed under the GNU GPL version 3 or higher. - Licensed under the GNU GPL version 3 or higher.
-} -}
{-# LANGUAGE CPP #-}
module Utility.Yesod where module Utility.Yesod where
import Yesod.Default.Util import Yesod.Default.Util
import Language.Haskell.TH.Syntax import Language.Haskell.TH.Syntax
#ifndef WITH_OLD_YESOD
import Data.Default (def)
import Text.Hamlet
#endif
widgetFile :: String -> Q Exp widgetFile :: String -> Q Exp
#ifdef WITH_OLD_YESOD
widgetFile = widgetFileNoReload widgetFile = widgetFileNoReload
#else
widgetFile = widgetFileNoReload $ def
{ wfsHamletSettings = defaultHamletSettings
{ hamletNewlines = AlwaysNewlines
}
}
#endif
hamletTemplate :: FilePath -> FilePath hamletTemplate :: FilePath -> FilePath
hamletTemplate f = globFile "hamlet" f hamletTemplate f = globFile "hamlet" f

View file

@ -40,6 +40,12 @@ Flag Assistant
Flag Webapp Flag Webapp
Description: Enable git-annex 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 Executable git-annex
Main-Is: git-annex.hs Main-Is: git-annex.hs
Build-Depends: MissingH, hslogger, directory, filepath, Build-Depends: MissingH, hslogger, directory, filepath,
@ -73,8 +79,15 @@ Executable git-annex
Build-Depends: dbus Build-Depends: dbus
CPP-Options: -DWITH_DBUS CPP-Options: -DWITH_DBUS
if flag(Webapp) if flag(CurrentYesod)
Build-Depends: yesod, yesod-static, yesod-default, case-insensitive, 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, http-types, transformers, wai, wai-logger, warp, blaze-builder,
blaze-html, crypto-api, hamlet, clientsession, blaze-html, crypto-api, hamlet, clientsession,
template-haskell template-haskell