on 623c4e9 help sign in
stackage/README.md
86 lines 5.1 kB history raw
1stackage
2========
4[![Build Status](https://travis-ci.org/fpco/stackage.svg?branch=master)](https://travis-ci.org/fpco/stackage)
6"Stable Hackage": creating a vetted set of packages from Hackage.
7This repository is for package authors and maintainers to get their packages into Stackage.
8If you simply want to use Stackage as an end user, please follow the instructions on [https://www.stackage.org/](https://www.stackage.org).
10We strongly recommend using the Haskell tool stack for doing builds, which
11includes built-in Stackage support: [stack](https://github.com/commercialhaskell/stack) [![Build Status](https://travis-ci.org/commercialhaskell/stack.svg?branch=master)](https://travis-ci.org/commercialhaskell/stack).
14Add your package
15----------------
17We welcome all packages, provided:
19* The package author/maintainer agrees to the [maintainers agreement](https://github.com/fpco/stackage/blob/master/MAINTAINERS.md).
20* The package is buildable and testable from Hackage. We recommend [the Stack Travis script](http://docs.haskellstack.org/en/stable/GUIDE.html#travis-with-caching), which ensures a package is not accidentally incomplete.
21* The package is compatible with the newest versions of all dependencies (You can find restrictive upper bounds by visiting http://packdeps.haskellers.com/feed?needle=PACKAGENAME).
22* The package is compatible with the versions of libraries that ship with GHC ([more information on lenient lower bounds](https://www.fpcomplete.com/blog/2014/05/lenient-lower-bounds)).
24Full details on how to add and test a package can be found in the [maintainers agreement](https://github.com/fpco/stackage/blob/master/MAINTAINERS.md#adding-a-package).
26__NOTE__: There is an approximate 30 minute delay between a package uploading
27to Hackage and being available to the Travis build script to check upper
28bounds. If a pull request is marked as failed due to using an older version,
29please close and reopen the PR to retrigger a Travis build.
31Other repos
32-----------
34The Stackage project consists of multiple repositories. This repository
35contains the metadata on packages to be included in future builds and some
36project information. In addition, we have the following repositories:
38* [stackage-server](https://github.com/fpco/stackage-server) [![Build Status](https://travis-ci.org/fpco/stackage-server.svg?branch=master)](https://travis-ci.org/fpco/stackage-server)
39* [stackage-curator](https://github.com/fpco/stackage-curator) [![Build Status](https://travis-ci.org/fpco/stackage-curator.svg?branch=master)](https://travis-ci.org/fpco/stackage-curator)
40* [stackage-types](https://github.com/fpco/stackage-types) [![Build Status](https://travis-ci.org/fpco/stackage-types.svg?branch=master)](https://travis-ci.org/fpco/stackage-types)
41* [lts-haskell](https://github.com/fpco/lts-haskell)
42* [stackage-nightly](https://github.com/fpco/stackage-nightly)
44We also support some add-on tools to cabal-install to make its usage with
45Stackage both easier and more secure:
47* [stackage-cli](https://github.com/fpco/stackage-cli) [![Build Status](https://travis-ci.org/fpco/stackage-cli.svg?branch=master)](https://travis-ci.org/fpco/stackage-cli)
48* [stackage-update](https://github.com/fpco/stackage-update) [![Build Status](https://travis-ci.org/fpco/stackage-update.svg?branch=master)](https://travis-ci.org/fpco/stackage-update)
49* [stackage-upload](https://github.com/fpco/stackage-upload) [![Build Status](https://travis-ci.org/fpco/stackage-upload.svg?branch=master)](https://travis-ci.org/fpco/stackage-upload)
50* [stackage-install](https://github.com/fpco/stackage-install) [![Build Status](https://travis-ci.org/fpco/stackage-install.svg?branch=master)](https://travis-ci.org/fpco/stackage-install)
51* [stackage-build-plan](https://github.com/fpco/stackage-build-plan) [![Build Status](https://travis-ci.org/fpco/stackage-build-plan.svg?branch=master)](https://travis-ci.org/fpco/stackage-build-plan)
53Curious how it all fits together? See the [Stackage data
54flow](https://github.com/fpco/stackage/blob/master/DATA-FLOW.md).
57Build the package set
58---------------------
60Generally only the stackage build server run by the stackage curator
61team and people intrested in incorporating stackage snapshots into an
62OS distribution need to build the entire package set. If you're
63interested in trying this yourself, please check out
64[the curator guide](https://github.com/fpco/stackage/blob/master/CURATORS.md),
65though be aware that this is not a recommended practice and there
66likely will be problems you will need to debug yourself.
68## Processing
70The following describes at a high level the series of steps for processing
72### Nightlies
741. Get list of core packages
752. Get build constraints from list of maintained packages
763. Load up package index
774. Calculate build plan using newest versions of packages
785. Write out a YAML file with complete build plan
796. Verify that the build plan can be compiled
807. Perform the build
82### LTS
841. Load up most recent build plan
852. Convert build plan into constraints for next build
863. Continue from step (3) above