aboutsummaryrefslogtreecommitdiff
path: root/Setup.hs
diff options
context:
space:
mode:
authorDaniel Gröber <dxld@darkboxed.org>2015-04-15 18:23:54 +0200
committerDaniel Gröber <dxld@darkboxed.org>2015-04-15 18:23:54 +0200
commit125908ae40d2b229926ed5ec57b52dd6a41d269e (patch)
tree580103328a32e98a84ad420ec7d1dad425ed1ba9 /Setup.hs
parent2136c4205d4246337bec3a96dbb08d5876bcbc03 (diff)
Fix X-Install-Target for older Cabal versions
Diffstat (limited to 'Setup.hs')
-rw-r--r--Setup.hs46
1 files changed, 38 insertions, 8 deletions
diff --git a/Setup.hs b/Setup.hs
index 05a0ae1..ecb7539 100644
--- a/Setup.hs
+++ b/Setup.hs
@@ -3,21 +3,52 @@
import Distribution.Simple
import Distribution.Simple.Setup
import Distribution.Simple.Install
+import Distribution.Simple.Register
import Distribution.Simple.InstallDirs as ID
import Distribution.Simple.LocalBuildInfo
import Distribution.PackageDescription
import Control.Applicative
+import Control.Monad
import Data.List
import Data.Maybe
import System.FilePath
main :: IO ()
-main = defaultMainWithHooks $ simpleUserHooks { copyHook = xInstallTargetHook }
-
-xInstallTargetHook ::
- PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO ()
-xInstallTargetHook pd lbi _uh cf = do
+main = defaultMainWithHooks $ simpleUserHooks {
+ instHook = inst,
+ copyHook = copy
+ }
+
+-- mostly copypasta from 'defaultInstallHook'
+inst ::
+ PackageDescription -> LocalBuildInfo -> UserHooks -> InstallFlags -> IO ()
+inst pd lbi _uf ifl = do
+ let copyFlags = defaultCopyFlags {
+ copyDistPref = installDistPref ifl,
+ copyDest = toFlag NoCopyDest,
+ copyVerbosity = installVerbosity ifl
+ }
+ xInstallTarget pd lbi (\pd' lbi' -> install pd' lbi' copyFlags)
+ let registerFlags = defaultRegisterFlags {
+ regDistPref = installDistPref ifl,
+ regInPlace = installInPlace ifl,
+ regPackageDB = installPackageDB ifl,
+ regVerbosity = installVerbosity ifl
+ }
+ when (hasLibs pd) $ register pd lbi registerFlags
+
+copy :: PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO ()
+copy pd lbi _uh cf =
+ xInstallTarget pd lbi (\pd' lbi' -> install pd' lbi' cf)
+
+
+
+xInstallTarget :: PackageDescription
+ -> LocalBuildInfo
+ -> (PackageDescription -> LocalBuildInfo -> IO ())
+ -> IO ()
+xInstallTarget pd lbi fn = do
let (extended, regular) = partition (isJust . installTarget) (executables pd)
let pd_regular = pd { executables = regular }
@@ -42,10 +73,9 @@ xInstallTargetHook pd lbi _uh cf = do
bindir = install_target''
}
}
+ fn pd_extended lbi'
- install pd_extended lbi' cf
-
- install pd_regular lbi cf
+ fn pd_regular lbi
where
installTarget :: Executable -> Maybe PathTemplate