From 7fc3b9d468a4a2997a7fed63e378567f2ef3a401 Mon Sep 17 00:00:00 2001 From: Daniel Gröber Date: Tue, 24 Apr 2018 00:31:17 +0200 Subject: Drop Cabal<2.0 compiletime support We still support <2.0 at runtime this only concerns the Cabal version used at cabal-install time. --- Setup.hs | 113 --------------------------------------------------------------- 1 file changed, 113 deletions(-) (limited to 'Setup.hs') diff --git a/Setup.hs b/Setup.hs index 55a046e..9a994af 100644 --- a/Setup.hs +++ b/Setup.hs @@ -1,115 +1,2 @@ -{-# LANGUAGE CPP, RecordWildCards, NamedFieldPuns #-} - -#ifndef MIN_VERSION_Cabal -#define MIN_VERSION_Cabal(x,y,z) 0 -#endif - -#if MIN_VERSION_Cabal(2,0,0) - --- https://github.com/haskell/cabal/pull/4501 is upstream in 2.0, yey import Distribution.Simple main = defaultMain - -#else - -import Distribution.Simple -import Distribution.Simple.Utils -import Distribution.Simple.Setup -import Distribution.Simple.Install -import Distribution.Simple.Register -import Distribution.Simple.BuildPaths -import qualified Distribution.Simple.InstallDirs as ID -import Distribution.Simple.LocalBuildInfo -import Distribution.Simple.Program -import Distribution.PackageDescription - -import Control.Applicative -- for GHC<7.10 -import Control.Monad -import Data.List -import Data.Maybe -import System.FilePath -import System.Directory (renameFile) - -main :: IO () -main = defaultMainWithHooks $ simpleUserHooks { - instHook = inst, - copyHook = copy, - buildHook = \pd lbi hooks flags -> (buildHook simpleUserHooks) pd (patchLibexecdir lbi) hooks flags, - hookedPrograms = [ simpleProgram "cabal" ] - } - -patchLibexecdir :: LocalBuildInfo -> LocalBuildInfo -patchLibexecdir lbi = let - idirtpl = installDirTemplates lbi - libexecdir' = toPathTemplate $ fromPathTemplate (libexecdir idirtpl) "$abi/$pkgid" - lbi' = lbi { installDirTemplates = idirtpl { libexecdir = libexecdir' } } - in - lbi' - --- 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 copyFlags (\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 cf (\pd' lbi' -> install pd' lbi' cf) - -xInstallTarget :: PackageDescription - -> LocalBuildInfo - -> CopyFlags - -> (PackageDescription -> LocalBuildInfo -> IO ()) - -> IO () -xInstallTarget pd lbi cf fn = do - let (extended, regular) = partition isExeScopePrivate (executables pd) - - let pd_regular = pd { executables = regular } - - _ <- flip mapM extended $ \exe -> do - - let pd_extended = onlyExePackageDesc [exe] pd - - fn pd_extended lbi - - let lbi' = patchLibexecdir lbi - copydest = fromFlag (copyDest cf) - verbosity = fromFlag (copyVerbosity cf) - InstallDirs { bindir, libexecdir } = absoluteInstallDirs pd lbi' copydest - progprefix = substPathTemplate (packageId pd) lbi (progPrefix lbi) - progsuffix = substPathTemplate (packageId pd) lbi (progSuffix lbi) - fixedExeBaseName = progprefix ++ exeName exe ++ progsuffix - - fixedExeFileName = bindir fixedExeBaseName <.> exeExtension - newExeFileName = libexecdir fixedExeBaseName <.> exeExtension - - createDirectoryIfMissingVerbose verbosity True libexecdir - renameFile fixedExeFileName newExeFileName - - fn pd_regular lbi - -isExeScopePrivate :: Executable -> Bool -isExeScopePrivate exe = - fromMaybe False $ (=="private") <$> lookup "x-scope" fields - where - fields = customFieldsBI $ buildInfo exe - -onlyExePackageDesc :: [Executable] -> PackageDescription -> PackageDescription -onlyExePackageDesc exes pd = emptyPackageDescription { - package = package pd - , executables = exes - } - -#endif -- cgit v1.2.3