[commit: ghc] wip/T15952-2: Hadrian: install patches 'haddock-{html, interface}' (d26869a)

git at git.haskell.org git at git.haskell.org
Thu Jan 24 11:55:25 UTC 2019


Repository : ssh://git@git.haskell.org/ghc

On branch  : wip/T15952-2
Link       : http://ghc.haskell.org/trac/ghc/changeset/d26869ac83935432e0dcea1ff591268232daef32/ghc

>---------------------------------------------------------------

commit d26869ac83935432e0dcea1ff591268232daef32
Author: Alec Theriault <alec.theriault at gmail.com>
Date:   Sat Jan 19 01:06:00 2019 -0800

    Hadrian: install patches 'haddock-{html,interface}'
    
    Since the `$(docdir)` can be picked independently from the `$(libdir)`,
    we need to make sure that that the `haddock-html` and `haddock-interface`
    fields in the package DB (which is in the `$(libdir)`) get updated to
    point to the appropriate places in the `$(docdir)`.
    
    NB: in the make system, `ghc-cabal` would cover this sort of thing by
    re-running `configure` on installation, but here we get away with a
    couple lines of `sed` and a call to `ghc-pkg recache`.
    
    Fixes #16202.


>---------------------------------------------------------------

d26869ac83935432e0dcea1ff591268232daef32
 hadrian/src/Rules/BinaryDist.hs | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/hadrian/src/Rules/BinaryDist.hs b/hadrian/src/Rules/BinaryDist.hs
index f847af9..03740cd 100644
--- a/hadrian/src/Rules/BinaryDist.hs
+++ b/hadrian/src/Rules/BinaryDist.hs
@@ -239,12 +239,25 @@ bindistMakefile = unlines
     , "\t$(EXECUTABLE_FILE) $2 ;"
     , "endef"
     , ""
+    , "# Hacky function to patch up the 'haddock-interfaces' and 'haddock-html'"
+    , "# fields in the package .conf files"
+    , "define patchpackageconf"
+    , "# $1 = package name (ex: 'bytestring')"
+    , "# $2 = path to .conf file"
+    , "# $3 = Docs Directory"
+    , "\tcat $2 | sed 's|haddock-interfaces.*|haddock-interfaces: $3/html/libraries/$1/$1.haddock|' \\"
+    , "\t       | sed 's|haddock-html.*|haddock-html: $3/html/libraries/$1|' \\"
+    , "\t       > $2.copy"
+    , "\tmv $2.copy $2"
+    , "endef"
+    , ""
     , "# QUESTION : should we use shell commands?"
     , ""
     , ""
     , ".PHONY: install"
     , "install: install_lib install_bin install_includes"
     , "install: install_docs install_wrappers install_ghci"
+    , "install: update_package_db"
     , ""
     , "ActualBinsDir=${ghclibdir}/bin"
     , "WrapperBinsDir=${bindir}"
@@ -298,6 +311,15 @@ bindistMakefile = unlines
       "$(WrapperBinsDir),$(ActualBinsDir),$(ActualBinsDir)/$p," ++
       "$(libdir),$(docdir),$(includedir)))"
     , ""
+    , "PKG_CONFS = $(wildcard $(libdir)/package.conf.d/*)"
+    , "update_package_db:"
+    , "\t at echo \"Updating the package DB\""
+    , "\t$(foreach p, $(PKG_CONFS),\\"
+    , "\t\t$(call patchpackageconf," ++
+      "$(shell echo $(notdir $p) | sed 's/-\\([0-9]*[0-9]\\.\\)*conf//g')," ++
+      "$p,$(docdir)))"
+    , "\t$(WrapperBinsDir)/ghc-pkg recache"
+    , ""
     , "# END INSTALL"
     , "# ----------------------------------------------------------------------"
     ]



More information about the ghc-commits mailing list