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
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
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
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
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
-----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-----
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-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
+++ /dev/null
-# 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. <azarah@gentoo.org> (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 <jangutter@tuks.co.za> for reporting it.
- #
- # <azarah@gentoo.org> (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 <jangutter@tuks.co.za> for reporting it.
- #
- # <azarah@gentoo.org> (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 ...
- #
- # <azarah@gentoo.org> (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.
- # <tuxus@gentoo.org> thx <dragon@gentoo.org> (11 Jan 2003)
- # <kumba@gentoo.org> 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.
- # <taviso@gentoo.org> (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 <<EOF
-/* GNU ld script
- librt.so.1 needs libpthread.so.0 to come before libc.so.6*
- in search scope. */
-EOF
- grep "OUTPUT_FORMAT" ${D}/usr/lib/libc.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
-}
-
+++ /dev/null
-# 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.
- # <taviso@gentoo.org> (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.
- # <tuxus@gentoo.org> thx <dragon@gentoo.org> (11 Jan 2003)
- # <kumba@gentoo.org> remove tst-rndseek-mips & ulps-mips patches
- # <iluxa@gentoo.org> 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. <azarah@gentoo.org> (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 <<EOF
-/* GNU ld script
- librt.so.1 needs libpthread.so.0 to come before libc.so.6*
- in search scope. */
-EOF
- grep "OUTPUT_FORMAT" ${D}/usr/lib/libc.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
-}
+++ /dev/null
-# 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.
- # <taviso@gentoo.org> (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.
- # <tuxus@gentoo.org> thx <dragon@gentoo.org> (11 Jan 2003)
- # <kumba@gentoo.org> remove tst-rndseek-mips & ulps-mips patches
- # <iluxa@gentoo.org> 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. <azarah@gentoo.org> (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 <<EOF
-/* GNU ld script
- librt.so.1 needs libpthread.so.0 to come before libc.so.6*
- in search scope. */
-EOF
- grep "OUTPUT_FORMAT" ${D}/usr/$(get_libdir)/libc.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 <lv@gentoo.org> (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"
-}
+++ /dev/null
-# 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.
- # <taviso@gentoo.org> (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. <azarah@gentoo.org> (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 <<EOF
-/* GNU ld script
- librt.so.1 needs libpthread.so.0 to come before libc.so.6*
- in search scope. */
-EOF
- grep "OUTPUT_FORMAT" ${D}/usr/$(get_libdir)/libc.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 <lv@gentoo.org> (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
-}
+++ /dev/null
-# 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} <program> [<options>]'"
- 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 <lv@gentoo.org> (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
-}
+++ /dev/null
-# 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} <program> [<options>]'"
- 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 <lv@gentoo.org> (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
-}
+++ /dev/null
-# 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} <program> [<options>]'"
- 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 <lv@gentoo.org> (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_<CTARGET> 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 '<sys-libs/glibc-2.3.6' ; then
- eerror "Portage have a serious bug in regards to symlinks, and merging"
- eerror "this with current versions will fail! See:"
- echo
- eerror " http://bugs.gentoo.org/show_bug.cgi?id=112082"
- echo
- eerror "If you want to update, please apply this patch:"
- echo
- eerror " http://bugs.gentoo.org/attachment.cgi?id=72643"
- echo
- eerror "to '/usr/$(get_libdir)/portage/portage.py' and"
- eerror "comment the die() below."
- echo
- ebeep
- die "Might break upgrading."
- fi
-
- 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() {
- setup_env
-
- 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 6640_mips_unistd_h-fixes.patch"
- use_multilib \
- && GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 6680_mips_nolib3264.patch" \
- || GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 5005_all_enable-multilib-with-cross-compile.patch"
- ;;
- amd64)
- if ! has_multilib_profile && ! is_crosscompile ; then
- # the gentoo-libdir patch hack conflicts with these
- GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 5005_all_enable-multilib-with-cross-compile.patch"
- fi
- ;;
- esac
-
- # Do not enable -Bdirect support for now.
- GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 2020_all_2.3.6-hashvals.patch"
- GLIBC_PATCH_EXCLUDE="${GLIBC_PATCH_EXCLUDE} 2030_all_2.3.6-bdirect.patch"
-
- toolchain-glibc_src_unpack
-
- # XXX: do not package ssp up into tarballs, leave it in FILESDIR
- cd "${S}"
- cp "${FILESDIR}"/2.3.5/ssp.c sysdeps/unix/sysv/linux/ || die "could not find ssp.c"
- rm -f "${WORKDIR}"/patches/2*
- epatch "${FILESDIR}"/2.3.6/glibc-2.3.6-propolice-guard-functions.patch
- epatch "${FILESDIR}"/2.3.5/glibc-2.3.5-frandom-detect.patch
-
- 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
-
- # 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
-
- # 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
-}
+++ /dev/null
-# 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} <program> [<options>]'"
- 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 <lv@gentoo.org> (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_<CTARGET> 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
-}