- The purpose of the unique package identifier is to detect
- problems caused by re-installing a package without also
- recompiling the packages that depend on it. Recompiling
- dependencies is necessary, because the newly compiled package
- may have a differnt ABI (Application Binary Interface) than the
- previous version, even if both packages were built from the same
- source code using the same compiler. With unique package
- identifiers, a recompiled package will have a different unique
- identifer from the previous version, so packages that depended
- on the previous version are now orphaned - one of their
- dependencies is not satisfied. Packages that are broken in this
- way are shown in the <literal>ghc-pkg list</literal> output
- either in red (if possible) or otherwise surrounded by
- braces. In the following example, we have recompiled and
- reinstalled the <literal>filepath</literal> package, and this
- has caused various dependencies
- including <literal>Cabal</literal> to break:</para>
+ The purpose of the package ID is to detect problems caused by
+ re-installing a package without also recompiling the packages
+ that depend on it. Recompiling dependencies is necessary,
+ because the newly compiled package may have a differnt ABI
+ (Application Binary Interface) than the previous version, even
+ if both packages were built from the same source code using the
+ same compiler. With package IDs, a recompiled
+ package will have a different package ID from the previous
+ version, so packages that depended on the previous version are
+ now orphaned - one of their dependencies is not satisfied.
+ Packages that are broken in this way are shown in
+ the <literal>ghc-pkg list</literal> output either in red (if
+ possible) or otherwise surrounded by braces. In the following
+ example, we have recompiled and reinstalled
+ the <literal>filepath</literal> package, and this has caused
+ various dependencies including <literal>Cabal</literal> to
+ break:</para>