Setup.hs: remove useless stuff
This commit is contained in:
parent
8be4cdfe5f
commit
c80706cbb5
148
Setup.hs
148
Setup.hs
@ -18,7 +18,6 @@ import Data.Monoid
|
|||||||
import System.Process
|
import System.Process
|
||||||
import System.Exit
|
import System.Exit
|
||||||
import System.FilePath
|
import System.FilePath
|
||||||
import Text.ParserCombinators.ReadP
|
|
||||||
|
|
||||||
import SetupCompat
|
import SetupCompat
|
||||||
|
|
||||||
@ -26,11 +25,6 @@ main :: IO ()
|
|||||||
main = defaultMainWithHooks $ simpleUserHooks {
|
main = defaultMainWithHooks $ simpleUserHooks {
|
||||||
confHook = \(gpd, hbi) cf ->
|
confHook = \(gpd, hbi) cf ->
|
||||||
xBuildDependsLike <$> (confHook simpleUserHooks) (gpd, hbi) cf
|
xBuildDependsLike <$> (confHook simpleUserHooks) (gpd, hbi) cf
|
||||||
|
|
||||||
, instHook = inst
|
|
||||||
, copyHook = copy
|
|
||||||
|
|
||||||
-- , postConf = sanityCheckCabalVersions
|
|
||||||
}
|
}
|
||||||
|
|
||||||
xBuildDependsLike :: LocalBuildInfo -> LocalBuildInfo
|
xBuildDependsLike :: LocalBuildInfo -> LocalBuildInfo
|
||||||
@ -58,145 +52,3 @@ xBuildDependsLike lbi =
|
|||||||
flip lookup deps =<< read <$> lookup "x-build-depends-like" fields
|
flip lookup deps =<< read <$> lookup "x-build-depends-like" fields
|
||||||
where
|
where
|
||||||
fields = customFieldsBI (componentBuildInfo comp)
|
fields = customFieldsBI (componentBuildInfo comp)
|
||||||
|
|
||||||
-- 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 }
|
|
||||||
|
|
||||||
_ <- flip mapM extended $ \exe -> do
|
|
||||||
putStrLn $ "extended " ++ show (exeName exe)
|
|
||||||
|
|
||||||
let
|
|
||||||
idirtpl = installDirTemplates lbi
|
|
||||||
env = installDirsTemplateEnv idirtpl
|
|
||||||
libexecdir' = fromPathTemplate (libexecdir idirtpl)
|
|
||||||
|
|
||||||
pd_extended = onlyExePackageDesc [exe] pd
|
|
||||||
install_target = fromJustNote "xInstallTarget" $ installTarget exe
|
|
||||||
install_target' = ID.substPathTemplate env install_target
|
|
||||||
-- $libexec isn't a real thing :/ so we have to simulate it
|
|
||||||
install_target'' = substLibExec' libexecdir' install_target'
|
|
||||||
|
|
||||||
let lbi' = lbi {
|
|
||||||
installDirTemplates =
|
|
||||||
(installDirTemplates lbi) {
|
|
||||||
bindir = install_target''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fn pd_extended lbi'
|
|
||||||
|
|
||||||
fn pd_regular lbi
|
|
||||||
|
|
||||||
where
|
|
||||||
installTarget :: Executable -> Maybe PathTemplate
|
|
||||||
installTarget exe =
|
|
||||||
toPathTemplate <$> lookup "x-install-target" (customFieldsBI $ buildInfo exe)
|
|
||||||
|
|
||||||
substLibExec libexecdir "$libexecdir" = libexecdir
|
|
||||||
substLibExec _ comp = comp
|
|
||||||
|
|
||||||
substLibExec' dir =
|
|
||||||
withPT $
|
|
||||||
withSP $ map (substLibExec dir . dropTrailingPathSeparator)
|
|
||||||
|
|
||||||
|
|
||||||
withPT f pt = toPathTemplate $ f (fromPathTemplate pt)
|
|
||||||
withSP f p = joinPath $ f (splitPath p)
|
|
||||||
|
|
||||||
onlyExePackageDesc :: [Executable] -> PackageDescription -> PackageDescription
|
|
||||||
onlyExePackageDesc exes pd = emptyPackageDescription {
|
|
||||||
package = package pd
|
|
||||||
, executables = exes
|
|
||||||
}
|
|
||||||
|
|
||||||
parseVer str =
|
|
||||||
case filter ((=="") . snd) $ readP_to_S parseVersion str of
|
|
||||||
[(ver, _)] -> ver
|
|
||||||
_ -> error $ "No parse (Ver) :(\n" ++ str ++ "\n"
|
|
||||||
|
|
||||||
fromJustNote :: String -> Maybe a -> a
|
|
||||||
fromJustNote _ (Just x) = x
|
|
||||||
fromJustNote note Nothing = error $ "fromJustNote ("++note++"): "
|
|
||||||
|
|
||||||
-- sanityCheckCabalVersions args cf desc lbi = do
|
|
||||||
-- (cabalInstallVer, cabalVer) <- getCabalExecVer
|
|
||||||
|
|
||||||
-- let
|
|
||||||
-- ghcVer = compilerVersion (compiler lbi)
|
|
||||||
-- -- ghc >= 7.10?
|
|
||||||
-- minGhc710 = ghcVer `withinRange` orLaterVersion (parseVer "7.10")
|
|
||||||
|
|
||||||
-- when minGhc710 $ do
|
|
||||||
-- let cabalHelperCabalVer = compCabalVer (CExeName "cabal-helper")
|
|
||||||
|
|
||||||
-- when (not $ cabalVer `sameMajorVersionAs` cabalHelperCabalVer) $
|
|
||||||
-- failCabalVersionDifferent cabalVer cabalHelperCabalVer
|
|
||||||
|
|
||||||
-- -- carry on as usual
|
|
||||||
-- (postConf simpleUserHooks) args cf desc lbi
|
|
||||||
|
|
||||||
-- where
|
|
||||||
-- earlierVersionThan ver ver' =
|
|
||||||
-- ver `withinRange` earlierVersion ver'
|
|
||||||
-- sameMajorVersionAs ver ver' =
|
|
||||||
-- ver `withinRange` withinVersion (Version (take 2 $ versionBranch ver') [])
|
|
||||||
|
|
||||||
-- compCabalVer comp = let
|
|
||||||
-- clbi = getComponentLocalBuildInfo lbi comp
|
|
||||||
|
|
||||||
-- [cabalVer] =
|
|
||||||
-- [ ver | (_, PackageIdentifier pkg ver) <- componentPackageDeps clbi
|
|
||||||
-- , pkg == PackageName "Cabal" ]
|
|
||||||
-- in cabalVer
|
|
||||||
|
|
||||||
-- getCabalExecVer = do
|
|
||||||
-- ["cabal-install", "version", cabalInstallVer, "using", "version", cabalVer, "of", "the", "Cabal", "library"] <- words <$> readProcess "cabal" ["--version"] ""
|
|
||||||
-- return (parseVer cabalInstallVer, parseVer cabalVer)
|
|
||||||
|
|
||||||
-- failCabalVersionDifferent cabalVer libCabalVer =
|
|
||||||
-- putStrLn rerr >> exitFailure
|
|
||||||
-- where
|
|
||||||
-- replace :: String -> String -> String -> String
|
|
||||||
-- replace _ _ [] = []
|
|
||||||
-- replace n r h@(h':hs)
|
|
||||||
-- | map snd (n `zip` h ) == n = r ++ replace n r (drop (length n) h)
|
|
||||||
-- | otherwise = h':replace n r hs
|
|
||||||
|
|
||||||
-- rerr = replace "X.XX.X.X" (showVersion libCabalVer) $
|
|
||||||
-- replace "Y.YY.Y.Y" (showVersion cabalVer) err
|
|
||||||
-- err = "\
|
|
||||||
-- \Error: Cabal seems to have decided ghc-mod should be built using Cabal\n\
|
|
||||||
-- \X.XX.X.X while the `cabal' executable in your PATH was built with Cabal\n\
|
|
||||||
-- \Y.YY.Y.Y. This will lead to conflicts when running ghc-mod in any project\n\
|
|
||||||
-- \where you use this `cabal' executable. Please compile ghc-mod using the same\n\
|
|
||||||
-- \Cabal version as your `cabal' executable or recompile cabal-install using\n\
|
|
||||||
-- \this version of the Cabal library.\n\
|
|
||||||
-- \\n\
|
|
||||||
-- \See: https://github.com/kazu-yamamoto/ghc-mod/wiki/InconsistentCabalVersions\n"
|
|
||||||
|
@ -54,13 +54,10 @@ $(ifelsedefD "componentsConfigs" [d|
|
|||||||
fst3 (x,_,_) = x
|
fst3 (x,_,_) = x
|
||||||
|
|
||||||
sameKind CLibName CLibName = True
|
sameKind CLibName CLibName = True
|
||||||
sameKind CLibName _ = False
|
|
||||||
sameKind (CExeName _) (CExeName _) = True
|
sameKind (CExeName _) (CExeName _) = True
|
||||||
sameKind (CExeName _) _ = False
|
|
||||||
sameKind (CTestName _) (CTestName _) = True
|
sameKind (CTestName _) (CTestName _) = True
|
||||||
sameKind (CTestName _) _ = False
|
|
||||||
sameKind (CBenchName _) (CBenchName _) = True
|
sameKind (CBenchName _) (CBenchName _) = True
|
||||||
sameKind (CBenchName _) _ = False
|
sameKind _ _ = False
|
||||||
|
|
||||||
setClbis [(CLibName, clbi, _)] =
|
setClbis [(CLibName, clbi, _)] =
|
||||||
get >>= \lbi ->
|
get >>= \lbi ->
|
||||||
|
Loading…
Reference in New Issue
Block a user