The shake package

[Tags: bsd3, library, program]

Shake is a Haskell library for writing build systems - designed as a replacement for make. See Development.Shake for an introduction, including an example. Further examples are included in the Cabal tarball, under the Examples directory.

To use Shake the user writes a Haskell program that imports Development.Shake, defines some build rules, and calls the Development.Shake.shake function. Thanks to do notation and infix operators, a simple Shake build system is not too dissimilar from a simple Makefile. However, as build systems get more complex, Shake is able to take advantage of the excellent abstraction facilities offered by Haskell and easily support much larger projects.

The Shake library provides all the standard features available in other build systems, including automatic parallelism and minimal rebuilds. Shake provides highly accurate dependency tracking, including seamless support for generated files, and dependencies on system information (i.e. compiler version). Shake can produce profile reports, indicating which files and take longest to build, and providing an analysis of the parallelism.

The theory behind Shake is described in an ICFP 2012 paper, Shake Before Building -- Replacing Make with Haskell http://community.haskell.org/~ndm/downloads/paper-shake_before_building-10_sep_2012.pdf. The associated talk forms a short overview of Shake http://www.youtube.com/watch?v=xYCPpXVlqFM.


Properties

Versions0.0, 0.1, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.2, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.6, 0.2.7, 0.2.8, 0.2.9, 0.2.10, 0.2.11, 0.3, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.3.6, 0.3.7, 0.3.8, 0.3.9, 0.3.10, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.9.1, 0.10, 0.10.1, 0.10.2, 0.10.3, 0.10.4, 0.10.5, 0.10.6, 0.10.7, 0.10.8, 0.10.9, 0.10.10, 0.11, 0.11.1, 0.11.2, 0.11.3, 0.11.4, 0.11.5, 0.11.6, 0.11.7, 0.12, 0.13, 0.13.1, 0.13.2, 0.13.3, 0.13.4
Dependenciesbase (==4.*), binary, bytestring, deepseq (>=1.1 && <1.4), directory, filepath, hashable (>=1.1.2.3 && <1.3), old-time, process, random, time, transformers (>=0.2 && <0.4), unordered-containers (>=0.1.4.3 && <0.2) or
base (==4.*), binary, bytestring, deepseq (>=1.1 && <1.4), directory, filepath, hashable (>=1.1.2.3 && <1.3), old-time, process, random, time, transformers (>=0.2 && <0.4), unordered-containers (>=0.2.1 && <0.3)
LicenseBSD3
CopyrightNeil Mitchell 2011-2013
AuthorNeil Mitchell <ndmitchell@gmail.com>
MaintainerNeil Mitchell <ndmitchell@gmail.com>
StabilityBeta
CategoryDevelopment
Home pagehttp://community.haskell.org/~ndm/shake/
Source repositoryhead: darcs get http://community.haskell.org/~ndm/darcs/shake/
Executablesshake
Upload dateSat Feb 16 21:41:53 UTC 2013
Uploaded byNeilMitchell
DistributionsDebian:0.13.2, Fedora:0.11.4, NixOS:0.13.4
Downloads25485 total (3396 in last 30 days)

Modules

[Index]

Flags

NameDescriptionDefault
testprogBuild the test programDisabled
portableObtain FileTime using portable functionsDisabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainers' corner

For package maintainers and hackage trustees