Move gmp/ to, fix #14972
authorEdward Z. Yang <>
Sat, 7 Apr 2018 17:32:47 +0000 (13:32 -0400)
committerBen Gamari <>
Tue, 10 Apr 2018 15:36:00 +0000 (11:36 -0400)
Here's how the rube goldberg machine triggered the old bug:

1. If you have a file gmp/, then Cabal will
create a generated file in $DIST/build/gmp/

2. When you attempt to load inplace integer-gmp via GHCi, it will
ask gcc (aka clang on OS X) for the file name of 'gmp', with
base directory set to $DIST/build

3. There is a folder named 'gmp', and so this folder is returned
as the 'library' for gmp

4. GHCi loadArchive chokes to death trying to open a library
that is actually a folder

This patch solves the problem by breaking the chain at (1): if we
don't put in a folder named gmp, NO PROBLEM.

Signed-off-by: Edward Z. Yang <>
Test Plan: validate

Reviewers: angerman, hvr, bgamari

Reviewed By: angerman

Subscribers: erikd, thomie, carter

GHC Trac Issues: #14972

Differential Revision:

libraries/integer-gmp/ [moved from libraries/integer-gmp/gmp/ with 53% similarity]

similarity index 53%
rename from libraries/integer-gmp/gmp/
rename to libraries/integer-gmp/
index 93a4f53..b66f94c 100644 (file)
@@ -1,3 +1,7 @@
+# NB: This file lives in the top-level integer-gmp folder, and not in
+# the gmp subfolder, because of #14972, where we MUST NOT create a
+# folder named 'gmp' in dist/build/
 ifeq "$(HaveLibGmp)" ""
  HaveLibGmp = @HaveLibGmp@
index 3aebeba..1ccd48e 100644 (file)
@@ -106,7 +106,7 @@ AC_SUBST(GhcGmpVerMj)
-AC_CONFIG_FILES([integer-gmp.buildinfo gmp/ include/HsIntegerGmp.h])
+AC_CONFIG_FILES([integer-gmp.buildinfo include/HsIntegerGmp.h])
 dnl * Generate output files
index f18e27d..2a9f3eb 100644 (file)
@@ -27,7 +27,6 @@ endif
 ifneq "$(NO_CLEAN_GMP)" "YES"
 $(eval $(call clean-target,gmp,,\
   libraries/integer-gmp/include/ghc-gmp.h \
-  libraries/integer-gmp/gmp/ \
   libraries/integer-gmp/gmp/libgmp.a \
   libraries/integer-gmp/gmp/gmp.h \
   libraries/integer-gmp/gmp/gmpbuild \
@@ -53,10 +52,10 @@ endif
 ifeq "$(phase)" "final"
 ifneq "$(CLEANING)" "YES"
-# Hack. The file gmp/ doesn't exist yet after running ./configure in
+# Hack. The file doesn't exist yet after running ./configure in
 # the toplevel (ghc) directory. To let some toplevel make commands such as
 # sdist go through, right after ./configure, don't consider this an error.
--include libraries/integer-gmp/dist-install/build/gmp/
+-include libraries/integer-gmp/dist-install/build/
 gmp_CC_OPTS += $(addprefix -I,$(GMP_INCLUDE_DIRS))
index 6edacea..d2f6e3c 100644 (file)
@@ -26,16 +26,19 @@ extra-source-files:
-    gmp/
+-- NB: Many of these tmp files no longer ever actually get plopped in
+-- the root directory post Cabal 2.4, thanks to a change that causes
+-- autoconf/configure to get run inside the dist directory.
-    gmp/