on 095358c help sign in
stackage/README.md
78 lines 3.2 kB history raw
1stackage
2========
4"Stable Hackage," tools for creating a vetted set of packages from Hackage.
6A note about the codebase: the goal is to minimize dependencies and have
7the maximum range of supported compiler versions. Therefore, we avoid
8anything "complicated." For example, instead of using the text package,
9we use Strings everywhere.
11Get your package included
12-------------------------
14In order to get your package included in the set of stable packages, you should
15send a pull request against this repository. In the `Stackage.Config` module,
16there's a function called `defaultStablePackages`. In general, to add a set of
17packages, you would add:
19 mapM_ (add "your-email-address") $ words
20 "package1 package2 package3"
22You can follow the examples of the other sets of packages in that function.
23Once you've done this, you can confirm that your newly added packages are
24compatible with the rest of stackage by building the package set following the
25instructions below.
27__NOTE__: In order to ease the process of adding new packages, we no longer
28require new submissions to be tested on your own system before sending a pull
29request. If you believe your package works with the newest versions of all
30dependencies, you may send a pull request without testing first. If you do so,
31please be sure to state this in the pull request so that the Stackage
32maintainers (e.g., Michael) will know to do basic sanity checking before
33merging.
35You should also read the [maintainers
36agreement](https://github.com/fpco/stackage/wiki/Maintainers-Agreement).
38Build the package set
39---------------------
41As this project is just starting, we don't really have a solid set of steps. In
42general, the following set of commands should be good for getting started:
44 cabal update
45 git clone https://github.com/fpco/stackage
46 cd stackage
47 cabal sandbox init # requires cabal-install 1.18
48 cabal install --only-dependencies
49 cabal configure
50 cabal build
51 ./patching/scripts/create-tarballs.sh
52 ./dist/build/stackage/stackage select
53 ./dist/build/stackage/stackage check
54 ./dist/build/stackage/stackage build # takes a *long* time
55 ./dist/build/stackage/stackage test # also takes a *long* time
57Notes
58-----
60Make sure to have Cabal-1.16 installed in either your global or user database,
61regardless of any sandboxing, as custom build types require it to be present.
62You must build with cabal-install 1.16, due to several important bug fixes.
64Using a non-Haskell Platform versions of GHC
65--------------------------------------------
67By default, Stackage bases itself off of the Haskell Platform for determining
68which packages are core packages, and locks down package versions to match the
69Haskell Platform selections. This works fine when you are compiling with the
70same version of GHC as the Haskell Platform was built on. If you're using a
71different version of GHC, you'll probably need to use the following options for
72the `select` call:
74 --no-platform --use-global-db
76The former says to disregard Haskell Platform package versions, and the latter
77says to determine which packages are core packages based on their presence in
78the global package database.