diff options
author | Duncan Coutts <dcoutts@gentoo.org> | 2006-05-18 20:42:44 +0000 |
---|---|---|
committer | Duncan Coutts <dcoutts@gentoo.org> | 2006-05-18 20:42:44 +0000 |
commit | 6993ffb04d0a40314fd3c0d45e10f4d6d4768534 (patch) | |
tree | 6679b06abf653a6c36f2b7287f452fa07e140426 /dev-lang/ghc | |
parent | Security mask kurobox-sources; bug #112791. (diff) | |
download | gentoo-2-6993ffb04d0a40314fd3c0d45e10f4d6d4768534.tar.gz gentoo-2-6993ffb04d0a40314fd3c0d45e10f4d6d4768534.tar.bz2 gentoo-2-6993ffb04d0a40314fd3c0d45e10f4d6d4768534.zip |
Support gcc-4.x better at the expense of hardened gcc-3.x.
(Portage version: 2.1_pre10-r5)
Diffstat (limited to 'dev-lang/ghc')
-rw-r--r-- | dev-lang/ghc/ChangeLog | 14 | ||||
-rw-r--r-- | dev-lang/ghc/files/ghc-6.4.2-sparc32plus.patch | 12 | ||||
-rw-r--r-- | dev-lang/ghc/ghc-6.4.1-r3.ebuild | 61 | ||||
-rw-r--r-- | dev-lang/ghc/ghc-6.4.2.ebuild | 27 |
4 files changed, 88 insertions, 26 deletions
diff --git a/dev-lang/ghc/ChangeLog b/dev-lang/ghc/ChangeLog index 84f252a5bfbe..8a68528a4bfc 100644 --- a/dev-lang/ghc/ChangeLog +++ b/dev-lang/ghc/ChangeLog @@ -1,6 +1,18 @@ # ChangeLog for dev-lang/ghc # Copyright 2002-2006 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ChangeLog,v 1.101 2006/05/12 15:44:52 dcoutts Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ChangeLog,v 1.102 2006/05/18 20:42:44 dcoutts Exp $ + + 18 May 2006; Duncan Coutts <dcoutts@gentoo.org> + +files/ghc-6.4.2-sparc32plus.patch, ghc-6.4.1-r3.ebuild, ghc-6.4.2.ebuild: + Support gcc-4.x better at the expense of hardened gcc-3.x. + Switching between gcc-3.x and gcc-4.x will now just work. Switching between + vanilla and hardened gcc will now require re-emerging rather than just + working. It should also enable anyone who has broken their ghc installation + by upgrading to gcc-4.x to get things working again by re-emerging ghc-6.4.2, + ghc-6.4.1-r3 or ghc-bin-6.4.1-r1. + Only build OpenAL/ALUT bindings if the OpenGL bindings will also be built + (since one depends on the other). + Fix GHCi on sparc when using the V8+ ABI (eg CFLAGS="-march=ultrasparc"). 12 May 2006; Duncan Coutts <dcoutts@gentoo.org> +files/ghc-6.4.2-alut.patch, ghc-6.4.2.ebuild: diff --git a/dev-lang/ghc/files/ghc-6.4.2-sparc32plus.patch b/dev-lang/ghc/files/ghc-6.4.2-sparc32plus.patch new file mode 100644 index 000000000000..709f3db52b1d --- /dev/null +++ b/dev-lang/ghc/files/ghc-6.4.2-sparc32plus.patch @@ -0,0 +1,12 @@ +--- ghc-6.4.2/ghc/rts/Linker.c 2006-01-04 15:24:10.000000000 +0000 ++++ ghc-6.4.2.new/ghc/rts/Linker.c 2006-05-15 21:06:45.000000000 +0100 +@@ -2695,6 +2695,9 @@ + IF_DEBUG(linker,debugBelch( "Architecture is " )); + switch (ehdr->e_machine) { + case EM_386: IF_DEBUG(linker,debugBelch( "x86" )); break; ++#ifdef EM_SPARC32PLUS ++ case EM_SPARC32PLUS: ++#endif + case EM_SPARC: IF_DEBUG(linker,debugBelch( "sparc" )); break; + #ifdef EM_IA_64 + case EM_IA_64: IF_DEBUG(linker,debugBelch( "ia64" )); break; diff --git a/dev-lang/ghc/ghc-6.4.1-r3.ebuild b/dev-lang/ghc/ghc-6.4.1-r3.ebuild index f698a49a125c..2e67a4041cb5 100644 --- a/dev-lang/ghc/ghc-6.4.1-r3.ebuild +++ b/dev-lang/ghc/ghc-6.4.1-r3.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ghc-6.4.1-r3.ebuild,v 1.6 2006/05/03 23:05:28 dcoutts Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ghc-6.4.1-r3.ebuild,v 1.7 2006/05/18 20:42:44 dcoutts Exp $ # Brief explanation of the bootstrap logic: # @@ -14,7 +14,7 @@ # can be removed once an forall after the first succesful install # of ghc. -inherit base eutils flag-o-matic autotools ghc-package check-reqs +inherit base eutils flag-o-matic toolchain-funcs autotools ghc-package check-reqs DESCRIPTION="The Glasgow Haskell Compiler" HOMEPAGE="http://www.haskell.org/ghc/" @@ -43,8 +43,9 @@ RDEPEND=" >=dev-libs/gmp-4.1 >=sys-libs/readline-4.2 X? ( || ( x11-libs/libX11 virtual/x11 ) ) - opengl? ( virtual/opengl virtual/glu virtual/glut ) - openal? ( media-libs/openal )" + opengl? ( virtual/opengl + virtual/glu virtual/glut + openal? ( media-libs/openal ) )" # ghc cannot usually be bootstrapped using later versions ... DEPEND="${RDEPEND} @@ -57,18 +58,24 @@ DEPEND="${RDEPEND} PDEPEND=">=dev-haskell/cabal-1.1.3" -# Portage's resolution of virtuals fails on virtual/ghc in some Portage releases, -# the following function causes the build to fail with an informative error message -# in such a case. -# pkg_setup() { -# if ! has_version virtual/ghc; then -# eerror "This ebuild needs a version of GHC to bootstrap from." -# eerror "Please emerge dev-lang/ghc-bin to get a binary version." -# eerror "You can either use the binary version directly or emerge" -# eerror "dev-lang/ghc afterwards." -# die "virtual/ghc version required to build" -# fi -# } +pkg_setup() { + if use openal && ! use opengl; then + ewarn "The OpenAL bindings require the OpenGL bindings, however" + ewarn "USE=\"-opengl\" so the OpenAL bindings will not be built." + ewarn "To build the OpenAL bindings emerge with USE=\"openal opengl\"" + fi + + # Portage's resolution of virtuals fails on virtual/ghc in some Portage + # releases, the following function causes the build to fail with an + # informative error message in such a case. + #if ! has_version virtual/ghc; then + # eerror "This ebuild needs a version of GHC to bootstrap from." + # eerror "Please emerge dev-lang/ghc-bin to get a binary version." + # eerror "You can either use the binary version directly or emerge" + # eerror "dev-lang/ghc afterwards." + # die "virtual/ghc version required to build" + #fi +} append-ghc-cflags() { local flag compile assemble link @@ -116,14 +123,23 @@ ghc_setup_cflags() { # hardened-gcc needs to be disabled, because the mangler doesn't accept # its output. - append-ghc-cflags compile link $(test-flags-CC -nopie) - append-ghc-cflags compile $(test-flags-CC -fno-stack-protector) + gcc-specs-pie && append-ghc-cflags compile link -nopie + gcc-specs-ssp && append-ghc-cflags compile -fno-stack-protector # We also add -Wa,--noexecstack to get ghc to generate .o files with # non-exectable stack. This it a hack until ghc does it itself properly. append-ghc-cflags assemble "-Wa,--noexecstack" } +ghc_setup_wrapper() { + echo '#!/bin/sh' + echo "GHCBIN=\"$(ghc-libdir)/ghc-$1\";" + echo "TOPDIROPT=\"-B$(ghc-libdir)\";" + echo "GHC_CFLAGS=\"${GHC_CFLAGS}\";" + echo '# Mini-driver for GHC' + echo 'exec $GHCBIN $TOPDIROPT $GHC_CFLAGS ${1+"$@"}' +} + src_unpack() { base_src_unpack ghc_setup_cflags @@ -132,6 +148,7 @@ src_unpack() { epatch "${FILESDIR}/${PN}-6.4.1-configure.patch" epatch "${FILESDIR}/${PN}-6.4.1-openal.patch" epatch "${FILESDIR}/${PN}-6.4.1-gcc41.patch" + epatch "${FILESDIR}/${PN}-6.4.2-sparc32plus.patch" # Modify the ghc driver script to use GHC_CFLAGS echo "SCRIPT_SUBST_VARS += GHC_CFLAGS" >> "${S}/ghc/driver/ghc/Makefile" @@ -192,14 +209,20 @@ src_compile() { echo "SplitObjs=NO" >> mk/build.mk fi + GHC_CFLAGS="" ghc_setup_wrapper $(ghc-version) > "${TMP}/ghc.sh" + chmod +x "${TMP}/ghc.sh" + # we've patched some configure.ac files do allow us to enable/disable the # X11 and HGL packages, so we need to autoreconf. eautoreconf econf \ + --with-ghc="${TMP}/ghc.sh" \ $(use_enable opengl opengl) \ $(use_enable opengl glut) \ - $(use_enable openal openal) \ + $(use openal && use opengl \ + && echo --enable-openal \ + || echo --disable-openal) \ $(use_enable X x11) \ $(use_enable X hgl) \ || die "econf failed" diff --git a/dev-lang/ghc/ghc-6.4.2.ebuild b/dev-lang/ghc/ghc-6.4.2.ebuild index 1f7ef122588e..11409f80f24c 100644 --- a/dev-lang/ghc/ghc-6.4.2.ebuild +++ b/dev-lang/ghc/ghc-6.4.2.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2006 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ghc-6.4.2.ebuild,v 1.4 2006/05/12 15:44:52 dcoutts Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ghc-6.4.2.ebuild,v 1.5 2006/05/18 20:42:44 dcoutts Exp $ # Brief explanation of the bootstrap logic: # @@ -14,7 +14,7 @@ # can be removed once an forall after the first succesful install # of ghc. -inherit base eutils flag-o-matic autotools ghc-package check-reqs +inherit base eutils flag-o-matic toolchain-funcs autotools ghc-package check-reqs DESCRIPTION="The Glasgow Haskell Compiler" HOMEPAGE="http://www.haskell.org/ghc/" @@ -125,20 +125,30 @@ ghc_setup_cflags() { # hardened-gcc needs to be disabled, because the mangler doesn't accept # its output. - append-ghc-cflags compile link $(test-flags-CC -nopie) - append-ghc-cflags compile $(test-flags-CC -fno-stack-protector) + gcc-specs-pie && append-ghc-cflags compile link -nopie + gcc-specs-ssp && append-ghc-cflags compile -fno-stack-protector # We also add -Wa,--noexecstack to get ghc to generate .o files with # non-exectable stack. This it a hack until ghc does it itself properly. append-ghc-cflags assemble "-Wa,--noexecstack" } +ghc_setup_wrapper() { + echo '#!/bin/sh' + echo "GHCBIN=\"$(ghc-libdir)/ghc-$1\";" + echo "TOPDIROPT=\"-B$(ghc-libdir)\";" + echo "GHC_CFLAGS=\"${GHC_CFLAGS}\";" + echo '# Mini-driver for GHC' + echo 'exec $GHCBIN $TOPDIROPT $GHC_CFLAGS ${1+"$@"}' +} + src_unpack() { base_src_unpack ghc_setup_cflags cd ${S} epatch "${WORKDIR}/${P}-alut.patch" + epatch "${FILESDIR}/${P}-sparc32plus.patch" # Modify the ghc driver script to use GHC_CFLAGS echo "SCRIPT_SUBST_VARS += GHC_CFLAGS" >> "${S}/ghc/driver/ghc/Makefile" @@ -202,15 +212,20 @@ src_compile() { echo "SplitObjs=NO" >> mk/build.mk fi + GHC_CFLAGS="" ghc_setup_wrapper $(ghc-version) > "${TMP}/ghc.sh" + chmod +x "${TMP}/ghc.sh" + # We've patched some configure.ac files to fix the OpenAL/ALUT bindings. # So we need to autoreconf. eautoreconf econf \ + --with-ghc="${TMP}/ghc.sh" \ $(use_enable opengl opengl) \ $(use_enable opengl glut) \ - $(use_enable openal openal) \ - $(use_enable openal alut) \ + $(use openal && use opengl \ + && echo --enable-openal --enable-alut \ + || echo --disable-openal --disable-alut) \ $(use_enable X x11) \ $(use_enable X hgl) \ || die "econf failed" |