diff options
-rw-r--r-- | sys-devel/base-gcc/Manifest | 45 | ||||
-rw-r--r-- | sys-devel/base-gcc/base-gcc-4.6.4.ebuild | 225 | ||||
-rw-r--r-- | sys-devel/base-gcc/base-gcc-4.7.3-r1.ebuild | 209 | ||||
-rw-r--r-- | sys-devel/base-gcc/base-gcc-4.7.3.ebuild | 231 | ||||
-rw-r--r-- | sys-devel/base-gcc/base-gcc-4.7.4.ebuild | 211 | ||||
-rw-r--r-- | sys-devel/base-gcc/base-gcc-4.8.3.ebuild | 211 | ||||
-rw-r--r-- | sys-devel/base-gcc/files/gcc-spec-env-r1.patch | 87 |
7 files changed, 1193 insertions, 26 deletions
diff --git a/sys-devel/base-gcc/Manifest b/sys-devel/base-gcc/Manifest index bb905ce5..82d34af4 100644 --- a/sys-devel/base-gcc/Manifest +++ b/sys-devel/base-gcc/Manifest @@ -1,26 +1,19 @@ -AUX awk/fixlafiles.awk 7807 RMD160 749402c9c0a0f1e8755067c0e001f69d73edb09f SHA1 5fc91ce11eb93e989ae64470dba602fe534ac409 SHA256 3cae4890a295adef50c6cf8a7e14d1be4e7a2356479c073e5c29433c3cdf9c5c -AUX awk/fixlafiles.awk-no_gcc_la 8596 RMD160 d34279d732586514b220ec0d583c5e634b5d97ef SHA1 95f07ff4d6c3196e682371f02e6d2207d921a1b5 SHA256 91e36c29133b6ff854bc84acd6cd2e9d07be6eaa73ef9b23e4f7bc6371107fab -AUX fix_libtool_files.sh 1735 RMD160 5035cd4a9995ea6207a8de95815921c3939395bd SHA1 57cd1babab4c6b142dd8cc58b36943442ff2af13 SHA256 b8d86b1db9453dff4c62b3467887bf1e04ecb483120185102122bda2581ed3f5 -AUX gcc-configure-LANG.patch 2052 RMD160 91f5b90600dfccb10c4e2308a5a1485275fdfeee SHA1 56ecd1d6f2e4bd0b35ac108be72a4f6f60212c38 SHA256 63de6d2dcfe14f21d147abeb1390405b9220c03f8e968f482d4b4c1cf279c88b -AUX gcc-configure-texinfo.patch 337 RMD160 d0e872a9f0ccb5ab51d10f129acd7a19d76a7b75 SHA1 7e267fac540175ce848e563539db8c951cab557b SHA256 74b73a7ecec2d88889876b4db480cd173632f49d5396bb8e5b3c93673f9b5b98 -AUX gcc-spec-env.patch 1544 RMD160 1f7747546513a6d8e16bd82c2824969b9a739dfb SHA1 bdc2736377813da4046ceea77922620dd69d8658 SHA256 64b01f29fb853fee5ecda998b66eeaa7ec86ff1fc3b21432bfd69eb543c93e6a -AUX mkinfodir 7324 RMD160 96bbe8860ae8c0a50db42fea01cc1c2216bd36c8 SHA1 3b8316da1a0fa94943e6b71be709827563af7058 SHA256 0565353e767e253207adb8b5c9be9ba215a628447e075a4dc7bb3183ed099d2a -AUX pro-police-docs.patch 3287 RMD160 eef412d92bed145db05bffa3a3e54e2ba74ee50d SHA1 ca58eda97d80f3d51f4e383ad3053fcb13f7a91b SHA256 ec012aed77285545b9d993cba1bc5fdb402c8dc9a17040f48b8b354746ede627 -DIST ecj-4.5.jar 1470676 RMD160 d3f4da657f086b6423f74e93f001132f4855368a SHA1 58c1d79c64c8cd718550f32a932ccfde8d1e6449 SHA256 98fd128f1d374d9e42fd9d4836bdd249c6d511ebc6c0df17fbc1b9df96c3d781 -DIST gcc-4.4.3-specs-0.2.0.tar.bz2 2004 RMD160 0a013f95029a170eeea3cb6ccbfd65f64b66f465 SHA1 61bd3c13400772ec4d5d4fcee297e3d86adbd065 SHA256 f6c7cb99beead66dd4d06f7004c5731a9360330cbe878ce79792c618e008eed2 -DIST gcc-4.5.3-patches-1.1.tar.bz2 20627 RMD160 432101fa66d4be008b6a4c606aea98bd4ae217d3 SHA1 0272e461a5e511d9998085f2b6387d917a151a17 SHA256 171348adbdbf3eeb26f47be414a47591eb332271995a052ef57fccb5742361ec -DIST gcc-4.5.3-piepatches-v0.4.7.tar.bz2 14638 RMD160 3976e2390acb6d0ada68b697150522fa4bc67682 SHA1 326d230873059c635daf8120afeaeeef1bd3cd52 SHA256 fe3414a85b6b0a1e4ff758c008bbefc7411148ccb9af70cb1a0af179eba55a32 -DIST gcc-4.5.3-uclibc-patches-1.0.tar.bz2 3015 RMD160 af8fad2ca0a948f25bff2b4f4f9868a99c7ceae7 SHA1 679698942814c9b3caaa5d220d672c87df50fa26 SHA256 7ddb8ac57b42c0de07a9afb3338c05d884da3c606f80cf21ee767f9c4682e3f6 -DIST gcc-4.5.3.tar.bz2 66374586 RMD160 d07aa90f2186b4e082dfd5ad5d5188c097fb6247 SHA1 73c45dfda5eef6b124be53e56828b5925198cc1b SHA256 0a8847af44a9b33813b199997a73139517c96adfd519eaf24c79d4d9d09f65de -DIST gcc-4.6.2-patches-1.0.tar.bz2 12374 RMD160 84aa2e55a8762e2d38161943e1661fd7a89683a8 SHA1 582f0c4bf7b734bb5798b0b8b9deac898557789d SHA256 a6fd308469094095891ba003b9c3c2d4c8bf35713df987609b675f04a43e83df -DIST gcc-4.6.2-piepatches-v0.4.5.tar.bz2 14156 RMD160 101546367ae798f9080d111e4f9ccc0914ec74c8 SHA1 2ad14aa580d65cbc7dd35b5d05977890e9fb1679 SHA256 a18bea1bc2cad2efde5481a5777a97cf539d206dcbca33758d56d7fbdb43a554 -DIST gcc-4.6.2-uclibc-patches-1.0.tar.bz2 3019 RMD160 7e991775c15d4126bd8d85aceb677c675559606f SHA1 0d316aaf94966cc52b1582282723a932ac065639 SHA256 25e902a6d2db7181394df5ad11fafaad064bf28a6ffebd889033f744613ac201 -DIST gcc-4.6.2.tar.bz2 71995338 RMD160 e7041933b39629f9524848dcf81a1a4c02a225c6 SHA1 691974613b1c1f15ed0182ec539fa54a12dd6f93 SHA256 60b05463dfe18d40d68fb8a71b25b408a01f86cc6ceaf5e6b22238b6b0f450c2 -DIST gcc-4.6.3-patches-1.3.tar.bz2 83071 RMD160 4e8c94ce83421ed1138439f946321763803b3157 SHA1 b05f96f1741828fb13ca23f0bd057223de1908ab SHA256 0acc8494932259dbadc118587626bb2505fc565e1a862bb792116e08961c141a -DIST gcc-4.6.3-piepatches-v0.5.2.tar.bz2 15002 RMD160 75f25287ded26fd8ae88516b0b72d21fc0f17296 SHA1 8a1848819bc9c3e00513e68abded115410f25f78 SHA256 6606d47a8bbaa9cba0dd3b022cbf6ed14325b8560dd17f7601dbaa4697df3691 -DIST gcc-4.6.3-uclibc-patches-1.0.tar.bz2 3023 RMD160 6487e89d892687c51f4d764979c90133ae4c0a07 SHA1 26581caab046ba4a03041557db641f2899d518af SHA256 4219a3582c5f98bf8437bfc3feb8c264f8aabd8078caaddef46dd38be33f089f -DIST gcc-4.6.3.tar.bz2 71999439 RMD160 9abb2f940d08fc84f2d91b6a6ce8d662ca889269 SHA1 ce317ca5c8185b58bc9300182b534608c578637f SHA256 e8f5853d4eec2f5ebaf8a72ae4d53c436aacf98153b2499f8635b48c4718a093 -EBUILD base-gcc-4.5.3-r2.ebuild 4481 RMD160 253e913d84ea216f1f6f4ce6ba22db93b0158eab SHA1 fae5c11e489e17b4a3c8eeb19dad7a253d8ac259 SHA256 c3a139f9d4f8a96f96b50921ffd5aff131e949807dcad60480d883721cfcffff -EBUILD base-gcc-4.6.2.ebuild 4605 RMD160 b49258fd5e27cd84a2ea7b4ad0202daacd3f611a SHA1 fc5db91c140f26c995caf709239104f9460c92bc SHA256 ccd02cc3a9d6c8bac9ae9ee294c0744bc5173b92007d96b6bd9d0836225e7b1a -EBUILD base-gcc-4.6.3.ebuild 5972 RMD160 77181ebd015794f73c04aac7dd6e0f97f8618bee SHA1 889e2eefe229c4e3c51762065e3375ad7e4943a5 SHA256 5550e6d45454b2396704b0dfae3dbb856c4ef8fefe79492d5111192f9b226ee7 -MISC metadata.xml 1780 RMD160 0fa658c47436e17235cd03b5a9a3cbd8448e474b SHA1 127adff4704c040ee42d43bd9ea8218b408203cf SHA256 57d7428c3d0ef34e72e780a3cfa7a059202b5c80f2d61cc12f90f0d1e8f5f12e +DIST ecj-4.5.jar 1470676 SHA256 98fd128f1d374d9e42fd9d4836bdd249c6d511ebc6c0df17fbc1b9df96c3d781 SHA512 d4e1bf7538ace56e3d69fa91da5bbd16c272923b4de0a9d8dee23ea2b75f9f38c603de72fc4061df49285c450b63f3df211cee5270e9fffc5447445d1a9c9e4e WHIRLPOOL db54206cfd5eba935e707b8d36ebac40f3c4ed3c1f06ede794288cbdd9c7da9d90c0898e8c98b383af276ea4c1b40c861ebd9e1fc1dce712946184321339d3ad +DIST gcc-4.4.3-specs-0.2.0.tar.bz2 2004 SHA256 f6c7cb99beead66dd4d06f7004c5731a9360330cbe878ce79792c618e008eed2 SHA512 779ecb0a064d2138b54569c8ae501975b8a6b72e5a3acbf8597619a8db77ee42ef9b0e62608d5192a15e4393e7dfc009bb50b994782236faa744b2c46b5fe517 WHIRLPOOL 8a1e45aad9d306cb19de93c63b5854a97e629d90852feb6861dcfca042b6257705304fc13ad65655a4cb227d36b83fc6063648c94f270821574ee0e85307094e +DIST gcc-4.6.4-patches-1.0.tar.bz2 18687 SHA256 f751e2e701c48bc30d3047b87b5d08fb15095de3bb5b83c9662c08f5e5449a92 SHA512 8dd580faa9bcffcdeb1843a8d3d3bd8db492891d855c17bba3cc019673d814a5d24a927055694307be6438cb2c041bc799646a483c019f3840e4e1ca33b7ccb5 WHIRLPOOL 695fd821f347062bed01305fa1aca8c0cf4085391ad63f31df4afa3f4eaeb57eba7cebae02caac788dc9b290a57d675e66667ee3e15522d7d2909cbcbf1e6982 +DIST gcc-4.6.4-piepatches-v0.5.2.tar.bz2 14888 SHA256 a6a853197fb0de66c07e6183e686dbdb1f4b55108efd4c8363662cb2b971f43c SHA512 2fd1993b0dc7fc2096e17198f70ff6328ac4d3b7c0db597e3bc119df10eb0b9744f8e6cc659ae1ddd8afdb14f94cb85fdd12033a5d76026c7f84aca44ce9c9b8 WHIRLPOOL 61babd71167114a3f8579e8fb4bba5ed0c217cff4f3760b89de8a67d69c05de43b49bd9f567e6417b69874a878ecdc0e98d807a0e25a9dc80ef5c67594e15a0d +DIST gcc-4.6.4-uclibc-patches-1.0.tar.bz2 3010 SHA256 946334cc62c0afa2f50a435dffbed12fd32c170f0850bbdce47df188a1eb8918 SHA512 fd289089a30c768b0ec4e3459cf494bc5e9d4ecf87056dc183277c712f7d69ac4cf900950270d8eacfe686b4aa906e1ece87cae52f2cb00642e96c0b95dcf133 WHIRLPOOL 2ce7f308a21fb5072d08a640390eb3f453ad8d811df897b0f9d3e917eef4680fce6cce231159ffe96e371f3c299264eaa51cd110124a3a126f04fb6d8531639e +DIST gcc-4.6.4.tar.bz2 72006076 SHA256 35af16afa0b67af9b8eb15cafb76d2bc5f568540552522f5dc2c88dd45d977e8 SHA512 b5a5395782e0b9e61cda052f6e00c8575d1aa0b7e8db9e34c06e4e45f12ff37b436018536b7fa69a04a4235b5b368895652e3ed8fab2fe11763f9782ed9161dc WHIRLPOOL ab1b035f43aec669640b36037e65ae0edceb3b13b1ce4f7900aeff5ee06686dc2d66c3dd81156f53c4e9a9a806e4becd4462f72a6c4ad7e646b632c10c23356c +DIST gcc-4.7.3-patches-1.0.tar.bz2 39969 SHA256 c9a5d7c6da7d056f7fca15b33eb7f399bb7ed5a2d0a892b97e0c7609146a2a24 SHA512 d5c3151eca135bb08511955d81c7727adbf8fc33043b64a4431b0fe95d2cac1bf3c5410fa9616373d6b3d932604195ff29f6321e61a3de69a7704f1d1cb1759f WHIRLPOOL 315578ef5a7226ed66c4831b25c79647120453dc169dc8ecd291e099500ae52284ffa451164522d6d55d11c440a7aa353a283c07e28c103c522df0c2e2f43fff +DIST gcc-4.7.3-patches-1.4.tar.bz2 43148 SHA256 bfafbd4c1cdd589858c18072f8e06c537370169cce1788aba869f35096174e57 SHA512 6dfc5b405e2eca70642f42974d7d3183ff8f0eed3e9f29fbf197e8959bc1795a1ba54df99e4f73df1017332f46bdf3d1c10d4b0f89fea71d604dd5ebda488c22 WHIRLPOOL 2fbd05323dd803a1b2b7c09a3b44cc8f23d4662f61a89b9365a5d505b4a605ac168fc940bae5992e2ad6b821f93d0f6651092d3301b15fdfd14ccf608fa241e6 +DIST gcc-4.7.3-piepatches-v0.5.5.tar.bz2 15378 SHA256 b6f6b6709e7b13f6c05090f3bf68f3a64db19d52593a870cc7717c5c128b05a2 SHA512 d0189d2e4049d471dedaddcba319fe2c2b29855f7b33e84b26051504ead2936c852ef7870a1d19d755bb343c9b121b0ce5295665ab4ff1e448436bd448c08e1f WHIRLPOOL ccceedb41d48da69f5a423b6b73436c9fbb7b1e382456abfcef954f25666e1b7caf926bc5eb977e934502359a356d623c439d80825e87d9fe46b5ae78a74bde3 +DIST gcc-4.7.3-uclibc-patches-1.0.tar.bz2 3013 SHA256 731c518f31db8debd08bea92db8e3bf1e9962552909407452dc2ac3c491cf11c SHA512 6119159300e76be87732f2a44b1a9388228235d7832370dbae531c2c96694ea42ed4c75acf7abca98ec0035fbc50a8bf84225574505358c2739e64b0f3fd6a95 WHIRLPOOL 4a874a5684937907720aa5a4a1dbc237aa7d985292befd1c591cf0789c71e0da22ced5b7f7e049731bc2d6496e959cbe3c9010047ceb1b05675e61865004c71a +DIST gcc-4.7.3.tar.bz2 82904224 SHA256 2f7c37eb4fc14422ff2358a9ef59c974a75ab41204ef0e49fc34ab1d8981a9c3 SHA512 5671a2dd3b6ac0d23f305cb11a796aebd823c1462b873136b412e660966143f4e07439bd8926c1443b78442beb6ae370ef91d819ec615920294875b722b7b0bd WHIRLPOOL cb3408e3e251833f38ae7cf2388a1ddce864614fe1c68de9729a1a9a1f8f028ab92c0f2b863e7fa3ac16dbf443306ac864e74c9cce90690230c081ee2ac309d3 +DIST gcc-4.7.4-patches-1.2.tar.bz2 41732 SHA256 6885f63b7cd37a0f4fb9584a15e3144c5a08abd2b1fdcc485f43daba576f162c SHA512 ee42ca54ee8a3b03c20870493ac91ceb224c74c8f6c92e9bec43a2e4c46a0179a349faa14e3d6583367dec6e001cb2071a31d2eeadb4902ea97a7cf9a3958b6b WHIRLPOOL 04672dd9f9e481e591d0cb4a7bd2f65d7e78c3a44b91d982db3e78d1c9a3b29a544726a89d34ea4f4c9791595f21da2ad97ec87c719e5334b6eb7100df6e28b3 +DIST gcc-4.7.4-piepatches-v0.5.5.tar.bz2 15358 SHA256 6b568bd204e3ffb177df1830e5a888be3987491b4183bdb6ad75ad83c642a348 SHA512 f5e078bf4c17f7b5be102f1e3358d91c72e80363b5e055a92461f78399a1bf27bf6cb690d41900719bb260b6529f5d1aac999e613fda6ac5e4efa27f622510e6 WHIRLPOOL 42e348d5925cf4d43697a6dc06c911cc617f89037949ce1d8f7aa0fa93405f460e7416d6cd00e8fb2aac54c6f26fcae00691917f1517fcfb6891925efa3d3400 +DIST gcc-4.7.4-uclibc-patches-1.0.tar.bz2 3019 SHA256 cbdfe2947f653e11ac391dded461416e5cef1ff8900cf8fe92672de797b4018b SHA512 c2e6c96b74365f8233f6106fa03d94075b60f6f77c683aa2e27aceb007da723243f8e3ddea8b178e6a0f7939b8e35615165534dc74e5050f87680ab261a31c52 WHIRLPOOL 53c8bd64336eb55d8e3d62a33267d3d99c0239d5c818985a9830fd776d766aabf4b0bce630949c5b522580566e2eeba1b59bfc1b8388dee7ec6c990512d2c499 +DIST gcc-4.7.4.tar.bz2 82935453 SHA256 92e61c6dc3a0a449e62d72a38185fda550168a86702dea07125ebd3ec3996282 SHA512 dfcb737073191e628231031a3571ec77ee760a59377630f4a6e4fdfa66f9ddad39fde47e3f0f227eb43cdf90e0d34cde5abdc9ac892c1e111a911062a66c9189 WHIRLPOOL df8408e80634ce28f105f9abcdcf38fba5c130795cbe48428527a68819abebc3bc7152bb6ad714e40c71450a08986b48ddd630c887e1b2faf07c3babfe720969 +DIST gcc-4.8.3-patches-1.1.tar.bz2 19882 SHA256 019cbe76f20f4e294b900ccb99a6b52553ed04fa0d2993798b3a07b0e4a8f90a SHA512 8512ec54fb2d482e08ca54042e11c6334d653ec850cc7c920ed95654575222ac0303caa35cd46e80f1985d86cd229f35e26e0eaca1ae623fd8d336940148801c WHIRLPOOL d7b8d6278b6f79aa00fcd29ed6142cad3002def33edb0be44e638d50cb3b1fa8da72fa62a7276c81c94cd873c872dd0e7fd602022420d9601fde8f2b04872ece +DIST gcc-4.8.3-piepatches-v0.5.9.tar.bz2 13310 SHA256 d08e3770453edb728216243ecaf639ff7bc8aa77560fffdd561b2a0859d0b869 SHA512 d9d7dc4b7d8f52cce48dff36ee32db5346baed50968a1cacafa9a426849c5df5387061b26c8a0d2363bf91e5f55cb459cb4a176c5652690f914916047c0437f8 WHIRLPOOL 1e5cb3556b695de7f42ab44636194e86128f80bdffbe049fc1d4ee17b772bc1ea2089b3fe88bec60c52aab4bf5301344be27fd11be3c6cc8ef798d6441285c8b +DIST gcc-4.8.3-uclibc-patches-1.0.tar.bz2 3014 SHA256 75f089ed44e33be8923f82eaa1d231f71d2cded475fb10938eded386647c5e04 SHA512 7e74fefae6136d2e132ee37905adbdf7f528d31a7bb67ed97bc99b6208f177a6105ef0f0e0c77eb87368359f7da49de768ff98ec07a569e19bfdd00f67a445a8 WHIRLPOOL 6fd766ba280fc0b96f1823315b5098a36d361dc9c8d179b2e262d72156508b70c560ef5095f3556bb5c922e495cc7eefb4bd5d970b2e4dff9e9ce654703fddc5 +DIST gcc-4.8.3.tar.bz2 86126808 SHA256 6a8e4f11b185f4fe2ed9d7fc053e80f8c7e73f800c045f51f9d8bea33f080f1e SHA512 2b40d231e8445f9c1654137df509f09ce1187b475138ca7f648f710d922a1718f740b2d8a37c26e16b5e27900c60358be98229ae884a6f1f70e9df44ad24d02b WHIRLPOOL 6dd3bd4b51bb9b8c52fb743bba28cde8612ff7090b71e56bf02d3613b91cd4c3c4dd91dbcb672985f22400d776870ba55550e1fc44afae9737092ceca5f83ebd diff --git a/sys-devel/base-gcc/base-gcc-4.6.4.ebuild b/sys-devel/base-gcc/base-gcc-4.6.4.ebuild new file mode 100644 index 00000000..b9cd301c --- /dev/null +++ b/sys-devel/base-gcc/base-gcc-4.6.4.ebuild @@ -0,0 +1,225 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +PATCH_VER="1.0" +UCLIBC_VER="1.0" + +# Hardened gcc 4 stuff +PIE_VER="0.5.2" +SPECS_VER="0.2.0" +SPECS_GCC_VER="4.4.3" +# arch/libc configurations known to be stable with {PIE,SSP}-by-default +PIE_GLIBC_STABLE="x86 amd64 mips ppc ppc64 arm ia64" +PIE_UCLIBC_STABLE="x86 arm amd64 ppc ppc64" +SSP_STABLE="amd64 x86 mips ppc ppc64 arm" +# uclibc need tls and nptl support for SSP support +# uclibc need to be >= 0.9.32 +SSP_UCLIBC_STABLE="x86 amd64 ppc ppc64 arm" +#end Hardened stuff + +inherit eutils toolchain + +# This is here to redeclare is_gcc() in toolchain.eclass +# We don't even want to build gcj, which is a real hog +# on memory constrained hardware. base-gcc doesn't actually +# ship with it atm. +is_gcj() { + return 1 +} + +DESCRIPTION="The GNU Compiler Collection" + +LICENSE="GPL-3 LGPL-3 || ( GPL-3 libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.2" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd" + +RDEPEND=">=sys-libs/zlib-1.1.4 + virtual/libiconv + >=dev-libs/gmp-4.3.2 + >=dev-libs/mpfr-2.4.2 + >=dev-libs/mpc-0.8.1 + graphite? ( + >=dev-libs/cloog-ppl-0.15.10 + >=dev-libs/ppl-0.11 + ) + !build? ( + nls? ( sys-devel/gettext ) + )" + +DEPEND="${RDEPEND} + test? ( + >=dev-util/dejagnu-1.4.4 + >=sys-devel/autogen-5.5.4 + ) + >=sys-apps/texinfo-4.8 + >=sys-devel/bison-1.875 + >=sys-devel/flex-2.5.4 + >=${CATEGORY}/binutils-2.18" + +## Check for valid gcc profile. +src_unpack() { + # Since Sabayon's gcc ebuild are split into two parts, we have to + # build gcc with a different version of gcc, or terrible breakage + # will occur after sys-devel/base-gcc is installed, but the + # partner sys-devel/gcc still needs to be built. + + # While it is possible to rebuild Sabayon's split gcc from + # the same version, we have to disallow this also since + # we have no way of discerning if a configuration change + # is significant enough to cause breakage. + + GCC_PROFILE_VER=$(cat ${ROOT}/etc/env.d/gcc/config-$CHOST | awk -F- '{ print $NF }') + einfo "Checking for valid gcc profile to build ${P}" + + # Construct the Slot of the gcc version in the active profile. + GCC_PROFILE_SLOT_MAJOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $1 }') + GCC_PROFILE_SLOT_MINOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $2 }') + GCC_PROFILE_SLOT="${GCC_PROFILE_SLOT_MAJOR}.${GCC_PROFILE_SLOT_MINOR}" + einfo "Current gcc profile version Slot is: ${GCC_PROFILE_SLOT}" + if [[ "${GCC_PROFILE_SLOT}" = "${SLOT}" ]] ; then + eerror "Error!" + eerror "The active gcc-profile is for sys-devel/gcc slot ${SLOT}." + eerror "Sabayon's split sys-devel/gcc package MUST be built" + eerror "with another slotted version of sys-devel/gcc active." + ebeep 10 + fi + + toolchain_src_unpack + + use vanilla && return 0 + + [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch +} + +pkg_setup() { + toolchain_pkg_setup + + ewarn + ewarn "LTO support is still experimental and unstable." + ewarn "Any bugs resulting from the use of LTO will not be fixed." + ewarn +} + +## Just install libgcc stuff +src_install() { + cd "${WORKDIR}/build" + S="${WORKDIR}"/build \ + emake -j1 -C "${CTARGET}/libgcc" DESTDIR="${D}" install-shared || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgcc" DESTDIR="${D}" \ + install-shared || die + fi + + if use mudflap; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libmudflap" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libmudflap" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + fi + + if use openmp; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgomp" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + fi + + S="${WORKDIR}"/build \ + emake -j1 -C "${CTARGET}/libstdc++-v3/src" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libstdc++-v3/src" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libstdc++-v3/po" DESTDIR="${D}" install || die + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" install-info || die + + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libquadmath || die + if use fortran; then + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libgfortran || die + fi + # TODO: what to do with USE objc++ and objc-gc ? + if use objc; then + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libobjc || die + fi + + # from toolchain.eclass yay + gcc_movelibs + + dodir /etc/env.d/gcc + create_gcc_env_entry + + # Setup the gcc_env_entry for hardened gcc 4 with minispecs + if want_minispecs ; then + copy_minispecs_gcc_specs + fi + + # drop any .la, .a + find "${D}" -name *.a -delete + find "${D}" -name *.la -delete + + # drop any include + rm "${D}${LIBPATH}"/include -rf + # drop specs as well, provided by sys-devel/gcc-${PV}:${SLOT} + # unfortunately, the spec shit above does create the env.d/ + # file content... + rm "${D}${LIBPATH}"/{32/,}*.spec{s,} -rf + rm "${D}${LIBPATH}"/specs -rf + + # Now do the fun stripping stuff + env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}" + + cd "${S}" + if ! is_crosscompile; then + has noinfo ${FEATURES} \ + && rm -r "${D}/${DATAPATH}"/info \ + || prepinfo "${DATAPATH}" + fi + + # use gid of 0 because some stupid ports don't have + # the group 'root' set to gid 0 + chown -R root:0 "${D}"${LIBPATH} +} + +## Do nothing! +pkg_preinst() { + : +} + +pkg_postinst() { + # Sabayon specific bits to always force the latest gcc profile + local gcc_atom=$(best_version sys-devel/base-gcc) + local gcc_ver= + if [ -n "${gcc_atom}" ]; then + elog "Found latest base-gcc to be: ${gcc_atom}, forcing this profile" + gcc_ver=$(portageq metadata "${ROOT}" installed "${gcc_atom}" PV) + else + eerror "No sys-devel/base-gcc installed" + fi + + if [ -n "${gcc_ver}" ]; then + local target="${CTARGET:${CHOST}}-${gcc_ver}" + local env_target="${ROOT}/etc/env.d/gcc/${target}" + [[ -e "${env_target}-vanilla" ]] && find_target="${target}-vanilla" + + elog "Setting: ${target} GCC profile" + gcc-config "${target}" + else + eerror "No sys-devel/base-gcc version installed? Cannot set a proper GCC profile" + fi +} + +## Do nothing! +pkg_prerm() { + : +} + +## Do nothing! +pkg_postrm() { + : +} diff --git a/sys-devel/base-gcc/base-gcc-4.7.3-r1.ebuild b/sys-devel/base-gcc/base-gcc-4.7.3-r1.ebuild new file mode 100644 index 00000000..9f47e9d4 --- /dev/null +++ b/sys-devel/base-gcc/base-gcc-4.7.3-r1.ebuild @@ -0,0 +1,209 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +PATCH_VER="1.4" +UCLIBC_VER="1.0" + +# Hardened gcc 4 stuff +PIE_VER="0.5.5" +SPECS_VER="0.2.0" +SPECS_GCC_VER="4.4.3" +# arch/libc configurations known to be stable with {PIE,SSP}-by-default +PIE_GLIBC_STABLE="x86 amd64 ppc ppc64 arm ia64" +PIE_UCLIBC_STABLE="x86 arm amd64 ppc ppc64" +SSP_STABLE="amd64 x86 ppc ppc64 arm" +# uclibc need tls and nptl support for SSP support +# uclibc need to be >= 0.9.33 +SSP_UCLIBC_STABLE="x86 amd64 ppc ppc64 arm" +#end Hardened stuff + +inherit eutils toolchain + +# This is here to redeclare is_gcc() in toolchain.eclass +# We don't even want to build gcj, which is a real hog +# on memory constrained hardware. base-gcc doesn't actually +# ship with it atm. +is_gcj() { + return 1 +} + +DESCRIPTION="The GNU Compiler Collection" + +LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+" +KEYWORDS="alpha amd64 arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 -amd64-fbsd -x86-fbsd" + +RDEPEND="" +DEPEND="${RDEPEND} + elibc_glibc? ( >=sys-libs/glibc-2.8 ) + >=${CATEGORY}/binutils-2.18" + +src_unpack() { + # Since Sabayon's gcc ebuild are split into two parts, we have to + # build gcc with a different version of gcc, or terrible breakage + # will occur after sys-devel/base-gcc is installed, but the + # partner sys-devel/gcc still needs to be built. + + # While it is possible to rebuild Sabayon's split gcc from + # the same version, we have to disallow this also since + # we have no way of discerning if a configuration change + # is significant enough to cause breakage. + + GCC_PROFILE_VER=$(cat ${ROOT}/etc/env.d/gcc/config-$CHOST | awk -F- '{ print $NF }') + einfo "Checking for valid gcc profile to build ${P}" + + # Construct the Slot of the gcc version in the active profile. + GCC_PROFILE_SLOT_MAJOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $1 }') + GCC_PROFILE_SLOT_MINOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $2 }') + GCC_PROFILE_SLOT="${GCC_PROFILE_SLOT_MAJOR}.${GCC_PROFILE_SLOT_MINOR}" + einfo "Current gcc profile version Slot is: ${GCC_PROFILE_SLOT}" + if [[ "${GCC_PROFILE_SLOT}" = "${SLOT}" ]] ; then + eerror "Error!" + eerror "The active gcc-profile is for sys-devel/gcc slot ${SLOT}." + eerror "Sabayon's split sys-devel/gcc package MUST be built" + eerror "with another slotted version of sys-devel/gcc active." + ebeep 10 + fi + + if has_version '<sys-libs/glibc-2.12' ; then + ewarn "Your host glibc is too old; disabling automatic fortify." + ewarn "Please rebuild gcc after upgrading to >=glibc-2.12 #362315" + EPATCH_EXCLUDE+=" 10_all_default-fortify-source.patch" + fi + + # drop the x32 stuff once 4.7 goes stable + if [[ ${CTARGET} != x86_64* ]] || ! has x32 $(get_all_abis TARGET) ; then + EPATCH_EXCLUDE+=" 90_all_gcc-4.7-x32.patch" + fi + + toolchain_src_unpack + + use vanilla && return 0 + + [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch +} + +## Just install libgcc stuff +src_install() { + cd "${WORKDIR}/build" + S="${WORKDIR}"/build \ + emake -j1 -C "${CTARGET}/libgcc" DESTDIR="${D}" install-shared || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgcc" DESTDIR="${D}" \ + install-shared || die + fi + + if use mudflap; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libmudflap" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libmudflap" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + fi + + if use openmp; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgomp" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + fi + + S="${WORKDIR}"/build \ + emake -j1 -C "${CTARGET}/libstdc++-v3/src" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libstdc++-v3/src" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libstdc++-v3/po" DESTDIR="${D}" install || die + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" install-info || die + + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libquadmath || die + if use fortran; then + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libgfortran || die + fi + # TODO: what to do with USE objc++ and objc-gc ? + if use objc; then + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libobjc || die + fi + + # from toolchain.eclass yay + gcc_movelibs + + dodir /etc/env.d/gcc + create_gcc_env_entry + + # Setup the gcc_env_entry for hardened gcc 4 with minispecs + if want_minispecs ; then + copy_minispecs_gcc_specs + fi + + # drop any .la, .a + find "${D}" -name *.a -delete + find "${D}" -name *.la -delete + + # drop any include + rm "${D}${LIBPATH}"/include -rf + # drop specs as well, provided by sys-devel/gcc-${PV}:${SLOT} + # unfortunately, the spec shit above does create the env.d/ + # file content... + rm "${D}${LIBPATH}"/{32/,}*.spec{s,} -rf + rm "${D}${LIBPATH}"/specs -rf + + # Now do the fun stripping stuff + env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}" + + cd "${S}" + if ! is_crosscompile; then + has noinfo ${FEATURES} \ + && rm -r "${D}/${DATAPATH}"/info \ + || prepinfo "${DATAPATH}" + fi + + # use gid of 0 because some stupid ports don't have + # the group 'root' set to gid 0 + chown -R root:0 "${D}"${LIBPATH} +} + +## Do nothing! +pkg_preinst() { + : +} + +## Do (almost) nothing! +pkg_postinst() { + # Sabayon specific bits to always force the latest gcc profile + local gcc_atom=$(best_version sys-devel/base-gcc) + local gcc_ver= + if [ -n "${gcc_atom}" ]; then + elog "Found latest base-gcc to be: ${gcc_atom}, forcing this profile" + gcc_ver=$(portageq metadata "${ROOT}" installed "${gcc_atom}" PV) + else + eerror "No sys-devel/base-gcc installed" + fi + + if [ -n "${gcc_ver}" ]; then + local target="${CTARGET:${CHOST}}-${gcc_ver}" + local env_target="${ROOT}/etc/env.d/gcc/${target}" + [[ -e "${env_target}-vanilla" ]] && find_target="${target}-vanilla" + + elog "Setting: ${target} GCC profile" + gcc-config "${target}" + else + eerror "No sys-devel/base-gcc version installed? Cannot set a proper GCC profile" + fi +} + +## Do nothing! +pkg_prerm() { + : +} + +## Do nothing! +pkg_postrm() { + : +} diff --git a/sys-devel/base-gcc/base-gcc-4.7.3.ebuild b/sys-devel/base-gcc/base-gcc-4.7.3.ebuild new file mode 100644 index 00000000..72aff96f --- /dev/null +++ b/sys-devel/base-gcc/base-gcc-4.7.3.ebuild @@ -0,0 +1,231 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +PATCH_VER="1.0" +UCLIBC_VER="1.0" + +# Hardened gcc 4 stuff +PIE_VER="0.5.5" +SPECS_VER="0.2.0" +SPECS_GCC_VER="4.4.3" +# arch/libc configurations known to be stable with {PIE,SSP}-by-default +PIE_GLIBC_STABLE="x86 amd64 ppc ppc64 arm ia64" +PIE_UCLIBC_STABLE="x86 arm amd64 ppc ppc64" +SSP_STABLE="amd64 x86 ppc ppc64 arm" +# uclibc need tls and nptl support for SSP support +# uclibc need to be >= 0.9.33 +SSP_UCLIBC_STABLE="x86 amd64 ppc ppc64 arm" +#end Hardened stuff + +inherit eutils toolchain + +# This is here to redeclare is_gcc() in toolchain.eclass +# We don't even want to build gcj, which is a real hog +# on memory constrained hardware. base-gcc doesn't actually +# ship with it atm. +is_gcj() { + return 1 +} + +DESCRIPTION="The GNU Compiler Collection" + +LICENSE="GPL-3 LGPL-3 || ( GPL-3 libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.2" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd" + +RDEPEND=">=sys-libs/zlib-1.1.4 + virtual/libiconv + >=dev-libs/gmp-4.3.2 + >=dev-libs/mpfr-2.4.2 + >=dev-libs/mpc-0.8.1 + graphite? ( + >=dev-libs/cloog-ppl-0.15.10 + >=dev-libs/ppl-0.11 + ) + !build? ( + nls? ( sys-devel/gettext ) + )" + +DEPEND="${RDEPEND} + test? ( + >=dev-util/dejagnu-1.4.4 + >=sys-devel/autogen-5.5.4 + ) + >=sys-apps/texinfo-4.8 + >=sys-devel/bison-1.875 + >=sys-devel/flex-2.5.4 + >=${CATEGORY}/binutils-2.18" + +## Check for valid gcc profile. +src_unpack() { + # Since Sabayon's gcc ebuild are split into two parts, we have to + # build gcc with a different version of gcc, or terrible breakage + # will occur after sys-devel/base-gcc is installed, but the + # partner sys-devel/gcc still needs to be built. + + # While it is possible to rebuild Sabayon's split gcc from + # the same version, we have to disallow this also since + # we have no way of discerning if a configuration change + # is significant enough to cause breakage. + + GCC_PROFILE_VER=$(cat ${ROOT}/etc/env.d/gcc/config-$CHOST | awk -F- '{ print $NF }') + einfo "Checking for valid gcc profile to build ${P}" + + # Construct the Slot of the gcc version in the active profile. + GCC_PROFILE_SLOT_MAJOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $1 }') + GCC_PROFILE_SLOT_MINOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $2 }') + GCC_PROFILE_SLOT="${GCC_PROFILE_SLOT_MAJOR}.${GCC_PROFILE_SLOT_MINOR}" + einfo "Current gcc profile version Slot is: ${GCC_PROFILE_SLOT}" + if [[ "${GCC_PROFILE_SLOT}" = "${SLOT}" ]] ; then + eerror "Error!" + eerror "The active gcc-profile is for sys-devel/gcc slot ${SLOT}." + eerror "Sabayon's split sys-devel/gcc package MUST be built" + eerror "with another slotted version of sys-devel/gcc active." + ebeep 10 + fi + + # drop the x32 stuff once 4.7 goes stable + if [[ ${CTARGET} != x86_64* ]] || ! has x32 $(get_all_abis TARGET) ; then + EPATCH_EXCLUDE+=" 90_all_gcc-4.7-x32.patch" + fi + + toolchain_src_unpack + + use vanilla && return 0 + + [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch +} + +pkg_setup() { + toolchain_pkg_setup + + ewarn + ewarn "LTO support is still experimental and unstable." + ewarn "Any bugs resulting from the use of LTO will not be fixed." + ewarn +} + +## Just install libgcc stuff +src_install() { + cd "${WORKDIR}/build" + S="${WORKDIR}"/build \ + emake -j1 -C "${CTARGET}/libgcc" DESTDIR="${D}" install-shared || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgcc" DESTDIR="${D}" \ + install-shared || die + fi + + if use mudflap; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libmudflap" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libmudflap" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + fi + + if use openmp; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgomp" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + fi + + S="${WORKDIR}"/build \ + emake -j1 -C "${CTARGET}/libstdc++-v3/src" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libstdc++-v3/src" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libstdc++-v3/po" DESTDIR="${D}" install || die + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" install-info || die + + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libquadmath || die + if use fortran; then + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libgfortran || die + fi + # TODO: what to do with USE objc++ and objc-gc ? + if use objc; then + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libobjc || die + fi + + # from toolchain.eclass yay + gcc_movelibs + + dodir /etc/env.d/gcc + create_gcc_env_entry + + # Setup the gcc_env_entry for hardened gcc 4 with minispecs + if want_minispecs ; then + copy_minispecs_gcc_specs + fi + + # drop any .la, .a + find "${D}" -name *.a -delete + find "${D}" -name *.la -delete + + # drop any include + rm "${D}${LIBPATH}"/include -rf + # drop specs as well, provided by sys-devel/gcc-${PV}:${SLOT} + # unfortunately, the spec shit above does create the env.d/ + # file content... + rm "${D}${LIBPATH}"/{32/,}*.spec{s,} -rf + rm "${D}${LIBPATH}"/specs -rf + + # Now do the fun stripping stuff + env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}" + + cd "${S}" + if ! is_crosscompile; then + has noinfo ${FEATURES} \ + && rm -r "${D}/${DATAPATH}"/info \ + || prepinfo "${DATAPATH}" + fi + + # use gid of 0 because some stupid ports don't have + # the group 'root' set to gid 0 + chown -R root:0 "${D}"${LIBPATH} +} + +## Do nothing! +pkg_preinst() { + : +} + +## Do nothing! +pkg_postinst() { + # Sabayon specific bits to always force the latest gcc profile + local gcc_atom=$(best_version sys-devel/base-gcc) + local gcc_ver= + if [ -n "${gcc_atom}" ]; then + elog "Found latest base-gcc to be: ${gcc_atom}, forcing this profile" + gcc_ver=$(portageq metadata "${ROOT}" installed "${gcc_atom}" PV) + else + eerror "No sys-devel/base-gcc installed" + fi + + if [ -n "${gcc_ver}" ]; then + local target="${CTARGET:${CHOST}}-${gcc_ver}" + local env_target="${ROOT}/etc/env.d/gcc/${target}" + [[ -e "${env_target}-vanilla" ]] && find_target="${target}-vanilla" + + elog "Setting: ${target} GCC profile" + gcc-config "${target}" + else + eerror "No sys-devel/base-gcc version installed? Cannot set a proper GCC profile" + fi +} + +## Do nothing! +pkg_prerm() { + : +} + +## Do nothing! +pkg_postrm() { + : +} diff --git a/sys-devel/base-gcc/base-gcc-4.7.4.ebuild b/sys-devel/base-gcc/base-gcc-4.7.4.ebuild new file mode 100644 index 00000000..cf2f3ead --- /dev/null +++ b/sys-devel/base-gcc/base-gcc-4.7.4.ebuild @@ -0,0 +1,211 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI="4" + +PATCH_VER="1.2" +UCLIBC_VER="1.0" + +# Hardened gcc 4 stuff +PIE_VER="0.5.5" +SPECS_VER="0.2.0" +SPECS_GCC_VER="4.4.3" +# arch/libc configurations known to be stable with {PIE,SSP}-by-default +PIE_GLIBC_STABLE="x86 amd64 ppc ppc64 arm ia64" +PIE_UCLIBC_STABLE="x86 arm amd64 ppc ppc64" +SSP_STABLE="amd64 x86 ppc ppc64 arm" +# uclibc need tls and nptl support for SSP support +# uclibc need to be >= 0.9.33 +SSP_UCLIBC_STABLE="x86 amd64 ppc ppc64 arm" +#end Hardened stuff + +inherit eutils toolchain + +# This is here to redeclare is_gcc() in toolchain.eclass +# We don't even want to build gcj, which is a real hog +# on memory constrained hardware. base-gcc doesn't actually +# ship with it atm. +is_gcj() { + return 1 +} + +DESCRIPTION="The GNU Compiler Collection" + +LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+" +KEYWORDS="alpha amd64 arm hppa ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh sparc x86 -amd64-fbsd -x86-fbsd" + +RDEPEND="" +DEPEND="${RDEPEND} + elibc_glibc? ( >=sys-libs/glibc-2.8 ) + >=${CATEGORY}/binutils-2.18" + +src_prepare() { + # Since Sabayon's gcc ebuild are split into two parts, we have to + # build gcc with a different version of gcc, or terrible breakage + # will occur after sys-devel/base-gcc is installed, but the + # partner sys-devel/gcc still needs to be built. + + # While it is possible to rebuild Sabayon's split gcc from + # the same version, we have to disallow this also since + # we have no way of discerning if a configuration change + # is significant enough to cause breakage. + + GCC_PROFILE_VER=$(cat ${ROOT}/etc/env.d/gcc/config-$CHOST | awk -F- '{ print $NF }') + einfo "Checking for valid gcc profile to build ${P}" + + # Construct the Slot of the gcc version in the active profile. + GCC_PROFILE_SLOT_MAJOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $1 }') + GCC_PROFILE_SLOT_MINOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $2 }') + GCC_PROFILE_SLOT="${GCC_PROFILE_SLOT_MAJOR}.${GCC_PROFILE_SLOT_MINOR}" + einfo "Current gcc profile version Slot is: ${GCC_PROFILE_SLOT}" + if [[ "${GCC_PROFILE_SLOT}" = "${SLOT}" ]] ; then + eerror "Error!" + eerror "The active gcc-profile is for sys-devel/gcc slot ${SLOT}." + eerror "Sabayon's split sys-devel/gcc package MUST be built" + eerror "with another slotted version of sys-devel/gcc active." + ebeep 10 + fi + + if has_version '<sys-libs/glibc-2.12' ; then + ewarn "Your host glibc is too old; disabling automatic fortify." + ewarn "Please rebuild gcc after upgrading to >=glibc-2.12 #362315" + EPATCH_EXCLUDE+=" 10_all_default-fortify-source.patch" + fi + + # drop the x32 stuff once 4.7 goes stable + if [[ ${CTARGET} != x86_64* ]] || ! has x32 $(get_all_abis TARGET) ; then + EPATCH_EXCLUDE+=" 90_all_gcc-4.7-x32.patch" + fi + + toolchain_src_prepare + + use vanilla && return 0 + + [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch +} + +## Just install libgcc stuff +src_install() { + cd "${WORKDIR}/build" + S="${WORKDIR}"/build \ + emake -j1 -C "${CTARGET}/libgcc" DESTDIR="${D}" install-shared || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgcc" DESTDIR="${D}" \ + install-shared || die + fi + + if use mudflap; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libmudflap" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libmudflap" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + fi + + if use openmp; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgomp" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + fi + + S="${WORKDIR}"/build \ + emake -j1 -C "${CTARGET}/libstdc++-v3/src" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libstdc++-v3/src" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libstdc++-v3/po" DESTDIR="${D}" install || die + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" install-info || die + + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libquadmath || die + if use fortran; then + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libgfortran || die + fi + # TODO: what to do with USE objc++ and objc-gc ? + if use objc; then + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libobjc || die + fi + + # from toolchain.eclass yay + gcc_movelibs + + dodir /etc/env.d/gcc + create_gcc_env_entry + + # Setup the gcc_env_entry for hardened gcc 4 with minispecs + if want_minispecs ; then + copy_minispecs_gcc_specs + fi + + # drop any .la, .a + find "${D}" -name *.a -delete + find "${D}" -name *.la -delete + + # drop any include + rm "${D}${LIBPATH}"/include -rf + # drop specs as well, provided by sys-devel/gcc-${PV}:${SLOT} + # unfortunately, the spec shit above does create the env.d/ + # file content... + rm "${D}${LIBPATH}"/{32/,}*.spec{s,} -rf + rm "${D}${LIBPATH}"/specs -rf + + # Now do the fun stripping stuff + env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}" + + cd "${S}" + if ! is_crosscompile; then + has noinfo ${FEATURES} \ + && rm -r "${D}/${DATAPATH}"/info \ + || prepinfo "${DATAPATH}" + fi + + # use gid of 0 because some stupid ports don't have + # the group 'root' set to gid 0 + chown -R root:0 "${D}"${LIBPATH} +} + +## Do nothing! +pkg_preinst() { + : +} + +## Do (almost) nothing! +pkg_postinst() { + # Sabayon specific bits to always force the latest gcc profile + local gcc_atom=$(best_version sys-devel/base-gcc) + local gcc_ver= + if [ -n "${gcc_atom}" ]; then + elog "Found latest base-gcc to be: ${gcc_atom}, forcing this profile" + gcc_ver=$(portageq metadata "${ROOT}" installed "${gcc_atom}" PV) + else + eerror "No sys-devel/base-gcc installed" + fi + + if [ -n "${gcc_ver}" ]; then + local target="${CTARGET:${CHOST}}-${gcc_ver}" + local env_target="${ROOT}/etc/env.d/gcc/${target}" + [[ -e "${env_target}-vanilla" ]] && find_target="${target}-vanilla" + + elog "Setting: ${target} GCC profile" + gcc-config "${target}" + else + eerror "No sys-devel/base-gcc version installed? Cannot set a proper GCC profile" + fi +} + +## Do nothing! +pkg_prerm() { + : +} + +## Do nothing! +pkg_postrm() { + : +} diff --git a/sys-devel/base-gcc/base-gcc-4.8.3.ebuild b/sys-devel/base-gcc/base-gcc-4.8.3.ebuild new file mode 100644 index 00000000..2a4b1f80 --- /dev/null +++ b/sys-devel/base-gcc/base-gcc-4.8.3.ebuild @@ -0,0 +1,211 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI="4" + +PATCH_VER="1.1" +UCLIBC_VER="1.0" + +# Hardened gcc 4 stuff +PIE_VER="0.5.9" +SPECS_VER="0.2.0" +SPECS_GCC_VER="4.4.3" +# arch/libc configurations known to be stable with {PIE,SSP}-by-default +PIE_GLIBC_STABLE="x86 amd64 ppc ppc64 arm ia64" +PIE_UCLIBC_STABLE="x86 arm amd64 ppc ppc64" +SSP_STABLE="amd64 x86 ppc ppc64 arm" +# uclibc need tls and nptl support for SSP support +# uclibc need to be >= 0.9.33 +SSP_UCLIBC_STABLE="x86 amd64 ppc ppc64 arm" +#end Hardened stuff + +inherit eutils toolchain + +# This is here to redeclare is_gcc() in toolchain.eclass +# We don't even want to build gcj, which is a real hog +# on memory constrained hardware. base-gcc doesn't actually +# ship with it atm. +is_gcj() { + return 1 +} + +DESCRIPTION="The GNU Compiler Collection" + +KEYWORDS="~alpha amd64 arm ~arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd" + +RDEPEND="" +DEPEND="${RDEPEND} + elibc_glibc? ( >=sys-libs/glibc-2.8 ) + >=${CATEGORY}/binutils-2.20" + +src_prepare() { + # Since Sabayon's gcc ebuild are split into two parts, we have to + # build gcc with a different version of gcc, or terrible breakage + # will occur after sys-devel/base-gcc is installed, but the + # partner sys-devel/gcc still needs to be built. + + # While it is possible to rebuild Sabayon's split gcc from + # the same version, we have to disallow this also since + # we have no way of discerning if a configuration change + # is significant enough to cause breakage. + + GCC_PROFILE_VER=$(cat ${ROOT}/etc/env.d/gcc/config-$CHOST | awk -F- '{ print $NF }') + einfo "Checking for valid gcc profile to build ${P}" + + # Construct the Slot of the gcc version in the active profile. + GCC_PROFILE_SLOT_MAJOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $1 }') + GCC_PROFILE_SLOT_MINOR=$(echo ${GCC_PROFILE_VER} | awk -F. '{ print $2 }') + GCC_PROFILE_SLOT="${GCC_PROFILE_SLOT_MAJOR}.${GCC_PROFILE_SLOT_MINOR}" + einfo "Current gcc profile version Slot is: ${GCC_PROFILE_SLOT}" + if [[ "${GCC_PROFILE_SLOT}" = "${SLOT}" ]] ; then + eerror "Error!" + eerror "The active gcc-profile is for sys-devel/gcc slot ${SLOT}." + eerror "Sabayon's split sys-devel/gcc package MUST be built" + eerror "with another slotted version of sys-devel/gcc active." + ebeep 10 + fi + + if has_version '<sys-libs/glibc-2.12' ; then + ewarn "Your host glibc is too old; disabling automatic fortify." + ewarn "Please rebuild gcc after upgrading to >=glibc-2.12 #362315" + EPATCH_EXCLUDE+=" 10_all_default-fortify-source.patch" + fi + + # drop the x32 stuff once 4.7 goes stable + if [[ ${CTARGET} != x86_64* ]] || ! has x32 $(get_all_abis TARGET) ; then + EPATCH_EXCLUDE+=" 90_all_gcc-4.7-x32.patch" + fi + + toolchain_src_prepare + + use vanilla && return 0 + + #Use -r1 for newer piepatchet that use DRIVER_SELF_SPECS for the hardened specs. + [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env-r1.patch +} + +## Just install libgcc stuff +src_install() { + cd "${WORKDIR}/build" + S="${WORKDIR}"/build \ + emake -j1 -C "${CTARGET}/libgcc" DESTDIR="${D}" install-shared || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgcc" DESTDIR="${D}" \ + install-shared || die + fi + + if use mudflap; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libmudflap" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libmudflap" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + fi + + if use openmp; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libgomp" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + fi + + S="${WORKDIR}"/build \ + emake -j1 -C "${CTARGET}/libstdc++-v3/src" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + if use multilib; then + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/32/libstdc++-v3/src" DESTDIR="${D}" \ + install-toolexeclibLTLIBRARIES || die + fi + + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libstdc++-v3/po" DESTDIR="${D}" install || die + S="${WORKDIR}"/build emake -j1 -C "${CTARGET}/libgomp" DESTDIR="${D}" install-info || die + + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libquadmath || die + if use fortran; then + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libgfortran || die + fi + # TODO: what to do with USE objc++ and objc-gc ? + if use objc; then + S="${WORKDIR}"/build emake -j1 DESTDIR="${D}" install-target-libobjc || die + fi + + # from toolchain.eclass yay + gcc_movelibs + + dodir /etc/env.d/gcc + create_gcc_env_entry + + # Setup the gcc_env_entry for hardened gcc 4 with minispecs + if want_minispecs ; then + copy_minispecs_gcc_specs + fi + + # drop any .la, .a + find "${D}" -name *.a -delete + find "${D}" -name *.la -delete + + # drop any include + rm "${D}${LIBPATH}"/include -rf + # drop specs as well, provided by sys-devel/gcc-${PV}:${SLOT} + # unfortunately, the spec shit above does create the env.d/ + # file content... + rm "${D}${LIBPATH}"/{32/,}*.spec{s,} -rf + rm "${D}${LIBPATH}"/specs -rf + + # Now do the fun stripping stuff + env RESTRICT="" CHOST=${CTARGET} prepstrip "${D}${LIBPATH}" + + cd "${S}" + if ! is_crosscompile; then + has noinfo ${FEATURES} \ + && rm -r "${D}/${DATAPATH}"/info \ + || prepinfo "${DATAPATH}" + fi + + # use gid of 0 because some stupid ports don't have + # the group 'root' set to gid 0 + chown -R root:0 "${D}"${LIBPATH} +} + +## Do nothing! +pkg_preinst() { + : +} + +## Do (almost) nothing! +pkg_postinst() { + # Sabayon specific bits to always force the latest gcc profile + local gcc_atom=$(best_version sys-devel/base-gcc) + local gcc_ver= + if [ -n "${gcc_atom}" ]; then + elog "Found latest base-gcc to be: ${gcc_atom}, forcing this profile" + gcc_ver=$(portageq metadata "${ROOT}" installed "${gcc_atom}" PV) + else + eerror "No sys-devel/base-gcc installed" + fi + + if [ -n "${gcc_ver}" ]; then + local target="${CTARGET:${CHOST}}-${gcc_ver}" + local env_target="${ROOT}/etc/env.d/gcc/${target}" + [[ -e "${env_target}-vanilla" ]] && find_target="${target}-vanilla" + + elog "Setting: ${target} GCC profile" + gcc-config "${target}" + else + eerror "No sys-devel/base-gcc version installed? Cannot set a proper GCC profile" + fi +} + +## Do nothing! +pkg_prerm() { + : +} + +## Do nothing! +pkg_postrm() { + : +} diff --git a/sys-devel/base-gcc/files/gcc-spec-env-r1.patch b/sys-devel/base-gcc/files/gcc-spec-env-r1.patch new file mode 100644 index 00000000..a5892683 --- /dev/null +++ b/sys-devel/base-gcc/files/gcc-spec-env-r1.patch @@ -0,0 +1,87 @@ +2013-08-22 Magnus Granberg <zorry@gentoo.org> + + * gcc/gcc.c (main): Add support for external spec file via the GCC_SPECS env var + and move the process of the user specifed specs. + + This allows us to easily control pie/ssp defaults with gcc-config profiles. + Original patch by Rob Holland + Extended to support multiple entries separated by ':' by Kevin F. Quinn + Modified to use getenv instead of poisoned GET_ENVIRONMENT by Ryan Hill + Modified to process the GCC_SPECS env var befor DRIVER_SELF_SPECS by Magnus Granberg + +--- gcc-4.8-20130210/gcc/gcc.c 2013-02-05 16:55:31.000000000 +0100 ++++ gcc-4.8-20130210-work/gcc/gcc.c 2013-07-26 02:32:14.625089864 +0200 +@@ -6427,6 +6428,48 @@ main (int argc, char **argv) + do_option_spec (option_default_specs[i].name, + option_default_specs[i].spec); + ++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS) || defined (WIN32)) ++ /* Add specs listed in GCC_SPECS. Note; in the process of separating ++ * each spec listed, the string is overwritten at token boundaries ++ * (':') with '\0', an effect of strtok_r(). ++ */ ++ specs_file = getenv ("GCC_SPECS"); ++ if (specs_file && (strlen(specs_file) > 0)) ++ { ++ char *spec, *saveptr; ++ for (spec=strtok_r(specs_file,":",&saveptr); ++ spec!=NULL; ++ spec=strtok_r(NULL,":",&saveptr)) ++ { ++ struct user_specs *user = (struct user_specs *) ++ xmalloc (sizeof (struct user_specs)); ++ user->next = (struct user_specs *) 0; ++ user->filename = spec; ++ if (user_specs_tail) ++ user_specs_tail->next = user; ++ else ++ user_specs_head = user; ++ user_specs_tail = user; ++ } ++ } ++#endif ++ /* Process any user specified specs in the order given on the command ++ * line. */ ++ for (uptr = user_specs_head; uptr; uptr = uptr->next) ++ { ++ char *filename = find_a_file (&startfile_prefixes, uptr->filename, ++ R_OK, true); ++ read_specs (filename ? filename : uptr->filename, false, true); ++ } ++ /* Process any user self specs. */ ++ { ++ struct spec_list *sl; ++ for (sl = specs; sl; sl = sl->next) ++ if (sl->name_len == sizeof "self_spec" - 1 ++ && !strcmp (sl->name, "self_spec")) ++ do_self_spec (*sl->ptr_spec); ++ } ++ + /* Process DRIVER_SELF_SPECS, adding any new options to the end + of the command line. */ + +@@ -6535,24 +6578,6 @@ main (int argc, char **argv) + PREFIX_PRIORITY_LAST, 0, 1); + } + +- /* Process any user specified specs in the order given on the command +- line. */ +- for (uptr = user_specs_head; uptr; uptr = uptr->next) +- { +- char *filename = find_a_file (&startfile_prefixes, uptr->filename, +- R_OK, true); +- read_specs (filename ? filename : uptr->filename, false, true); +- } +- +- /* Process any user self specs. */ +- { +- struct spec_list *sl; +- for (sl = specs; sl; sl = sl->next) +- if (sl->name_len == sizeof "self_spec" - 1 +- && !strcmp (sl->name, "self_spec")) +- do_self_spec (*sl->ptr_spec); +- } +- + if (compare_debug) + { + enum save_temps save; |