From 5b35ca58d94d07751ef2f810686f588ce9c0878a Mon Sep 17 00:00:00 2001
From: Matthew Pickering <matthewtpickering@gmail.com>
Date: Thu, 3 Mar 2022 13:52:03 +0000
Subject: [PATCH] Fix gen_contents_index logic for hadrian bindist

---
 distrib/mkDocs/mkDocs           | 11 ++++++++---
 hadrian/bindist/Makefile        |  3 +++
 hadrian/src/Rules/BinaryDist.hs |  3 +++
 libraries/gen_contents_index    | 13 ++++++++++++-
 4 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/distrib/mkDocs/mkDocs b/distrib/mkDocs/mkDocs
index 641d945cfad..b11c9dde785 100755
--- a/distrib/mkDocs/mkDocs
+++ b/distrib/mkDocs/mkDocs
@@ -40,13 +40,18 @@ mv ../../../../../../windows/doc/html/libraries/Win32-* . || \
 
 sh gen_contents_index
 cd ..
-for i in haddock libraries users_guide
+for i in */
 do
-    tar -Jcf ../../../../../$i.html.tar.xz $i
+    dir=${i%*/}
+    tar -Jcf ../../../../../$dir.html.tar.xz $dir
 done
 mv index.html ../../../../..
 cd ..
-mv ./*.pdf ../../../..
+# make
+mv ./*.pdf ../../../.. || \
+# hadrian
+  mv ./pdfs/*.pdf ../../../.. || \
+    die "failed to find PDFs"
 cd ../../../..
 [ "$NO_CLEAN" -eq 0 ] && rm -r inst
 [ "$NO_CLEAN" -eq 0 ] && rm -r windows
diff --git a/hadrian/bindist/Makefile b/hadrian/bindist/Makefile
index 3ae599452f3..fdeb06ace5a 100644
--- a/hadrian/bindist/Makefile
+++ b/hadrian/bindist/Makefile
@@ -190,6 +190,9 @@ install_docs:
 		cp -R $$i "$(docdir)/"; \
 	done
 
+	$(INSTALL_DATA) docs-utils/prologue.txt "$(docdir)/html/libraries/"
+	$(INSTALL_SCRIPT) docs-utils/gen_contents_index "$(docdir)/html/libraries/"
+
 BINARY_NAMES=$(shell ls ./wrappers/)
 install_wrappers: install_bin_libdir
 	@echo "Installing wrapper scripts"
diff --git a/hadrian/src/Rules/BinaryDist.hs b/hadrian/src/Rules/BinaryDist.hs
index a6693a75f3c..f07c455e385 100644
--- a/hadrian/src/Rules/BinaryDist.hs
+++ b/hadrian/src/Rules/BinaryDist.hs
@@ -227,6 +227,9 @@ bindistRules = do
         -- included in the bindist in the past (part of the problem in #18669).
         whenM (liftIO (IO.doesDirectoryExist (root -/- "docs"))) $ do
           copyDirectory (root -/- "docs") bindistFilesDir
+          copyFile ("libraries" -/- "prologue.txt") (bindistFilesDir -/- "docs-utils" -/- "prologue.txt")
+          copyFile ("libraries" -/- "gen_contents_index") (bindistFilesDir -/- "docs-utils" -/- "gen_contents_index" )
+
         when windowsHost $ do
           copyDirectory (root -/- "mingw") bindistFilesDir
           -- we use that opportunity to delete the .stamp file that we use
diff --git a/libraries/gen_contents_index b/libraries/gen_contents_index
index 29be2e13f9f..1efd5eb1570 100644
--- a/libraries/gen_contents_index
+++ b/libraries/gen_contents_index
@@ -32,7 +32,18 @@ then
     [ -d dist-haddock ] || mkdir dist-haddock
     cd dist-haddock
 
-    HADDOCK=../../inplace/bin/haddock
+    if [ -e ../../inplace/bin/haddock ]
+    then
+      # Make #17527
+      HADDOCK=../../inplace/bin/haddock
+    elif [ -e ../../../../../bin/haddock ]
+    then
+      # Hadrian
+      HADDOCK=../../../../../bin/haddock
+    else
+      echo "Haddock not found"
+      exit 1
+    fi
     # Exclude Cabal package-tests, which may run haddock
     HADDOCK_FILES=`find ../ -name *.haddock | grep -v 'PackageTests' | sort`
     HADDOCK_ARGS="-p ../prologue.txt"
-- 
GitLab