mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-09-29 07:32:58 +00:00
doc/haskell: Dedup and edit justStaticExecutables
Make sure all relevant info is in the user manual and avoid duplication of efforts, or things going out of sync.
This commit is contained in:
parent
1ed7eb0f9a
commit
299bd6aa7c
@ -929,10 +929,12 @@ for this to work.
|
|||||||
Haskell dependencies, but will still link dynamically against libc, GMP and
|
Haskell dependencies, but will still link dynamically against libc, GMP and
|
||||||
other system library dependencies.
|
other system library dependencies.
|
||||||
|
|
||||||
If the library being built or its dependencies use their Cabal-generated
|
If a library or its dependencies use their Cabal-generated
|
||||||
`Paths_*` module, this may not work as well if GHC's dead code elimination is
|
`Paths_*` module, this may not work as well if GHC's dead code elimination is
|
||||||
unable to remove the references to the dependency's store path that module
|
unable to remove the references to the dependency's store path that module
|
||||||
contains. (See [nixpkgs#164630][164630] for more information.)
|
contains.
|
||||||
|
As a consequence, an unused reference may be created from the static binary to such a _library_ store path.
|
||||||
|
(See [nixpkgs#164630][164630] for more information.)
|
||||||
|
|
||||||
Importing the `Paths_*` module may cause builds to fail with this message:
|
Importing the `Paths_*` module may cause builds to fail with this message:
|
||||||
|
|
||||||
|
@ -117,20 +117,8 @@ in
|
|||||||
# This is used by `haskell.lib.justStaticExecutables` to help prevent static
|
# This is used by `haskell.lib.justStaticExecutables` to help prevent static
|
||||||
# Haskell binaries from having erroneous dependencies on GHC.
|
# Haskell binaries from having erroneous dependencies on GHC.
|
||||||
#
|
#
|
||||||
# Generated `Paths_*` modules include paths for the runtime library
|
# See https://nixos.org/manual/nixpkgs/unstable/#haskell-packaging-helpers
|
||||||
# directory (and similar) of the package being built. If the `Paths_*`
|
# or its source doc/languages-frameworks/haskell.section.md
|
||||||
# module is imported, this creates a dependency from the static binary
|
|
||||||
# being built to the _library_ being built (which is dynamically linked
|
|
||||||
# and depends on the GHC used to build it).
|
|
||||||
#
|
|
||||||
# To avoid this:
|
|
||||||
# 1. Build the impacted derivation.
|
|
||||||
# 2. Run `strings` on the built binary of the impacted derivation to
|
|
||||||
# locate the store paths it depends on.
|
|
||||||
# 3. Add `remove-references-to -t ${bad-store-path-in-binary}` to the
|
|
||||||
# impacted derivation's `postInstall`.
|
|
||||||
#
|
|
||||||
# See: https://github.com/NixOS/nixpkgs/issues/164630
|
|
||||||
, disallowGhcReference ? false
|
, disallowGhcReference ? false
|
||||||
, # Cabal 3.8 which is shipped by default for GHC >= 9.3 always calls
|
, # Cabal 3.8 which is shipped by default for GHC >= 9.3 always calls
|
||||||
# `pkg-config --libs --static` as part of the configure step. This requires
|
# `pkg-config --libs --static` as part of the configure step. This requires
|
||||||
|
Loading…
Reference in New Issue
Block a user