Version bump. Bump request by Alexandru Scvortov (bug #352498)
authorSergei Trofimovich <slyfox@gentoo.org>
Wed, 3 Aug 2011 12:35:20 +0000 (12:35 +0000)
committerSergei Trofimovich <slyfox@gentoo.org>
Wed, 3 Aug 2011 12:35:20 +0000 (12:35 +0000)
Package-Manager: portage-2.1.10.10/cvs/Linux x86_64
RepoMan-Options: --force

dev-lang/ghc/ChangeLog
dev-lang/ghc/Manifest
dev-lang/ghc/files/ghc-7.0.2-CHOST.patch [new file with mode: 0644]
dev-lang/ghc/files/ghc-7.0.4-CHOST-prefix.patch [new file with mode: 0644]
dev-lang/ghc/files/ghc-7.0.4-CHOST-softfloat.patch [new file with mode: 0644]
dev-lang/ghc/files/ghc-7.0.4-darwin8.patch [new file with mode: 0644]
dev-lang/ghc/ghc-7.0.4.ebuild [new file with mode: 0644]
dev-lang/ghc/metadata.xml

index fc8edbe7c2425be78b70f0d51eb8b63e8ec3c466..7d28ef3af1b0c5552546db4f6b41652f26d42a8a 100644 (file)
@@ -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 <slyfox@gentoo.org>
+  +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 <slyfox@gentoo.org> ghc-6.12.3.ebuild,
   ghc-6.12.3-r2.ebuild:
index 810640d517340f12cfcd7bf67af83482c9545b42..471b821aefd6386b7d76fc038c7f4ec46951f5de 100644 (file)
@@ -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 (file)
index 0000000..7479149
--- /dev/null
@@ -0,0 +1,89 @@
+Tue Mar  1 08:41:08 EET 2011  Sergei Trofimovich <slyfox@community.haskell.org>
+  * 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 <slyfox@community.haskell.org>
+  * 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 (file)
index 0000000..682c573
--- /dev/null
@@ -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 (file)
index 0000000..7b726d2
--- /dev/null
@@ -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 (file)
index 0000000..bfbee41
--- /dev/null
@@ -0,0 +1,18 @@
+Workaround headers problem in Darwin 8 as well.
+
+--- rts/PosixSource.h
++++ rts/PosixSource.h
+@@ -11,6 +11,13 @@
+ 
+ #include <ghcplatform.h>
+ 
++#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 <sys/types.h>
++#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 (file)
index 0000000..df1d9d0
--- /dev/null
@@ -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
+       !<dev-haskell/haddock-2.4.2"
+# earlier versions than 2.4.2 of haddock only works with older ghc releases
+
+# force dependency on >=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,}
+}
index a482746639df9a11bc64473e684d76541b2ca395..d7a180924ba8c80eab00cc4a560b7b8ec9a87775 100644 (file)
@@ -8,5 +8,6 @@
 <use>
 <flag name='binary'>Install the binary version directly, rather than using it to build the source version.</flag>
 <flag name='ghcbootstrap'>Internal: Bootstrap GHC from an existing GHC installation.</flag>
+<flag name='llvm'>Enable llvm code geenrator for ghc (-fllvm)</flag>
 </use>
 </pkgmetadata>