From 597344dfdc5e3e2e8c95cb8d3469fb85653a3f41 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 3 Feb 2007 01:53:50 +0000 Subject: [PATCH] old Package-Manager: portage-2.1.2-r6 --- sys-libs/glibc/Manifest | 81 +- .../files/digest-glibc-2.3.3.20040420-r2 | 12 - .../files/digest-glibc-2.3.4.20040619-r2 | 12 - .../files/digest-glibc-2.3.4.20040808-r1 | 15 - .../files/digest-glibc-2.3.4.20041102-r1 | 15 - .../files/digest-glibc-2.3.4.20041102-r2 | 15 - .../files/digest-glibc-2.3.4.20050125-r1 | 21 - sys-libs/glibc/files/digest-glibc-2.3.6-r3 | 21 - sys-libs/glibc/files/digest-glibc-2.4-r3 | 18 - sys-libs/glibc/glibc-2.3.3.20040420-r2.ebuild | 725 --------- sys-libs/glibc/glibc-2.3.4.20040619-r2.ebuild | 771 --------- sys-libs/glibc/glibc-2.3.4.20040808-r1.ebuild | 962 ------------ sys-libs/glibc/glibc-2.3.4.20041102-r1.ebuild | 1152 -------------- sys-libs/glibc/glibc-2.3.4.20041102-r2.ebuild | 1369 ---------------- sys-libs/glibc/glibc-2.3.4.20050125-r1.ebuild | 1307 ---------------- sys-libs/glibc/glibc-2.3.6-r3.ebuild | 1390 ----------------- sys-libs/glibc/glibc-2.4-r3.ebuild | 1283 --------------- 17 files changed, 3 insertions(+), 9166 deletions(-) delete mode 100644 sys-libs/glibc/files/digest-glibc-2.3.3.20040420-r2 delete mode 100644 sys-libs/glibc/files/digest-glibc-2.3.4.20040619-r2 delete mode 100644 sys-libs/glibc/files/digest-glibc-2.3.4.20040808-r1 delete mode 100644 sys-libs/glibc/files/digest-glibc-2.3.4.20041102-r1 delete mode 100644 sys-libs/glibc/files/digest-glibc-2.3.4.20041102-r2 delete mode 100644 sys-libs/glibc/files/digest-glibc-2.3.4.20050125-r1 delete mode 100644 sys-libs/glibc/files/digest-glibc-2.3.6-r3 delete mode 100644 sys-libs/glibc/files/digest-glibc-2.4-r3 delete mode 100644 sys-libs/glibc/glibc-2.3.3.20040420-r2.ebuild delete mode 100644 sys-libs/glibc/glibc-2.3.4.20040619-r2.ebuild delete mode 100644 sys-libs/glibc/glibc-2.3.4.20040808-r1.ebuild delete mode 100644 sys-libs/glibc/glibc-2.3.4.20041102-r1.ebuild delete mode 100644 sys-libs/glibc/glibc-2.3.4.20041102-r2.ebuild delete mode 100644 sys-libs/glibc/glibc-2.3.4.20050125-r1.ebuild delete mode 100644 sys-libs/glibc/glibc-2.3.6-r3.ebuild delete mode 100644 sys-libs/glibc/glibc-2.4-r3.ebuild diff --git a/sys-libs/glibc/Manifest b/sys-libs/glibc/Manifest index 35d9e1e76084..c01cde684e8c 100644 --- a/sys-libs/glibc/Manifest +++ b/sys-libs/glibc/Manifest @@ -436,48 +436,29 @@ DIST glibc-2.3.2-branch-update-20031115.patch.bz2 1692480 RMD160 3e0e33a2439e4c4 DIST glibc-2.3.2-hppa-patches-p1.tar.bz2 18793 RMD160 c91188b73d50263dac48f40343d606dc9262675c SHA1 23cdec2b2aeaa7a0f5c185691870170862d8d8ef SHA256 198f1dc1241e03249ef3932b7792b07cfbf3b9e54c491d8539962e7c0122a10e DIST glibc-2.3.2-manpages.tar.bz2 0 RMD160 9c1185a5c5e9fc54612808977ee8f548b2258d31 SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709 SHA256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 DIST glibc-2.3.2.tar.bz2 13377170 RMD160 3bedff29f64adc8037a821e23b48b0c7e0756e67 SHA1 e043e88d31891ca6dae9cd5b9e906ee1adbe8fc6 SHA256 f4c53b1aef2f622e5b70a94d33c318cc7fd6e074c11f4d36a5dfb7da5edff744 -DIST glibc-2.3.3-branch-update-20040420.patch.bz2 2435254 RMD160 204aa92598b4a4af0e663ece69719196241de956 SHA1 b5eff0185682105a949f2134ae3360f04bc3bf97 SHA256 9bb2586f9b3f5be57302865baae9db7bafff30c712fd352693b55e6289b190bd -DIST glibc-2.3.3.tar.bz2 13298567 RMD160 38bfb1e341f75cf9f395cb9fe15c5bbde375e7e9 SHA1 4616a1d69429128764cf5fdbbacd7b0b65aa4e0d SHA256 38baf77ac12ad32036cf6060c5eaca822c7dfa2472c8210c6cc9c0dcdfbbc08f -DIST glibc-2.3.4-branch-update-20040619.patch.bz2 2515781 RMD160 5f266026bae84ac07ba534dcfc7c6f86accd91a0 SHA1 212f229ccd51940f3c37d29f7b858121c47291aa SHA256 c14ca7c134241962666310d8ecc642965419999d7d3dff33db6c2425c2831e61 -DIST glibc-2.3.4-branch-update-20040808.patch.bz2 737280 RMD160 5f73bb305cba63dab24179753d1d3ca03d9a4642 SHA1 c6cca2effb442cf4d7e61076f99353c98c8ae13a SHA256 c3df50ff3f230f225f646ea4cb11c0786da3d4c59f35a43933090a126a1bbe1a -DIST glibc-2.3.4-branch-update-20041102.patch.bz2 3034626 RMD160 4bab0562a8b96685ca358d7a17360cbeb9039982 SHA1 120302a9e1854f3db3c5f5be6af019894e2b6eaa SHA256 799818302767fc403f10d7a137e2080d5efa4c43578e6323dca2ed8fa8102814 -DIST glibc-2.3.4-patches-1.7.tar.bz2 0 RMD160 9c1185a5c5e9fc54612808977ee8f548b2258d31 SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709 SHA256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 -DIST glibc-2.3.4.20041102-patches-1.0.tar.bz2 0 RMD160 9c1185a5c5e9fc54612808977ee8f548b2258d31 SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709 SHA256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 -DIST glibc-2.3.4.tar.bz2 13213560 RMD160 bb2bc1669de7c7b08903be5767753f75709e98c5 SHA1 c337e130b1409509d8d32ac942cbf9246adf3dfd SHA256 bbf86a81932c14d3bb9cc384202463e31971b0101e06830137534bd4782a732b DIST glibc-2.3.5-patches-1.13.tar.bz2 0 RMD160 9c1185a5c5e9fc54612808977ee8f548b2258d31 SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709 SHA256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 DIST glibc-2.3.5-patches-1.16.tar.bz2 28401 RMD160 ef56df1c2ed60df01b027f805755463a834f3760 SHA1 bf72729c0b2c7deda2314e88d3b619d28a3d3b95 SHA256 371dfd8f8dfc90be4fdd8057fb58090119db95d26aa550ac1a7b3bcc828e754b DIST glibc-2.3.5.tar.bz2 13583139 RMD160 ebdda60cd848fd5b30b5e3345fb481d3c5663540 SHA1 465cb1f4708dfa88606379cc1ebecb724c65f027 SHA256 de97b9c15d75ac86b7a079a20315100a5c9833bb3c217b448913041a5bd988a5 DIST glibc-2.3.6-patches-1.17.tar.bz2 215914 RMD160 2b1d1c63b3b8cd6105e9ad4675ee9565a89b8837 SHA1 6db16d3cda17b1979411eadf3b3a9c860c399b03 SHA256 5c09f3e3619281b7b533a6e564acefcdce159d665a06d011cc36e10978e1c9ca DIST glibc-2.3.6-patches-1.19.tar.bz2 216069 RMD160 1998c521c3799f5baa8cfa2510e2f127088cc5be SHA1 dd5e6fa4982b6b07430f2f83266019f17895dca8 SHA256 8aa924347c50bd721cc1dd8dc7b0c986136689346d4d78eaea4d9f15a4db2dea -DIST glibc-2.3.6-patches-1.8.tar.bz2 132799 RMD160 fe94d79a0cd6ca8e860924fc3daafe550faa4244 SHA1 06e2242274a338821f327b4921b94988006685a6 SHA256 8a96a2fcd6800ab47f23d669fc9752978e0bfc0ff5f634351ae49a33c7a0060e DIST glibc-2.3.6.tar.bz2 14014977 RMD160 04b4f71cc3e89581e02ee2dbf5ab05f61e868bf1 SHA1 82d0487419f1bdbf2dee439c344e89d6af47e558 SHA256 e73ff5eddea95d09238b41d3c9c4d9ccddcf99fcc93d04956599c91c704f4a8e -DIST glibc-2.4-patches-1.17.tar.bz2 179314 RMD160 a537434c85cb9bd96c77f0bfeba8d7134f54d7ff SHA1 209e89b54aa70a6a785d9b8abbe07372741fe3cf SHA256 255c900f4b9e24e65ecefc6e65040a15122901f2482f98e29b1e361cb2d4faa9 DIST glibc-2.4-patches-1.19.tar.bz2 132880 RMD160 6df74db9b9e85220fba82658036ced5cdc16ae28 SHA1 b42dfd587fdf4df58c5f95853fc3dc4f8f51bee7 SHA256 9ec4cd3df3b8e7f294b3c93138d2f0fd7e8213b4981cfcc9cb58c25f934a23fa DIST glibc-2.4.tar.bz2 15202445 RMD160 ee2712a0e6fab8e086958c1f23221f8d07af3de1 SHA1 35c636e4b474cda0f06e361d5e9caec092fd73d3 SHA256 27aaaaa78b4ab5da76bb29385dc9be087ba7b855a9102eaaa78ce3ec5e2e7fcd DIST glibc-2.5-patches-1.3.tar.bz2 173857 RMD160 3e4dc97f1ec57177084937ce85895efd225e859d SHA1 046b7077544bc2a4155c7ecacfa7b93418ce45be SHA256 ab6deb5ed782551651931381334486feb829f19ae395374c1961f1e9be10130c DIST glibc-2.5.tar.bz2 15321839 RMD160 25a0a460c0db1e5b7c570e5087461696f2096fd2 SHA1 ec9a007c4875062099a4701ac9137fcdb5a71447 SHA256 9b2e12bb1eafb55ab2e5a868532b8e6ec39216c66c25b8998d7474bc4d4eb529 DIST glibc-fedora-20041219T2331.tar.bz2 761998 RMD160 cfc859a7e0a904cfb340c832267d3377e850cf6e SHA1 31e10b882bb9288831e1a1b2ed0ddece7099ffbd SHA256 e36ffa84388ebb746cb80c37d6fd1acc9e45e07b85c30b0a2ad9f511fae59cec -DIST glibc-hppa-patches-2004-06-04.tar.gz 9528 RMD160 df2b086cac83979033f274ccfe2b58e67ae73d0c SHA1 580c844eaa7154fad0acca436b57140ebcc0e7f6 SHA256 6efebc08997ff83487058f443c009417c646d756b55d760e4192748aa8dacf2e -DIST glibc-hppa-patches-2004-08-24.tar.gz 9739 RMD160 1956d3d0e11c892521db1607699fadbd3bed9f9d SHA1 76c0fe45fc1299f0796f2e5b871dbc85a5a9f64f SHA256 0254e1febd00a79674861f5523628b0ba08bc69259f98b5cde3655ce1c677c89 -DIST glibc-hppa-patches-2004-09-30.tar.gz 16407 RMD160 0f418fbe70ee7e0f8ecda56e09fce5c41a7609bf SHA1 6fc64a7c676f9c2158e193297235b4eb954f3518 SHA256 14330b2429df38d86b0ca470155111a4add2563ce593c1e0e2adecb6d6a44e81 -DIST glibc-infopages-2.3.4-r1.tar.bz2 1294898 RMD160 c72229ee6b3576f507aa8051f273ea9cf1cabaf6 SHA1 324e9d84a8c6e5c6bd47f90897d88c4f6151759a SHA256 e8eadffa855ee4ade919daccbaa79e02e7c65688bc0aea9c7337d52827827779 -DIST glibc-infopages-2.3.4.tar.bz2 1175502 RMD160 cc72825477301c22ae7488fee73fb8326688dbbf SHA1 304e6329a90a4135d3591a1df39b6247c264f737 SHA256 71ecc1d80333de1afe51ef5d00b4728dba5dc484263eb28941e7b57e5e0492af DIST glibc-infopages-2.3.5.tar.bz2 1273846 RMD160 14a587e5df98ad113fa1499d2a958efbb47c437a SHA1 bb974b6dacd02161532717a9d8f97248acd6da14 SHA256 79a602955e3cf4288fa9967240b397281594acab18c263d2ef864e7d71aa54e1 DIST glibc-infopages-2.3.6.tar.bz2 1298413 RMD160 5a83ca63c4153e5677797c0c0043aec0b55a6fe3 SHA1 8812dc121d24aad022e2aa4289dc75380e325d90 SHA256 651701bb5d8431401fa0f2252ad1cd37f69dc3a2aa28e4ce3405b4417b5e2c22 -DIST glibc-libidn-2.3.4.tar.bz2 100711 RMD160 fc4c5f21d9d628ec87afbbc81fb50df950eac333 SHA1 8c6b6444bc094b86a5c4bd9b49e9963e0feb5e50 SHA256 7b5ad1104af9e90fa25b60bec51de8678f32a82ad90de90d43510183970896ea DIST glibc-libidn-2.3.5.tar.bz2 101118 RMD160 d54fd0351a4e0dc2c2ea1211bc94b04872addc48 SHA1 971638c53302ad4183cd79efb20ebf10e64b64ba SHA256 8e06f030b5980a285a33a2b2c0783c36afbf614d5d5925358112d288479275ec DIST glibc-libidn-2.3.6.tar.bz2 101041 RMD160 7bc8e8fa310d2ae543802ea036c036c60d09270d SHA1 95d3a98495d4bd7138149fd312db88da56e735db SHA256 99a20232c1ad994e8a6dcd15c34e413eed94e7dd558bed7b832649dce09fb4f2 DIST glibc-libidn-2.4.tar.bz2 102305 RMD160 76b2e15e7613c4ac8db3bf90e90929c0e369ab04 SHA1 09981bb5f15812caa5824b3946b30cf030afc255 SHA256 2f29ec2b2b2f75f787a1eed8fdea20aff212dc3bad97651ca376914c49181977 DIST glibc-libidn-2.5.tar.bz2 102330 RMD160 e10e85e0ee7cdab2e5518a93978cb688ccabee88 SHA1 ee7e019e01aa338e28db1eeb34abb2cb09d2f30a SHA256 de77e49e0beee6061d4c6e480f322566ba25d4e5e018c456a18ea4a8da5c0ede DIST glibc-linuxthreads-2.2.5.tar.bz2 168269 RMD160 4886cb3ccd1a05c48dafb2565b08835551033ecb SHA1 bb0137b2d80641c3caaba37571cebbbc5945e5a7 SHA256 c3d0fa7aa579537afb5087e058a9748db9ab0ffe5fdcf4330224e19c35c05cf5 DIST glibc-linuxthreads-2.3.2.tar.bz2 216310 RMD160 9be07e5896f5e4e728bdbbebb00d78d8cf3ca5d3 SHA1 4676b3a59ec1c1f77be7669409aa835ad66f03d7 SHA256 529b34d1f859801b91b889a47feb4ba3cd4560ecb1dd9782486bc9198f7d3999 -DIST glibc-linuxthreads-2.3.4.tar.bz2 236183 RMD160 fd13b9bf5c9991e6855c01fb34f4f3a87b49f57e SHA1 69391ed87d9afd1e124148a74e56267dec000532 SHA256 1c312c9c9f33d5cdf6622af390e5698e92f950e411b7795024aab089e0249a78 DIST glibc-linuxthreads-2.3.5.tar.bz2 236946 RMD160 b86afc7e2359165704d09c4c3b0d84826c636890 SHA1 bfc44a76a708f905fe9c414162d5efcd3d47355f SHA256 3fec798bb944c2f89f1d95ec7bb38f60e1393c9db0da6bdbb922606e023108b5 DIST glibc-linuxthreads-2.3.6.tar.bz2 243534 RMD160 bb89ac687419cede738314923bc952d191d8d252 SHA1 10190168bf948556afdfff46f87f9208402d810f SHA256 6c3bc4a247d1e5308fb14f81956802f09095d3683219859fcad5795aa3aea638 DIST glibc-linuxthreads-2.5.tar.bz2 242445 RMD160 788484d035d53ac39aac18f6e3409a912eea1cfa SHA1 eb7765e5c0a14c7475f1c8b92cbe1f625a8fd76f SHA256 ee27aeba6124a8b351c720eb898917f0f8874d9a384cc2f17aa111a3d679bd2c DIST glibc-linuxthreads-20060605.tar.bz2 247200 RMD160 aaa0a150eec4d63787f86ae04ded4d92a10c6f29 SHA1 1e0cf861de45f22d01d7d305482bacb0a869262f SHA256 1d15e236926fff6daa81e6af34e7903206b67f849f828ca976ab077b4677fb52 -DIST glibc-manpages-2.3.4-r1.tar.bz2 0 RMD160 9c1185a5c5e9fc54612808977ee8f548b2258d31 SHA1 da39a3ee5e6b4b0d3255bfef95601890afd80709 SHA256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 -DIST glibc-manpages-2.3.4.tar.bz2 14759 RMD160 56a648a9eb327568c0e6681aaa47a5c7bb93f84f SHA1 c4a0fa76d8c48731084b3c39d82a4a6b0095b4a0 SHA256 a512d0302005168bcb77860468884823b13f9f5ec2c9981b86b46e729e3e318d DIST glibc-manpages-2.3.5.tar.bz2 22148 RMD160 ecd70af5f77deaa15a1f97df5c9ba6151e988d86 SHA1 a2872baf7c3123e8d4615a18b38104b84bbc5aca SHA256 b49a5cf3996e2671bc8246c9a077016b7d74cdbb8a4f6a6410247fcbe34d2b5a DIST glibc-manpages-2.3.6-1.tar.bz2 22216 RMD160 a69fc155366d1b263acecd026718dc536c2b12b8 SHA1 10b7914a57f6510354b8d325d6ae18ff3547ba79 SHA256 2ba9c7fff2f02f888160dbadd013356fe4a6e9f3d71ac583f5ba6a1d73cb2ab6 DIST glibc-ports-2.4.tar.bz2 381472 RMD160 72987098f9fbd5a1ad617bf2136081c0db80a429 SHA1 8b4d93bfbcd5b6a36e09ff08fe0c2a08adc1b886 SHA256 2fbbcaad8a9f8560485c398a9066959fe2713c8bc7e653ec476fb56fed21d19a @@ -491,30 +472,6 @@ EBUILD glibc-2.3.2-r12.ebuild 22516 RMD160 6b42ed0e98d4055244988b2b01499a57e04f0 MD5 6b0c490396308f6e7c17ec23f68eb1ff glibc-2.3.2-r12.ebuild 22516 RMD160 6b42ed0e98d4055244988b2b01499a57e04f06c8 glibc-2.3.2-r12.ebuild 22516 SHA256 3604f54f72baa9a4d6bd17ed6c40fc80124c36c9fbae679931b97f6a74785d0c glibc-2.3.2-r12.ebuild 22516 -EBUILD glibc-2.3.3.20040420-r2.ebuild 21709 RMD160 be653f4af8659ab9be71d12f884d5f97567f861c SHA1 67bd9ee567e257ad976486d97db4525cccef9c4d SHA256 81e51060391308d419b975cd3defcf6e11cf7691e3a6ff1b84e2e36ac392d5a4 -MD5 2a60a77ca98bc77f85aff4210b87dedd glibc-2.3.3.20040420-r2.ebuild 21709 -RMD160 be653f4af8659ab9be71d12f884d5f97567f861c glibc-2.3.3.20040420-r2.ebuild 21709 -SHA256 81e51060391308d419b975cd3defcf6e11cf7691e3a6ff1b84e2e36ac392d5a4 glibc-2.3.3.20040420-r2.ebuild 21709 -EBUILD glibc-2.3.4.20040619-r2.ebuild 21401 RMD160 0bcc53ee12c21dd22f348e24bb5a86b7dccc9ecc SHA1 efb36d3bee2c9e130f065f4b10ef460e08302613 SHA256 2709589d0458b1a49426023151513439ae1e315285b51605e1f0d0a8ac141ea7 -MD5 47912624cfe69ac7d3c096efa1026bf6 glibc-2.3.4.20040619-r2.ebuild 21401 -RMD160 0bcc53ee12c21dd22f348e24bb5a86b7dccc9ecc glibc-2.3.4.20040619-r2.ebuild 21401 -SHA256 2709589d0458b1a49426023151513439ae1e315285b51605e1f0d0a8ac141ea7 glibc-2.3.4.20040619-r2.ebuild 21401 -EBUILD glibc-2.3.4.20040808-r1.ebuild 27890 RMD160 216976a9c9f36a3bf17aed6a02ff9191854913c9 SHA1 820224b6f69fe8015bb42f1e43685570aeb9e34a SHA256 475cd275cb169441b42348d664cddf7a44f97cb8e236b61a7a6a79d10545dd00 -MD5 d12fe39dfe371a9e2e9f0c1893ebd8bd glibc-2.3.4.20040808-r1.ebuild 27890 -RMD160 216976a9c9f36a3bf17aed6a02ff9191854913c9 glibc-2.3.4.20040808-r1.ebuild 27890 -SHA256 475cd275cb169441b42348d664cddf7a44f97cb8e236b61a7a6a79d10545dd00 glibc-2.3.4.20040808-r1.ebuild 27890 -EBUILD glibc-2.3.4.20041102-r1.ebuild 34397 RMD160 f238e8d55f9583ddb9eb1afba38e81761efca04c SHA1 7b6cc8886149cc5a730c1dd29324a479e2da234a SHA256 d1ec9e772812840da3bea877861ff5480f63dfb6da1008ad5734409060c33c80 -MD5 3f5829d8bf188766496dbabe2158a211 glibc-2.3.4.20041102-r1.ebuild 34397 -RMD160 f238e8d55f9583ddb9eb1afba38e81761efca04c glibc-2.3.4.20041102-r1.ebuild 34397 -SHA256 d1ec9e772812840da3bea877861ff5480f63dfb6da1008ad5734409060c33c80 glibc-2.3.4.20041102-r1.ebuild 34397 -EBUILD glibc-2.3.4.20041102-r2.ebuild 41431 RMD160 a3189f8cb5131b30e918d0500ab800ed5b3aa5a7 SHA1 62aaa7adb3f0b1c51960816a6228fcac5ef065b5 SHA256 07b4823962c9f0823e16462fd91ff71520a88efc1a3da0875e2e6f0bca433211 -MD5 523c8822183104c8a0f0e33b83ec2a25 glibc-2.3.4.20041102-r2.ebuild 41431 -RMD160 a3189f8cb5131b30e918d0500ab800ed5b3aa5a7 glibc-2.3.4.20041102-r2.ebuild 41431 -SHA256 07b4823962c9f0823e16462fd91ff71520a88efc1a3da0875e2e6f0bca433211 glibc-2.3.4.20041102-r2.ebuild 41431 -EBUILD glibc-2.3.4.20050125-r1.ebuild 39615 RMD160 b3676698b8cea26bc277c3959b36916362aebd51 SHA1 90d05a4fe374a8d56723a424fc76b14894cb6bce SHA256 f2886f504078f39b58f014dfcfa2cb09ff28a9c3cf42cfe041fd55b5f1954907 -MD5 5b9c2bfd2dfdc39c1a2b04c7a73362dc glibc-2.3.4.20050125-r1.ebuild 39615 -RMD160 b3676698b8cea26bc277c3959b36916362aebd51 glibc-2.3.4.20050125-r1.ebuild 39615 -SHA256 f2886f504078f39b58f014dfcfa2cb09ff28a9c3cf42cfe041fd55b5f1954907 glibc-2.3.4.20050125-r1.ebuild 39615 EBUILD glibc-2.3.5-r2.ebuild 39911 RMD160 9a117185dc13d343a667377df17cfe5da752a9a8 SHA1 5d294ed5e557e642eb5f9cbf906a2ea587a025da SHA256 93f1e49108e4f7720385fd580e5a8126629ffd2182d6cdb41a0cdb1058f6b93e MD5 d80acce1da412ea322d3c70555186725 glibc-2.3.5-r2.ebuild 39911 RMD160 9a117185dc13d343a667377df17cfe5da752a9a8 glibc-2.3.5-r2.ebuild 39911 @@ -523,10 +480,6 @@ EBUILD glibc-2.3.5-r3.ebuild 39523 RMD160 6c529c81e5eeda17db74897271a978daf628f2 MD5 2df4c6dc7cd5cb0aa6e15984f0e7c4c3 glibc-2.3.5-r3.ebuild 39523 RMD160 6c529c81e5eeda17db74897271a978daf628f224 glibc-2.3.5-r3.ebuild 39523 SHA256 68ce33761b7387ea258fd90eb026232b72fbd8ecc6867be87bc33892ce47148e glibc-2.3.5-r3.ebuild 39523 -EBUILD glibc-2.3.6-r3.ebuild 43142 RMD160 e5177acd37982abb941d4fc5490675181c7b060a SHA1 57a653a0248091b37da22ad12cc15fa6b7ef86bc SHA256 838946f57810f9f26dbf51f26eeb4182a60a8dd51059e12d5bc12431a101314c -MD5 5c96fe46ca5a4aa4c583e531e0e76fe8 glibc-2.3.6-r3.ebuild 43142 -RMD160 e5177acd37982abb941d4fc5490675181c7b060a glibc-2.3.6-r3.ebuild 43142 -SHA256 838946f57810f9f26dbf51f26eeb4182a60a8dd51059e12d5bc12431a101314c glibc-2.3.6-r3.ebuild 43142 EBUILD glibc-2.3.6-r4.ebuild 37422 RMD160 f76d7439557576600276af4eaadedbe1465fc166 SHA1 9bce3ad13adfdb13fb830dacc81877974ed00630 SHA256 a7358904e19d2b188e0732982862637920f058192e069413cc50bd5bc506f427 MD5 df7156a2bbf913e61c69ecf85e213df0 glibc-2.3.6-r4.ebuild 37422 RMD160 f76d7439557576600276af4eaadedbe1465fc166 glibc-2.3.6-r4.ebuild 37422 @@ -535,10 +488,6 @@ EBUILD glibc-2.3.6-r5.ebuild 37753 RMD160 9ce108780688927864342e44af19fc58b7a60e MD5 7b9149cdfa24ffcfffee7bf726d34a47 glibc-2.3.6-r5.ebuild 37753 RMD160 9ce108780688927864342e44af19fc58b7a60e1c glibc-2.3.6-r5.ebuild 37753 SHA256 9ee131d40a13f1490cc36791da4708190273b10c2fb86a3f4595209f59787acc glibc-2.3.6-r5.ebuild 37753 -EBUILD glibc-2.4-r3.ebuild 39400 RMD160 447258420c06d9b4f6ce5efd2e0de4409b539e43 SHA1 baf31321aa119adbba4bad07566c277a1693b968 SHA256 8a5b256929fb50b3fbba8bcbf6153891c76705b07b606974f2d5fb069025522a -MD5 3b888101bb4e4af2929500fab4ff58fe glibc-2.4-r3.ebuild 39400 -RMD160 447258420c06d9b4f6ce5efd2e0de4409b539e43 glibc-2.4-r3.ebuild 39400 -SHA256 8a5b256929fb50b3fbba8bcbf6153891c76705b07b606974f2d5fb069025522a glibc-2.4-r3.ebuild 39400 EBUILD glibc-2.4-r4.ebuild 39210 RMD160 fd782b08e862bd1889b9d6dc73386f6ff43ce676 SHA1 56ee88ee5e6fc8a238a8bad50601329ec1f8d9ea SHA256 d05fc7bf0c6cd701443f61328afb4e80ce6ff6d7d364de346cfdc297ffedc5df MD5 f7e1022963b4ac00d04110ef57c1a0eb glibc-2.4-r4.ebuild 39210 RMD160 fd782b08e862bd1889b9d6dc73386f6ff43ce676 glibc-2.4-r4.ebuild 39210 @@ -561,42 +510,18 @@ SHA256 1e8391b23feca4c5578cc71839bee70677d5eec1eb4e14703d1e3465b50a4160 files/di MD5 8599f0e39db057e64ce88db4f338fe5c files/digest-glibc-2.3.2-r12 1370 RMD160 2a1ed00e9ea8bc8d59cff6734fb0b41c185b7b0e files/digest-glibc-2.3.2-r12 1370 SHA256 208f2946e740f6aee70cc8c064c76c91346b9fac108d07d925ec57b0958cb0d5 files/digest-glibc-2.3.2-r12 1370 -MD5 449eba15566275d74bd781d8f0a08ca4 files/digest-glibc-2.3.3.20040420-r2 1120 -RMD160 f7b36ad56f1585f7612dcce9516b0d40a9c7ea03 files/digest-glibc-2.3.3.20040420-r2 1120 -SHA256 2e08e513bbf32e245e217e119bc68791c38db968c50f420a5adf10cd530613f7 files/digest-glibc-2.3.3.20040420-r2 1120 -MD5 7194267c126b7957cb653c57e45de75f files/digest-glibc-2.3.4.20040619-r2 1105 -RMD160 c4d90f204ff0b50d39ab9997268ca0e880dd2e72 files/digest-glibc-2.3.4.20040619-r2 1105 -SHA256 dd0d63a0425c9c9b4a355919c6248fbe74d321dfd642445fc09abc12cc8a2a89 files/digest-glibc-2.3.4.20040619-r2 1105 -MD5 830a5d1b360464fba222738c1ce37727 files/digest-glibc-2.3.4.20040808-r1 1373 -RMD160 e98511f8b2da7d3c7e77f6177be6d916047f1d21 files/digest-glibc-2.3.4.20040808-r1 1373 -SHA256 99ea4cbcd6d18b2fb5ee1c1f51806b4a25fee996ad2d1f305f77caf3b32f7566 files/digest-glibc-2.3.4.20040808-r1 1373 -MD5 f8541256e4ad58a1940b84ecd1b15755 files/digest-glibc-2.3.4.20041102-r1 1379 -RMD160 582cb821648a7917e97d17d324ca99d95541ea0b files/digest-glibc-2.3.4.20041102-r1 1379 -SHA256 8d1be8d4fe94b1bb25f75ceb4fe4ab6563712ab2801dc8f920176f30a7283b08 files/digest-glibc-2.3.4.20041102-r1 1379 -MD5 ba4d2a6398b16c2439358cbeb9b20261 files/digest-glibc-2.3.4.20041102-r2 1379 -RMD160 d6cca74b27330cd50d3f514f3b856a87d79ad58b files/digest-glibc-2.3.4.20041102-r2 1379 -SHA256 97b088df2b4c8f43399fa70e8b26837820a58c3e20e9638a1bd79db660e4917d files/digest-glibc-2.3.4.20041102-r2 1379 -MD5 3c2b2360247faa070accdbea8997270b files/digest-glibc-2.3.4.20050125-r1 1861 -RMD160 311779c5a8830f4e8533e560fd0e02fb1d4225ef files/digest-glibc-2.3.4.20050125-r1 1861 -SHA256 7add1f6c2dcdb996555fc01175fcc096214e5ee718c6f6f19a7fd08955952b2b files/digest-glibc-2.3.4.20050125-r1 1861 MD5 ef832545b8526cbaaccee4d6ac8fef7a files/digest-glibc-2.3.5-r2 1858 RMD160 bf80045e5979fa472b02468953bdf8f9b364a872 files/digest-glibc-2.3.5-r2 1858 SHA256 652997480346795144c8b8824a426b0ed2ebbb03550534e1483965aa686575cf files/digest-glibc-2.3.5-r2 1858 MD5 5ba9db951648c3fb60e92da639147153 files/digest-glibc-2.3.5-r3 1870 RMD160 6039fe9e29fce7eff6eed73b262f2afc2a7642a4 files/digest-glibc-2.3.5-r3 1870 SHA256 77ccc09d56cf5a8b4a7c2d847eb28074668e0319777e632be7a1c29e33a7db5c files/digest-glibc-2.3.5-r3 1870 -MD5 a9b2d44d0396a4996c59e30664cd3643 files/digest-glibc-2.3.6-r3 1876 -RMD160 cc9d6cfcd8541c7dc518560eb50dfd8c61f98ab8 files/digest-glibc-2.3.6-r3 1876 -SHA256 8ec9b852e961654f255e4ae73c2fcc51482fb1b0519834688dba4614f8353216 files/digest-glibc-2.3.6-r3 1876 MD5 504691f1cdffcd5eb560b32946fa8695 files/digest-glibc-2.3.6-r4 1596 RMD160 fda1fc87dd9cdf4b280ae0a80cad31891bc0c728 files/digest-glibc-2.3.6-r4 1596 SHA256 e780eefdde60f4ab9870c81854b0226ff2bf3b19e13149e83e146ce9a3e7b6b4 files/digest-glibc-2.3.6-r4 1596 MD5 07c6ed43c6ff95527cde0398b3edd37a files/digest-glibc-2.3.6-r5 1596 RMD160 4527bb7550322654553fd771eb8983a119a31586 files/digest-glibc-2.3.6-r5 1596 SHA256 a288dbf9f069b3cff57d820d00991e2942c84683d8df5b12cfb3ff31ed6781c5 files/digest-glibc-2.3.6-r5 1596 -MD5 0839b75709d53cb72b9a3f6039d220a5 files/digest-glibc-2.4-r3 1575 -RMD160 c82aed2e0f3f556b051d7e3a1fc13c202f67bf2f files/digest-glibc-2.4-r3 1575 -SHA256 f22d43e9647ef7c83b51e5102caaca7e38b3d16783e6097b1a3cbe4b0957070e files/digest-glibc-2.4-r3 1575 MD5 e6c60ddb8b06199242d294f97f01c574 files/digest-glibc-2.4-r4 1575 RMD160 49ff56b0209067c5313646df281c408956cdaa92 files/digest-glibc-2.4-r4 1575 SHA256 a49f96d87bda9dfbe73ac717c2a1dea7b4715c9c2e6031f404e3d7ee1209efea files/digest-glibc-2.4-r4 1575 @@ -606,7 +531,7 @@ SHA256 f65c057f070beb912fdc31c87bdec28342093306c3387f73aa831178e3a8d875 files/di -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.1 (GNU/Linux) -iD8DBQFFwsRm8bi6rjpTunYRAq0XAJ4/pCbO7Ab1phbbblRugXZMnc0NkwCfXNjt -BYiETd+yjWhwtFG8LactlZs= -=w0qr +iD8DBQFFw+s/8bi6rjpTunYRAkijAJ9A9bMfbDDeO+Kjjov74LDK3wh3CQCgtMdj +HyuPNV/UjzV+Kd0rQ0OIG4Q= +=MQ50 -----END PGP SIGNATURE----- diff --git a/sys-libs/glibc/files/digest-glibc-2.3.3.20040420-r2 b/sys-libs/glibc/files/digest-glibc-2.3.3.20040420-r2 deleted file mode 100644 index ed1b2e87c5ba..000000000000 --- a/sys-libs/glibc/files/digest-glibc-2.3.3.20040420-r2 +++ /dev/null @@ -1,12 +0,0 @@ -MD5 c7c27c0821245d98a0568a475c08f4e9 glibc-2.3.2-hppa-patches-p1.tar.bz2 18793 -RMD160 c91188b73d50263dac48f40343d606dc9262675c glibc-2.3.2-hppa-patches-p1.tar.bz2 18793 -SHA256 198f1dc1241e03249ef3932b7792b07cfbf3b9e54c491d8539962e7c0122a10e glibc-2.3.2-hppa-patches-p1.tar.bz2 18793 -MD5 ede969aad568f48083e413384f20753c glibc-2.3.2.tar.bz2 13377170 -RMD160 3bedff29f64adc8037a821e23b48b0c7e0756e67 glibc-2.3.2.tar.bz2 13377170 -SHA256 f4c53b1aef2f622e5b70a94d33c318cc7fd6e074c11f4d36a5dfb7da5edff744 glibc-2.3.2.tar.bz2 13377170 -MD5 099115aef35f56dc357116c262fd7785 glibc-2.3.3-branch-update-20040420.patch.bz2 2435254 -RMD160 204aa92598b4a4af0e663ece69719196241de956 glibc-2.3.3-branch-update-20040420.patch.bz2 2435254 -SHA256 9bb2586f9b3f5be57302865baae9db7bafff30c712fd352693b55e6289b190bd glibc-2.3.3-branch-update-20040420.patch.bz2 2435254 -MD5 894b8969cfbdf787c73e139782167607 glibc-linuxthreads-2.3.2.tar.bz2 216310 -RMD160 9be07e5896f5e4e728bdbbebb00d78d8cf3ca5d3 glibc-linuxthreads-2.3.2.tar.bz2 216310 -SHA256 529b34d1f859801b91b889a47feb4ba3cd4560ecb1dd9782486bc9198f7d3999 glibc-linuxthreads-2.3.2.tar.bz2 216310 diff --git a/sys-libs/glibc/files/digest-glibc-2.3.4.20040619-r2 b/sys-libs/glibc/files/digest-glibc-2.3.4.20040619-r2 deleted file mode 100644 index 66e82b281d18..000000000000 --- a/sys-libs/glibc/files/digest-glibc-2.3.4.20040619-r2 +++ /dev/null @@ -1,12 +0,0 @@ -MD5 ede969aad568f48083e413384f20753c glibc-2.3.2.tar.bz2 13377170 -RMD160 3bedff29f64adc8037a821e23b48b0c7e0756e67 glibc-2.3.2.tar.bz2 13377170 -SHA256 f4c53b1aef2f622e5b70a94d33c318cc7fd6e074c11f4d36a5dfb7da5edff744 glibc-2.3.2.tar.bz2 13377170 -MD5 c9c4a17c9b9adb362cb46d9014177197 glibc-2.3.4-branch-update-20040619.patch.bz2 2515781 -RMD160 5f266026bae84ac07ba534dcfc7c6f86accd91a0 glibc-2.3.4-branch-update-20040619.patch.bz2 2515781 -SHA256 c14ca7c134241962666310d8ecc642965419999d7d3dff33db6c2425c2831e61 glibc-2.3.4-branch-update-20040619.patch.bz2 2515781 -MD5 28a88631cf36695dd1149155708beeab glibc-hppa-patches-2004-06-04.tar.gz 9528 -RMD160 df2b086cac83979033f274ccfe2b58e67ae73d0c glibc-hppa-patches-2004-06-04.tar.gz 9528 -SHA256 6efebc08997ff83487058f443c009417c646d756b55d760e4192748aa8dacf2e glibc-hppa-patches-2004-06-04.tar.gz 9528 -MD5 2a138a32ffdb52fc1be54088d5d49420 glibc-manpages-2.3.4.tar.bz2 14759 -RMD160 56a648a9eb327568c0e6681aaa47a5c7bb93f84f glibc-manpages-2.3.4.tar.bz2 14759 -SHA256 a512d0302005168bcb77860468884823b13f9f5ec2c9981b86b46e729e3e318d glibc-manpages-2.3.4.tar.bz2 14759 diff --git a/sys-libs/glibc/files/digest-glibc-2.3.4.20040808-r1 b/sys-libs/glibc/files/digest-glibc-2.3.4.20040808-r1 deleted file mode 100644 index 321c7a87b00a..000000000000 --- a/sys-libs/glibc/files/digest-glibc-2.3.4.20040808-r1 +++ /dev/null @@ -1,15 +0,0 @@ -MD5 84dabbf0b9b5370793a416687d7b5252 glibc-2.3.3.tar.bz2 13298567 -RMD160 38bfb1e341f75cf9f395cb9fe15c5bbde375e7e9 glibc-2.3.3.tar.bz2 13298567 -SHA256 38baf77ac12ad32036cf6060c5eaca822c7dfa2472c8210c6cc9c0dcdfbbc08f glibc-2.3.3.tar.bz2 13298567 -MD5 d97f2ecdcdc85527cd4c668b9bb4b184 glibc-2.3.4-branch-update-20040808.patch.bz2 737280 -RMD160 5f73bb305cba63dab24179753d1d3ca03d9a4642 glibc-2.3.4-branch-update-20040808.patch.bz2 737280 -SHA256 c3df50ff3f230f225f646ea4cb11c0786da3d4c59f35a43933090a126a1bbe1a glibc-2.3.4-branch-update-20040808.patch.bz2 737280 -MD5 dc09b4c1a29f69232441f7f5abbcc7b9 glibc-hppa-patches-2004-08-24.tar.gz 9739 -RMD160 1956d3d0e11c892521db1607699fadbd3bed9f9d glibc-hppa-patches-2004-08-24.tar.gz 9739 -SHA256 0254e1febd00a79674861f5523628b0ba08bc69259f98b5cde3655ce1c677c89 glibc-hppa-patches-2004-08-24.tar.gz 9739 -MD5 eabe1f4779fc27cde985b0713f930827 glibc-infopages-2.3.4.tar.bz2 1175502 -RMD160 cc72825477301c22ae7488fee73fb8326688dbbf glibc-infopages-2.3.4.tar.bz2 1175502 -SHA256 71ecc1d80333de1afe51ef5d00b4728dba5dc484263eb28941e7b57e5e0492af glibc-infopages-2.3.4.tar.bz2 1175502 -MD5 2a138a32ffdb52fc1be54088d5d49420 glibc-manpages-2.3.4.tar.bz2 14759 -RMD160 56a648a9eb327568c0e6681aaa47a5c7bb93f84f glibc-manpages-2.3.4.tar.bz2 14759 -SHA256 a512d0302005168bcb77860468884823b13f9f5ec2c9981b86b46e729e3e318d glibc-manpages-2.3.4.tar.bz2 14759 diff --git a/sys-libs/glibc/files/digest-glibc-2.3.4.20041102-r1 b/sys-libs/glibc/files/digest-glibc-2.3.4.20041102-r1 deleted file mode 100644 index d00fcc6ecb2a..000000000000 --- a/sys-libs/glibc/files/digest-glibc-2.3.4.20041102-r1 +++ /dev/null @@ -1,15 +0,0 @@ -MD5 84dabbf0b9b5370793a416687d7b5252 glibc-2.3.3.tar.bz2 13298567 -RMD160 38bfb1e341f75cf9f395cb9fe15c5bbde375e7e9 glibc-2.3.3.tar.bz2 13298567 -SHA256 38baf77ac12ad32036cf6060c5eaca822c7dfa2472c8210c6cc9c0dcdfbbc08f glibc-2.3.3.tar.bz2 13298567 -MD5 387bbf301b35fa5ff5b3edaf45c323d8 glibc-2.3.4-branch-update-20041102.patch.bz2 3034626 -RMD160 4bab0562a8b96685ca358d7a17360cbeb9039982 glibc-2.3.4-branch-update-20041102.patch.bz2 3034626 -SHA256 799818302767fc403f10d7a137e2080d5efa4c43578e6323dca2ed8fa8102814 glibc-2.3.4-branch-update-20041102.patch.bz2 3034626 -MD5 20cba284227f9ab99e504a88b3759f3c glibc-hppa-patches-2004-09-30.tar.gz 16407 -RMD160 0f418fbe70ee7e0f8ecda56e09fce5c41a7609bf glibc-hppa-patches-2004-09-30.tar.gz 16407 -SHA256 14330b2429df38d86b0ca470155111a4add2563ce593c1e0e2adecb6d6a44e81 glibc-hppa-patches-2004-09-30.tar.gz 16407 -MD5 eabe1f4779fc27cde985b0713f930827 glibc-infopages-2.3.4.tar.bz2 1175502 -RMD160 cc72825477301c22ae7488fee73fb8326688dbbf glibc-infopages-2.3.4.tar.bz2 1175502 -SHA256 71ecc1d80333de1afe51ef5d00b4728dba5dc484263eb28941e7b57e5e0492af glibc-infopages-2.3.4.tar.bz2 1175502 -MD5 2a138a32ffdb52fc1be54088d5d49420 glibc-manpages-2.3.4.tar.bz2 14759 -RMD160 56a648a9eb327568c0e6681aaa47a5c7bb93f84f glibc-manpages-2.3.4.tar.bz2 14759 -SHA256 a512d0302005168bcb77860468884823b13f9f5ec2c9981b86b46e729e3e318d glibc-manpages-2.3.4.tar.bz2 14759 diff --git a/sys-libs/glibc/files/digest-glibc-2.3.4.20041102-r2 b/sys-libs/glibc/files/digest-glibc-2.3.4.20041102-r2 deleted file mode 100644 index 4269d09f4259..000000000000 --- a/sys-libs/glibc/files/digest-glibc-2.3.4.20041102-r2 +++ /dev/null @@ -1,15 +0,0 @@ -MD5 84dabbf0b9b5370793a416687d7b5252 glibc-2.3.3.tar.bz2 13298567 -RMD160 38bfb1e341f75cf9f395cb9fe15c5bbde375e7e9 glibc-2.3.3.tar.bz2 13298567 -SHA256 38baf77ac12ad32036cf6060c5eaca822c7dfa2472c8210c6cc9c0dcdfbbc08f glibc-2.3.3.tar.bz2 13298567 -MD5 387bbf301b35fa5ff5b3edaf45c323d8 glibc-2.3.4-branch-update-20041102.patch.bz2 3034626 -RMD160 4bab0562a8b96685ca358d7a17360cbeb9039982 glibc-2.3.4-branch-update-20041102.patch.bz2 3034626 -SHA256 799818302767fc403f10d7a137e2080d5efa4c43578e6323dca2ed8fa8102814 glibc-2.3.4-branch-update-20041102.patch.bz2 3034626 -MD5 d41d8cd98f00b204e9800998ecf8427e glibc-2.3.4.20041102-patches-1.0.tar.bz2 0 -RMD160 9c1185a5c5e9fc54612808977ee8f548b2258d31 glibc-2.3.4.20041102-patches-1.0.tar.bz2 0 -SHA256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 glibc-2.3.4.20041102-patches-1.0.tar.bz2 0 -MD5 eabe1f4779fc27cde985b0713f930827 glibc-infopages-2.3.4.tar.bz2 1175502 -RMD160 cc72825477301c22ae7488fee73fb8326688dbbf glibc-infopages-2.3.4.tar.bz2 1175502 -SHA256 71ecc1d80333de1afe51ef5d00b4728dba5dc484263eb28941e7b57e5e0492af glibc-infopages-2.3.4.tar.bz2 1175502 -MD5 2a138a32ffdb52fc1be54088d5d49420 glibc-manpages-2.3.4.tar.bz2 14759 -RMD160 56a648a9eb327568c0e6681aaa47a5c7bb93f84f glibc-manpages-2.3.4.tar.bz2 14759 -SHA256 a512d0302005168bcb77860468884823b13f9f5ec2c9981b86b46e729e3e318d glibc-manpages-2.3.4.tar.bz2 14759 diff --git a/sys-libs/glibc/files/digest-glibc-2.3.4.20050125-r1 b/sys-libs/glibc/files/digest-glibc-2.3.4.20050125-r1 deleted file mode 100644 index d29b0f3c86a6..000000000000 --- a/sys-libs/glibc/files/digest-glibc-2.3.4.20050125-r1 +++ /dev/null @@ -1,21 +0,0 @@ -MD5 d41d8cd98f00b204e9800998ecf8427e glibc-2.3.4-patches-1.7.tar.bz2 0 -RMD160 9c1185a5c5e9fc54612808977ee8f548b2258d31 glibc-2.3.4-patches-1.7.tar.bz2 0 -SHA256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 glibc-2.3.4-patches-1.7.tar.bz2 0 -MD5 174ac5ed4f2851fcc866a3bac1e4a6a5 glibc-2.3.4.tar.bz2 13213560 -RMD160 bb2bc1669de7c7b08903be5767753f75709e98c5 glibc-2.3.4.tar.bz2 13213560 -SHA256 bbf86a81932c14d3bb9cc384202463e31971b0101e06830137534bd4782a732b glibc-2.3.4.tar.bz2 13213560 -MD5 2c183c16b572f533d07525472d64cdc7 glibc-fedora-20041219T2331.tar.bz2 761998 -RMD160 cfc859a7e0a904cfb340c832267d3377e850cf6e glibc-fedora-20041219T2331.tar.bz2 761998 -SHA256 e36ffa84388ebb746cb80c37d6fd1acc9e45e07b85c30b0a2ad9f511fae59cec glibc-fedora-20041219T2331.tar.bz2 761998 -MD5 04166455bebb5563bb9a8feca2e3c26c glibc-infopages-2.3.4-r1.tar.bz2 1294898 -RMD160 c72229ee6b3576f507aa8051f273ea9cf1cabaf6 glibc-infopages-2.3.4-r1.tar.bz2 1294898 -SHA256 e8eadffa855ee4ade919daccbaa79e02e7c65688bc0aea9c7337d52827827779 glibc-infopages-2.3.4-r1.tar.bz2 1294898 -MD5 1f586b91280665cb8df70bdd7c4583ba glibc-libidn-2.3.4.tar.bz2 100711 -RMD160 fc4c5f21d9d628ec87afbbc81fb50df950eac333 glibc-libidn-2.3.4.tar.bz2 100711 -SHA256 7b5ad1104af9e90fa25b60bec51de8678f32a82ad90de90d43510183970896ea glibc-libidn-2.3.4.tar.bz2 100711 -MD5 7a199cd4965eb5622163756ae64358fe glibc-linuxthreads-2.3.4.tar.bz2 236183 -RMD160 fd13b9bf5c9991e6855c01fb34f4f3a87b49f57e glibc-linuxthreads-2.3.4.tar.bz2 236183 -SHA256 1c312c9c9f33d5cdf6622af390e5698e92f950e411b7795024aab089e0249a78 glibc-linuxthreads-2.3.4.tar.bz2 236183 -MD5 d41d8cd98f00b204e9800998ecf8427e glibc-manpages-2.3.4-r1.tar.bz2 0 -RMD160 9c1185a5c5e9fc54612808977ee8f548b2258d31 glibc-manpages-2.3.4-r1.tar.bz2 0 -SHA256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 glibc-manpages-2.3.4-r1.tar.bz2 0 diff --git a/sys-libs/glibc/files/digest-glibc-2.3.6-r3 b/sys-libs/glibc/files/digest-glibc-2.3.6-r3 deleted file mode 100644 index 14eebeb0d0e0..000000000000 --- a/sys-libs/glibc/files/digest-glibc-2.3.6-r3 +++ /dev/null @@ -1,21 +0,0 @@ -MD5 a538b3b4fed69830017e7505be8b4798 glibc-2.3.6-patches-1.8.tar.bz2 132799 -RMD160 fe94d79a0cd6ca8e860924fc3daafe550faa4244 glibc-2.3.6-patches-1.8.tar.bz2 132799 -SHA256 8a96a2fcd6800ab47f23d669fc9752978e0bfc0ff5f634351ae49a33c7a0060e glibc-2.3.6-patches-1.8.tar.bz2 132799 -MD5 bfdce99f82d6dbcb64b7f11c05d6bc96 glibc-2.3.6.tar.bz2 14014977 -RMD160 04b4f71cc3e89581e02ee2dbf5ab05f61e868bf1 glibc-2.3.6.tar.bz2 14014977 -SHA256 e73ff5eddea95d09238b41d3c9c4d9ccddcf99fcc93d04956599c91c704f4a8e glibc-2.3.6.tar.bz2 14014977 -MD5 2c183c16b572f533d07525472d64cdc7 glibc-fedora-20041219T2331.tar.bz2 761998 -RMD160 cfc859a7e0a904cfb340c832267d3377e850cf6e glibc-fedora-20041219T2331.tar.bz2 761998 -SHA256 e36ffa84388ebb746cb80c37d6fd1acc9e45e07b85c30b0a2ad9f511fae59cec glibc-fedora-20041219T2331.tar.bz2 761998 -MD5 1c7fa36de8bdb130e4b697d25cc672cd glibc-infopages-2.3.6.tar.bz2 1298413 -RMD160 5a83ca63c4153e5677797c0c0043aec0b55a6fe3 glibc-infopages-2.3.6.tar.bz2 1298413 -SHA256 651701bb5d8431401fa0f2252ad1cd37f69dc3a2aa28e4ce3405b4417b5e2c22 glibc-infopages-2.3.6.tar.bz2 1298413 -MD5 49dbe06ce830fc73874d6b38bdc5b4db glibc-libidn-2.3.6.tar.bz2 101041 -RMD160 7bc8e8fa310d2ae543802ea036c036c60d09270d glibc-libidn-2.3.6.tar.bz2 101041 -SHA256 99a20232c1ad994e8a6dcd15c34e413eed94e7dd558bed7b832649dce09fb4f2 glibc-libidn-2.3.6.tar.bz2 101041 -MD5 d4eeda37472666a15cc1f407e9c987a9 glibc-linuxthreads-2.3.6.tar.bz2 243534 -RMD160 bb89ac687419cede738314923bc952d191d8d252 glibc-linuxthreads-2.3.6.tar.bz2 243534 -SHA256 6c3bc4a247d1e5308fb14f81956802f09095d3683219859fcad5795aa3aea638 glibc-linuxthreads-2.3.6.tar.bz2 243534 -MD5 0b5f8f3e19c4c4efd1ab15a3823c4538 glibc-manpages-2.3.6-1.tar.bz2 22216 -RMD160 a69fc155366d1b263acecd026718dc536c2b12b8 glibc-manpages-2.3.6-1.tar.bz2 22216 -SHA256 2ba9c7fff2f02f888160dbadd013356fe4a6e9f3d71ac583f5ba6a1d73cb2ab6 glibc-manpages-2.3.6-1.tar.bz2 22216 diff --git a/sys-libs/glibc/files/digest-glibc-2.4-r3 b/sys-libs/glibc/files/digest-glibc-2.4-r3 deleted file mode 100644 index b81d50b3ee9f..000000000000 --- a/sys-libs/glibc/files/digest-glibc-2.4-r3 +++ /dev/null @@ -1,18 +0,0 @@ -MD5 160304ebce38bc3ae192e246a195b2d7 glibc-2.4-patches-1.17.tar.bz2 179314 -RMD160 a537434c85cb9bd96c77f0bfeba8d7134f54d7ff glibc-2.4-patches-1.17.tar.bz2 179314 -SHA256 255c900f4b9e24e65ecefc6e65040a15122901f2482f98e29b1e361cb2d4faa9 glibc-2.4-patches-1.17.tar.bz2 179314 -MD5 7e9a88dcd41fbc53801dbe5bdacaf245 glibc-2.4.tar.bz2 15202445 -RMD160 ee2712a0e6fab8e086958c1f23221f8d07af3de1 glibc-2.4.tar.bz2 15202445 -SHA256 27aaaaa78b4ab5da76bb29385dc9be087ba7b855a9102eaaa78ce3ec5e2e7fcd glibc-2.4.tar.bz2 15202445 -MD5 e2d892b40d654c523ab26a26b7dd86a1 glibc-libidn-2.4.tar.bz2 102305 -RMD160 76b2e15e7613c4ac8db3bf90e90929c0e369ab04 glibc-libidn-2.4.tar.bz2 102305 -SHA256 2f29ec2b2b2f75f787a1eed8fdea20aff212dc3bad97651ca376914c49181977 glibc-libidn-2.4.tar.bz2 102305 -MD5 57a7bc37febb08f2f8d0c844e7e376e4 glibc-linuxthreads-20060605.tar.bz2 247200 -RMD160 aaa0a150eec4d63787f86ae04ded4d92a10c6f29 glibc-linuxthreads-20060605.tar.bz2 247200 -SHA256 1d15e236926fff6daa81e6af34e7903206b67f849f828ca976ab077b4677fb52 glibc-linuxthreads-20060605.tar.bz2 247200 -MD5 7bb1b35654e94994925e66676acabd4e glibc-ports-2.4.tar.bz2 381472 -RMD160 72987098f9fbd5a1ad617bf2136081c0db80a429 glibc-ports-2.4.tar.bz2 381472 -SHA256 2fbbcaad8a9f8560485c398a9066959fe2713c8bc7e653ec476fb56fed21d19a glibc-ports-2.4.tar.bz2 381472 -MD5 f576b5601b86a89165c17fdddb92d1cc glibc-powerpc-cpu-addon-v0.01.tgz 22422 -RMD160 3483c94ec55819b36aa66fc60462317f8d15e4df glibc-powerpc-cpu-addon-v0.01.tgz 22422 -SHA256 0ffa9a432fffb9bfed99c529b631a27534ba848c7ec1d707732338b73a4a8ce9 glibc-powerpc-cpu-addon-v0.01.tgz 22422 diff --git a/sys-libs/glibc/glibc-2.3.3.20040420-r2.ebuild b/sys-libs/glibc/glibc-2.3.3.20040420-r2.ebuild deleted file mode 100644 index debeece4bcfc..000000000000 --- a/sys-libs/glibc/glibc-2.3.3.20040420-r2.ebuild +++ /dev/null @@ -1,725 +0,0 @@ -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.3.20040420-r2.ebuild,v 1.16 2006/08/31 20:28:33 vapier Exp $ - -inherit eutils flag-o-matic toolchain-funcs - -# Branch update support. Following will disable: -# BRANCH_UPDATE= -BRANCH_UPDATE="20040420" - -# Minimum kernel version for --enable-kernel -export MIN_KV=${LT_KERNEL_VERSION:-"2.4.1"} -# Minimum kernel version for enabling TLS and NPTL ... -# NOTE: do not change this if you do not know what -# you are doing ! -export MIN_NPTL_KV=${NPTL_KERNEL_VERSION:-"2.6.0"} - -#MY_PV="${PV/_}" -MY_PV="2.3.2" -#S="${WORKDIR}/${P%_*}" -S="${WORKDIR}/${PN}-${MY_PV}" -DESCRIPTION="GNU libc6 (also called glibc2) C library" -HOMEPAGE="http://www.gnu.org/software/libc/libc.html" -SRC_URI="http://ftp.gnu.org/gnu/glibc/glibc-${MY_PV}.tar.bz2 - ftp://sources.redhat.com/pub/glibc/snapshots/glibc-${MY_PV}.tar.bz2 - http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-${MY_PV}.tar.bz2 - ftp://sources.redhat.com/pub/glibc/snapshots/glibc-linuxthreads-${MY_PV}.tar.bz2 - mirror://gentoo/${PN}-2.3.3-branch-update-${BRANCH_UPDATE}.patch.bz2 - hppa? ( mirror://gentoo/${PN}-${MY_PV}-hppa-patches-p1.tar.bz2 )" - -LICENSE="LGPL-2" -SLOT="2.2" -#KEYWORDS="~x86 ~mips ~sparc ~amd64 -hppa ~ia64 ~ppc" # breaks on ~alpha -KEYWORDS="x86 ppc sparc" -IUSE="build erandom hardened nls nptl pic" - -# We need new cleanup attribute support from gcc for NPTL among things ... -DEPEND=">=sys-devel/gcc-3.2.3-r1 - nptl? ( >=sys-devel/gcc-3.3.1-r1 ) - >=sys-devel/binutils-2.14.90.0.6-r1 - virtual/os-headers - nls? ( sys-devel/gettext )" -RDEPEND="nls? ( sys-devel/gettext )" -PROVIDE="virtual/libc" - - -# Try to get a kernel source tree with version equal or greater -# than $1. We basically just try a few default locations. The -# version need to be that which KV_to_int() returns ... -get_KHV() { - local headers= - - [ -z "$1" ] && return 1 - - # - First check if linux-headers are installed (or symlink - # to current kernel ...) - # - Ok, do we have access to the current kernel's headers ? - # - Last option ... maybe its a weird bootstrap with /lib - # binded to the chroot ... - - # We do not really support more than 2 arguments ... - if [ -n "$2" ] - then - headers="$2" - else - # Things should be pretty stable kernel side now, so try - # /usr/include first, then the current kernel's headers. - headers="${ROOT}/usr/include \ - /lib/modules/`uname -r`/build/include \ - ${ROOT}/lib/modules/`uname -r`/build/include \ - /usr/src/linux/include \ - ${ROOT}/usr/src/linux/include" - fi - - for x in ${headers} - do - local header="${x}/linux/version.h" - - if [ -f ${header} ] - then - - local version="`grep 'LINUX_VERSION_CODE' ${header} | \ - sed -e 's:^.*LINUX_VERSION_CODE[[:space:]]*::'`" - - if [ "${version}" -ge "$1" ] - then - echo "${x}" - - return 0 - fi - fi - done - - return 1 -} - -use_nptl() { - # Enable NPTL support if: - # - We have 'nptl' in USE - # - We have linux-2.5 or later kernel (should prob check for 2.4.20 ...) - if use nptl && [ "`get_KV`" -ge "`KV_to_int ${MIN_NPTL_KV}`" ] - then - # Enable NPTL support if: - # - We have 'x86' in USE and: - # - a CHOST of "i486-pc-linux-gnu" - # - a CHOST of "i586-pc-linux-gnu" - # - a CHOST of "i686-pc-linux-gnu" - # - Or we have 'alpha' in USE - # - Or we have 'amd64' in USE - # - Or we have 'mips' in USE - # - Or we have 'ppc' in USE - case ${ARCH} in - "x86") - if [ "${CHOST/-*}" = "i486" -o \ - "${CHOST/-*}" = "i586" -o \ - "${CHOST/-*}" = "i686" ] - then - return 0 - fi - ;; - "alpha"|"amd64"|"ia64"|"mips"|"ppc") - return 0 - ;; - *) - return 1 - ;; - esac - fi - - return 1 -} - -glibc_setup() { - # Check if we are going to downgrade, we don't like that - #local old_version - # - #old_version="`best_version glibc`" - #old_version="${old_version/sys-libs\/glibc-/}" - # - #if [ "$old_version" ]; then - # The vercmp fails if this ebuild is -r[0-9..] Please fix. - # if [ `python -c "import portage; print int(portage.vercmp(\"${PV}\",\"$old_version\"))"` -lt 0 ]; then - # if [ "${FORCE_DOWNGRADE}" ]; then - # ewarn "downgrading glibc, still not recommended, but we'll do as you wish" - # else - # eerror "Downgrading glibc is not supported and we strongly recommend that" - # eerror "you don't do it as it WILL break all applications compiled against" - # eerror "the new version (most likely including python and portage)." - # eerror "If you are REALLY sure that you want to do it set " - # eerror " FORCE_DOWNGRADE=1" - # eerror "when you try it again." - # die "glibc downgrade" - # fi - # fi - #fi - - # We need gcc 3.2 or later ... - if [ "`gcc-major-version`" -ne "3" -o "`gcc-minor-version`" -lt "2" ] - then - echo - eerror "As of glibc-2.3, gcc-3.2 or later is needed" - eerror "for the build to succeed." - die "GCC too old" - fi - - echo - - if use_nptl - then - # The use_nptl should have already taken care of kernel version, - # arch and CHOST, so now just check if we can find suitable kernel - # source tree or headers .... - einfon "Checking for sufficient version kernel headers ... " - if ! get_KHV "`KV_to_int ${MIN_NPTL_KV}`" &> /dev/null - then - echo "no" - echo - eerror "Could not find a kernel source tree or headers with" - eerror "version ${MIN_NPTL_KV} or later! Please correct this" - eerror "and try again." - die "Insufficient kernel headers present!" - else - echo "yes" - fi - fi - - if [ "$(KV_to_int $(uname -r))" -gt "`KV_to_int '2.5.68'`" ] - then - local KERNEL_HEADERS="$(get_KHV "`KV_to_int ${MIN_NPTL_KV}`")" - - einfon "Checking kernel headers for broken sysctl.h ... " - if ! gcc -I"${KERNEL_HEADERS}" \ - -c ${FILESDIR}/test-sysctl_h.c -o ${T}/test1.o &> /dev/null - then - echo "yes" - echo - eerror "Your version of:" - echo - eerror " ${KERNEL_HEADERS}/linux/sysctl.h" - echo - eerror "is broken (from a user space perspective). Please apply" - eerror "the following patch:" - echo - eerror "*******************************************************" - cat ${FILESDIR}/fix-sysctl_h.patch - eerror "*******************************************************" - echo - einfo "To fix, just do this:" - einfo "cd ${KERNEL_HEADERS}/linux/" - einfo "patch -p3 < ${FILESDIR}/fix-sysctl_h.patch" - echo - die "Broken linux/sysctl.h header included in kernel sources!" - else - echo "no" - fi - fi - - if use_nptl - then - einfon "Checking gcc for __thread support ... " - if ! gcc -c ${FILESDIR}/test-__thread.c -o ${T}/test2.o &> /dev/null - then - echo "no" - echo - eerror "Could not find a gcc that supports the __thread directive!" - eerror "please update to gcc-3.2.2-r1 or later, and try again." - die "No __thread support in gcc!" - else - echo "yes" - fi - - elif use nptl &> /dev/null - then - echo - # Just tell the user not to expect too much ... - ewarn "You have \"nptl\" in your USE, but your kernel version or" - ewarn "architecture does not support it!" - fi - - echo -} - -src_unpack() { - - local LOCAL_P="${PN}-${MY_PV}" - - # we only need to check this one time. Bug #61856 - glibc_setup - - unpack glibc-${MY_PV}.tar.bz2 - - # Extract pre-made man pages. Otherwise we need perl, which is a no-no. - mkdir -p ${S}/man; cd ${S}/man - use_nptl || tar xjf ${FILESDIR}/glibc-manpages-${MY_PV}.tar.bz2 - - cd ${S} - # Extract our threads package ... - if ! use_nptl && [ -z "${BRANCH_UPDATE}" ] - then - unpack glibc-linuxthreads-${MY_PV}.tar.bz2 - fi - - if [ -n "${BRANCH_UPDATE}" ] - then - epatch ${DISTDIR}/${PN}-2.3.3-branch-update-${BRANCH_UPDATE}.patch.bz2 - fi - - if use_nptl - then - epatch ${FILESDIR}/2.3.2/${LOCAL_P}-redhat-nptl-fixes.patch - else - epatch ${FILESDIR}/2.3.2/${LOCAL_P}-redhat-linuxthreads-fixes.patch - fi - - epatch ${FILESDIR}/glibc-sec-hotfix-20040804.patch - - # To circumvent problems with propolice __guard and - # __guard_setup__stack_smash_handler - # - # http://www.gentoo.org/proj/en/hardened/etdyn-ssp.xml - if [ "${ARCH}" != "hppa" -a "${ARCH}" != "hppa64" ] - then - cd ${S} - epatch ${FILESDIR}/2.3.3/${LOCAL_P}-propolice-guard-functions-v3.patch - cp ${FILESDIR}/2.3.3/ssp.c ${S}/sysdeps/unix/sysv/linux || \ - die "failed to copy ssp.c to ${S}/sysdeps/unix/sysv/linux/" - fi - - # sparc fails when building the components for the normal crt1.o - # with -K PIC automatically via hardened PIE and SSP specs files - if use sparc && use hardened - then - einfo "adding crt1.o bugfix for hardened gcc on sparc glibc" - sed -i "s|CPPFLAGS += -DHAVE_INITFINI|CPPFLAGS += -DHAVE_INITFINI -fno-pie -fno-PIE|" \ - "${WORKDIR}/glibc-2.3.2/csu/Makefile" - - # check if it worked - grep -q "CPPFLAGS += -DHAVE_INITFINI -fno-pie -fno-PIE" \ - "${WORKDIR}/glibc-2.3.2/csu/Makefile" - - if [ $? -ne 0 ] - then - eerror "sed failure: could not add sparc crt1.o PIC bugfix" - exit 1 - fi - fi - - # patch this regardless of architecture, although it's ssp-related - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-frandom-detect.patch - - # - # *** PaX related patches starts here *** - # - - # localedef contains nested function trampolines, which trigger - # segfaults under PaX -solar - # Debian Bug (#231438, #198099) - epatch ${FILESDIR}/2.3.3/glibc-2.3.3-localedef-fix-trampoline.patch - - - # With latest versions of glibc, a lot of apps failed on a PaX enabled - # system with: - # - # cannot enable executable stack as shared object requires: Permission denied - # - # This is due to PaX 'exec-protecting' the stack, and ld.so then trying - # to make the stack executable due to some libraries not containing the - # PT_GNU_STACK section. Bug #32960. (12 Nov 2003). - cd ${S}; epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-dl_execstack-PaX-support.patch - - # Program header support for PaX. - cd ${S}; epatch ${FILESDIR}/2.3.3/${PN}-2.3.3_pre20040117-pt_pax.diff - - # Suppress unresolvable relocation against symbol `main' in Scrt1.o - # can be reproduced with compiling net-dns/bind-9.2.2-r3 using -pie - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3_pre20040117-got-fix.diff - - # - # *** PaX related patches ends here *** - # - - # Fix an assert when running libc.so from commandline, bug #34733. -# cd ${S}; epatch ${FILESDIR}/2.3.2/${PN}-2.3.2-rtld-assert-fix.patch - - # This next patch fixes a test that will timeout due to ReiserFS' slow handling of sparse files -# cd ${S}/io; epatch ${FILESDIR}/glibc-2.2.2-test-lfs-timeout.patch - - # This add back glibc 2.2 compadibility. See bug #8766 and #9586 for more info, - # and also: - # - # http://lists.debian.org/debian-glibc/2002/debian-glibc-200210/msg00093.html - # - # We should think about remoing it in the future after things have settled. - # - # Thanks to Jan Gutter for reporting it. - # - # (26 Oct 2002). - cd ${S}; epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-ctype-compat-v3.patch - - # One more compat issue which breaks sun-jdk-1.3.1. See bug #8766 for more - # info, and also: - # - # http://sources.redhat.com/ml/libc-alpha/2002-04/msg00143.html - # - # Thanks to Jan Gutter for reporting it. - # - # (30 Oct 2002). - cd ${S}; epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-libc_wait-compat.patch - - # One more compat issue ... libc_stack_end is missing from ld.so. - # Got this one from diffing redhat glibc tarball .. would help if - # they used patches and not modified tarball ... - # - # (7 Nov 2002). -# cd ${S}; epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-stack_end-compat.patch - - # The mathinline.h header omits the middle term of a ?: expression. This - # is a gcc extension, but since the ISO standard forbids it, it's a - # GLIBC bug (bug #27142). See also: - # - # http://bugs.gentoo.org/show_bug.cgi?id=27142 - # -# cd ${S}; epatch ${FILESDIR}/2.3.2/${LOCAL_P}-fix-omitted-operand-in-mathinline_h.patch - - # We do not want name_insert() in iconvconfig.c to be defined inside - # write_output() as it causes issues with trampolines/PaX. - cd ${S}; epatch ${FILESDIR}/2.3.2/${LOCAL_P}-iconvconfig-name_insert.patch - - # A few patches only for the MIPS platform. Descriptions of what they - # do can be found in the patch headers. - # thx (11 Jan 2003) - # remove tst-rndseek-mips & ulps-mips patches - if [ "${ARCH}" = "mips" ] - then - cd ${S} - epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-fpu-cw-mips.patch - epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-librt-mips.patch - epatch ${FILESDIR}/2.3.2/${LOCAL_P}-mips-add-n32-n64-sysdep-cancel.patch - epatch ${FILESDIR}/2.3.2/${LOCAL_P}-mips-configure-for-n64-symver.patch - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3_pre20040420-mips-dl-machine-calls.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3_pre20040420-mips-incl-sgidefs.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-addabi.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-syscall.h.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-semtimedop.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-sysify.diff -##### epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-n32n64regs.diff - fi - - if [ "${ARCH}" = "alpha" ] - then - cd ${S} - # Fix compatability with compaq compilers by ifdef'ing out some - # 2.3.2 additions. - # (14 Jun 2003). - epatch ${FILESDIR}/2.3.2/${LOCAL_P}-decc-compaq.patch - - # Fix compilation with >=gcc-3.2.3 (01 Nov 2003 agriffis) -# epatch ${FILESDIR}/2.3.2/${LOCAL_P}-alpha-pwrite.patch - fi - - if [ "${ARCH}" = "amd64" ] - then - cd ${S}; epatch ${FILESDIR}/2.3.2/${LOCAL_P}-amd64-nomultilib.patch - fi - - if [ "${ARCH}" = "ia64" ] - then - # The basically problem is glibc doesn't store information about - # what the kernel interface is so that it can't efficiently set up - # parameters for system calls. This patch from H.J. Lu fixes it: - # - # http://sources.redhat.com/ml/libc-alpha/2003-09/msg00165.html - # - #cd ${S}; epatch ${FILESDIR}/2.3.2/${LOCAL_P}-ia64-LOAD_ARGS-fixup.patch - : - fi - - if [ "${ARCH}" = "hppa" ] - then - local x= - - cd ${WORKDIR} - unpack ${LOCAL_P}-hppa-patches-p1.tar.bz2 - cd ${S} - epatch "${FILESDIR}"/2.3.4/hppa-no-pie.patch - EPATCH_EXCLUDE="0[123459]0* 055* 1[2379]0* 200* 230*" - for x in ${EPATCH_EXCLUDE} - do - rm -f ${WORKDIR}/${LOCAL_P}-hppa-patches/${x} - done - for x in ${WORKDIR}/${LOCAL_P}-hppa-patches/* - do - epatch ${x} - done - epatch ${FILESDIR}/2.3.1/glibc23-07-hppa-atomicity.dpatch - fi - - cd ${S} - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-hardened-sysdep-shared.patch - - # Improved handled temporary files. bug #66358 - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-tempfile.patch - - # Fix permissions on some of the scripts - chmod u+x ${S}/scripts/*.sh -} - -setup_flags() { - # Over-zealous CFLAGS can often cause problems. What may work for one person may not - # work for another. To avoid a large influx of bugs relating to failed builds, we - # strip most CFLAGS out to ensure as few problems as possible. - strip-flags - strip-unsupported-flags - - # -freorder-blocks for all but ia64 s390 s390x - use ppc || append-flags "-freorder-blocks" - - # Sparc/Sparc64 support - if use sparc - then - - # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though. - replace-flags "-fcall-used-g7" "" - append-flags "-fcall-used-g6" - - # Sparc64 Only support... - if [ "${PROFILE_ARCH}" = "sparc64" ] - then - - # Get rid of -mcpu options, the CHOST will fix this up - replace-flags "-mcpu=ultrasparc" "" - replace-flags "-mcpu=v9" "" - - # Get rid of flags known to fail - replace-flags "-mvis" "" - - # Setup the CHOST properly to insure "sparcv9" - # This passes -mcpu=ultrasparc -Wa,-Av9a to the compiler - [ "${CHOST}" == "sparc-unknown-linux-gnu" ] && \ - export CHOST="sparcv9-unknown-linux-gnu" - fi - fi - - if [ "`gcc-major-version`" -ge "3" -a "`gcc-minor-version`" -ge "4" ]; then - # broken in 3.4.x - replace-flags -march=pentium-m -mtune=pentium3 - fi - - # We don't want these flags for glibc - filter-flags -fomit-frame-pointer -malign-double - filter-ldflags -pie - - # Lock glibc at -O2 -- linuxthreads needs it and we want to be conservative here - append-flags -O2 - export LDFLAGS="${LDFLAGS//-Wl,--relax}" -} - -src_compile() { - local myconf= - local myconf_nptl= - - setup_flags - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - - use nls || myconf="${myconf} --disable-nls" - - use erandom || myconf="${myconf} --disable-dev-erandom" - - if use_nptl - then - local kernelheaders="$(get_KHV "`KV_to_int ${MIN_NPTL_KV}`")" - - # NTPL and Thread Local Storage support. - myconf="${myconf} --with-tls --with-__thread \ - --enable-add-ons=nptl \ - --enable-kernel=${MIN_NPTL_KV} \ - --with-headers=${kernelheaders}" - else - myconf="${myconf} --without-__thread \ - --enable-add-ons=linuxthreads" - - # If we build for the build system we use the kernel headers from the target - # We also now set it without "build" as well, else it might use the - # current kernel's headers, which might just fail (the linux-headers - # package is usually well tested...) -# ( use build || use sparc ) \ -# && myconf="${myconf} --with-headers=${ROOT}usr/include" - myconf="${myconf} --with-headers=${ROOT}usr/include" - - # If kernel version and headers in ${ROOT}/usr/include are ok, - # then enable --enable-kernel=${MIN_KV} ... - if [ "`get_KV`" -ge "`KV_to_int ${MIN_KV}`" -a \ - -n "$(get_KHV "`KV_to_int ${MIN_KV}`" "${ROOT}/usr/include")" ] - then - myconf="${myconf} --enable-kernel=${MIN_KV}" - else - myconf="${myconf} --enable-kernel=2.2.5" - fi - fi - - # some silly people set LD_RUN_PATH and that breaks things. - # see bug 19043 - unset LD_RUN_PATH - - einfo "Configuring GLIBC..." - rm -rf ${S}/buildhere - mkdir -p ${S}/buildhere - cd ${S}/buildhere - ../configure --build=${CHOST} \ - --host=${CHOST} \ - --with-gd=no \ - --without-cvs \ - --disable-profile \ - --prefix=/usr \ - --mandir=/usr/share/man \ - --infodir=/usr/share/info \ - --libexecdir=/usr/lib/misc \ - ${myconf} || die - - einfo "Building GLIBC..." - cd ${S}/buildhere - make PARALLELMFLAGS="${MAKEOPTS}" || die -# einfo "Doing GLIBC checks..." -# make check -} - -src_install() { - local buildtarget="buildhere" - - setup_flags - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - - einfo "Installing GLIBC..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - install -C ${buildtarget} || die - - # If librt.so is a symlink, change it into linker script (Redhat) - if [ -L "${D}/usr/lib/librt.so" -a "${LIBRT_LINKERSCRIPT}" = "yes" ] - then - local LIBRTSO="`cd ${D}/lib; echo librt.so.*`" - local LIBPTHREADSO="`cd ${D}/lib; echo libpthread.so.*`" - - rm -f ${D}/usr/lib/librt.so - cat > ${D}/usr/lib/librt.so <> ${D}/usr/lib/librt.so - echo "GROUP ( /lib/${LIBPTHREADSO} /lib/${LIBRTSO} )" \ - >> ${D}/usr/lib/librt.so - - for x in ${D}/usr/lib/librt.so.[1-9] - do - [ -L "${x}" ] && rm -f ${x} - done - fi - - if ! use build - then - einfo "Installing Info pages..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - info -C ${buildtarget} || die - - einfo "Installing Locale data..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - localedata/install-locales -C ${buildtarget} || die - - # Compatibility hack: this locale has vanished from glibc, - # but some other programs are still using it. - keepdir /usr/lib/locale/ru_RU/LC_MESSAGES - - einfo "Installing man pages and docs..." - # Install linuxthreads man pages - use_nptl || { - dodir /usr/share/man/man3 - doman ${S}/man/*.3thr - } - - # Install nscd config file - insinto /etc ; doins ${FILESDIR}/nscd.conf - exeinto /etc/init.d ; doexe ${FILESDIR}/nscd - doins "${FILESDIR}"/nsswitch.conf - - dodoc BUGS ChangeLog* CONFORMANCE FAQ INTERFACE \ - NEWS NOTES PROJECTS README* - else - rm -rf ${D}/usr/share ${D}/usr/lib/gconv - - einfo "Installing Timezone data..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - timezone/install-others -C ${buildtarget} || die - fi - - if use pic - then - find ${S}/${buildtarget}/ -name "soinit.os" -exec cp {} ${D}/lib/soinit.o \; - find ${S}/${buildtarget}/ -name "sofini.os" -exec cp {} ${D}/lib/sofini.o \; - find ${S}/${buildtarget}/ -name "*_pic.a" -exec cp {} ${D}/lib \; - find ${S}/${buildtarget}/ -name "*.map" -exec cp {} ${D}/lib \; - for i in ${D}/lib/*.map - do - mv ${i} ${i%.map}_pic.map - done - fi - - # Is this next line actually needed or does the makefile get it right? - # It previously has 0755 perms which was killing things. - fperms 4711 /usr/lib/misc/pt_chown - - # Currently libraries in /usr/lib/gconv do not get loaded if not - # in search path ... -# insinto /etc/env.d -# doins ${FILESDIR}/03glibc - - rm -f ${D}/etc/ld.so.cache - - # Prevent overwriting of the /etc/localtime symlink. We'll handle the - # creation of the "factory" symlink in pkg_postinst(). - rm -f ${D}/etc/localtime - - # Some things want this, notably ash. - dosym /usr/lib/libbsd-compat.a /usr/lib/libbsd.a -} - -pkg_postinst() { - # Correct me if I am wrong here, but my /etc/localtime is a file - # created by zic .... - # I am thinking that it should only be recreated if no /etc/localtime - # exists, or if it is an invalid symlink. - # - # For invalid symlink: - # -f && -e will fail - # -L will succeed - # - if [ ! -e ${ROOT}/etc/localtime ] - then - echo "Please remember to set your timezone using the zic command." - rm -f ${ROOT}/etc/localtime - ln -s ../usr/share/zoneinfo/Factory ${ROOT}/etc/localtime - fi - - if [ -x ${ROOT}/usr/sbin/iconvconfig ] - then - # Generate fastloading iconv module configuration file. - ${ROOT}/usr/sbin/iconvconfig --prefix=${ROOT} - fi - - # Reload init ... - if [ "${ROOT}" = "/" ] - then - /sbin/telinit U &> /dev/null - fi -} - diff --git a/sys-libs/glibc/glibc-2.3.4.20040619-r2.ebuild b/sys-libs/glibc/glibc-2.3.4.20040619-r2.ebuild deleted file mode 100644 index f07110c47341..000000000000 --- a/sys-libs/glibc/glibc-2.3.4.20040619-r2.ebuild +++ /dev/null @@ -1,771 +0,0 @@ -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.4.20040619-r2.ebuild,v 1.21 2006/08/31 20:28:33 vapier Exp $ - -inherit eutils flag-o-matic toolchain-funcs - -# Branch update support. Following will disable: -# BRANCH_UPDATE= -BRANCH_UPDATE="20040619" - - -# Minimum kernel version we support -# (Recent snapshots fails with 2.6.5 and earlier) -MIN_KERNEL_VERSION="2.6.5" - - -if [ -z "${BRANCH_UPDATE}" ]; then - BASE_PV="${NEW_PV}" - NEW_PV="${NEW_PV}" -else - BASE_PV="2.3.2" - NEW_PV="${PV%.*}" -fi - - -S="${WORKDIR}/${PN}-${BASE_PV}" -DESCRIPTION="GNU libc6 (also called glibc2) C library" -HOMEPAGE="http://sources.redhat.com/glibc/" - -HPPA_PATCHES=2004-06-04 - -SRC_URI="http://ftp.gnu.org/gnu/${PN}/${PN}-${BASE_PV}.tar.bz2 - ftp://sources.redhat.com/pub/${PN}/snapshots/${PN}-${BASE_PV}.tar.bz2 - mirror://gentoo/${PN}-manpages-${NEW_PV}.tar.bz2 - hppa? ( http://parisc-linux.org/~carlos/glibc-work/glibc-hppa-patches-${HPPA_PATCHES}.tar.gz )" -if [ -z "${BRANCH_UPDATE}" ]; then - SRC_URI="${SRC_URI} - http://ftp.gnu.org/gnu/${PN}/${PN}-linuxthreads-${BASE_PV}.tar.bz2 - ftp://sources.redhat.com/pub/${PN}/snapshots/${PN}-linuxthreads-${BASE_PV}.tar.bz2" -else - SRC_URI="${SRC_URI} - mirror://gentoo/${PN}-${NEW_PV}-branch-update-${BRANCH_UPDATE}.patch.bz2" -fi - -LICENSE="LGPL-2" -SLOT="2.2" -KEYWORDS="-* ~x86 mips amd64 ~hppa ~ppc ~ia64" -IUSE="build erandom hardened multilib n32 n64 nls nptl pic test userlocales" -RESTRICT="nostrip" # we'll handle stripping ourself #46186 - -# We need new cleanup attribute support from gcc for NPTL among things ... -# We also need linux26-headers if using NPTL. Including kernel headers is -# incredibly unreliable, and this new linux-headers release from plasmaroo -# should work with userspace apps, at least on amd64 and ppc64. -DEPEND=">=sys-devel/gcc-3.2.3-r1 - nptl? ( >=sys-devel/gcc-3.3.1-r1 ) - >=sys-devel/binutils-2.14.90.0.6-r1 - virtual/os-headers - nptl? ( >=sys-kernel/linux-headers-${MIN_KERNEL_VERSION} ) - nls? ( sys-devel/gettext )" -RDEPEND="nls? ( sys-devel/gettext )" - -PROVIDE="virtual/libc" - - -# Theoretical cross-compiler support -[ -z "${CCHOST}" ] && CCHOST="${CHOST}" - -# We need to be able to set alternative headers for -# compiling for non-native platform -# Will also become useful for testing kernel-headers without screwing up -# whole system -[ -z "${ALT_HEADERS}" ] && ALT_HEADERS="${ROOT}/usr/include" - - -setup_flags() { - # Over-zealous CFLAGS can often cause problems. What may work for one person may not - # work for another. To avoid a large influx of bugs relating to failed builds, we - # strip most CFLAGS out to ensure as few problems as possible. - strip-flags - strip-unsupported-flags - - # -freorder-blocks for all but ppc - use ppc || append-flags "-freorder-blocks" - - # Sparc/Sparc64 support - if use sparc; then - # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though. - filter-flags "-fcall-used-g7" - append-flags "-fcall-used-g6" - - # Sparc64 Only support... - if [ "${PROFILE_ARCH}" = "sparc64" ]; then - # Get rid of -mcpu options (the CHOST will fix this up) and flags known to fail - filter-flags "-mcpu=ultrasparc -mcpu=v9 -mvis" - - # Setup the CHOST properly to insure "sparcv9" - # This passes -mcpu=ultrasparc -Wa,-Av9a to the compiler - if [ "${CHOST}" = "sparc-unknown-linux-gnu" ]; then - export CHOST="sparcv9-unknown-linux-gnu" - export CCHOST="sparcv9-unknown-linux-gnu" - fi - fi - fi - - if [ "`gcc-major-version`" -ge "3" -a "`gcc-minor-version`" -ge "4" ]; then - # broken in 3.4.x - replace-flags -march=pentium-m -mtune=pentium3 - fi - - # We don't want these flags for glibc - filter-flags -fomit-frame-pointer -malign-double - filter-ldflags -pie - - # Lock glibc at -O2 -- linuxthreads needs it and we want to be conservative here - append-flags -O2 - export LDFLAGS="${LDFLAGS//-Wl,--relax}" -} - - -check_kheader_version() { - local header="${ALT_HEADERS}/linux/version.h" - - [ -z "$1" ] && return 1 - - if [ -f "${header}" ]; then - local version="`grep 'LINUX_VERSION_CODE' ${header} | \ - sed -e 's:^.*LINUX_VERSION_CODE[[:space:]]*::'`" - - if [ "${version}" -ge "$1" ]; then - return 0 - fi - fi - - return 1 -} - - -check_nptl_support() { - local min_kernel_version="$(KV_to_int "${MIN_KERNEL_VERSION}")" - - echo - - einfon "Checking gcc for __thread support ... " - if ! gcc -c ${FILESDIR}/test-__thread.c -o ${T}/test2.o &> /dev/null; then - echo "no" - echo - eerror "Could not find a gcc that supports the __thread directive!" - eerror "please update to gcc-3.2.2-r1 or later, and try again." - die "No __thread support in gcc!" - else - echo "yes" - fi - - # Building fails on an non-supporting kernel - einfon "Checking kernel version (>=${MIN_KERNEL_VERSION}) ... " - if [ "`get_KV`" -lt "${min_kernel_version}" ]; then - echo "no" - echo - eerror "You need a kernel of at least version ${MIN_KERNEL_VERSION}" - eerror "for NPTL support!" - die "Kernel version too low!" - else - echo "yes" - fi - - # Building fails with too low linux-headers - einfon "Checking linux-headers version (>=${MIN_KERNEL_VERSION}) ... " - if ! check_kheader_version "${min_kernel_version}"; then - echo "no" - echo - eerror "You need linux-headers of at least version ${MIN_KERNEL_VERSION}" - eerror "for NPTL support!" - die "linux-headers version too low!" - else - echo "yes" - fi - - echo -} - - -want_nptl() { - if use nptl; then - # Archs that can use NPTL - if use amd64 || use alpha || use ia64 || use ppc || \ - use ppc64 || use s390 ; then - return 0 - fi - - # Specific x86 CHOSTS that can use NPTL - if use x86; then - case "${CHOST/-*}" in - i486|i586|i686) return 0 ;; - esac - fi - fi - - return 1 -} - - -want_tls() { - # Archs that can use TLS (Thread Local Storage) - if use amd64 || use alpha || use ia64 || use ppc || \ - use ppc64 || use s390 ; then - return 0 - fi - - # Specific x86 CHOSTS that can use TLS - if use x86; then - case "${CHOST/-*}" in - i486|i586|i686) return 0 ;; - esac - - fi - - return 1 -} - - -do_test() { - ATIME=`mount | awk '{ print $3,$6 }' | grep ^\/\ | grep noatime` - if [ "$ATIME" = "" ]; then - cd ${WORKDIR}/build - make check || die - else - ewarn "remounting / without noatime option so that make check" - ewarn "does not fail!" - epause 2 - mount / -o remount,atime - cd ${WORKDIR}/build - make check || die - einfo "remounting / with noatime" - mount / -o remount,noatime - fi -} - - -install_locales() { - unset LANGUAGE LANG LC_ALL - cd ${WORKDIR}/build - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} localedata/install-locales || die - keepdir /usr/lib/locale/ru_RU/LC_MESSAGES -} - - -setup_locales() { - if use !userlocales || use test; then - einfo "test in USE or userlocales not enabled, installing -ALL- locales..." - install_locales || die - elif [ -e /etc/locales.build ]; then - einfo "Installing locales in /etc/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat /etc/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - elif [ -e ${FILESDIR}/locales.build ]; then - einfo "Installing locales in ${FILESDIR}/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat ${FILESDIR}/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - else - einfo "Installing -ALL- locales..." - install_locales || die - fi -} - - -glibc_setup() { - # genone this block of code breaks things. - # Check if we are going to downgrade, we don't like that - #local old_version - - #old_version="`best_version glibc`" - #old_version="${old_version/sys-libs\/glibc-/}" - # - #if [ "$old_version" ]; then - # if [ `python -c "import portage; print int(portage.vercmp(\"${PV}\",\"$old_version\"))"` -lt 0 ]; then - # if [ "${FORCE_DOWNGRADE}" ]; then - # ewarn "downgrading glibc, still not recommended, but we'll do as you wish" - # else - # eerror "Downgrading glibc is not supported and we strongly recommend that" - # eerror "you don't do it as it WILL break all applications compiled against" - # eerror "the new version (most likely including python and portage)." - # eerror "If you are REALLY sure that you want to do it set " - # eerror " FORCE_DOWNGRADE=1" - # eerror "when you try it again." - # die "glibc downgrade" - # fi - # fi - #fi - - # We need gcc 3.2 or later ... - if [ "`gcc-major-version`" -ne "3" -o "`gcc-minor-version`" -lt "2" ]; then - echo - eerror "As of glibc-2.3, gcc-3.2 or later is needed" - eerror "for the build to succeed." - die "GCC too old" - fi - echo - - hasq sandbox $FEATURES && use test && die "sandbox breaks make check. either take test out of USE or set FEATURES=-sandbox" -} - - -do_arch_amd64_patches() { - cd ${S}; - epatch ${FILESDIR}/2.3.2/${PN}-2.3.2-amd64-nomultilib.patch -} - - -do_arch_alpha_patches() { - cd ${S} - - # Fix compatability with compaq compilers by ifdef'ing out some - # 2.3.2 additions. - # (14 Jun 2003). - epatch ${FILESDIR}/2.3.2/${PN}-2.3.2-decc-compaq.patch - - # Fix compilation with >=gcc-3.2.3 (01 Nov 2003 agriffis) -# epatch ${FILESDIR}/2.3.2/${LOCAL_P}-alpha-pwrite.patch -} - - -do_arch_arm_patches() { - cd ${S}; - - # Any needed patches for arm go here - epatch ${FILESDIR}/2.3.4/${PN}-2.3.4-arm-ioperm.patch -} - - -do_arch_hppa_patches() { - einfo "Applying hppa specific path of ${HPPA_PATCHES} ..." - cd ${T} - unpack glibc-hppa-patches-${HPPA_PATCHES}.tar.gz - cd ${S} - epatch "${FILESDIR}"/2.3.4/hppa-no-pie.patch - export EPATCH_OPTS=-p1 - for i in ${T}/glibc-hppa-patches-${HPPA_PATCHES}/*.diff - do - epatch ${i} - done - - use hardened && epatch ${FILESDIR}/2.3.4/glibc-2.3.4-hppa-hardened-disable__init_arrays.patch - -} - - -do_arch_ia64_patches() { - cd ${S}; - - # The basically problem is glibc doesn't store information about - # what the kernel interface is so that it can't efficiently set up - # parameters for system calls. This patch from H.J. Lu fixes it: - # - # http://sources.redhat.com/ml/libc-alpha/2003-09/msg00165.html - -# epatch ${FILESDIR}/2.3.2/${LOCAL_P}-ia64-LOAD_ARGS-fixup.patch -} - - -do_arch_mips_patches() { - cd ${S} - - # A few patches only for the MIPS platform. Descriptions of what they - # do can be found in the patch headers. - # thx (11 Jan 2003) - # remove tst-rndseek-mips & ulps-mips patches - # add n32/n64 patches, remove pread patch - epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-fpu-cw-mips.patch - epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-librt-mips.patch - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3_pre20040420-mips-dl-machine-calls.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3_pre20040420-mips-incl-sgidefs.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-addabi.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-syscall.h.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-semtimedop.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-sysify.diff - - if use n32 || use n64; then - epatch ${FILESDIR}/2.3.4/${PN}-2.3.4-mips-sysdep-cancel.diff - fi - - # Need to install into /lib for n32-only userland for now. - # Propper solution is to make all userland /lib{32|64}-aware. - use multilib || epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-nolib3264.diff -} - - -do_arch_ppc_patches() { - cd ${S}; - # Any needed patches for ppc go here -} - - -do_arch_ppc64_patches() { - cd ${S}; - # Any needed patches for ppc64 go here -} - - -do_arch_s390_patches() { - cd ${S}; - - # Any needed patches for s390 go here -} - - -do_arch_sparc_patches() { - cd ${S}; - - # Any needed patches for sparc go here -} - - -do_arch_x86_patches() { - cd ${S}; - - # Any needed patches for x86 go here -} - - -do_pax_patches() { - cd ${S} - - # localedef contains nested function trampolines, which trigger - # segfaults under PaX -solar - # Debian Bug (#231438, #198099) - epatch ${FILESDIR}/2.3.3/glibc-2.3.3-localedef-fix-trampoline.patch - - # With latest versions of glibc, a lot of apps failed on a PaX enabled - # system with: - # - # cannot enable executable stack as shared object requires: Permission denied - # - # This is due to PaX 'exec-protecting' the stack, and ld.so then trying - # to make the stack executable due to some libraries not containing the - # PT_GNU_STACK section. Bug #32960. (12 Nov 2003). - use mips || epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-dl_execstack-PaX-support.patch - - # Program header support for PaX. - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3_pre20040117-pt_pax.diff - - # Suppress unresolvable relocation against symbol `main' in Scrt1.o - # can be reproduced with compiling net-dns/bind-9.2.2-r3 using -pie - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3_pre20040117-got-fix.diff -} - - -do_hardened_fixes() { - # this patch is needed to compile nptl with a hardened gcc - has_hardened && want_nptl && \ - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-hardened-sysdep-shared.patch -} - - -do_ssp_patches() { - # To circumvent problems with propolice __guard and - # __guard_setup__stack_smash_handler - # - # http://www.gentoo.org/proj/en/hardened/etdyn-ssp.xml - if [ "${ARCH}" != "hppa" ] && [ "${ARCH}" != "hppa64" ]; then - epatch ${FILESDIR}/2.3.3/glibc-2.3.2-propolice-guard-functions-v3.patch - cp ${FILESDIR}/2.3.3/ssp.c ${S}/sysdeps/unix/sysv/linux || \ - die "failed to copy ssp.c to ${S}/sysdeps/unix/sysv/linux/" - fi - - # patch this regardless of architecture, although it's ssp-related - epatch ${FILESDIR}/2.3.3/glibc-2.3.3-frandom-detect.patch -} - - -src_unpack() { - - # we only need to check this one time. Bug #61856 - glibc_setup - - # Check NPTL support _before_ we unpack things to save some time - want_nptl && check_nptl_support - - unpack ${PN}-${BASE_PV}.tar.bz2 - - # Extract pre-made man pages. - # Otherwise we need perl, which is bad (especially for stage1 bootstrap) - mkdir -p ${S}/man - cd ${S}/man - unpack ${PN}-manpages-${NEW_PV}.tar.bz2 - cd ${S} - # Remove all info files, as newer versions have about 10 libc info pages, - # but older release tarballs have about 50, giving us a lot of unneeded - # crap laying around ... - rm -f ${S}/manual/*.info* - - if (! want_nptl) && [ -z "${BRANCH_UPDATE}" ]; then - unpack ${PN}-linuxthreads-${BASE_PV}.tar.bz2 - else - rm -rf ${S}/linuxthreads - fi - - if [ -n "${BRANCH_UPDATE}" ]; then - epatch ${DISTDIR}/${PN}-${NEW_PV}-branch-update-${BRANCH_UPDATE}.patch.bz2 - - # Snapshot date patch - einfo "Patching version to display snapshot date ..." - sed -i -e "s:\(#define RELEASE\).*:\1 \"${BRANCH_UPDATE}\":" version.h - fi - # Version patch - sed -i -e "s:\(#define VERSION\).*:\1 \"${NEW_PV}\":" version.h - - epatch ${FILESDIR}/glibc-sec-hotfix-20040804.patch - - # SSP support in glibc (where it belongs) - do_ssp_patches - - - # PaX-related Patches - do_pax_patches - - # disable binutils -as-needed. <-- this has nothing todo with hardened. - sed -e 's/^have-as-needed.*/have-as-needed = no/' -i ${S}/config.make.in - - # hardened toolchain/relro/nptl/security/etc fixes - do_hardened_fixes - - - # Arch specific patching - use amd64 && do_arch_amd64_patches - use alpha && do_arch_alpha_patches - use arm && do_arch_arm_patches - use hppa && do_arch_hppa_patches - use ia64 && do_arch_ia64_patches - use mips && do_arch_mips_patches - use ppc && do_arch_ppc_patches - use ppc64 && do_arch_ppc64_patches - use s390 && do_arch_s390_patches - use sparc && do_arch_sparc_patches - use x86 && do_arch_x86_patches - - # RH bug #227 - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-ld.so-brk-fix.patch - - # Remaining patches - cd ${S} - - # Improved handled temporary files. bug #66358 - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-tempfile.patch - - # Fix permissions on some of the scripts - chmod u+x ${S}/scripts/*.sh -} - -src_compile() { - setup_flags - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - - use nls || myconf="${myconf} --disable-nls" - use erandom || myconf="${myconf} --disable-dev-erandom" - use hardened && myconf="${myconf} --enable-bind-now" - - if want_nptl && want_tls; then - myconf="${myconf} \ - --enable-add-ons=nptl \ - --with-tls --with-__thread \ - --enable-kernel=2.6.0" - else - myconf="${myconf} --enable-add-ons=linuxthreads --without-__thread" - fi - - # this can be tricky sometimes... if it breaks glibc for you, you should - # add a block in the want_tls logic. if it breaks linuxthreads, but nptl - # works... make sure to add 'use !nptl' to that logic. - want_tls || myconf="${myconf} --without-tls" - want_tls && myconf="${myconf} --with-tls" - - # some silly people set LD_RUN_PATH and that breaks things. - # see bug 19043 - unset LD_RUN_PATH - - einfo "Configuring GLIBC..." - rm -rf ${WORKDIR}/build - mkdir -p ${WORKDIR}/build - cd ${WORKDIR}/build - ${S}/configure \ - --build=${CHOST} \ - --host=${CCHOST} \ - --disable-profile \ - --without-gd \ - --without-cvs \ - --with-headers=${ALT_HEADERS} \ - --prefix=/usr \ - --mandir=/usr/share/man \ - --infodir=/usr/share/info \ - --libexecdir=/usr/lib/misc \ - ${myconf} || die - - einfo "Building GLIBC..." - make PARALLELMFLAGS="${MAKEOPTS}" || die -} - -src_test() { - # This is wrong, but glibc's tests fail bad when screwing - # around with sandbox, so lets just punt it - unset LD_PRELOAD - - cd ${WORKDIR}/build - make check || die "make check failed :(" -} - -src_install() { - setup_flags - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - - cd ${WORKDIR}/build - - einfo "Installing GLIBC..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - install || die - # now, strip everything but the thread libs #46186 - mkdir ${T}/thread-backup - mv ${D}/lib/lib{pthread,thread_db}* ${T}/thread-backup/ - env -uRESTRICT prepallstrip - mv ${T}/thread-backup/* ${D}/lib/ - - # If librt.so is a symlink, change it into linker script (Redhat) - if [ -L "${D}/usr/lib/librt.so" -a "${LIBRT_LINKERSCRIPT}" = "yes" ]; then - local LIBRTSO="`cd ${D}/lib; echo librt.so.*`" - local LIBPTHREADSO="`cd ${D}/lib; echo libpthread.so.*`" - - rm -f ${D}/usr/lib/librt.so - cat > ${D}/usr/lib/librt.so <> ${D}/usr/lib/librt.so - echo "GROUP ( /lib/${LIBPTHREADSO} /lib/${LIBRTSO} )" \ - >> ${D}/usr/lib/librt.so - - for x in ${D}/usr/lib/librt.so.[1-9]; do - [ -L "${x}" ] && rm -f ${x} - done - fi - - if ! use build; then - cd ${WORKDIR}/build - - if ! has noinfo ${FEATURES} ; then - einfo "Installing Info pages..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - info -i - fi - - setup_locales - - einfo "Installing man pages and docs..." - # Install linuxthreads man pages even if nptl is enabled - dodir /usr/share/man/man3 - doman ${S}/man/*.3thr - - # Install nscd config file - insinto /etc ; doins ${FILESDIR}/nscd.conf - exeinto /etc/init.d ; doexe ${FILESDIR}/nscd - doins "${FILESDIR}"/nsswitch.conf - - cd ${S} - dodoc BUGS ChangeLog* CONFORMANCE FAQ INTERFACE \ - NEWS NOTES PROJECTS README* - else - rm -rf ${D}/usr/share ${D}/usr/lib/gconv - - einfo "Installing Timezone data..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - timezone/install-others -C ${WORKDIR}/build || die - fi - - if use pic && ! use amd64 ; then - find ${S}/${buildtarget}/ -name "soinit.os" -exec cp {} ${D}/lib/soinit.o \; - find ${S}/${buildtarget}/ -name "sofini.os" -exec cp {} ${D}/lib/sofini.o \; - find ${S}/${buildtarget}/ -name "*_pic.a" -exec cp {} ${D}/lib \; - find ${S}/${buildtarget}/ -name "*.map" -exec cp {} ${D}/lib \; - - for i in ${D}/lib/*.map; do - mv ${i} ${i%.map}_pic.map - done - fi - - # Is this next line actually needed or does the makefile get it right? - # It previously has 0755 perms which was killing things. - fperms 4711 /usr/lib/misc/pt_chown - - # Currently libraries in /usr/lib/gconv do not get loaded if not - # in search path ... -# insinto /etc/env.d -# doins ${FILESDIR}/03glibc - - rm -f ${D}/etc/ld.so.cache - - # Prevent overwriting of the /etc/localtime symlink. We'll handle the - # creation of the "factory" symlink in pkg_postinst(). - rm -f ${D}/etc/localtime - - # Some things want this, notably ash. - dosym /usr/lib/libbsd-compat.a /usr/lib/libbsd.a - - # This is our new config file for building locales - insinto /etc - doins ${FILESDIR}/locales.build - - if use test; then - local OLD_SANDBOX_ON="${SANDBOX_ON}" - # make check will fail if sandbox is enabled. Do not do it - # globally though, else we might fail to find sandbox violations ... - SANDBOX_ON="0" - do_test - SANDBOX_ON="${OLD_SANDBOX_ON}" - fi -} - -pkg_preinst() { - # Shouldnt need to keep this updated - [[ -e ${ROOT}/etc/locales.build ]] && rm -f "${D}"/etc/locales.build -} - -pkg_postinst() { - # Correct me if I am wrong here, but my /etc/localtime is a file - # created by zic .... - # I am thinking that it should only be recreated if no /etc/localtime - # exists, or if it is an invalid symlink. - # - # For invalid symlink: - # -f && -e will fail - # -L will succeed - # - if [ ! -e "${ROOT}/etc/localtime" ]; then - echo "Please remember to set your timezone using the zic command." - rm -f ${ROOT}/etc/localtime - ln -s ../usr/share/zoneinfo/Factory ${ROOT}/etc/localtime - fi - - if [ -x "${ROOT}/usr/sbin/iconvconfig" ]; then - # Generate fastloading iconv module configuration file. - ${ROOT}/usr/sbin/iconvconfig --prefix=${ROOT} - fi - - if [ ! -e "${ROOT}/ld.so.1" ] && use ppc64 - then - pushd ${ROOT} - cd ${ROOT}/lib - ln -s ld64.so.1 ld.so.1 - popd - fi - - # Reload init ... - if [ "${ROOT}" = "/" ]; then - /sbin/telinit U &> /dev/null - fi -} diff --git a/sys-libs/glibc/glibc-2.3.4.20040808-r1.ebuild b/sys-libs/glibc/glibc-2.3.4.20040808-r1.ebuild deleted file mode 100644 index ec65f1cd4c1b..000000000000 --- a/sys-libs/glibc/glibc-2.3.4.20040808-r1.ebuild +++ /dev/null @@ -1,962 +0,0 @@ -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.4.20040808-r1.ebuild,v 1.56 2006/08/31 20:28:33 vapier Exp $ - -inherit eutils multilib flag-o-matic toolchain-funcs versionator - -# Branch update support. Following will disable: -# BRANCH_UPDATE= -BRANCH_UPDATE="20040808" - -# Minimum kernel version we support -# (Recent snapshots fails with 2.6.5 and earlier) -# also, we do not have a single 2.4 kernel in the tree with backported -# support required to enable nptl. -MIN_KERNEL_VERSION="2.6.5" - -# (very) Theoretical cross-compiler support -export CTARGET=${CTARGET:-${CHOST}} -if [[ ${CTARGET} = ${CHOST} ]] ; then - if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then - export CTARGET=${CATEGORY/cross-} - fi -fi - - -if [ -z "${BRANCH_UPDATE}" ]; then - BASE_PV="${NEW_PV}" - NEW_PV="${NEW_PV}" -else - BASE_PV="2.3.3" - NEW_PV="${PV%.*}" -fi - - -S="${WORKDIR}/${PN}-${BASE_PV}" -DESCRIPTION="GNU libc6 (also called glibc2) C library" -HOMEPAGE="http://sources.redhat.com/glibc/" - -HPPA_PATCHES=2004-08-24 - -SRC_URI="http://dev.gentoo.org/~lv/${PN}-${BASE_PV}.tar.bz2 - http://dev.gentoo.org/~lv/${PN}-manpages-${NEW_PV}.tar.bz2 - http://dev.gentoo.org/~lv/glibc-infopages-${NEW_PV}.tar.bz2 - hppa? ( http://parisc-linux.org/~carlos/glibc-work/glibc-hppa-patches-${HPPA_PATCHES}.tar.gz )" - -[ ! -z "${BRANCH_UPDATE}" ] && SRC_URI="${SRC_URI} - http://dev.gentoo.org/~lv/${PN}-${NEW_PV}-branch-update-${BRANCH_UPDATE}.patch.bz2" - -LICENSE="LGPL-2" -[[ ${CTARGET} != ${CHOST} ]] \ - && SLOT="${CTARGET}-2.2" \ - || SLOT="2.2" -#~sparc: This is only used by the sparc64-multilib PROFILE_ARCH as versions -# after ~2.3.3.20040420 break blackdown-jdk on sparc. -KEYWORDS="x86 amd64 hppa ppc64 ~ppc -mips ~sparc" -IUSE="build erandom hardened multilib n32 nls nptl pic userlocales" -RESTRICT="nostrip multilib-pkg-force" # we'll handle stripping ourself #46186 - -# We need new cleanup attribute support from gcc for NPTL among things ... -# We also need linux26-headers if using NPTL. Including kernel headers is -# incredibly unreliable, and this new linux-headers release from plasmaroo -# should work with userspace apps, at least on amd64 and ppc64. -DEPEND=">=sys-devel/gcc-3.2.3-r1 - nptl? ( >=sys-devel/gcc-3.3.1-r1 ) - >=sys-devel/binutils-2.14.90.0.6-r1 - virtual/os-headers - nptl? ( >=sys-kernel/linux-headers-${MIN_KERNEL_VERSION} ) - nls? ( sys-devel/gettext )" -RDEPEND="nls? ( sys-devel/gettext )" - -PROVIDE="virtual/libc" - -# We need to be able to set alternative headers for -# compiling for non-native platform -# Will also become useful for testing kernel-headers without screwing up -# the whole system. -# note: intentionally undocumented. -alt_headers() { - if [ -z "${ALT_HEADERS}" ] ; then - if [[ ${CTARGET} = ${CHOST} ]] ; then - ALT_HEADERS="${ROOT}/usr/include" - else - ALT_HEADERS="${ROOT}/usr/${CTARGET}/include" - fi - fi - echo "${ALT_HEADERS}" -} -alt_build_headers() { - if [[ -z ${ALT_BUILD_HEADERS} ]] ; then - ALT_BUILD_HEADERS=$(alt_headers) - tc-is-cross-compiler && ALT_BUILD_HEADERS=${ROOT}$(alt_headers) - fi - echo "${ALT_BUILD_HEADERS}" -} -alt_prefix() { - if [[ ${CTARGET} = ${CHOST} ]] ; then - echo /usr - else - echo /usr/${CTARGET} - fi -} -alt_libdir() { - if [[ ${CTARGET} = ${CHOST} ]] ; then - echo /$(get_libdir) - else - echo /usr/${CTARGET}/$(get_libdir) - fi -} - -setup_flags() { - # Over-zealous CFLAGS can often cause problems. What may work for one - # person may not work for another. To avoid a large influx of bugs - # relating to failed builds, we strip most CFLAGS out to ensure as few - # problems as possible. - strip-flags - strip-unsupported-flags - - # -freorder-blocks for all but ppc - use ppc || append-flags "-freorder-blocks" - - # Sparc/Sparc64 support - if use sparc; then - # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though. - filter-flags "-fcall-used-g7" - append-flags "-fcall-used-g6" - - # Sparc64 Only support... - if [ "${PROFILE_ARCH}" = "sparc64" ] && !has_multilib_profile; then - # Get rid of -mcpu options (the CHOST will fix this up) and flags - # known to fail - filter-flags "-mcpu=ultrasparc -mcpu=v9 -mvis" - - # Setup the CHOST properly to insure "sparcv9" - # This passes -mcpu=ultrasparc -Wa,-Av9a to the compiler - if [ "${CHOST}" = "sparc-unknown-linux-gnu" ]; then - CTARGET="sparcv9-unknown-linux-gnu" - CHOST="${CTARGET}" - fi - fi - - if [ "${PROFILE_ARCH}" = "sparc64" ] && has_multilib_profile; then - # We change our CHOST, so set this right here - export CC="$(tc-getCC)" - - # glibc isn't too smart about guessing our flags. It - # will default to -xarch=v9, but assembly in sparc64 glibc - # requires v9a or greater... - if is-flag "-mcpu=ultrasparc3"; then - # Change CHOST to include us3 assembly - if [ "${ABI}" = "sparc32" ]; then - CTARGET="sparcv9b-unknown-linux-gnu" - CHOST="${CTARGET}" - else - CTARGET="sparc64b-unknown-linux-gnu" - CHOST="${CTARGET}" - export CFLAGS_sparc64="$(get_abi_CFLAGS) -Wa,-xarch=v9b" - fi - else - if [ "${ABI}" = "sparc32" ]; then - CTARGET="sparcv9-unknown-linux-gnu" - CHOST="${CTARGET}" - else - CTARGET="sparc64-unknown-linux-gnu" - CHOST="${CTARGET}" - export CFLAGS_sparc64="$(get_abi_CFLAGS) -Wa,-xarch=v9a" - fi - fi - - filter-flags -mvis -m32 -m64 -Wa,-xarch -Wa,-A - fi - fi - - # AMD64 multilib - if use amd64 && has_multilib_profile; then - # We change our CHOST, so set this right here - export CC="$(tc-getCC)" - - if [ "${ABI}" = "amd64" ]; then - CTARGET="x86_64-pc-linux-gnu" - CHOST="${CTARGET}" - else - CTARGET="i686-pc-linux-gnu" - CHOST="${CTARGET}" - fi - - filter-flags -m32 -m64 - fi - - if [ "`gcc-major-version`" -ge "3" -a "`gcc-minor-version`" -ge "4" ]; then - # broken in 3.4.x - replace-flags -march=pentium-m -mtune=pentium3 - fi - - if gcc -v 2>&1 | grep -q 'gcc version 3.[0123]'; then - append-flags -finline-limit=2000 - fi - - # We don't want these flags for glibc - filter-flags -fomit-frame-pointer -malign-double - filter-ldflags -pie - - # Lock glibc at -O2 -- linuxthreads needs it and we want to be - # conservative here - append-flags -O2 -} - - -check_kheader_version() { - local header="$(alt_build_headers)/linux/version.h" - - [ -z "$1" ] && return 1 - - if [ -f "${header}" ]; then - local version="`grep 'LINUX_VERSION_CODE' ${header} | \ - sed -e 's:^.*LINUX_VERSION_CODE[[:space:]]*::'`" - - if [ "${version}" -ge "$1" ]; then - return 0 - fi - fi - - return 1 -} - - -check_nptl_support() { - local min_kernel_version="$(KV_to_int "${MIN_KERNEL_VERSION}")" - - echo - - einfon "Checking gcc for __thread support ... " - if ! gcc -c ${FILESDIR}/test-__thread.c -o ${T}/test2.o &> /dev/null; then - echo "no" - echo - eerror "Could not find a gcc that supports the __thread directive!" - eerror "please update to gcc-3.2.2-r1 or later, and try again." - die "No __thread support in gcc!" - else - echo "yes" - fi - - # Building fails on an non-supporting kernel - einfon "Checking kernel version (>=${MIN_KERNEL_VERSION}) ... " - if [ "`get_KV`" -lt "${min_kernel_version}" ]; then - echo "no" - echo - eerror "You need a kernel of at least version ${MIN_KERNEL_VERSION}" - eerror "for NPTL support!" - die "Kernel version too low!" - else - echo "yes" - fi - - # Building fails with too low linux-headers - einfon "Checking linux-headers version (>=${MIN_KERNEL_VERSION}) ... " - if ! check_kheader_version "${min_kernel_version}"; then - echo "no" - echo - eerror "You need linux-headers of at least version ${MIN_KERNEL_VERSION}" - eerror "for NPTL support!" - die "linux-headers version too low!" - else - echo "yes" - fi - - echo -} - - -want_nptl() { - if use nptl; then - # Archs that can use NPTL - if use amd64 || use ia64 || use ppc || \ - use ppc64 || use s390 ; then - return 0 - fi - - # Specific x86 CHOSTS that can use NPTL - if use x86; then - case "${CHOST/-*}" in - i486|i586|i686) return 0 ;; - esac - fi - fi - - return 1 -} - - -want_tls() { - # Archs that can use TLS (Thread Local Storage) - if use amd64 || use alpha || use ia64 || use ppc || \ - use ppc64 || use s390 || use sparc; then - return 0 - fi - - # Specific x86 CHOSTS that can use TLS - if use x86; then - case "${CHOST/-*}" in - i486|i586|i686) return 0 ;; - esac - - fi - - return 1 -} - - -install_locales() { - unset LANGUAGE LANG LC_ALL - cd ${WORKDIR}/build - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root=${D} localedata/install-locales || die - [[ ${CTARGET} = ${CHOST} ]] && keepdir /usr/lib/locale/ru_RU/LC_MESSAGES -} - - -setup_locales() { - if use !userlocales; then - einfo "userlocales not enabled, installing -ALL- locales..." - install_locales || die - elif [ -e /etc/locales.build ]; then - einfo "Installing locales in /etc/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat /etc/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - elif [ -e ${FILESDIR}/locales.build ]; then - einfo "Installing locales in ${FILESDIR}/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat ${FILESDIR}/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - else - einfo "Installing -ALL- locales..." - install_locales || die - fi -} - - -pkg_setup() { - # We need gcc 3.2 or later ... - if [ "`gcc-major-version`" -ne "3" -o "`gcc-minor-version`" -lt "2" ]; then - echo - eerror "As of glibc-2.3, gcc-3.2 or later is needed" - eerror "for the build to succeed." - die "GCC too old" - fi - echo -} - - -do_arch_alpha_patches() { - [[ $(tc-arch ${CTARGET}) != "alpha" ]] && return 0 - cd ${S} - - # Fix compatability with compaq compilers by ifdef'ing out some - # 2.3.2 additions. - # (14 Jun 2003). - epatch ${FILESDIR}/2.3.2/${PN}-2.3.2-decc-compaq.patch - - # Fix compilation with >=gcc-3.2.3 (01 Nov 2003 agriffis) -# epatch ${FILESDIR}/2.3.2/${LOCAL_P}-alpha-pwrite.patch -} - - -do_arch_amd64_patches() { - [[ $(tc-arch ${CTARGET}) != "amd64" ]] && return 0 - cd ${S}; - - if ! has_multilib_profile; then - # CONF_LIBDIR support - epatch ${FILESDIR}/2.3.4/glibc-gentoo-libdir.patch - sed -i -e "s:@GENTOO_LIBDIR@:$(get_libdir):g" ${S}/sysdeps/unix/sysv/linux/configure - fi - - # fixes compiling with the new binutils on at least amd64 and ia64. - # see http://sources.redhat.com/ml/libc-alpha/2004-08/msg00076.html - # and http://bugs.gentoo.org/show_bug.cgi?id=66396 for more info. - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-res_init.patch -} - - -do_arch_arm_patches() { - [[ $(tc-arch ${CTARGET}) != "arm" ]] && return 0 - cd ${S}; - - # Any needed patches for arm go here - epatch ${FILESDIR}/2.3.4/${PN}-2.3.4-arm-ioperm.patch -} - - -do_arch_hppa_patches() { - [[ $(tc-arch ${CTARGET}) != "hppa" ]] && return 0 - einfo "Applying hppa specific path of ${HPPA_PATCHES} ..." - cd ${T} - unpack glibc-hppa-patches-${HPPA_PATCHES}.tar.gz - cd ${S} - epatch "${FILESDIR}"/2.3.4/hppa-no-pie.patch - export EPATCH_OPTS=-p1 - for i in ${T}/glibc-hppa-patches-${HPPA_PATCHES}/*.diff - do - epatch ${i} - done - - unset EPATCH_OPTS - - use hardened && epatch ${FILESDIR}/2.3.4/glibc-2.3.4-hppa-hardened-disable__init_arrays.patch - -} - - -do_arch_ia64_patches() { - [[ $(tc-arch ${CTARGET}) != "ia64" ]] && return 0 - cd ${S}; - - # The basically problem is glibc doesn't store information about - # what the kernel interface is so that it can't efficiently set up - # parameters for system calls. This patch from H.J. Lu fixes it: - # - # http://sources.redhat.com/ml/libc-alpha/2003-09/msg00165.html - -# epatch ${FILESDIR}/2.3.2/${LOCAL_P}-ia64-LOAD_ARGS-fixup.patch - - - # fixes compiling with the new binutils on at least amd64 and ia64. - # see http://sources.redhat.com/ml/libc-alpha/2004-08/msg00076.html - # and http://bugs.gentoo.org/show_bug.cgi?id=66396 for more info. - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-res_init.patch -} - - -do_arch_mips_patches() { - [[ $(tc-arch ${CTARGET}) != "mips" ]] && return 0 - cd ${S} - - # A few patches only for the MIPS platform. Descriptions of what they - # do can be found in the patch headers. - # thx (11 Jan 2003) - # remove tst-rndseek-mips & ulps-mips patches - # add n32/n64 patches, remove pread patch - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-addabi.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-syscall.h.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-sysify.diff - - # Need to install into /lib for n32-only userland for now. - # Propper solution is to make all userland /lib{32|64}-aware. - has_multilib_profile || use multilib || epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-nolib3264.diff - - # Found this on Google (yay google!) and it fixes glibc not building - # a correct bits/syscall.h from 2.6.x headers. It possibly breaks older - # headers (2.4.x?), so for now, only use it on n32. - use n32 && epatch ${FILESDIR}/2.3.4/glibc-2.3.4-mips-generate-syscall_h.patch -} - - -do_arch_ppc_patches() { - [[ $(tc-arch ${CTARGET}) != "ppc" ]] && return 0 - cd ${S}; - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-getcontext.patch - # Any needed patches for ppc go here -} - - -do_arch_ppc64_patches() { - [[ $(tc-arch ${CTARGET}) != "ppc64" ]] && return 0 - cd ${S}; - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-getcontext.patch - # Any needed patches for ppc64 go here -} - - -do_arch_s390_patches() { - [[ $(tc-arch ${CTARGET}) != "s390" ]] && return 0 - cd ${S}; - - # Any needed patches for s390 go here -} - - -do_arch_sparc_patches() { - [[ $(tc-arch ${CTARGET}) != "sparc" ]] && return 0 - cd ${S}; - - # Any needed patches for sparc go here -} - - -do_arch_x86_patches() { - [[ $(tc-arch ${CTARGET}) != "x86" ]] && return 0 - cd ${S}; - # CONF_LIBDIR support - epatch ${FILESDIR}/2.3.4/glibc-gentoo-libdir.patch - sed -i -e "s:@GENTOO_LIBDIR@:$(get_libdir):g" ${S}/sysdeps/unix/sysv/linux/configure -} - - -do_pax_patches() { - cd ${S} - - # localedef contains nested function trampolines, which trigger - # segfaults under PaX -solar - # Debian Bug (#231438, #198099) - epatch ${FILESDIR}/2.3.3/glibc-2.3.3-localedef-fix-trampoline.patch - - # With latest versions of glibc, a lot of apps failed on a PaX enabled - # system with: - # - # cannot enable executable stack as shared object requires: Permission denied - # - # This is due to PaX 'exec-protecting' the stack, and ld.so then trying - # to make the stack executable due to some libraries not containing the - # PT_GNU_STACK section. Bug #32960. (12 Nov 2003). - use mips || epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-dl_execstack-PaX-support.patch - - # Program header support for PaX. - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3_pre20040117-pt_pax.diff - - # Suppress unresolvable relocation against symbol `main' in Scrt1.o - # can be reproduced with compiling net-dns/bind-9.2.2-r3 using -pie - epatch ${FILESDIR}/2.3.4/glibc-2.3.4.20040808-i386-got-fix.diff -} - - -do_hardened_fixes() { - # this patch is needed to compile nptl with a hardened gcc - has_hardened && want_nptl && \ - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-hardened-sysdep-shared.patch -} - - -do_ssp_patches() { - # To circumvent problems with propolice __guard and - # __guard_setup__stack_smash_handler - # - # http://www.gentoo.org/proj/en/hardened/etdyn-ssp.xml - if use !hppa ; then - epatch ${FILESDIR}/2.3.3/glibc-2.3.2-propolice-guard-functions-v3.patch - cp ${FILESDIR}/2.3.3/ssp.c ${S}/sysdeps/unix/sysv/linux || \ - die "failed to copy ssp.c to ${S}/sysdeps/unix/sysv/linux/" - fi - - # patch this regardless of architecture, although it's ssp-related - epatch ${FILESDIR}/2.3.3/glibc-2.3.3-frandom-detect.patch -} - - -src_unpack() { - # Check NPTL support _before_ we unpack things to save some time - want_nptl && check_nptl_support - - unpack ${PN}-${BASE_PV}.tar.bz2 - - # Extract pre-made man pages. - # Otherwise we need perl, which is bad (especially for stage1 bootstrap) - mkdir -p ${S}/man - cd ${S}/man - unpack ${PN}-manpages-${NEW_PV}.tar.bz2 - cd ${S} - - if [ -n "${BRANCH_UPDATE}" ]; then - epatch ${DISTDIR}/${PN}-${NEW_PV}-branch-update-${BRANCH_UPDATE}.patch.bz2 - - # Snapshot date patch - einfo "Patching version to display snapshot date ..." - sed -i -e "s:\(#define RELEASE\).*:\1 \"${BRANCH_UPDATE}\":" version.h - fi - # Version patch - sed -i -e "s:\(#define VERSION\).*:\1 \"${NEW_PV}\":" version.h - - # pre-generated info pages - unpack glibc-infopages-2.3.4.tar.bz2 - - epatch ${FILESDIR}/glibc-sec-hotfix-20040804.patch - - # SSP support in glibc (where it belongs) - do_ssp_patches - - # PaX-related Patches - do_pax_patches - - # disable binutils -as-needed - sed -e 's/^have-as-needed.*/have-as-needed = no/' -i ${S}/config.make.in - - # Glibc is stupid sometimes, and doesn't realize that with a - # static C-Only gcc, -lgcc_eh doesn't exist. - # http://sources.redhat.com/ml/libc-alpha/2003-09/msg00100.html - echo 'int main(){}' > ${T}/gcc_eh_test.c - if ! $(tc-getCC) ${T}/gcc_eh_test.c -lgcc_eh 2>/dev/null ; then - sed -i -e 's:-lgcc_eh::' Makeconfig || die "sed gcc_eh" - fi - - # hardened toolchain/relro/nptl/security/etc fixes - do_hardened_fixes - - # Arch specific patching - do_arch_alpha_patches - do_arch_amd64_patches - do_arch_arm_patches - do_arch_hppa_patches - do_arch_ia64_patches - do_arch_mips_patches - do_arch_ppc_patches - do_arch_ppc64_patches - do_arch_s390_patches - do_arch_sparc_patches - do_arch_x86_patches - - # Remaining patches - cd ${S} - - # fix for http://sources.redhat.com/bugzilla/show_bug.cgi?id=227 - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-ld.so-brk-fix.patch - - # fix for using nptl's pthread.h with g++ - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-nptl-pthread.h-g++-fix.patch - - # Improved handled temporary files. bug #66358 - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-tempfile.patch - - # Fix permissions on some of the scripts - chmod u+x ${S}/scripts/*.sh -} - - -src_compile() { - # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage - local MLTEST=$(type dyn_unpack) - if has_multilib_profile && [ -z "${OABI}" -a "${MLTEST/set_abi}" = "${MLTEST}" ]; then - OABI="${ABI}" - for ABI in $(get_install_abis); do - export ABI - einfo "Compiling ${ABI} glibc" - src_compile && mv ${WORKDIR}/build ${WORKDIR}/build.${ABI} - done - ABI="${OABI}" - unset OABI - return 0 - fi - unset MLTEST - - setup_flags - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - - use nls || myconf="${myconf} --disable-nls" - use erandom || myconf="${myconf} --disable-dev-erandom" - - if want_nptl && want_tls; then - myconf="${myconf} \ - --enable-add-ons=nptl \ - --with-tls --with-__thread \ - --enable-kernel=2.6.0" - else - myconf="${myconf} --enable-add-ons=linuxthreads --without-__thread" - fi - - # this can be tricky sometimes... if it breaks glibc for you, you should - # add a block in the want_tls logic. if it breaks linuxthreads, but nptl - # works... make sure to add 'use !nptl' to that logic. - want_tls || myconf="${myconf} --without-tls" - want_tls && myconf="${myconf} --with-tls" - - # Who knows if this works :) - [[ -n ${CBUILD} ]] && myconf="${myconf} --build=${CBUILD}" - - # some silly people set LD_RUN_PATH and that breaks things. - # see bug 19043 - unset LD_RUN_PATH - - einfo "Configuring GLIBC..." - rm -rf ${WORKDIR}/build - mkdir -p ${WORKDIR}/build - cd ${WORKDIR}/build - # Pick out the correct location for build headers - ${S}/configure \ - --build=${CHOST} \ - --host=${CTARGET} \ - --disable-profile \ - --without-gd \ - --without-cvs \ - --with-headers=$(alt_build_headers) \ - --prefix=$(alt_prefix) \ - --mandir=$(alt_prefix)/share/man \ - --infodir=$(alt_prefix)/share/info \ - --libexecdir=$(alt_prefix)/lib/misc \ - --enable-bind-now \ - ${myconf} || die - - einfo "Building GLIBC..." - make PARALLELMFLAGS="${MAKEOPTS}" || die -} - -src_test() { - # This is wrong, but glibc's tests fail bad when screwing - # around with sandbox, so lets just punt it - unset LD_PRELOAD - - cd ${WORKDIR}/build - make check || die "make check failed :(" -} - -src_install() { - # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage - local MLTEST=$(type dyn_unpack) - if has_multilib_profile && [ -z "${OABI}" -a "${MLTEST/set_abi}" = "${MLTEST}" ]; then - OABI="${ABI}" - for ABI in $(get_install_abis); do - export ABI - mv ${WORKDIR}/build.${ABI} ${WORKDIR}/build - - # Handle stupid lib32 BS - if use amd64 && [ "${ABI}" = "x86" -a "$(get_libdir)" != "lib" ]; then - OLD_LIBDIR="$(get_libdir)" - LIBDIR_x86="lib" - fi - - src_install && mv ${WORKDIR}/build ${WORKDIR}/build.${ABI} - - # Handle stupid lib32 BS - if use amd64 && [ "${ABI}" = "x86" -a -n "${OLD_LIBDIR}" ]; then - LIBDIR_x86="${OLD_LIBDIR}" - unset OLD_LIBDIR - - mv ${D}/lib ${D}/$(get_libdir) - mv ${D}/usr/lib ${D}/usr/$(get_libdir) - mkdir ${D}/lib - dosym ../$(get_libdir)/ld-linux.so.2 /lib/ld-linux.so.2 - dosed "s:/lib/:/$(get_libdir)/:g" /usr/$(get_libdir)/libc.so /usr/$(get_libdir)/libpthread.so - - rm -rf ${D}/usr/$(get_libdir)/misc ${D}/usr/$(get_libdir)/locale - - for f in ${D}/usr/$(get_libdir)/*.so; do - local basef=$(basename ${f}) - if [ -L ${f} ]; then - local target=$(readlink ${f}) - target=${target/\/lib\//\/$(get_libdir)\/} - rm ${f} - dosym ${target} /usr/$(get_libdir)/${basef} - fi - done - fi - - done - ABI="${OABI}" - unset OABI - return 0 - fi - unset MLTEST - setup_flags - - # Need to dodir first because it might not exist (bad amd64 profiles) - dodir /usr/$(get_libdir) - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - - cd ${WORKDIR}/build - - einfo "Installing GLIBC..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - install || die - if [[ ${CTARGET} != ${CHOST} ]] ; then - # punt all the junk not needed by a cross-compiler - rm -r "${D}"/usr/${CTARGET}/{bin,etc,lib/gconv,sbin,share} - fi - - # now, strip everything but the thread libs #46186 - mkdir -p ${T}/thread-backup - mv ${D}/$(alt_libdir)/lib{pthread,thread_db}* ${T}/thread-backup/ - env -uRESTRICT CHOST=${CTARGET} prepallstrip - - # this directory can be empty in certain cases so || die is wrong - ls ${T}/thread-backup/* 1>/dev/null 2>&1 && mv -f ${T}/thread-backup/* ${D}/$(alt_libdir)/ - - # If librt.so is a symlink, change it into linker script (Redhat) - if [ -L "${D}/usr/$(get_libdir)/librt.so" -a "${LIBRT_LINKERSCRIPT}" = "yes" ]; then - local LIBRTSO="`cd ${D}/$(get_libdir); echo librt.so.*`" - local LIBPTHREADSO="`cd ${D}/$(get_libdir); echo libpthread.so.*`" - - rm -f ${D}/usr/$(get_libdir)/librt.so - cat > ${D}/usr/$(get_libdir)/librt.so <> ${D}/usr/$(get_libdir)/librt.so - echo "GROUP ( /$(get_libdir)/${LIBPTHREADSO} /$(get_libdir)/${LIBRTSO} )" \ - >> ${D}/usr/$(get_libdir)/librt.so - - for x in ${D}/usr/$(get_libdir)/librt.so.[1-9]; do - [ -L "${x}" ] && rm -f ${x} - done - fi - - if use pic && ! use amd64 ; then - find ${S}/${buildtarget}/ -name "soinit.os" -exec cp {} ${D}/lib/soinit.o \; - find ${S}/${buildtarget}/ -name "sofini.os" -exec cp {} ${D}/lib/sofini.o \; - find ${S}/${buildtarget}/ -name "*_pic.a" -exec cp {} ${D}/lib \; - find ${S}/${buildtarget}/ -name "*.map" -exec cp {} ${D}/lib \; - - for i in ${D}/lib/*.map; do - mv ${i} ${i%.map}_pic.map - done - fi - - # We'll take care of the cache ourselves - rm -f ${D}/etc/ld.so.cache - - ################################################################# - # EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY # - [[ ${CTARGET} != ${CHOST} ]] && return 0 - - cd ${WORKDIR}/build - if ! use build ; then - if ! has noinfo ${FEATURES} ; then - einfo "Installing Info pages..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - info -i - fi - - setup_locales - - einfo "Installing man pages and docs..." - # Install linuxthreads man pages even if nptl is enabled - dodir /usr/share/man/man3 - doman ${S}/man/*.3thr - - # Install nscd config file - insinto /etc ; doins ${FILESDIR}/nscd.conf - exeinto /etc/init.d ; doexe ${FILESDIR}/nscd - doins "${FILESDIR}"/nsswitch.conf - - cd ${S} - dodoc BUGS ChangeLog* CONFORMANCE FAQ INTERFACE \ - NEWS NOTES PROJECTS README* - else - rm -rf ${D}/usr/share ${D}/usr/lib/gconv - - einfo "Installing Timezone data..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - timezone/install-others || die - fi - - # Is this next line actually needed or does the makefile get it right? - # It previously has 0755 perms which was killing things. - fperms 4711 /usr/lib/misc/pt_chown - - # Prevent overwriting of the /etc/localtime symlink. We'll handle the - # creation of the "factory" symlink in pkg_postinst(). - rm -f ${D}/etc/localtime - - # Some things want this, notably ash. - dosym libbsd-compat.a /usr/$(get_libdir)/libbsd.a - - # This is our new config file for building locales - insinto /etc - doins ${FILESDIR}/locales.build - - # Handle includes for different ABIs - prep_ml_includes -} - -fix_lib64_symlinks() { - # the original Gentoo/AMD64 devs decided that since 64bit is the native - # bitdepth for AMD64, lib should be used for 64bit libraries. however, - # this ignores the FHS and breaks multilib horribly... especially - # since it wont even work without a lib64 symlink anyways. *rolls eyes* - # see bug 59710 for more information. - # Travis Tilley (08 Aug 2004) - if [ -L ${ROOT}/lib64 ] ; then - ewarn "removing /lib64 symlink and moving lib to lib64..." - ewarn "dont hit ctrl-c until this is done" - addwrite ${ROOT}/ - rm ${ROOT}/lib64 - # now that lib64 is gone, nothing will run without calling ld.so - # directly. luckily the window of brokenness is almost non-existant - /lib/ld-linux-x86-64.so.2 /bin/mv ${ROOT}/lib ${ROOT}/lib64 - # all better :) - ldconfig - ln -s lib64 ${ROOT}/lib - einfo "done! :-)" - einfo "fixed broken lib64/lib symlink in ${ROOT}" - fi - if [ -L ${ROOT}/usr/lib64 ] ; then - addwrite ${ROOT}/usr - rm ${ROOT}/usr/lib64 - mv ${ROOT}/usr/lib ${ROOT}/usr/lib64 - ln -s lib64 ${ROOT}/usr/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr" - fi - if [ -L ${ROOT}/usr/X11R6/lib64 ] ; then - addwrite ${ROOT}/usr/X11R6 - rm ${ROOT}/usr/X11R6/lib64 - mv ${ROOT}/usr/X11R6/lib ${ROOT}/usr/X11R6/lib64 - ln -s lib64 ${ROOT}/usr/X11R6/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr/X11R6" - fi -} - -pkg_preinst() { - # PPC64+others may want to eventually be added to this logic if they - # decide to be multilib compatible and FHS compliant. note that this - # chunk of FHS compliance only applies to 64bit archs where 32bit - # compatibility is a major concern (not IA64, for example). - - # amd64's 2005.0 is the first amd64 profile to not need this code. - # 2005.0 is setup properly, and this is executed as part of the - # 2004.3 -> 2005.0 upgrade script. - # It can be removed after 2004.3 has been purged from portage. - use amd64 && [ "$(get_libdir)" == "lib64" ] && ! has_multilib_profile && fix_lib64_symlinks - - # Shouldnt need to keep this updated - [[ -e ${ROOT}/etc/locales.build ]] && rm -f "${D}"/etc/locales.build -} - -pkg_postinst() { - # Correct me if I am wrong here, but my /etc/localtime is a file - # created by zic .... - # I am thinking that it should only be recreated if no /etc/localtime - # exists, or if it is an invalid symlink. - # - # For invalid symlink: - # -f && -e will fail - # -L will succeed - # - if [ ! -e "${ROOT}/etc/localtime" ]; then - echo "Please remember to set your timezone using the zic command." - rm -f ${ROOT}/etc/localtime - ln -s ../usr/share/zoneinfo/Factory ${ROOT}/etc/localtime - fi - - if [ -x "${ROOT}/usr/sbin/iconvconfig" ]; then - # Generate fastloading iconv module configuration file. - ${ROOT}/usr/sbin/iconvconfig --prefix=${ROOT} - fi - - if [ ! -e "${ROOT}/ld.so.1" ] && use ppc64 - then - pushd ${ROOT} - cd ${ROOT}/lib - ln -s ld64.so.1 ld.so.1 - popd - fi - - # Reload init ... - if [ "${ROOT}" = "/" ]; then - /sbin/telinit U &> /dev/null - fi -} - -must_exist() { - test -e ${D}/${1}/${2} || die "${1}/${2} was not installed" -} diff --git a/sys-libs/glibc/glibc-2.3.4.20041102-r1.ebuild b/sys-libs/glibc/glibc-2.3.4.20041102-r1.ebuild deleted file mode 100644 index 96a59e440802..000000000000 --- a/sys-libs/glibc/glibc-2.3.4.20041102-r1.ebuild +++ /dev/null @@ -1,1152 +0,0 @@ -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.4.20041102-r1.ebuild,v 1.27 2006/08/31 20:28:33 vapier Exp $ - -inherit eutils multilib flag-o-matic toolchain-funcs versionator - -# Branch update support. Following will disable: -# BRANCH_UPDATE= -BRANCH_UPDATE="20041102" - -# Minimum kernel version we support -# (Recent snapshots fails with 2.6.5 and earlier) -# also, we do not have a single 2.4 kernel in the tree with backported -# support required to enable nptl. -MIN_KERNEL_VERSION="2.6.5" - -# (very) Theoretical cross-compiler support -export CTARGET=${CTARGET:-${CHOST}} -if [[ ${CTARGET} = ${CHOST} ]] ; then - if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then - export CTARGET=${CATEGORY/cross-} - fi -fi - - -if [ -z "${BRANCH_UPDATE}" ]; then - BASE_PV="${NEW_PV}" - NEW_PV="${NEW_PV}" -else - BASE_PV="2.3.3" - NEW_PV="${PV%.*}" -fi - - -S="${WORKDIR}/${PN}-${BASE_PV}" -DESCRIPTION="GNU libc6 (also called glibc2) C library" -HOMEPAGE="http://sources.redhat.com/glibc/" - -HPPA_PATCHES=2004-09-30 - -SRC_URI="http://dev.gentoo.org/~lv/${PN}-${BASE_PV}.tar.bz2 - http://dev.gentoo.org/~lv/${PN}-manpages-${NEW_PV}.tar.bz2 - http://dev.gentoo.org/~lv/glibc-infopages-${NEW_PV}.tar.bz2 - hppa? ( http://parisc-linux.org/~carlos/glibc-work/glibc-hppa-patches-${HPPA_PATCHES}.tar.gz )" - -[ ! -z "${BRANCH_UPDATE}" ] && SRC_URI="${SRC_URI} - http://dev.gentoo.org/~lv/${PN}-${NEW_PV}-branch-update-${BRANCH_UPDATE}.patch.bz2" - -LICENSE="LGPL-2" -[[ ${CTARGET} != ${CHOST} ]] \ - && SLOT="${CTARGET}-2.2" \ - || SLOT="2.2" -KEYWORDS="alpha amd64 -hppa ia64 ~mips ppc ppc64 ~sparc x86" -IUSE="build erandom hardened multilib nls nomalloccheck nptl nptlonly pic userlocales selinux" -RESTRICT="nostrip multilib-pkg-force" # we'll handle stripping ourself #46186 - -# We need new cleanup attribute support from gcc for NPTL among things ... -# We also need linux26-headers if using NPTL. Including kernel headers is -# incredibly unreliable, and this new linux-headers release from plasmaroo -# should work with userspace apps, at least on amd64 and ppc64. -DEPEND=">=sys-devel/gcc-3.2.3-r1 - nptl? ( >=sys-devel/gcc-3.3.1-r1 ) - >=sys-devel/binutils-2.14.90.0.6-r1 - virtual/os-headers - nptl? ( >=sys-kernel/linux-headers-${MIN_KERNEL_VERSION} ) - nls? ( sys-devel/gettext ) - selinux? ( !build? ( sys-libs/libselinux ) )" -RDEPEND="nls? ( sys-devel/gettext ) - selinux? ( !build? ( sys-libs/libselinux ) )" - -PROVIDE="virtual/libc" - -# We need to be able to set alternative headers for -# compiling for non-native platform -# Will also become useful for testing kernel-headers without screwing up -# the whole system. -# note: intentionally undocumented. -alt_headers() { - if [ -z "${ALT_HEADERS}" ] ; then - if [[ ${CTARGET} = ${CHOST} ]] ; then - ALT_HEADERS="${ROOT}/usr/include" - else - ALT_HEADERS="${ROOT}/usr/${CTARGET}/include" - fi - fi - echo "${ALT_HEADERS}" -} -alt_build_headers() { - if [[ -z ${ALT_BUILD_HEADERS} ]] ; then - ALT_BUILD_HEADERS=$(alt_headers) - tc-is-cross-compiler && ALT_BUILD_HEADERS=${ROOT}$(alt_headers) - fi - echo "${ALT_BUILD_HEADERS}" -} -alt_prefix() { - if [[ ${CTARGET} = ${CHOST} ]] ; then - echo /usr - else - echo /usr/${CTARGET} - fi -} -alt_libdir() { - if [[ ${CTARGET} = ${CHOST} ]] ; then - echo /$(get_libdir) - else - echo /usr/${CTARGET}/$(get_libdir) - fi -} - -setup_flags() { - # Over-zealous CFLAGS can often cause problems. What may work for one - # person may not work for another. To avoid a large influx of bugs - # relating to failed builds, we strip most CFLAGS out to ensure as few - # problems as possible. - strip-flags - strip-unsupported-flags - - # -freorder-blocks for all but ppc - use ppc || append-flags "-freorder-blocks" - - # Sparc/Sparc64 support - if use sparc; then - # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though. - filter-flags "-fcall-used-g7" - append-flags "-fcall-used-g6" - - # Sparc64 Only support... - if [ "${PROFILE_ARCH}" = "sparc64" ] && !has_multilib_profile; then - # Get rid of -mcpu options (the CHOST will fix this up) and flags - # known to fail - filter-flags "-mcpu=ultrasparc -mcpu=v9 -mvis" - - # Setup the CHOST properly to insure "sparcv9" - # This passes -mcpu=ultrasparc -Wa,-Av9a to the compiler - if [ "${CHOST}" = "sparc-unknown-linux-gnu" ]; then - CTARGET="sparcv9-unknown-linux-gnu" - CHOST="${CTARGET}" - fi - fi - - if [ "${PROFILE_ARCH}" = "sparc64" ] && has_multilib_profile; then - # We change our CHOST, so set this right here - export CC="$(tc-getCC)" - - # glibc isn't too smart about guessing our flags. It - # will default to -xarch=v9, but assembly in sparc64 glibc - # requires v9a or greater... - if is-flag "-mcpu=ultrasparc3"; then - # Change CHOST to include us3 assembly - if [ "${ABI}" = "sparc32" ]; then - CTARGET="sparcv9b-unknown-linux-gnu" - CHOST="${CTARGET}" - else - CTARGET="sparc64b-unknown-linux-gnu" - CHOST="${CTARGET}" - CFLAGS_sparc64="$(get_abi_CFLAGS) -Wa,-xarch=v9b" - fi - else - if [ "${ABI}" = "sparc32" ]; then - CTARGET="sparcv9-unknown-linux-gnu" - CHOST="${CTARGET}" - else - CTARGET="sparc64-unknown-linux-gnu" - CHOST="${CTARGET}" - CFLAGS_sparc64="$(get_abi_CFLAGS) -Wa,-xarch=v9a" - fi - fi - - filter-flags -mvis -m32 -m64 -Wa,-xarch -Wa,-A - fi - fi - - # AMD64 multilib - if use amd64 && has_multilib_profile; then - # We change our CHOST, so set this right here - export CC="$(tc-getCC)" - - if [ "${ABI}" = "amd64" ]; then - CTARGET="x86_64-pc-linux-gnu" - CHOST="${CTARGET}" - else - CTARGET="i686-pc-linux-gnu" - CHOST="${CTARGET}" - fi - - filter-flags -m32 -m64 - fi - - if [ "`gcc-major-version`" -ge "3" -a "`gcc-minor-version`" -ge "4" ]; then - # broken in 3.4.x - replace-flags -march=pentium-m -mtune=pentium3 - fi - - if gcc -v 2>&1 | grep -q 'gcc version 3.[0123]'; then - append-flags -finline-limit=2000 - fi - - # We don't want these flags for glibc - filter-flags -fomit-frame-pointer -malign-double - filter-ldflags -pie - - # Lock glibc at -O2 -- linuxthreads needs it and we want to be - # conservative here - append-flags -O2 -} - - -check_kheader_version() { - local header="$(alt_build_headers)/linux/version.h" - - [ -z "$1" ] && return 1 - - if [ -f "${header}" ]; then - local version="`grep 'LINUX_VERSION_CODE' ${header} | \ - sed -e 's:^.*LINUX_VERSION_CODE[[:space:]]*::'`" - - if [ "${version}" -ge "$1" ]; then - return 0 - fi - fi - - return 1 -} - - -check_nptl_support() { - local min_kernel_version="$(KV_to_int "${MIN_KERNEL_VERSION}")" - - echo - - einfon "Checking gcc for __thread support ... " - if ! gcc -c ${FILESDIR}/test-__thread.c -o ${T}/test2.o &> /dev/null; then - echo "no" - echo - eerror "Could not find a gcc that supports the __thread directive!" - eerror "please update to gcc-3.2.2-r1 or later, and try again." - die "No __thread support in gcc!" - else - echo "yes" - fi - - # Building fails on an non-supporting kernel - einfon "Checking kernel version (>=${MIN_KERNEL_VERSION}) ... " - if [ "`get_KV`" -lt "${min_kernel_version}" ]; then - echo "no" - echo - eerror "You need a kernel of at least version ${MIN_KERNEL_VERSION}" - eerror "for NPTL support!" - die "Kernel version too low!" - else - echo "yes" - fi - - # Building fails with too low linux-headers - einfon "Checking linux-headers version (>=${MIN_KERNEL_VERSION}) ... " - if ! check_kheader_version "${min_kernel_version}"; then - echo "no" - echo - eerror "You need linux-headers of at least version ${MIN_KERNEL_VERSION}" - eerror "for NPTL support!" - die "linux-headers version too low!" - else - echo "yes" - fi - - echo -} - - -want_nptl() { - if use nptl || use nptlonly ; then - # Archs that can use NPTL - if use alpha || use amd64 || use ia64 || use ppc || \ - use ppc64 || use s390 || use sparc; then - return 0 - fi - - # Specific x86 CHOSTS that can use NPTL - if use x86; then - case "${CHOST/-*}" in - i486|i586|i686) return 0 ;; - esac - fi - fi - - return 1 -} - - -want_tls() { - # Archs that can use TLS (Thread Local Storage) - if use amd64 || use alpha || use ia64 || use ppc || \ - use ppc64 || use s390 || use sparc; then - return 0 - fi - - # Specific x86 CHOSTS that can use TLS - if use x86; then - case "${CHOST/-*}" in - i486|i586|i686) return 0 ;; - esac - - fi - - return 1 -} - - -install_locales() { - unset LANGUAGE LANG LC_ALL - cd ${WORKDIR}/${MYMAINBUILDDIR} || die "${WORKDIR}/${MYMAINBUILDDIR}" - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root=${D} localedata/install-locales || die - keepdir /usr/lib/locale/ru_RU/LC_MESSAGES -} - - -setup_locales() { - if use !userlocales ; then - einfo "userlocales not enabled, installing -ALL- locales..." - install_locales || die - elif [ -e /etc/locales.build ]; then - einfo "Installing locales in /etc/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat /etc/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - elif [ -e ${FILESDIR}/locales.build ]; then - einfo "Installing locales in ${FILESDIR}/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat ${FILESDIR}/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - else - einfo "Installing -ALL- locales..." - install_locales || die - fi -} - - -pkg_setup() { - if use nptlonly && use !nptl ; then - eerror "If you want nptlonly, add nptl to your USE too ;p" - die "nptlonly without nptl" - fi - - # give some sort of warning about the nptl logic changes... - if want_nptl && use !nptlonly ; then - ewarn "Warning! Gentoo's GLIBC with NPTL enabled now behaves like the" - ewarn "glibc from almost every other distribution out there. This means" - ewarn "that glibc is compiled -twice-, once with linuxthreads and once" - ewarn "with nptl. The NPTL version is installed to lib/tls and is still" - ewarn "used by default. If you do not need nor want the linuxthreads" - ewarn "fallback, you can disable this behavior by adding nptlonly to" - ewarn "USE to save yourself some compile time." - ebeep - epause - fi -} - - -do_arch_alpha_patches() { - [[ $(tc-arch ${CTARGET}) != "alpha" ]] && return 0 - cd ${S} - - # Fix compatability with compaq compilers by ifdef'ing out some - # 2.3.2 additions. - # (14 Jun 2003). - epatch ${FILESDIR}/2.3.2/${PN}-2.3.2-decc-compaq.patch - - # Fix xstat stuff - epatch ${FILESDIR}/2.3.4/glibc234-alpha-xstat.patch - - # Fix compilation with >=gcc-3.2.3 (01 Nov 2003 agriffis) -# epatch ${FILESDIR}/2.3.2/${LOCAL_P}-alpha-pwrite.patch -} - - -do_arch_amd64_patches() { - [[ $(tc-arch ${CTARGET}) != "amd64" ]] && return 0 - cd ${S} - - if ! has_multilib_profile; then - # CONF_LIBDIR support - epatch ${FILESDIR}/2.3.4/glibc-gentoo-libdir.patch - sed -i -e "s:@GENTOO_LIBDIR@:$(get_libdir):g" ${S}/sysdeps/unix/sysv/linux/configure - fi -} - - -do_arch_arm_patches() { - [[ $(tc-arch ${CTARGET}) != "arm" ]] && return 0 - cd ${S}; - - # Any needed patches for arm go here - epatch ${FILESDIR}/2.3.4/${PN}-2.3.4-arm-ioperm.patch -} - - -do_arch_hppa_patches() { - [[ $(tc-arch ${CTARGET}) != "hppa" ]] && return 0 - einfo "Applying hppa specific path of ${HPPA_PATCHES} ..." - cd ${T} - unpack glibc-hppa-patches-${HPPA_PATCHES}.tar.gz - cd ${S} - epatch "${FILESDIR}"/2.3.4/hppa-no-pie.patch - export EPATCH_OPTS=-p1 - for i in ${T}/glibc-hppa-patches-${HPPA_PATCHES}/*.diff - do - epatch ${i} - done - - unset EPATCH_OPTS - - use hardened && epatch ${FILESDIR}/2.3.4/glibc-2.3.4-hppa-hardened-disable__init_arrays.patch - -} - - -do_arch_ia64_patches() { - [[ $(tc-arch ${CTARGET}) != "ia64" ]] && return 0 - cd ${S}; - - # The basically problem is glibc doesn't store information about - # what the kernel interface is so that it can't efficiently set up - # parameters for system calls. This patch from H.J. Lu fixes it: - # - # http://sources.redhat.com/ml/libc-alpha/2003-09/msg00165.html - -# epatch ${FILESDIR}/2.3.2/${LOCAL_P}-ia64-LOAD_ARGS-fixup.patch -} - - -do_arch_mips_patches() { - [[ $(tc-arch ${CTARGET}) != "mips" ]] && return 0 - cd ${S} - - # A few patches only for the MIPS platform. Descriptions of what they - # do can (probably) be found in the patch headers. - epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-librt-mips.patch - epatch ${FILESDIR}/2.3.1/${PN}-2.3.1-fpu-cw-mips.patch - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-addabi.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-syscall.h.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-sysify.diff - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-semtimedop.diff - epatch ${FILESDIR}/2.3.4/${PN}-2.3.4-mips-update-__throw.patch - epatch ${FILESDIR}/2.3.4/${PN}-2.3.4-mips-prot_grows-undefined.patch - epatch ${FILESDIR}/2.3.4/${PN}-2.3.4-mips-rtld_deepbind-undefined.patch - epatch ${FILESDIR}/2.3.4/${PN}-2.3.4-mips-add-missing-sgidefs_h.patch - - # Need to install into /lib for n32-only userland for now. - # Propper solution is to make all userland /lib{32|64}-aware. - has_multilib_profile || use multilib || epatch ${FILESDIR}/2.3.3/${PN}-2.3.3-mips-nolib3264.diff -} - - -do_arch_ppc_patches() { - [[ $(tc-arch ${CTARGET}) != "ppc" ]] && return 0 - cd ${S}; - # Any needed patches for ppc go here -} - - -do_arch_ppc64_patches() { - [[ $(tc-arch ${CTARGET}) != "ppc64" ]] && return 0 - cd ${S}; - # Any needed patches for ppc64 go here - - # setup lib -- seems like a good place to set this up - ! has_multilib_profile && get_libdir_override lib64 -} - - -do_arch_s390_patches() { - [[ $(tc-arch ${CTARGET}) != "s390" ]] && return 0 - cd ${S}; - - # Any needed patches for s390 go here -} - - -do_arch_sparc_patches() { - [[ $(tc-arch ${CTARGET}) != "sparc" ]] && return 0 - cd ${S}; - - # Any needed patches for sparc go here -} - - -do_arch_x86_patches() { - [[ $(tc-arch ${CTARGET}) != "x86" ]] && return 0 - cd ${S}; - # CONF_LIBDIR support - epatch ${FILESDIR}/2.3.4/glibc-gentoo-libdir.patch - sed -i -e "s:@GENTOO_LIBDIR@:$(get_libdir):g" ${S}/sysdeps/unix/sysv/linux/configure -} - - -do_pax_patches() { - cd ${S} - - # localedef contains nested function trampolines, which trigger - # segfaults under PaX -solar - # Debian Bug (#231438, #198099) - #epatch ${FILESDIR}/2.3.3/glibc-2.3.3-localedef-fix-trampoline.patch - # with the redhat patch included, the above is no longer needed. - - # With latest versions of glibc, a lot of apps failed on a PaX enabled - # system with: - # - # cannot enable executable stack as shared object requires: Permission denied - # - # This is due to PaX 'exec-protecting' the stack, and ld.so then trying - # to make the stack executable due to some libraries not containing the - # PT_GNU_STACK section. Bug #32960. (12 Nov 2003). - use mips || epatch ${FILESDIR}/2.3.4/${PN}-2.3.4-dl_execstack-PaX-support.patch - - # Program header support for PaX. - epatch ${FILESDIR}/2.3.3/${PN}-2.3.3_pre20040117-pt_pax.diff - - # Suppress unresolvable relocation against symbol `main' in Scrt1.o - # can be reproduced with compiling net-dns/bind-9.2.2-r3 using -pie - epatch ${FILESDIR}/2.3.4/glibc-2.3.4.20040808-i386-got-fix.diff -} - - -do_hardened_fixes() { - # this patch is needed to compile nptl with a hardened gcc - has_hardened && want_nptl && \ - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-hardened-sysdep-shared.patch -} - - -do_ssp_patches() { - # To circumvent problems with propolice __guard and - # __guard_setup__stack_smash_handler - # - # http://www.gentoo.org/proj/en/hardened/etdyn-ssp.xml - if use !hppa ; then - epatch ${FILESDIR}/2.3.3/glibc-2.3.2-propolice-guard-functions-v3.patch - cp ${FILESDIR}/2.3.3/ssp.c ${S}/sysdeps/unix/sysv/linux || \ - die "failed to copy ssp.c to ${S}/sysdeps/unix/sysv/linux/" - fi - - # patch this regardless of architecture, although it's ssp-related - epatch ${FILESDIR}/2.3.3/glibc-2.3.3-frandom-detect.patch -} - - -do_fedora_patches() { - pushd ${S} > /dev/null - - # go team ramdom nptl stuff - want_nptl && epatch ${S}/fedora/glibc-nptl-check.patch - - # remove the fedora-branch glibc 2.0 compat stuff. - rm -rf glibc-compat - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-fedora-branch-no-libnoversion.patch - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-fedora-branch-no-force-nontls.patch - - rm -f sysdeps/alpha/alphaev6/memcpy.S - find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \; - touch `find . -name configure` - - # If gcc supports __thread, test it even in --with-tls --without-__thread - # builds. - if echo '__thread int a;' | $GCC -xc - -S -o /dev/null 2>/dev/null; then - sed -i -e 's~0 ||~1 ||~' ./elf/tst-tls10.h ./linuxthreads/tst-tls1.h - fi - - popd > /dev/null -} - -src_unpack() { - # Check NPTL support _before_ we unpack things to save some time - want_nptl && check_nptl_support - - unpack ${PN}-${BASE_PV}.tar.bz2 - - # Extract pre-made man pages. - # Otherwise we need perl, which is bad (especially for stage1 bootstrap) - mkdir -p ${S}/man - cd ${S}/man - unpack ${PN}-manpages-${NEW_PV}.tar.bz2 - cd ${S} - - if [ -n "${BRANCH_UPDATE}" ]; then - epatch ${DISTDIR}/${PN}-${NEW_PV}-branch-update-${BRANCH_UPDATE}.patch.bz2 - - # Snapshot date patch - einfo "Patching version to display snapshot date ..." - sed -i -e "s:\(#define RELEASE\).*:\1 \"${BRANCH_UPDATE}\":" version.h - fi - # Version patch - sed -i -e "s:\(#define VERSION\).*:\1 \"${NEW_PV}\":" version.h - - # pre-generated info pages - unpack glibc-infopages-2.3.4.tar.bz2 - - # redhat stuffs - do_fedora_patches - - # SSP support in glibc (where it belongs) - do_ssp_patches - - # PaX-related Patches - do_pax_patches - - # disable binutils -as-needed - sed -e 's/^have-as-needed.*/have-as-needed = no/' -i ${S}/config.make.in - - # Glibc is stupid sometimes, and doesn't realize that with a - # static C-Only gcc, -lgcc_eh doesn't exist. - # http://sources.redhat.com/ml/libc-alpha/2003-09/msg00100.html - echo 'int main(){}' > ${T}/gcc_eh_test.c - if ! $(tc-getCC) ${T}/gcc_eh_test.c -lgcc_eh 2>/dev/null ; then - sed -i -e 's:-lgcc_eh::' Makeconfig || die "sed gcc_eh" - fi - - # hardened toolchain/relro/nptl/security/etc fixes - do_hardened_fixes - - - # Arch specific patching - do_arch_alpha_patches - do_arch_amd64_patches - do_arch_arm_patches - do_arch_hppa_patches - do_arch_ia64_patches - do_arch_mips_patches - do_arch_ppc_patches - do_arch_ppc64_patches - do_arch_s390_patches - do_arch_sparc_patches - do_arch_x86_patches - - - # Remaining patches - cd ${S} - epatch ${FILESDIR}/2.3.4/glibc-sec-hotfix-20040916.patch - - # multicast DNS aka rendezvous support - # ...patch updated to make mdns optional - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-mdns-resolver-20041102.diff - - # if __OPTIMIZE__ isnt defined, the comparison in this header - # fails. - epatch ${FILESDIR}/2.3.4/glibc-2.3.4-features-header-fix.patch - - # whine whine whine, this patch sets the default for the malloc check - # to 0, disabling it. - use nomalloccheck && epatch ${FILESDIR}/2.3.4/glibc-2.3.4-fedora-branch-nomalloccheck.patch - - # Fix assert in _dl_next_tls_modid-assert (sysdeps/generic/dl-tls.c), - # bug #52374. - epatch ${FILESDIR}/2.3.4/${PN}-2.3.4-fix-_dl_next_tls_modid-assert.patch - - # Fix permissions on some of the scripts - chmod u+x ${S}/scripts/*.sh -} - - -glibc_do_configure() { - local myconf - - setup_flags - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - # silly users - unset LD_RUN_PATH - - # set addons - pushd ${S} > /dev/null - ADDONS=$(echo */configure | sed -e 's!/configure!!g;s!\(linuxthreads\|nptl\|rtkaio\)\( \|$\)!!g;s! \+$!!;s! !,!g;s!^!,!;/^,\*$/d') - popd > /dev/null - - use nls || myconf="${myconf} --disable-nls" - use erandom || myconf="${myconf} --disable-dev-erandom" - - if [ "$1" == "linuxthreads" ] ; then - want_tls && myconf="${myconf} --with-tls --without-__thread" - want_tls || myconf="${myconf} --without-tls --without-__thread" - myconf="${myconf} --enable-add-ons=linuxthreads${ADDONS}" - myconf="${myconf} --enable-kernel=${LT_KERNEL_VERSION:-2.4.1}" - elif [ "$1" == "nptl" ] ; then - want_nptl && myconf="${myconf} --with-tls --with-__thread" - myconf="${myconf} --enable-add-ons=nptl${ADDONS}" - myconf="${myconf} --enable-kernel=${MIN_KERNEL_VERSION}" - else - die "invalid pthread option" - fi - - if ! use build && use selinux; then - myconf="${myconf} --with-selinux" - else - myconf="${myconf} --without-selinux" - fi - - # Who knows if this works :) - [[ -n ${CBUILD} ]] && myconf="${myconf} --build=${CBUILD}" - myconf="${myconf} --without-cvs - --enable-bind-now - --build=${CHOST} - --host=${CTARGET} - --disable-profile - --without-gd - --with-headers=$(alt_build_headers) - --prefix=$(alt_prefix) - --mandir=$(alt_prefix)/share/man - --infodir=$(alt_prefix)/share/info - --libexecdir=$(alt_prefix)/lib/misc - ${EXTRA_ECONF}" - - GBUILDDIR="${WORKDIR}/build-${ABI}-${CTARGET}-$1" - mkdir -p ${GBUILDDIR} - cd ${GBUILDDIR} - einfo "Configuring GLIBC for $1 with: ${myconf}" - ${S}/configure ${myconf} || die "failed to configure glibc" -} - - -src_compile() { - # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage - local MLTEST=$(type dyn_unpack) - if has_multilib_profile && [ -z "${OABI}" -a "${MLTEST/set_abi}" = "${MLTEST}" ]; then - OABI="${ABI}" - for ABI in $(get_install_abis); do - export ABI - einfo "Compiling ${ABI} glibc" - src_compile - done - ABI="${OABI}" - unset OABI - return 0 - fi - unset MLTEST - - ABI=${ABI:=default} - - # rsync got an updated ebuild before an updated multilib.eclass - # and caused bug #80591... this might help someone... - if [ -d /usr/include/gentoo-multilib/default ]; then - export CPATH=/usr/include/gentoo-multilib/default - fi - - # hardened ppc64 parallelization periodically fails so drop to -j1 - if use ppc64 && use hardened; then - MAKEOPTS="${MAKEOPTS} -j1" - fi - - # do the linuxthreads build unless we're using nptlonly - if use !nptlonly ; then - glibc_do_configure linuxthreads - einfo "Building GLIBC with linuxthreads..." - make PARALLELMFLAGS="${MAKEOPTS}" || die - fi - if want_nptl ; then - # ...and then do the optional nptl build - unset LD_ASSUME_KERNEL || : - glibc_do_configure nptl - einfo "Building GLIBC with NPTL..." - make PARALLELMFLAGS="${MAKEOPTS}" || die - fi -} - -src_test() { - # This is wrong, but glibc's tests fail bad when screwing - # around with sandbox, so lets just punt it - unset LD_PRELOAD - - cd ${GBUILDDIR} - make check || die "make check failed :(" -} - -src_install() { - # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage - local MLTEST=$(type dyn_unpack) - if has_multilib_profile && [ -z "${OABI}" -a "${MLTEST/set_abi}" = "${MLTEST}" ]; then - OABI="${ABI}" - for ABI in $(get_install_abis); do - export ABI - - # Handle stupid lib32 BS - if use amd64 && [ "${ABI}" = "x86" -a "$(get_libdir)" != "lib" ]; then - OLD_LIBDIR="$(get_libdir)" - LIBDIR_x86="lib" - fi - - src_install - - # Handle stupid lib32 BS - if use amd64 && [ "${ABI}" = "x86" -a -n "${OLD_LIBDIR}" ]; then - LIBDIR_x86="${OLD_LIBDIR}" - unset OLD_LIBDIR - - mv ${D}/lib ${D}/$(get_libdir) - mv ${D}/usr/lib ${D}/usr/$(get_libdir) - mkdir ${D}/lib - dosym ../$(get_libdir)/ld-linux.so.2 /lib/ld-linux.so.2 - dosed "s:/lib/:/$(get_libdir)/:g" /usr/$(get_libdir)/libc.so /usr/$(get_libdir)/libpthread.so - - rm -rf ${D}/usr/$(get_libdir)/misc ${D}/usr/$(get_libdir)/locale - - for f in ${D}/usr/$(get_libdir)/*.so; do - local basef=$(basename ${f}) - if [ -L ${f} ]; then - local target=$(readlink ${f}) - target=${target/\/lib\//\/$(get_libdir)\/} - rm ${f} - dosym ${target} /usr/$(get_libdir)/${basef} - fi - done - fi - - done - ABI="${OABI}" - unset OABI - return 0 - fi - unset MLTEST - - ABI=${ABI:=default} - - setup_flags - - # Need to dodir first because it might not exist (bad amd64 profiles) - dodir /usr/$(get_libdir) - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - - if use nptlonly ; then - MYMAINBUILDDIR=build-${ABI}-${CTARGET}-nptl - else - MYMAINBUILDDIR=build-${ABI}-${CTARGET}-linuxthreads - fi - - if use !nptlonly ; then - cd ${WORKDIR}/build-${ABI}-${CTARGET}-linuxthreads - einfo "Installing GLIBC with linuxthreads..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - install || die - elif use nptlonly ; then - cd ${WORKDIR}/build-${ABI}-${CTARGET}-nptl - einfo "Installing GLIBC with NPTL..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - install || die - fi - if [[ ${CTARGET} != ${CHOST} ]] ; then - # punt all the junk not needed by a cross-compiler - rm -r "${D}"/usr/${CTARGET}/{bin,etc,lib/gconv,sbin,share} - fi - - if use !nptlonly && want_nptl ; then - einfo "Installing NPTL to $(get_libdir)/tls/..." - cd ${WORKDIR}/build-${ABI}-${CTARGET}-nptl - mkdir -p ${D}/$(get_libdir)/tls/ - - libcsofile=$(basename ${D}/$(get_libdir)/libc-*.so) - cp -a libc.so ${D}/$(get_libdir)/tls/${libcsofile} || die - dosym ${libcsofile} /$(get_libdir)/tls/$(ls libc.so.*) - - libmsofile=$(basename ${D}/$(get_libdir)/libm-*.so) - pushd math > /dev/null - cp -a libm.so ${D}/$(get_libdir)/tls/${libmsofile} || die - dosym ${libmsofile} /$(get_libdir)/tls/$(ls libm.so.*) - popd > /dev/null - - librtsofile=$(basename ${D}/$(get_libdir)/librt-*.so) - pushd rt > /dev/null - cp -a librt.so ${D}/$(get_libdir)/tls/${librtsofile} || die - dosym ${librtsofile} /$(get_libdir)/tls/$(ls librt.so.*) - popd > /dev/null - - libthreaddbsofile=$(basename ${D}/$(get_libdir)/libthread_db-*.so) - pushd nptl_db > /dev/null - cp -a libthread_db.so ${D}/$(get_libdir)/tls/${libthreaddbsofile} || die - dosym ${libthreaddbsofile} /$(get_libdir)/tls/$(ls libthread_db.so.*) - popd > /dev/null - - libpthreadsofile=libpthread-${NEW_PV}.so - cp -a nptl/libpthread.so ${D}/$(get_libdir)/tls/${libpthreadsofile} || die - dosym ${libpthreadsofile} /$(get_libdir)/tls/libpthread.so.0 - - # and now for the static libs - mkdir -p ${D}/usr/$(get_libdir)/nptl - cp -a libc.a nptl/libpthread.a nptl/libpthread_nonshared.a rt/librt.a \ - ${D}/usr/$(get_libdir)/nptl - # linker script crap - sed "s~/$(get_libdir)/~/$(get_libdir)/tls/~" ${D}/usr/$(get_libdir)/libc.so \ - > ${D}/usr/$(get_libdir)/nptl/libc.so - - sed "s~/$(get_libdir)/~/$(get_libdir)/tls/~" ${D}/usr/$(get_libdir)/libpthread.so \ - > ${D}/usr/$(get_libdir)/nptl/libpthread.so - sed -i -e "s~/usr/lib64/~/usr/lib64/nptl/~" ${D}/usr/$(get_libdir)/nptl/libpthread.so - - dosym ../${librtsofile} /usr/$(get_libdir)/nptl/librt.so - - # last but not least... headers. - mkdir -p ${D}/nptl ${D}/usr/include/nptl - make install_root=${D}/nptl install-headers PARALLELMFLAGS="${MAKEOPTS}" - pushd ${D}/nptl/usr/include > /dev/null - for i in `find . -type f`; do - if ! [ -f ${D}/usr/include/$i ] \ - || ! cmp -s $i ${D}/usr/include/$i; then - mkdir -p ${D}/usr/include/nptl/`dirname $i` - cp -a $i ${D}/usr/include/nptl/$i - fi - done - popd > /dev/null - rm -rf ${D}/nptl - fi - - # now, strip everything but the thread libs #46186 - mkdir -p ${T}/thread-backup - mv -f ${D}/$(alt_libdir)/lib{pthread,thread_db}* ${T}/thread-backup/ - if use !nptlonly && want_nptl ; then - mkdir -p ${T}/thread-backup/tls - mv -f ${D}/$(alt_libdir)/tls/lib{pthread,thread_db}* ${T}/thread-backup/tls - fi - env -uRESTRICT CHOST=${CTARGET} prepallstrip - cp -a -- ${T}/thread-backup/* ${D}/$(alt_libdir)/ || die - - # If librt.so is a symlink, change it into linker script (Redhat) - if [ -L "${D}/usr/$(get_libdir)/librt.so" -a "${LIBRT_LINKERSCRIPT}" = "yes" ]; then - local LIBRTSO="`cd ${D}/$(get_libdir); echo librt.so.*`" - local LIBPTHREADSO="`cd ${D}/$(get_libdir); echo libpthread.so.*`" - - rm -f ${D}/usr/$(get_libdir)/librt.so - cat > ${D}/usr/$(get_libdir)/librt.so <> ${D}/usr/$(get_libdir)/librt.so - echo "GROUP ( /$(get_libdir)/${LIBPTHREADSO} /$(get_libdir)/${LIBRTSO} )" \ - >> ${D}/usr/$(get_libdir)/librt.so - - for x in ${D}/usr/$(get_libdir)/librt.so.[1-9]; do - [ -L "${x}" ] && rm -f ${x} - done - fi - - if use pic && ! use amd64 ; then - find ${S}/${buildtarget}/ -name "soinit.os" -exec cp {} ${D}/lib/soinit.o \; - find ${S}/${buildtarget}/ -name "sofini.os" -exec cp {} ${D}/lib/sofini.o \; - find ${S}/${buildtarget}/ -name "*_pic.a" -exec cp {} ${D}/lib \; - find ${S}/${buildtarget}/ -name "*.map" -exec cp {} ${D}/lib \; - - for i in ${D}/lib/*.map; do - mv ${i} ${i%.map}_pic.map - done - fi - - # We'll take care of the cache ourselves - rm -f ${D}/etc/ld.so.cache - - # Some things want this, notably ash. - dosym libbsd-compat.a /usr/$(get_libdir)/libbsd.a - - # Handle includes for different ABIs - prep_ml_includes - - ################################################################# - # EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY # - [[ ${CTARGET} != ${CHOST} ]] && return 0 - - # Everything past this point just needs to be done once... don't waste time building locale files twice... - is_final_abi || return 0 - - cd ${WORKDIR}/${MYMAINBUILDDIR} - if ! use build ; then - if ! has noinfo ${FEATURES} ; then - einfo "Installing Info pages..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - info -i - fi - - setup_locales - - einfo "Installing man pages and docs..." - # Install linuxthreads man pages even if nptl is enabled - dodir /usr/share/man/man3 - doman ${S}/man/*.3thr - - # Install nscd config file - insinto /etc ; doins ${FILESDIR}/nscd.conf - exeinto /etc/init.d ; doexe ${FILESDIR}/nscd - doins "${FILESDIR}"/nsswitch.conf - - cd ${S} - dodoc BUGS ChangeLog* CONFORMANCE FAQ INTERFACE \ - NEWS NOTES PROJECTS README* - else - rm -rf ${D}/usr/share - for dir in $(get_all_libdirs); do - rm -rf ${D}/usr/${dir}/gconv &> /dev/null - done - - einfo "Installing Timezone data..." - make PARALLELMFLAGS="${MAKEOPTS}" \ - install_root=${D} \ - timezone/install-others || die - fi - - # Is this next line actually needed or does the makefile get it right? - # It previously has 0755 perms which was killing things. - fperms 4711 /usr/lib/misc/pt_chown - - # Prevent overwriting of the /etc/localtime symlink. We'll handle the - # creation of the "factory" symlink in pkg_postinst(). - rm -f ${D}/etc/localtime - - insinto /etc - # This is our new config file for building locales - doins ${FILESDIR}/locales.build - # example host.conf with multicast dns disabled by default - doins ${FILESDIR}/2.3.4/host.conf - - # simple test to make sure our new glibc isnt completely broken. - # for now, skip the multilib scenario. also make sure we don't - # test with statically built binaries since they will fail. - [[ ${CBUILD} != ${CHOST} ]] && return 0 - [[ $(get_libdir) != "lib" ]] && return 0 - for x in date env ls true uname ; do - x=$(type -p ${x}) - [[ -z ${x} ]] && continue - striptest=$(file -L ${x} 2>/dev/null) - [[ -z ${striptest} ]] && continue - [[ ${striptest/statically linked} != "${striptest}" ]] && continue - "${D}"/$(get_libdir)/ld-*.so \ - --library-path "${D}"/$(get_libdir) \ - ${x} > /dev/null \ - || die "simple run test (${x}) failed" - done -} - -must_exist() { - test -e ${D}/${1}/${2} || die "${1}/${2} was not installed" -} - -fix_lib64_symlinks() { - # the original Gentoo/AMD64 devs decided that since 64bit is the native - # bitdepth for AMD64, lib should be used for 64bit libraries. however, - # this ignores the FHS and breaks multilib horribly... especially - # since it wont even work without a lib64 symlink anyways. *rolls eyes* - # see bug 59710 for more information. - # Travis Tilley (08 Aug 2004) - if [ -L ${ROOT}/lib64 ] ; then - ewarn "removing /lib64 symlink and moving lib to lib64..." - ewarn "dont hit ctrl-c until this is done" - addwrite ${ROOT}/ - rm ${ROOT}/lib64 - # now that lib64 is gone, nothing will run without calling ld.so - # directly. luckily the window of brokenness is almost non-existant - /lib/ld-linux-x86-64.so.2 /bin/mv ${ROOT}/lib ${ROOT}/lib64 - # all better :) - ldconfig - ln -s lib64 ${ROOT}/lib - einfo "done! :-)" - einfo "fixed broken lib64/lib symlink in ${ROOT}" - fi - if [ -L ${ROOT}/usr/lib64 ] ; then - addwrite ${ROOT}/usr - rm ${ROOT}/usr/lib64 - mv ${ROOT}/usr/lib ${ROOT}/usr/lib64 - ln -s lib64 ${ROOT}/usr/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr" - fi - if [ -L ${ROOT}/usr/X11R6/lib64 ] ; then - addwrite ${ROOT}/usr/X11R6 - rm ${ROOT}/usr/X11R6/lib64 - mv ${ROOT}/usr/X11R6/lib ${ROOT}/usr/X11R6/lib64 - ln -s lib64 ${ROOT}/usr/X11R6/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr/X11R6" - fi -} - -pkg_preinst() { - # PPC64+others may want to eventually be added to this logic if they - # decide to be multilib compatible and FHS compliant. note that this - # chunk of FHS compliance only applies to 64bit archs where 32bit - # compatibility is a major concern (not IA64, for example). - - # amd64's 2005.0 is the first amd64 profile to not need this code. - # 2005.0 is setup properly, and this is executed as part of the - # 2004.3 -> 2005.0 upgrade script. - # It can be removed after 2004.3 has been purged from portage. - use amd64 && [ "$(get_libdir)" == "lib64" ] && ! has_multilib_profile && fix_lib64_symlinks - - # it appears that /lib/tls is sometimes not removed. See bug - # 69258 for more info. - if [[ -d ${ROOT}/$(get_libdir)/tls ]] && use nptlonly ; then - addwrite "${ROOT}"/$(get_libdir)/ - ewarn "nptlonly in USE, removing /${ROOT}/$(get_libdir)/tls..." - rm -r "${ROOT}"/$(get_libdir)/tls || die - fi - - # Shouldnt need to keep this updated - [[ -e ${ROOT}/etc/locales.build ]] && rm -f "${D}"/etc/locales.build -} - -pkg_postinst() { - # Correct me if I am wrong here, but my /etc/localtime is a file - # created by zic .... - # I am thinking that it should only be recreated if no /etc/localtime - # exists, or if it is an invalid symlink. - # - # For invalid symlink: - # -f && -e will fail - # -L will succeed - # - if [ ! -e "${ROOT}/etc/localtime" ]; then - echo "Please remember to set your timezone using the zic command." - rm -f ${ROOT}/etc/localtime - ln -s ../usr/share/zoneinfo/Factory ${ROOT}/etc/localtime - fi - - if [ -x "${ROOT}/usr/sbin/iconvconfig" ]; then - # Generate fastloading iconv module configuration file. - ${ROOT}/usr/sbin/iconvconfig --prefix=${ROOT} - fi - - if [ ! -e "${ROOT}/ld.so.1" ] && use ppc64 - then - pushd ${ROOT} - cd ${ROOT}/lib - ln -s ld64.so.1 ld.so.1 - popd - fi - - # Reload init ... - if [ "${ROOT}" = "/" ]; then - /sbin/telinit U &> /dev/null - fi - - # warn the few multicast-dns-by-default users we've had about the change - # in behavior... - echo - einfo "Gentoo's glibc now disables multicast dns by default in our" - einfo "example host.conf. To re-enable this functionality, simply" - einfo "remove the line that disables it (mdns off)." - echo -} diff --git a/sys-libs/glibc/glibc-2.3.4.20041102-r2.ebuild b/sys-libs/glibc/glibc-2.3.4.20041102-r2.ebuild deleted file mode 100644 index ddd56dcfa7d7..000000000000 --- a/sys-libs/glibc/glibc-2.3.4.20041102-r2.ebuild +++ /dev/null @@ -1,1369 +0,0 @@ -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.4.20041102-r2.ebuild,v 1.16 2006/08/31 20:28:33 vapier Exp $ - -# Here's how the cross-compile logic breaks down ... -# CTARGET - machine that will target the binaries -# CHOST - machine that will host the binaries -# CBUILD - machine that will build the binaries -# If CTARGET != CHOST, it means you want a libc for cross-compiling. -# If CHOST != CBUILD, it means you want to cross-compile the libc. -# CBUILD = CHOST = CTARGET - native build/install -# CBUILD != (CHOST = CTARGET) - cross-compile a native build -# (CBUILD = CHOST) != CTARGET - libc for cross-compiler -# CBUILD != CHOST != CTARGET - cross-compile a libc for a cross-compiler -# For install paths: -# CHOST = CTARGET - install into / -# CHOST != CTARGET - install into /usr/CTARGET/ - -# This version supports only PPC64! -# Other architecture needs addition of patches. -KEYWORDS="-* ppc64" - -BRANCH_UPDATE="20041102" - -# From linuxthreads/man -GLIBC_MANPAGE_VERSION="2.3.4" - -# From manual -GLIBC_INFOPAGE_VERSION="2.3.4" - -# Gentoo patchset -PATCH_VER="1.0" - -# C Stubbs addon (contained in fedora, so ignoring) -#CSTUBS_VER="2.1.2" -#CSTUBS_TARBALL="c_stubs-${CSTUBS_VER}.tar.bz2" -#CSTUBS_URI="mirror://gentoo/${CSTUBS_TARBALL}" - -# Fedora addons (from RHEL's glibc-2.3.4-2.src.rpm) -#FEDORA_VER="20041219T2331" -#FEDORA_TARBALL="glibc-fedora-${FEDORA_VER}.tar.bz2" -#FEDORA_URI="mirror://gentoo/${FEDORA_TARBALL}" - -GENTOO_TOOLCHAIN_BASE_URI="mirror://gentoo" - -### PUNT OUT TO ECLASS?? ### -inherit eutils versionator libtool toolchain-funcs flag-o-matic gnuconfig multilib - -DESCRIPTION="GNU libc6 (also called glibc2) C library" -HOMEPAGE="http://www.gnu.org/software/libc/libc.html" -LICENSE="LGPL-2" - -IUSE="nls pic build nptl nptlonly erandom hardened debug userlocales multilib selinux" - -export CBUILD=${CBUILD:-${CHOST}} -export CTARGET=${CTARGET:-${CHOST}} -if [[ ${CTARGET} == ${CHOST} ]] ; then - if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then - export CTARGET=${CATEGORY/cross-} - fi -fi -if [[ ${CTARGET} == ${CHOST} ]] ; then - PROVIDE="virtual/libc" -fi - -is_crosscompile() { - [[ ${CHOST} != ${CTARGET} ]] -} - -# Don't set this to :-, - allows BRANCH_UPDATE="" -BRANCH_UPDATE=${BRANCH_UPDATE-$(get_version_component_range 4)} - -if [ -z "${BRANCH_UPDATE}" ]; then - GLIBC_RELEASE_VER="$(get_version_component_range 1-3)" - NEW_PV="${GLIBC_RELEASE_VER}" -else - GLIBC_RELEASE_VER="2.3.3" - NEW_PV="$(get_version_component_range 1-3)" - PATCH_GLIBC_VER="$(get_version_component_range 1-4)" -fi - -# (Recent snapshots fails with 2.6.5 and earlier with NPTL) -NPTL_KERNEL_VERSION=${NPTL_KERNEL_VERSION:-"2.6.6"} -LT_KERNEL_VERSION=${LT_KERNEL_VERSION:-"2.4.1"} - -### SRC_URI ### - -# This function handles the basics of setting the SRC_URI for a glibc ebuild. -# To use, set SRC_URI with: -# -# SRC_URI="$(get_glibc_src_uri)" -# -# Other than the variables normally set by portage, this function's behavior -# can be altered by setting the following: -# -# GENTOO_TOOLCHAIN_BASE_URI -# This sets the base URI for all gentoo-specific patch files. Note -# that this variable is only important for a brief period of time, -# before your source files get picked up by mirrors. However, it is -# still highly suggested that you keep files in this location -# available. -# -# BRANCH_UPDATE -# If set, this variable signals that we should be using the main -# release tarball (determined by ebuild version) and applying a -# CVS branch update patch against it. The location of this branch -# update patch is assumed to be in ${GENTOO_TOOLCHAIN_BASE_URI}. -# Just like with SNAPSHOT, this variable is ignored if the ebuild -# has a _pre suffix. -# -# PATCH_VER -# PATCH_GLIBC_VER -# This should be set to the version of the gentoo patch tarball. -# The resulting filename of this tarball will be: -# ${PN}-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2 -# -# GLIBC_MANPAGE_VERSION -# GLIBC_INFOPAGE_VERSION -# The version of glibc for which we will download pages. This will -# default to ${GLIBC_RELEASE_VER}, but we may not want to pre-generate man pages -# for prerelease test ebuilds for example. This allows you to -# continue using pre-generated manpages from the last stable release. -# If set to "none", this will prevent the downloading of manpages, -# which is useful for individual library targets. -# -get_glibc_src_uri() { - # This variable should be set to the devspace of whoever is currently - # maintaining GLIBC. Please dont set this to mirror, that would just - # make the files unavailable until they get mirrored. - local devspace_uri="mirror://gentoo/" - GENTOO_TOOLCHAIN_BASE_URI=${GENTOO_TOOLCHAIN_BASE_URI:-${devspace_uri}} - -# GLIBC_SRC_URI="http://ftp.gnu.org/gnu/glibc/${PN}-${GLIBC_RELEASE_VER}.tar.bz2 -# http://ftp.gnu.org/gnu/glibc/${PN}-linuxthreads-${GLIBC_RELEASE_VER}.tar.bz2 -# http://ftp.gnu.org/gnu/glibc/${PN}-libidn-${GLIBC_RELEASE_VER}.tar.bz2 -# GLIBC_SRC_URI="mirror://gnu/glibc/${PN}-${GLIBC_RELEASE_VER}.tar.bz2 -# mirror://gnu/glibc/${PN}-linuxthreads-${GLIBC_RELEASE_VER}.tar.bz2 -# mirror://gnu/glibc/${PN}-libidn-${GLIBC_RELEASE_VER}.tar.bz2" - GLIBC_SRC_URI="http://dev.gentoo.org/~lv/${PN}-${GLIBC_RELEASE_VER}.tar.bz2" - - if [[ -n ${BRANCH_UPDATE} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/${PN}-${NEW_PV}-branch-update-${BRANCH_UPDATE}.patch.bz2" - fi - - if [[ -n ${PATCH_VER} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/${PN}-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2" - fi - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/${PN}-manpages-${GLIBC_MANPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2" - fi - - if [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/${PN}-infopages-${GLIBC_INFOPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2" - fi - - if [[ -n ${CSTUBS_URI} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} ${CSTUBS_URI}" - fi - - if [[ -n ${FEDORA_URI} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} ${FEDORA_URI}" - fi - - echo "${GLIBC_SRC_URI}" -} - -SRC_URI=$(get_glibc_src_uri) -S=${WORKDIR}/${PN}-${GLIBC_RELEASE_VER} - -### EXPORTED FUNCTIONS ### -toolchain-glibc_src_unpack() { - # Check NPTL support _before_ we unpack things to save some time - want_nptl && check_nptl_support - - unpack ${PN}-${GLIBC_RELEASE_VER}.tar.bz2 - - cd "${S}" - #unpack ${PN}-linuxthreads-${GLIBC_RELEASE_VER}.tar.bz2 - #unpack ${PN}-libidn-${GLIBC_RELEASE_VER}.tar.bz2 - - [[ -n ${CSTUBS_TARBALL} ]] && unpack ${CSTUBS_TARBALL} - [[ -n ${FEDORA_TARBALL} ]] && unpack ${FEDORA_TARBALL} - - if [[ -n ${PATCH_VER} ]] ; then - cd "${WORKDIR}" - unpack ${PN}-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2 - fi - - # XXX: We should do the branchupdate, before extracting the manpages and - # infopages else it does not help much (mtimes change if there is a change - # to them with branchupdate) - if [[ -n ${BRANCH_UPDATE} ]] ; then - cd "${WORKDIR}" - unpack ${PN}-${NEW_PV}-branch-update-${BRANCH_UPDATE}.patch.bz2 - - cd "${S}" - epatch "${WORKDIR}"/${PN}-${NEW_PV}-branch-update-${BRANCH_UPDATE}.patch - - # Snapshot date patch - einfo "Patching version to display snapshot date ..." - sed -i -e "s:\(#define RELEASE\).*:\1 \"${BRANCH_UPDATE}\":" version.h - fi - - # Version patch - sed -i -e "s:\(#define VERSION\).*:\1 \"${NEW_PV}\":" version.h - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - mkdir -p ${S}/man - cd "${S}/man" - unpack ${PN}-manpages-${GLIBC_MANPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2 - cd ${S} - fi - - if [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - cd "${S}" - unpack ${PN}-infopages-${GLIBC_INFOPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2 - fi - - # taken from 2.3.4.20041102-r1.ebuild do_fedora_patches - rm -rf ${S}/glibc-compat - - # XXX: do not package ssp up into tarballs, leave it in FILESDIR - cd "${S}" - cp "${FILESDIR}"/2.3.3/ssp.c sysdeps/unix/sysv/linux/ || die "could not find ssp.c" - #rm -f "${WORKDIR}"/patches/2* - #epatch "${FILESDIR}"/2.3.5/glibc-2.3.5-propolice-guard-functions.patch - #epatch "${FILESDIR}"/2.3.5/glibc-2.3.5-frandom-detect.patch - - want_nptl && epatch ${S}/fedora/glibc-nptl-check.patch - - if [[ -n ${PATCH_VER} ]] ; then - cd "${S}" - EPATCH_MULTI_MSG="Applying Gentoo Glibc Patchset ${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-${PATCH_VER} ..." \ - EPATCH_EXCLUDE=${GLIBC_PATCH_EXCLUDE} \ - EPATCH_SUFFIX="patch" \ - ARCH=$(tc-arch) \ - epatch "${WORKDIR}"/patches - fi -} - -toolchain-glibc_src_compile() { - # Set gconvdir to /usr/$(get_libdir)/gconv on archs with multiple ABIs - local MAKEFLAGS="" - has_multilib_profile && MAKEFLAGS="gconvdir=$(alt_usrlibdir)/gconv" - - echo - for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CFLAGS ; do - einfo " $(printf '%15s' ${v}:) ${!v}" - done - echo - - # -fomit-frame-pointer gets stripped in setup_flags, so we do this - # now to cache the value - want_omitfp - - if want_linuxthreads ; then - glibc_do_configure linuxthreads - einfo "Building GLIBC with linuxthreads..." - make PARALLELMFLAGS="${MAKEOPTS}" ${MAKEFLAGS} || die - fi - if want_nptl ; then - # ... and then do the optional nptl build - unset LD_ASSUME_KERNEL - glibc_do_configure nptl - einfo "Building GLIBC with NPTL..." - make PARALLELMFLAGS="${MAKEOPTS}" ${MAKEFLAGS} || die - fi -} - -toolchain-glibc_src_test() { - # This is wrong, but glibc's tests fail bad when screwing - # around with sandbox, so lets just punt it - unset LD_PRELOAD - - # do the linuxthreads build unless we're using nptlonly - if want_linuxthreads ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-linuxthreads - einfo "Checking GLIBC with linuxthreads..." - make check || die "linuxthreads glibc did not pass make check" - fi - if want_nptl ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - unset LD_ASSUME_KERNEL || : - einfo "Checking GLIBC with NPTL..." - make check || die "nptl glibc did not pass make check" - fi -} - -toolchain-glibc_pkg_preinst() { - # PPC64+others may want to eventually be added to this logic if they - # decide to be multilib compatible and FHS compliant. note that this - # chunk of FHS compliance only applies to 64bit archs where 32bit - # compatibility is a major concern (not IA64, for example). - - # amd64's 2005.0 is the first amd64 profile to not need this code. - # 2005.0 is setup properly, and this is executed as part of the - # 2004.3 -> 2005.0 upgrade script. - # It can be removed after 2004.3 has been purged from portage. - { use amd64 || use ppc64; } && [ "$(get_libdir)" == "lib64" ] && ! has_multilib_profile && fix_lib64_symlinks - - # it appears that /lib/tls is sometimes not removed. See bug - # 69258 for more info. - if [[ -d ${ROOT}/$(alt_libdir)/tls ]] && ! { want_nptl && want_linuxthreads; }; then - addwrite "${ROOT}"/$(alt_libdir)/ - ewarn "nptlonly or -nptl in USE, removing /${ROOT}$(alt_libdir)/tls..." - rm -r "${ROOT}"/$(alt_libdir)/tls || die - fi - - # Shouldnt need to keep this updated - [[ -e ${ROOT}/etc/locales.build ]] && rm -f "${D}"/etc/locales.build -} - -toolchain-glibc_src_install() { - setup_flags - - # Need to dodir first because it might not exist (bad amd64 profiles) - dodir $(alt_usrlibdir) - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - - if want_linuxthreads ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-linuxthreads - einfo "Installing GLIBC ${ABI} with linuxthreads ..." - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root="${D}" \ - install || die - else # nptlonly - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - einfo "Installing GLIBC ${ABI} with NPTL ..." - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root="${D}" \ - install || die - fi - - if is_crosscompile ; then - # Glibc doesn't setup multilib crosscompiled dirs right, but it - # sets up native multilib dirs right, so just do this when we - # crosscompile. - if [[ $(get_libdir) != "lib" && -d ${D}$(alt_prefix)/lib ]] ; then - dodir $(alt_libdir) - mv "${D}"$(alt_prefix)/lib/* "${D}"$(alt_libdir) - fi - - # punt all the junk not needed by a cross-compiler - rm -rf "${D}"$(alt_prefix)/{bin,etc,$(get_libdir)/gconv,sbin,share} - fi - - if want_linuxthreads && want_nptl ; then - einfo "Installing NPTL to $(alt_libdir)/tls/..." - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - mkdir -p "${D}"$(alt_libdir)/tls/ - - libcsofile=$(basename "${D}"$(alt_libdir)/libc-*.so) - cp -a libc.so "${D}"$(alt_libdir)/tls/${libcsofile} || die - dosym ${libcsofile} $(alt_libdir)/tls/$(ls libc.so.*) - - libmsofile=$(basename "${D}"$(alt_libdir)/libm-*.so) - pushd math > /dev/null - cp -a libm.so "${D}"$(alt_libdir)/tls/${libmsofile} || die - dosym ${libmsofile} $(alt_libdir)/tls/$(ls libm.so.*) - popd > /dev/null - - librtsofile=$(basename "${D}"$(alt_libdir)/librt-*.so) - pushd rt > /dev/null - cp -a librt.so "${D}"$(alt_libdir)/tls/${librtsofile} || die - dosym ${librtsofile} $(alt_libdir)/tls/$(ls librt.so.*) - popd > /dev/null - - libthreaddbsofile=$(basename "${D}"$(alt_libdir)/libthread_db-*.so) - pushd nptl_db > /dev/null - cp -a libthread_db.so "${D}"$(alt_libdir)/tls/${libthreaddbsofile} || die - dosym ${libthreaddbsofile} $(alt_libdir)/tls/$(ls libthread_db.so.*) - popd > /dev/null - - libpthreadsofile=libpthread-${GLIBC_RELEASE_VER}.so - cp -a nptl/libpthread.so "${D}"$(alt_libdir)/tls/${libpthreadsofile} || die - dosym ${libpthreadsofile} $(alt_libdir)/tls/libpthread.so.0 - - # and now for the static libs - mkdir -p "${D}"$(alt_usrlibdir)/nptl - cp -a libc.a nptl/libpthread.a nptl/libpthread_nonshared.a rt/librt.a \ - "${D}"$(alt_usrlibdir)/nptl - - # linker script crap - for lib in libc libpthread; do - sed -e "s:$(alt_libdir)/${lib}.so:$(alt_libdir)/tls/${lib}.so:g" \ - -e "s:$(alt_usrlibdir)/${lib}_nonshared.a:$(alt_usrlibdir)/nptl/${lib}_nonshared.a:g" \ - "${D}"$(alt_usrlibdir)/${lib}.so \ - > "${D}"$(alt_usrlibdir)/nptl/${lib}.so - - chmod 755 "${D}"$(alt_usrlibdir)/nptl/${lib}.so - done - - dosym ../librt.so $(alt_usrlibdir)/nptl/librt.so - - # last but not least... headers. - mkdir -p "${D}"/nptl "${D}"$(alt_headers)/nptl - make install_root="${D}"/nptl install-headers PARALLELMFLAGS="${MAKEOPTS} -j1" - pushd "${D}"/nptl/$(alt_headers) > /dev/null - for i in $(find . -type f) ; do - if ! [[ -f ${D}$(alt_headers)/$i ]] \ - || ! cmp -s $i ${D}$(alt_headers)/$i; then - mkdir -p ${D}$(alt_headers)/nptl/`dirname $i` - cp -a $i ${D}$(alt_headers)/nptl/$i - fi - done - popd > /dev/null - rm -rf ${D}/nptl - fi - - # now, strip everything but the thread libs #46186 - mkdir -p ${T}/thread-backup - mv -f ${D}$(alt_libdir)/lib{pthread,thread_db}* ${T}/thread-backup/ - if want_linuxthreads && want_nptl ; then - mkdir -p ${T}/thread-backup/tls - mv -f ${D}$(alt_libdir)/tls/lib{pthread,thread_db}* ${T}/thread-backup/tls - fi - env -uRESTRICT CHOST=${CTARGET} prepallstrip - cp -a -- ${T}/thread-backup/* ${D}$(alt_libdir)/ || die - - if use pic && [[ $(tc-arch) != "amd64" ]] ; then - find ${S}/${buildtarget}/ -name "soinit.os" -exec cp {} ${D}$(alt_libdir)/soinit.o \; - find ${S}/${buildtarget}/ -name "sofini.os" -exec cp {} ${D}$(alt_libdir)/sofini.o \; - find ${S}/${buildtarget}/ -name "*_pic.a" -exec cp {} ${D}$(alt_libdir) \; - find ${S}/${buildtarget}/ -name "*.map" -exec cp {} ${D}$(alt_libdir) \; - - for i in ${D}$(alt_libdir)/*.map; do - mv ${i} ${i%.map}_pic.map - done - fi - - # We'll take care of the cache ourselves - rm -f ${D}/etc/ld.so.cache - - # Some things want this, notably ash. - dosym libbsd-compat.a $(alt_usrlibdir)/libbsd.a - - # Handle includes for different ABIs - prep_ml_includes $(alt_headers) - - ################################################################# - # EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY # - # Make sure we install the sys-include symlink so that when - # we build a 2nd stage cross-compiler, gcc finds the target - # system headers correctly. See gcc/doc/gccinstall.info - if is_crosscompile ; then - dosym include $(alt_prefix)/sys-include - return 0 - fi - - # Everything past this point just needs to be done once... don't waste time building locale files twice... - is_final_abi || return 0 - - if want_linuxthreads ; then - MYMAINBUILDDIR=build-${ABI}-${CTARGET}-linuxthreads - else - MYMAINBUILDDIR=build-${ABI}-${CTARGET}-nptl - fi - cd "${WORKDIR}"/${MYMAINBUILDDIR} - if ! use build ; then - if ! has noinfo ${FEATURES} && [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - einfo "Installing info pages..." - - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root=${D} \ - info -i - fi - - setup_locales - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - einfo "Installing man pages..." - - # Install linuxthreads man pages even if nptl is enabled - cd "${WORKDIR}"/man - doman *.3thr - fi - - # Install nscd config file - insinto /etc - doins ${FILESDIR}/nscd.conf - doins "${FILESDIR}"/nsswitch.conf - - doinitd "${FILESDIR}"/nscd - - cd ${S} - dodoc BUGS ChangeLog* CONFORMANCE FAQ INTERFACE NEWS NOTES PROJECTS README* - else - rm -rf ${D}/usr/share - for dir in $(get_all_libdirs); do - rm -rf ${D}/usr/${dir}/gconv &> /dev/null - done - - einfo "Installing Timezone data..." - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root=${D} \ - timezone/install-others || die - fi - - # Is this next line actually needed or does the makefile get it right? - # It previously has 0755 perms which was killing things. - fperms 4711 $(alt_prefix)/lib/misc/glibc/pt_chown - - # Prevent overwriting of the /etc/localtime symlink. We'll handle the - # creation of the "factory" symlink in pkg_postinst(). - rm -f ${D}/etc/localtime - - insinto /etc - # This is our new config file for building locales - doins ${FILESDIR}/locales.build - # example host.conf with multicast dns disabled by default - doins ${FILESDIR}/2.3.4/host.conf - - # simple test to make sure our new glibc isnt completely broken. - # for now, skip the multilib scenario. also make sure we don't - # test with statically built binaries since they will fail. - [[ ${CBUILD} != ${CHOST} ]] && return 0 - [[ $(get_libdir) != "lib" ]] && return 0 - for x in date env ls true uname ; do - x=$(type -p ${x}) - [[ -z ${x} ]] && continue - striptest=$(file -L ${x} 2>/dev/null) - [[ -z ${striptest} ]] && continue - [[ ${striptest/statically linked} != "${striptest}" ]] && continue - "${D}"/$(get_libdir)/ld-*.so \ - --library-path "${D}"/$(get_libdir) \ - ${x} > /dev/null \ - || die "simple run test (${x}) failed" - done -} - -toolchain-glibc_pkg_postinst() { - # Mixing nptlonly and -nptlonly glibc can prove dangerous if libpthread - # isn't removed in unmerge which happens sometimes. See bug #87671 - if ! is_crosscompile && want_linuxthreads ; then - for libdir in $(get_all_libdirs) ; do - for f in ${ROOT}/${libdir}/libpthread-2.* ${ROOT}/${libdir}/libpthread-0.6* ; do - if [[ -f ${f} ]] ; then - rm -f ${f} - ldconfig - fi - done - done - fi - - # Correct me if I am wrong here, but my /etc/localtime is a file - # created by zic .... - # I am thinking that it should only be recreated if no /etc/localtime - # exists, or if it is an invalid symlink. - # - # For invalid symlink: - # -f && -e will fail - # -L will succeed - # - if [ ! -e "${ROOT}/etc/localtime" ] ; then - echo "Please remember to set your timezone using the zic command." - rm -f ${ROOT}/etc/localtime - ln -s ../usr/share/zoneinfo/Factory ${ROOT}/etc/localtime - fi - - if ! is_crosscompile && [ -x "${ROOT}/usr/sbin/iconvconfig" ] ; then - # Generate fastloading iconv module configuration file. - ${ROOT}/usr/sbin/iconvconfig --prefix=${ROOT} - fi - - if [ ! -e "${ROOT}/lib/ld.so.1" ] && use ppc64 && ! has_multilib_profile ; then - ## SHOULDN'T THIS BE lib64?? - ln -s ld64.so.1 ${ROOT}/lib/ld.so.1 - fi - - # Reload init ... - if ! is_crosscompile && [ "${ROOT}" = "/" ] ; then - /sbin/telinit U &> /dev/null - fi - - # warn the few multicast-dns-by-default users we've had about the change - # in behavior... - echo - einfo "Gentoo's glibc now disables multicast dns by default in our" - einfo "example host.conf. To re-enable this functionality, simply" - einfo "remove the line that disables it (mdns off)." - echo - - if want_nptl && want_linuxthreads ; then - einfo "The default behavior of glibc on your system is to use NPTL. If" - einfo "you want to use linuxthreads for a particular program, start it" - einfo "by executing 'LD_ASSUME_KERNEL=${LT_KERNEL_VERSION} []'" - echo - fi -} - -### SUPPORT FUNCTIONS ### -# We need to be able to set alternative headers for -# compiling for non-native platform -# Will also become useful for testing kernel-headers without screwing up -# the whole system. -# note: intentionally undocumented. -alt_headers() { - if [[ -z ${ALT_HEADERS} ]] ; then - if is_crosscompile ; then - ALT_HEADERS="/usr/${CTARGET}/include" - else - ALT_HEADERS="/usr/include" - fi - fi - echo "${ALT_HEADERS}" -} -alt_build_headers() { - if [[ -z ${ALT_BUILD_HEADERS} ]] ; then - ALT_BUILD_HEADERS=$(alt_headers) - tc-is-cross-compiler && ALT_BUILD_HEADERS=${ROOT}$(alt_headers) - fi - echo "${ALT_BUILD_HEADERS}" -} - -alt_prefix() { - if is_crosscompile ; then - echo /usr/${CTARGET} - else - echo /usr - fi -} - -alt_libdir() { - if is_crosscompile ; then - echo /usr/${CTARGET}/$(get_libdir) - else - echo /$(get_libdir) - fi -} - -alt_usrlibdir() { - if is_crosscompile ; then - echo /usr/${CTARGET}/$(get_libdir) - else - echo /usr/$(get_libdir) - fi -} - -setup_flags() { - # Over-zealous CFLAGS can often cause problems. What may work for one - # person may not work for another. To avoid a large influx of bugs - # relating to failed builds, we strip most CFLAGS out to ensure as few - # problems as possible. - strip-flags - strip-unsupported-flags - filter-flags -m32 -m64 -mabi=* - - has_multilib_profile && CTARGET_OPT=$(get_abi_CHOST) - - case $(tc-arch) in - ppc) - append-flags "-freorder-blocks" - ;; - sparc) - # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though. - filter-flags "-fcall-used-g7" - append-flags "-fcall-used-g6" - filter-flags "-mvis" - - if is_crosscompile || [[ ${PROFILE_ARCH} == "sparc64" ]] || { has_multilib_profile && ! tc-is-cross-compiler; } ; then - case ${ABI} in - sparc64) - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparc64b-unknown-linux-gnu" - CFLAGS_sparc64="$(get_abi_CFLAGS) -Wa,-xarch=v9b" - else - CTARGET_OPT="sparc64-unknown-linux-gnu" - CFLAGS_sparc64="$(get_abi_CFLAGS) -Wa,-xarch=v9a" - fi - - filter-flags -Wa,-xarch -Wa,-A - ;; - *) - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparcv9b-unknown-linux-gnu" - else - CTARGET_OPT="sparcv9-unknown-linux-gnu" - fi - ;; - esac - else - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparcv9b-unknown-linux-gnu" - elif { is_crosscompile && want_nptl; } || is-flag "-mcpu=ultrasparc2" || is-flag "-mcpu=ultrasparc"; then - CTARGET_OPT="sparcv9-unknown-linux-gnu" - fi - fi - ;; - esac - - if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then - CBUILD_OPT=${CTARGET_OPT} - fi - - if [ "`gcc-major-version`" -ge "3" -a "`gcc-minor-version`" -ge "4" ] ; then - # broken in 3.4.x - replace-flags -march=pentium-m -mtune=pentium3 - fi - - if $(tc-getCC ${CTARGET}) -v 2>&1 | grep -q 'gcc version 3.[0123]'; then - append-flags -finline-limit=2000 - fi - - # We don't want these flags for glibc - filter-ldflags -pie - - # Lock glibc at -O2 -- linuxthreads needs it and we want to be - # conservative here - append-flags -O2 -} - -check_kheader_version() { - local header="$(alt_build_headers)/linux/version.h" - - [[ -z $1 ]] && return 1 - - if [ -f "${header}" ] ; then - local version="`grep 'LINUX_VERSION_CODE' ${header} | \ - sed -e 's:^.*LINUX_VERSION_CODE[[:space:]]*::'`" - - if [ "${version}" -ge "$1" ] ; then - return 0 - fi - fi - - return 1 -} - -check_nptl_support() { - local min_kernel_version="$(KV_to_int "${NPTL_KERNEL_VERSION}")" - - echo - - einfon "Checking gcc for __thread support ... " - if want__thread ; then - echo "yes" - else - echo "no" - echo - eerror "Could not find a gcc that supports the __thread directive!" - eerror "please update to gcc-3.2.2-r1 or later, and try again." - die "No __thread support in gcc!" - fi - - # Building fails on an non-supporting kernel - einfon "Checking kernel version (>=${NPTL_KERNEL_VERSION}) ... " - if [ "`get_KV`" -lt "${min_kernel_version}" ] ; then - echo "no" - echo - eerror "You need a kernel of at least version ${NPTL_KERNEL_VERSION}" - eerror "for NPTL support!" - die "Kernel version too low!" - else - echo "yes" - fi - - # Building fails with too low linux-headers - einfon "Checking linux-headers version (>=${NPTL_KERNEL_VERSION}) ... " - if ! check_kheader_version "${min_kernel_version}"; then - echo "no" - echo - eerror "You need linux-headers of at least version ${NPTL_KERNEL_VERSION}" - eerror "for NPTL support!" - die "linux-headers version too low!" - else - echo "yes" - fi - - echo -} - -want_nptl() { - want_tls || return 1 - use nptl || return 1 - - # Archs that can use NPTL - case $(tc-arch) in - alpha|amd64|ia64|ppc|ppc64|s390|x86) - return 0; - ;; - sparc) - # >= v9 is needed for nptl. - [[ "${PROFILE_ARCH}" == "sparc" ]] && return 1 - return 0; - ;; - esac - - return 1 -} - -want_linuxthreads() { - ! use nptlonly && return 0 - want_nptl || return 0 - return 1 -} - -want_tls() { - # Archs that can use TLS (Thread Local Storage) - case $(tc-arch) in - alpha|amd64|ia64|ppc|ppc64|s390) - return 0; - ;; - sparc) - # 2.3.6 should have tls support on sparc64 - # when using newer binutils - case ${CTARGET/-*} in - sparc64*) return 1 ;; - *) return 0 ;; - esac - ;; - x86) - case ${CTARGET/-*} in - i486|i586|i686) return 0 ;; - esac - ;; - esac - - return 1 -} - -want__thread() { - want_tls || return 1 - - # For some reason --with-tls --with__thread is causing segfaults on sparc32. - [[ ${PROFILE_ARCH} == "sparc" ]] && return 1 - - [[ -n ${WANT__THREAD} ]] && return ${WANT__THREAD} - - $(tc-getCC ${CTARGET}) -c ${FILESDIR}/test-__thread.c -o ${T}/test2.o &> /dev/null - WANT__THREAD=$? - - return ${WANT__THREAD} -} - -# Under what conditions should we optimize glibc with --enable-omitfp. -# We strip -fomit-frame-pointer from CFLAGS and let the build system decide -# where it's safe to use -want_omitfp() { - [[ -n ${WANT_OMITFP} ]] && return ${WANT_OMITFP} - - WANT_OMITFP=1 - if is-flag -fomit-frame-pointer && ! use debug; then - case $(tc-arch) in - x86) - case ${CTARGET/-*} in - i386|i486|i586) WANT_OMITFP=1 ;; - *) WANT_OMITFP=0 ;; - esac - ;; - *) - WANT_OMITFP=0 - ;; - esac - fi - - return ${WANT_OMITFP} -} - -install_locales() { - unset LANGUAGE LANG LC_ALL - cd "${WORKDIR}"/${MYMAINBUILDDIR} || die "${WORKDIR}/${MYMAINBUILDDIR}" - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root=${D} localedata/install-locales || die -} - -setup_locales() { - if use !userlocales ; then - einfo "userlocales not enabled, installing -ALL- locales..." - install_locales || die - elif [ -e /etc/locales.build ] ; then - einfo "Installing locales in /etc/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat /etc/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - elif [ -e ${FILESDIR}/locales.build ] ; then - einfo "Installing locales in ${FILESDIR}/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat ${FILESDIR}/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - else - einfo "Installing -ALL- locales..." - install_locales || die - fi -} - -glibc_do_configure() { - local myconf - - setup_flags - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - # silly users - unset LD_RUN_PATH - - # set addons - pushd ${S} > /dev/null - #ADDONS=$(echo */configure | sed -e 's!/configure!!g;s!\(linuxthreads\|nptl\|rtkaio\|glibc-compat\)\( \|$\)!!g;s! \+$!!;s! !,!g;s!^!,!;/^,\*$/d') - ADDONS=$(echo */configure | sed -e 's!/configure!!g;s!\(linuxthreads\|nptl\|rtkaio\)\( \|$\)!!g;s! \+$!!;s! !,!g;s!^!,!;/^,\*$/d') - popd > /dev/null - - use nls || myconf="${myconf} --disable-nls" - use erandom || myconf="${myconf} --disable-dev-erandom" - - want_omitfp && myconf="${myconf} --enable-omitfp" - - if [ "$1" == "linuxthreads" ] ; then - if want_tls ; then - myconf="${myconf} --with-tls" - - if want__thread ; then - myconf="${myconf} --with-__thread" - else - myconf="${myconf} --without-__thread" - fi - else - myconf="${myconf} --without-tls --without-__thread" - fi - - myconf="${myconf} --enable-add-ons=linuxthreads${ADDONS}" - myconf="${myconf} --enable-kernel=${LT_KERNEL_VERSION}" - elif [ "$1" == "nptl" ] ; then - myconf="${myconf} --with-tls --with-__thread" - myconf="${myconf} --enable-add-ons=nptl${ADDONS}" - myconf="${myconf} --enable-kernel=${NPTL_KERNEL_VERSION}" - else - die "invalid pthread option" - fi - - if ! use build && use selinux; then - myconf="${myconf} --with-selinux" - else - myconf="${myconf} --without-selinux" - fi - - # Pick out the correct location for build headers - myconf="${myconf} - --without-cvs - --enable-bind-now - --build=${CBUILD_OPT:-${CBUILD}} - --host=${CTARGET_OPT:-${CTARGET}} - --disable-profile - --without-gd - --with-headers=$(alt_build_headers) - --prefix=$(alt_prefix) - --mandir=$(alt_prefix)/share/man - --infodir=$(alt_prefix)/share/info - --libexecdir=$(alt_prefix)/lib/misc/glibc - ${EXTRA_ECONF}" - - export CC="$(tc-getCC ${CTARGET})" - - GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-$1 - mkdir -p ${GBUILDDIR} - cd ${GBUILDDIR} - einfo "Configuring GLIBC for $1 with: ${myconf// /\n\t\t}" - ${S}/configure ${myconf} || die "failed to configure glibc" -} - -fix_lib64_symlinks() { - # the original Gentoo/AMD64 devs decided that since 64bit is the native - # bitdepth for AMD64, lib should be used for 64bit libraries. however, - # this ignores the FHS and breaks multilib horribly... especially - # since it wont even work without a lib64 symlink anyways. *rolls eyes* - # see bug 59710 for more information. - # Travis Tilley (08 Aug 2004) - if [ -L ${ROOT}/lib64 ] ; then - ewarn "removing /lib64 symlink and moving lib to lib64..." - ewarn "dont hit ctrl-c until this is done" - addwrite ${ROOT}/ - rm ${ROOT}/lib64 - # now that lib64 is gone, nothing will run without calling ld.so - # directly. luckily the window of brokenness is almost non-existant - use amd64 && /lib/ld-linux-x86-64.so.2 /bin/mv ${ROOT}/lib ${ROOT}/lib64 - use ppc64 && /lib/ld64.so.1 /bin/mv ${ROOT}/lib ${ROOT}/lib64 - # all better :) - ldconfig - ln -s lib64 ${ROOT}/lib - einfo "done! :-)" - einfo "fixed broken lib64/lib symlink in ${ROOT}" - fi - if [ -L ${ROOT}/usr/lib64 ] ; then - addwrite ${ROOT}/usr - rm ${ROOT}/usr/lib64 - mv ${ROOT}/usr/lib ${ROOT}/usr/lib64 - ln -s lib64 ${ROOT}/usr/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr" - fi - if [ -L ${ROOT}/usr/X11R6/lib64 ] ; then - addwrite ${ROOT}/usr/X11R6 - rm ${ROOT}/usr/X11R6/lib64 - mv ${ROOT}/usr/X11R6/lib ${ROOT}/usr/X11R6/lib64 - ln -s lib64 ${ROOT}/usr/X11R6/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr/X11R6" - fi -} - -use_multilib() { - case ${CTARGET} in - sparc64*|mips64*|amd64|ppc64) - is_crosscompile || has_multilib_profile || use multilib ;; - *) false ;; - esac -} - -# Setup toolchain variables that would be defined in the profiles for these archs. -crosscompile_setup() { - if is_crosscompile || tc-is-cross-compiler; then - # CFLAGS are used by ${CTARGET}-gcc - local VAR="CFLAGS_"${CTARGET//-/_} - CFLAGS=${!VAR-"-O2"} - - case ${CTARGET} in - x86_64*) - export CFLAGS_x86=${CFLAGS_x86--m32} - export CHOST_x86=${CTARGET/x86_64/i686} - export CDEFINE_x86="__i386__" - export LIBDIR_x86="lib" - - export CFLAGS_amd64=${CFLAGS_amd64--m64} - export CHOST_amd64=${CTARGET} - export CDEFINE_amd64="__x86_64__" - export LIBDIR_amd64="lib64" - - export MULTILIB_ABIS="amd64" - export DEFAULT_ABI="amd64" - ;; - mips64*) - export CFLAGS_o32=${CFLAGS_o32--mabi=32} - export CHOST_o32=${CTARGET/mips64/mips} - export CDEFINE_o32="_ABIO32" - export LIBDIR_o32="lib" - - export CFLAGS_n32=${CFLAGS_n32--mabi=n32} - export CHOST_n32=${CTARGET} - export CDEFINE_n32="_ABIN32" - export LIBDIR_n32="lib32" - - export CFLAGS_n64=${CFLAGS_n64--mabi=64} - export CHOST_n64=${CTARGET} - export CDEFINE_n64="_ABI64" - export LIBDIR_n64="lib64" - - export MULTILIB_ABIS="n64 n32" - export DEFAULT_ABI="n32" - ;; - powerpc64*) - export CFLAGS_ppc=${CFLAGS_ppc--m32} - export CHOST_ppc=${CTARGET/powerpc64/powerpc} - export CDEFINE_ppc="!__powerpc64__" - export LIBDIR_ppc="lib" - - export CFLAGS_ppc64=${CFLAGS_ppc64--m64} - export CHOST_ppc64=${CTARGET} - export CDEFINE_ppc64="__powerpc64__" - export LIBDIR_ppc64="lib64" - - export MULTILIB_ABIS="ppc64" - export DEFAULT_ABI="ppc64" - ;; - sparc64*) - export CFLAGS_sparc32=${CFLAGS_sparc--m32} - export CHOST_sparc32=${CTARGET/sparc64/sparc} - export CDEFINE_sparc32="!__arch64__" - export LIBDIR_sparc32="lib" - - export CFLAGS_sparc64=${CFLAGS_sparc64--m64} - export CHOST_sparc64=${CTARGET} - export CDEFINE_sparc64="__arch64__" - export LIBDIR_sparc64="lib64" - - export MULTILIB_ABIS="sparc64" - export DEFAULT_ABI="sparc64" - ;; - *) - export MULTILIB_ABIS="default" - export DEFAULT_ABI="default" - esac - - ABI=${DEFAULT_ABI} - fi -} - -### /ECLASS PUNTAGE ### - -if is_crosscompile ; then - SLOT="${CTARGET}-2.2" -else - SLOT="2.2" -fi - -# we'll handle stripping ourself #46186 -RESTRICT="nostrip multilib-pkg-force" - -# We need new cleanup attribute support from gcc for NPTL among things ... -# We also need linux26-headers if using NPTL. Including kernel headers is -# incredibly unreliable, and this new linux-headers release from plasmaroo -# should work with userspace apps, at least on amd64 and ppc64. -# -# The gcc-config dep is for the cross-compile multilib stuff -DEPEND=">=sys-devel/gcc-3.2.3-r1 - nptl? ( >=sys-devel/gcc-3.3.1-r1 >=sys-kernel/linux-headers-${NPTL_KERNEL_VERSION} ) - >=sys-devel/binutils-2.14.90.0.6-r1 - || ( >=sys-devel/gcc-config-1.3.9 app-admin/eselect-compiler ) - virtual/os-headers - nls? ( sys-devel/gettext ) - selinux? ( !build? ( sys-libs/libselinux ) )" -RDEPEND="nls? ( sys-devel/gettext ) - selinux? ( !build? ( sys-libs/libselinux ) )" - -if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then - DEPEND="${DEPEND} ${CATEGORY}/gcc" - - if [[ ${CATEGORY} == *-linux* ]] ; then - if [[ ${CATEGORY/mips} != ${CATEGORY} ]] ; then - DEPEND="${DEPEND} >=${CATEGORY}/mips-headers-2.6.10" - else - DEPEND="${DEPEND} ${CATEGORY}/linux-headers" - fi - fi - - case ${CTARGET} in - x86_64-pc-linux-gnu) - [[ ${CHOST/-*/} == "i686" ]] || RDEPEND="${RDEPEND} cross-i686-pc-linux-gnu/${PN}" - ;; - sparc64-unknown-linux-gnu) - [[ ${CHOST/-*/} == "sparc" ]] || RDEPEND="${RDEPEND} cross-sparc-unknown-linux-gnu/${PN}" - ;; - powerpc64-unknown-linux-gnu) - [[ ${CHOST/-*/} == "powerpc" ]] || RDEPEND="${RDEPEND} cross-powerpc-unknown-linux-gnu/${PN}" - ;; - mips64-unknown-linux-gnu) - [[ ${CHOST/-*/} == "mips" ]] || RDEPEND="${RDEPEND} cross-mips-unknown-linux-gnu/${PN}" - ;; - esac -fi - -pkg_setup() { - if use nptlonly && ! use nptl ; then - eerror "If you want nptlonly, add nptl to your USE too ;p" - die "nptlonly without nptl" - fi - - - # give some sort of warning about the nptl logic changes... - if want_nptl && want_linuxthreads ; then - - if use ppc ; then - eerror "glibc doesn't currently work with nptl and linuxthreads" - eerror "please select either nptlonly or -nptl" - die "nptlonly not set on ppc" - fi - ewarn "Warning! Gentoo's GLIBC with NPTL enabled now behaves like the" - ewarn "glibc from almost every other distribution out there. This means" - ewarn "that glibc is compiled -twice-, once with linuxthreads and once" - ewarn "with nptl. The NPTL version is installed to lib/tls and is still" - ewarn "used by default. If you do not need nor want the linuxthreads" - ewarn "fallback, you can disable this behavior by adding nptlonly to" - ewarn "USE to save yourself some compile time." - - ebeep - epause 5 - fi -} - -src_unpack() { - crosscompile_setup - export ABI="${DEFAULT_ABI}" - - case $(tc-arch) in - hppa) - GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 2000-all-2.3.2-propolice-guard-functions-v3.patch" - use hardened || GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 6490_hppa_hardened-disable__init_arrays.patch" - ;; - mips) - GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 3000-all-2.3.4-dl_execstack-PaX-support.patch" - use_multilib && GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 6680_mips_nolib3264.patch" - ;; - esac - - GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 5020_all_nomalloccheck.patch" - - toolchain-glibc_src_unpack - - case $(tc-arch) in - alpha) - # Is this still needed? - rm -f sysdeps/alpha/alphaev6/memcpy.S - ;; - amd64) - if ! has_multilib_profile && ! is_crosscompile; then - # CONF_LIBDIR support - epatch ${FILESDIR}/2.3.4/glibc-gentoo-libdir.patch - sed -i -e "s:@GENTOO_LIBDIR@:$(get_libdir):g" ${S}/sysdeps/unix/sysv/linux/configure - fi - ;; - ppc64) - # setup lib -- seems like a good place to set this up - has_multilib_profile || get_libdir_override lib64 - ;; - esac - - # disable binutils -as-needed - sed -e 's/^have-as-needed.*/have-as-needed = no/' -i ${S}/config.make.in - - # Glibc is stupid sometimes, and doesn't realize that with a - # static C-Only gcc, -lgcc_eh doesn't exist. - # http://sources.redhat.com/ml/libc-alpha/2003-09/msg00100.html - # http://sourceware.org/ml/libc-alpha/2005-02/msg00042.html - echo 'int main(){}' > ${T}/gcc_eh_test.c - if ! $(tc-getCC ${CTARGET}) ${T}/gcc_eh_test.c -lgcc_eh 2>/dev/null ; then - sed -i -e 's:-lgcc_eh::' Makeconfig || die "sed gcc_eh" - fi - - # Some configure checks fail on the first emerge through because they - # try to link. This doesn't work well if we don't have a libc yet. - # http://sourceware.org/ml/libc-alpha/2005-02/msg00042.html - if is_crosscompile && use build; then - rm ${S}/sysdeps/sparc/sparc64/elf/configure{,.in} - rm ${S}/nptl/sysdeps/pthread/configure{,.in} - fi - - find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \; - find . -name configure -exec touch {} \; - - # Fix permissions on some of the scripts - chmod u+x ${S}/scripts/*.sh -} - -src_compile() { - crosscompile_setup - - if [[ -z ${OABI} ]] && has_multilib_profile ; then - # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage - local MLTEST=$(type dyn_unpack) - if [[ ${MLTEST/set_abi} == "${MLTEST}" ]] ; then - OABI=${ABI} - einfo "Building multilib glibc for ABIs: $(get_install_abis)" - for ABI in $(get_install_abis) ; do - export ABI=${ABI} - src_compile - done - ABI=${OABI} - unset OABI - return 0 - fi - unset MLTEST - fi - - ABI=${ABI:-default} - toolchain-glibc_src_compile -} - -src_test() { - crosscompile_setup - - if [[ -z ${OABI} ]] && has_multilib_profile ; then - # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage - local MLTEST=$(type dyn_unpack) - if [[ ${MLTEST/set_abi} == "${MLTEST}" ]] ; then - OABI=${ABI} - einfo "Testing multilib glibc for ABIs: $(get_install_abis)" - for ABI in $(get_install_abis) ; do - export ABI - einfo " Testing ${ABI} glibc" - src_test - done - ABI=${OABI} - unset OABI - return 0 - fi - unset MLTEST - fi - - ABI=${ABI:-default} - toolchain-glibc_src_test -} - -src_install() { - crosscompile_setup - - if [[ -z ${OABI} ]] && has_multilib_profile ; then - # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage - local MLTEST=$(type dyn_unpack) - if [[ ${MLTEST/set_abi} == "${MLTEST}" ]] ; then - OABI=${ABI} - einfo "Installing multilib glibc for ABIs: $(get_install_abis)" - for ABI in $(get_install_abis) ; do - export ABI - src_install - done - ABI=${OABI} - unset OABI - return 0 - fi - unset MLTEST - fi - - ABI=${ABI:-default} - - # Handle stupid lib32 BS - unset OLD_LIBDIR - if ! is_crosscompile ; then - if [[ $(tc-arch) == "amd64" && ${ABI} == "x86" && $(get_libdir) != "lib" ]] ; then - OLD_LIBDIR=$(get_libdir) - LIBDIR_x86="lib" - fi - - if [[ $(tc-arch) == "ppc64" && ${ABI} == "ppc" && $(get_libdir) != "lib" ]] ; then - OLD_LIBDIR=$(get_libdir) - LIBDIR_ppc="lib" - fi - fi - - toolchain-glibc_src_install - - # Handle stupid lib32 BS on amd64 and ppc64 - if [[ -n ${OLD_LIBDIR} ]] ; then - cd "${S}" - [[ $(tc-arch) == "amd64" ]] && LIBDIR_x86=${OLD_LIBDIR} - [[ $(tc-arch) == "ppc64" ]] && LIBDIR_ppc=${OLD_LIBDIR} - unset OLD_LIBDIR - - mv "${D}"/lib "${D}"/$(get_libdir) - mv "${D}"/usr/lib "${D}"/usr/$(get_libdir) - dodir /lib - dodir /usr/lib - mv "${D}"/usr/$(get_libdir)/locale "${D}"/usr/lib - [[ $(tc-arch) == "amd64" ]] && dosym ../$(get_libdir)/ld-linux.so.2 /lib/ld-linux.so.2 - [[ $(tc-arch) == "ppc64" ]] && dosym ../$(get_libdir)/ld.so.1 /lib/ld.so.1 - - for f in "${D}"/usr/$(get_libdir)/*.so; do - local basef=$(basename "${f}") - if [[ -L ${f} ]] ; then - local target=$(readlink "${f}") - target=${target/\/lib\//\/$(get_libdir)\/} - rm "${f}" - dosym "${target}" /usr/$(get_libdir)/"${basef}" - fi - done - - dosed "s:/lib/:/$(get_libdir)/:g" /usr/$(get_libdir)/lib{c,pthread}.so - - if want_nptl && want_linuxthreads ; then - dosed "s:/lib/:/$(get_libdir)/:g" /usr/$(get_libdir)/nptl/lib{c,pthread}.so - fi - fi -} - -pkg_preinst() { - toolchain-glibc_pkg_preinst -} - -pkg_postinst() { - toolchain-glibc_pkg_postinst -} diff --git a/sys-libs/glibc/glibc-2.3.4.20050125-r1.ebuild b/sys-libs/glibc/glibc-2.3.4.20050125-r1.ebuild deleted file mode 100644 index b28715d1a9e6..000000000000 --- a/sys-libs/glibc/glibc-2.3.4.20050125-r1.ebuild +++ /dev/null @@ -1,1307 +0,0 @@ -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.4.20050125-r1.ebuild,v 1.72 2006/08/31 20:28:33 vapier Exp $ - -# Here's how the cross-compile logic breaks down ... -# CTARGET - machine that will target the binaries -# CHOST - machine that will host the binaries -# CBUILD - machine that will build the binaries -# If CTARGET != CHOST, it means you want a libc for cross-compiling. -# If CHOST != CBUILD, it means you want to cross-compile the libc. -# CBUILD = CHOST = CTARGET - native build/install -# CBUILD != (CHOST = CTARGET) - cross-compile a native build -# (CBUILD = CHOST) != CTARGET - libc for cross-compiler -# CBUILD != CHOST != CTARGET - cross-compile a libc for a cross-compiler -# For install paths: -# CHOST = CTARGET - install into / -# CHOST != CTARGET - install into /usr/CTARGET/ - -KEYWORDS="~amd64 ~ia64 mips -ppc ~sparc ~x86" - -BRANCH_UPDATE="" - -# From linuxthreads/man -GLIBC_MANPAGE_VERSION="2.3.4-r1" - -# From manual -GLIBC_INFOPAGE_VERSION="2.3.4-r1" - -# Gentoo patchset -PATCH_VER="1.7" - -# C Stubbs addon (contained in fedora, so ignoring) -#CSTUBS_VER="2.1.2" -#CSTUBS_TARBALL="c_stubs-${CSTUBS_VER}.tar.bz2" -#CSTUBS_URI="mirror://gentoo/${CSTUBS_TARBALL}" - -# Fedora addons (from RHEL's glibc-2.3.4-2.src.rpm) -FEDORA_VER="20041219T2331" -FEDORA_TARBALL="glibc-fedora-${FEDORA_VER}.tar.bz2" -FEDORA_URI="mirror://gentoo/${FEDORA_TARBALL}" - -GENTOO_TOOLCHAIN_BASE_URI="mirror://gentoo" - -### PUNT OUT TO ECLASS?? ### -inherit eutils versionator libtool toolchain-funcs flag-o-matic gnuconfig multilib - -DESCRIPTION="GNU libc6 (also called glibc2) C library" -HOMEPAGE="http://www.gnu.org/software/libc/libc.html" -LICENSE="LGPL-2" - -IUSE="build erandom hardened multilib nls nomalloccheck nptl nptlonly pic userlocales selinux" - -export CBUILD=${CBUILD:-${CHOST}} -export CTARGET=${CTARGET:-${CHOST}} -if [[ ${CTARGET} == ${CHOST} ]] ; then - if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then - export CTARGET=${CATEGORY/cross-} - fi -fi -if [[ ${CTARGET} == ${CHOST} ]] ; then - PROVIDE="virtual/libc" -fi - -is_crosscompile() { - [[ ${CHOST} != ${CTARGET} ]] -} - -GLIBC_RELEASE_VER=$(get_version_component_range 1-3) - -# Don't set this to :-, - allows BRANCH_UPDATE="" -BRANCH_UPDATE=${BRANCH_UPDATE-$(get_version_component_range 4)} - -# (Recent snapshots fails with 2.6.5 and earlier with NPTL) -NPTL_KERNEL_VERSION=${NPTL_KERNEL_VERSION:-"2.6.6"} -LT_KERNEL_VERSION=${LT_KERNEL_VERSION:-"2.4.1"} - -### SRC_URI ### - -# This function handles the basics of setting the SRC_URI for a glibc ebuild. -# To use, set SRC_URI with: -# -# SRC_URI="$(get_glibc_src_uri)" -# -# Other than the variables normally set by portage, this function's behavior -# can be altered by setting the following: -# -# GENTOO_TOOLCHAIN_BASE_URI -# This sets the base URI for all gentoo-specific patch files. Note -# that this variable is only important for a brief period of time, -# before your source files get picked up by mirrors. However, it is -# still highly suggested that you keep files in this location -# available. -# -# BRANCH_UPDATE -# If set, this variable signals that we should be using the main -# release tarball (determined by ebuild version) and applying a -# CVS branch update patch against it. The location of this branch -# update patch is assumed to be in ${GENTOO_TOOLCHAIN_BASE_URI}. -# Just like with SNAPSHOT, this variable is ignored if the ebuild -# has a _pre suffix. -# -# PATCH_VER -# PATCH_GLIBC_VER -# This should be set to the version of the gentoo patch tarball. -# The resulting filename of this tarball will be: -# ${PN}-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2 -# -# GLIBC_MANPAGE_VERSION -# GLIBC_INFOPAGE_VERSION -# The version of glibc for which we will download pages. This will -# default to ${GLIBC_RELEASE_VER}, but we may not want to pre-generate man pages -# for prerelease test ebuilds for example. This allows you to -# continue using pre-generated manpages from the last stable release. -# If set to "none", this will prevent the downloading of manpages, -# which is useful for individual library targets. -# -get_glibc_src_uri() { - # This variable should be set to the devspace of whoever is currently - # maintaining GLIBC. Please dont set this to mirror, that would just - # make the files unavailable until they get mirrored. - local devspace_uri="mirror://gentoo/" - GENTOO_TOOLCHAIN_BASE_URI=${GENTOO_TOOLCHAIN_BASE_URI:-${devspace_uri}} - -# GLIBC_SRC_URI="http://ftp.gnu.org/gnu/glibc/${PN}-${GLIBC_RELEASE_VER}.tar.bz2 -# http://ftp.gnu.org/gnu/glibc/${PN}-linuxthreads-${GLIBC_RELEASE_VER}.tar.bz2 -# http://ftp.gnu.org/gnu/glibc/${PN}-libidn-${GLIBC_RELEASE_VER}.tar.bz2 - GLIBC_SRC_URI="mirror://gnu/glibc/${PN}-${GLIBC_RELEASE_VER}.tar.bz2 - mirror://gnu/glibc/${PN}-linuxthreads-${GLIBC_RELEASE_VER}.tar.bz2 - mirror://gnu/glibc/${PN}-libidn-${GLIBC_RELEASE_VER}.tar.bz2" - - if [[ -n ${BRANCH_UPDATE} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/${PN}-${GLIBC_RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2" - fi - - if [[ -n ${PATCH_VER} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/${PN}-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2" - fi - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/${PN}-manpages-${GLIBC_MANPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2" - fi - - if [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/${PN}-infopages-${GLIBC_INFOPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2" - fi - - if [[ -n ${CSTUBS_URI} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} ${CSTUBS_URI}" - fi - - if [[ -n ${FEDORA_URI} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} ${FEDORA_URI}" - fi - - echo "${GLIBC_SRC_URI}" -} - -SRC_URI=$(get_glibc_src_uri) -S=${WORKDIR}/${PN}-${GLIBC_RELEASE_VER} - -### EXPORTED FUNCTIONS ### -toolchain-glibc_src_unpack() { - # Check NPTL support _before_ we unpack things to save some time - want_nptl && check_nptl_support - - unpack ${PN}-${GLIBC_RELEASE_VER}.tar.bz2 - - cd ${S} - unpack ${PN}-linuxthreads-${GLIBC_RELEASE_VER}.tar.bz2 - unpack ${PN}-libidn-${GLIBC_RELEASE_VER}.tar.bz2 - - if [[ -n ${CSTUBS_TARBALL} ]] ; then - unpack ${CSTUBS_TARBALL} - fi - - if [[ -n ${FEDORA_TARBALL} ]] ; then - unpack ${FEDORA_TARBALL} - fi - - if [[ -n ${PATCH_VER} ]] ; then - cd "${WORKDIR}" - unpack ${PN}-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2 - fi - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - cd "${WORKDIR}" - unpack ${PN}-manpages-${GLIBC_MANPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2 - fi - - if [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - cd ${S} - unpack ${PN}-infopages-${GLIBC_INFOPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2 - fi - - if [[ -n ${BRANCH_UPDATE} ]] ; then - cd "${WORKDIR}" - unpack ${PN}-${GLIBC_RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2 - fi - - cd ${S} - - if [[ -n ${BRANCH_UPDATE} ]] ; then - epatch "${WORKDIR}"/${PN}-${GLIBC_RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch - - # Snapshot date patch - einfo "Patching version to display snapshot date ..." - sed -i -e "s:\(#define RELEASE\).*:\1 \"${BRANCH_UPDATE}\":" version.h - fi - - if [[ -n ${PATCH_VER} ]] ; then - EPATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE}" - EPATCH_SUFFIX="patch" - OLD_ARCH="${ARCH}" - ARCH="$(tc-arch)" - - einfo "Applying Gentoo Glibc Patches: ${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-${PATCH_VER}" - epatch "${WORKDIR}"/patches - - ARCH="${OLD_ARCH}" - unset EPATCH_EXCLUDE - unset EPATCH_SUFFIX - unset OLD_ARCH - fi -} - -toolchain-glibc_src_compile() { - # Set gconvdir to /usr/$(get_libdir)/gconv on archs with multiple ABIs - local MAKEFLAGS="" - has_multilib_profile && MAKEFLAGS="gconvdir=$(alt_usrlibdir)/gconv" - - echo - for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CFLAGS ; do - einfo " $(printf '%15s' ${v}:) ${!v}" - done - echo - - if want_linuxthreads ; then - glibc_do_configure linuxthreads - einfo "Building GLIBC with linuxthreads..." - make PARALLELMFLAGS="${MAKEOPTS}" ${MAKEFLAGS} || die - fi - if want_nptl ; then - # ... and then do the optional nptl build - unset LD_ASSUME_KERNEL - glibc_do_configure nptl - einfo "Building GLIBC with NPTL..." - make PARALLELMFLAGS="${MAKEOPTS}" ${MAKEFLAGS} || die - fi -} - -toolchain-glibc_src_test() { - # This is wrong, but glibc's tests fail bad when screwing - # around with sandbox, so lets just punt it - unset LD_PRELOAD - - # do the linuxthreads build unless we're using nptlonly - if want_linuxthreads ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-linuxthreads - einfo "Checking GLIBC with linuxthreads..." - make check || die "linuxthreads glibc did not pass make check" - fi - if want_nptl ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - unset LD_ASSUME_KERNEL || : - einfo "Checking GLIBC with NPTL..." - make check || die "nptl glibc did not pass make check" - fi -} - -toolchain-glibc_pkg_preinst() { - # PPC64+others may want to eventually be added to this logic if they - # decide to be multilib compatible and FHS compliant. note that this - # chunk of FHS compliance only applies to 64bit archs where 32bit - # compatibility is a major concern (not IA64, for example). - - # amd64's 2005.0 is the first amd64 profile to not need this code. - # 2005.0 is setup properly, and this is executed as part of the - # 2004.3 -> 2005.0 upgrade script. - # It can be removed after 2004.3 has been purged from portage. - use amd64 && [ "$(get_libdir)" == "lib64" ] && ! has_multilib_profile && fix_lib64_symlinks - - # it appears that /lib/tls is sometimes not removed. See bug - # 69258 for more info. - if [[ -d ${ROOT}$(alt_libdir)/tls ]] && ! { want_nptl && want_linuxthreads; }; then - addwrite "${ROOT}"/$(alt_libdir)/ - ewarn "nptlonly or -nptl in USE, removing /${ROOT}$(alt_libdir)/tls..." - rm -r "${ROOT}"/$(alt_libdir)/tls || die - fi - - # Shouldnt need to keep this updated - [[ -e ${ROOT}/etc/locales.build ]] && rm -f "${D}"/etc/locales.build -} - -toolchain-glibc_src_install() { - setup_flags - - # Need to dodir first because it might not exist (bad amd64 profiles) - dodir $(alt_usrlibdir) - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - - if want_linuxthreads ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-linuxthreads - einfo "Installing GLIBC ${ABI} with linuxthreads ..." - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root="${D}" \ - install || die - else # nptlonly - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - einfo "Installing GLIBC ${ABI} with NPTL ..." - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root="${D}" \ - install || die - fi - - if is_crosscompile ; then - # Glibc doesn't setup multilib crosscompiled dirs right, but it - # sets up native multilib dirs right, so just do this when we - # crosscompile. - if [[ $(get_libdir) != "lib" && -d ${D}$(alt_prefix)/lib ]] ; then - dodir $(alt_libdir) - mv "${D}"$(alt_prefix)/lib/* "${D}"$(alt_libdir) - fi - - # punt all the junk not needed by a cross-compiler - rm -rf "${D}"$(alt_prefix)/{bin,etc,$(get_libdir)/gconv,sbin,share} - fi - - if want_linuxthreads && want_nptl ; then - einfo "Installing NPTL to $(alt_libdir)/tls/..." - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - mkdir -p "${D}"$(alt_libdir)/tls/ - - libcsofile=$(basename "${D}"$(alt_libdir)/libc-*.so) - cp -a libc.so "${D}"$(alt_libdir)/tls/${libcsofile} || die - dosym ${libcsofile} $(alt_libdir)/tls/$(ls libc.so.*) - - libmsofile=$(basename "${D}"$(alt_libdir)/libm-*.so) - pushd math > /dev/null - cp -a libm.so "${D}"$(alt_libdir)/tls/${libmsofile} || die - dosym ${libmsofile} $(alt_libdir)/tls/$(ls libm.so.*) - popd > /dev/null - - librtsofile=$(basename "${D}"$(alt_libdir)/librt-*.so) - pushd rt > /dev/null - cp -a librt.so "${D}"$(alt_libdir)/tls/${librtsofile} || die - dosym ${librtsofile} $(alt_libdir)/tls/$(ls librt.so.*) - popd > /dev/null - - libthreaddbsofile=$(basename "${D}"$(alt_libdir)/libthread_db-*.so) - pushd nptl_db > /dev/null - cp -a libthread_db.so "${D}"$(alt_libdir)/tls/${libthreaddbsofile} || die - dosym ${libthreaddbsofile} $(alt_libdir)/tls/$(ls libthread_db.so.*) - popd > /dev/null - - libpthreadsofile=libpthread-${GLIBC_RELEASE_VER}.so - cp -a nptl/libpthread.so "${D}"$(alt_libdir)/tls/${libpthreadsofile} || die - dosym ${libpthreadsofile} $(alt_libdir)/tls/libpthread.so.0 - - # and now for the static libs - mkdir -p "${D}"$(alt_usrlibdir)/nptl - cp -a libc.a nptl/libpthread.a nptl/libpthread_nonshared.a rt/librt.a \ - "${D}"$(alt_usrlibdir)/nptl - - # linker script crap - for lib in libc libpthread; do - sed -e "s:$(alt_libdir)/${lib}.so:$(alt_libdir)/tls/${lib}.so:g" \ - -e "s:$(alt_usrlibdir)/${lib}_nonshared.a:$(alt_usrlibdir)/nptl/${lib}_nonshared.a:g" \ - "${D}"$(alt_usrlibdir)/${lib}.so \ - > "${D}"$(alt_usrlibdir)/nptl/${lib}.so - - chmod 755 "${D}"$(alt_usrlibdir)/nptl/${lib}.so - done - - dosym ../librt.so $(alt_usrlibdir)/nptl/librt.so - - # last but not least... headers. - mkdir -p "${D}"/nptl "${D}"$(alt_headers)/nptl - make install_root="${D}"/nptl install-headers PARALLELMFLAGS="${MAKEOPTS} -j1" - pushd "${D}"/nptl/$(alt_headers) > /dev/null - for i in $(find . -type f) ; do - if ! [[ -f ${D}$(alt_headers)/$i ]] \ - || ! cmp -s $i ${D}$(alt_headers)/$i; then - mkdir -p ${D}$(alt_headers)/nptl/`dirname $i` - cp -a $i ${D}$(alt_headers)/nptl/$i - fi - done - popd > /dev/null - rm -rf ${D}/nptl - fi - - # Now, strip everything but the thread libs #46186, as well as the dynamic - # linker, else we cannot set breakpoints in shared libraries. - # Fix for ld-* by Lonnie Princehouse. - mkdir -p ${T}/thread-backup - for x in ${D}$(alt_libdir)/lib{pthread,thread_db}* \ - ${D}$(alt_libdir)/ld-* ; do - [[ -f ${x} ]] && mv -f ${x} ${T}/thread-backup/ - done - if want_linuxthreads && want_nptl ; then - mkdir -p ${T}/thread-backup/tls - for x in ${D}$(alt_libdir)/tls/lib{pthread,thread_db}* ; do - [[ -f ${x} ]] && mv -f ${x} ${T}/thread-backup/tls - done - fi - env -uRESTRICT CHOST=${CTARGET} prepallstrip - cp -a -- ${T}/thread-backup/* ${D}$(alt_libdir)/ || die - - if use pic && [[ $(tc-arch) != "amd64" ]] ; then - find ${S}/${buildtarget}/ -name "soinit.os" -exec cp {} ${D}$(alt_libdir)/soinit.o \; - find ${S}/${buildtarget}/ -name "sofini.os" -exec cp {} ${D}$(alt_libdir)/sofini.o \; - find ${S}/${buildtarget}/ -name "*_pic.a" -exec cp {} ${D}$(alt_libdir) \; - find ${S}/${buildtarget}/ -name "*.map" -exec cp {} ${D}$(alt_libdir) \; - - for i in ${D}$(alt_libdir)/*.map; do - mv ${i} ${i%.map}_pic.map - done - fi - - # We'll take care of the cache ourselves - rm -f ${D}/etc/ld.so.cache - - # Some things want this, notably ash. - dosym libbsd-compat.a $(alt_usrlibdir)/libbsd.a - - # Handle includes for different ABIs - prep_ml_includes $(alt_headers) - - ################################################################# - # EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY # - # Make sure we install the sys-include symlink so that when - # we build a 2nd stage cross-compiler, gcc finds the target - # system headers correctly. See gcc/doc/gccinstall.info - if is_crosscompile ; then - dosym include $(alt_prefix)/sys-include - dosym . $(alt_prefix)/usr - return 0 - fi - - # Everything past this point just needs to be done once... don't waste time building locale files twice... - is_final_abi || return 0 - - if want_linuxthreads ; then - MYMAINBUILDDIR=build-${ABI}-${CTARGET}-linuxthreads - else - MYMAINBUILDDIR=build-${ABI}-${CTARGET}-nptl - fi - cd "${WORKDIR}"/${MYMAINBUILDDIR} - if ! use build ; then - if ! has noinfo ${FEATURES} && [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - einfo "Installing info pages..." - - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root=${D} \ - info -i - fi - - setup_locales - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - einfo "Installing man pages..." - - # Install linuxthreads man pages even if nptl is enabled - cd "${WORKDIR}"/man - doman *.3thr - fi - - # Install nscd config file - insinto /etc - doins ${FILESDIR}/nscd.conf - doins "${FILESDIR}"/nsswitch.conf - - exeinto /etc/init.d - doexe ${FILESDIR}/nscd - - cd ${S} - dodoc BUGS ChangeLog* CONFORMANCE FAQ INTERFACE NEWS NOTES PROJECTS README* - else - rm -rf ${D}/usr/share - for dir in $(get_all_libdirs); do - rm -rf ${D}/usr/${dir}/gconv &> /dev/null - done - - einfo "Installing Timezone data..." - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root=${D} \ - timezone/install-others || die - fi - - # Is this next line actually needed or does the makefile get it right? - # It previously has 0755 perms which was killing things. - fperms 4711 $(alt_prefix)/lib/misc/glibc/pt_chown - - # Prevent overwriting of the /etc/localtime symlink. We'll handle the - # creation of the "factory" symlink in pkg_postinst(). - rm -f ${D}/etc/localtime - - insinto /etc - # This is our new config file for building locales - doins ${FILESDIR}/locales.build - # example host.conf with multicast dns disabled by default - doins ${FILESDIR}/2.3.4/host.conf - - # simple test to make sure our new glibc isnt completely broken. - # for now, skip the multilib scenario. also make sure we don't - # test with statically built binaries since they will fail. - [[ ${CBUILD} != ${CHOST} ]] && return 0 - [[ $(get_libdir) != "lib" ]] && return 0 - for x in date env ls true uname ; do - x=$(type -p ${x}) - [[ -z ${x} ]] && continue - striptest=$(file -L ${x} 2>/dev/null) - [[ -z ${striptest} ]] && continue - [[ ${striptest/statically linked} != "${striptest}" ]] && continue - "${D}"/$(get_libdir)/ld-*.so \ - --library-path "${D}"/$(get_libdir) \ - ${x} > /dev/null \ - || die "simple run test (${x}) failed" - done -} - -toolchain-glibc_pkg_postinst() { - # Mixing nptlonly and -nptlonly glibc can prove dangerous if libpthread - # isn't removed in unmerge which happens sometimes. See bug #87671 - if ! is_crosscompile && want_linuxthreads ; then - for libdir in $(get_all_libdirs) ; do - for f in ${ROOT}/${libdir}/libpthread-2.* ${ROOT}/${libdir}/libpthread-0.6* ; do - if [[ -f ${f} ]] ; then - rm -f ${f} - ldconfig - fi - done - done - fi - - # Correct me if I am wrong here, but my /etc/localtime is a file - # created by zic .... - # I am thinking that it should only be recreated if no /etc/localtime - # exists, or if it is an invalid symlink. - # - # For invalid symlink: - # -f && -e will fail - # -L will succeed - # - if [ ! -e "${ROOT}/etc/localtime" ] ; then - echo "Please remember to set your timezone using the zic command." - rm -f ${ROOT}/etc/localtime - ln -s ../usr/share/zoneinfo/Factory ${ROOT}/etc/localtime - fi - - if ! is_crosscompile && [ -x "${ROOT}/usr/sbin/iconvconfig" ] ; then - # Generate fastloading iconv module configuration file. - ${ROOT}/usr/sbin/iconvconfig --prefix=${ROOT} - fi - - if [ ! -e "${ROOT}/lib/ld.so.1" ] && use ppc64 && ! has_multilib_profile ; then - ## SHOULDN'T THIS BE lib64?? - ln -s ld64.so.1 ${ROOT}/lib/ld.so.1 - fi - - # Reload init ... - if ! is_crosscompile && [ "${ROOT}" = "/" ] ; then - /sbin/telinit U &> /dev/null - fi - - # warn the few multicast-dns-by-default users we've had about the change - # in behavior... - echo - einfo "Gentoo's glibc now disables multicast dns by default in our" - einfo "example host.conf. To re-enable this functionality, simply" - einfo "remove the line that disables it (mdns off)." - echo - - if want_nptl && want_linuxthreads ; then - einfo "The default behavior of glibc on your system is to use NPTL. If" - einfo "you want to use linuxthreads for a particular program, start it" - einfo "by executing 'LD_ASSUME_KERNEL=${LT_KERNEL_VERSION} []'" - echo - fi -} - -### SUPPORT FUNCTIONS ### -# We need to be able to set alternative headers for -# compiling for non-native platform -# Will also become useful for testing kernel-headers without screwing up -# the whole system. -# note: intentionally undocumented. -alt_headers() { - if [[ -z ${ALT_HEADERS} ]] ; then - if is_crosscompile ; then - ALT_HEADERS="/usr/${CTARGET}/include" - else - ALT_HEADERS="/usr/include" - fi - fi - echo "${ALT_HEADERS}" -} -alt_build_headers() { - if [[ -z ${ALT_BUILD_HEADERS} ]] ; then - ALT_BUILD_HEADERS=$(alt_headers) - tc-is-cross-compiler && ALT_BUILD_HEADERS=${ROOT}$(alt_headers) - fi - echo "${ALT_BUILD_HEADERS}" -} - -alt_prefix() { - if is_crosscompile ; then - echo /usr/${CTARGET} - else - echo /usr - fi -} - -alt_libdir() { - if is_crosscompile ; then - echo /usr/${CTARGET}/$(get_libdir) - else - echo /$(get_libdir) - fi -} - -alt_usrlibdir() { - if is_crosscompile ; then - echo /usr/${CTARGET}/$(get_libdir) - else - echo /usr/$(get_libdir) - fi -} - -setup_flags() { - # If the user wants to use -fomit-frame-pointer, let the build system - # determine when it's safe - is-flag -fomit-frame-pointer && EXTRA_ECONF="--enable-omitfp ${EXTRA_ECONF}" - - # Over-zealous CFLAGS can often cause problems. What may work for one - # person may not work for another. To avoid a large influx of bugs - # relating to failed builds, we strip most CFLAGS out to ensure as few - # problems as possible. - strip-flags - strip-unsupported-flags - filter-flags -m32 -m64 -mabi=* - - has_multilib_profile && CTARGET_OPT=$(get_abi_CHOST) - - case $(tc-arch) in - ppc) - append-flags "-freorder-blocks" - ;; - sparc) - # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though. - filter-flags "-fcall-used-g7" - append-flags "-fcall-used-g6" - filter-flags "-mvis" - - if is_crosscompile || [[ ${PROFILE_ARCH} == "sparc64" ]] || { has_multilib_profile && ! tc-is-cross-compiler; } ; then - case ${ABI} in - default|sparc32) - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparcv9b-unknown-linux-gnu" - else - CTARGET_OPT="sparcv9-unknown-linux-gnu" - fi - ;; - sparc64) - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparc64b-unknown-linux-gnu" - CFLAGS_sparc64="$(get_abi_CFLAGS) -Wa,-xarch=v9b" - else - CTARGET_OPT="sparc64-unknown-linux-gnu" - CFLAGS_sparc64="$(get_abi_CFLAGS) -Wa,-xarch=v9a" - fi - - filter-flags -Wa,-xarch -Wa,-A - ;; - esac - else - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparcv9b-unknown-linux-gnu" - elif { is_crosscompile && want_nptl; } || is-flag "-mcpu=ultrasparc2" || is-flag "-mcpu=ultrasparc"; then - CTARGET_OPT="sparcv9-unknown-linux-gnu" - fi - fi - ;; - esac - - if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then - CBUILD_OPT=${CTARGET_OPT} - fi - - if [ "`gcc-major-version`" -ge "3" -a "`gcc-minor-version`" -ge "4" ] ; then - # broken in 3.4.x - replace-flags -march=pentium-m -mtune=pentium3 - fi - - if $(tc-getCC ${CTARGET}) -v 2>&1 | grep -q 'gcc version 3.[0123]'; then - append-flags -finline-limit=2000 - fi - - # We don't want these flags for glibc - filter-ldflags -pie - - # Lock glibc at -O2 -- linuxthreads needs it and we want to be - # conservative here - append-flags -O2 -} - -check_kheader_version() { - local header="$(alt_build_headers)/linux/version.h" - - [[ -z $1 ]] && return 1 - - if [ -f "${header}" ] ; then - local version="`grep 'LINUX_VERSION_CODE' ${header} | \ - sed -e 's:^.*LINUX_VERSION_CODE[[:space:]]*::'`" - - if [ "${version}" -ge "$1" ] ; then - return 0 - fi - fi - - return 1 -} - -check_nptl_support() { - local min_kernel_version="$(KV_to_int "${NPTL_KERNEL_VERSION}")" - - echo - - einfon "Checking gcc for __thread support ... " - if ! $(tc-getCC ${CTARGET}) -c ${FILESDIR}/test-__thread.c -o ${T}/test2.o &> /dev/null; then - echo "no" - echo - eerror "Could not find a gcc that supports the __thread directive!" - eerror "please update to gcc-3.2.2-r1 or later, and try again." - die "No __thread support in gcc!" - else - echo "yes" - fi - - # Building fails on an non-supporting kernel - einfon "Checking kernel version (>=${NPTL_KERNEL_VERSION}) ... " - if [ "`get_KV`" -lt "${min_kernel_version}" ] ; then - echo "no" - echo - eerror "You need a kernel of at least version ${NPTL_KERNEL_VERSION}" - eerror "for NPTL support!" - die "Kernel version too low!" - else - echo "yes" - fi - - # Building fails with too low linux-headers - einfon "Checking linux-headers version (>=${NPTL_KERNEL_VERSION}) ... " - if ! check_kheader_version "${min_kernel_version}"; then - echo "no" - echo - eerror "You need linux-headers of at least version ${NPTL_KERNEL_VERSION}" - eerror "for NPTL support!" - die "linux-headers version too low!" - else - echo "yes" - fi - - echo -} - -want_nptl() { - want_tls || return 1 - use nptl || return 1 - - # Archs that can use NPTL - case $(tc-arch) in - alpha|amd64|ia64|ppc|ppc64|s390|x86) - return 0; - ;; - sparc) - # >= v9 is needed for nptl. - [[ "${PROFILE_ARCH}" == "sparc" ]] && return 1 - return 0; - ;; - esac - - return 1 -} - -want_linuxthreads() { - ! use nptlonly && return 0 - want_nptl || return 0 - return 1 -} - -want_tls() { - # Archs that can use TLS (Thread Local Storage) - case $(tc-arch) in - alpha|amd64|ia64|ppc|ppc64|s390) - return 0; - ;; - sparc) - case ${CTARGET/-*} in - sparc64*) - [[ ${ABI} == "sparc32" ]] && return 0 - return 1 - ;; - *) - return 0 - ;; - esac - ;; - x86) - case ${CTARGET/-*} in - i486|i586|i686) return 0 ;; - esac - ;; - esac - - return 1 -} - -install_locales() { - unset LANGUAGE LANG LC_ALL - cd "${WORKDIR}"/${MYMAINBUILDDIR} || die "${WORKDIR}/${MYMAINBUILDDIR}" - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root=${D} localedata/install-locales || die -} - -setup_locales() { - if use !userlocales ; then - einfo "userlocales not enabled, installing -ALL- locales..." - install_locales || die - elif [ -e /etc/locales.build ] ; then - einfo "Installing locales in /etc/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat /etc/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - elif [ -e ${FILESDIR}/locales.build ] ; then - einfo "Installing locales in ${FILESDIR}/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat ${FILESDIR}/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - else - einfo "Installing -ALL- locales..." - install_locales || die - fi -} - -glibc_do_configure() { - local myconf - - setup_flags - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - # silly users - unset LD_RUN_PATH - - # set addons - pushd ${S} > /dev/null - ADDONS=$(echo */configure | sed -e 's!/configure!!g;s!\(linuxthreads\|nptl\|rtkaio\|glibc-compat\)\( \|$\)!!g;s! \+$!!;s! !,!g;s!^!,!;/^,\*$/d') - popd > /dev/null - - use nls || myconf="${myconf} --disable-nls" - use erandom || myconf="${myconf} --disable-dev-erandom" - - if [ "$1" == "linuxthreads" ] ; then - want_tls && myconf="${myconf} --with-tls --without-__thread" - want_tls || myconf="${myconf} --without-tls --without-__thread" - myconf="${myconf} --enable-add-ons=linuxthreads${ADDONS}" - myconf="${myconf} --enable-kernel=${LT_KERNEL_VERSION}" - elif [ "$1" == "nptl" ] ; then - want_nptl && myconf="${myconf} --with-tls --with-__thread" - myconf="${myconf} --enable-add-ons=nptl${ADDONS}" - myconf="${myconf} --enable-kernel=${NPTL_KERNEL_VERSION}" - else - die "invalid pthread option" - fi - - if ! use build && use selinux ; then - myconf="${myconf} --with-selinux" - else - myconf="${myconf} --without-selinux" - fi - - # Pick out the correct location for build headers - myconf="${myconf} - --without-cvs - --enable-bind-now - --build=${CBUILD_OPT:-${CBUILD}} - --host=${CTARGET_OPT:-${CTARGET}} - --disable-profile - --without-gd - --with-headers=$(alt_build_headers) - --prefix=$(alt_prefix) - --mandir=$(alt_prefix)/share/man - --infodir=$(alt_prefix)/share/info - --libexecdir=$(alt_prefix)/lib/misc/glibc - ${EXTRA_ECONF}" - - export CC="$(tc-getCC ${CTARGET})" - - GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-$1 - mkdir -p ${GBUILDDIR} - cd ${GBUILDDIR} - einfo "Configuring GLIBC for $1 with: ${myconf// /\n\t\t}" - ${S}/configure ${myconf} || die "failed to configure glibc" -} - -fix_lib64_symlinks() { - # the original Gentoo/AMD64 devs decided that since 64bit is the native - # bitdepth for AMD64, lib should be used for 64bit libraries. however, - # this ignores the FHS and breaks multilib horribly... especially - # since it wont even work without a lib64 symlink anyways. *rolls eyes* - # see bug 59710 for more information. - # Travis Tilley (08 Aug 2004) - if [ -L ${ROOT}/lib64 ] ; then - ewarn "removing /lib64 symlink and moving lib to lib64..." - ewarn "dont hit ctrl-c until this is done" - addwrite ${ROOT}/ - rm ${ROOT}/lib64 - # now that lib64 is gone, nothing will run without calling ld.so - # directly. luckily the window of brokenness is almost non-existant - use amd64 && /lib/ld-linux-x86-64.so.2 /bin/mv ${ROOT}/lib ${ROOT}/lib64 - use ppc64 && /lib/ld64.so.1 /bin/mv ${ROOT}/lib ${ROOT}/lib64 - # all better :) - ldconfig - ln -s lib64 ${ROOT}/lib - einfo "done! :-)" - einfo "fixed broken lib64/lib symlink in ${ROOT}" - fi - if [ -L ${ROOT}/usr/lib64 ] ; then - addwrite ${ROOT}/usr - rm ${ROOT}/usr/lib64 - mv ${ROOT}/usr/lib ${ROOT}/usr/lib64 - ln -s lib64 ${ROOT}/usr/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr" - fi - if [ -L ${ROOT}/usr/X11R6/lib64 ] ; then - addwrite ${ROOT}/usr/X11R6 - rm ${ROOT}/usr/X11R6/lib64 - mv ${ROOT}/usr/X11R6/lib ${ROOT}/usr/X11R6/lib64 - ln -s lib64 ${ROOT}/usr/X11R6/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr/X11R6" - fi -} - -use_multilib() { - case ${CTARGET} in - sparc64*|mips64*|amd64|ppc64) - is_crosscompile || has_multilib_profile || use multilib ;; - *) false ;; - esac -} - -# Setup toolchain variables that would be defined in the profiles for these archs. -crosscompile_setup() { - if is_crosscompile || tc-is-cross-compiler; then - # CFLAGS are used by ${CTARGET}-gcc - local VAR="CFLAGS_"${CTARGET//-/_} - CFLAGS=${!VAR-"-O2"} - - case ${CTARGET} in - x86_64*) - export CFLAGS_x86=${CFLAGS_x86--m32} - export CHOST_x86=${CTARGET/x86_64/i686} - export CDEFINE_x86="__i386__" - export LIBDIR_x86="lib" - - export CFLAGS_amd64=${CFLAGS_amd64--m64} - export CHOST_amd64=${CTARGET} - export CDEFINE_amd64="__x86_64__" - export LIBDIR_amd64="lib64" - - export MULTILIB_ABIS="amd64" - export DEFAULT_ABI="amd64" - ;; - mips64*) - export CFLAGS_o32=${CFLAGS_o32--mabi=32} - export CHOST_o32=${CTARGET/mips64/mips} - export CDEFINE_o32="_ABIO32" - export LIBDIR_o32="lib" - - export CFLAGS_n32=${CFLAGS_n32--mabi=n32} - export CHOST_n32=${CTARGET} - export CDEFINE_n32="_ABIN32" - export LIBDIR_n32="lib32" - - export CFLAGS_n64=${CFLAGS_n64--mabi=64} - export CHOST_n64=${CTARGET} - export CDEFINE_n64="_ABI64" - export LIBDIR_n64="lib64" - - export MULTILIB_ABIS="n64 n32" - export DEFAULT_ABI="n32" - ;; - powerpc64*) - export CFLAGS_ppc=${CFLAGS_ppc--m32} - export CHOST_ppc=${CTARGET/powerpc64/powerpc} - export CDEFINE_ppc="!__powerpc64__" - export LIBDIR_ppc="lib" - - export CFLAGS_ppc64=${CFLAGS_ppc64--m64} - export CHOST_ppc64=${CTARGET} - export CDEFINE_ppc64="__powerpc64__" - export LIBDIR_ppc64="lib64" - - export MULTILIB_ABIS="ppc64" - export DEFAULT_ABI="ppc64" - ;; - sparc64*) - export CFLAGS_sparc32=${CFLAGS_sparc--m32} - export CHOST_sparc32=${CTARGET/sparc64/sparc} - export CDEFINE_sparc32="!__arch64__" - export LIBDIR_sparc32="lib" - - export CFLAGS_sparc64=${CFLAGS_sparc64--m64} - export CHOST_sparc64=${CTARGET} - export CDEFINE_sparc64="__arch64__" - export LIBDIR_sparc64="lib64" - - export MULTILIB_ABIS="sparc64" - export DEFAULT_ABI="sparc64" - ;; - *) - export MULTILIB_ABIS="default" - export DEFAULT_ABI="default" - esac - - ABI=${DEFAULT_ABI} - fi -} - -### /ECLASS PUNTAGE ### - -if is_crosscompile ; then - SLOT="${CTARGET}-2.2" -else - SLOT="2.2" -fi - -# we'll handle stripping ourself #46186 -RESTRICT="nostrip multilib-pkg-force" - -# We need new cleanup attribute support from gcc for NPTL among things ... -# We also need linux26-headers if using NPTL. Including kernel headers is -# incredibly unreliable, and this new linux-headers release from plasmaroo -# should work with userspace apps, at least on amd64 and ppc64. -# -# The gcc-config dep is for the cross-compile multilib stuff -DEPEND=">=sys-devel/gcc-3.2.3-r1 - nptl? ( >=sys-devel/gcc-3.3.1-r1 >=sys-kernel/linux-headers-${NPTL_KERNEL_VERSION} ) - >=sys-devel/binutils-2.14.90.0.6-r1 - || ( >=sys-devel/gcc-config-1.3.9 app-admin/eselect-compiler ) - virtual/os-headers - nls? ( sys-devel/gettext ) - selinux? ( !build? ( sys-libs/libselinux ) )" -RDEPEND="nls? ( sys-devel/gettext ) - selinux? ( !build? ( sys-libs/libselinux ) )" - -if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then - DEPEND="${DEPEND} ${CATEGORY}/gcc" - - if [[ ${CATEGORY} == *-linux* ]] ; then - if [[ ${CATEGORY/mips} != ${CATEGORY} ]] ; then - DEPEND="${DEPEND} >=${CATEGORY}/mips-headers-2.6.10" - else - DEPEND="${DEPEND} ${CATEGORY}/linux-headers" - fi - fi - - case ${CTARGET} in - x86_64-pc-linux-gnu) - [[ ${CHOST/-*/} == "i686" ]] || RDEPEND="${RDEPEND} cross-i686-pc-linux-gnu/${PN}" - ;; - sparc64-unknown-linux-gnu) - [[ ${CHOST/-*/} == "sparc" ]] || RDEPEND="${RDEPEND} cross-sparc-unknown-linux-gnu/${PN}" - ;; - powerpc64-unknown-linux-gnu) - [[ ${CHOST/-*/} == "powerpc" ]] || RDEPEND="${RDEPEND} cross-powerpc-unknown-linux-gnu/${PN}" - ;; - mips64-unknown-linux-gnu) - [[ ${CHOST/-*/} == "mips" ]] || RDEPEND="${RDEPEND} cross-mips-unknown-linux-gnu/${PN}" - ;; - esac -fi - -pkg_setup() { - if use nptlonly && ! use nptl ; then - eerror "If you want nptlonly, add nptl to your USE too ;p" - die "nptlonly without nptl" - fi - - # give some sort of warning about the nptl logic changes... - if want_nptl && want_linuxthreads ; then - ewarn "Warning! Gentoo's GLIBC with NPTL enabled now behaves like the" - ewarn "glibc from almost every other distribution out there. This means" - ewarn "that glibc is compiled -twice-, once with linuxthreads and once" - ewarn "with nptl. The NPTL version is installed to lib/tls and is still" - ewarn "used by default. If you do not need nor want the linuxthreads" - ewarn "fallback, you can disable this behavior by adding nptlonly to" - ewarn "USE to save yourself some compile time." - - ebeep - epause 5 - fi -} - -src_unpack() { - crosscompile_setup - export ABI="${DEFAULT_ABI}" - - case $(tc-arch) in - hppa) - GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 2000-all-2.3.2-propolice-guard-functions-v3.patch" - use hardened || GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 6490_hppa_hardened-disable__init_arrays.patch" - ;; - mips) - GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 3000-all-2.3.4-dl_execstack-PaX-support.patch" - use_multilib && GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 6680_mips_nolib3264.patch" - ;; - esac - - use nomalloccheck || GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 5020_all_nomalloccheck.patch" - - toolchain-glibc_src_unpack - - case $(tc-arch) in - alpha) - # Is this still needed? - rm -f sysdeps/alpha/alphaev6/memcpy.S - ;; - amd64) - if ! has_multilib_profile && ! is_crosscompile; then - # CONF_LIBDIR support - epatch ${FILESDIR}/2.3.4/glibc-gentoo-libdir.patch - sed -i -e "s:@GENTOO_LIBDIR@:$(get_libdir):g" ${S}/sysdeps/unix/sysv/linux/configure - fi - ;; - ppc64) - # setup lib -- seems like a good place to set this up - has_multilib_profile || get_libdir_override lib64 - ;; - esac - - # disable binutils -as-needed - sed -e 's/^have-as-needed.*/have-as-needed = no/' -i ${S}/config.make.in - - # Glibc is stupid sometimes, and doesn't realize that with a - # static C-Only gcc, -lgcc_eh doesn't exist. - # http://sources.redhat.com/ml/libc-alpha/2003-09/msg00100.html - # http://sourceware.org/ml/libc-alpha/2005-02/msg00042.html - echo 'int main(){}' > ${T}/gcc_eh_test.c - if ! $(tc-getCC ${CTARGET}) ${T}/gcc_eh_test.c -lgcc_eh 2>/dev/null ; then - sed -i -e 's:-lgcc_eh::' Makeconfig || die "sed gcc_eh" - fi - - # Some configure checks fail on the first emerge through because they - # try to link. This doesn't work well if we don't have a libc yet. - # http://sourceware.org/ml/libc-alpha/2005-02/msg00042.html - if is_crosscompile && use build; then - rm ${S}/sysdeps/sparc/sparc64/elf/configure{,.in} - rm ${S}/nptl/sysdeps/pthread/configure{,.in} - fi - - find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \; - find . -name configure -exec touch {} \; - - # Fix permissions on some of the scripts - chmod u+x ${S}/scripts/*.sh -} - -src_compile() { - crosscompile_setup - - if [[ -z ${OABI} ]] && has_multilib_profile ; then - # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage - local MLTEST=$(type dyn_unpack) - if [[ ${MLTEST/set_abi} == "${MLTEST}" ]] ; then - OABI=${ABI} - einfo "Building multilib glibc for ABIs: $(get_install_abis)" - for ABI in $(get_install_abis) ; do - export ABI=${ABI} - src_compile - done - ABI=${OABI} - unset OABI - return 0 - fi - unset MLTEST - fi - - ABI=${ABI:-default} - toolchain-glibc_src_compile -} - -src_test() { - crosscompile_setup - - if [[ -z ${OABI} ]] && has_multilib_profile ; then - # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage - local MLTEST=$(type dyn_unpack) - if [[ ${MLTEST/set_abi} == "${MLTEST}" ]] ; then - OABI=${ABI} - einfo "Testing multilib glibc for ABIs: $(get_install_abis)" - for ABI in $(get_install_abis) ; do - export ABI - einfo " Testing ${ABI} glibc" - src_test - done - ABI=${OABI} - unset OABI - return 0 - fi - unset MLTEST - fi - - ABI=${ABI:-default} - toolchain-glibc_src_test -} - -src_install() { - crosscompile_setup - - if [[ -z ${OABI} ]] && has_multilib_profile ; then - # MULTILIB-CLEANUP: Fix this when FEATURES=multilib-pkg is in portage - local MLTEST=$(type dyn_unpack) - if [[ ${MLTEST/set_abi} == "${MLTEST}" ]] ; then - OABI=${ABI} - einfo "Installing multilib glibc for ABIs: $(get_install_abis)" - for ABI in $(get_install_abis) ; do - export ABI - src_install - done - ABI=${OABI} - unset OABI - return 0 - fi - unset MLTEST - fi - - ABI=${ABI:-default} - - # Handle stupid lib32 BS - unset OLD_LIBDIR - if ! is_crosscompile ; then - if [[ $(tc-arch) == "amd64" && ${ABI} == "x86" && $(get_libdir) != "lib" ]] ; then - OLD_LIBDIR=$(get_libdir) - LIBDIR_x86="lib" - fi - - if [[ $(tc-arch) == "ppc64" && ${ABI} == "ppc" && $(get_libdir) != "lib" ]] ; then - OLD_LIBDIR=$(get_libdir) - LIBDIR_ppc="lib" - fi - fi - - toolchain-glibc_src_install - - # Handle stupid lib32 BS on amd64 and ppc64 - if [[ -n ${OLD_LIBDIR} ]] ; then - cd "${S}" - [[ $(tc-arch) == "amd64" ]] && LIBDIR_x86=${OLD_LIBDIR} - [[ $(tc-arch) == "ppc64" ]] && LIBDIR_ppc=${OLD_LIBDIR} - unset OLD_LIBDIR - - mv "${D}"/lib "${D}"/$(get_libdir) - mv "${D}"/usr/lib "${D}"/usr/$(get_libdir) - dodir /lib - dodir /usr/lib - mv "${D}"/usr/$(get_libdir)/locale "${D}"/usr/lib - [[ $(tc-arch) == "amd64" ]] && dosym ../$(get_libdir)/ld-linux.so.2 /lib/ld-linux.so.2 - [[ $(tc-arch) == "ppc64" ]] && dosym ../$(get_libdir)/ld.so.1 /lib/ld.so.1 - - for f in "${D}"/usr/$(get_libdir)/*.so; do - local basef=$(basename "${f}") - if [[ -L ${f} ]] ; then - local target=$(readlink "${f}") - target=${target/\/lib\//\/$(get_libdir)\/} - rm "${f}" - dosym "${target}" /usr/$(get_libdir)/"${basef}" - fi - done - - dosed "s:/lib/:/$(get_libdir)/:g" /usr/$(get_libdir)/lib{c,pthread}.so - - if want_nptl && want_linuxthreads ; then - dosed "s:/lib/:/$(get_libdir)/:g" /usr/$(get_libdir)/nptl/lib{c,pthread}.so - fi - fi -} - -pkg_preinst() { - toolchain-glibc_pkg_preinst -} - -pkg_postinst() { - toolchain-glibc_pkg_postinst -} diff --git a/sys-libs/glibc/glibc-2.3.6-r3.ebuild b/sys-libs/glibc/glibc-2.3.6-r3.ebuild deleted file mode 100644 index be1c9d420b19..000000000000 --- a/sys-libs/glibc/glibc-2.3.6-r3.ebuild +++ /dev/null @@ -1,1390 +0,0 @@ -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.3.6-r3.ebuild,v 1.23 2006/09/14 08:55:35 kugelfang Exp $ - -# TODO: -# - fix warning from glibc build system: -# /var/tmp/portage/glibc-2.3.6-r2/work/build-x86-x86_64-pc-linux-gnu-nptl/elf/ldconfig: Can't open configuration file /etc/ld.so.conf: No such file or directory -# - fix warning from ebuild (amd64 multilib): -# mv: cannot stat `/var/tmp/portage/glibc-2.3.6-r2/image//usr/lib32/locale': No such file or directory -# - glibc installs a bunch of lib64 stuff into /usr/lib: -# qlist glibc | grep ^/usr/lib/ | grep -v /debug/ - -# Here's how the cross-compile logic breaks down ... -# CTARGET - machine that will target the binaries -# CHOST - machine that will host the binaries -# CBUILD - machine that will build the binaries -# If CTARGET != CHOST, it means you want a libc for cross-compiling. -# If CHOST != CBUILD, it means you want to cross-compile the libc. -# CBUILD = CHOST = CTARGET - native build/install -# CBUILD != (CHOST = CTARGET) - cross-compile a native build -# (CBUILD = CHOST) != CTARGET - libc for cross-compiler -# CBUILD != CHOST != CTARGET - cross-compile a libc for a cross-compiler -# For install paths: -# CHOST = CTARGET - install into / -# CHOST != CTARGET - install into /usr/CTARGET/ - -#KEYWORDS="~amd64 ~arm -hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" -KEYWORDS="-* ~alpha amd64 arm ~ia64 mips ppc ~ppc64 ~s390 sparc x86" - -BRANCH_UPDATE="" - -# From linuxthreads/man -GLIBC_MANPAGE_VERSION="2.3.6-1" - -# From manual -GLIBC_INFOPAGE_VERSION="2.3.6" - -# Gentoo patchset -PATCH_VER="1.8" - -# C Stubbs addon (contained in fedora, so ignoring) -#CSTUBS_VER="2.1.2" -#CSTUBS_TARBALL="c_stubs-${CSTUBS_VER}.tar.bz2" -#CSTUBS_URI="mirror://gentoo/${CSTUBS_TARBALL}" - -# Fedora addons (from RHEL's glibc-2.3.4-2.src.rpm) -FEDORA_VER="20041219T2331" -FEDORA_TARBALL="glibc-fedora-${FEDORA_VER}.tar.bz2" -FEDORA_URI="mirror://gentoo/${FEDORA_TARBALL}" - -GENTOO_TOOLCHAIN_BASE_URI="mirror://gentoo" -GENTOO_TOOLCHAIN_DEV_URI="http://dev.gentoo.org/~azarah/glibc" - -### PUNT OUT TO ECLASS?? ### -inherit eutils versionator libtool toolchain-funcs flag-o-matic gnuconfig multilib - -DESCRIPTION="GNU libc6 (also called glibc2) C library" -HOMEPAGE="http://www.gnu.org/software/libc/libc.html" -LICENSE="LGPL-2" - -IUSE="nls pic build nptl nptlonly erandom hardened userlocales multilib selinux glibc-compat20 glibc-omitfp linuxthreads-tls profile" - -export CBUILD=${CBUILD:-${CHOST}} -export CTARGET=${CTARGET:-${CHOST}} -if [[ ${CTARGET} == ${CHOST} ]] ; then - if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then - export CTARGET=${CATEGORY/cross-} - fi -fi -if [[ ${CTARGET} == ${CHOST} ]] ; then - PROVIDE="virtual/libc" -fi - -is_crosscompile() { - [[ ${CHOST} != ${CTARGET} ]] -} -just_headers() { - is_crosscompile && use crosscompile_opts_headers-only -} - -GLIBC_RELEASE_VER=$(get_version_component_range 1-3) - -# Don't set this to :-, - allows BRANCH_UPDATE="" -BRANCH_UPDATE=${BRANCH_UPDATE-$(get_version_component_range 4)} - -# (Recent snapshots fails with 2.6.5 and earlier with NPTL) -NPTL_KERNEL_VERSION=${NPTL_KERNEL_VERSION:-"2.6.9"} -LT_KERNEL_VERSION=${LT_KERNEL_VERSION:-"2.4.1"} - -### SRC_URI ### - -# This function handles the basics of setting the SRC_URI for a glibc ebuild. -# To use, set SRC_URI with: -# -# SRC_URI="$(get_glibc_src_uri)" -# -# Other than the variables normally set by portage, this function's behavior -# can be altered by setting the following: -# -# GENTOO_TOOLCHAIN_BASE_URI -# This sets the base URI for all gentoo-specific patch files. Note -# that this variable is only important for a brief period of time, -# before your source files get picked up by mirrors. However, it is -# still highly suggested that you keep files in this location -# available. -# -# BRANCH_UPDATE -# If set, this variable signals that we should be using the main -# release tarball (determined by ebuild version) and applying a -# CVS branch update patch against it. The location of this branch -# update patch is assumed to be in ${GENTOO_TOOLCHAIN_BASE_URI}. -# Just like with SNAPSHOT, this variable is ignored if the ebuild -# has a _pre suffix. -# -# PATCH_VER -# PATCH_GLIBC_VER -# This should be set to the version of the gentoo patch tarball. -# The resulting filename of this tarball will be: -# glibc-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2 -# -# GLIBC_MANPAGE_VERSION -# GLIBC_INFOPAGE_VERSION -# The version of glibc for which we will download pages. This will -# default to ${GLIBC_RELEASE_VER}, but we may not want to pre-generate man pages -# for prerelease test ebuilds for example. This allows you to -# continue using pre-generated manpages from the last stable release. -# If set to "none", this will prevent the downloading of manpages, -# which is useful for individual library targets. -# -get_glibc_src_uri() { - GENTOO_TOOLCHAIN_BASE_URI=${GENTOO_TOOLCHAIN_BASE_URI:-"mirror://gentoo"} - -# GLIBC_SRC_URI="http://ftp.gnu.org/gnu/glibc/glibc-${GLIBC_RELEASE_VER}.tar.bz2 -# http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-${GLIBC_RELEASE_VER}.tar.bz2 -# http://ftp.gnu.org/gnu/glibc/glibc-libidn-${GLIBC_RELEASE_VER}.tar.bz2 - GLIBC_SRC_URI="mirror://gnu/glibc/glibc-${GLIBC_RELEASE_VER}.tar.bz2 - mirror://gnu/glibc/glibc-linuxthreads-${GLIBC_RELEASE_VER}.tar.bz2 - mirror://gnu/glibc/glibc-libidn-${GLIBC_RELEASE_VER}.tar.bz2" - - if [[ -n ${BRANCH_UPDATE} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/glibc-${GLIBC_RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2" - [[ -n ${GENTOO_TOOLCHAIN_DEV_URI} ]] && - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_DEV_URI}/glibc-${GLIBC_RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2" - fi - - if [[ -n ${PATCH_VER} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/glibc-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2" - [[ -n ${GENTOO_TOOLCHAIN_DEV_URI} ]] && - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_DEV_URI}/glibc-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2" - fi - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/glibc-manpages-${GLIBC_MANPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2" - [[ -n ${GENTOO_TOOLCHAIN_DEV_URI} ]] && - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_DEV_URI}/glibc-manpages-${GLIBC_MANPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2" - fi - - if [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/glibc-infopages-${GLIBC_INFOPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2" - [[ -n ${GENTOO_TOOLCHAIN_DEV_URI} ]] && - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_DEV_URI}/glibc-infopages-${GLIBC_INFOPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2" - fi - - if [[ -n ${CSTUBS_URI} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} ${CSTUBS_URI}" - fi - - if [[ -n ${FEDORA_URI} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} ${FEDORA_URI}" - fi - - echo "${GLIBC_SRC_URI}" -} - -SRC_URI=$(get_glibc_src_uri) -S=${WORKDIR}/glibc-${GLIBC_RELEASE_VER} - -### EXPORTED FUNCTIONS ### -toolchain-glibc_src_unpack() { - # Check NPTL support _before_ we unpack things to save some time - want_nptl && check_nptl_support - - unpack glibc-${GLIBC_RELEASE_VER}.tar.bz2 - - cd "${S}" - unpack glibc-linuxthreads-${GLIBC_RELEASE_VER}.tar.bz2 - unpack glibc-libidn-${GLIBC_RELEASE_VER}.tar.bz2 - - [[ -n ${CSTUBS_TARBALL} ]] && unpack ${CSTUBS_TARBALL} - [[ -n ${FEDORA_TARBALL} ]] && unpack ${FEDORA_TARBALL} - - if [[ -n ${PATCH_VER} ]] ; then - cd "${WORKDIR}" - unpack glibc-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2 - fi - - # XXX: We should do the branchupdate, before extracting the manpages and - # infopages else it does not help much (mtimes change if there is a change - # to them with branchupdate) - if [[ -n ${BRANCH_UPDATE} ]] ; then - cd "${S}" - epatch "${DISTDIR}"/glibc-${GLIBC_RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2 - - # Snapshot date patch - einfo "Patching version to display snapshot date ..." - sed -i -e "s:\(#define RELEASE\).*:\1 \"${BRANCH_UPDATE}\":" version.h - fi - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - cd "${WORKDIR}" - unpack glibc-manpages-${GLIBC_MANPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2 - fi - - if [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - cd "${S}" - unpack glibc-infopages-${GLIBC_INFOPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2 - fi - - # Broken for hardened users #124682 - use hardened && GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 6905_amd64_2.3.3-amd64-string.patch" - - if [[ -n ${PATCH_VER} ]] ; then - cd "${S}" - EPATCH_MULTI_MSG="Applying Gentoo Glibc Patchset ${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-${PATCH_VER} ..." \ - EPATCH_EXCLUDE=${GLIBC_PATCH_EXCLUDE} \ - EPATCH_SUFFIX="patch" \ - ARCH=$(tc-arch) \ - epatch "${WORKDIR}"/patches - fi -} - -toolchain-glibc_src_compile() { - # Set gconvdir to /usr/$(get_libdir)/gconv on archs with multiple ABIs - local MAKEFLAGS="" - has_multilib_profile && MAKEFLAGS="gconvdir=$(alt_usrlibdir)/gconv" - - echo - for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CFLAGS ; do - einfo " $(printf '%15s' ${v}:) ${!v}" - done - echo - - if want_linuxthreads ; then - glibc_do_configure linuxthreads - einfo "Building GLIBC with linuxthreads..." - make PARALLELMFLAGS="${MAKEOPTS}" ${MAKEFLAGS} || die "make for ${ABI} failed" - fi - if want_nptl ; then - # ... and then do the optional nptl build - unset LD_ASSUME_KERNEL - glibc_do_configure nptl - einfo "Building GLIBC with NPTL..." - make PARALLELMFLAGS="${MAKEOPTS}" ${MAKEFLAGS} || die "make for ${ABI} failed" - fi -} - -toolchain-glibc_headers_compile() { - GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-headers - mkdir -p "${GBUILDDIR}" - cd "${GBUILDDIR}" - - # Pick out the correct location for build headers - local myconf="--disable-sanity-checks --enable-hacker-mode" - myconf="${myconf} - --enable-add-ons=linuxthreads - --without-cvs - --enable-bind-now - --build=${CBUILD_OPT:-${CBUILD}} - --host=${CTARGET_OPT:-${CTARGET}} - --with-headers=$(alt_build_headers) - --prefix=$(alt_prefix) - --mandir=$(alt_prefix)/share/man - --infodir=$(alt_prefix)/share/info - --libexecdir=$(alt_prefix)/lib/misc/glibc - ${EXTRA_ECONF}" - - einfo "Configuring GLIBC headers with: ${myconf// /\n\t\t}" - CC=gcc \ - CFLAGS="-O1 -pipe" \ - ${S}/configure ${myconf} || die "failed to configure glibc" -} - -toolchain-glibc_src_test() { - # This is wrong, but glibc's tests fail bad when screwing - # around with sandbox, so lets just punt it - unset LD_PRELOAD - - # do the linuxthreads build unless we're using nptlonly - if want_linuxthreads ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-linuxthreads - einfo "Checking GLIBC with linuxthreads..." - make check || die "linuxthreads glibc did not pass make check" - fi - if want_nptl ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - unset LD_ASSUME_KERNEL || : - einfo "Checking GLIBC with NPTL..." - make check || die "nptl glibc did not pass make check" - fi -} - -toolchain-glibc_pkg_preinst() { - # PPC64+others may want to eventually be added to this logic if they - # decide to be multilib compatible and FHS compliant. note that this - # chunk of FHS compliance only applies to 64bit archs where 32bit - # compatibility is a major concern (not IA64, for example). - - # amd64's 2005.0 is the first amd64 profile to not need this code. - # 2005.0 is setup properly, and this is executed as part of the - # 2004.3 -> 2005.0 upgrade script. - # It can be removed after 2004.3 has been purged from portage. - { use amd64 || use ppc64; } && [ "$(get_libdir)" == "lib64" ] && ! has_multilib_profile && fix_lib64_symlinks - - # it appears that /lib/tls is sometimes not removed. See bug - # 69258 for more info. - if [[ -d ${ROOT}/$(alt_libdir)/tls ]] && ! { want_nptl && want_linuxthreads; }; then - addwrite "${ROOT}"/$(alt_libdir)/ - ewarn "nptlonly or -nptl in USE, removing /${ROOT}$(alt_libdir)/tls..." - rm -r "${ROOT}"/$(alt_libdir)/tls || die - fi - - # Shouldnt need to keep this updated - [[ -e ${ROOT}/etc/locales.build ]] && rm -f "${D}"/etc/locales.build -} - -toolchain-glibc_src_install() { - # Need to dodir first because it might not exist (bad amd64 profiles) - dodir $(alt_usrlibdir) - - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - - if want_linuxthreads ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-linuxthreads - einfo "Installing GLIBC ${ABI} with linuxthreads ..." - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root="${D}" \ - install || die - else # nptlonly - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - einfo "Installing GLIBC ${ABI} with NPTL ..." - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root="${D}" \ - install || die - fi - - if is_crosscompile ; then - # punt all the junk not needed by a cross-compiler - rm -rf "${D}"$(alt_prefix)/{bin,etc,$(get_libdir)/{gconv,misc},sbin,share} - else - # zoneinfo stuff is now provided by the timezone-data package - rm -rf "${D}"/usr/share/zoneinfo - rm -f "${D}"/usr/bin/tzselect - rm -f "${D}"/usr/sbin/{zic,zdump} - fi - - if want_linuxthreads && want_nptl ; then - einfo "Installing NPTL to $(alt_libdir)/tls/..." - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - mkdir -p "${D}"$(alt_libdir)/tls/ - - libcsofile=$(basename "${D}"$(alt_libdir)/libc-*.so) - cp -a libc.so "${D}"$(alt_libdir)/tls/${libcsofile} || die - dosym ${libcsofile} $(alt_libdir)/tls/$(ls libc.so.*) - - libmsofile=$(basename "${D}"$(alt_libdir)/libm-*.so) - pushd math > /dev/null - cp -a libm.so "${D}"$(alt_libdir)/tls/${libmsofile} || die - dosym ${libmsofile} $(alt_libdir)/tls/$(ls libm.so.*) - popd > /dev/null - - librtsofile=$(basename "${D}"$(alt_libdir)/librt-*.so) - pushd rt > /dev/null - cp -a librt.so "${D}"$(alt_libdir)/tls/${librtsofile} || die - dosym ${librtsofile} $(alt_libdir)/tls/$(ls librt.so.*) - popd > /dev/null - - libthreaddbsofile=$(basename "${D}"$(alt_libdir)/libthread_db-*.so) - pushd nptl_db > /dev/null - cp -a libthread_db.so "${D}"$(alt_libdir)/tls/${libthreaddbsofile} || die - dosym ${libthreaddbsofile} $(alt_libdir)/tls/$(ls libthread_db.so.*) - popd > /dev/null - - libpthreadsofile=libpthread-${GLIBC_RELEASE_VER}.so - cp -a nptl/libpthread.so "${D}"$(alt_libdir)/tls/${libpthreadsofile} || die - dosym ${libpthreadsofile} $(alt_libdir)/tls/libpthread.so.0 - - # and now for the static libs - mkdir -p "${D}"$(alt_usrlibdir)/nptl - cp -a libc.a nptl/libpthread.a nptl/libpthread_nonshared.a rt/librt.a \ - "${D}"$(alt_usrlibdir)/nptl - - # linker script crap - for lib in libc libpthread; do - sed -e "s:$(alt_libdir)/${lib}.so:$(alt_libdir)/tls/${lib}.so:g" \ - -e "s:$(alt_usrlibdir)/${lib}_nonshared.a:$(alt_usrlibdir)/nptl/${lib}_nonshared.a:g" \ - "${D}"$(alt_usrlibdir)/${lib}.so \ - > "${D}"$(alt_usrlibdir)/nptl/${lib}.so - - chmod 755 "${D}"$(alt_usrlibdir)/nptl/${lib}.so - done - - dosym ../librt.so $(alt_usrlibdir)/nptl/librt.so - - # last but not least... headers. - mkdir -p "${D}"/nptl "${D}"$(alt_headers)/nptl - make install_root="${D}"/nptl install-headers PARALLELMFLAGS="${MAKEOPTS} -j1" - pushd "${D}"/nptl/$(alt_headers) > /dev/null - for i in $(find . -type f) ; do - if ! [[ -f ${D}$(alt_headers)/$i ]] \ - || ! cmp -s $i ${D}$(alt_headers)/$i; then - mkdir -p ${D}$(alt_headers)/nptl/`dirname $i` - cp -a $i ${D}$(alt_headers)/nptl/$i - fi - done - popd > /dev/null - rm -rf ${D}/nptl - fi - - if use pic && [[ $(tc-arch) != "amd64" ]] ; then - find ${S}/${buildtarget}/ -name "soinit.os" -exec cp {} ${D}$(alt_libdir)/soinit.o \; - find ${S}/${buildtarget}/ -name "sofini.os" -exec cp {} ${D}$(alt_libdir)/sofini.o \; - find ${S}/${buildtarget}/ -name "*_pic.a" -exec cp {} ${D}$(alt_libdir) \; - find ${S}/${buildtarget}/ -name "*.map" -exec cp {} ${D}$(alt_libdir) \; - - for i in ${D}$(alt_libdir)/*.map; do - mv ${i} ${i%.map}_pic.map - done - fi - - # We'll take care of the cache ourselves - rm -f ${D}/etc/ld.so.cache - - # Some things want this, notably ash. - dosym libbsd-compat.a $(alt_usrlibdir)/libbsd.a - - # Handle includes for different ABIs - prep_ml_includes $(alt_headers) - - ################################################################# - # EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY # - # Make sure we install the sys-include symlink so that when - # we build a 2nd stage cross-compiler, gcc finds the target - # system headers correctly. See gcc/doc/gccinstall.info - if is_crosscompile ; then - dosym include $(alt_prefix)/sys-include - dosym . $(alt_prefix)/usr - return 0 - fi - - # Everything past this point just needs to be done once... don't waste time building locale files twice... - is_final_abi || return 0 - - if want_linuxthreads ; then - MYMAINBUILDDIR=build-${ABI}-${CTARGET}-linuxthreads - else - MYMAINBUILDDIR=build-${ABI}-${CTARGET}-nptl - fi - cd "${WORKDIR}"/${MYMAINBUILDDIR} - if ! use build ; then - if ! has noinfo ${FEATURES} && [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - einfo "Installing info pages..." - - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root=${D} \ - info -i - fi - - setup_locales - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - einfo "Installing man pages..." - - # Install linuxthreads man pages even if nptl is enabled - cd "${WORKDIR}"/man - doman *.3thr - fi - - # Install nscd config file - insinto /etc - doins ${FILESDIR}/nscd.conf - doins "${FILESDIR}"/nsswitch.conf - - doinitd "${FILESDIR}"/nscd - - cd ${S} - dodoc BUGS ChangeLog* CONFORMANCE FAQ INTERFACE NEWS NOTES PROJECTS README* - else - rm -rf ${D}/usr/share - for dir in $(get_all_libdirs); do - rm -rf ${D}/usr/${dir}/gconv &> /dev/null - done - fi - - # Is this next line actually needed or does the makefile get it right? - # It previously has 0755 perms which was killing things. - fperms 4711 $(alt_prefix)/lib/misc/glibc/pt_chown - - # Prevent overwriting of the /etc/localtime symlink. We'll handle the - # creation of the "factory" symlink in pkg_postinst(). - rm -f ${D}/etc/localtime - - insinto /etc - # This is our new config file for building locales - doins ${FILESDIR}/locales.build - # example host.conf with multicast dns disabled by default - doins ${FILESDIR}/2.3.6/host.conf - - # simple test to make sure our new glibc isnt completely broken. - # for now, skip the multilib scenario. also make sure we don't - # test with statically built binaries since they will fail. - [[ ${CBUILD} != ${CHOST} ]] && return 0 - [[ $(get_libdir) != "lib" ]] && return 0 - for x in date env ls true uname ; do - x=$(type -p ${x}) - [[ -z ${x} ]] && continue - striptest=$(file -L ${x} 2>/dev/null) - [[ -z ${striptest} ]] && continue - [[ ${striptest/statically linked} != "${striptest}" ]] && continue - "${D}"/$(get_libdir)/ld-*.so \ - --library-path "${D}"/$(get_libdir) \ - ${x} > /dev/null \ - || die "simple run test (${x}) failed" - done -} - -toolchain-glibc_headers_install() { - GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-headers - cd "${GBUILDDIR}" - make install_root="${D}" install-headers || die "install-headers failed" - # Copy over headers that are not part of install-headers ... these - # are pretty much taken verbatim from crosstool, see it for more details - insinto $(alt_headers)/bits - doins misc/syscall-list.h bits/stdio_lim.h || die "doins include bits" - insinto $(alt_headers)/gnu - doins "${S}"/include/gnu/stubs.h || die "doins include gnu" - # Make sure we install the sys-include symlink so that when - # we build a 2nd stage cross-compiler, gcc finds the target - # system headers correctly. See gcc/doc/gccinstall.info - dosym include $(alt_prefix)/sys-include - dosym . $(alt_prefix)/usr -} - -toolchain-glibc_pkg_postinst() { - # Mixing nptlonly and -nptlonly glibc can prove dangerous if libpthread - # isn't removed in unmerge which happens sometimes. See bug #87671 - if ! is_crosscompile && want_linuxthreads ; then - for libdir in $(get_all_libdirs) ; do - for f in ${ROOT}/${libdir}/libpthread-2.* ${ROOT}/${libdir}/libpthread-0.6* ; do - if [[ -f ${f} ]] ; then - rm -f ${f} - ldconfig - fi - done - done - fi - - if ! is_crosscompile && [ -x "${ROOT}/usr/sbin/iconvconfig" ] ; then - # Generate fastloading iconv module configuration file. - ${ROOT}/usr/sbin/iconvconfig --prefix=${ROOT} - fi - - if [ ! -e "${ROOT}/lib/ld.so.1" ] && use ppc64 && ! has_multilib_profile ; then - ## SHOULDN'T THIS BE lib64?? - ln -s ld64.so.1 ${ROOT}/lib/ld.so.1 - fi - - # Reload init ... - if ! is_crosscompile && [ "${ROOT}" = "/" ] ; then - /sbin/telinit U &> /dev/null - fi - - echo - einfo "Gentoo's glibc no longer includes mdns." - einfo "If you want mdns, emerge the sys-auth/nss-mdns package." - echo - - if want_nptl && want_linuxthreads ; then - einfo "The default behavior of glibc on your system is to use NPTL. If" - einfo "you want to use linuxthreads for a particular program, start it" - einfo "by executing 'LD_ASSUME_KERNEL=${LT_KERNEL_VERSION} []'" - echo - fi -} - -### SUPPORT FUNCTIONS ### -# We need to be able to set alternative headers for -# compiling for non-native platform -# Will also become useful for testing kernel-headers without screwing up -# the whole system. -# note: intentionally undocumented. -alt_headers() { - if [[ -z ${ALT_HEADERS} ]] ; then - if is_crosscompile ; then - ALT_HEADERS="/usr/${CTARGET}/include" - else - ALT_HEADERS="/usr/include" - fi - fi - echo "${ALT_HEADERS}" -} -alt_build_headers() { - if [[ -z ${ALT_BUILD_HEADERS} ]] ; then - ALT_BUILD_HEADERS=$(alt_headers) - tc-is-cross-compiler && ALT_BUILD_HEADERS=${ROOT}$(alt_headers) - fi - echo "${ALT_BUILD_HEADERS}" -} - -alt_prefix() { - if is_crosscompile ; then - echo /usr/${CTARGET} - else - echo /usr - fi -} - -alt_libdir() { - if is_crosscompile ; then - echo /usr/${CTARGET}/$(get_libdir) - else - echo /$(get_libdir) - fi -} - -alt_usrlibdir() { - if is_crosscompile ; then - echo /usr/${CTARGET}/$(get_libdir) - else - echo /usr/$(get_libdir) - fi -} - -setup_flags() { - # Make sure host make.conf doesn't pollute us - if is_crosscompile || tc-is-cross-compiler ; then - CHOST=${CTARGET} strip-unsupported-flags - fi - - # Store our CFLAGS because it's changed depending on which CTARGET - # we are building when pulling glibc on a multilib profile - CFLAGS_BASE=${CFLAGS_BASE-${CFLAGS}} - CFLAGS=${CFLAGS_BASE} - ASFLAGS_BASE=${ASFLAGS_BASE-${ASFLAGS}} - ASFLAGS=${ASFLAGS_BASE} - - # Over-zealous CFLAGS can often cause problems. What may work for one - # person may not work for another. To avoid a large influx of bugs - # relating to failed builds, we strip most CFLAGS out to ensure as few - # problems as possible. - strip-flags - strip-unsupported-flags - filter-flags -m32 -m64 -mabi=* - - unset CBUILD_OPT CTARGET_OPT - if has_multilib_profile ; then - CTARGET_OPT=$(get_abi_CTARGET) - [[ -z ${CTARGET_OPT} ]] && CTARGET_OPT=$(get_abi_CHOST) - fi - - case $(tc-arch) in - amd64) - # Punt this when amd64's 2004.3 is removed - CFLAGS_x86="-m32" - ;; - ppc) - append-flags "-freorder-blocks" - ;; - sparc) - # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though. - filter-flags "-fcall-used-g7" - append-flags "-fcall-used-g6" - filter-flags "-mvis" - - if is_crosscompile || [[ ${PROFILE_ARCH} == "sparc64" ]] || { has_multilib_profile && ! tc-is-cross-compiler; } ; then - case ${ABI} in - sparc64) - filter-flags -Wa,-xarch -Wa,-A - - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparc64b-unknown-linux-gnu" - append-flags "-Wa,-xarch=v9b" - export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9b" - else - CTARGET_OPT="sparc64-unknown-linux-gnu" - append-flags "-Wa,-xarch=v9a" - export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9a" - fi - ;; - *) - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparcv9b-unknown-linux-gnu" - else - CTARGET_OPT="sparcv9-unknown-linux-gnu" - fi - ;; - esac - else - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparcv9b-unknown-linux-gnu" - elif { is_crosscompile && want_nptl; } || is-flag "-mcpu=ultrasparc2" || is-flag "-mcpu=ultrasparc"; then - CTARGET_OPT="sparcv9-unknown-linux-gnu" - fi - fi - ;; - esac - - if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then - CBUILD_OPT=${CTARGET_OPT} - fi - - if $(tc-getCC ${CTARGET}) -v 2>&1 | grep -q 'gcc version 3.[0123]'; then - append-flags -finline-limit=2000 - fi - - # We dont want these flags for glibc - filter-ldflags -pie - - # We cannot build glibc with Bdirect support - filter-flags -Wl,-Bdirect - filter-ldflags -Bdirect - filter-ldflags -Wl,-Bdirect - - # Same for hashvals ... - filter-flags -Wl,-hashvals - filter-ldflags -hashvals - filter-ldflags -Wl,-hashvals - - # Lock glibc at -O2 -- linuxthreads needs it and we want to be - # conservative here - filter-flags -O? - append-flags -O2 -} - -check_kheader_version() { - local header="$(alt_build_headers)/linux/version.h" - - [[ -z $1 ]] && return 1 - - if [ -f "${header}" ] ; then - local version="`grep 'LINUX_VERSION_CODE' ${header} | \ - sed -e 's:^.*LINUX_VERSION_CODE[[:space:]]*::'`" - - if [ "${version}" -ge "$1" ] ; then - return 0 - fi - fi - - return 1 -} - -check_nptl_support() { - local min_kernel_version="$(KV_to_int "${NPTL_KERNEL_VERSION}")" - - echo - - einfon "Checking gcc for __thread support ... " - if want__thread ; then - echo "yes" - else - echo "no" - echo - eerror "Could not find a gcc that supports the __thread directive!" - eerror "please update to gcc-3.2.2-r1 or later, and try again." - die "No __thread support in gcc!" - fi - - # Building fails on an non-supporting kernel - einfon "Checking kernel version (>=${NPTL_KERNEL_VERSION}) ... " - if [ "`get_KV`" -lt "${min_kernel_version}" ] ; then - echo "no" - echo - eerror "You need a kernel of at least version ${NPTL_KERNEL_VERSION}" - eerror "for NPTL support!" - die "Kernel version too low!" - else - echo "yes" - fi - - # Building fails with too low linux-headers - einfon "Checking linux-headers version (>=${NPTL_KERNEL_VERSION}) ... " - if ! check_kheader_version "${min_kernel_version}"; then - echo "no" - echo - eerror "You need linux-headers of at least version ${NPTL_KERNEL_VERSION}" - eerror "for NPTL support!" - die "linux-headers version too low!" - else - echo "yes" - fi - - echo -} - -want_nptl() { - want_tls || return 1 - use nptl || return 1 - - # Archs that can use NPTL - case $(tc-arch) in - alpha|amd64|ia64|mips|ppc|ppc64|s390|sh|x86) - return 0; - ;; - sparc) - # >= v9 is needed for nptl. - [[ "${PROFILE_ARCH}" == "sparc" ]] && return 1 - return 0; - ;; - esac - - return 1 -} - -want_linuxthreads() { - ! use nptlonly && return 0 - want_nptl || return 0 - return 1 -} - -want_tls() { - # Archs that can use TLS (Thread Local Storage) - case $(tc-arch) in - alpha|amd64|ia64|mips|ppc|ppc64|s390|sh) - return 0; - ;; - sparc) - # 2.3.6 should have tls support on sparc64 - # when using newer binutils - case ${CTARGET/-*} in - sparc64*) return 1 ;; - *) return 0 ;; - esac - ;; - x86) - # requires i486 or better #106556 - [[ ${CTARGET} == i[4567]86* ]] && return 0 - ;; - esac - - return 1 -} - -want__thread() { - want_tls || return 1 - - # For some reason --with-tls --with__thread is causing segfaults on sparc32. - [[ ${PROFILE_ARCH} == "sparc" ]] && return 1 - - [[ -n ${WANT__THREAD} ]] && return ${WANT__THREAD} - - $(tc-getCC ${CTARGET}) -c ${FILESDIR}/test-__thread.c -o ${T}/test2.o &> /dev/null - WANT__THREAD=$? - - return ${WANT__THREAD} -} - -install_locales() { - unset LANGUAGE LANG LC_ALL - cd "${WORKDIR}"/${MYMAINBUILDDIR} || die "${WORKDIR}/${MYMAINBUILDDIR}" - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root=${D} localedata/install-locales || die -} - -setup_locales() { - if use !userlocales ; then - einfo "userlocales not enabled, installing -ALL- locales..." - install_locales || die - elif [ -e /etc/locales.build ] ; then - einfo "Installing locales in /etc/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat /etc/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - elif [ -e ${FILESDIR}/locales.build ] ; then - einfo "Installing locales in ${FILESDIR}/locales.build..." - echo 'SUPPORTED-LOCALES=\' > SUPPORTED.locales - cat ${FILESDIR}/locales.build | grep -v -e ^$ -e ^\# | sed 's/$/\ \\/g' \ - >> SUPPORTED.locales - cat SUPPORTED.locales > ${S}/localedata/SUPPORTED || die - install_locales || die - else - einfo "Installing -ALL- locales..." - install_locales || die - fi -} - -glibc_do_configure() { - local myconf - - # set addons - pushd ${S} > /dev/null - ADDONS=$(echo */configure | sed -e 's!/configure!!g;s!\(linuxthreads\|nptl\|rtkaio\|glibc-compat\)\( \|$\)!!g;s! \+$!!;s! !,!g;s!^!,!;/^,\*$/d') - use glibc-compat20 && [[ -d glibc-compat ]] && ADDONS="${ADDONS},glibc-compat" - popd > /dev/null - - use nls || myconf="${myconf} --disable-nls" - use erandom || myconf="${myconf} --disable-dev-erandom" - - use glibc-omitfp && myconf="${myconf} --enable-omitfp" - - [[ ${CTARGET} == *-softfloat-* ]] && myconf="${myconf} --without-fp" - - if [ "$1" == "linuxthreads" ] ; then - if want_tls && [[ ${CTARGET} != i[45]86-* ]] ; then - myconf="${myconf} --with-tls" - - if want__thread && use linuxthreads-tls ; then - myconf="${myconf} --with-__thread" - else - myconf="${myconf} --without-__thread" - fi - else - myconf="${myconf} --without-tls --without-__thread" - fi - - myconf="${myconf} --enable-add-ons=linuxthreads${ADDONS}" - myconf="${myconf} --enable-kernel=${LT_KERNEL_VERSION}" - elif [ "$1" == "nptl" ] ; then - myconf="${myconf} --with-tls --with-__thread" - myconf="${myconf} --enable-add-ons=nptl${ADDONS}" - myconf="${myconf} --enable-kernel=${NPTL_KERNEL_VERSION}" - else - die "invalid pthread option" - fi - - # Since SELinux support is only required for nscd, only enable it if: - # 1. USE selinux - # 2. ! USE build - # 3. only for the primary ABI on multilib systems - if use selinux && ! use build; then - if use multilib || has_multilib_profile; then - if is_final_abi; then - myconf="${myconf} --with-selinux" - else - myconf="${myconf} --without-selinux" - fi - else - myconf="${myconf} --with-selinux" - fi - else - myconf="${myconf} --without-selinux" - fi - - # Pick out the correct location for build headers - myconf="${myconf} - --without-cvs - --enable-bind-now - --build=${CBUILD_OPT:-${CBUILD}} - --host=${CTARGET_OPT:-${CTARGET}} - $(use_enable profile) - --without-gd - --with-headers=$(alt_build_headers) - --prefix=$(alt_prefix) - --mandir=$(alt_prefix)/share/man - --infodir=$(alt_prefix)/share/info - --libexecdir=$(alt_prefix)/lib/misc/glibc - ${EXTRA_ECONF}" - - has_version app-admin/eselect-compiler || export CC="$(tc-getCC ${CTARGET})" - - GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-$1 - mkdir -p ${GBUILDDIR} - cd ${GBUILDDIR} - einfo "Configuring GLIBC for $1 with: ${myconf// /\n\t\t}" - ${S}/configure ${myconf} || die "failed to configure glibc" -} - -fix_lib64_symlinks() { - # the original Gentoo/AMD64 devs decided that since 64bit is the native - # bitdepth for AMD64, lib should be used for 64bit libraries. however, - # this ignores the FHS and breaks multilib horribly... especially - # since it wont even work without a lib64 symlink anyways. *rolls eyes* - # see bug 59710 for more information. - # Travis Tilley (08 Aug 2004) - if [ -L ${ROOT}/lib64 ] ; then - ewarn "removing /lib64 symlink and moving lib to lib64..." - ewarn "dont hit ctrl-c until this is done" - addwrite ${ROOT}/ - rm ${ROOT}/lib64 - # now that lib64 is gone, nothing will run without calling ld.so - # directly. luckily the window of brokenness is almost non-existant - use amd64 && /lib/ld-linux-x86-64.so.2 /bin/mv ${ROOT}/lib ${ROOT}/lib64 - use ppc64 && /lib/ld64.so.1 /bin/mv ${ROOT}/lib ${ROOT}/lib64 - # all better :) - ldconfig - ln -s lib64 ${ROOT}/lib - einfo "done! :-)" - einfo "fixed broken lib64/lib symlink in ${ROOT}" - fi - if [ -L ${ROOT}/usr/lib64 ] ; then - addwrite ${ROOT}/usr - rm ${ROOT}/usr/lib64 - mv ${ROOT}/usr/lib ${ROOT}/usr/lib64 - ln -s lib64 ${ROOT}/usr/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr" - fi - if [ -L ${ROOT}/usr/X11R6/lib64 ] ; then - addwrite ${ROOT}/usr/X11R6 - rm ${ROOT}/usr/X11R6/lib64 - mv ${ROOT}/usr/X11R6/lib ${ROOT}/usr/X11R6/lib64 - ln -s lib64 ${ROOT}/usr/X11R6/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr/X11R6" - fi -} - -use_multilib() { - case ${CTARGET} in - sparc64*|mips64*|x86_64*|powerpc64*|s390x*) - has_multilib_profile || use multilib ;; - *) false ;; - esac -} - -# Setup toolchain variables that would be defined in the profiles for these archs. -setup_env() { - # These should not be set, else the zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - # silly users - unset LD_RUN_PATH - - if is_crosscompile || tc-is-cross-compiler ; then - multilib_env ${CTARGET} - if ! use multilib ; then - MULTILIB_ABIS=${DEFAULT_ABI} - else - MULTILIB_ABIS=${MULTILIB_ABIS:-${DEFAULT_ABI}} - fi - - # If the user has CFLAGS_ in their make.conf, use that, - # and fall back on CFLAGS. - local VAR=CFLAGS_${CTARGET//[-.]/_} - CFLAGS=${!VAR-${CFLAGS}} - fi - - setup_flags - - export ABI=${ABI:-${DEFAULT_ABI:-default}} - - if is_crosscompile || tc-is-cross-compiler ; then - local VAR=CFLAGS_${ABI} - # We need to export CFLAGS with abi information in them because - # glibc's configure script checks CFLAGS for some targets (like mips) - export CFLAGS="${!VAR} ${CFLAGS}" - fi -} - -### /ECLASS PUNTAGE ### - -if is_crosscompile ; then - SLOT="${CTARGET}-2.2" -else - SLOT="2.2" -fi - -# we'll handle stripping ourself #46186 -RESTRICT="nostrip multilib-pkg-force" - -# We need a new-enough binutils for as-needed -DEPEND=">=sys-devel/gcc-3.4 - nptl? ( >=sys-kernel/linux-headers-${NPTL_KERNEL_VERSION} ) - >=sys-devel/binutils-2.15.94 - || ( app-admin/eselect-compiler >=sys-devel/gcc-config-1.3.12 ) - virtual/os-headers - nls? ( sys-devel/gettext ) - selinux? ( !build? ( sys-libs/libselinux ) )" -RDEPEND="nls? ( sys-devel/gettext ) - selinux? ( !build? ( sys-libs/libselinux ) )" - -if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then - DEPEND="${DEPEND} ${CATEGORY}/gcc" - - if [[ ${CATEGORY} == *-linux* ]] ; then - if [[ ${CATEGORY} == cross-mips* ]] ; then - DEPEND="${DEPEND} >=${CATEGORY}/mips-headers-2.6.10" - else - DEPEND="${DEPEND} ${CATEGORY}/linux-headers" - fi - fi -else - DEPEND="${DEPEND} sys-libs/timezone-data" - RDEPEND="${RDEPEND} sys-libs/timezone-data" -fi - -pkg_setup() { - # prevent native builds from downgrading ... maybe update to allow people - # to change between diff -r versions ? (2.3.6-r4 -> 2.3.6-r2) - if ! is_crosscompile && ! tc-is-cross-compiler ; then - if has_version '>'${CATEGORY}/${PF} ; then - eerror "Sanity check to keep you from breaking your system:" - eerror " Downgrading glibc is not supported and a sure way to destruction" - die "aborting to save your system" - fi - fi - - if has_version '>=sys-libs/glibc-2.3.5.20050201' && \ - has_version ' ${T}/gcc_eh_test.c - if ! $(tc-getCC ${CTARGET}) ${T}/gcc_eh_test.c -lgcc_eh 2>/dev/null ; then - sed -i -e 's:-lgcc_eh::' Makeconfig || die "sed gcc_eh" - fi - - # Some configure checks fail on the first emerge through because they - # try to link. This doesn't work well if we don't have a libc yet. - # http://sourceware.org/ml/libc-alpha/2005-02/msg00042.html - if is_crosscompile && use build; then - rm ${S}/sysdeps/sparc/sparc64/elf/configure{,.in} - rm ${S}/nptl/sysdeps/pthread/configure{,.in} - fi - - cd "${WORKDIR}" - find . -type f '(' -size 0 -o -name "*.orig" ')' -exec rm -f {} \; - find . -name configure -exec touch {} \; - - # Fix permissions on some of the scripts - chmod u+x "${S}"/scripts/*.sh -} - -src_compile() { - setup_env - - if [[ -z ${OABI} ]] ; then - local abilist="" - if has_multilib_profile ; then - abilist=$(get_install_abis) - einfo "Building multilib glibc for ABIs: ${abilist}" - elif is_crosscompile || tc-is-cross-compiler ; then - abilist=${DEFAULT_ABI} - fi - if [[ -n ${abilist} ]] ; then - OABI=${ABI} - for ABI in ${abilist} ; do - export ABI - src_compile - done - ABI=${OABI} - unset OABI - return 0 - fi - fi - - if just_headers ; then - toolchain-glibc_headers_compile - else - toolchain-glibc_src_compile - fi -} - -src_test() { - setup_env - - if [[ -z ${OABI} ]] && has_multilib_profile ; then - OABI=${ABI} - einfo "Testing multilib glibc for ABIs: $(get_install_abis)" - for ABI in $(get_install_abis) ; do - export ABI - einfo " Testing ${ABI} glibc" - src_test - done - ABI=${OABI} - unset OABI - return 0 - fi - - toolchain-glibc_src_test -} - -src_strip() { - # Now, strip everything but the thread libs #46186, as well as the dynamic - # linker, else we cannot set breakpoints in shared libraries due to bugs in - # gdb. Also want to grab stuff in tls subdir. whee. -#when new portage supports this ... -# env \ -# -uRESTRICT \ -# CHOST=${CTARGET} \ -# STRIP_MASK="/*/{,tls/}{ld-,lib{pthread,thread_db}}*" \ -# prepallstrip - pushd "${D}" > /dev/null - - if ! is_crosscompile ; then - mkdir -p "${T}"/strip-backup - for x in $(find "${D}" -maxdepth 3 \ - '(' -name 'ld-*' -o -name 'libpthread*' -o -name 'libthread_db*' ')' \ - -a '(' '!' -name '*.a' ')' -type f -printf '%P ') - do - mkdir -p "${T}/strip-backup/${x%/*}" - cp -a -- "${D}/${x}" "${T}/strip-backup/${x}" || die "backing up ${x}" - done - fi - env -uRESTRICT CHOST=${CTARGET} prepallstrip - if ! is_crosscompile ; then - cp -a -- "${T}"/strip-backup/* "${D}"/ || die "restoring non-stripped libs" - fi - - popd > /dev/null -} - -src_install() { - setup_env - - if [[ -z ${OABI} ]] ; then - local abilist="" - if has_multilib_profile ; then - abilist=$(get_install_abis) - einfo "Installing multilib glibc for ABIs: ${abilist}" - elif is_crosscompile || tc-is-cross-compiler ; then - abilist=${DEFAULT_ABI} - fi - if [[ -n ${abilist} ]] ; then - OABI=${ABI} - for ABI in ${abilist} ; do - export ABI - src_install - done - ABI=${OABI} - unset OABI - src_strip - return 0 - fi - fi - - # Handle stupid lib32 BS - unset OLD_LIBDIR - if ! is_crosscompile ; then - if [[ $(tc-arch) == "amd64" && ${ABI} == "x86" && $(get_libdir) != "lib" ]] ; then - OLD_LIBDIR=$(get_libdir) - LIBDIR_x86="lib" - fi - - if [[ $(tc-arch) == "ppc64" && ${ABI} == "ppc" && $(get_libdir) != "lib" ]] ; then - OLD_LIBDIR=$(get_libdir) - LIBDIR_ppc="lib" - fi - fi - - if just_headers ; then - toolchain-glibc_headers_install - else - toolchain-glibc_src_install - fi - [[ -z ${OABI} ]] && src_strip - - # Handle stupid lib32 BS on amd64 and ppc64 - if [[ -n ${OLD_LIBDIR} ]] ; then - cd "${S}" - [[ $(tc-arch) == "amd64" ]] && LIBDIR_x86=${OLD_LIBDIR} - [[ $(tc-arch) == "ppc64" ]] && LIBDIR_ppc=${OLD_LIBDIR} - unset OLD_LIBDIR - - mv "${D}"/lib "${D}"/$(get_libdir) - mv "${D}"/usr/lib "${D}"/usr/$(get_libdir) - dodir /lib - dodir /usr/lib - mv "${D}"/usr/$(get_libdir)/locale "${D}"/usr/lib - [[ $(tc-arch) == "amd64" ]] && dosym ../$(get_libdir)/ld-linux.so.2 /lib/ld-linux.so.2 - [[ $(tc-arch) == "ppc64" ]] && dosym ../$(get_libdir)/ld.so.1 /lib/ld.so.1 - - for f in "${D}"/usr/$(get_libdir)/*.so; do - local basef=$(basename "${f}") - if [[ -L ${f} ]] ; then - local target=$(readlink "${f}") - target=${target/\/lib\//\/$(get_libdir)\/} - rm "${f}" - dosym "${target}" /usr/$(get_libdir)/"${basef}" - fi - done - - dosed "s:/lib/:/$(get_libdir)/:g" /usr/$(get_libdir)/lib{c,pthread}.so - - if want_nptl && want_linuxthreads ; then - dosed "s:/lib/:/$(get_libdir)/:g" /usr/$(get_libdir)/nptl/lib{c,pthread}.so - fi - fi - - # PPC NPTL fix - if [[ $(tc-arch) == "ppc" ]] && use nptl && ! use nptlonly ; then - cp ${WORKDIR}/build-default-${CTARGET}-nptl/elf/ld.so ${D}/lib/ld-${PV}.so - fi -} - -pkg_preinst() { - toolchain-glibc_pkg_preinst -} - -pkg_postinst() { - toolchain-glibc_pkg_postinst -} diff --git a/sys-libs/glibc/glibc-2.4-r3.ebuild b/sys-libs/glibc/glibc-2.4-r3.ebuild deleted file mode 100644 index d3f408443e33..000000000000 --- a/sys-libs/glibc/glibc-2.4-r3.ebuild +++ /dev/null @@ -1,1283 +0,0 @@ -# Copyright 1999-2007 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.4-r3.ebuild,v 1.26 2007/01/27 02:21:17 vapier Exp $ - -# Here's how the cross-compile logic breaks down ... -# CTARGET - machine that will target the binaries -# CHOST - machine that will host the binaries -# CBUILD - machine that will build the binaries -# If CTARGET != CHOST, it means you want a libc for cross-compiling. -# If CHOST != CBUILD, it means you want to cross-compile the libc. -# CBUILD = CHOST = CTARGET - native build/install -# CBUILD != (CHOST = CTARGET) - cross-compile a native build -# (CBUILD = CHOST) != CTARGET - libc for cross-compiler -# CBUILD != CHOST != CTARGET - cross-compile a libc for a cross-compiler -# For install paths: -# CHOST = CTARGET - install into / -# CHOST != CTARGET - install into /usr/CTARGET/ - -KEYWORDS="-* amd64 ~ia64 ~mips ppc ~ppc64 sh ~sparc x86" - -BRANCH_UPDATE="" - -# Generated man pages -GLIBC_MANPAGE_VERSION="none" - -# Generated stuff in manual subdir -GLIBC_INFOPAGE_VERSION="none" - -# Gentoo patchset -PATCH_VER="1.17" - -# PPC cpu addon -# http://penguinppc.org/dev/glibc/glibc-powerpc-cpu-addon.html -PPC_CPU_ADDON_VER="0.01" -PPC_CPU_ADDON_TARBALL="glibc-powerpc-cpu-addon-v${PPC_CPU_ADDON_VER}.tgz" -PPC_CPU_ADDON_URI="http://penguinppc.org/dev/glibc/${PPC_CPU_ADDON_TARBALL}" - -# LinuxThreads addon -LT_VER="20060605" -LT_TARBALL="glibc-linuxthreads-${LT_VER}.tar.bz2" -LT_URI="ftp://sources.redhat.com/pub/glibc/snapshots/${LT_TARBALL} mirror://gentoo/${LT_TARBALL}" - -GENTOO_TOOLCHAIN_BASE_URI="mirror://gentoo" -GENTOO_TOOLCHAIN_DEV_URI="http://dev.gentoo.org/~azarah/glibc/XXX http://dev.gentoo.org/~vapier/dist/XXX" - -### PUNT OUT TO ECLASS?? ### -inherit eutils versionator libtool toolchain-funcs flag-o-matic gnuconfig multilib - -DESCRIPTION="GNU libc6 (also called glibc2) C library" -HOMEPAGE="http://www.gnu.org/software/libc/libc.html" -LICENSE="LGPL-2" - -# note that nptl/nptlonly/glibc-compat20 are for upgrade checks only. -# we dont generally support these things in this version. -IUSE="nls build nptl nptlonly hardened multilib selinux glibc-omitfp profile glibc-compat20" - -export CBUILD=${CBUILD:-${CHOST}} -export CTARGET=${CTARGET:-${CHOST}} -if [[ ${CTARGET} == ${CHOST} ]] ; then - if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then - export CTARGET=${CATEGORY/cross-} - fi -fi -if [[ ${CTARGET} == ${CHOST} ]] ; then - PROVIDE="virtual/libc" -fi - -is_crosscompile() { - [[ ${CHOST} != ${CTARGET} ]] -} -just_headers() { - is_crosscompile && use crosscompile_opts_headers-only -} - -GLIBC_RELEASE_VER=$(get_version_component_range 1-3) - -# Don't set this to :-, - allows BRANCH_UPDATE="" -BRANCH_UPDATE=${BRANCH_UPDATE-$(get_version_component_range 4)} - -# (Recent snapshots fails with 2.6.5 and earlier with NPTL) -NPTL_KERNEL_VERSION=${NPTL_KERNEL_VERSION:-"2.6.9"} -LT_KERNEL_VERSION=${LT_KERNEL_VERSION:-"2.4.1"} - -### SRC_URI ### - -# This function handles the basics of setting the SRC_URI for a glibc ebuild. -# To use, set SRC_URI with: -# -# SRC_URI="$(get_glibc_src_uri)" -# -# Other than the variables normally set by portage, this function's behavior -# can be altered by setting the following: -# -# GENTOO_TOOLCHAIN_BASE_URI -# This sets the base URI for all gentoo-specific patch files. Note -# that this variable is only important for a brief period of time, -# before your source files get picked up by mirrors. However, it is -# still highly suggested that you keep files in this location -# available. -# -# BRANCH_UPDATE -# If set, this variable signals that we should be using the main -# release tarball (determined by ebuild version) and applying a -# CVS branch update patch against it. The location of this branch -# update patch is assumed to be in ${GENTOO_TOOLCHAIN_BASE_URI}. -# Just like with SNAPSHOT, this variable is ignored if the ebuild -# has a _pre suffix. -# -# PATCH_VER -# PATCH_GLIBC_VER -# This should be set to the version of the gentoo patch tarball. -# The resulting filename of this tarball will be: -# glibc-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2 -# -# GLIBC_MANPAGE_VERSION -# GLIBC_INFOPAGE_VERSION -# The version of glibc for which we will download pages. This will -# default to ${GLIBC_RELEASE_VER}, but we may not want to pre-generate man pages -# for prerelease test ebuilds for example. This allows you to -# continue using pre-generated manpages from the last stable release. -# If set to "none", this will prevent the downloading of manpages, -# which is useful for individual library targets. -# -get_glibc_src_uri() { - GENTOO_TOOLCHAIN_BASE_URI=${GENTOO_TOOLCHAIN_BASE_URI:-"mirror://gentoo"} - -# GLIBC_SRC_URI="http://ftp.gnu.org/gnu/glibc/glibc-${GLIBC_RELEASE_VER}.tar.bz2 -# http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-${GLIBC_RELEASE_VER}.tar.bz2 -# http://ftp.gnu.org/gnu/glibc/glibc-libidn-${GLIBC_RELEASE_VER}.tar.bz2 - GLIBC_SRC_URI="mirror://gnu/glibc/glibc-${GLIBC_RELEASE_VER}.tar.bz2 - mirror://gnu/glibc/glibc-ports-${GLIBC_RELEASE_VER}.tar.bz2 - mirror://gnu/glibc/glibc-libidn-${GLIBC_RELEASE_VER}.tar.bz2" - - if [[ -n ${BRANCH_UPDATE} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/glibc-${GLIBC_RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2 - ${GENTOO_TOOLCHAIN_DEV_URI//XXX/glibc-${GLIBC_RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2}" - fi - - if [[ -n ${PATCH_VER} ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/glibc-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2 - ${GENTOO_TOOLCHAIN_DEV_URI//XXX/glibc-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2}" - fi - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/glibc-manpages-${GLIBC_MANPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2 - ${GENTOO_TOOLCHAIN_DEV_URI//XXX/glibc-manpages-${GLIBC_MANPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2}" - fi - - if [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - GLIBC_SRC_URI="${GLIBC_SRC_URI} - ${GENTOO_TOOLCHAIN_BASE_URI}/glibc-infopages-${GLIBC_INFOPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2 - ${GENTOO_TOOLCHAIN_DEV_URI//XXX/glibc-infopages-${GLIBC_INFOPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2}" - fi - - [[ -n ${LT_VER} ]] && GLIBC_SRC_URI="${GLIBC_SRC_URI} ${LT_URI}" - - GLIBC_SRC_URI="${GLIBC_SRC_URI} ${PPC_CPU_ADDON_URI}" - - echo "${GLIBC_SRC_URI}" -} - -SRC_URI=$(get_glibc_src_uri) -S=${WORKDIR}/glibc-${GLIBC_RELEASE_VER} - -### EXPORTED FUNCTIONS ### -unpack_addon() { - local addon=$1 ver=${2:-${GLIBC_RELEASE_VER}} - unpack glibc-${addon}-${ver}.tar.bz2 - mv glibc-${addon}-${ver} ${addon} || die -} -toolchain-glibc_src_unpack() { - # Check NPTL support _before_ we unpack things to save some time - want_nptl && check_nptl_support - - unpack glibc-${GLIBC_RELEASE_VER}.tar.bz2 - - cd "${S}" - if [[ -n ${LT_VER} ]] ; then - unpack ${LT_TARBALL} - mv glibc-linuxthreads-${LT_VER}/* . || die - fi - unpack_addon libidn - unpack_addon ports - - if [[ -n ${PPC_CPU_ADDON_TARBALL} ]] ; then - cd "${S}" - unpack ${PPC_CPU_ADDON_TARBALL} - fi - - if [[ -n ${PATCH_VER} ]] ; then - cd "${WORKDIR}" - unpack glibc-${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-patches-${PATCH_VER}.tar.bz2 - # pull out all the addons - local d - for d in extra/*/configure ; do - mv "${d%/configure}" "${S}" || die "moving ${d}" - done - fi - - # XXX: We should do the branchupdate, before extracting the manpages and - # infopages else it does not help much (mtimes change if there is a change - # to them with branchupdate) - if [[ -n ${BRANCH_UPDATE} ]] ; then - cd "${S}" - epatch "${DISTDIR}"/glibc-${GLIBC_RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2 - - # Snapshot date patch - einfo "Patching version to display snapshot date ..." - sed -i -e "s:\(#define RELEASE\).*:\1 \"${BRANCH_UPDATE}\":" version.h - fi - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - cd "${WORKDIR}" - unpack glibc-manpages-${GLIBC_MANPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2 - fi - - if [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - cd "${S}" - unpack glibc-infopages-${GLIBC_INFOPAGE_VERSION:-${GLIBC_RELEASE_VER}}.tar.bz2 - fi - - if [[ -n ${PATCH_VER} ]] ; then - cd "${S}" - EPATCH_MULTI_MSG="Applying Gentoo Glibc Patchset ${PATCH_GLIBC_VER:-${GLIBC_RELEASE_VER}}-${PATCH_VER} ..." \ - EPATCH_EXCLUDE=${GLIBC_PATCH_EXCLUDE} \ - EPATCH_SUFFIX="patch" \ - ARCH=$(tc-arch) \ - epatch "${WORKDIR}"/patches - fi - - gnuconfig_update -} - -toolchain-glibc_src_compile() { - echo - local v - for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CFLAGS ; do - einfo " $(printf '%15s' ${v}:) ${!v}" - done - echo - - if want_linuxthreads ; then - glibc_do_configure linuxthreads - einfo "Building GLIBC with linuxthreads..." - make PARALLELMFLAGS="${MAKEOPTS}" || die "make for ${ABI} failed" - fi - if want_nptl ; then - # ... and then do the optional nptl build - unset LD_ASSUME_KERNEL - glibc_do_configure nptl - einfo "Building GLIBC with NPTL..." - make PARALLELMFLAGS="${MAKEOPTS}" || die "make for ${ABI} failed" - fi -} - -toolchain-glibc_headers_compile() { - local GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-headers - mkdir -p "${GBUILDDIR}" - cd "${GBUILDDIR}" - - # Pick out the correct location for build headers - local myconf="--disable-sanity-checks --enable-hacker-mode" - myconf="${myconf} - --enable-add-ons=nptl,ports - --without-cvs - --enable-bind-now - --build=${CBUILD_OPT:-${CBUILD}} - --host=${CTARGET_OPT:-${CTARGET}} - --with-headers=$(alt_build_headers) - --prefix=/usr - ${EXTRA_ECONF}" - - einfo "Configuring GLIBC headers with: ${myconf// /\n\t\t}" - CC=gcc \ - CFLAGS="-O1 -pipe" \ - "${S}"/configure ${myconf} || die "failed to configure glibc" -} - -toolchain-glibc_src_test() { - # This is wrong, but glibc's tests fail bad when screwing - # around with sandbox, so lets just punt it - unset LD_PRELOAD - - # do the linuxthreads build unless we're using nptlonly - if want_linuxthreads ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-linuxthreads - einfo "Checking GLIBC with linuxthreads..." - make check || die "linuxthreads glibc did not pass make check" - fi - if want_nptl ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - unset LD_ASSUME_KERNEL || : - einfo "Checking GLIBC with NPTL..." - make check || die "nptl glibc did not pass make check" - fi -} - -toolchain-glibc_pkg_preinst() { - # PPC64+others may want to eventually be added to this logic if they - # decide to be multilib compatible and FHS compliant. note that this - # chunk of FHS compliance only applies to 64bit archs where 32bit - # compatibility is a major concern (not IA64, for example). - - # amd64's 2005.0 is the first amd64 profile to not need this code. - # 2005.0 is setup properly, and this is executed as part of the - # 2004.3 -> 2005.0 upgrade script. - # It can be removed after 2004.3 has been purged from portage. - { use amd64 || use ppc64; } && [ "$(get_libdir)" == "lib64" ] && ! has_multilib_profile && fix_lib64_symlinks - - # it appears that /lib/tls is sometimes not removed. See bug - # 69258 for more info. - if [[ -d ${ROOT}/$(alt_libdir)/tls ]] && ! { want_nptl && want_linuxthreads; }; then - addwrite "${ROOT}"/$(alt_libdir)/ - ewarn "nptlonly or -nptl in USE, removing /${ROOT}$(alt_libdir)/tls..." - rm -r "${ROOT}"/$(alt_libdir)/tls || die - fi - - # Shouldnt need to keep this updated - [[ -e ${ROOT}/etc/locale.gen ]] && rm -f "${D}"/etc/locale.gen -} - -toolchain-glibc_src_install() { - # These should not be set, else the - # zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - - local GBUILDDIR - if want_linuxthreads ; then - GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-linuxthreads - else - GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-nptl - fi - - local install_root=${D} - if is_crosscompile ; then - install_root="${install_root}/usr/${CTARGET}" - fi - if want_linuxthreads ; then - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-linuxthreads - einfo "Installing GLIBC ${ABI} with linuxthreads ..." - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root="${install_root}" \ - install || die - else # nptlonly - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - einfo "Installing GLIBC ${ABI} with NPTL ..." - make PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root="${install_root}" \ - install || die - fi - - if is_crosscompile ; then - # punt all the junk not needed by a cross-compiler - cd "${D}"/usr/${CTARGET} || die - rm -rf ./{,usr/}{bin,etc,sbin,share} ./{,usr/}*/{gconv,misc} - fi - - if want_linuxthreads && want_nptl ; then - einfo "Installing NPTL to $(alt_libdir)/tls/..." - cd "${WORKDIR}"/build-${ABI}-${CTARGET}-nptl - dodir $(alt_libdir)/tls $(alt_usrlibdir)/nptl - - local l src_lib - for l in libc libm librt libpthread libthread_db ; do - # take care of shared lib first ... - l=${l}.so - if [[ -e ${l} ]] ; then - src_lib=${l} - else - src_lib=$(eval echo */${l}) - fi - cp -a ${src_lib} "${D}"$(alt_libdir)/tls/${l} || die "copying nptl ${l}" - fperms a+rx $(alt_libdir)/tls/${l} - dosym ${l} $(alt_libdir)/tls/$(scanelf -qSF'%S#F' ${src_lib}) - - # then grab the linker script or the symlink ... - if [[ -L ${D}$(alt_usrlibdir)/${l} ]] ; then - dosym $(alt_libdir)/tls/${l} $(alt_usrlibdir)/nptl/${l} - else - sed \ - -e "s:/${l}:/tls/${l}:g" \ - -e "s:/${l/%.so/_nonshared.a}:/nptl/${l/%.so/_nonshared.a}:g" \ - "${D}"$(alt_usrlibdir)/${l} > "${D}"$(alt_usrlibdir)/nptl/${l} - fi - - # then grab the static lib ... - src_lib=${src_lib/%.so/.a} - [[ ! -e ${src_lib} ]] && src_lib=${src_lib/%.a/_pic.a} - cp -a ${src_lib} "${D}"$(alt_usrlibdir)/nptl/ || die "copying nptl ${src_lib}" - src_lib=${src_lib/%.a/_nonshared.a} - if [[ -e ${src_lib} ]] ; then - cp -a ${src_lib} "${D}"$(alt_usrlibdir)/nptl/ || die "copying nptl ${src_lib}" - fi - done - - # use the nptl linker instead of the linuxthreads one as the linuxthreads - # one may lack TLS support and that can be really bad for business - cp -a elf/ld.so "${D}"$(alt_libdir)/$(scanelf -qSF'%S#F' elf/ld.so) || die "copying nptl interp" - fi - - # We'll take care of the cache ourselves - rm -f "${D}"/etc/ld.so.cache - - # Some things want this, notably ash. - dosym libbsd-compat.a $(alt_usrlibdir)/libbsd.a - - # Handle includes for different ABIs - prep_ml_includes $(alt_headers) - - # When cross-compiling for a non-multilib setup, make sure we have - # lib and a proper symlink setup - if is_crosscompile && ! use multilib && ! has_multilib_profile && [[ $(get_libdir) != "lib" ]] ; then - cd "${D}"$(alt_libdir)/.. - mv $(get_libdir) lib || die - ln -s lib $(get_libdir) || die - cd "${D}"$(alt_usrlibdir)/.. - mv $(get_libdir) lib || die - ln -s lib $(get_libdir) || die - fi - - ################################################################# - # EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY # - # Make sure we install some symlink hacks so that when we build - # a 2nd stage cross-compiler, gcc finds the target system - # headers correctly. See gcc/doc/gccinstall.info - if is_crosscompile ; then - dosym usr/include /usr/${CTARGET}/sys-include - return 0 - fi - - # Everything past this point just needs to be done once ... - is_final_abi || return 0 - - # Make sure the non-native interp can be found on multilib systems - if has_multilib_profile ; then - case $(tc-arch) in - amd64) - [[ ! -e ${D}/lib ]] && dosym $(get_abi_LIBDIR amd64) /lib - dosym /$(get_abi_LIBDIR x86)/ld-linux.so.2 /lib/ld-linux.so.2 - ;; - ppc64) - [[ ! -e ${D}/lib ]] && dosym $(get_abi_LIBDIR ppc64) /lib - dosym /$(get_abi_LIBDIR ppc)/ld.so.1 /lib/ld.so.1 - ;; - esac - fi - - # Files for Debian-style locale updating - dodir /usr/share/i18n - sed \ - -e "/^#/d" \ - -e "/SUPPORTED-LOCALES=/d" \ - -e "s: \\\\::g" -e "s:/: :g" \ - "${S}"/localedata/SUPPORTED > "${D}"/usr/share/i18n/SUPPORTED \ - || die "generating /usr/share/i18n/SUPPORTED failed" - cd "${WORKDIR}"/extra/locale - dosbin locale-gen || die - doman *.[0-8] - insinto /etc - doins locale.gen || die - - # Make sure all the ABI's can find the locales and so we only - # have to generate one set - keepdir /usr/$(get_libdir)/locale - for l in $(get_all_libdirs) ; do - if [[ ! -e ${D}/usr/${l}/locale ]] ; then - dosym /usr/$(get_libdir)/locale /usr/${l}/locale - fi - done - - if ! has noinfo ${FEATURES} && [[ ${GLIBC_INFOPAGE_VERSION} != "none" ]] ; then - einfo "Installing info pages..." - - make \ - -C "${GBUILDDIR}" \ - PARALLELMFLAGS="${MAKEOPTS} -j1" \ - install_root="${install_root}" \ - info -i || die - fi - - if [[ ${GLIBC_MANPAGE_VERSION} != "none" ]] ; then - einfo "Installing man pages..." - - # Install linuxthreads man pages even if nptl is enabled - cd "${WORKDIR}"/man - doman *.3thr - fi - - # Install misc network config files - insinto /etc - doins "${FILESDIR}"/nscd.conf - doins "${FILESDIR}"/nsswitch.conf - doins "${FILESDIR}"/2.3.6/host.conf - doinitd "${FILESDIR}"/nscd - - cd "${S}" - dodoc BUGS ChangeLog* CONFORMANCE FAQ INTERFACE NEWS NOTES PROJECTS README* - - # Prevent overwriting of the /etc/localtime symlink. We'll handle the - # creation of the "factory" symlink in pkg_postinst(). - rm -f "${D}"/etc/localtime - - # simple test to make sure our new glibc isnt completely broken. - # for now, skip the multilib scenario. also make sure we don't - # test with statically built binaries since they will fail. - [[ ${CBUILD} != ${CHOST} ]] && return 0 - [[ $(get_libdir) != "lib" ]] && return 0 - for x in date env ls true uname ; do - x=$(type -p ${x}) - [[ -z ${x} ]] && continue - striptest=$(file -L ${x} 2>/dev/null) - [[ -z ${striptest} ]] && continue - [[ ${striptest/statically linked} != "${striptest}" ]] && continue - "${D}"/$(get_libdir)/ld-*.so \ - --library-path "${D}"/$(get_libdir) \ - ${x} > /dev/null \ - || die "simple run test (${x}) failed" - done -} - -toolchain-glibc_headers_install() { - local GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-headers - cd "${GBUILDDIR}" - make install_root="${D}/usr/${CTARGET}" install-headers || die "install-headers failed" - # Copy over headers that are not part of install-headers ... these - # are pretty much taken verbatim from crosstool, see it for more details - insinto $(alt_headers)/bits - doins misc/syscall-list.h bits/stdio_lim.h || die "doins include bits" - insinto $(alt_headers)/gnu - doins "${S}"/include/gnu/stubs.h || die "doins include gnu" - # Make sure we install the sys-include symlink so that when - # we build a 2nd stage cross-compiler, gcc finds the target - # system headers correctly. See gcc/doc/gccinstall.info - dosym usr/include /usr/${CTARGET}/sys-include -} - -toolchain-glibc_pkg_postinst() { - # Mixing nptlonly and -nptlonly glibc can prove dangerous if libpthread - # isn't removed in unmerge which happens sometimes. See bug #87671 - if ! is_crosscompile && want_linuxthreads && [[ ${ROOT} == "/" ]] ; then - for libdir in $(get_all_libdirs) ; do - for f in "${ROOT}"/${libdir}/libpthread-2.* "${ROOT}"/${libdir}/libpthread-0.6* ; do - if [[ -f ${f} ]] ; then - rm -f ${f} - ldconfig - fi - done - done - fi - - if ! tc-is-cross-compiler && [[ -x ${ROOT}/usr/sbin/iconvconfig ]] ; then - # Generate fastloading iconv module configuration file. - "${ROOT}"/usr/sbin/iconvconfig --prefix="${ROOT}" - fi - - if [[ ! -e ${ROOT}/lib/ld.so.1 ]] && use ppc64 && ! has_multilib_profile ; then - ## SHOULDN'T THIS BE lib64?? - ln -s ld64.so.1 "${ROOT}"/lib/ld.so.1 - fi - - if ! is_crosscompile && [[ ${ROOT} == "/" ]] ; then - # Reload init ... - /sbin/telinit U &> /dev/null - - # if the host locales.gen contains no entries, we'll install everything - local locale_list="${ROOT}etc/locale.gen" - if [[ -z $(locale-gen --list --config "${locale_list}") ]] ; then - ewarn "Generating all locales; edit /etc/locale.gen to save time/space" - locale_list="${ROOT}usr/share/i18n/SUPPORTED" - fi - locale-gen --config "${locale_list}" - fi - - echo - einfo "Gentoo's glibc no longer includes mdns." - einfo "If you want mdns, emerge the sys-auth/nss-mdns package." - echo - - if want_nptl && want_linuxthreads ; then - einfo "The default behavior of glibc on your system is to use NPTL. If" - einfo "you want to use linuxthreads for a particular program, start it" - einfo "by executing 'LD_ASSUME_KERNEL=${LT_KERNEL_VERSION} []'" - echo - fi -} - -### SUPPORT FUNCTIONS ### -# We need to be able to set alternative headers for -# compiling for non-native platform -# Will also become useful for testing kernel-headers without screwing up -# the whole system. -# note: intentionally undocumented. -alt_headers() { - if [[ -z ${ALT_HEADERS} ]] ; then - if is_crosscompile ; then - ALT_HEADERS="/usr/${CTARGET}/usr/include" - else - ALT_HEADERS="/usr/include" - fi - fi - echo "${ALT_HEADERS}" -} -alt_build_headers() { - if [[ -z ${ALT_BUILD_HEADERS} ]] ; then - ALT_BUILD_HEADERS=$(alt_headers) - tc-is-cross-compiler && ALT_BUILD_HEADERS=${ROOT}$(alt_headers) - fi - echo "${ALT_BUILD_HEADERS}" -} - -alt_libdir() { - if is_crosscompile ; then - echo /usr/${CTARGET}/$(get_libdir) - else - echo /$(get_libdir) - fi -} - -alt_usrlibdir() { - if is_crosscompile ; then - echo /usr/${CTARGET}/usr/$(get_libdir) - else - echo /usr/$(get_libdir) - fi -} - -setup_flags() { - # Make sure host make.conf doesn't pollute us - if is_crosscompile || tc-is-cross-compiler ; then - CHOST=${CTARGET} strip-unsupported-flags - fi - - # Store our CFLAGS because it's changed depending on which CTARGET - # we are building when pulling glibc on a multilib profile - CFLAGS_BASE=${CFLAGS_BASE-${CFLAGS}} - CFLAGS=${CFLAGS_BASE} - ASFLAGS_BASE=${ASFLAGS_BASE-${ASFLAGS}} - ASFLAGS=${ASFLAGS_BASE} - - # Over-zealous CFLAGS can often cause problems. What may work for one - # person may not work for another. To avoid a large influx of bugs - # relating to failed builds, we strip most CFLAGS out to ensure as few - # problems as possible. - strip-flags - strip-unsupported-flags - filter-flags -m32 -m64 -mabi=* - - unset CBUILD_OPT CTARGET_OPT - if has_multilib_profile ; then - CTARGET_OPT=$(get_abi_CTARGET) - [[ -z ${CTARGET_OPT} ]] && CTARGET_OPT=$(get_abi_CHOST) - fi - - case $(tc-arch) in - amd64) - # Punt this when amd64's 2004.3 is removed - CFLAGS_x86="-m32" - ;; - ppc) - append-flags "-freorder-blocks" - ;; - sparc) - # Both sparc and sparc64 can use -fcall-used-g6. -g7 is bad, though. - filter-flags "-fcall-used-g7" - append-flags "-fcall-used-g6" - filter-flags "-mvis" - - if is_crosscompile || [[ ${PROFILE_ARCH} == "sparc64" ]] || { has_multilib_profile && ! tc-is-cross-compiler; } ; then - case ${ABI} in - sparc64) - filter-flags -Wa,-xarch -Wa,-A - - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparc64b-unknown-linux-gnu" - append-flags "-Wa,-xarch=v9b" - export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9b" - else - CTARGET_OPT="sparc64-unknown-linux-gnu" - append-flags "-Wa,-xarch=v9a" - export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9a" - fi - ;; - *) - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparcv9b-unknown-linux-gnu" - else - CTARGET_OPT="sparcv9-unknown-linux-gnu" - fi - ;; - esac - else - if is-flag "-mcpu=ultrasparc3"; then - CTARGET_OPT="sparcv9b-unknown-linux-gnu" - elif { is_crosscompile && want_nptl; } || is-flag "-mcpu=ultrasparc2" || is-flag "-mcpu=ultrasparc"; then - CTARGET_OPT="sparcv9-unknown-linux-gnu" - fi - fi - ;; - esac - - if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then - CBUILD_OPT=${CTARGET_OPT} - fi - - if $(tc-getCC ${CTARGET}) -v 2>&1 | grep -q 'gcc version 3.[0123]'; then - append-flags -finline-limit=2000 - fi - - # We dont want these flags for glibc - filter-ldflags -pie - - # We cannot build glibc with Bdirect support - filter-flags -Wl,-Bdirect - filter-ldflags -Bdirect - filter-ldflags -Wl,-Bdirect - - # Same for hashvals ... - filter-flags -Wl,-hashvals - filter-ldflags -hashvals - filter-ldflags -Wl,-hashvals - - # Lock glibc at -O2 -- linuxthreads needs it and we want to be - # conservative here - filter-flags -O? - append-flags -O2 -} - -check_kheader_version() { - local header="$(alt_build_headers)/linux/version.h" - - [[ -z $1 ]] && return 1 - - if [[ -f ${header} ]] ; then - local version=$(grep 'LINUX_VERSION_CODE' ${header} | \ - sed -e 's:^.*LINUX_VERSION_CODE[[:space:]]*::') - - if [[ ${version} -ge "$1" ]] ; then - return 0 - fi - fi - - return 1 -} - -check_nptl_support() { - local min_kernel_version=$(KV_to_int "${NPTL_KERNEL_VERSION}") - - echo - - ebegin "Checking gcc for __thread support" - if ! eend $(want__thread ; echo $?) ; then - echo - eerror "Could not find a gcc that supports the __thread directive!" - eerror "Please update your binutils/gcc and try again." - die "No __thread support in gcc!" - fi - - if ! is_crosscompile && ! tc-is-cross-compiler ; then - # Building fails on an non-supporting kernel - ebegin "Checking kernel version (>=${NPTL_KERNEL_VERSION})" - if ! eend $([[ $(get_KV) -ge ${min_kernel_version} ]] ; echo $?) ; then - echo - eerror "You need a kernel of at least version ${NPTL_KERNEL_VERSION}" - eerror "for NPTL support!" - die "Kernel version too low!" - fi - fi - - # Building fails with too low linux-headers - ebegin "Checking linux-headers version (>=${NPTL_KERNEL_VERSION})" - if ! eend $(check_kheader_version "${min_kernel_version}" ; echo $?) ; then - echo - eerror "You need linux-headers of at least version ${NPTL_KERNEL_VERSION}" - eerror "for NPTL support!" - die "linux-headers version too low!" - fi - - echo -} - -want_nptl() { - want_tls || return 1 - use nptl || return 1 - - # Only list the arches that cannot do NPTL - case $(tc-arch) in - hppa|m68k) return 1;; - sparc) - # >= v9 is needed for nptl. - [[ ${PROFILE_ARCH} == "sparc" ]] && return 1 - ;; - esac - - return 0 -} - -want_linuxthreads() { - ! use nptlonly && return 0 - want_nptl || return 0 - return 1 -} - -want_tls() { - # Archs that can use TLS (Thread Local Storage) - case $(tc-arch) in - sparc) - # 2.3.6 should have tls support on sparc64 - # when using newer binutils - case ${CTARGET/-*} in - sparc64*) return 1 ;; - *) return 0 ;; - esac - ;; - x86) - # requires i486 or better #106556 - [[ ${CTARGET} == i[4567]86* ]] && return 0 - return 1 - ;; - esac - - return 0 -} - -want__thread() { - want_tls || return 1 - - # For some reason --with-tls --with__thread is causing segfaults on sparc32. - [[ ${PROFILE_ARCH} == "sparc" ]] && return 1 - - [[ -n ${WANT__THREAD} ]] && return ${WANT__THREAD} - - echo 'extern __thread int i;' > "${T}"/test-__thread.c - $(tc-getCC ${CTARGET}) -c "${T}"/test-__thread.c -o "${T}"/test-__thread.o &> /dev/null - WANT__THREAD=$? - rm -f "${T}"/test-__thread.[co] - - return ${WANT__THREAD} -} - -glibc_do_configure() { - local myconf - - # set addons - pushd "${S}" > /dev/null - local ADDONS=$(echo */configure | sed \ - -e 's:/configure::g' \ - -e 's:\(linuxthreads\|nptl\|rtkaio\|glibc-compat\)\( \|$\)::g' \ - -e 's: \+$::' \ - -e 's! !,!g' \ - -e 's!^!,!' \ - -e '/^,\*$/d') - popd > /dev/null - - if [[ -n ${PPC_CPU_ADDON_VER} ]] && [[ $(tc-arch) == ppc* ]] ; then - ADDONS="${ADDONS},powerpc-cpu" - case $(get-flag mcpu) in - 970|power4|power5|power5+) myconf="${myconf} --with-cpu=$(get-flag mcpu)" - esac - fi - - use nls || myconf="${myconf} --disable-nls" - myconf="${myconf} $(use_enable hardened stackguard-randomization)" - if [[ $(<"${T}"/.ssp.compat) == "yes" ]] ; then - myconf="${myconf} --enable-old-ssp-compat" - else - myconf="${myconf} --disable-old-ssp-compat" - fi - - use glibc-omitfp && myconf="${myconf} --enable-omitfp" - - [[ ${CTARGET//_/-} == *-softfloat-* ]] && myconf="${myconf} --without-fp" - - if [[ $1 == "linuxthreads" ]] ; then - if want_tls ; then - myconf="${myconf} --with-tls" - - if want__thread && ! use glibc-compat20 ; then - myconf="${myconf} --with-__thread" - else - myconf="${myconf} --without-__thread" - fi - else - myconf="${myconf} --without-tls --without-__thread" - fi - - myconf="${myconf} --disable-sanity-checks" - myconf="${myconf} --enable-add-ons=ports,linuxthreads${ADDONS}" - myconf="${myconf} --enable-kernel=${LT_KERNEL_VERSION}" - elif [[ $1 == "nptl" ]] ; then - myconf="${myconf} --with-tls --with-__thread" - myconf="${myconf} --enable-add-ons=ports,nptl${ADDONS}" - myconf="${myconf} --enable-kernel=${NPTL_KERNEL_VERSION}" - else - die "invalid pthread option" - fi - - # Since SELinux support is only required for nscd, only enable it if: - # 1. USE selinux - # 2. ! USE build - # 3. only for the primary ABI on multilib systems - if use selinux && ! use build ; then - if use multilib || has_multilib_profile ; then - if is_final_abi ; then - myconf="${myconf} --with-selinux" - else - myconf="${myconf} --without-selinux" - fi - else - myconf="${myconf} --with-selinux" - fi - else - myconf="${myconf} --without-selinux" - fi - - myconf="${myconf} - --without-cvs - --enable-bind-now - --build=${CBUILD_OPT:-${CBUILD}} - --host=${CTARGET_OPT:-${CTARGET}} - $(use_enable profile) - --without-gd - --with-headers=$(alt_build_headers) - --prefix=/usr - --libdir=/usr/$(get_libdir) - --mandir=/usr/share/man - --infodir=/usr/share/info - --libexecdir=/usr/$(get_libdir)/misc/glibc - ${EXTRA_ECONF}" - - # There is no configure option for this and we need to export it - # since the glibc build will re-run configure on itself - export libc_cv_slibdir=/$(get_libdir) - - has_version app-admin/eselect-compiler || export CC=$(tc-getCC ${CTARGET}) - - local GBUILDDIR=${WORKDIR}/build-${ABI}-${CTARGET}-$1 - mkdir -p "${GBUILDDIR}" - cd "${GBUILDDIR}" - einfo "Configuring GLIBC for $1 with: ${myconf// /\n\t\t}" - "${S}"/configure ${myconf} || die "failed to configure glibc" -} - -fix_lib64_symlinks() { - # the original Gentoo/AMD64 devs decided that since 64bit is the native - # bitdepth for AMD64, lib should be used for 64bit libraries. however, - # this ignores the FHS and breaks multilib horribly... especially - # since it wont even work without a lib64 symlink anyways. *rolls eyes* - # see bug 59710 for more information. - # Travis Tilley (08 Aug 2004) - if [ -L ${ROOT}/lib64 ] ; then - ewarn "removing /lib64 symlink and moving lib to lib64..." - ewarn "dont hit ctrl-c until this is done" - addwrite ${ROOT}/ - rm ${ROOT}/lib64 - # now that lib64 is gone, nothing will run without calling ld.so - # directly. luckily the window of brokenness is almost non-existant - use amd64 && /lib/ld-linux-x86-64.so.2 /bin/mv ${ROOT}/lib ${ROOT}/lib64 - use ppc64 && /lib/ld64.so.1 /bin/mv ${ROOT}/lib ${ROOT}/lib64 - # all better :) - ldconfig - ln -s lib64 ${ROOT}/lib - einfo "done! :-)" - einfo "fixed broken lib64/lib symlink in ${ROOT}" - fi - if [ -L ${ROOT}/usr/lib64 ] ; then - addwrite ${ROOT}/usr - rm ${ROOT}/usr/lib64 - mv ${ROOT}/usr/lib ${ROOT}/usr/lib64 - ln -s lib64 ${ROOT}/usr/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr" - fi - if [ -L ${ROOT}/usr/X11R6/lib64 ] ; then - addwrite ${ROOT}/usr/X11R6 - rm ${ROOT}/usr/X11R6/lib64 - mv ${ROOT}/usr/X11R6/lib ${ROOT}/usr/X11R6/lib64 - ln -s lib64 ${ROOT}/usr/X11R6/lib - einfo "fixed broken lib64/lib symlink in ${ROOT}/usr/X11R6" - fi -} - -use_multilib() { - case ${CTARGET} in - sparc64*|mips64*|x86_64*|powerpc64*|s390x*) - has_multilib_profile || use multilib ;; - *) false ;; - esac -} - -# Setup toolchain variables that would be defined in the profiles for these archs. -setup_env() { - # These should not be set, else the zoneinfo do not always get installed ... - unset LANGUAGE LANG LC_ALL - # silly users - unset LD_RUN_PATH - - if is_crosscompile || tc-is-cross-compiler ; then - multilib_env ${CTARGET} - if ! use multilib ; then - MULTILIB_ABIS=${DEFAULT_ABI} - else - MULTILIB_ABIS=${MULTILIB_ABIS:-${DEFAULT_ABI}} - fi - - # If the user has CFLAGS_ in their make.conf, use that, - # and fall back on CFLAGS. - local VAR=CFLAGS_${CTARGET//[-.]/_} - CFLAGS=${!VAR-${CFLAGS}} - fi - - setup_flags - - export ABI=${ABI:-${DEFAULT_ABI:-default}} - - if is_crosscompile || tc-is-cross-compiler ; then - local VAR=CFLAGS_${ABI} - # We need to export CFLAGS with abi information in them because - # glibc's configure script checks CFLAGS for some targets (like mips) - export CFLAGS="${!VAR} ${CFLAGS}" - fi -} - -### /ECLASS PUNTAGE ### - -if is_crosscompile ; then - SLOT="${CTARGET}-2.2" -else - SLOT="2.2" -fi - -# we'll handle stripping ourself #46186 -RESTRICT="nostrip multilib-pkg-force" - -# General: We need a new-enough binutils for as-needed -# arch: we need to make sure our binutils/gcc supports TLS -DEPEND=">=sys-devel/gcc-3.4.4 - arm? ( >=sys-devel/binutils-2.16.90 >=sys-devel/gcc-4.1.0 ) - ppc? ( >=sys-devel/gcc-4.1.0 ) - ppc64? ( >=sys-devel/gcc-4.1.0 ) - nptl? ( || ( >=sys-kernel/mips-headers-${NPTL_KERNEL_VERSION} >=sys-kernel/linux-headers-${NPTL_KERNEL_VERSION} ) ) - >=sys-devel/binutils-2.15.94 - || ( >=sys-devel/gcc-config-1.3.12 app-admin/eselect-compiler ) - >=app-misc/pax-utils-0.1.10 - virtual/os-headers - nls? ( sys-devel/gettext ) - selinux? ( !build? ( sys-libs/libselinux ) )" -RDEPEND="nls? ( sys-devel/gettext ) - selinux? ( !build? ( sys-libs/libselinux ) )" - -if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then - DEPEND="${DEPEND} ${CATEGORY}/gcc" - - if [[ ${CATEGORY} == *-linux* ]] ; then - if [[ ${CATEGORY} == cross-mips* ]] ; then - DEPEND="${DEPEND} >=${CATEGORY}/mips-headers-2.6.10" - else - DEPEND="${DEPEND} ${CATEGORY}/linux-headers" - fi - fi -else - DEPEND="${DEPEND} sys-libs/timezone-data" - RDEPEND="${RDEPEND} sys-libs/timezone-data" -fi - -pkg_setup() { - # prevent native builds from downgrading ... maybe update to allow people - # to change between diff -r versions ? (2.3.6-r4 -> 2.3.6-r2) - if ! is_crosscompile && ! tc-is-cross-compiler ; then - if has_version '>'${CATEGORY}/${PF} ; then - eerror "Sanity check to keep you from breaking your system:" - eerror " Downgrading glibc is not supported and a sure way to destruction" - die "aborting to save your system" - fi - fi - - if use glibc-compat20 ; then - eerror "This version no longer provides compatibility with old broken" - eerror "applications. If you need this support, call your vendor" - eerror "and tell them to release an update that isn't broken." - die "non-TLS symbol errno@glibc_2.0 not supported" - fi - if want_linuxthreads ; then - ewarn "glibc-2.4 is nptl-only!" - [[ ${CTARGET} == i386-* ]] && eerror "NPTL requires a CHOST of i486 or better" - die "please add USE='nptl nptlonly' to make.conf" - fi - - if use nptlonly && ! use nptl ; then - eerror "If you want nptlonly, add nptl to your USE too ;p" - die "nptlonly without nptl" - fi - - if [[ -e /proc/xen ]] && ! is-flag -mno-tls-direct-seg-refs ; then - ewarn "You are using Xen but don't have -mno-tls-direct-seg-refs in your CFLAGS." - ewarn "This will result in a 50% performance penalty, which is probably not what you want." - fi - - if ! type -p scanelf > /dev/null ; then - eerror "You do not have pax-utils installed." - die "install pax-utils" - fi - - # give some sort of warning about the nptl logic changes... - if want_nptl && want_linuxthreads ; then - ewarn "Warning! Gentoo's GLIBC with NPTL enabled now behaves like the" - ewarn "glibc from almost every other distribution out there. This means" - ewarn "that glibc is compiled -twice-, once with linuxthreads and once" - ewarn "with nptl. The NPTL version is installed to lib/tls and is still" - ewarn "used by default. If you do not need nor want the linuxthreads" - ewarn "fallback, you can disable this behavior by adding nptlonly to" - ewarn "USE to save yourself some compile time." - - ebeep - epause 5 - fi -} - -src_unpack() { - setup_env - - toolchain-glibc_src_unpack - - # Backwards SSP support - cd "${S}" -# For now, we force everyone to have the extra symbols -# einfon "Scanning system for __guard to see if we need SSP compat ... " -# if [[ -n $(scanelf -qyls__guard -F'#s%F' | grep -v '^/lib.*/libc-2.*.so$') ]] ; then - echo "yes" > "${T}"/.ssp.compat -# else -# # ok, a quick scan didnt find it, so lets do a deep scan ... -# if [[ -n $(scanelf -qyRlps__guard -F'#s%F' | grep -v '^/lib.*/libc-2.*.so$') ]] ; then -# echo "yes" > "${T}"/.ssp.compat -# else -# echo "no" > "${T}"/.ssp.compat -# fi -# fi -# cat "${T}"/.ssp.compat - - # Glibc is stupid sometimes, and doesn't realize that with a - # static C-Only gcc, -lgcc_eh doesn't exist. - # http://sources.redhat.com/ml/libc-alpha/2003-09/msg00100.html - # http://sourceware.org/ml/libc-alpha/2005-02/msg00042.html - echo 'int main(){}' > "${T}"/gcc_eh_test.c - if ! $(tc-getCC ${CTARGET}) "${T}"/gcc_eh_test.c -lgcc_eh 2>/dev/null ; then - sed -i -e 's:-lgcc_eh::' Makeconfig || die "sed gcc_eh" - fi - - # Some configure checks fail on the first emerge through because they - # try to link. This doesn't work well if we don't have a libc yet. - # http://sourceware.org/ml/libc-alpha/2005-02/msg00042.html - if is_crosscompile && use build; then - rm "${S}"/sysdeps/sparc/sparc64/elf/configure{,.in} - rm "${S}"/nptl/sysdeps/pthread/configure{,.in} - fi - - cd "${WORKDIR}" - find . -type f '(' -size 0 -o -name "*.orig" ')' -exec rm -f {} \; - find . -name configure -exec touch {} \; - - # Fix permissions on some of the scripts - chmod u+x "${S}"/scripts/*.sh -} - -src_compile() { - setup_env - - if [[ -z ${OABI} ]] ; then - local abilist="" - if has_multilib_profile ; then - abilist=$(get_install_abis) - einfo "Building multilib glibc for ABIs: ${abilist}" - elif is_crosscompile || tc-is-cross-compiler ; then - abilist=${DEFAULT_ABI} - fi - if [[ -n ${abilist} ]] ; then - OABI=${ABI} - for ABI in ${abilist} ; do - export ABI - src_compile - done - ABI=${OABI} - unset OABI - return 0 - fi - fi - - if just_headers ; then - toolchain-glibc_headers_compile - else - toolchain-glibc_src_compile - fi -} - -src_test() { - setup_env - - if [[ -z ${OABI} ]] && has_multilib_profile ; then - OABI=${ABI} - einfo "Testing multilib glibc for ABIs: $(get_install_abis)" - for ABI in $(get_install_abis) ; do - export ABI - einfo " Testing ${ABI} glibc" - src_test - done - ABI=${OABI} - unset OABI - return 0 - fi - - toolchain-glibc_src_test -} - -src_strip() { - # Now, strip everything but the thread libs #46186, as well as the dynamic - # linker, else we cannot set breakpoints in shared libraries due to bugs in - # gdb. Also want to grab stuff in tls subdir. whee. -#when new portage supports this ... -# env \ -# -uRESTRICT \ -# CHOST=${CTARGET} \ -# STRIP_MASK="/*/{,tls/}{ld-,lib{pthread,thread_db}}*" \ -# prepallstrip - pushd "${D}" > /dev/null - - if ! is_crosscompile ; then - mkdir -p "${T}"/strip-backup - for x in $(find "${D}" -maxdepth 3 \ - '(' -name 'ld-*' -o -name 'libpthread*' -o -name 'libthread_db*' ')' \ - -a '(' '!' -name '*.a' ')' -type f -printf '%P ') - do - mkdir -p "${T}/strip-backup/${x%/*}" - cp -a -- "${D}/${x}" "${T}/strip-backup/${x}" || die "backing up ${x}" - done - fi - env -uRESTRICT CHOST=${CTARGET} prepallstrip - if ! is_crosscompile ; then - cp -a -- "${T}"/strip-backup/* "${D}"/ || die "restoring non-stripped libs" - fi - - popd > /dev/null -} - -src_install() { - setup_env - - if [[ -z ${OABI} ]] ; then - local abilist="" - if has_multilib_profile ; then - abilist=$(get_install_abis) - einfo "Installing multilib glibc for ABIs: ${abilist}" - elif is_crosscompile || tc-is-cross-compiler ; then - abilist=${DEFAULT_ABI} - fi - if [[ -n ${abilist} ]] ; then - OABI=${ABI} - for ABI in ${abilist} ; do - export ABI - src_install - done - ABI=${OABI} - unset OABI - src_strip - return 0 - fi - fi - - if just_headers ; then - toolchain-glibc_headers_install - else - toolchain-glibc_src_install - fi - [[ -z ${OABI} ]] && src_strip -} - -pkg_preinst() { - toolchain-glibc_pkg_preinst -} - -pkg_postinst() { - toolchain-glibc_pkg_postinst -} -- 2.26.2