1. add an option to enable the test coverage report. 2. fix errors in expected files...
[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 [Hackage](https://hackage.haskell.org/package/hoopl).
7
8 | Directory      | Contents
9 | -------------- | ---------
10 | `paper/`       | A paper about Hoopl
11 | `prototypes/`  | A sampling of prototypes and early designs
12 | `src/`         | The current official sources to the Cabal package
13 | `testing/`     | Tests, including a sample client.  See [`testing/README`](testing/README)
14
15 ### Development Notes
16
17 To build the library, change to the src directory and run
18
19     cabal configure --prefix=$HOME --user   # we have no idea what this means
20     cabal build
21     cabal install --enable-documentation
22
23 To run the tests in the folder testing/, change to the src directory and run 
24
25     cabal configure --enable-tests
26     cabal test
27
28 To run the tests with the test coverage report, change to the src directory and run 
29
30     cabal configure --enable-tests -f testcoverage
31     cabal test
32
33 You'll need a Haskell Platform, which should include appropriate
34 versions of Cabal and GHC.
35
36 ### Checklist for Making Releases
37
38 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.
39
40 1. Make sure `hoopl` passes Travis for all GHC versions in the build-matrix
41 2. Update Changelog (& `git commit`)
42 3. Generate source tarball via `cabal sdist` and upload a candidate to Hackage (see note below), and inspect the result. 
43 4. If everything checks out, make an annotated and GPG-signed Git release tag: `git tag -a -s v${VER} -m "hoopl ${VER}"`
44 5. Publish (there's a button for that on Hackage) the package candidate
45 6. Work on next release
46
47 Note: To upload to Hackage,
48
49     cabal sdist
50     cabal upload dist/hoopl-*.tar.gz
51
52 However, it's recommended use the Hackage feature for
53 [uploading a candidate](http://hackage.haskell.org/packages/candidates/upload).