• Stars
    star
    529
  • Rank 83,810 (Top 2 %)
  • Language
    Dockerfile
  • License
    MIT License
  • Created almost 12 years ago
  • Updated 24 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Stable Haskell package sets: vetted consistent packages from Hackage

stackage

check

Stable sets of Haskell 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 stack tool for doing builds, which includes built-in Stackage support.

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 Github workflow action 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:

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 is Stackage LTS still on an older version of GHC?

Typically it takes some months from a new major ghc release before the Haskell ecosystem supports it fully enough that we can push it to a new stable Stackage major version release. There can also be ghc regressions that hold up a LTS major release.

The lag for minor ghc releases should be less but it still requires extra work and there is usually some delay - this also allows for some community testing before updating LTS.

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-snapshots github repo) 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 the #stackage channel on the Haskell Foundation Slack or open an issue or comment on the PR which uploads the package.

More Repositories

1

stack

The Haskell Tool Stack
Haskell
3,995
star
2

rio

A standard library for Haskell
Haskell
839
star
3

commercialhaskell

A special interest group for companies and individuals interested in commercial usage of Haskell
452
star
4

stack-templates

Project templates for stack new
Haskell
233
star
5

haskelldocumentation

Repository for collaborative Haskell documentation
Haskell
209
star
6

lts-haskell

LTS Haskell build plans
Shell
159
star
7

jump

Jump start your Haskell development
158
star
8

haskellers

haskellers.com site
Haskell
141
star
9

path

Typed filepath
Haskell
123
star
10

stackage-server

Server for stable, curated Haskell package sets
Haskell
106
star
11

stack-ide

Stack-based JSON interface to ide-backend
Emacs Lisp
98
star
12

describe

Describe Haskell code in GHCi
PowerShell
72
star
13

casa

Content Addressable Storage Archive
Haskell
41
star
14

pantry

Haskell
39
star
15

all-cabal-hashes

A repository containing all cabal files, with added metadata for package hashes
21
star
16

stackage-snapshots

LTS Haskell and Stackage Nightly snapshot configurations (experimental, for pantry)
Haskell
14
star
17

stackage-content

Content for the stackage.org site
HTML
10
star
18

stackage-nightly

Collection of bundle files for Stackage Nightly builds
10
star
19

all-cabal-metadata

Current metadata for all cabal files
Shell
9
star
20

curator

Haskell Stackage curator build tool
Haskell
8
star
21

all-cabal-files

A repository containing all of the cabal files for all public Haskell packages
8
star
22

state-of-haskell

State of Haskell survey
4
star
23

all-cabal-tool

Update the various all-cabal-* repos
Haskell
4
star
24

hi-file-parser

Haskell
4
star
25

http-download

Haskell
3
star
26

sig-service

Signing service for easily uploading/downloading signatures to the signature index at sig-archive
Haskell
3
star
27

commercialhaskell.com

Codebase for commercialhaskell.com
HTML
3
star
28

sig-tool

Tool for signing, verifying and installing signed packages from sig-archive
Haskell
2
star
29

rio-prettyprint

Haskell
2
star
30

core-cabal-files

Cabal files for packages that ship with GHC but aren't present on Hackage
2
star
31

all-cabal-metadata-tool

Tool for extracting metadata on all packages
1
star
32

stackage-constraints

1
star
33

all-cabal-hashes-tool

Tool for creating the all-cabal-hashes repository
Haskell
1
star
34

devops

Smarty
1
star