3[](https://github.com/commercialhaskell/stackage/actions/workflows/check.yml)
4[](https://gitter.im/commercialhaskell/stackage?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
6Stable sets of Haskell Packages from Hackage
8_This repository is for package authors and maintainers to get their packages into Stackage._
10If you simply want to use Stackage as an end user, please follow the instructions on [https://www.stackage.org/](https://www.stackage.org).
12We strongly recommend using the Haskell [stack](https://github.com/commercialhaskell/stack) tool for doing builds, which
13includes built-in Stackage support.
18We welcome all packages, provided:
20* The package author/maintainer agrees to the [maintainers agreement](https://github.com/commercialhaskell/stackage/blob/master/MAINTAINERS.md).
21* The package is buildable and testable from Hackage. We recommend [the Stack Travis script](https://docs.haskellstack.org/en/stable/travis_ci/), which ensures a package is not accidentally incomplete.
22* 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).
23* The package is compatible with the versions of libraries that ship with GHC ([more information on lenient lower bounds](https://tech.fpcomplete.com/blog/2014/05/lenient-lower-bounds)).
25Full details on how to add and test a package can be found in the [maintainers agreement](https://github.com/commercialhaskell/stackage/blob/master/MAINTAINERS.md#adding-a-package).
27__NOTE__: There is an approximate 30 minute delay between a package uploading
28to Hackage and being available to the Github workflow action to check upper
29bounds. If a pull request is marked as failed due to using an older version,
30please close and reopen the PR to retrigger a Travis build.
35The Stackage project consists of multiple repositories. This repository
36contains the metadata on packages to be included in future builds and some
37project information. In addition, we have the following repositories:
39* [stackage-server](https://github.com/fpco/stackage-server) [](https://github.com/fpco/stackage-server/actions/workflows/base.yml)
40* [curator](https://github.com/commercialhaskell/curator) [](https://travis-ci.org/fpco/stackage-curator)
41* [lts-haskell](https://github.com/commercialhaskell/lts-haskell)
42* [stackage-snapshots](https://github.com/commercialhaskell/stackage-snapshots/)
44Curious how it all fits together? See the [Stackage data
45flow](https://github.com/commercialhaskell/stackage/blob/master/DATA-FLOW.md).
50Generally only the stackage build server run by the stackage curator
51team and people interested in incorporating stackage snapshots into an
52OS distribution need to build the entire package set. If you're
53interested in trying this yourself, please check out
54[the curator guide](https://github.com/commercialhaskell/stackage/blob/master/CURATORS.md),
55though be aware that this is not a recommended practice and there
56likely will be problems you will need to debug yourself.
60The following describes at a high level the series of steps for processing
641. Get list of core packages
652. Get build constraints from list of maintained packages
663. Load up package index
674. Calculate build plan using newest versions of packages
685. Write out a YAML file with complete build plan
696. Verify that the build plan can be compiled
741. Load up most recent build plan
752. Convert build plan into constraints for next build
763. Continue from step (3) above
78Frequently Asked Questions
79--------------------------
81__Why is Stackage LTS still on an older version of GHC?__
83Typically it takes some months from a new major ghc release before
84the Haskell ecosystem supports it fully enough that we can push it
85to a new stable Stackage major version release. There can also be
86ghc regressions that hold up a LTS major release.
88The lag for minor ghc releases should be less
89but it still requires extra work and there is usually some delay - this also
90allows for some community testing before updating LTS.
92__Why does Stackage have an older version of a package than Hackage?__
94There are a number of answers to this question:
96* Simplest reason: how old of a Stackage snapshot are you using? Once a
97 snapshot is created, it's frozen for all time. So if you use
98 nightly-2016-01-01, by the time you get to 2018, it will be pretty dated.
99* If you're using an LTS snapshot: we lock down major versions when
100 first creating an LTS run, so subsequent minor versions will not get
101 new versions necessary. For example, if LTS 6.0 has `foo` version
102 1.2.3, and the author immediately thereafter releases a version
103 1.3.0 and never releases another 1.2.\* version, you'll never get
104 another update in the LTS 6 line
105* Sometimes we have upper bounds in place because other packages have
106 problems with newer versions of dependencies. Open up the
107 [build-constraints file](https://github.com/commercialhaskell/stackage/blob/master/build-constraints.yaml)
108 and search for "Stackage upper bounds"
109* Wired-in packages - those that ship with GHC and cannot be upgraded,
110 and packages depending on them - are fixed to GHC versions. Common
111 examples of this are containers and transformers. There's a lot more
112 information on this in
113 [an FP Complete blog post](https://tech.fpcomplete.com/blog/2014/05/lenient-lower-bounds)
115__How long do you maintain an LTS build?__
117We only guarantee that we will maintain a single LTS major version at
118a time, and that it will be maintained for at least three months. This
120[originally proposed support window](https://tech.fpcomplete.com/blog/2014/12/backporting-bug-fixes),
121and hasn't changed since then.
123That said, we do maintain the capability to keep multiple LTS runs
124operational in parallel, and with LTS 6 and 7 in fact did so. We
125aren't changing our guarantees yet on longevity of a release, but are
126trying to push out the bounds a bit farther.
128__What time are Stackage snapshots published?__
130Stackage Nightly and LTS are not released at a fixed time of day, they get
131pushed to stackage.org (and the metadata to the stackage-nightly and
132stackage-lts github repos) when their builds finish on the Stackage build
133server and the latest built haddocks have been synced over. This time varies
134greatly depending on build times for package updates, bounds breakage,
135problems with new packages being added and other build issues, etc. There are
136days when a release does not happen. LTS releases tend to happen over the
137weekend or early in the week.
139__Where to get help regarding uploading packages?__
141Please ask on [Gitter](https://gitter.im/commercialhaskell/stackage) or open
142an issue or comment on the PR which uploads the package.
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list