Repo cleanup. Fixes #6
[packages/hoopl.git] / README.md
1 The `hoopl` Package  [![Hackage](https://img.shields.io/hackage/v/hoopl.svg)](https://hackage.haskell.org/package/hoopl) [![Build Status](https://travis-ci.org/haskell/hoopl.svg)](https://travis-ci.org/haskell/hoopl)
2 ===================
3
4 ## Hoopl: A Higher-Order OPtimization Library
5
6 API documentation can be found on
7 [Hackage](https://hackage.haskell.org/package/hoopl).  For detailed explanation
8 of the library design see paper ["Hoopl: A Modular, Reusable Library for
9 Dataflow Analysis and
10 Transformation"](http://research.microsoft.com/en-us/um/people/simonpj/Papers/c--/hoopl-haskell10.pdf)
11
12 | Directory      | Contents
13 | -------------- | ---------
14 | `src/`         | The current official sources to the Cabal package
15 | `testing/`     | Tests, including a sample client.  See [`testing/README`](testing/README)
16
17 ### Development Notes
18
19 To build the library run:
20
21     cabal configure
22     cabal build
23     cabal install --enable-documentation
24
25 To run the tests in the `testing/` folder run:
26
27     cabal configure --enable-tests
28     cabal test
29
30 To run the tests with the test coverage report run:
31
32     cabal configure --enable-tests -f testcoverage
33     cabal test
34
35 You'll need a Haskell Platform, which should include appropriate
36 versions of Cabal and GHC.
37
38 ### Checklist for Making Releases
39
40 In order to facilitate GHC development's workflow, the version in [`hoopl.cabal`](hoopl.cabal) is to be bumped as soon as a change requires a respective version bump (according to the PVP) relative to the last released `hoopl` version.
41
42 1. Make sure `hoopl` passes Travis for all GHC versions in the build-matrix
43 2. Update Changelog (& `git commit`)
44 3. Generate source tarball via `cabal sdist` and upload a candidate to Hackage (see note below), and inspect the result. 
45 4. If everything checks out, make an annotated and GPG-signed Git release tag: `git tag -a -s v${VER} -m "hoopl ${VER}"`
46 5. Publish (there's a button for that on Hackage) the package candidate
47 6. Work on next release
48
49 Note: To upload to Hackage,
50
51     cabal sdist
52     cabal upload dist/hoopl-*.tar.gz
53
54 However, it's recommended use the Hackage feature for
55 [uploading a candidate](http://hackage.haskell.org/packages/candidates/upload).