From: Sergei Trofimovich Date: Wed, 3 Aug 2011 12:35:20 +0000 (+0000) Subject: Version bump. Bump request by Alexandru Scvortov (bug #352498) X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=c15c0b16e02a2ffb208c91a367209401d38f5d0d;p=gentoo.git Version bump. Bump request by Alexandru Scvortov (bug #352498) Package-Manager: portage-2.1.10.10/cvs/Linux x86_64 RepoMan-Options: --force --- diff --git a/dev-lang/ghc/ChangeLog b/dev-lang/ghc/ChangeLog index fc8edbe7c242..7d28ef3af1b0 100644 --- a/dev-lang/ghc/ChangeLog +++ b/dev-lang/ghc/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for dev-lang/ghc # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ChangeLog,v 1.206 2011/07/05 18:30:32 slyfox Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ChangeLog,v 1.207 2011/08/03 12:35:20 slyfox Exp $ + +*ghc-7.0.4 (03 Aug 2011) + + 03 Aug 2011; Sergei Trofimovich + +files/ghc-7.0.2-CHOST.patch, +ghc-7.0.4.ebuild, + +files/ghc-7.0.4-CHOST-prefix.patch, +files/ghc-7.0.4-CHOST-softfloat.patch, + +files/ghc-7.0.4-darwin8.patch, metadata.xml: + Version bump. Bump request by Alexandru Scvortov (bug #352498) 05 Jul 2011; Sergei Trofimovich ghc-6.12.3.ebuild, ghc-6.12.3-r2.ebuild: diff --git a/dev-lang/ghc/Manifest b/dev-lang/ghc/Manifest index 810640d51734..471b821aefd6 100644 --- a/dev-lang/ghc/Manifest +++ b/dev-lang/ghc/Manifest @@ -25,6 +25,10 @@ AUX ghc-6.12.3-pic-powerpc.patch 965 RMD160 f7f96e147f92e590c47fa753e41532cbda47 AUX ghc-6.12.3-powerpc-darwin-no-mmap.patch 1482 RMD160 5a50cc2f6a61ec8c4abbc30cd0dbf46c50b87452 SHA1 ae70bee8460f40839e1e2ad9e0f637d5ea9d8d8d SHA256 2921717b946f030f27fc1edc0f3770f47c52465512add25906747c789bbc0934 AUX ghc-6.12.3-ppc-use-libffi-for-foreign-import-wrapper.patch 609 RMD160 a26c8a5c7fde2188639484d5cc622de669e5f427 SHA1 03615e6b6428dd693b57d16420f3853ce3d51f47 SHA256 537a96473cec66739534da7cc88bbde37d7f5f0ab158a9921e666985c18fc1b5 AUX ghc-6.12.3-ticket-2615-linker-script.patch 8956 RMD160 f843756077a767a9ec59f114676bd06102259302 SHA1 ce5e2b90fc8a99ae37d2ade07d75e611514bb389 SHA256 e670eafd89bcbf7842eedb16af6f538e11c9644c56af6eaa8a3f87b8d0c794aa +AUX ghc-7.0.2-CHOST.patch 3027 RMD160 c33e8ab30ffba0e930772784144f7891072e88c3 SHA1 43981fe4d07686e8bf88d7f4367b4a4244722bfc SHA256 0f7081318e06a4bc013e2e7ac18c56224558d4268cf98fab3f9b3fe5367b9a9b +AUX ghc-7.0.4-CHOST-prefix.patch 272 RMD160 740e2bb11688261865d9d5bc3f16c0d37f38ab21 SHA1 746515ea3c023ce5aa91df87b3592dbdc8d28202 SHA256 83942dfcbe1968c7f5e0ae09e4d84d77d85778839814fca1689e168cad3a4f66 +AUX ghc-7.0.4-CHOST-softfloat.patch 371 RMD160 91988c43d3ec589a49707979eb8c6d785eb39c11 SHA1 df27b850c7fe5ea60cdabdc84df22ee5ab711118 SHA256 90e04c7d56612d24920a1801865b8e53f6ac1e291a11a6219f939117613e5976 +AUX ghc-7.0.4-darwin8.patch 486 RMD160 475b8276380291d6c88866fc021fc33c795f28d9 SHA1 1c10dda546a339bb206e3d7047314c7b377d9254 SHA256 b0857679f29aab3719df5538a2f104924cf5df913927a2748be3f77d2c8ea481 AUX ghc-apply-gmp-hack 2585 RMD160 1246e8fc40bbbb28f52f755457feca97bf3e22cc SHA1 63a7999b829548f82bcdcc4da869956abe2890bf SHA256 0d3c9e52be232734c916e9765fae770225ad6fb04c0948780867450401ff1eed AUX ghc-bash-completion 6496 RMD160 61574aab2f8ed4ae906df5ac291f528384b79b87 SHA1 a0d7c264cc8ff3d235511e151dc82f9e16691bac SHA256 82a862bea2c9248e06fcf74d307de07b05a55f9eb95f412762bd02e53fece822 DIST ghc-6.10.1-i386-apple-darwin.tar.bz2 97910484 RMD160 3764303b9c9161905b5c0e2e4000cfe0fceea85c SHA1 299a829981db533cbab71426051cf924f4a6cdd7 SHA256 b806bf9c163314c3aac389df1cf5f30e31d3557baa0eabce9279f6ef58305d51 @@ -33,6 +37,7 @@ DIST ghc-6.10.4-i386-unknown-solaris2.tar.bz2 78409258 RMD160 8595f81eb215437155 DIST ghc-6.10.4-sparc-sun-solaris2.tar.bz2 87371847 RMD160 6028d2224524c6dfeb7b9b352eeee1b59f077df2 SHA1 dc48c475bce414545b734e27e50433f43a3a1b0c SHA256 bc6fa54fcb66d3d5f14c4bb32bb932a9168040e3e7eb4ef410de7fc18ecd3a38 DIST ghc-6.10.4-src.tar.bz2 8060565 RMD160 5f83baf2549f1f4bea140c6a80728c2a76f60ab6 SHA1 0566858b409066d98da70de5adb9a7030d0df5dc SHA256 d66a8e52572f4ff819fe5c4e34c6dd1e84a7763e25c3fadcc222453c0bd8534d DIST ghc-6.12.3-src.tar.bz2 26592939 RMD160 021619aec4c820009e77745657bfdf0d9705f3e7 SHA1 d811be2131d4403ea452aa94fe71edd1b6bd0a79 SHA256 6cbdbe415011f2c7d15e4d850758d8d393f70617b88cb3237d2c602bb60e5e68 +DIST ghc-7.0.4-src.tar.bz2 24205070 RMD160 80727043c2141a0472f9e2fffcdf5a8eb9fb55ec SHA1 469a7ed626e53bf02f1e73713dea61e172106fd5 SHA256 1a9b78d9d66c9c21de6c0932e36bb87406a4856f1611bf83bd44539bdc6ed0ed DIST ghc-bin-6.10.4-alpha.tbz2 84499083 RMD160 5f68a5592663d7c6abf3617ccab9aa35cbfc2d63 SHA1 88fb6020bf1fab2e0914c223087af94e926a1dda SHA256 cfe28ea83e000f1ba0853b78dd27b35fa5d823c4cb94699f901aec5e2705c315 DIST ghc-bin-6.10.4-amd64.tbz2 51566179 RMD160 68b261b4bbef89021a2c92e99c70db45ed85d9e7 SHA1 27e542cc49fa47566c59407fad1c9254d46a8d03 SHA256 2ced87862603a44a59744459a8231f587c0f225f70eb4861ad2db5098c2433a1 DIST ghc-bin-6.10.4-ia64.tbz2 86508052 RMD160 ea1f1de73be8ca51abd8eb748d92694ea4ade2f6 SHA1 eea28fe871e1e3821b370715930864d7fd955181 SHA256 2e8f03eec65329abb15c3d3351d8d4f896ac6c7fc8a8b3815807c3bd0329292e @@ -48,15 +53,21 @@ DIST ghc-bin-6.12.3-ppc64.tbz2 95781107 RMD160 b089772ef07a33db30084727a286a14e7 DIST ghc-bin-6.12.3-sparc.tbz2 79140624 RMD160 f18441723c13d46f64942e195c4c0324b5d75833 SHA1 56fbce712d54f78d4d7e3fbeae77ab1476f9c6a3 SHA256 3e3fb498a1fae5cd2285ea9a22d94b4bead500c0aace5ee76d49e1a3919da96f DIST ghc-bin-6.12.3-x86-fbsd.tbz2 78971971 RMD160 e8a852e260d78bf5e3851952d5fb850f46ca89b1 SHA1 c08e81718202513f16219de29880271676473461 SHA256 8c39359b3dad6216a1b92464468f9c554d5bae546b037f57d7dccb8ecd5f9f7a DIST ghc-bin-6.12.3-x86.tbz2 82262946 RMD160 8256df61e6998d819c7d40d613037c5f313c948b SHA1 73dc4422bbabf5c0d8de4a6672db4b3fedd42f9c SHA256 0d74a18473d6303e8818a6bd1de87f6dfd86466e7d967d68707a6c255a96945d +DIST ghc-bin-7.0.4-alpha.tbz2 111174890 RMD160 efefd10c170e67c3b4b2390fb6bc40bdf4167ba0 SHA1 e90397df11e41aa1b8138b9c5de3caa516d5cec5 SHA256 a83e77b23b49b5d5e47d55019ff7583802b074b5fc48df622572931252391107 +DIST ghc-bin-7.0.4-amd64.tbz2 82353700 RMD160 89a3520ab32a11ef1359a454705d955055845132 SHA1 87350c1186b6033bd0deb9918be7974c07975a4c SHA256 7232ee42a99046d084668cb08d5a7b80ee0adeaf4b26fa5b900b9ea2759bd807 +DIST ghc-bin-7.0.4-arm.tbz2 113773534 RMD160 f8e8827b47b9c73cc12594f25d5afc4c24dba883 SHA1 0ed57f08149dbdc2980208da135e36d0f4a36cea SHA256 cad8248628d33f2f02a46fd8c40170f75273f3dbb8e443a427fcad2840911138 +DIST ghc-bin-7.0.4-sparc.tbz2 82859870 RMD160 39494fbf3dc6c4ec553219281f3a2b0338f5be96 SHA1 a7dc521ed68d69a07d3c5988a1fd4b9502a7deab SHA256 72e067091fa2108c9b5c42bce833e2ac853a9c3bb3406ae23d1d25b5c71168e2 +DIST ghc-bin-7.0.4-x86.tbz2 81814964 RMD160 c901d8b58679d243fa0e77ac7b8d0b6c63fc4bbc SHA1 1a31ff2813bfa0ca8d2dda2d501f95d396974eed SHA256 45450fea47fb8b6cea50bcd7b6c78d121ba6444a5e70f8a53b81009cedcc5838 EBUILD ghc-6.10.4-r1.ebuild 13011 RMD160 4feb3ad764af5ad16b3dd5a000d49755c8b91c2a SHA1 c8eb3181598c05053e1f27b5fdb2a3a4264377b1 SHA256 f8c163192a9c5a62158bbb5698cef9872fa0e64956689aeafb3f90c8c9670b0a EBUILD ghc-6.12.3-r2.ebuild 20515 RMD160 6db339fd7d94a8db5d8cd30730037151855bbaf9 SHA1 be6f59c823756aab0ce6c8e492469855b6d04cde SHA256 2a14fff51f910460049540a77e006e0978e7f623907b273bacf779c88d418694 EBUILD ghc-6.12.3.ebuild 15063 RMD160 6476ac66f125ad0d2c13351a73e560b1df67c822 SHA1 15d9cd33ba4bb23b31d8a03111d31d4bd1bfe603 SHA256 f968048385c848f60007ea9bca2598c7d26a06a02945557b912dd587636d3ece -MISC ChangeLog 38004 RMD160 c0e44c85584e5b4ee631729ae7f59480b39fe7b5 SHA1 7f32c133166c62aa0625e87927cb97cb7c87cc71 SHA256 a37fbf9eca22d25e695a4f18bd03db4d573a17f321e1f5cbea6336bcea6969e3 -MISC metadata.xml 442 RMD160 9cfa0af9084477c8a70ecf0ac3fb3093ae0cd602 SHA1 be2833090f093ac1c8fc2f5c6f3f253bdbdd6b96 SHA256 2bacbdfcaea11289949a687626f59f99af8fda9ec495b2c349ce5898d9f0dcd4 +EBUILD ghc-7.0.4.ebuild 19812 RMD160 42ee17d2efb0c08f12f250b004f5a63b5ded8efa SHA1 44fed9e90942e44ec9ac6550bc4e88616d24a59b SHA256 2f47ca94febcfd7f939a8be70311305bd8b27ed2b4d4f33e57301d824a806c5b +MISC ChangeLog 38328 RMD160 24160d271ae8dcaffe40db7514e23ca6f600f646 SHA1 070b5789a26183f5d4585c09fa283303a4253f8e SHA256 bccaaa2b7643d1ce386d34dd55bcade7a7021bf44028a17030dc991dc867d168 +MISC metadata.xml 511 RMD160 79a995fb7989ead0e2a1aaae42a015a34864e2ff SHA1 a7222153de1350459b28c0be825beeb13c0aa16e SHA256 4474d6b9638e6b78e16025c88b5455fa353ca723c05ce80aa3f8b426149ec1dd -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (GNU/Linux) -iEYEARECAAYFAk4TWRYACgkQcaHudmEf86rgPQCfbAE6mOSzYn4xv7UIug30YSzo -Vi8AnAmc2j957q686KIcdGRlznoALfjs -=25X+ +iEYEARECAAYFAk45QVkACgkQcaHudmEf86oLBQCeKN4D2GxlHjOeuKx2UcmUlFHW +ZdsAnjY8w3CSTCSdNyRy+cOm5boZEecu +=+hm/ -----END PGP SIGNATURE----- diff --git a/dev-lang/ghc/files/ghc-7.0.2-CHOST.patch b/dev-lang/ghc/files/ghc-7.0.2-CHOST.patch new file mode 100644 index 000000000000..7479149a9efa --- /dev/null +++ b/dev-lang/ghc/files/ghc-7.0.2-CHOST.patch @@ -0,0 +1,89 @@ +Tue Mar 1 08:41:08 EET 2011 Sergei Trofimovich + * configure: triplet: accept i486 CPU (and more), more vendors and OSes + + Gentoo has interesting ports: + + - freebsd with following triplet: + ./configure --build=i686-gentoo-freebsd8 --host=i686-gentoo-freebsd8 --host=i686-gentoo-freebsd8 + should be recognized as 'i386-unknown-freebsd' + - 'pc' vendor along with non-'i386' is very common: + ./configure --build=i486-pc-linux-gnu --i486-pc-linux-gnu --host=i486-pc-linux-gnu + ./configure --build=i686-pc-linux-gnu --i686-pc-linux-gnu --host=i686-pc-linux-gnu + should be recognized as 'i386-unknown-linux' + + Patch adds: + + - 'pc' vendor (maps to 'unknown') + - 'gentoo' vendor (maps to 'unknown') + - 'i486', 'i586', 'i686' CPUs (maps to 'i386') + - 'freebsd8' OS (maps to 'freebsd') +diff -rN -u old-ghc/aclocal.m4 new-ghc/aclocal.m4 +--- old-ghc/aclocal.m4 2011-03-04 13:26:18.512776569 +0200 ++++ new-ghc/aclocal.m4 2011-03-04 13:26:18.606776569 +0200 +@@ -1458,7 +1458,7 @@ + hppa*) + $2="hppa" + ;; +- i386) ++ i386|i486|i586|i686) + $2="i386" + ;; + ia64) +@@ -1511,7 +1511,15 @@ + # -------------------------------- + # converts vendor from gnu to ghc naming, and assigns the result to $target_var + AC_DEFUN([GHC_CONVERT_VENDOR],[ +-$2="$1" ++ case "$1" in ++ pc|gentoo) # like i686-pc-linux-gnu and i686-gentoo-freebsd8 ++ $2="unknown" ++ ;; ++ *) ++ #pass thru by default ++ $2="$1" ++ ;; ++ esac + ]) + + # GHC_CONVERT_OS(os, target_var) +@@ -1526,6 +1534,9 @@ + freebsd|netbsd|openbsd|dragonfly|osf1|osf3|hpux|linuxaout|kfreebsdgnu|freebsd2|solaris2|cygwin32|mingw32|darwin|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix|haiku) + $2="$1" + ;; ++ freebsd8) # like i686-gentoo-freebsd8 ++ $2="freebsd" ++ ;; + *) + echo "Unknown OS $1" + exit 1 +Tue Mar 1 21:40:18 EET 2011 Sergei Trofimovich + * configure: amend sanity check + + As we perform some mangling of original --build/--host/--target + params we should check the result of mangling against desired triplet, + not originally passed by user. + + Patch also adds mangled triplets to the output. +diff -rN -u old-ghc/configure.ac new-ghc/configure.ac +--- old-ghc/configure.ac 2011-03-04 13:26:20.005776569 +0200 ++++ new-ghc/configure.ac 2011-03-04 13:26:20.319776569 +0200 +@@ -288,7 +288,7 @@ + + # Verify that the installed (bootstrap) GHC is capable of generating + # code for the requested build platform. +-if test "$build" != "$bootstrap_target" ++if test "$BuildPlatform" != "$bootstrap_target" + then + echo "This GHC (${WithGhc}) does not generate code for the build platform" + echo " GHC target platform : $bootstrap_target" +@@ -296,6 +296,10 @@ + exit 1 + fi + ++echo "GHC build : $BuildPlatform" ++echo "GHC host : $HostPlatform" ++echo "GHC target : $TargetPlatform" ++ + AC_SUBST(BuildPlatform) + AC_SUBST(HostPlatform) + AC_SUBST(TargetPlatform) diff --git a/dev-lang/ghc/files/ghc-7.0.4-CHOST-prefix.patch b/dev-lang/ghc/files/ghc-7.0.4-CHOST-prefix.patch new file mode 100644 index 000000000000..682c573c90a6 --- /dev/null +++ b/dev-lang/ghc/files/ghc-7.0.4-CHOST-prefix.patch @@ -0,0 +1,17 @@ +Strip versioning components from *HOST for Darwin and Solaris + +--- aclocal.m4 ++++ aclocal.m4 +@@ -1358,6 +1358,12 @@ + freebsd*) + $2="freebsd" + ;; ++ darwin*) ++ $2="darwin" ++ ;; ++ solaris2.*) ++ $2="solaris2" ++ ;; + *) + echo "Unknown OS $1" + exit 1 diff --git a/dev-lang/ghc/files/ghc-7.0.4-CHOST-softfloat.patch b/dev-lang/ghc/files/ghc-7.0.4-CHOST-softfloat.patch new file mode 100644 index 000000000000..7b726d2f2116 --- /dev/null +++ b/dev-lang/ghc/files/ghc-7.0.4-CHOST-softfloat.patch @@ -0,0 +1,14 @@ +diff --git a/aclocal.m4 b/aclocal.m4 +index b10eeec..13988fe 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -1487,6 +1487,9 @@ AC_DEFUN([GHC_CONVERT_VENDOR],[ + pc|gentoo) # like i686-pc-linux-gnu and i686-gentoo-freebsd8 + $2="unknown" + ;; ++ softfloat) # like armv5tel-softfloat-linux-gnueabi ++ $2="unknown" ++ ;; + *) + #pass thru by default + $2="$1" diff --git a/dev-lang/ghc/files/ghc-7.0.4-darwin8.patch b/dev-lang/ghc/files/ghc-7.0.4-darwin8.patch new file mode 100644 index 000000000000..bfbee41b4f93 --- /dev/null +++ b/dev-lang/ghc/files/ghc-7.0.4-darwin8.patch @@ -0,0 +1,18 @@ +Workaround headers problem in Darwin 8 as well. + +--- rts/PosixSource.h ++++ rts/PosixSource.h +@@ -11,6 +11,13 @@ + + #include + ++#if defined(darwin_HOST_OS) ++/* unfortunately the hack below only works for Darwin 9 and ++ * above, so as hack include sys/types early (before setting ++ * _POSIX_C_SOURCE) (this obviously obsoletes the hack below) */ ++#include ++#endif ++ + #if defined(freebsd_HOST_OS) + #define _POSIX_C_SOURCE 200112L + #define _XOPEN_SOURCE 600 diff --git a/dev-lang/ghc/ghc-7.0.4.ebuild b/dev-lang/ghc/ghc-7.0.4.ebuild new file mode 100644 index 000000000000..df1d9d0b4cbf --- /dev/null +++ b/dev-lang/ghc/ghc-7.0.4.ebuild @@ -0,0 +1,583 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ghc-7.0.4.ebuild,v 1.1 2011/08/03 12:35:20 slyfox Exp $ + +# Brief explanation of the bootstrap logic: +# +# Previous ghc ebuilds have been split into two: ghc and ghc-bin, +# where ghc-bin was primarily used for bootstrapping purposes. +# From now on, these two ebuilds have been combined, with the +# binary USE flag used to determine whether or not the pre-built +# binary package should be emerged or whether ghc should be compiled +# from source. If the latter, then the relevant ghc-bin for the +# arch in question will be used in the working directory to compile +# ghc from source. +# +# This solution has the advantage of allowing us to retain the one +# ebuild for both packages, and thus phase out virtual/ghc. + +# Note to users of hardened gcc-3.x: +# +# If you emerge ghc with hardened gcc it should work fine (because we +# turn off the hardened features that would otherwise break ghc). +# However, emerging ghc while using a vanilla gcc and then switching to +# hardened gcc (using gcc-config) will leave you with a broken ghc. To +# fix it you would need to either switch back to vanilla gcc or re-emerge +# ghc (or ghc-bin). Note that also if you are using hardened gcc-3.x and +# you switch to gcc-4.x that this will also break ghc and you'll need to +# re-emerge ghc (or ghc-bin). People using vanilla gcc can switch between +# gcc-3.x and 4.x with no problems. + +EAPI="3" + +inherit base autotools bash-completion eutils flag-o-matic multilib toolchain-funcs ghc-package versionator pax-utils + +DESCRIPTION="The Glasgow Haskell Compiler" +HOMEPAGE="http://www.haskell.org/ghc/" + +# we don't have any binaries yet +arch_binaries="" + +# sorted! +arch_binaries="$arch_binaries alpha? ( http://code.haskell.org/~slyfox/ghc-alpha/ghc-bin-${PV}-alpha.tbz2 )" +arch_binaries="$arch_binaries arm? ( http://code.haskell.org/~slyfox/ghc-arm/ghc-bin-${PV}-arm.tbz2 )" +arch_binaries="$arch_binaries amd64? ( http://code.haskell.org/~slyfox/ghc-amd64/ghc-bin-${PV}-amd64.tbz2 )" +#arch_binaries="$arch_binaries ia64? ( http://code.haskell.org/~slyfox/ghc-ia64/ghc-bin-${PV}-ia64-fixed-fiw.tbz2 )" +#arch_binaries="$arch_binaries ppc? ( mirror://gentoo/ghc-bin-${PV}-ppc.tbz2 )" +#arch_binaries="$arch_binaries ppc64? ( mirror://gentoo/ghc-bin-${PV}-ppc64.tbz2 )" +arch_binaries="$arch_binaries sparc? ( http://code.haskell.org/~slyfox/ghc-sparc/ghc-bin-${PV}-sparc.tbz2 )" +arch_binaries="$arch_binaries x86? ( http://code.haskell.org/~slyfox/ghc-x86/ghc-bin-${PV}-x86.tbz2 )" + +# various ports: +#arch_binaries="$arch_binaries x86-fbsd? ( http://code.haskell.org/~slyfox/ghc-x86-fbsd/ghc-bin-${PV}-x86-fbsd.tbz2 )" + +# 0 - yet +yet_binary() { + case "${ARCH}" in + alpha) + return 0 + ;; + arm) + ewarn "ARM binary is built on armv5tel-eabi toolchain. Use with caution." + return 0 + ;; + amd64) + return 0 + ;; + sparc) + return 0 + ;; + x86) + return 0 + ;; + *) + return 1 + ;; + esac +} + +SRC_URI="!binary? ( http://www.haskell.org/ghc/dist/${PV}/${P}-src.tar.bz2 )" +[[ -n $arch_binaries ]] && SRC_URI+=" !ghcbootstrap? ( $arch_binaries )" +LICENSE="BSD" +SLOT="0" +# ghc on ia64 needs gcc to support -mcmodel=medium (or some dark hackery) to avoid TOC overflow +KEYWORDS="~alpha ~amd64 -ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~x86-solaris" +IUSE="doc ghcbootstrap llvm" +IUSE+=" binary" # don't forget about me later! + +RDEPEND=" + !dev-lang/ghc-bin + >=sys-devel/gcc-2.95.3 + >=sys-devel/binutils-2.17 + >=dev-lang/perl-5.6.1 + >=dev-libs/gmp-5 + !=gmp-5, even if >=gmp-4.1 would be enough. this is due to +# that we want the binaries to use the latest versioun available, and not to be +# built against gmp-4 + +DEPEND="${RDEPEND} + ghcbootstrap? ( doc? ( app-text/docbook-xml-dtd:4.2 + app-text/docbook-xml-dtd:4.5 + app-text/docbook-xsl-stylesheets + >=dev-libs/libxslt-1.1.2 ) )" +# In the ghcbootstrap case we rely on the developer having +# >=ghc-5.04.3 on their $PATH already + +PDEPEND="!ghcbootstrap? ( =app-admin/haskell-updater-1.2* )" +PDEPEND=" + ${PDEPEND} + dev-haskell/syb + llvm? ( sys-devel/llvm )" + +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_FLAGS="${GHC_FLAGS} -optc${flag}" CFLAGS="${CFLAGS} ${flag}" + [[ ${assemble} ]] && GHC_FLAGS="${GHC_FLAGS} -opta${flag}" CFLAGS="${CFLAGS} ${flag}" + [[ ${link} ]] && GHC_FLAGS="${GHC_FLAGS} -optl${flag}" FILTERED_LDFLAGS="${FILTERED_LDFLAGS} ${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 + + GHC_FLAGS="" + for flag in ${CFLAGS}; do + case ${flag} in + + # Ignore extra optimisation (ghc passes -O to gcc anyway) + # -O2 and above break on too many systems + -O*) ;; + + # Arch and ABI flags are what we're really after + -m*) append-ghc-cflags compile assemble ${flag};; + + # Debugging flags don't help either. You can't debug Haskell code + # at the C source level and the mangler discards the debug info. + -g*) ;; + + # Ignore all other flags, including all -f* flags + esac + done + + FILTERED_LDFLAGS="" + for flag in ${LDFLAGS}; do + case ${flag} in + # Pass the canary. we don't quite respect LDFLAGS, but we have an excuse! + "-Wl,--hash-style="*) append-ghc-cflags link ${flag};; + + # Ignore all other flags + esac + done + + # hardened-gcc needs to be disabled, because the mangler doesn't accept + # its output. + gcc-specs-pie && append-ghc-cflags compile link -nopie + gcc-specs-ssp && append-ghc-cflags compile -fno-stack-protector + + # prevent from failind building unregisterised ghc: + # http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg171602.html + use ppc64 && append-ghc-cflags compile -mminimal-toc + # fix the similar issue as ppc64 TOC on ia64. ia64 has limited size of small data + # currently ghc fails to build haddock + # http://osdir.com/ml/gnu.binutils.bugs/2004-10/msg00050.html + use ia64 && append-ghc-cflags compile -G0 +} + +# substitutes string $1 to $2 in files $3 $4 ... +relocate_path() { + local from=$1 + local to=$2 + shift 2 + local file= + for file in "$@" + do + sed -i -e "s|$from|$to|g" \ + "$file" || die "path relocation failed for '$file'" + done +} + +# changes hardcoded ghc paths and updates package index +# $1 - new absolute root path +relocate_ghc() { + local to=$1 + + # backup original script to use it later after relocation + local gp_back="${T}/ghc-pkg-${PV}-orig" + cp "${WORKDIR}/usr/bin/ghc-pkg-${PV}" "$gp_back" || die "unable to backup ghc-pkg wrapper" + + # Relocate from /usr to ${EPREFIX}/usr + relocate_path "/usr" "${to}/usr" \ + "${WORKDIR}/usr/bin/ghc-${PV}" \ + "${WORKDIR}/usr/bin/ghci-${PV}" \ + "${WORKDIR}/usr/bin/ghc-pkg-${PV}" \ + "${WORKDIR}/usr/bin/hsc2hs" \ + "${WORKDIR}/usr/$(get_libdir)/${P}/package.conf.d/"* + + # this one we will use to regenerate cache + # so it shoult point to current tree location + relocate_path "/usr" "${WORKDIR}/usr" "$gp_back" + + if use prefix; then + # and insert LD_LIBRARY_PATH entry to EPREFIX dir tree + # TODO: add the same for darwin's CHOST and it's DYLD_ + local new_ldpath='LD_LIBRARY_PATH="'${EPREFIX}/$(get_libdir):${EPREFIX}/usr/$(get_libdir)'${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}"\nexport LD_LIBRARY_PATH' + sed -i -e '2i'"$new_ldpath" \ + "${WORKDIR}/usr/bin/ghc-${PV}" \ + "${WORKDIR}/usr/bin/ghci-${PV}" \ + "${WORKDIR}/usr/bin/ghc-pkg-${PV}" \ + "$gp_back" \ + "${WORKDIR}/usr/bin/hsc2hs" \ + || die "Adding LD_LIBRARY_PATH for wrappers failed" + fi + + # regenerate the binary package cache + "$gp_back" recache || die "failed to update cache after relocation" + rm "$gp_back" +} + +pkg_setup() { + if use ghcbootstrap; then + ewarn "You requested ghc bootstrapping, this is usually only used" + ewarn "by Gentoo developers to make binary .tbz2 packages for" + ewarn "use with the ghc ebuild's USE=\"binary\" feature." + use binary && \ + die "USE=\"ghcbootstrap binary\" is not a valid combination." + [[ -z $(type -P ghc) ]] && \ + die "Could not find a ghc to bootstrap with." + else + if ! yet_binary; then + eerror "Please try emerging with USE=ghcbootstrap and report build" + eerror "sucess or failure to the haskell team (haskell@gentoo.org)" + die "No binary available for '${ARCH}' arch yet, USE=ghcbootstrap" + fi + fi +} + +src_unpack() { + # Create the ${S} dir if we're using the binary version + use binary && mkdir "${S}" + + # the Solaris and Darwin binaries from ghc (maeder) need to be + # unpacked separately, so prevent them from being unpacked + local ONLYA=${A} + case ${CHOST} in + *-darwin* | *-solaris*) ONLYA=${P}-src.tar.bz2 ;; + esac + unpack ${ONLYA} +} + +src_prepare() { + [[ ${CHOST} != *-darwin* ]] && \ + source "${FILESDIR}/ghc-apply-gmp-hack" "$(get_libdir)" + + ghc_setup_cflags + + if ! use ghcbootstrap; then + # Modify the wrapper script from the binary tarball to use GHC_FLAGS. + # See bug #313635. + sed -i -e "s|\"\$topdir\"|\"\$topdir\" ${GHC_FLAGS}|" \ + "${WORKDIR}/usr/bin/ghc-${PV}" + + # allow hardened users use vanilla binary to bootstrap ghc + # ghci uses mmap with rwx protection at it implements dynamic + # linking on it's own (bug #299709) + pax-mark -m "${WORKDIR}/usr/$(get_libdir)/${P}/ghc" + fi + + if use binary; then + if use prefix; then + relocate_ghc "${EPREFIX}" + fi + + # Move unpacked files to the expected place + mv "${WORKDIR}/usr" "${S}" + else + if ! use ghcbootstrap; then + case ${CHOST} in + *-darwin* | *-solaris*) + # UPDATE ME for ghc-7 + mkdir "${WORKDIR}"/ghc-bin-installer || die + pushd "${WORKDIR}"/ghc-bin-installer > /dev/null || die + use sparc-solaris && unpack ghc-6.10.4-sparc-sun-solaris2.tar.bz2 + use x86-solaris && unpack ghc-6.10.4-i386-unknown-solaris2.tar.bz2 + use ppc-macos && unpack ghc-6.10.1-powerpc-apple-darwin.tar.bz2 + use x86-macos && unpack ghc-6.10.1-i386-apple-darwin.tar.bz2 + popd > /dev/null + + pushd "${WORKDIR}"/ghc-bin-installer/ghc-6.10.? > /dev/null || die + # fix the binaries so they run, on Solaris we need an + # LD_LIBRARY_PATH which has our prefix libdirs, on + # Darwin we need to replace the frameworks with our libs + # from the prefix fix before installation, because some + # of the tools are actually used during configure/make + if [[ ${CHOST} == *-solaris* ]] ; then + export LD_LIBRARY_PATH="${EPREFIX}/$(get_libdir):${EPREFIX}/usr/$(get_libdir):${LD_LIBRARY_PATH}" + elif [[ ${CHOST} == *-darwin* ]] ; then + # http://hackage.haskell.org/trac/ghc/ticket/2942 + pushd utils/haddock/dist-install/build > /dev/null + ln -s Haddock haddock >& /dev/null # fails on IN-sensitive + popd > /dev/null + + local readline_framework=GNUreadline.framework/GNUreadline + local gmp_framework=/opt/local/lib/libgmp.3.dylib + local ncurses_file=/opt/local/lib/libncurses.5.dylib + for binary in $(scanmacho -BRE MH_EXECUTE -F '%F' .) ; do + install_name_tool -change \ + ${readline_framework} \ + "${EPREFIX}"/lib/libreadline.dylib \ + ${binary} || die + install_name_tool -change \ + ${gmp_framework} \ + "${EPREFIX}"/usr/lib/libgmp.dylib \ + ${binary} || die + install_name_tool -change \ + ${ncurses_file} \ + "${EPREFIX}"/usr/lib/libncurses.dylib \ + ${binary} || die + done + # we don't do frameworks! + sed -i \ + -e 's/\(frameworks = \)\["GMP"\]/\1[]/g' \ + -e 's/\(extraLibraries = \)\["m"\]/\1["m","gmp"]/g' \ + rts/package.conf.in || die + fi + + # it is autoconf, but we really don't want to give it too + # much arguments, in fact we do the make in-place anyway + ./configure --prefix="${WORKDIR}"/usr || die + make install || die + popd > /dev/null + ;; + *) + relocate_ghc "${WORKDIR}" + ;; + esac + fi + + sed -i -e "s|\"\$topdir\"|\"\$topdir\" ${GHC_FLAGS}|" \ + "${S}/ghc/ghc.wrapper" + + cd "${S}" # otherwise epatch will break + + epatch "${FILESDIR}/ghc-7.0.2-CHOST.patch" + epatch "${FILESDIR}/ghc-7.0.4-CHOST-prefix.patch" + epatch "${FILESDIR}/ghc-7.0.4-CHOST-softfloat.patch" + + epatch "${FILESDIR}"/${PN}-7.0.4-darwin8.patch + epatch "${FILESDIR}"/${PN}-6.12.3-mach-o-relocation-limit.patch + + if use prefix; then + # Make configure find docbook-xsl-stylesheets from Prefix + sed -i -e '/^FP_DIR_DOCBOOK_XSL/s:\[.*\]:['"${EPREFIX}"'/usr/share/sgml/docbook/xsl-stylesheets/]:' configure.ac || die + fi + + # as we have changed the build system + eautoreconf + fi +} + +src_configure() { + if ! use binary; then + + # initialize build.mk + echo '# Gentoo changes' > mk/build.mk + + # Put docs into the right place, ie /usr/share/doc/ghc-${PV} + echo "docdir = ${EPREFIX}/usr/share/doc/${P}" >> mk/build.mk + echo "htmldir = ${EPREFIX}/usr/share/doc/${P}" >> mk/build.mk + + # We also need to use the GHC_FLAGS flags when building ghc itself + echo "SRC_HC_OPTS+=${GHC_FLAGS}" >> mk/build.mk + echo "SRC_CC_OPTS+=${CFLAGS}" >> mk/build.mk + echo "SRC_LD_OPTS+=${FILTERED_LDFLAGS}" >> mk/build.mk + + # We can't depend on haddock except when bootstrapping when we + # must build docs and include them into the binary .tbz2 package + if use ghcbootstrap && use doc; then + echo "BUILD_DOCBOOK_PDF = NO" >> mk/build.mk + echo "BUILD_DOCBOOK_PS = NO" >> mk/build.mk + echo "BUILD_DOCBOOK_HTML = YES" >> mk/build.mk + echo "HADDOCK_DOCS = YES" >> mk/build.mk + else + echo "BUILD_DOCBOOK_PDF = NO" >> mk/build.mk + echo "BUILD_DOCBOOK_PS = NO" >> mk/build.mk + echo "BUILD_DOCBOOK_HTML = NO" >> mk/build.mk + echo "HADDOCK_DOCS = NO" >> mk/build.mk + fi + + # 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+=-w" >> mk/build.mk + + # some arches do not support ELF parsing for ghci module loading + # PPC64: never worked (should be easy to implement) + # alpha: never worked + # arm: unimplemented or never worked + if use alpha || use ppc64 || use arm; then + echo "GhcWithInterpreter=NO" >> mk/build.mk + fi + + # we have to tell it to build unregisterised on some arches + # ppc64: EvilMangler currently does not understand some TOCs + # ia64: EvilMangler bitrot + if use alpha || use ia64 || use ppc64; then + echo "GhcUnregisterised=YES" >> mk/build.mk + echo "GhcWithNativeCodeGen=NO" >> mk/build.mk + echo "SplitObjs=NO" >> mk/build.mk + echo "GhcRTSWays := debug" >> mk/build.mk + echo "GhcNotThreaded=YES" >> mk/build.mk + fi + + # arm: no EvilMangler support, no NCG support + if use arm; then + echo "GhcUnregisterised=YES" >> mk/build.mk + echo "GhcWithNativeCodeGen=NO" >> mk/build.mk + fi + + # Have "ld -r --relax" problem with split-objs on sparc: + if use sparc; then + echo "SplitObjs=NO" >> mk/build.mk + fi + + if ! use llvm; then + echo "GhcWithLlvmCodeGen=NO" >> mk/build.mk + fi + + # Get ghc from the unpacked binary .tbz2 + # except when bootstrapping we just pick ghc up off the path + if ! use ghcbootstrap; then + export PATH="${WORKDIR}/usr/bin:${PATH}" + fi + + # Since GHC 6.12.2 the GHC wrappers store which GCC version GHC was + # compiled with, by saving the path to it. The purpose is to make sure + # that GHC will use the very same gcc version when it compiles haskell + # sources, as the extra-gcc-opts files contains extra gcc options which + # match only this GCC version. + # However, this is not required in Gentoo, as only modern GCCs are used + # (>4). + # Instead, this causes trouble when for example ccache is used during + # compilation, but we don't want the wrappers to point to ccache. + # Due to the above, we simply set GCC to be "gcc". When compiling ghc it + # might point to ccache, once installed it will point to the users + # regular gcc. + + econf --with-gcc=gcc || die "econf failed" + fi # ! use binary +} + +src_compile() { + if ! use binary; then + # unfortunately ghc-7.0 still fails under parallel load: + # bug #326347 (and i think bug #373947) + emake -j1 all || die "make failed" + fi # ! use binary +} + +src_install() { + if use binary; then + use prefix && mkdir -p "${ED}" + mv "${S}/usr" "${ED}" + + # Remove the docs if not requested + if ! use doc; then + rm -rf "${ED}/usr/share/doc/${P}/*/" \ + "${ED}/usr/share/doc/${P}/*.html" \ + || die "could not remove docs (P vs PF revision mismatch?)" + fi + else + local insttarget="install" + + # We only built docs if we were bootstrapping, otherwise + # we copy them out of the unpacked binary .tbz2 + if use doc; then + if ! use ghcbootstrap; then + mkdir -p "${ED}/usr/share/doc" + mv "${WORKDIR}/usr/share/doc/${P}" "${ED}/usr/share/doc" \ + || die "failed to copy docs" + fi + fi + + emake -j1 ${insttarget} \ + DESTDIR="${D}" \ + || die "make ${insttarget} failed" + + # remove wrapper and linker + rm -f "${ED}"/usr/bin/haddock* + + # ghci uses mmap with rwx protection at it implements dynamic + # linking on it's own (bug #299709) + # so mark resulting binary + pax-mark -m "${ED}/usr/$(get_libdir)/${P}/ghc" + + dodoc "${S}/README" "${S}/ANNOUNCE" "${S}/LICENSE" "${S}/VERSION" + + dobashcompletion "${FILESDIR}/ghc-bash-completion" + + fi + + # path to the package.cache + PKGCACHE="${ED}/usr/$(get_libdir)/${P}/package.conf.d/package.cache" + + # copy the package.conf, including timestamp, save it so we later can put it + # back before uninstalling, or when upgrading. + cp -p "${PKGCACHE}"{,.shipped} \ + || die "failed to copy package.conf.d/package.cache" +} + +pkg_preinst() { + # have we got an earlier version of ghc installed? + if has_version "<${CATEGORY}/${PF}"; then + haskell_updater_warn="1" + fi +} + +pkg_postinst() { + ghc-reregister + + # path to the package.cache + PKGCACHE="${EROOT}/usr/$(get_libdir)/${P}/package.conf.d/package.cache" + + # give the cache a new timestamp, it must be as recent as + # the package.conf.d directory. + touch "${PKGCACHE}" + + if [[ "${haskell_updater_warn}" == "1" ]]; then + ewarn + ewarn "\e[1;31m************************************************************************\e[0m" + ewarn + ewarn "You have just upgraded from an older version of GHC." + ewarn "You may have to run" + ewarn " 'haskell-updater --upgrade'" + ewarn "to rebuild all ghc-based Haskell libraries." + ewarn + ewarn "\e[1;31m************************************************************************\e[0m" + ewarn + fi + + bash-completion_pkg_postinst +} + +pkg_prerm() { + # Be very careful here... Call order when upgrading is (according to PMS): + # * src_install for new package + # * pkg_preinst for new package + # * pkg_postinst for new package + # * pkg_prerm for the package being replaced + # * pkg_postrm for the package being replaced + # so you'll actually be touching the new packages files, not the one you + # uninstall, due to that or installation directory ${P} will be the same for + # both packages. + + # Call order for reinstalling is (according to PMS): + # * src_install + # * pkg_preinst + # * pkg_prerm for the package being replaced + # * pkg_postrm for the package being replaced + # * pkg_postinst + + # Overwrite the modified package.cache with a copy of the + # original one, so that it will be removed during uninstall. + + PKGCACHE="${EROOT}/usr/$(get_libdir)/${P}/package.conf.d/package.cache" + rm -rf "${PKGCACHE}" + + cp -p "${PKGCACHE}"{.shipped,} +} diff --git a/dev-lang/ghc/metadata.xml b/dev-lang/ghc/metadata.xml index a482746639df..d7a180924ba8 100644 --- a/dev-lang/ghc/metadata.xml +++ b/dev-lang/ghc/metadata.xml @@ -8,5 +8,6 @@ Install the binary version directly, rather than using it to build the source version. Internal: Bootstrap GHC from an existing GHC installation. +Enable llvm code geenrator for ghc (-fllvm)