X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=utils%2Fghc-cabal%2Fghc-cabal.hs;h=489be4ad298d797fd8fbb947c006f3652bd2db42;hb=42ffa0bbd00cb8fafa50e906f38951adf0986f7e;hp=b940a2dff561f6a9b0755d38021509c5407205b5;hpb=7f4b8d9bfbfb0556d51ba1fb25f18e424bd5bf9c;p=ghc-hetmet.git diff --git a/utils/ghc-cabal/ghc-cabal.hs b/utils/ghc-cabal/ghc-cabal.hs index b940a2d..489be4a 100644 --- a/utils/ghc-cabal/ghc-cabal.hs +++ b/utils/ghc-cabal/ghc-cabal.hs @@ -30,8 +30,8 @@ import System.FilePath main :: IO () main = do args <- getArgs case args of - "haddock" : distDir : dir : args' -> - runHaddock distDir dir args' + "hscolour" : distDir : dir : args' -> + runHsColour distDir dir args' "check" : dir : [] -> doCheck dir "install" : ghc : ghcpkg : strip : topdir : directory : distDir @@ -52,7 +52,7 @@ syntax_error :: [String] syntax_error = ["syntax: ghc-cabal configure -- ...", " ghc-cabal install ...", - " ghc-cabal haddock ..."] + " ghc-cabal hscolour ..."] die :: [String] -> IO a die errs = do mapM_ (hPutStrLn stderr) errs @@ -111,32 +111,10 @@ doCheck directory where isFailure (PackageDistSuspicious {}) = False isFailure _ = True -runHaddock :: FilePath -> FilePath -> [String] -> IO () -runHaddock distdir directory args +runHsColour :: FilePath -> FilePath -> [String] -> IO () +runHsColour distdir directory args = withCurrentDirectory directory - $ defaultMainWithHooksArgs hooks ("haddock" : "--builddir" : distdir : args) - where - hooks = userHooks { - haddockHook = modHook (haddockHook userHooks) - } - modHook f pd lbi us flags - | packageName pd == PackageName "ghc-prim" - = let pd' = case library pd of - Just lib -> - let ghcPrim = fromJust (simpleParse "GHC.Prim") - ems = filter (ghcPrim /=) - (exposedModules lib) - lib' = lib { exposedModules = ems } - in pd { library = Just lib' } - Nothing -> - error "Expected a library, but none found" - pc = withPrograms lbi - pc' = userSpecifyArgs "haddock" - ["dist-install/build/autogen/GHC/Prim.hs"] pc - lbi' = lbi { withPrograms = pc' } - in f pd' lbi' us flags - | otherwise - = f pd lbi us flags + $ defaultMainArgs ("hscolour" : "--builddir" : distdir : args) doInstall :: FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> FilePath @@ -206,24 +184,27 @@ doInstall ghc ghcpkg strip topdir directory distDir ghcProg = ConfiguredProgram { programId = programName ghcProgram, programVersion = Nothing, - programArgs = ["-B" ++ topdir], + programDefaultArgs = ["-B" ++ topdir], + programOverrideArgs = [], programLocation = UserSpecified ghc } ghcpkgconf = topdir "package.conf.d" ghcPkgProg = ConfiguredProgram { programId = programName ghcPkgProgram, programVersion = Nothing, - programArgs = ["--global-conf", - ghcpkgconf] + programDefaultArgs = ["--global-conf", + ghcpkgconf] ++ if not (null myDestDir) then ["--force"] else [], + programOverrideArgs = [], programLocation = UserSpecified ghcpkg } stripProg = ConfiguredProgram { programId = programName stripProgram, programVersion = Nothing, - programArgs = [], + programDefaultArgs = [], + programOverrideArgs = [], programLocation = UserSpecified strip } progs' = updateProgram ghcProg @@ -310,7 +291,10 @@ generate config_args distdir directory let ipid = InstalledPackageId (display (packageId pd) ++ "-inplace") let installedPkgInfo = inplaceInstalledPackageInfo cwd distdir pd lib lbi clbi - final_ipi = installedPkgInfo{ Installed.installedPackageId = ipid } + final_ipi = installedPkgInfo { + Installed.installedPackageId = ipid, + Installed.haddockHTMLs = ["../" ++ display (packageId pd)] + } content = Installed.showInstalledPackageInfo final_ipi ++ "\n" writeFileAtomic (distdir "inplace-pkg-config") content _ -> error "Inconsistent lib components; can't happen?" @@ -352,6 +336,8 @@ generate config_args distdir directory let variablePrefix = directory ++ '_':distdir let xs = [variablePrefix ++ "_VERSION = " ++ display (pkgVersion (package pd)), variablePrefix ++ "_MODULES = " ++ unwords (map display modules), + variablePrefix ++ "_HIDDEN_MODULES = " ++ unwords (map display (otherModules bi)), + variablePrefix ++ "_SYNOPSIS =" ++ synopsis pd, variablePrefix ++ "_HS_SRC_DIRS = " ++ unwords (hsSourceDirs bi), variablePrefix ++ "_DEPS = " ++ unwords (map display dep_ids), variablePrefix ++ "_DEP_NAMES = " ++ unwords (map (display . packageName) dep_ids), @@ -364,10 +350,11 @@ generate config_args distdir directory variablePrefix ++ "_CMM_SRCS = $(addprefix cbits/,$(notdir $(wildcard " ++ directory ++ "/cbits/*.cmm)))", -- XXX This includes things it shouldn't, like: -- -odir dist-bootstrapping/build - variablePrefix ++ "_HC_OPTS = " ++ escape (unwords - (programArgs ghcProg + variablePrefix ++ "_HC_OPTS = " ++ escape (unwords + ( programDefaultArgs ghcProg ++ hcOptions GHC bi - ++ extensionsToFlags (compiler lbi) (extensions bi))), + ++ extensionsToFlags (compiler lbi) (extensions bi) + ++ programOverrideArgs ghcProg)), variablePrefix ++ "_CC_OPTS = " ++ unwords (ccOptions bi), variablePrefix ++ "_CPP_OPTS = " ++ unwords (cppOptions bi), variablePrefix ++ "_LD_OPTS = " ++ unwords (ldOptions bi), @@ -377,6 +364,9 @@ generate config_args distdir directory variablePrefix ++ "_DEP_EXTRA_LIBS = " ++ unwords (forDeps Installed.extraLibraries), variablePrefix ++ "_DEP_LD_OPTS = " ++ unwords (forDeps Installed.ldOptions)] writeFile (distdir ++ "/package-data.mk") $ unlines xs + writeFile (distdir ++ "/haddock-prologue.txt") $ + if null (description pd) then synopsis pd + else description pd where escape = foldr (\c xs -> if c == '#' then '\\':'#':xs else c:xs) [] wrap = map (\s -> "\'" ++ s ++ "\'")