The shake package

[Tags:bsd3, library, program, test]

WARNING: Shake has only been lightly tested, and there will be bugs (please report them). The interface is likely to change, although hopefully not significantly. It would be unwise to build a critical production system on top of the current version of Shake.

Shake is a Haskell library for writing build systems - designed as a replacement for make. To use Shake the user writes a Haskell program that imports the Shake library, defines some build rules, and calls shake. Thanks to do notation and infix operators, a simple Shake program 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 will eventually be able to produce profile reports, indicating which files and take longest to build, and providing an analysis of the parallelism.

The theory behind an old version of Shake is described in a video at http://vimeo.com/15465133, and an example is given at the top of Development.Shake. Some further examples are included in the Cabal tarball, under the Examples directory.

Properties

Versions 0.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, 0.14, 0.14.1, 0.14.2, 0.14.3, 0.15, 0.15.1, 0.15.2, 0.15.3, 0.15.4, 0.15.5, 0.15.6, 0.15.7, 0.15.8, 0.15.9, 0.15.10
Dependencies access-time (==0.1.*), base (==4.*), binary, bytestring, deepseq (==1.1.*), directory, filepath, hashable, old-time, parallel-io, process, time, transformers (==0.2.*), unordered-containers [details]
License BSD3
Copyright Neil Mitchell 2011
Author Neil Mitchell <ndmitchell@gmail.com>
Maintainer Neil Mitchell <ndmitchell@gmail.com>
Stability Beta
Category Development
Home page http://community.haskell.org/~ndm/shake/
Source repository head: darcs get http://community.haskell.org/~ndm/darcs/shake/
Uploaded Sun Jan 1 11:34:14 UTC 2012 by NeilMitchell
Distributions Arch:0.15.10, Debian:0.15.5, Fedora:0.13.4, FreeBSD:0.15.5, LTSHaskell:0.15.10, NixOS:0.15.10, Stackage:0.15.10, Tumbleweed:0.15.10
Downloads 43190 total (156 in the last 30 days)
Votes
4 []
Status Docs not available [build log]
All reported builds failed as of 2015-11-24 [all 4 reports]

Modules

  • Development
    • Development.Shake
      • Development.Shake.FilePath

Flags

NameDescriptionDefaultType
testprogBuild the test programEnabledAutomatic

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

Downloads

Maintainer's Corner

For package maintainers and hackage trustees