Skip to content

Commit 24cee3d

Browse files
committed
Clarify build targets that are the names of GHC boot packages
1 parent 36272e8 commit 24cee3d

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

doc/build_command.md

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,26 @@ supported syntaxes for targets are:
8585
of the test suite and benchmark components, respectively, are selected to be
8686
built.
8787

88-
Stackage snapshots do not include directly GHC boot packages (packages that
89-
come with GHC and are included in GHC's global package database). For
90-
example, if `Cabal` is not a local package or an extra dep, then
91-
`stack build Cabal` will specify the latest version of that package in the
88+
If *package* is a GHC boot package (packages that come with GHC and are
89+
included in GHC's global package database), the behaviour can be complex.
90+
If the boot package has not been 'replaced', then `stack build` will,
91+
effectively, do nothing. However, if the boot package has been 'replaced'
92+
then `stack build` will specify the latest version of that package in the
9293
package index, which may differ from the version provided by the version of
93-
GHC specified by the snapshot.
94+
GHC specified by the snapshot. A boot package will be treated as 'replaced'
95+
if the package is included directly in the Stackage snapshot or it depends
96+
on a package included directly in the snapshot. Stackage snapshots do not
97+
include directly most boot packages but some snapshots may include directly
98+
some boot packages. In particular, some snapshots include directly `Win32`
99+
(which is a boot package on Windows) while others do not. For example, if
100+
`Cabal` (a boot package) is not a local package or an extra dep, then
101+
`stack build Cabal` with Stackage snapshot LTS Haskell 19.25 will:
102+
103+
* on Windows, try to build the latest version of `Cabal` in the package
104+
index (because that snapshot includes `Win32` directly, and `Cabal`
105+
depends on `Win32` and so is treated as 'replaced'); and
106+
* on non-Windows, effectively, do nothing (because `Cabal` is not
107+
'replaced').
94108

95109
* *package identifier*, e.g. `stack build foobar-1.2.3`, is usually used to
96110
include specific package versions from the package index.

0 commit comments

Comments
 (0)