summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Pickering <matthewtpickering@gmail.com>2021-07-14 09:34:29 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-07-27 12:01:51 -0400
commit957fe3596e8a184ab6c4fe41be5c2f07c516fcbe (patch)
treebe6aa4222ce56fb09e3cf1a68fb8e843b350c2cf
parent45f0555455f7384727d959954dc359d491f32ebf (diff)
downloadhaskell-957fe3596e8a184ab6c4fe41be5c2f07c516fcbe.tar.gz
hadrian: Call ghc-pkg recache after copying package database into bindist
The package.cache needs to have a later mod-time than all of the .conf files. This invariant can be destroyed by `cp -r` and so we run `ghc-pkg recache` to ensure the package database which is distributed is consistent. If you are installing a relocatable bindist, for example, on windows, you should preserve mtimes by using cp -a or run ghc-pkg recache after installing.
-rw-r--r--hadrian/src/Rules/BinaryDist.hs5
1 files changed, 5 insertions, 0 deletions
diff --git a/hadrian/src/Rules/BinaryDist.hs b/hadrian/src/Rules/BinaryDist.hs
index af0088ddff..9a0a1e71e4 100644
--- a/hadrian/src/Rules/BinaryDist.hs
+++ b/hadrian/src/Rules/BinaryDist.hs
@@ -167,6 +167,11 @@ bindistRules = do
copyDirectory (ghcBuildDir -/- "lib") bindistFilesDir
copyDirectory (rtsIncludeDir) bindistFilesDir
+ -- Call ghc-pkg recache, after copying so the package.cache is
+ -- accurate, then it's on the distributor to use `cp -a` to install
+ -- a relocatable bindist.
+ cmd_ (bindistFilesDir -/- "bin" -/- "ghc-pkg") ["recache"]
+
unless cross $ need ["docs"]
-- TODO: we should only embed the docs that have been generated