shake 0.17.3 → 0.17.4
raw patch · 9 files changed
+29/−10 lines, 9 files
Files
- CHANGES.txt +3/−0
- LICENSE +1/−1
- docs/Manual.md +1/−1
- shake.cabal +4/−4
- src/Development/Shake.hs +2/−2
- src/Development/Shake/Database.hs +9/−1
- src/Development/Shake/Internal/Core/Run.hs +6/−0
- src/Test/Database.hs +2/−0
- src/Test/Docs.hs +1/−1
CHANGES.txt view
@@ -1,5 +1,8 @@ Changelog for Shake (* = breaking change) +0.17.4, released 2019-01-10+ Add shakeProfileDatabase to generate profile information+ Don't suggest -qb (irrelevant with -qg) 0.17.3, released 2018-12-04 #632, remove O(n^2) behaviour when constructing user rules In diagnostic mode, show the number of actions/rules/user rules
LICENSE view
@@ -1,4 +1,4 @@-Copyright Neil Mitchell 2011-2018.+Copyright Neil Mitchell 2011-2019. All rights reserved. Redistribution and use in source and binary forms, with or without
docs/Manual.md view
@@ -288,7 +288,7 @@ Now you can run a build by typing `stack exec ./build.sh` on Linux, or `stack exec build.bat` on Windows. On Linux you may want to alias `build` to `stack exec ./build.sh`. For the rest of this document we will assume `build` runs the build system. -_Warning:_ You should not use the `-threaded` for GHC 7.6 or below because of a [GHC bug](https://ghc.haskell.org/trac/ghc/ticket/7646). If you do turn on `-threaded`, you should include `-qg -qb` in `-with-rtsopts`.+_Warning:_ You should not use the `-threaded` for GHC 7.6 or below because of a [GHC bug](https://ghc.haskell.org/trac/ghc/ticket/7646). If you do turn on `-threaded`, you should include `-qg` in `-with-rtsopts`. #### Command line flags
shake.cabal view
@@ -1,13 +1,13 @@ cabal-version: >= 1.18 build-type: Simple name: shake-version: 0.17.3+version: 0.17.4 license: BSD3 license-file: LICENSE category: Development, Shake author: Neil Mitchell <ndmitchell@gmail.com> maintainer: Neil Mitchell <ndmitchell@gmail.com>-copyright: Neil Mitchell 2011-2018+copyright: Neil Mitchell 2011-2019 synopsis: Build system library, like Make, but more accurate dependencies. description: Shake is a Haskell library for writing build systems - designed as a@@ -30,7 +30,7 @@ (e.g. compiler version). homepage: https://shakebuild.com bug-reports: https://github.com/ndmitchell/shake/issues-tested-with: GHC==8.6.1, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2+tested-with: GHC==8.6.3, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC==7.4.2 extra-doc-files: CHANGES.txt README.md@@ -198,7 +198,7 @@ ghc-options: -rtsopts -- GHC bug 7646 means -threaded causes errors if impl(ghc >= 7.8)- ghc-options: -threaded "-with-rtsopts=-I0 -qg -qb"+ ghc-options: -threaded "-with-rtsopts=-I0 -qg" build-depends: base == 4.*, binary,
src/Development/Shake.hs view
@@ -169,7 +169,7 @@ -- -- For large build systems the choice of GHC flags can have a significant impact. We recommend: ----- > ghc --make MyBuildSystem -threaded -rtsopts "-with-rtsopts=-I0 -qg -qb"+-- > ghc --make MyBuildSystem -threaded -rtsopts "-with-rtsopts=-I0 -qg" -- -- * @-rtsopts@: Allow the setting of further GHC options at runtime. --@@ -180,7 +180,7 @@ -- can cause a race condition in build systems that write files then read them. Omitting @-threaded@ will -- still allow your 'cmd' actions to run in parallel, so most build systems will still run in parallel. ----- * With GHC 7.8 and later you may add @-threaded@, and pass the options @-qg -qb@ to @-with-rtsopts@+-- * With GHC 7.8 and later you may add @-threaded@, and pass the options @-qg@ to @-with-rtsopts@ -- to disable parallel garbage collection. Parallel garbage collection in Shake -- programs typically goes slower than sequential garbage collection, while occupying many cores that -- could be used for running system commands.
src/Development/Shake/Database.hs view
@@ -20,6 +20,7 @@ shakeOneShotDatabase, shakeRunDatabase, shakeLiveFilesDatabase,+ shakeProfileDatabase, shakeErrorsDatabase, shakeRunAfter ) where@@ -100,6 +101,13 @@ withOpen use "shakeLiveFilesDatabase" id $ \_ -> liveFilesState s +-- | Given a 'ShakeDatabase', generate profile information to the given file about the latest run.+-- See 'shakeReport' for the types of file that can be generated.+shakeProfileDatabase :: ShakeDatabase -> FilePath -> IO ()+shakeProfileDatabase (ShakeDatabase use s) file =+ withOpen use "shakeProfileDatabase" id $ \_ ->+ profileState s file+ -- | Given a 'ShakeDatabase', what files did the execution reach an error on last time. -- Some special considerations when using this function: --@@ -125,7 +133,7 @@ -- | Given an open 'ShakeDatabase', run both whatever actions were added to the 'Rules', -- plus the list of 'Action' given here. Returns the results from the explicitly passed -- actions along with a list of actions to run after the database was closed, as added with--- 'runAfter' and 'removeFilesAfter'.+-- 'Development.Shake.runAfter' and 'Development.Shake.removeFilesAfter'. shakeRunDatabase :: ShakeDatabase -> [Action a] -> IO ([a], [IO ()]) shakeRunDatabase (ShakeDatabase use s) as = withOpen use "shakeRunDatabase" (\o -> o{openRequiresReset=True}) $ \Open{..} -> do
src/Development/Shake/Internal/Core/Run.hs view
@@ -9,6 +9,7 @@ run, shakeRunAfter, liveFilesState,+ profileState, errorsState ) where @@ -242,6 +243,11 @@ liveFilesState RunState{..} = do database <- readVar databaseVar liveFiles database++profileState :: RunState -> FilePath -> IO ()+profileState RunState{..} file = do+ database <- readVar databaseVar+ writeProfile file database liveFiles :: Database -> IO [FilePath] liveFiles database = do
src/Test/Database.hs view
@@ -48,6 +48,8 @@ live <- shakeLiveFilesDatabase db sort live === ["a.in","a.out"] + shakeProfileDatabase db "-"+ -- check that parallel runs blow up, and that we can throw async exceptions to kill it assertWithin 10 $ do threads <- newBarrier
src/Test/Docs.hs view
@@ -352,7 +352,7 @@ ,"1m25s (15%)" ,"3m12s (82%)" ,"getPkgVersion $ GhcPkgVersion \"shake\""- ,"ghc --make MyBuildSystem -threaded -rtsopts \"-with-rtsopts=-I0 -qg -qb\""+ ,"ghc --make MyBuildSystem -threaded -rtsopts \"-with-rtsopts=-I0 -qg\"" ,"# command-name (for file-name)" ,"<i>build rules</i>" ,"<i>actions</i>"