From 957fe3596e8a184ab6c4fe41be5c2f07c516fcbe Mon Sep 17 00:00:00 2001 From: Matthew Pickering Date: Wed, 14 Jul 2021 09:34:29 +0100 Subject: 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. --- hadrian/src/Rules/BinaryDist.hs | 5 +++++ 1 file changed, 5 insertions(+) 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 -- cgit v1.2.1