stackage

"Stable Hackage": vetted consistent packages from Hackage

  • 所有者: commercialhaskell/stackage
  • 平台:
  • 许可证: MIT License
  • 分类:
  • 主题:
  • 喜欢:
    0
      比较:

Github星跟踪图

stackage

Build Status
Join the chat at https://gitter.im/commercialhaskell/stackage

"Stable Hackage": creating a vetted set of packages from Hackage.
This repository is for package authors and maintainers to get their packages into Stackage.
If you simply want to use Stackage as an end user, please follow the instructions on https://www.stackage.org/.

We strongly recommend using the Haskell tool stack for doing builds, which
includes built-in Stackage support: stack Build Status.

Add your package

We welcome all packages, provided:

Full details on how to add and test a package can be found in the maintainers agreement.

NOTE: There is an approximate 30 minute delay between a package uploading
to Hackage and being available to the Travis build script to check upper
bounds. If a pull request is marked as failed due to using an older version,
please close and reopen the PR to retrigger a Travis build.

Other repos

The Stackage project consists of multiple repositories. This repository
contains the metadata on packages to be included in future builds and some
project information. In addition, we have the following repositories:

We also support some add-on tools to cabal-install to make its usage with
Stackage both easier and more secure:

Curious how it all fits together? See the Stackage data
flow
.

Build the package set

Generally only the stackage build server run by the stackage curator
team and people interested in incorporating stackage snapshots into an
OS distribution need to build the entire package set. If you're
interested in trying this yourself, please check out
the curator guide,
though be aware that this is not a recommended practice and there
likely will be problems you will need to debug yourself.

Processing

The following describes at a high level the series of steps for processing

Nightlies

  1. Get list of core packages
  2. Get build constraints from list of maintained packages
  3. Load up package index
  4. Calculate build plan using newest versions of packages
  5. Write out a YAML file with complete build plan
  6. Verify that the build plan can be compiled
  7. Perform the build

LTS

  1. Load up most recent build plan
  2. Convert build plan into constraints for next build
  3. Continue from step (3) above

Frequently Asked Questions

Why does Stackage have an older version of a package than Hackage?

There are a number of answers to this question:

  • Simplest reason: how old of a Stackage snapshot are you using? Once a
    snapshot is created, it's frozen for all time. So if you use
    nightly-2016-01-01, by the time you get to 2018, it will be pretty dated.
  • If you're using an LTS snapshot: we lock down major versions when
    first creating an LTS run, so subsequent minor versions will not get
    new versions necessary. For example, if LTS 6.0 has foo version
    1.2.3, and the author immediately thereafter releases a version
    1.3.0 and never releases another 1.2.* version, you'll never get
    another update in the LTS 6 line
  • Sometimes we have upper bounds in place because other packages have
    problems with newer versions of dependencies. Open up the
    build-constraints file
    and search for "Stackage upper bounds"
  • Wired-in packages - those that ship with GHC and cannot be upgraded,
    and packages depending on them - are fixed to GHC versions. Common
    examples of this are containers and transformers. There's a lot more
    information on this in
    an FP Complete blog post

How long do you maintain an LTS build?

We only guarantee that we will maintain a single LTS major version at
a time, and that it will be maintained for at least three months. This
is the
originally proposed support window,
and hasn't changed since then.

That said, we do maintain the capability to keep multiple LTS runs
operational in parallel, and with LTS 6 and 7 in fact did so. We
aren't changing our guarantees yet on longevity of a release, but are
trying to push out the bounds a bit farther.

What time are Stackage snapshots published?

Stackage Nightly and LTS are not released at a fixed time of day, they get
pushed to stackage.org (and the metadata to the stackage-nightly and
stackage-lts github repos) when their builds finish on the Stackage build
server and the latest built haddocks have been synced over. This time varies
greatly depending on build times for package updates, bounds breakage,
problems with new packages being added and other build issues, etc. There are
days when a release does not happen. LTS releases tend to happen over the
weekend or early in the week.

Where to get help regarding uploading packages?

Please ask on Gitter or open
an issue or comment on the PR which uploads the package.

主要指标

概览
名称与所有者commercialhaskell/stackage
主编程语言Dockerfile
编程语言Emacs Lisp (语言数: 4)
平台
许可证MIT License
所有者活动
创建于2012-11-20 07:41:30
推送于2025-06-17 22:48:52
最后一次提交2025-06-17 15:48:42
发布数20
最新版本名称ghc-7.10.3-final (发布于 )
第一版名称stackage/0.1.0.0 (发布于 )
用户参与
星数543
关注者数23
派生数818
提交数20.2k
已启用问题?
问题数3116
打开的问题数60
拉请求数4317
打开的拉请求数4
关闭的拉请求数332
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?