From 0fdf478d54357daeeae79265613f3eea715fe46a Mon Sep 17 00:00:00 2001 From: fendor Date: Tue, 26 Mar 2019 13:47:32 +0100 Subject: [PATCH 1/2] Only generate hoogle database once --- install.hs | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/install.hs b/install.hs index 13917cca1..ae6418633 100755 --- a/install.hs +++ b/install.hs @@ -29,7 +29,16 @@ type GhcPath = String -- If they are edited, make sure to maintain the order of the versions. hieVersions :: [VersionNumber] hieVersions = - ["8.2.1", "8.2.2", "8.4.2", "8.4.3", "8.4.4", "8.6.1", "8.6.2", "8.6.3", "8.6.4"] + [ "8.2.1" + , "8.2.2" + , "8.4.2" + , "8.4.3" + , "8.4.4" + , "8.6.1" + , "8.6.2" + , "8.6.3" + , "8.6.4" + ] -- |Most recent version of hie. -- Shown in the more concise help message. @@ -74,9 +83,15 @@ main = do forM_ hieVersions stackTest phony "build-copy-compiler-tool" $ forM_ hieVersions buildCopyCompilerTool + + phony "stack-build-doc" stackBuildDoc forM_ hieVersions - (\version -> phony ("build-doc-" ++ version) $ stackBuildDoc version) + (\version -> phony ("build-doc-" ++ version) $ do + need ["submodules"] + need ["cabal"] + need ["stack-build-doc"] + ) forM_ hieVersions (\version -> phony ("hie-" ++ version) $ do @@ -96,12 +111,13 @@ main = do need ["cabal"] forM_ ghcVersions cabalTest + phony "cabal-doc" cabalBuildDoc forM_ hieVersions (\version -> phony ("cabal-build-doc-" ++ version) $ do need ["submodules"] need ["cabal"] - cabalBuildDoc version + need ["cabal-doc"] ) forM_ hieVersions @@ -181,9 +197,8 @@ cabalInstallHie versionNumber = do copyFile' (localBin "hie" <.> exe) (localBin "hie-" ++ dropExtension versionNumber <.> exe) -cabalBuildDoc :: VersionNumber -> Action () -cabalBuildDoc versionNumber = do - configureCabal versionNumber +cabalBuildDoc :: Action () +cabalBuildDoc = do execCabal_ ["new-install", "hoogle"] execCabal_ ["new-exec", "hoogle", "generate"] @@ -222,10 +237,10 @@ buildCopyCompilerTool versionNumber = stackTest :: VersionNumber -> Action () stackTest versionNumber = execStackWithYaml_ versionNumber ["test"] -stackBuildDoc :: VersionNumber -> Action () -stackBuildDoc versionNumber = do - execStackWithYaml_ versionNumber ["install", "hoogle"] - execStackWithYaml_ versionNumber ["exec", "hoogle", "generate"] +stackBuildDoc :: Action () +stackBuildDoc = do + execStack_ ["--stack-yaml=shake.yaml", "install", "hoogle"] + execStack_ ["--stack-yaml=shake.yaml", "exec", "hoogle", "generate"] shortHelpMessage :: Action () shortHelpMessage = do From cf758bd30ea9c035fd300fd66e6253cf3c182a53 Mon Sep 17 00:00:00 2001 From: fendor Date: Tue, 26 Mar 2019 19:54:40 +0100 Subject: [PATCH 2/2] Install hoogle only if not found --- install.hs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/install.hs b/install.hs index ae6418633..6484b5ce4 100755 --- a/install.hs +++ b/install.hs @@ -198,10 +198,19 @@ cabalInstallHie versionNumber = do (localBin "hie-" ++ dropExtension versionNumber <.> exe) cabalBuildDoc :: Action () -cabalBuildDoc = do - execCabal_ ["new-install", "hoogle"] +cabalBuildDoc = generateHoogleDatabase $ do + localBin <- getLocalBin + execCabal_ ["new-install", "--symlink-bindir=" ++ localBin, "hoogle"] execCabal_ ["new-exec", "hoogle", "generate"] +generateHoogleDatabase :: Action () -> Action () +generateHoogleDatabase installIfNecessary = do + mayHoogle <- liftIO $ findExecutable "hoogle" + case mayHoogle of + Nothing -> installIfNecessary + Just hoogle -> command_ [] "hoogle" ["generate"] + + cabalTest :: VersionNumber -> Action () cabalTest versionNumber = do configureCabal versionNumber @@ -238,7 +247,7 @@ stackTest :: VersionNumber -> Action () stackTest versionNumber = execStackWithYaml_ versionNumber ["test"] stackBuildDoc :: Action () -stackBuildDoc = do +stackBuildDoc = generateHoogleDatabase $ do execStack_ ["--stack-yaml=shake.yaml", "install", "hoogle"] execStack_ ["--stack-yaml=shake.yaml", "exec", "hoogle", "generate"]