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. The homepage contains links to a user manual, an academic paper and further information: https://github.com/ndmitchell/shake

To use Shake the user writes a Haskell program that imports Development.Shake, defines some build rules, and calls the Development.Shake.shakeArgs 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 also provides more accurate dependency tracking, including seamless support for generated files, and dependencies on system information (e.g. compiler version).


[Skip to Readme]

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
Change log CHANGES.txt
Dependencies base (==4.*), binary, bytestring, deepseq (>=1.1), directory, filepath (<1.3.1), hashable (>=1.1.2.3), old-time, process (>=1.1), random, time, transformers (>=0.2), unix (>=2.5.1), unordered-containers (>=0.2.1), utf8-string (>=0.3) [details]
License BSD3
Copyright Neil Mitchell 2011-2014
Author Neil Mitchell <ndmitchell@gmail.com>
Maintainer Neil Mitchell <ndmitchell@gmail.com>
Stability Unknown
Category Development
Home page https://github.com/ndmitchell/shake
Bug tracker https://github.com/ndmitchell/shake/issues
Source repository head: git clone https://github.com/ndmitchell/shake.git
Uploaded Fri Jun 20 09:43:20 UTC 2014 by NeilMitchell
Updated Mon Jan 12 09:38:12 UTC 2015 by HerbertValerioRiedel to revision 1
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
Downloads 42785 total (323 in the last 30 days)
Votes
4 []
Status Docs available [build log]
Successful builds reported [all 1 reports]

Modules

[Index]

Flags

NameDescriptionDefaultType
portableObtain FileTime using portable functionsDisabledAutomatic

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

Readme for shake

Readme for shake-0.13.2

Shake Build Status

Shake is a tool for writing build systems - an alternative to make, Scons, Ant etc. Shake has been used commercially for over five years, running thousands of builds per day.

Documentation

  • Why use Shake? Shake lets you write large robust build systems, which deal properly with generated source files and run quickly. If you are writing a custom build system of any moderate size (more than a few rules) you should use Shake. The advantages over other build systems are detailed in the document Why choose Shake?.
  • How do I use Shake? Shake is a Haskell library that you use to define your rules. The Shake manual provides a walk through of a small but realistic example, assuming no Haskell knowledge.
  • Generated documentation for all functions, includes lots of examples.
  • Running Ninja builds using Shake.
  • Blog posts detailing ongoing development work.
  • Profile report demo explaining what the profile reports mean.
  • Academic paper on the underlying principles behind Shake.
  • Video of a talk introducing Shake.

Other links

  • Download the Haskell package from Hackage and install it using Cabal.
  • Mailing list for any questions/bugs/thoughts on Shake. If you need more information and aren't sure where to start, use the mailing list.
  • Questions can be asked on StackOverflow with the tag shake-build-system.
  • Bugs can be reported on the GitHub issue tracker.
  • Source code in a git repo, stored at GitHub.
  • Continuous integration with Travis and Hydra.