From 618a841357fae79ed605b8380a44327cf420a772 Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Mon, 25 Apr 2011 17:55:08 +0000 Subject: Added support for x86-macos/ppc-macos/x85-solaric/ppc-solaris systems by Fabian Groffen . Package-Manager: portage-2.1.9.42/cvs/Linux x86_64 --- dev-lang/ghc/ChangeLog | 13 +- dev-lang/ghc/Manifest | 21 +- .../files/ghc-6.12.3-configure-CHOST-prefix.patch | 43 ++ dev-lang/ghc/files/ghc-6.12.3-darwin8.patch | 18 + .../files/ghc-6.12.3-mach-o-relocation-limit.patch | 34 ++ dev-lang/ghc/files/ghc-6.12.3-pic-powerpc.patch | 30 ++ .../files/ghc-6.12.3-powerpc-darwin-no-mmap.patch | 37 ++ dev-lang/ghc/files/ghc-apply-gmp-hack | 11 +- dev-lang/ghc/ghc-6.12.3-r1.ebuild | 485 ------------------ dev-lang/ghc/ghc-6.12.3-r2.ebuild | 567 +++++++++++++++++++++ 10 files changed, 761 insertions(+), 498 deletions(-) create mode 100644 dev-lang/ghc/files/ghc-6.12.3-configure-CHOST-prefix.patch create mode 100644 dev-lang/ghc/files/ghc-6.12.3-darwin8.patch create mode 100644 dev-lang/ghc/files/ghc-6.12.3-mach-o-relocation-limit.patch create mode 100644 dev-lang/ghc/files/ghc-6.12.3-pic-powerpc.patch create mode 100644 dev-lang/ghc/files/ghc-6.12.3-powerpc-darwin-no-mmap.patch delete mode 100644 dev-lang/ghc/ghc-6.12.3-r1.ebuild create mode 100644 dev-lang/ghc/ghc-6.12.3-r2.ebuild (limited to 'dev-lang/ghc') diff --git a/dev-lang/ghc/ChangeLog b/dev-lang/ghc/ChangeLog index 1c307a436bbc..458e5b7ee165 100644 --- a/dev-lang/ghc/ChangeLog +++ b/dev-lang/ghc/ChangeLog @@ -1,6 +1,17 @@ # 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.203 2011/03/27 19:44:17 slyfox Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-lang/ghc/ChangeLog,v 1.204 2011/04/25 17:55:08 slyfox Exp $ + +*ghc-6.12.3-r2 (25 Apr 2011) + + 25 Apr 2011; Sergei Trofimovich -ghc-6.12.3-r1.ebuild, + +ghc-6.12.3-r2.ebuild, +files/ghc-6.12.3-configure-CHOST-prefix.patch, + +files/ghc-6.12.3-darwin8.patch, + +files/ghc-6.12.3-mach-o-relocation-limit.patch, + +files/ghc-6.12.3-pic-powerpc.patch, + +files/ghc-6.12.3-powerpc-darwin-no-mmap.patch, files/ghc-apply-gmp-hack: + Added support for x86-macos/ppc-macos/x85-solaric/ppc-solaris systems by + Fabian Groffen . *ghc-6.12.3-r1 (27 Mar 2011) diff --git a/dev-lang/ghc/Manifest b/dev-lang/ghc/Manifest index 18ae3df39d72..d00c46294ae5 100644 --- a/dev-lang/ghc/Manifest +++ b/dev-lang/ghc/Manifest @@ -16,20 +16,29 @@ AUX ghc-6.12.2-configure-CHOST-part2.patch 958 RMD160 cab606658d051c3b5f5751df2c AUX ghc-6.12.3-alpha-use-libffi-for-foreign-import-wrapper.patch 2575 RMD160 53dd2e84868f8b66e4d8741b121177bf8e305924 SHA1 2b25421962df33044d8f0556756563ab7d5b1a9d SHA256 9b9748775ddcafa0171f1594c4f5e0c90269e4fd65837d9167b127238cec3d93 AUX ghc-6.12.3-autoconf-2.66-4252.patch 950 RMD160 63225a84d59c6f71593f67d989a647345f7671b0 SHA1 6890dfc4af8d0e98b269219be9e1a5a484358120 SHA256 259813eeefebfc9656341dd6939ab6e7a3257336001d794042f1e6a57b3b20c4 AUX ghc-6.12.3-configure-CHOST-freebsd.patch 2375 RMD160 6c847baeeeaa6ea75c4cf1c687145ffaaf6153d8 SHA1 cc5128a4f6049b2b61ee5789b6c4d15725bc53e3 SHA256 fd4edb1ff5c1f0f08ffad4bae3b2007af948ecdc9c5c285cc6f2953bca25d3cf +AUX ghc-6.12.3-configure-CHOST-prefix.patch 1438 RMD160 536dabce9b36399c3eef2bd2412e86c42254cebc SHA1 40b69ee7dc7ffa803109fc68799fe4f387955e7b SHA256 f1a2ff270f308e4146622ef37b0b00f59e42c1251e17748d20f986f79d4fca4b +AUX ghc-6.12.3-darwin8.patch 483 RMD160 2922ed331e2d694ab2ecf42376d412faa3de6bec SHA1 33252e3c684a0ab98b0cea7136bed84de877a5ab SHA256 5b3beb68152a3831a1fd3a1f50d1ae768745872b425dba8de0bac35f8ce5bd72 AUX ghc-6.12.3-ghciless-haddock-3558.patch 7222 RMD160 e2f4347100ce4c1763c3cdc37ce7286d7cbbfefc SHA1 06afb9dd4edde9bdfd0d9a9d4f6cf9fcb1ea5d09 SHA256 79f9d9931d3e9d5c45247814226372901f1db7a593dc97bff63ae42b767f3917 AUX ghc-6.12.3-ia64-fixed-relax.patch 1362 RMD160 81224e6cc74d20b80b93c55eaeda7e2a6a7e3ae0 SHA1 d93beaf3fa9fa37b87f6fc6c7fc85d488ff809c3 SHA256 db632a48cef7fdce8fd24759af33527d489121ce3e67cbbcd235608aa0247a31 AUX ghc-6.12.3-ia64-storage-manager-fix.patch 3035 RMD160 067caf41e1ba60b5215b16eafeaec262904e2e2a SHA1 12a9ef095286f22e9b7107af28bff6916c3700d2 SHA256 9e08ad179c7fdc7de1899f89560ec26215968187956f2853639bbe85650fa2ab AUX ghc-6.12.3-ia64-use-libffi-for-foreign-import-wrapper.patch 683 RMD160 4361e22211960ef347a49e5d0fa53d6337d2c7a6 SHA1 6caf69a755034794f470c3f1e5f48e7453d4e949 SHA256 82f48006c95fb9d01c8618f7457cd2744d7a1fada8c70d25544eefa23cbfde2b AUX ghc-6.12.3-libffi-incorrect-detection-of-selinux.patch 2228 RMD160 a2104ee651e7f751db4ca7e460b3b4816b1358cc SHA1 d9a5d631b46d510715182890fbd91b962d75aa21 SHA256 97410ae73b0e1cc127d5f07b39c3a6e0a3fdaf36491af17c7b7eb0c9c8d716b1 +AUX ghc-6.12.3-mach-o-relocation-limit.patch 1660 RMD160 7d37d1757ea919acb9b06b42388ef6ff0acde9c6 SHA1 5f4f1a3aa0b262e24b097ee93c2c93ba7ba5f8dd SHA256 22b280bf837604a063d48acf3576cbd81dbc797dfa6dffb513ac0a1d9e0d6e36 +AUX ghc-6.12.3-pic-powerpc.patch 965 RMD160 f7f96e147f92e590c47fa753e41532cbda47585f SHA1 cb868c94410ca066eb7e087c2ff7ad3742f84c77 SHA256 90e8ead455df01ce67b757fb5993291f64c755f008fe052453aed0f40d652254 +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-6.4.2-sparc32plus.patch 526 RMD160 970d062362284659c2570394c8f9328d8096ea8e SHA1 40d25c25a3cd6a228f3757b8e298fd8c72710544 SHA256 a05bd16c9308ec9f608aeabe0ea35e2dff6826f262108d1ccb16c4f93a2d3a44 AUX ghc-6.4.2-sparcmangler.patch 837 RMD160 7e3a2a94bb62c3c0da09f08096481cace2b1bb96 SHA1 5faccb311239c4c4d07a2c6dc507d51a18c2bc96 SHA256 3987724420c6d4b552c6fbb3b3ca10fca8aaa73573735aa3de824d3dc65f94af AUX ghc-6.5-norelax.patch 613 RMD160 71012d8615e164c72d0db75c8cc606ccf8e3ddd9 SHA1 4bab0e904d9950ba92e16b3932635e5a1c3edee1 SHA256 0da9630bbd28edee7538d857dbeefd6d4cdddafd198499e61513f2f4d44c2fc0 AUX ghc-6.6-nothreadedrts.patch 665 RMD160 402c8eb78dc648e55d1d7e00c695b49abe0f293d SHA1 8d0bc56096ebe781371dffa668de48a97173cd32 SHA256 bdfb000a70d97bb7341dda5a2ec48bb7f688532ade830eb2d73c7fa6ef1eead1 -AUX ghc-apply-gmp-hack 2563 RMD160 3096051038c98ddae8aacb8f21e69f568534e40c SHA1 57c6024ed12aa351724ac6f21add4cd410b3937a SHA256 b6f6393a63d61d8c2d27bac8b87af197f4b9e0a8ec9873e3c02871ab633d6d2c +AUX ghc-apply-gmp-hack 2585 RMD160 1246e8fc40bbbb28f52f755457feca97bf3e22cc SHA1 63a7999b829548f82bcdcc4da869956abe2890bf SHA256 0d3c9e52be232734c916e9765fae770225ad6fb04c0948780867450401ff1eed AUX ghc-bash-completion 6496 RMD160 61574aab2f8ed4ae906df5ac291f528384b79b87 SHA1 a0d7c264cc8ff3d235511e151dc82f9e16691bac SHA256 82a862bea2c9248e06fcf74d307de07b05a55f9eb95f412762bd02e53fece822 AUX ghc-updater 9262 RMD160 10332a0dd2fd2f09e28b250fb74655e67305e2d7 SHA1 c297589995aa6c310bcf61db6fec1df57d5f0eb8 SHA256 e6277b2731c6be5159d28a450ccf9dfe701601f86552096ef8d8c5daedc5929a +DIST ghc-6.10.1-i386-apple-darwin.tar.bz2 97910484 RMD160 3764303b9c9161905b5c0e2e4000cfe0fceea85c SHA1 299a829981db533cbab71426051cf924f4a6cdd7 SHA256 b806bf9c163314c3aac389df1cf5f30e31d3557baa0eabce9279f6ef58305d51 +DIST ghc-6.10.1-powerpc-apple-darwin.tar.bz2 110038307 RMD160 c3caed6f3c9c052ba480b728326783966dd5d77f SHA1 ada96c1671e79901fb5bb07e2def3e65d80316b9 SHA256 06a0712a18d328e408b3057a83e31ee6695b5a203f1e492ca1964a7899834134 +DIST ghc-6.10.4-i386-unknown-solaris2.tar.bz2 78409258 RMD160 8595f81eb215437155518e27f3f8da4f33df72ee SHA1 7251e23e7190b92ca0e2a6c03adc866429ae9452 SHA256 f53bbffff5b469fb4a6cea6ce3965596240549529306c8a9cfbf0a9cf6296eea +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-6.2.2-libraries.tar.gz 524182 RMD160 f4ce0df2040f91a5a56cc618e68f1aa2e4bf0185 SHA1 64af9e782f7eeae9f7f47445811f50cf3210f093 SHA256 ebcf8c1fd31c9a33ff64ca888f01e9911464469f59e5432c626b8c686c2d9142 @@ -91,7 +100,7 @@ DIST ghc-bundled-readline-5.2_p13-amd64.tbz2 976677 RMD160 f0543aa3f404d45aad436 DIST ghc-bundled-readline-5.2_p13-x86.tbz2 940742 RMD160 5f9470a99047f004bd0917c62253bff9b663c9a5 SHA1 f5463a8929d2ba792b91085f78d6763cb50ef14e SHA256 bb9766235ed0d6e3c2f3ffe1625ecbe8e4d2e0254f7060e845be3a404835cd2a DIST ghc-testsuite-6.4.2.tar.gz 1181389 RMD160 1eea6a19a9fca6b3d56a6f29b69289cb88af8173 SHA1 7ada60fe2abb9208d841787781d522d5a1110dc2 SHA256 1a864243e922c233049585fa3bf4a86a0ca3e7b3ffebf26245eb037f15dd4d12 EBUILD ghc-6.10.4-r1.ebuild 13011 RMD160 4feb3ad764af5ad16b3dd5a000d49755c8b91c2a SHA1 c8eb3181598c05053e1f27b5fdb2a3a4264377b1 SHA256 f8c163192a9c5a62158bbb5698cef9872fa0e64956689aeafb3f90c8c9670b0a -EBUILD ghc-6.12.3-r1.ebuild 16641 RMD160 7d4d41912c87490900cd46c55919dd23eb981206 SHA1 02cda3a639ecbdcf00c98af46a559dd423bcef65 SHA256 98a1c06eb59197cd3927cb8c70c3388a759d8344e8979e2b5afc7734a44f385b +EBUILD ghc-6.12.3-r2.ebuild 20222 RMD160 834425fed6136c2a2874eddaf24c09e159aa87aa SHA1 465fa174219df46b4a51b739c899a0c6da48eaf6 SHA256 deabd93ef60a712791643315b8d049d36077aee22ee6ae89c07c6cace99a2443 EBUILD ghc-6.12.3.ebuild 14839 RMD160 6ec6a88c9d4f616b32e8073610f051f0e86d7357 SHA1 b8c1b5c5bf6fe3db063e66f4997b7ab34c78d73e SHA256 cacb480c299072e2a004599682e8b4b04038997bde27ed47c7799398ca1cac0a EBUILD ghc-6.2.2.ebuild 10613 RMD160 32eb80c657fcea0c99e683b313643e063fa67f30 SHA1 e35b8257c2e2d7b8ed9e62835a0b76994f0e91a8 SHA256 570e1f68ec3965ab8aab15ea946e96c6f7be7e037e60a1b9afd26cd479122cca EBUILD ghc-6.4.2.ebuild 13718 RMD160 9cee26621e31ee8ed3e59cfd27cdf1f0689b054c SHA1 62f98f4ed6f74f770810b27d4772c4947129020e SHA256 b6fe46438045cc54225f20b4f4bdd4f33dfd18c303348e68d27626875de28368 @@ -99,12 +108,12 @@ EBUILD ghc-6.6.1.ebuild 12333 RMD160 76cd8b4fe72842cfcd0e2bf20f5c11e788472bd9 SH EBUILD ghc-6.6.ebuild 10978 RMD160 f67c1aa1d68f5a277d5d6db6004269f576b95d80 SHA1 7c18bc6d59b1c948651fad042a8928af8aa07a81 SHA256 8e3efaf74dd46ca2bcf3a0f5e75700b7ad4e8083795c3604cc247a0fa6e6d8bf EBUILD ghc-6.8.2-r1.ebuild 9147 RMD160 48d75d1fb56e58c4f87e95c6e1664bdabbb3eba4 SHA1 b8510681b9f2535a87f0cbef3768a771071ea1c5 SHA256 90eef3470c0ae305c0248ce2248333e703039a2c16ce6d567a88f9601b28690d EBUILD ghc-6.8.2.ebuild 9201 RMD160 0b0685249c09afbb3a03f8c54e458eabf6e0a90f SHA1 9dc6947b948770e710aae71ed2ccb301609b8ffb SHA256 724109ab0e94f8919bb0ea92a96f48be2a10bea5ee339e2b750bf81669e96231 -MISC ChangeLog 36834 RMD160 7516d849891d4f5a76b90344b2c1c19195493d76 SHA1 753fddc1419b28b70f1065cccc9ec317e433885d SHA256 51679ec74e06a390ac714f0372469826f3e2a7e8027484b8625d85f8790c82b8 +MISC ChangeLog 37330 RMD160 0f33fcb86c9236275a394242cf9bced9ee8cb58d SHA1 b9a1058439c252e88f8cc09e12567420db962262 SHA256 a00a2f3391e4384f2d3654735f2fb958ba796c0fca3cfb089f406d264de961bb MISC metadata.xml 442 RMD160 9cfa0af9084477c8a70ecf0ac3fb3093ae0cd602 SHA1 be2833090f093ac1c8fc2f5c6f3f253bdbdd6b96 SHA256 2bacbdfcaea11289949a687626f59f99af8fda9ec495b2c349ce5898d9f0dcd4 -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (GNU/Linux) -iEYEARECAAYFAk2PlD4ACgkQcaHudmEf86o8iQCbBpQUGFjZVc1uV5MZffj7wf/y -C1sAnRYoXPuMZXWY/jHK19cBOWnibCIk -=4L8m +iEYEARECAAYFAk21tjAACgkQcaHudmEf86rA5QCfXDCN0crQnsyf+Ar7Tb5nocuE +8igAn2EaWtq05CMcViKPEgt1LNRBV8SY +=zGvh -----END PGP SIGNATURE----- diff --git a/dev-lang/ghc/files/ghc-6.12.3-configure-CHOST-prefix.patch b/dev-lang/ghc/files/ghc-6.12.3-configure-CHOST-prefix.patch new file mode 100644 index 000000000000..926237ba8064 --- /dev/null +++ b/dev-lang/ghc/files/ghc-6.12.3-configure-CHOST-prefix.patch @@ -0,0 +1,43 @@ +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 +--- configure.ac ++++ configure.ac +@@ -227,6 +227,7 @@ + fi + build=`echo "$build" | sed -e 's/linux-gnu/linux/' -e 's/-pc-/-unknown-/' -e 's/-gentoo-/-unknown-/' -e 's/freebsd.*$/freebsd/'` + [build=`echo "$build" | sed -e 's/i[4-6]86/i386/'`] # escaping square bracket ++build=`echo "$build" | sed -e 's/-darwin.*$/-darwin/' -e 's/-solaris2.*$/-solaris/'` + + # We have to run these unconditionally, but we may discard their + # results in the following code +@@ -262,6 +263,7 @@ + fi + host=`echo "$host" | sed -e 's/linux-gnu/linux/' -e 's/-pc-/-unknown-/' -e 's/-gentoo-/-unknown-/' -e 's/freebsd.*$/freebsd/'` + [host=`echo "$host" | sed -e 's/i[4-6]86/i386/'`] # escaping square bracket ++host=`echo "$host" | sed -e 's/-darwin.*$/-darwin/' -e 's/-solaris2.*$/-solaris/'` + + if test "$host_alias" = "" + then +@@ -284,6 +286,7 @@ + fi + target=`echo "$target" | sed -e 's/linux-gnu/linux/' -e 's/-pc-/-unknown-/' -e 's/-gentoo-/-unknown-/' -e 's/freebsd.*$/freebsd/'` + [target=`echo "$target" | sed -e 's/i[4-6]86/i386/'`] # escaping square bracket ++target=`echo "$target" | sed -e 's/-darwin.*$/-darwin/' -e 's/-solaris2.*$/-solaris/'` + + if test "$target_alias" = "" + then diff --git a/dev-lang/ghc/files/ghc-6.12.3-darwin8.patch b/dev-lang/ghc/files/ghc-6.12.3-darwin8.patch new file mode 100644 index 000000000000..c971eb25eed6 --- /dev/null +++ b/dev-lang/ghc/files/ghc-6.12.3-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 ++ + #define _POSIX_SOURCE 1 + #define _POSIX_C_SOURCE 199506L + #define _XOPEN_SOURCE 500 diff --git a/dev-lang/ghc/files/ghc-6.12.3-mach-o-relocation-limit.patch b/dev-lang/ghc/files/ghc-6.12.3-mach-o-relocation-limit.patch new file mode 100644 index 000000000000..93752ea76f7e --- /dev/null +++ b/dev-lang/ghc/files/ghc-6.12.3-mach-o-relocation-limit.patch @@ -0,0 +1,34 @@ +http://hackage.haskell.org/trac/ghc/attachment/ticket/3260/mach-o-relocation-limit.patch + +Sat May 8 23:24:11 JST 2010 pho@cielonegro.org + * Work around for Mach-O relocation limit + + Mach-O has a limitation on the length of relocation addresses. No + segments can be larger than 2^24 - 1 bytes (approx 16 MiB; See + /usr/include/mach-o/reloc.h). Static GHCi libraries are merged large + objects so they tend to exceed this limit. + +--- rules/build-package-way.mk ++++ rules/build-package-way.mk +@@ -83,8 +83,21 @@ + ifneq "$4" "0" + BINDIST_LIBS += $$($1_$2_GHCI_LIB) + endif ++ ++ifeq "$$(darwin_HOST_OS)" "1" ++# Mach-O has a limitation on the length of relocation addresses. No ++# segments can be larger than 2^24 - 1 bytes (approx 16 MiB; See ++# /usr/include/mach-o/reloc.h). Static GHCi libraries are merged large ++# objects so they tend to exceed this limit. ++$$($1_$2_GHCI_LIB) : $$($1_$2_$3_HS_OBJS) $$($1_$2_$3_CMM_OBJS) $$($1_$2_$3_C_OBJS) $$($1_$2_$3_S_OBJS) $$($1_$2_EXTRA_OBJS) ++ "$$(LD)" -r -o $$@ $$(EXTRA_LD_OPTS) $$($1_$2_$3_HS_OBJS) $$($1_$2_$3_CMM_OBJS) $$($1_$2_$3_C_OBJS) $$($1_$2_$3_S_OBJS) `$$($1_$2_$3_MKSTUBOBJS)` $$($1_$2_EXTRA_OBJS) \ ++ || ( echo "Warning: creating dummy $$@" && \ ++ touch empty.c && \ ++ "$(CC)" $(SRC_CC_OPTS) $(CONF_CC_OPTS) -c empty.c -o $$@ ) ++else + $$($1_$2_GHCI_LIB) : $$($1_$2_$3_HS_OBJS) $$($1_$2_$3_CMM_OBJS) $$($1_$2_$3_C_OBJS) $$($1_$2_$3_S_OBJS) $$($1_$2_EXTRA_OBJS) + "$$(LD)" -r -o $$@ $$(EXTRA_LD_OPTS) $$($1_$2_$3_HS_OBJS) $$($1_$2_$3_CMM_OBJS) $$($1_$2_$3_C_OBJS) $$($1_$2_$3_S_OBJS) `$$($1_$2_$3_MKSTUBOBJS)` $$($1_$2_EXTRA_OBJS) ++endif + + $(call all-target,$1_$2,$$($1_$2_GHCI_LIB)) + endif diff --git a/dev-lang/ghc/files/ghc-6.12.3-pic-powerpc.patch b/dev-lang/ghc/files/ghc-6.12.3-pic-powerpc.patch new file mode 100644 index 000000000000..e71109920820 --- /dev/null +++ b/dev-lang/ghc/files/ghc-6.12.3-pic-powerpc.patch @@ -0,0 +1,30 @@ +From 1414e10a1470061e850b7ce2aa6350a428ade2e9 Mon Sep 17 00:00:00 2001 +From: pho@cielonegro.org +Date: Sat, 8 May 2010 14:39:00 +0000 +Subject: [PATCH] PIC support for PowerPC + +PPC.CodeGen.getRegister was not properly handling PicBaseReg. +It seems working with this patch, but I'm not sure this change is correct. +--- + compiler/nativeGen/PPC/CodeGen.hs | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +diff --git a/compiler/nativeGen/PPC/CodeGen.hs b/compiler/nativeGen/PPC/CodeGen.hs +index 1215b2e..a1b55ce 100644 +--- a/compiler/nativeGen/PPC/CodeGen.hs ++++ b/compiler/nativeGen/PPC/CodeGen.hs +@@ -377,6 +377,11 @@ iselExpr64 expr + + getRegister :: CmmExpr -> NatM Register + ++getRegister (CmmReg (CmmGlobal PicBaseReg)) ++ = do ++ reg <- getPicBaseNat archWordSize ++ return (Fixed archWordSize reg nilOL) ++ + getRegister (CmmReg reg) + = return (Fixed (cmmTypeSize (cmmRegType reg)) + (getRegisterReg reg) nilOL) +-- +1.7.4.1 + diff --git a/dev-lang/ghc/files/ghc-6.12.3-powerpc-darwin-no-mmap.patch b/dev-lang/ghc/files/ghc-6.12.3-powerpc-darwin-no-mmap.patch new file mode 100644 index 000000000000..a438c0d57b90 --- /dev/null +++ b/dev-lang/ghc/files/ghc-6.12.3-powerpc-darwin-no-mmap.patch @@ -0,0 +1,37 @@ +Tue Nov 30 06:30:14 PST 2010 pho@cielonegro.org + * FIX #1845 (unconditional relative branch out of range) + + Don't use mmap on powerpc-apple-darwin as mmap doesn't support + reallocating but we need to allocate jump islands just after each + object images. Otherwise relative branches to jump islands can fail + due to 24-bits displacement overflow. +diff -rN -u old-ghc/rts/Linker.c new-ghc/rts/Linker.c +--- old-ghc/rts/Linker.c 2011-04-19 01:37:03.000000000 -0700 ++++ new-ghc/rts/Linker.c 2011-04-19 01:37:04.000000000 -0700 +@@ -69,7 +69,15 @@ + #include + #endif + +-#if defined(linux_HOST_OS) || defined(freebsd_HOST_OS) || defined(dragonfly_HOST_OS) || defined(netbsd_HOST_OS) || defined(openbsd_HOST_OS) || defined(darwin_HOST_OS) ++#if defined(linux_HOST_OS ) || defined(freebsd_HOST_OS) || \ ++ defined(dragonfly_HOST_OS) || defined(netbsd_HOST_OS ) || \ ++ defined(openbsd_HOST_OS ) || \ ++ ( defined(darwin_HOST_OS ) && !defined(powerpc_HOST_ARCH) ) ++/* Don't use mmap on powerpc-apple-darwin as mmap doesn't support ++ * reallocating but we need to allocate jump islands just after each ++ * object images. Otherwise relative branches to jump islands can fail ++ * due to 24-bits displacement overflow. ++ */ + #define USE_MMAP + #include + #include +@@ -1841,6 +1849,9 @@ + int fd; + #else + FILE *f; ++# if defined(darwin_HOST_OS) ++ int misalignment; ++# endif + #endif + IF_DEBUG(linker, debugBelch("loadObj %s\n", path)); + diff --git a/dev-lang/ghc/files/ghc-apply-gmp-hack b/dev-lang/ghc/files/ghc-apply-gmp-hack index a0b4ab8ffd9c..32a3a8f1f7cf 100644 --- a/dev-lang/ghc/files/ghc-apply-gmp-hack +++ b/dev-lang/ghc/files/ghc-apply-gmp-hack @@ -1,6 +1,4 @@ -# this script is expected to be sourced by ghc ebuilds built against libgmp.so.3 library -# -# > source "${FILESDIR}/ghc-apply-gmp-hack" +# This script is expected to be sourced by ghc ebuilds built against libgmp.so.3 library # # What it does and why it works: # > GMP 5.0 is upwardly source and binary compatible with 4.x, and 3.x versions, @@ -24,7 +22,7 @@ # # Blames should be directed to Sergei Trofimovich -# should be used: +# should be used as: # > inherit multilib # > ... # > # somewhere in src_unpack() { # as early as possible, right after unpacking source/binary @@ -33,8 +31,9 @@ local libdir_name=$1 # let's see if we are in affected system if has_version '>=dev-libs/gmp-5.0.1'; then - local libgmpso3=$ROOT/usr/$libdir_name/libgmp.so.3 - local libgmpso10=$ROOT/usr/$libdir_name/libgmp.so.10 + has "${EAPI:-0}" 0 1 2 && ! use prefix && EROOT="${ROOT}" + local libgmpso3=${EROOT}/usr/$libdir_name/libgmp.so.3 + local libgmpso10=${EROOT}/usr/$libdir_name/libgmp.so.10 # bother user only if things won't work for him if [[ ! -e "$libgmpso3" ]]; then diff --git a/dev-lang/ghc/ghc-6.12.3-r1.ebuild b/dev-lang/ghc/ghc-6.12.3-r1.ebuild deleted file mode 100644 index 238ff4fd138f..000000000000 --- a/dev-lang/ghc/ghc-6.12.3-r1.ebuild +++ /dev/null @@ -1,485 +0,0 @@ -# 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-6.12.3-r1.ebuild,v 1.1 2011/03/27 19:44:17 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/" - -arch_binaries="" - -arch_binaries="$arch_binaries alpha? ( http://code.haskell.org/~slyfox/ghc-alpha/ghc-bin-${PV}-alpha-haddock.tbz2 )" -arch_binaries="$arch_binaries x86? ( mirror://gentoo/ghc-bin-${PV}-x86.tbz2 )" -arch_binaries="$arch_binaries amd64? ( mirror://gentoo/ghc-bin-${PV}-amd64.tbz2 )" -arch_binaries="$arch_binaries ia64? ( http://code.haskell.org/~slyfox/ghc-ia64/ghc-bin-${PV}-ia64-haddock.tbz2 )" -arch_binaries="$arch_binaries sparc? ( http://code.haskell.org/~slyfox/ghc-sparc/ghc-bin-${PV}-sparc.tbz2 )" -arch_binaries="$arch_binaries ppc64? ( mirror://gentoo/ghc-bin-${PV}-ppc64.tbz2 )" -arch_binaries="$arch_binaries ppc? ( mirror://gentoo/ghc-bin-${PV}-ppc.tbz2 )" - -# various ports: -arch_binaries="$arch_binaries x86-fbsd? ( http://code.haskell.org/~slyfox/ghc-x86-fbsd/ghc-bin-${PV}-x86-fbsd.tbz2 )" - -SRC_URI="!binary? ( http://darcs.haskell.org/download/dist/${PV}/${P}-src.tar.bz2 ) - !ghcbootstrap? ( $arch_binaries )" -LICENSE="BSD" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd" -IUSE="binary doc ghcbootstrap" - -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-4.1 - !=ghc-5.04.3 on their $PATH already - -PDEPEND="!ghcbootstrap? ( || ( =app-admin/haskell-updater-1.2* =app-admin/haskell-updater-1.1* ) )" - -# use undocumented feature STRIP_MASK to fix this issue: -# http://hackage.haskell.org/trac/ghc/ticket/3580 -STRIP_MASK="*/HSffi.o" - -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 - - GHC_CFLAGS="" - 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 - - # 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." - fi -} - -src_unpack() { - # Create the ${S} dir if we're using the binary version - use binary && mkdir "${S}" - - base_src_unpack -} - -src_prepare() { - 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_CFLAGS. - # See bug #313635. - sed -i -e "s|\"\$topdir\"|\"\$topdir\" ${GHC_CFLAGS}|" \ - "${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 - relocate_ghc "${WORKDIR}" - fi - - sed -i -e "s|\"\$topdir\"|\"\$topdir\" ${GHC_CFLAGS}|" \ - "${S}/ghc/ghc.wrapper" - - # 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 remove GCC from the wrappers, which forces - # GHC to use GCC from the users path, like previous GHC versions did. - - # Remove path to gcc - sed -i -e '/pgmgcc/d' \ - "${S}/rules/shell-wrapper.mk" - - # Remove usage of the path to gcc - sed -i -e 's/-pgmc "$pgmgcc"//' \ - "${S}/ghc/ghc.wrapper" - - cd "${S}" # otherwise epatch will break - - epatch "${FILESDIR}/ghc-6.12.1-configure-CHOST.patch" - epatch "${FILESDIR}/ghc-6.12.2-configure-CHOST-part2.patch" - epatch "${FILESDIR}/ghc-6.12.3-configure-CHOST-freebsd.patch" - - # -r and --relax are incompatible - epatch "${FILESDIR}/ghc-6.12.3-ia64-fixed-relax.patch" - - # prevent from wiping upper address bits used in cache lookup - epatch "${FILESDIR}/ghc-6.12.3-ia64-storage-manager-fix.patch" - - # fixes build failure of adjustor code - epatch "${FILESDIR}/ghc-6.12.3-alpha-use-libffi-for-foreign-import-wrapper.patch" - - # native adjustor (NA) code is broken: interactive darcs-2.4 coredumps on NA - epatch "${FILESDIR}/ghc-6.12.3-ia64-use-libffi-for-foreign-import-wrapper.patch" - - # same with NA on ppc - epatch "${FILESDIR}/ghc-6.12.3-ppc-use-libffi-for-foreign-import-wrapper.patch" - - # substitute outdated macros - epatch "${FILESDIR}/ghc-6.12.3-autoconf-2.66-4252.patch" - - # ticket 2615, linker scripts - epatch "${FILESDIR}/ghc-6.12.3-ticket-2615-linker-script.patch" - - # export typechecker internals even if ghci is disabled - # http://hackage.haskell.org/trac/ghc/ticket/3558 - epatch "${FILESDIR}/ghc-6.12.3-ghciless-haddock-3558.patch" - - # This patch unbreaks ghci on GRSEC kernels hardened with - # TPE (Trusted Path Execution) protection. - epatch "${FILESDIR}/ghc-6.12.3-libffi-incorrect-detection-of-selinux.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_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 - - # 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 XMLDocWays="html" >> mk/build.mk - echo HADDOCK_DOCS=YES >> mk/build.mk - else - echo XMLDocWays="" >> mk/build.mk - echo HADDOCK_DOCS=NO >> mk/build.mk - fi - - sed -e "s|utils/haddock_dist_INSTALL_SHELL_WRAPPER = YES|utils/haddock_dist_INSTALL_SHELL_WRAPPER = NO|" \ - -i utils/haddock/ghc.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+=-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 - if use alpha || use ppc64; 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 - - # Have "ld -r --relax" problem with split-objs on sparc: - if use sparc; then - echo "SplitObjs=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 - - econf || die "econf failed" - fi # ! use binary -} - -src_compile() { - if ! use binary; then - # LC_ALL needs to workaround ghc's ParseCmm failure on some (es) locales - # bug #202212 / http://hackage.haskell.org/trac/ghc/ticket/4207 - LC_ALL=C emake all || die "make failed" - fi # ! use binary -} - -src_install() { - if use binary; then - 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" - - # 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/ghc-6.12.3-r2.ebuild b/dev-lang/ghc/ghc-6.12.3-r2.ebuild new file mode 100644 index 000000000000..312987b9a829 --- /dev/null +++ b/dev-lang/ghc/ghc-6.12.3-r2.ebuild @@ -0,0 +1,567 @@ +# 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-6.12.3-r2.ebuild,v 1.1 2011/04/25 17:55:08 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/" + +arch_binaries="" + +arch_binaries="$arch_binaries alpha? ( http://code.haskell.org/~slyfox/ghc-alpha/ghc-bin-${PV}-alpha-haddock.tbz2 )" +arch_binaries="$arch_binaries x86? ( mirror://gentoo/ghc-bin-${PV}-x86.tbz2 )" +arch_binaries="$arch_binaries amd64? ( mirror://gentoo/ghc-bin-${PV}-amd64.tbz2 )" +arch_binaries="$arch_binaries ia64? ( http://code.haskell.org/~slyfox/ghc-ia64/ghc-bin-${PV}-ia64-haddock.tbz2 )" +arch_binaries="$arch_binaries sparc? ( http://code.haskell.org/~slyfox/ghc-sparc/ghc-bin-${PV}-sparc.tbz2 )" +arch_binaries="$arch_binaries ppc64? ( mirror://gentoo/ghc-bin-${PV}-ppc64.tbz2 )" +arch_binaries="$arch_binaries ppc? ( mirror://gentoo/ghc-bin-${PV}-ppc.tbz2 )" + +# various ports: +arch_binaries="$arch_binaries x86-fbsd? ( http://code.haskell.org/~slyfox/ghc-x86-fbsd/ghc-bin-${PV}-x86-fbsd.tbz2 )" + +# prefix ports: +arch_binaries="$arch_binaries x86-macos? ( http://www.haskell.org/ghc/dist/6.10.1/maeder/ghc-6.10.1-i386-apple-darwin.tar.bz2 )" +arch_binaries="$arch_binaries ppc-macos? ( http://www.haskell.org/ghc/dist/6.10.1/maeder/ghc-6.10.1-powerpc-apple-darwin.tar.bz2 )" +arch_binaries="$arch_binaries x86-solaris? ( http://www.haskell.org/ghc/dist/6.10.4/maeder/ghc-6.10.4-i386-unknown-solaris2.tar.bz2 )" +arch_binaries="$arch_binaries sparc-solaris? ( http://www.haskell.org/ghc/dist/6.10.4/maeder/ghc-6.10.4-sparc-sun-solaris2.tar.bz2 )" + +SRC_URI="!binary? ( http://darcs.haskell.org/download/dist/${PV}/${P}-src.tar.bz2 ) + !ghcbootstrap? ( $arch_binaries )" +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~x86-solaris" +IUSE="binary doc ghcbootstrap" + +RDEPEND=" + !dev-lang/ghc-bin + !kernel_Darwin? ( >=sys-devel/gcc-2.95.3 ) + kernel_linux? ( >=sys-devel/binutils-2.17 ) + kernel_SunOS? ( >=sys-devel/binutils-2.17 ) + >=dev-lang/perl-5.6.1 + >=dev-libs/gmp-4.1 + !=ghc-5.04.3 on their $PATH already + +PDEPEND="!ghcbootstrap? ( || ( =app-admin/haskell-updater-1.2* =app-admin/haskell-updater-1.1* ) )" + +# use undocumented feature STRIP_MASK to fix this issue: +# http://hackage.haskell.org/trac/ghc/ticket/3580 +STRIP_MASK="*/HSffi.o" + +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 + + GHC_CFLAGS="" + 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 + + # 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." + 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_CFLAGS. + # See bug #313635. + sed -i -e "s|\"\$topdir\"|\"\$topdir\" ${GHC_CFLAGS}|" \ + "${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*) + 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_CFLAGS}|" \ + "${S}/ghc/ghc.wrapper" + + # 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 remove GCC from the wrappers, which forces + # GHC to use GCC from the users path, like previous GHC versions did. + + # Remove path to gcc + sed -i -e '/pgmgcc/d' \ + "${S}/rules/shell-wrapper.mk" + + # Remove usage of the path to gcc + sed -i -e 's/-pgmc "$pgmgcc"//' \ + "${S}/ghc/ghc.wrapper" + + cd "${S}" # otherwise epatch will break + + epatch "${FILESDIR}/ghc-6.12.1-configure-CHOST.patch" + epatch "${FILESDIR}/ghc-6.12.2-configure-CHOST-part2.patch" + epatch "${FILESDIR}/ghc-6.12.3-configure-CHOST-freebsd.patch" + epatch "${FILESDIR}/ghc-6.12.3-configure-CHOST-prefix.patch" + + # -r and --relax are incompatible + epatch "${FILESDIR}/ghc-6.12.3-ia64-fixed-relax.patch" + + # prevent from wiping upper address bits used in cache lookup + epatch "${FILESDIR}/ghc-6.12.3-ia64-storage-manager-fix.patch" + + # fixes build failure of adjustor code + epatch "${FILESDIR}/ghc-6.12.3-alpha-use-libffi-for-foreign-import-wrapper.patch" + + # native adjustor (NA) code is broken: interactive darcs-2.4 coredumps on NA + epatch "${FILESDIR}/ghc-6.12.3-ia64-use-libffi-for-foreign-import-wrapper.patch" + + # same with NA on ppc + epatch "${FILESDIR}/ghc-6.12.3-ppc-use-libffi-for-foreign-import-wrapper.patch" + + # substitute outdated macros + epatch "${FILESDIR}/ghc-6.12.3-autoconf-2.66-4252.patch" + + # ticket 2615, linker scripts + # breaks Darwin + [[ ${CHOST} != *-darwin* ]] && \ + epatch "${FILESDIR}/ghc-6.12.3-ticket-2615-linker-script.patch" + + # export typechecker internals even if ghci is disabled + # http://hackage.haskell.org/trac/ghc/ticket/3558 + epatch "${FILESDIR}/ghc-6.12.3-ghciless-haddock-3558.patch" + + # This patch unbreaks ghci on GRSEC kernels hardened with + # TPE (Trusted Path Execution) protection. + epatch "${FILESDIR}/ghc-6.12.3-libffi-incorrect-detection-of-selinux.patch" + + epatch "${FILESDIR}"/${P}-pic-powerpc.patch + epatch "${FILESDIR}"/${P}-darwin8.patch + epatch "${FILESDIR}"/${P}-mach-o-relocation-limit.patch + epatch "${FILESDIR}"/${P}-powerpc-darwin-no-mmap.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_CFLAGS flags when building ghc itself + echo "SRC_HC_OPTS+=${GHC_CFLAGS}" >> mk/build.mk + case $($(tc-getAS) -v 2>&1 > mk/build.mk + ;; + esac + + # 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 XMLDocWays="html" >> mk/build.mk + echo HADDOCK_DOCS=YES >> mk/build.mk + else + echo XMLDocWays="" >> mk/build.mk + echo HADDOCK_DOCS=NO >> mk/build.mk + fi + + sed -e "s|utils/haddock_dist_INSTALL_SHELL_WRAPPER = YES|utils/haddock_dist_INSTALL_SHELL_WRAPPER = NO|" \ + -i utils/haddock/ghc.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+=-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 + if use alpha || use ppc64; 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 + + # Have "ld -r --relax" problem with split-objs on sparc: + if use sparc; then + echo "SplitObjs=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 + + econf || die "econf failed" + fi # ! use binary +} + +src_compile() { + if ! use binary; then + # LC_ALL needs to workaround ghc's ParseCmm failure on some (es) locales + # bug #202212 / http://hackage.haskell.org/trac/ghc/ticket/4207 + LC_ALL=C emake all || die "make failed" + fi # ! use binary +} + +src_install() { + if use binary; then + 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" + + # 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,} +} -- cgit v1.2.3-65-gdbad