-# Note that when adding libraries to this file, you also need to add
+# Despite the name "package", this file contains the master list of
+# the *repositories* that make up GHC. It is parsed by boot and darcs-all.
+#
+# Some of this information is duplicated elsewhere in the build system:
+# See Trac #3896
+# In particular when adding libraries to this file, you also need to add
# the library to the SUBDIRS variable in libraries/Makefile so that they
# actually get built
-. ghc git
-utils/hsc2hs hsc2hs darcs
-libraries/array packages/array darcs
-libraries/base packages/base darcs
-libraries/base3-compat packages/base3-compat darcs
-libraries/bytestring packages/bytestring darcs
-libraries/Cabal packages/Cabal darcs
-libraries/containers packages/containers darcs
-libraries/directory packages/directory darcs
-libraries/editline packages/editline darcs
-libraries/filepath packages/filepath darcs
-libraries/ghc-prim packages/ghc-prim darcs
-libraries/haskell98 packages/haskell98 darcs
-libraries/hpc packages/hpc darcs
-libraries/integer-gmp packages/integer-gmp darcs
-libraries/old-locale packages/old-locale darcs
-libraries/old-time packages/old-time darcs
-libraries/packedstring packages/packedstring darcs
-libraries/pretty packages/pretty darcs
-libraries/process packages/process darcs
-libraries/random packages/random darcs
-libraries/template-haskell packages/template-haskell darcs
-libraries/unix packages/unix darcs
-libraries/Win32 packages/Win32 darcs
-libraries/HUnit extralibs packages/HUnit darcs
-libraries/QuickCheck extralibs packages/QuickCheck darcs
-libraries/haskell-src extralibs packages/haskell-src darcs
-libraries/html extralibs packages/html darcs
-libraries/mtl extralibs packages/mtl darcs
-libraries/network extralibs packages/network darcs
-libraries/parsec extralibs packages/parsec darcs
-libraries/parallel extralibs packages/parallel darcs
-libraries/regex-base extralibs packages/regex-base darcs
-libraries/regex-compat extralibs packages/regex-compat darcs
-libraries/regex-posix extralibs packages/regex-posix darcs
-libraries/stm extralibs packages/stm darcs
-libraries/time extralibs packages/time darcs
-libraries/xhtml extralibs packages/xhtml darcs
-libraries/dph dph packages/dph darcs
-testsuite testsuite testsuite darcs
-nofib nofib nofib darcs
+#
+# The repos are of several kinds:
+# - The main GHC source repo
+# - Each boot package lives in a repo
+# - DPH is a repo that contains several packages
+# - Haddock and hsc2hs are applications, built on top of GHC,
+# and in turn needed to bootstrap GHC
+# - ghc-tarballs is need to build GHC
+# - nofib and testsuite are optional helpers
+#
+# The format of the lines in this file is:
+# localpath tag remotepath VCS upstream
+# where
+# * 'localpath' is where to put the repository in a checked out tree.
+# * 'remotepath' is where the repository is in the central repository.
+# * 'VCS' is what version control system the repo uses.
+#
+# * The 'tag' determines when "darcs-all get" will get the
+# repo. If the tag is "-" then it will always get it, but if there
+# is a tag then a corresponding flag must be given to darcs-all, e.g.
+# if you want to get the packages with an "extralibs" or "testsuite"
+# tag then you need to use "darcs-all --extra --testsuite get".
+# Support for new tags must be manually added to the darcs-all script.
+#
+# 'tag' is also used to determine which packages the build system
+# deems to have the EXTRA_PACKAGE property: tags 'dph' and 'extra'
+# both give this property
+#
+# * 'upstream' is the URL of the upstream repo, where there is one, or
+# "-" if there is no upstream.
+#
+# Lines that start with a '#' are comments.
+. - ghc git -
+ghc-tarballs - ghc-tarballs darcs -
+utils/hsc2hs - hsc2hs darcs -
+# haddock does have an upstream:
+# http://code.haskell.org/haddock/
+# but it stays buildable with the last stable release rather than tracking HEAD,
+# and is resynced with the GHC HEAD branch by David Waern when appropriate
+utils/haddock - haddock2 darcs -
+libraries/array - packages/array darcs -
+libraries/base - packages/base darcs -
+libraries/binary - packages/binary darcs http://code.haskell.org/binary/
+libraries/bytestring - packages/bytestring darcs http://darcs.haskell.org/bytestring/
+libraries/Cabal - packages/Cabal darcs http://darcs.haskell.org/cabal/
+libraries/containers - packages/containers darcs -
+libraries/directory - packages/directory darcs -
+libraries/extensible-exceptions - packages/extensible-exceptions darcs -
+libraries/filepath - packages/filepath darcs -
+libraries/ghc-prim - packages/ghc-prim darcs -
+libraries/haskeline - packages/haskeline darcs http://code.haskell.org/haskeline/
+libraries/haskell98 - packages/haskell98 darcs -
+libraries/haskell2010 - packages/haskell2010 darcs -
+libraries/hpc - packages/hpc darcs -
+libraries/integer-gmp - packages/integer-gmp darcs -
+libraries/integer-simple - packages/integer-simple darcs -
+libraries/mtl - packages/mtl darcs -
+libraries/old-locale - packages/old-locale darcs -
+libraries/old-time - packages/old-time darcs -
+libraries/pretty - packages/pretty darcs -
+libraries/process - packages/process darcs -
+libraries/random - packages/random darcs -
+libraries/template-haskell - packages/template-haskell darcs -
+libraries/terminfo - packages/terminfo darcs http://code.haskell.org/terminfo/
+libraries/unix - packages/unix darcs -
+libraries/utf8-string - packages/utf8-string darcs http://code.haskell.org/utf8-string/
+libraries/Win32 - packages/Win32 darcs -
+libraries/xhtml - packages/xhtml darcs -
+testsuite testsuite testsuite darcs -
+nofib nofib nofib darcs -
+libraries/deepseq extra packages/deepseq darcs -
+libraries/parallel extra packages/parallel darcs -
+libraries/stm extra packages/stm darcs -
+libraries/primitive dph packages/primitive darcs http://code.haskell.org/primitive
+libraries/vector dph packages/vector darcs http://code.haskell.org/vector
+libraries/dph dph packages/dph darcs -