shake: Build system library, like Make, but more accurate dependencies.

[ bsd3, development, library, program, shake ] [ Propose Tags ]

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 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 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.

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, 0.15.11, 0.16, 0.16.1, 0.16.2, 0.16.3, 0.16.4, 0.17, 0.17.1, 0.17.2, 0.17.3
Dependencies base (>=4 && <4.7), binary, bytestring, deepseq (>=1.1 && <1.4), directory, filepath (<1.3.1), hashable (>=1.1.2.3 && <1.3), old-time, process, random, time, transformers (>=0.2 && <0.4), unix (>=2.5.1), unordered-containers (>=0.1.4.3 && <0.2 || >=0.2.1 && <0.3) [details]
License BSD-3-Clause
Copyright Neil Mitchell 2011-2013
Author Neil Mitchell <ndmitchell@gmail.com>
Maintainer Neil Mitchell <ndmitchell@gmail.com>
Revised Revision 1 made by HerbertValerioRiedel at Mon Jan 12 09:39:28 UTC 2015
Category Development
Home page http://community.haskell.org/~ndm/shake/
Source repo head: darcs get http://community.haskell.org/~ndm/darcs/shake/
Uploaded by NeilMitchell at Wed Jan 9 18:25:04 UTC 2013
Distributions Arch:0.17.3, Debian:0.16.4, Fedora:0.16.4, FreeBSD:0.15.5, LTSHaskell:0.16.4, NixOS:0.17.3, Stackage:0.17.3
Executables shake
Downloads 69522 total (432 in the last 30 days)
Rating 2.5 (votes: 6) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI

Modules

[Index]

Flags

NameDescriptionDefaultType
testprog

Build the test program

DisabledAutomatic
portable

Obtain FileTime using portable functions

DisabledAutomatic

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

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees