summaryrefslogtreecommitdiff
path: root/lang/ghc7/patches/patch-libraries_base_configure.ac
diff options
context:
space:
mode:
authorpho <pho@pkgsrc.org>2015-02-04 06:53:18 +0000
committerpho <pho@pkgsrc.org>2015-02-04 06:53:18 +0000
commit9799b2c5289c05f693d35ce4a81331638d42254a (patch)
treed22ce1d7e919758e808bdf354403a13646d06720 /lang/ghc7/patches/patch-libraries_base_configure.ac
parent458a1843484671d62bd360733a9af607140fd39c (diff)
downloadpkgsrc-9799b2c5289c05f693d35ce4a81331638d42254a.tar.gz
lang/ghc7 no longer requires ${PREFIX}/lib to be put into /etc/ld-elf.so.conf
The installed GHC has already been working without the ld hack. These changes should only affect the package build so revbump isn't needed. Makefile (CONFIGURE_ENV): Refactored with no semantic changes. Makefile (post-patch): ${WRKSRC}/libraries/base/configure.ac is patched too. Makefile (CHECK_SHLIBS_SUPPORTED): Removed the variable as the package now supports it. Makefile (CHECK_SHLIBS_SKIP): Added to skip checks for dynamic Haskell libraries. See the comment for details. bootstrap.mk (pre-configure): Use ${CONFIGURE_ENV} when configuring the stage-0 compiler. See the comment for details. patches/patch-libraries_base_configure.ac: Added to prevent {CPP,LD}FLAGS from being clobbered. See the comment for details. I will send the patch to the upstream in a few days or weeks (or even months, depending on my busyness).
Diffstat (limited to 'lang/ghc7/patches/patch-libraries_base_configure.ac')
-rw-r--r--lang/ghc7/patches/patch-libraries_base_configure.ac57
1 files changed, 57 insertions, 0 deletions
diff --git a/lang/ghc7/patches/patch-libraries_base_configure.ac b/lang/ghc7/patches/patch-libraries_base_configure.ac
new file mode 100644
index 00000000000..5a42d47c598
--- /dev/null
+++ b/lang/ghc7/patches/patch-libraries_base_configure.ac
@@ -0,0 +1,57 @@
+$NetBSD: patch-libraries_base_configure.ac,v 1.1 2015/02/04 06:53:18 pho Exp $
+
+Do not clobber CPPFLAGS nor LDFLAGS:
+
+When we are using pkgsrc converters/libiconv, we have libiconv.so in
+${PREFIX}/lib and "-Wl,-R${PREFIX}/lib" in LDFLAGS. In this case
+FP_SEARCH_LIBS_PROTO(iconv) appends "-liconv" to $LIBS so it will be
+linked to any conftest executables that follow, including one which
+will be generated by AC_CHECK_SIZEOF().
+
+The problem that if libraries listed in $LIBS are in a non-standard
+path while rpath flags are missing (due to LDFLAGS being clobbered in
+this case), conftest executables cannot run even if they can be
+linked. And if anything goes wrong during AC_CHECK_SIZEOF(T), it
+considers sizeof(T) as 0 unless T is known to be an existing type.
+
+ ...
+ checking for library containing iconv... -liconv
+ checking for library containing locale_charset... none required
+ checking size of struct MD5Context... 0
+ ...
+
+This means SIZEOF_STRUCT_MD5CONTEXT is defined to 0,
+GHC.Fingerprint.fingerprintData allocates 0 bytes on the heap,
+MD5Init/Update/Final corrupts the heap and then Bad Things will
+happen.
+
+--- libraries/base/configure.ac.orig 2013-04-18 21:30:14.000000000 +0000
++++ libraries/base/configure.ac
+@@ -70,13 +70,13 @@ dnl-------------------------------------
+ AC_ARG_WITH([iconv-includes],
+ [AC_HELP_STRING([--with-iconv-includes],
+ [directory containing iconv.h])],
+- [ICONV_INCLUDE_DIRS=$withval; CPPFLAGS="-I$withval"],
++ [ICONV_INCLUDE_DIRS=$withval; CPPFLAGS="-I$withval $CPPFLAGS"],
+ [ICONV_INCLUDE_DIRS=])
+
+ AC_ARG_WITH([iconv-libraries],
+ [AC_HELP_STRING([--with-iconv-libraries],
+ [directory containing iconv library])],
+- [ICONV_LIB_DIRS=$withval; LDFLAGS="-L$withval"],
++ [ICONV_LIB_DIRS=$withval; LDFLAGS="-L$withval $LDFLAGS"],
+ [ICONV_LIB_DIRS=])
+
+ AC_SUBST(ICONV_INCLUDE_DIRS)
+@@ -183,7 +183,10 @@ fi
+
+ # Hack - md5.h needs HsFFI.h. Is there a better way to do this?
+ CFLAGS="-I../../includes $CFLAGS"
+-AC_CHECK_SIZEOF([struct MD5Context], ,[#include "include/md5.h"])
++dnl Calling AC_CHECK_TYPE(T) makes AC_CHECK_SIZEOF(T) abort on failure
++dnl instead of considering sizeof(T) as 0.
++AC_CHECK_TYPE([struct MD5Context], [], [], [#include "include/md5.h"])
++AC_CHECK_SIZEOF([struct MD5Context], [], [#include "include/md5.h"])
+
+ AC_SUBST(EXTRA_LIBS)
+ AC_CONFIG_FILES([base.buildinfo])