diff --git a/ChangeLog.md b/ChangeLog.md index 641463bd..afff5488 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,3 +1,7 @@ +## 0.3.0.1 + +Pre-fetch all packages from Hackage to catch Hackage downtime early. + ## 0.3.0.0 * Return progress URL from uploadBundle diff --git a/Stackage/PerformBuild.hs b/Stackage/PerformBuild.hs index 8cb192ab..31602d55 100644 --- a/Stackage/PerformBuild.hs +++ b/Stackage/PerformBuild.hs @@ -136,6 +136,22 @@ performBuild pb = do performBuild' :: PerformBuild -> IO [Text] performBuild' pb@PerformBuild {..} = withBuildDir $ \builddir -> do + -- First make sure to fetch all of the dependencies... just in case Hackage + -- has an outage. Don't feel like wasting hours of CPU time. + pbLog $ encodeUtf8 "Pre-fetching all packages\n" + let toDownload = flip map (mapToList $ bpPackages pbPlan) + $ \(name, plan) -> unpack $ concat + [ display name + , "-" + , display $ ppVersion plan + ] + withCheckedProcess + (proc "cabal" + $ "fetch" + : "--no-dependencies" + : toDownload) + $ \ClosedStream Inherited Inherited -> return () + let removeTree' fp = whenM (isDirectory fp) (removeTree fp) mapM_ removeTree' [pbInstallDest, pbLogDir] diff --git a/stackage.cabal b/stackage.cabal index 050e4625..5da5a51f 100644 --- a/stackage.cabal +++ b/stackage.cabal @@ -1,5 +1,5 @@ name: stackage -version: 0.3.0.0 +version: 0.3.0.1 synopsis: "Stable Hackage," tools for creating a vetted set of packages from Hackage. description: Please see for a description and documentation. homepage: https://github.com/fpco/stackage