diff options
author | pho <pho@pkgsrc.org> | 2015-02-04 06:53:18 +0000 |
---|---|---|
committer | pho <pho@pkgsrc.org> | 2015-02-04 06:53:18 +0000 |
commit | 9799b2c5289c05f693d35ce4a81331638d42254a (patch) | |
tree | d22ce1d7e919758e808bdf354403a13646d06720 /lang/ghc7/patches/patch-libraries_base_configure.ac | |
parent | 458a1843484671d62bd360733a9af607140fd39c (diff) | |
download | pkgsrc-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.ac | 57 |
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]) |