shake: Build system library, like Make, but more accurate dependencies.
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:
http://www.shakebuild.com/
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]
Modules
[Index]
Flags
Automatic Flags
| Name | Description | Default |
|---|---|---|
| portable | Obtain FileTime using portable functions | Disabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- shake-0.15.tar.gz [browse] (Cabal source package)
- Package description (revised from the package)
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
Candidates
- No Candidates
| Versions [RSS] | 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, 0.17.4, 0.17.5, 0.17.6, 0.17.7, 0.17.8, 0.17.9, 0.18, 0.18.1, 0.18.2, 0.18.3, 0.18.4, 0.18.5, 0.19, 0.19.1, 0.19.2, 0.19.3, 0.19.4, 0.19.5, 0.19.6, 0.19.7, 0.19.8 (info) |
|---|---|
| Change log | CHANGES.txt |
| Dependencies | base (>=4 && <5), binary , bytestring , deepseq (>=1.1), directory , extra (>=1.1 && <1.3), filepath , hashable (>=1.1.2.3), js-flot , js-jquery , old-time , process (>=1.1 && <1.4.3), random , time , transformers (>=0.2), unix (>=2.5.1), unordered-containers (>=0.2.1), utf8-string (>=0.3) [details] |
| Tested with | ghc ==7.10.1, ghc ==7.8.4, ghc ==7.6.3, ghc ==7.4.2, ghc ==7.2.2 |
| License | BSD-3-Clause |
| Copyright | Neil Mitchell 2011-2015 |
| Author | Neil Mitchell <ndmitchell@gmail.com> |
| Maintainer | Neil Mitchell <ndmitchell@gmail.com> |
| Revised | Revision 1 made by HerbertValerioRiedel at 2016年12月14日T07:44:04Z |
| Category | Development, Shake |
| Home page | http://www.shakebuild.com/ |
| Bug tracker | https://github.com/ndmitchell/shake/issues |
| Source repo | head: git clone https://github.com/ndmitchell/shake.git |
| Uploaded | by NeilMitchell at 2015年03月26日T11:09:13Z |
| Distributions | Arch:0.19.6, Debian:0.19.1, Fedora:0.19.8, FreeBSD:0.15.5, LTSHaskell:0.19.8, NixOS:0.19.8, Stackage:0.19.8 |
| Reverse Dependencies | 63 direct, 31 indirect [details] |
| Executables | shake |
| Downloads | 151819 total (319 in the last 30 days) |
| Rating | 2.5 (votes: 10) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs available [build log] Last success reported on 2015年03月26日 [all 1 reports] |
Readme for shake-0.15
[back to package description]Shake Hackage version 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.
Companies using Shake
- Standard Chartered have been using Shake since 2009, as described in the section 6 of the academic paper.
- factis research GmbH, as described in their blog post.
- Samplecount have been using Shake since 2012, as mentioned in their tweet.
- CovenantEyes use Shake to build their Windows client, as mentioned in their tweet.
- At least 10 other companies are using Shake internally.
Is your company using Shake? Write something public (even just a tweet to @ndm_haskell) and I'll include a link.
Projects using Shake
- Kansas Lava build rules.
- shake-language-c is a small library on top of Shake that allows cross-compiling C, C++ and Objective-C code to various target platforms.
- shake-cabal-build is a small script that uses Cabal sandboxes for initialising and updating build systems based on Shake.