diff options
author | Duncan Coutts <dcoutts@gentoo.org> | 2006-03-26 23:03:00 +0000 |
---|---|---|
committer | Duncan Coutts <dcoutts@gentoo.org> | 2006-03-26 23:03:00 +0000 |
commit | d2d179441cc24afed906d736237463e7dd2379fd (patch) | |
tree | e4876e960fd613dabf055385b3258dcff1161940 /dev-lang | |
parent | Added ia64 binary. Currently the new rev bump is only for ia64. Removed hacks... (diff) | |
download | historical-d2d179441cc24afed906d736237463e7dd2379fd.tar.gz historical-d2d179441cc24afed906d736237463e7dd2379fd.tar.bz2 historical-d2d179441cc24afed906d736237463e7dd2379fd.zip |
Add support for ia64. Change the way we do the CFLAGS and GHC_CFLAGS again. Make limited use of users CFLAGS. Support gcc-4.1. Fix parallel make.
Package-Manager: portage-2.1_pre5-r4
Diffstat (limited to 'dev-lang')
-rw-r--r-- | dev-lang/ghc/ChangeLog | 8 | ||||
-rw-r--r-- | dev-lang/ghc/Manifest | 10 | ||||
-rw-r--r-- | dev-lang/ghc/files/digest-ghc-6.4.1-r3 | 3 | ||||
-rw-r--r-- | dev-lang/ghc/ghc-6.4.1-r3.ebuild | 263 |
4 files changed, 283 insertions, 1 deletions
diff --git a/dev-lang/ghc/ChangeLog b/dev-lang/ghc/ChangeLog index 252368b4aadc..7de25155f323 100644 --- a/dev-lang/ghc/ChangeLog +++ b/dev-lang/ghc/ChangeLog @@ -1,6 +1,12 @@ # 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.88 2006/03/23 20:51:09 chriswhite Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ChangeLog,v 1.89 2006/03/26 23:03:00 dcoutts Exp $ + +*ghc-6.4.1-r3 (26 Mar 2006) + + 26 Mar 2006; Duncan Coutts <dcoutts@gentoo.org> +ghc-6.4.1-r3.ebuild: + Add support for ia64. Change the way we do the CFLAGS and GHC_CFLAGS again. + Make limited use of users CFLAGS. Support gcc-4.1. Fix parallel make. 23 Mar 2006; Chris White <chriswhite@gentoo.org> ghc-6.4.1-r2.ebuild: Marked ghc-6.4.1-r2 amd64/x86 stable for bug #126134. diff --git a/dev-lang/ghc/Manifest b/dev-lang/ghc/Manifest index 10b19913bed6..cf91d557a664 100644 --- a/dev-lang/ghc/Manifest +++ b/dev-lang/ghc/Manifest @@ -1,3 +1,6 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + MD5 efb87c55feb30e05a1d4640ceccd7914 ChangeLog 15593 RMD160 8da8b6a16be5de87d8458731e6cd7a0476f8ee3c ChangeLog 15593 SHA256 759f95a264383a828c67727e4ac21a4410e29d2f83ae7e83a9022d32d1b6faf3 ChangeLog 15593 @@ -46,3 +49,10 @@ SHA256 8bd0631d7a331b61f8686d8c1db0ed7d30a689a723ff53d9a029e3f8ea406a25 ghc-6.4. MD5 c694674dcbef799cd4fdb6914683ebff metadata.xml 223 RMD160 7783e6057effb8b8f0b79cffe8b557b32c633839 metadata.xml 223 SHA256 1d00c8be162a6cb87b3de440b3e63e10b39c12d56e8fbfe592e75aed872b2508 metadata.xml 223 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.2.2 (GNU/Linux) + +iD8DBQFEJx2Z/B0cxt+cq+wRAi9CAJsGp/31vVOHC+9tZMDcProriC1pdACfa+Lk +zHx4h9g33izmfHBDGPkCqvs= +=AAJg +-----END PGP SIGNATURE----- diff --git a/dev-lang/ghc/files/digest-ghc-6.4.1-r3 b/dev-lang/ghc/files/digest-ghc-6.4.1-r3 new file mode 100644 index 000000000000..47c2c92a66b4 --- /dev/null +++ b/dev-lang/ghc/files/digest-ghc-6.4.1-r3 @@ -0,0 +1,3 @@ +MD5 fd289bc7c3afa272ff831a71a50b5b00 ghc-6.4.1-src.tar.bz2 6826112 +RMD160 b6167e3d197bd461f46f860a37fff749bf3aa076 ghc-6.4.1-src.tar.bz2 6826112 +SHA256 4079fa6fe4dc3b0577e1e60167569c02469d46fbd31fbff3a31406000c1ccb36 ghc-6.4.1-src.tar.bz2 6826112 diff --git a/dev-lang/ghc/ghc-6.4.1-r3.ebuild b/dev-lang/ghc/ghc-6.4.1-r3.ebuild new file mode 100644 index 000000000000..5026b381b0e8 --- /dev/null +++ b/dev-lang/ghc/ghc-6.4.1-r3.ebuild @@ -0,0 +1,263 @@ +# 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.1 2006/03/26 23:03:00 dcoutts Exp $ + +# Brief explanation of the bootstrap logic: +# +# ghc requires ghc-bin to bootstrap. +# Therefore, +# (1) both ghc-bin and ghc provide virtual/ghc +# (2) virtual/ghc *must* default to ghc-bin +# (3) ghc depends on virtual/ghc +# +# This solution has the advantage that the binary distribution +# can be removed once an forall after the first succesful install +# of ghc. + +inherit base eutils flag-o-matic autotools ghc-package check-reqs + +DESCRIPTION="The Glasgow Haskell Compiler" +HOMEPAGE="http://www.haskell.org/ghc/" + +# discover if this is a snapshot release +IS_SNAPSHOT="${PV%%*pre*}" # zero if snapshot +MY_PV="${PV/_pre/.}" +MY_P="${PN}-${MY_PV}" +EXTRA_SRC_URI="${MY_PV}" +[[ -z "${IS_SNAPSHOT}" ]] && EXTRA_SRC_URI="stable/dist" + +SRC_URI="http://www.haskell.org/ghc/dist/${EXTRA_SRC_URI}/${MY_P}-src.tar.bz2" + +LICENSE="as-is" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="doc X opengl openal" +#java use flag disabled because of bug #106992 + +S="${WORKDIR}/${MY_P}" + +PROVIDE="virtual/ghc" + +RDEPEND=" + >=sys-devel/gcc-2.95.3 + >=dev-lang/perl-5.6.1 + >=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 )" + +# ghc cannot usually be bootstrapped using later versions ... +DEPEND="${RDEPEND} + <virtual/ghc-6.5 + !>=virtual/ghc-6.6 + doc? ( ~app-text/docbook-xml-dtd-4.2 + app-text/docbook-xsl-stylesheets + >=dev-libs/libxslt-1.1.2 + >=dev-haskell/haddock-0.6-r2 )" +# removed: java? ( >=dev-java/fop-0.20.5 ) + +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 +# } + +append-ghc-cflags() { + local flag compile assemble link + for flag in $*; do + case ${flag} in + compile) compile="yes";; + assemble) assemble="yes";; + link) link="yes";; + *) + [[ ${compile} ]] && GHC_CFLAGS="${GHC_CFLAGS} -optc${flag}" + [[ ${assemble} ]] && GHC_CFLAGS="${GHC_CFLAGS} -opta${flag}" + [[ ${link} ]] && GHC_CFLAGS="${GHC_CFLAGS} -optl${flag}";; + esac + done +} + +ghc_setup_cflags() { + # We need to be very careful with the CFLAGS we ask ghc to pass through to + # gcc. There are plenty of flags which will make gcc produce output that + # breaks ghc in various ways. The main ones we want to pass through are + # -mcpu / -march flags. These are important for arches like alpha & sparc. + # We also use these CFLAGS for building the C parts of ghc, ie the rts. + strip-flags + strip-unsupported-flags + filter-flags -fPIC + + # On ia64 ghc doesn't cope well with the assembler output of gcc if we use + # too high a level of optimisation. -O2 is too much while -O is ok. + use ia64 && replace-flags -O? -O + + GHC_CFLAGS="" + for flag in ${CFLAGS}; do + case ${flag} in + -O*) append-ghc-cflags compile ${flag};; + -m*) append-ghc-cflags compile assemble ${flag};; + -g*) append-ghc-cflags compile assemble ${flag};; + # ignore all other flags, including all -f* flags + esac + done + + # 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) + + # 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" +} + +src_unpack() { + base_src_unpack + ghc_setup_cflags + + cd ${S} + epatch "${FILESDIR}/${PN}-6.4.1-configure.patch" + epatch "${FILESDIR}/${PN}-6.4.1-openal.patch" + epatch "${FILESDIR}/${PN}-6.4.1-gcc41.patch" + + # Modify the ghc driver script to use GHC_CFLAGS + echo "SCRIPT_SUBST_VARS += GHC_CFLAGS" >> "${S}/ghc/driver/ghc/Makefile" + echo "GHC_CFLAGS = ${GHC_CFLAGS}" >> "${S}/ghc/driver/ghc/Makefile" + sed -i -e 's|$TOPDIROPT|$TOPDIROPT $GHC_CFLAGS|' "${S}/ghc/driver/ghc/ghc.sh" + + # Patch to fix parallel make + sed -i 's/mkDerivedConstants.c : $(H_CONFIG)/mkDerivedConstants.c : $(H_CONFIG) $(H_PLATFORM)/' "${S}/ghc/includes/Makefile" + + # We need bigger tables on ia64 to be able to load larger packages + sed -i -e 's/#define GOT_SIZE 0x20000/#define GOT_SIZE 0x40000/' \ + -e 's/#define FUNCTION_TABLE_SIZE 0x10000/#define FUNCTION_TABLE_SIZE 0x20000/' \ + -e 's/#define PLT_SIZE 0x08000/#define PLT_SIZE 0x16000/' \ + "${S}/ghc/rts/Linker.c" +} + +src_compile() { + # initialize build.mk + echo '# Gentoo changes' > mk/build.mk + + # We also need to use the GHC_CFLAGS flags when building ghc itself + echo "SRC_HC_OPTS+=${GHC_CFLAGS}" >> mk/build.mk + echo "SRC_CC_OPTS+=${CFLAGS} -Wa,--noexecstack" >> mk/build.mk + + # determine what to do with documentation + local mydoc + if use doc; then + mydoc="html" +# if use java; then +# mydoc="${mydoc} ps" +# fi + else + mydoc="" + # needed to prevent haddock from being called + echo NO_HADDOCK_DOCS=YES >> mk/build.mk + fi + echo XMLDocWays="${mydoc}" >> mk/build.mk + + # circumvent a very strange bug that seems related with ghc producing too much + # output while being filtered through tee (e.g. due to portage logging) + # reported as bug #111183 + echo "SRC_HC_OPTS+=-fno-warn-deprecations" >> mk/build.mk + + # force the config variable ArSupportsInput to be unset; + # ar in binutils >= 2.14.90.0.8-r1 seems to be classified + # incorrectly by the configure script + echo "ArSupportsInput:=" >> mk/build.mk + + # Required for some architectures, because they don't support ghc fully ... + use alpha || use hppa || use ppc64 && echo "GhcWithInterpreter=NO" >> mk/build.mk + use alpha || use hppa && echo "GhcUnregisterised=YES" >> mk/build.mk + + # On the other hand some arches do support some ghc features even though + # they're off by default + use ia64 && echo "GhcWithInterpreter=YES" >> mk/build.mk + + # The SplitObjs feature doesn't work on several arches and it makes + # 'ar' take loads of RAM: + CHECKREQS_MEMORY="200" + if use alpha || use hppa || use ppc64; then + echo "SplitObjs=NO" >> mk/build.mk + elif ! check_reqs_conditional; then + einfo "Turning off ghc's 'Split Objs' feature because this machine" + einfo "does not have enough RAM for it. This will have the effect" + einfo "of making binaries produced by ghc considerably larger." + echo "SplitObjs=NO" >> mk/build.mk + fi + + # 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 \ + $(use_enable opengl opengl) \ + $(use_enable opengl glut) \ + $(use_enable openal openal) \ + $(use_enable X x11) \ + $(use_enable X hgl) \ + || die "econf failed" + + # the build does not seem to work all that + # well with parallel make + emake all datadir="/usr/share/doc/${PF}" || die "make failed" + # the explicit datadir is required to make the haddock entries + # in the package.conf file point to the right place ... + +} + +src_install () { + local insttarget + + insttarget="install" + use doc && insttarget="${insttarget} install-docs" + + # the libdir0 setting is needed for amd64, and does not + # harm for other arches + emake -j1 ${insttarget} \ + prefix="${D}/usr" \ + datadir="${D}/usr/share/doc/${PF}" \ + infodir="${D}/usr/share/info" \ + mandir="${D}/usr/share/man" \ + libdir0="${D}/usr/$(get_libdir)" \ + || die "make ${insttarget} failed" + + #need to remove ${D} from ghcprof script + cd "${D}/usr/bin" + mv ghcprof ghcprof-orig + sed -e 's:$FPTOOLS_TOP_ABS:#$FPTOOLS_TOP_ABS:' ghcprof-orig > ghcprof + chmod a+x ghcprof + rm -f ghcprof-orig + + cd "${S}/ghc" + dodoc README ANNOUNCE LICENSE VERSION + + dosbin ${FILESDIR}/ghc-updater +} + +pkg_postinst () { + ebegin "Unregistering ghc's built-in cabal " + $(ghc-getghcpkg) unregister Cabal > /dev/null + eend $? + ghc-reregister + einfo "If you have dev-lang/ghc-bin installed, you might" + einfo "want to unmerge it. It is no longer needed." + einfo + ewarn "IMPORTANT:" + ewarn "If you have upgraded from another version of ghc or" + ewarn "if you have switched from ghc-bin to ghc, please run:" + ewarn " /usr/sbin/ghc-updater" + ewarn "to re-merge all ghc-based Haskell libraries." +} + |