stackage-curator 0.7.3 → 0.7.4
raw patch · 5 files changed
+68/−6 lines, 5 files
Files
- ChangeLog.md +5/−0
- Stackage/CompleteBuild.hs +2/−1
- Stackage/PerformBuild.hs +53/−2
- app/stackage.hs +6/−1
- stackage-curator.cabal +2/−2
ChangeLog.md view
@@ -1,3 +1,8 @@+## 0.7.4++* `-j`/`--jobs` option for build flags+* Only pass in required .haddock files (more memory efficiency)+ ## 0.7.3 * Number of jobs == number of capabilities
Stackage/CompleteBuild.hs view
@@ -45,6 +45,7 @@ , bfBundleDest :: !(Maybe FilePath) , bfGitPush :: !Bool -- ^ push to Git (when doing an LTS build)+ , bfJobs :: !(Maybe Int) } deriving (Show) data BuildType = Nightly | LTS BumpType Text@@ -251,7 +252,7 @@ getPerformBuild :: BuildFlags -> Settings -> IO PerformBuild getPerformBuild buildFlags Settings {..} = do- jobs <- getNumCapabilities+ jobs <- maybe getNumCapabilities return $ bfJobs buildFlags return PerformBuild { pbPlan = plan , pbInstallDest = buildDir
Stackage/PerformBuild.hs view
@@ -205,6 +205,7 @@ pbLog "Collecting existing .haddock files\n" haddockFiles <- getHaddockFiles pb >>= newTVarIO+ haddockDeps <- newTVarIO mempty forM_ packageMap $ \pi -> void $ async $ singleBuild pb registeredPackages SingleBuild@@ -223,6 +224,7 @@ (pbDatabase pb) (filter allowedEnv $ map fixEnv env) , sbHaddockFiles = haddockFiles+ , sbHaddockDeps = haddockDeps } void $ tryAny $ atomically $ readTVar active >>= checkSTM . (== 0)@@ -267,6 +269,8 @@ , sbRegisterMutex :: MVar () , sbModifiedEnv :: [(String, String)] , sbHaddockFiles :: TVar (Map Text FilePath) -- ^ package-version, .haddock file+ , sbHaddockDeps :: TVar (Map PackageName (Set PackageName))+ -- ^ Deep deps of library and executables } singleBuild :: PerformBuild@@ -432,7 +436,15 @@ when needHaddock $ withConfiged $ do log' $ "Haddocks " ++ namever hfs <- readTVarIO sbHaddockFiles- let hfsOpts = flip map (mapToList hfs) $ \(pkgVer, hf) -> concat+ haddockDeps <- atomically $ getHaddockDeps pbPlan sbHaddockDeps pname+ let hfsOpts = map hfOpt+ $ filter ((`member` haddockDeps) . toPackageName . fst)+ $ mapToList hfs+ toPackageName t =+ case simpleParse t of+ Just (PackageIdentifier x _) -> x+ Nothing -> error $ "Invalid package identifier: " ++ unpack t+ hfOpt (pkgVer, hf) = concat [ "--haddock-options=--read-interface=" , "../" , pkgVer@@ -502,7 +514,7 @@ log' $ concat [ display (piName sbPackageInfo) , ": "- , tshow exc+ , take 500 $ tshow exc ] atomically $ modifyTVar sbErrsVar $ insertMap (piName sbPackageInfo) exc' where@@ -592,3 +604,42 @@ else mempty where nameVerText = fpToText $ filename dir++getHaddockDeps :: BuildPlan+ -> TVar (Map PackageName (Set PackageName))+ -> PackageName+ -> STM (Set PackageName)+getHaddockDeps BuildPlan {..} var =+ go+ where+ go :: PackageName -> STM (Set PackageName)+ go name = do+ m <- readTVar var+ case lookup name m of+ Just res -> return res+ Nothing -> do+ -- First thing we do is put in a dummy value in the var for+ -- this package, to avoid the possibility of an infinite loop+ -- due to packages depending on themselves (which is in fact+ -- valid).+ modifyTVar var $ insertMap name mempty++ res' <- fmap fold $ mapM go $ setToList deps+ let res = deps ++ res'+ modifyTVar var $ insertMap name res+ return res+ where+ deps =+ case lookup name bpPackages of+ Nothing -> mempty+ Just PackagePlan {..} ->+ asSet+ $ setFromList+ $ map fst+ $ filter (isLibExe . snd)+ $ mapToList+ $ sdPackages ppDesc++ isLibExe DepInfo {..} =+ CompLibrary `member` diComponents ||+ CompExecutable `member` diComponents
app/stackage.hs view
@@ -135,7 +135,12 @@ <|> pure Nothing) <*> (fmap not (switch (long "skip-git-push" <>- help "Do not perform a git push after completion (for LTS builds only)")))+ help "Do not perform a git push after completion (for LTS builds only)"))) <*>+ (fmap Just (option+ auto+ (long "jobs" <> short 'j' <>+ metavar "NUMBER" <>+ help "Number of threads")) <|> pure Nothing) installFlags = InstallFlags <$>
stackage-curator.cabal view
@@ -1,5 +1,5 @@ name: stackage-curator-version: 0.7.3+version: 0.7.4 synopsis: Tools for curating Stackage bundles description: Please see <http://www.stackage.org/package/stackage-curator> for a description and documentation. homepage: https://github.com/fpco/stackage@@ -35,7 +35,7 @@ Stackage.CompleteBuild build-depends: base >= 4 && < 5 , containers- , Cabal >= 1.14+ , Cabal >= 1.14 && < 1.20 , tar >= 0.3 , zlib , bytestring