parlay

yet another gentoo overlay
git clone https://git.parazyd.org/parlay
Log | Files | Refs | README

commit e77dc21c3615e81cfd5c552db3ba5da2c97c490a
parent 5e6bf45215a92a49ade2b8b55bd2809ec3590634
Author: parazyd <parazyd@dyne.org>
Date:   Mon, 14 Nov 2016 21:36:48 +0100

www-client/firefox: Add 49.0.2 with musl pthread patch.

Diffstat:
Awww-client/firefox/Manifest | 92+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Awww-client/firefox/files/0002-Use-C99-math-isfinite.patch | 17+++++++++++++++++
Awww-client/firefox/files/disable-hunspell_hooks.patch | 11+++++++++++
Awww-client/firefox/files/disable-moz-stackwalk.patch | 17+++++++++++++++++
Awww-client/firefox/files/firefox-48.0-pgo.patch | 12++++++++++++
Awww-client/firefox/files/fix-arm-atomics-grsec.patch | 306+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Awww-client/firefox/files/fix-arm-version-detect.patch | 13+++++++++++++
Awww-client/firefox/files/fix-fortify-inline.patch | 11+++++++++++
Awww-client/firefox/files/fix-fortify-system-wrappers.patch | 13+++++++++++++
Awww-client/firefox/files/fix-seccomp-bpf.patch | 14++++++++++++++
Awww-client/firefox/files/fix-stack-overflow.patch | 45+++++++++++++++++++++++++++++++++++++++++++++
Awww-client/firefox/files/fix-toolkit.patch | 90+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Awww-client/firefox/files/fix-tools.patch | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Awww-client/firefox/files/gentoo-default-prefs.js-1 | 17+++++++++++++++++
Awww-client/firefox/files/gentoo-hwaccel-prefs.js-1 | 2++
Awww-client/firefox/files/icon/firefox.desktop | 9+++++++++
Awww-client/firefox/files/mallinfo.patch | 20++++++++++++++++++++
Awww-client/firefox/files/mozilla-build-arm.patch | 11+++++++++++
Awww-client/firefox/files/musl-pthread-setname.patch | 14++++++++++++++
Awww-client/firefox/firefox-49.0.2.ebuild | 362+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
20 files changed, 1126 insertions(+), 0 deletions(-)

diff --git a/www-client/firefox/Manifest b/www-client/firefox/Manifest @@ -0,0 +1,92 @@ +DIST firefox-49.0-patches-02.tar.xz 12612 SHA256 afb8d01ac802bb3f9507675b325b113773706eb7e1c4e9c8eb071ef7a4d164a6 SHA512 30abc344129ba77876baa07b71fe550b646c8b026b68e1f1bdff4719012814fe3ca0750a98b55b21e4015688f4abb6f60255163685f9d9e17dcaa3fad995cf5f WHIRLPOOL 5adcf21afd340a88fc06cb184da202dd120a19035270b4a5b6e370d16676d5e8521876a74976df5de2b1d0c152be8143cb03e470537e39578ec617648a7fb48f +DIST firefox-49.0.2-ach.xpi 427260 SHA256 45805cd9d522cc30afbb855e7f6e8016c9b49d7ad1cb3920461641d0049c305c SHA512 bc1418c2bd1698ae7c9324e70afd868c5ca69c54acb4040d840c645c0ea8c7ed5c78bd2d182a7083f7252855200fbe3e8f8dfeb8fe9198a872ed4c735e729f31 WHIRLPOOL 0f616bb3430f157f7738932f819fe0d7f8b28642b6f5fb63d61b6f6147da21274629887a2fa8f0f665539d99fff9c35770f988a073d83d9b72d8c0720a027484 +DIST firefox-49.0.2-af.xpi 436101 SHA256 dc6184e706f96884bbad38a0f3a7ec727a3da287551473b0c85dbd9acac6781a SHA512 ff463aa5c9e99c8c579140de2dd66f31c5439dfca9507ed145063306522919865fed10020d9c37efc4bed8093b38e1439a86dd02ca71ba1915a482274c5c660d WHIRLPOOL ad04fbdae9536bef6413b217746dd08410ae20ecf2785b31973662ff32f79dc62ac941fb08459369ef7d94f78f37e4474f9d74e5bd6fd81b179c02bd81f401f8 +DIST firefox-49.0.2-an.xpi 446087 SHA256 7de53205c8e81e6b0bfc04a400f303a369caba6597857df5e7b646bfae24cd15 SHA512 f0e1b149209862b0bbcceb51b730bc2fb09567ae4bd7d0801a379f382e8dfa190f644ee5560456ead1be77dd9f31a5a6a3e1128866bec0b86e32cd66a88b5fa0 WHIRLPOOL 99aea4b3347111a99a616948057dc6e8e3b31ccf257990ac14dbe3bcbb51acd2724746f1060f1929abeb7bb906c66b0d9e82498aa0cbf7680358dfcd033d6b63 +DIST firefox-49.0.2-ar.xpi 471935 SHA256 123f5a08a2356b2cda3ba73ab39ada518d5eb16de537163f7ea9a0cc180087d2 SHA512 20f899daed9308f9658905c1fc0113bbe46fe0befbd889755955488ff40215c48dfa2bc1421456f93368d49a85d48be6d2f221c28d977caa32b5517d29388085 WHIRLPOOL dea3adf0e36d96fc1d41e9a2a01e4264a705c632c7592294fccb1329cea9513cf5c776ef1111bf25ac8302d817b41a3114add77a15a1a01c1f0da4dc8b6bed90 +DIST firefox-49.0.2-as.xpi 487354 SHA256 29f4aa1e938bfa5c7d305b6a932c6cf15a55fafa244e71785566099e2adf8da2 SHA512 e993ff41c58bb51c20f40d49e7e143268837f8727ab7d92bf5f5b7eb75e95b8618f74d03ef73d3eea9faccb7f82c6d22bb1b41521967f7d0b068887aac869a83 WHIRLPOOL dd63fee5315736c49995b5655b5fba7a322dfebabae42dded966204dfb789688c295d2a5857d5787e4ddf641320764dd884bd6ffe27ac7370097e53afcf0ece6 +DIST firefox-49.0.2-ast.xpi 461423 SHA256 9ea65f49a68555babbe94b1c3739da0df8cfb1233ea2a78a560fdbe7d4379937 SHA512 e3a3acb0a3d299071dca9e8cd2a88638b6950db1fc5f11eceec69def99e3abfe0fb829c3b1b1e4740b8dcf28013f4b7f0a088e49fc999b3ec52ac88a66e9b4e0 WHIRLPOOL be02a93dad591c019a53486032a3e756275c1cfc8a2f698f1802cc3999438783447c3b78c81a509a0710614b522b31609642b91b442fe1264723f609ce824e16 +DIST firefox-49.0.2-az.xpi 453808 SHA256 80b1aaa2cc659f2e3592674a1ec5aff1925ee9db35cb665b2dcaa626419b7bcf SHA512 806129b9a62a7faa6b14c7077df323e561b759466b2cfd5afa751620cfa5ab726f442ed790e46f8078e2fd5db858a5b6f055c63d066c39c49f6ed06c89a39672 WHIRLPOOL 919b5bf2082eb53ec109a49b3df68544f9ffa626bba96356d206c1b5e7339456635ab9c9438ad6cc87c657affeabb94d596200b52f073c6b21bf4f2e2de77d67 +DIST firefox-49.0.2-be.xpi 457912 SHA256 e59042399f248ccaf614884f73e25bb65e56f24cb1f5190b09f7e839ef71d20d SHA512 4cf00b4cf0a4124942aeb1b33e96521b12b6f31169ce836ab074a19e50d6fa828a821798e90eac24393f71704f297dee18131ae2332f792afa4d1cef0ced3156 WHIRLPOOL 60a193adc1d767f682dc4f5222f30f5cd3b91d7161a52101bdb3d86581867c24ef4ab6ac12249b6ca398e130f72621c1607dd44ac2aee4adf0fa94068597168c +DIST firefox-49.0.2-bg.xpi 485363 SHA256 09778b20ea1a1723c3f7a5d27d1fd1501caa0dc9d8595f74003bb715ae9566ff SHA512 96227744c32d34176122fc7775bcfe4d282639b102c9ed6c53a58baead3abaa86d9ecbbabfaf6cd9a3ff3bb28e02adbdc052339185cd8a2e6dcd893eed311cc2 WHIRLPOOL a38d9cae0d8de261e5726955526d472e2ab211f288de1bc83349dacfb13c7aaf8599ea8b1d95af3aee35787228312287d99f86d2ef06a4d8889a4a3fb6d7581f +DIST firefox-49.0.2-bn-BD.xpi 511112 SHA256 208d72e86bb12b5694d1583630553c0add9a498bb649b0141d1ae0d09fad77aa SHA512 67035be4c328216a9e04537d340a5e7a10e7a1f0213ca8c67837342e23f91034f1a48d06fbf692d5603d742903c96b324d97ad93445c19dd818a856d3b0e0971 WHIRLPOOL 05e62d43ed21211ec83456035060891a12f30de2c24575b59b949e8ce247dceeec99dff93a0836aca32102c6e01416e8e4e9f32b3c813f3240a104090190b116 +DIST firefox-49.0.2-bn-IN.xpi 508051 SHA256 a4dbc815a318aa9706030f40fa609489848ca9db73807aff80c4f86a2971cfe1 SHA512 65f82337751dadeec9e8364d374440fb91af793946739c31a0daff475a66460be7b4791b1bb72b828198502449b98cd9bffe783a999a364a63694cd6b76ad641 WHIRLPOOL 22c898a8bc1c16994086325fa05f03b17fcd4f8b03dcc678676bac1d43b49050953e6a6d7c95a13e2f3720be7f9a0b838df4318061c4edeb9ddae20b7bf60342 +DIST firefox-49.0.2-br.xpi 432778 SHA256 664d3747c7d89ebb2241c29cec921ef59a023a67535946cd4935da98d4ad3a57 SHA512 6c9ba9f66fb23272a1740e66e6c969e85f974300bbda9248622d81e154079609a73ccaabdc61ef595c6315a8fd71861d895681f18ad09aa4dc9d648b1c7cc4be WHIRLPOOL fd6e22abbc78577f4e5350193704c43da3e8fda198145994352bb34d2fa1a878911d97322c55341942f86dc9b98dcd1e347f2d90c658252228e5021c31811bc0 +DIST firefox-49.0.2-bs.xpi 440115 SHA256 be93f20885a42fb6c07bfe7edffae7042265165399ddf606b11dd9fb550fcd39 SHA512 448c2b5d0a00a7f26411c00fbd2d9f5b0097046c38f24e6974376687fd8e48459630c75839c543bbd2d8bd57b1e0443da1501e0840274d2926e7f2ec0b52b678 WHIRLPOOL d1b37a7c75c8679cf67a0c8a00b481542423b1813ba8cadc426ebc490c4489e7704e63c80025f7ec83b4047cad36a1b142ab6292b6844172a4d61c39724793f4 +DIST firefox-49.0.2-ca.xpi 442608 SHA256 914332e5083ec325a4284c45634241e26b0c4d5c293b5f66be02fa6fa82b465f SHA512 d3e63b9c4f1bc3414b8a8313b3623aaffe88c09d2da071ae29f0b0fd3638805ba0ea26ba221e603ccf0e5c30cd50362f3a54d959cdd62156a4fa45cc571a6815 WHIRLPOOL ebb08f3e13fcf6158051b9eff078b9298b87d5c83c55a7219792e1cfeab3f295f76f8b5cd0680d5adb08c8a8d232ceca61d642f246ed119b7fb7345a01c2bad3 +DIST firefox-49.0.2-cak.xpi 458320 SHA256 ab160d58f9f9595b1a7757b8ae8fd905cb13d6df58c9cacc277747e16829e832 SHA512 9296a8f5388af829c9f87b56020a2191581e43684402ede49844d067f8ce6521e1bb413f4dbb62a6ae0633f48a16f4d410f62bf3a0cbd18ea5dc8c7e3007cf08 WHIRLPOOL d333c874900faa1d20f19e766b3f4a533054472cadb6850a15c6b2649e51b41a98b0a1272c11e1d81e9f0ac9cd4ecc952edea46d3290c53d1925d031a01367e4 +DIST firefox-49.0.2-cs.xpi 439660 SHA256 a9159ec86021a004907e45da1d34db73e9f14f8f9cb279589307b113bb6726b2 SHA512 a5bf7fcf7de0a681c365be1dac464bd83baf79268aeb2875d1b5e12dbebce1ad91d0aa5e27f4f01741f0e0690ca0f1d41b85b066b8147ce410e213a80e300aea WHIRLPOOL 2e49284c034607c73c611bb01da3f884984fc5bebd076688152d1c4c1505d31ac55483539e192fe85258d870bd4876c19d19c6965830de93c3ac1eda5967a9ef +DIST firefox-49.0.2-cy.xpi 435868 SHA256 5d6ad2b71992192e525e4d5905222b0eb0bda33c59a60ed185d31b0058b37f9e SHA512 ad7cb48ff805fe43c13c2170c924b338f3d224280353d772029e3d01996f72db8b640f095dc352e7c397b989141b5f72e6c91b4ba08acdf13b0fba8c25a99a90 WHIRLPOOL bc6a235f419e95a4677c4f04a4a528bea89aaf19ffbfc6aaf2af023e2684e0b96d992bf7f3c1013b88c8acafab560943c6421f0671be00db68870fe76d2644f2 +DIST firefox-49.0.2-da.xpi 423925 SHA256 e8ef0cd5d5011d063de3f5c4d4c53030afe0592dc3a6bca44329e52efbccde84 SHA512 da7f089cd521b1936a808bdb8fa9799ae935b4b7cd826524cf62a49760e7dc693ad7487b18d32f3c9b24050c785952db24863435b096afbe0c3f45ae767f5b5d WHIRLPOOL 8c42a4370665580d00123baf981e9465b066d203e9433dd23618a50bf21ba2a6d6848fb5bd03157dcbcfd5fc652e77be8de508830f1102a18e243bf3e4de3cb6 +DIST firefox-49.0.2-de.xpi 441918 SHA256 32f00eedf0f68f318be129546a8c507263ff9959058e06d84f5a30e023e6121b SHA512 9ab77794fac52631ded884f79b197b8960f2a6980e8f38a0802361669c0a684086e0830427a679092ba253d41a3f6498834e9a445a30c0b2d61f2ca09c701e0d WHIRLPOOL 8584abe56a349d34d48de321cb318d4289c4efd62fb84fb8f30e1019a25cd63c15501b6a0b7390bb4f8cf941cbebe6d53168a95ea1530b4b6d56136834635b37 +DIST firefox-49.0.2-dsb.xpi 459994 SHA256 7734762f8bf2dd627fe9cafb5f6f37d88ac6bdc99abd1981a551d7ef47135423 SHA512 19a329deddb0a43b8354a93a11b5871e4e88f50805cd84b2dae650a3967baca30957cfcb1945dad302ed3a378b7ff74ca83ed9fe626274db35fa9fa0485f7566 WHIRLPOOL fbbd8f604aa3d28d5522e3b4693e1ef5145c499dc9bfc93c2e9df7706991af086ad8042f2705adbc820b929ad77a78c4c5ed6c8c11a9a249fdbd390bf589e15f +DIST firefox-49.0.2-el.xpi 506680 SHA256 b90324a5eddb90965df0bec902216420376b3007102ed48c1242a87ca804272c SHA512 f5e395ec54e81370417a8f7edda3a684af8a00e1fc268253cafd0ff7c3477d936ff7dfa49a796ba6e774fe608f99b90e560862793538ab043b13b4a4c855cc1d WHIRLPOOL 1abba650ecdfcba6c0f543f6e8d9530da809f9cd3b2820df8fd73410f6550e2f6f62fcd6cba825b1f4150b61b2d259f34763238482f09fe7d4c02d344d71d8ef +DIST firefox-49.0.2-en-GB.xpi 421950 SHA256 1a781abc61a09bdcde024437e7712329c8234e84324d60a688431fa8aca26462 SHA512 98c1c9bd47ee0d491a4ddd0bad75403981eaf566a461b253f7fd57569a36eb54e427d7f348e6c8b2e2acac13099a069b951d412727c30913b6aa47c109ec0f77 WHIRLPOOL 4fb5f1cdc665ff984e0c6851f98cd4fb14ce16eab479f333e0802995936304148e164adb51e56d9db3acee99404a52b2d2f11c7ad4d544550c4b025b1863bbad +DIST firefox-49.0.2-en-ZA.xpi 410564 SHA256 2485bee59b9f819ac6b07925982a827244a8cf80034f38b93df7cc70654f081f SHA512 92d2a64245c1ed330b32bb45923089f7b5d2301c70a4aa72a9e054b4ee513cd7bb56e4e253743f00e0c153be3f999689053954ebc5f718c409cc85ed589f3178 WHIRLPOOL 39adbefc56e382c50302b49c20a294cb523ec00429252544dd5c1d35a1c119ab73c7535896d4dba505d003597a632af0eea1c9660f3d3da540f5347d83a905f1 +DIST firefox-49.0.2-eo.xpi 436592 SHA256 9c870ec15bcd70683b5067a3e47c6bfc24f638d3f4dd335bb4ec4c33cffb3ff1 SHA512 44138eb7a3c269b3d554b185e0d2553defb8c5532812dc6ae970e8caca00c56f7daec6e0201309b7ec1b027dcbd99079368b2c57bae56c841530951cf2b0b71b WHIRLPOOL 7b6bdd17c3ea3ce4bc43109d6361e516067c516896ecf9b2236f535db9b87e9dcea36f26c25dedd47f98d4733ca79ede668341073f08af8500e01909596c647c +DIST firefox-49.0.2-es-AR.xpi 440337 SHA256 32babf458bd93c44957554923e7a57621f01b990f24d8a4a6e03ac1b07b177df SHA512 730bef39ab93725d11085962a32cc88137927cdd9d2c704d5b9572385b1afb630a80f3f42cbc9a02819295267834e4909d69248dfa6352c920601305be989482 WHIRLPOOL a99f31d8727fffacfaa924f56e6dc8dea084b0334721d009e02aa8a5411a6d8f4075b5f65ee7a1949462aa32789235ae3b084d7eedf0ecd0cbfd3e540816a2db +DIST firefox-49.0.2-es-CL.xpi 441654 SHA256 cf40babd40ac3e293ee27fbf86cfb780444d53c28c72aade5693b1735cacca07 SHA512 dcaf8d4a3a28c6bae3d8e1a17df5132969e8cd3504f4db64eea26e1cde7442f1d867c840da4b56c4b33a37df6f319b1a5f8a75524843554308c6d23b15779701 WHIRLPOOL 1015f8ff829737bc9ee803a7c67b39e4c112aec25a08d8d908cccbd1e75b980277e1482b529e2070cbf9dfdba6f8586bcc4c7a223e27e913bb21e3e19f66a71d +DIST firefox-49.0.2-es-ES.xpi 347226 SHA256 9bd54c78ad7f6f330d5853c7c5e061dff3b30911fbf9ba437eaf52e6e9e884eb SHA512 a2b7187ac269fe8bdb85b64b30d57adf74ea328d06730a6257d89f948c9a844da7b38852588672e13547144b6f66f8b62cff1166358d6c399540a908f03fd966 WHIRLPOOL 8f134b5d1da72bc0bf89cc0425c75d28ecd2d5236b7ecb89e73e04cb2ceb1678a1989a9d739412eb775370ca964667f09180e9b57e5828266d2c3ba1aed183ea +DIST firefox-49.0.2-es-MX.xpi 447125 SHA256 d113acdd0cb4992ec785a8eb86482d9d5dd891b7caa0ff8e822c16db534fa91c SHA512 f8c38bbb595cf98e83671094dde1883bb24f333955d7a910cde67546976b233725ba0b7df8420bd8c1337b30401098755d85d6f51805a8483aad199c80f68384 WHIRLPOOL 70d71042bdff297ac8753e110fc7fc2f8cdb48e07e9f19c25a10ed2d1b78e5d13b1c2be678c7581f41070ed7bdd995f8fa495ec3e6620b95bd3bc480da8472ab +DIST firefox-49.0.2-et.xpi 424386 SHA256 5126aa00346bf17a264f5f18aefbda89ba8b55406293cc92b498f5dadcff2787 SHA512 1c2b3f5e4b9000d5628ba78643e1dd88ad4109a2b735ce89c9d7641db0a44b2d62fa3f84a660eec2e7841efd108337f9766683b953e10d687c94820700e57822 WHIRLPOOL af90af55f960ccc6732bb8c0c79dad7b205ab13e257558f3b923d7dcfcc220477363b608c797a86c55a0d5780a3d3b4bfc1b6c5aa0b7cebe4dcbac15aff74b30 +DIST firefox-49.0.2-eu.xpi 439742 SHA256 f002959b617696c727cf8ca0e57468812a84a396441223a4214065e51ec7a1ff SHA512 2890b2bae0604916baa52d700ce2c353d587e3295e208f91a30fdabf5c74dcfb414a6baff2830f8c7675d81975eb23164e1563bc62e8b143cd41c804eedc42e2 WHIRLPOOL 8b2339f3c64b5dcf77915678f01a1c6a18bb0b0e1caa25908c2cd684f3f7507dc10c7b62e7acf58223f8acc12f5d98af04f874090920069904bc0fcb3ec41003 +DIST firefox-49.0.2-fa.xpi 489885 SHA256 2ab17fc600fdcad46f1291d91550a31d6f33fb66a296708103bc7640496c9972 SHA512 1d7ec42adf57f4664a461461b762ccc10280c529a67c2dec52fdb1adc33ccb29eaefee80be7714f1363e9c215029d2d96b7b2b1d8d5fa6e9dd3e860e00059d98 WHIRLPOOL b397e7b0bff6942946d6b2876f68afeab1d17df854b989b53d3e478e4d68a8bd88a54c46777524c3739f812dbeb81c2b7e4e53ee827ef3d4d2f4458063b56f5e +DIST firefox-49.0.2-ff.xpi 451263 SHA256 d6609c3dd5fabe30b1312047aa8ef75e9c840787a6a7cd0a9f8ca9bca25bc225 SHA512 10e4f4f5a239ed7da6eec7652e4cd69d0ab968d2023f87ddfeea9bd86aa3571b84a3bb733a749014c985569ccd5251b57e06fd263a3ae0e893d4830b317c9966 WHIRLPOOL 39c29ffa2cc7ed0a2bc018924f5ceacef1cc8c6ba20fd3a31faedb3f68369ca47d89cd83d1e228126306cb911a14024964db3f59ea03edb708709c8d8bad4b7f +DIST firefox-49.0.2-fi.xpi 430569 SHA256 72ae0298c37a4d56dbe22b0915e274cb71fc13ddf96727c4c17dc84f71c7b353 SHA512 62dd5b44030d2551ccd84bd6bb043885f73635ac2800a44ae36b102a510e2d7ae9b81a86a3b7a3fe4afda2f22b3379d9024a351a1748fb4adf6a0110b6b99a69 WHIRLPOOL 7df3b1917cbf8c6debd182cea7cbac342dce37df0e366a8bc2377ba94651e42711c3e75177903ac1eda87b352b638f76c6a77db3a4928935c978490155039096 +DIST firefox-49.0.2-fr.xpi 451720 SHA256 be900080ef7752e63290f48b03e452ff8fd3fe0f30a22887f3c2e5004ac3ac57 SHA512 f0307fcc86838fabe67b1ebd6f152a2296c7972bdfc374a466566eea978f8bef80e097982f71889559064c6e5eda5b84849c1a79be81b8f565f2771ebcacfb3c WHIRLPOOL 0bce69dd189e3b9caa399756eccdee1631999cf149a9e3799a19d264882383515dbc9bff4f5c9c23dc25a1eeea95fa4886d7469d1ec8ac70fccff773ec7c720c +DIST firefox-49.0.2-fy-NL.xpi 443879 SHA256 2e80a6a47a7ad5c033b2ce2651099a6397e8bf2603b9ef93f3a1d8c6ee1b8b96 SHA512 b0025005b214c8c3c258b25a8c80d9aabb55a2bc71f18eaed89417f031e18fdf53165c77d67deb8a51da8a1a1148328402d62651144ed113f0919813df788206 WHIRLPOOL 3cbf1640fb5f64a33d782cfe63f8c9e1c9469d307241867e125c98c43e69e5c792ec23613905ac3ebbd2e7f0d8fe26b063223a8cca0177396689265f9cb7eda8 +DIST firefox-49.0.2-ga-IE.xpi 457587 SHA256 f3820e512fa79bd0dc5cc71c63eb828bb14daa5631d38dd21e6b6c66d042ef90 SHA512 31f1c40902a46b7a03ed42246c9a8eae3bb38cd63bdf19d7d92a42b58bf29e70c7c052dbf0e94b80956f4858bd90d22b6471dfc55398d714efc3ea2a91d6e591 WHIRLPOOL b0af8a4a47471e842c2445b376d71b7cf4c94504c05d24fd0aa5e34cf19e2461c80748662ece097021dbec3f8e168c2e35ae4f3db75014ccd7ec6c6919c24031 +DIST firefox-49.0.2-gd.xpi 444958 SHA256 786778230b5c0794bf1a6a8720bf6266ad3a026dc00af004843c8cc696f77c37 SHA512 ca18cd941e6367de3ecd5f20a20de59ff0af4097425339a94e0fba61518212fa1bca54aad65f6c37d19bebcc3dee622ddf0646b32bf15c4cab6f31450b559fcc WHIRLPOOL d066fee88a1f60449cce0f6408b77ee619e458de6fa42e91c80882a5fc67ac625150f27e55fe4c31d075e1bd057633e7c477f3671742777c632124b79417469a +DIST firefox-49.0.2-gl.xpi 448067 SHA256 0bb23f8d81a7f0dc5eaac8e4d8c418a08f12a54383b13158a4825afaa449fa39 SHA512 aa4512c983b369d0985ad0d5c4d0f2b3b50d9cd67cc6acbed15397c17016570ea4197cdc9737a4d3469513407d43290aee244c871d99d30b457e0e9b15cb5e6c WHIRLPOOL bd575157afa99364715f14877eb228b3ef27ca1ad3c1cec7958e36e785e9cb44ec1c117f2ebd72545115ee86b69e474f4104262df089d8e51daf8eaf739e43b3 +DIST firefox-49.0.2-gn.xpi 455553 SHA256 24ed0a1f40a9b1b687412065a093397448c0229521d21729301df086d8b9a340 SHA512 137c668ff57758236ea2020b7c52fd616fc9c2eac5d0504e33c1f3dd3a66b22f1c2cd447478a1f50451183909fbafdbca25d2ee2c10d6e33fafeb46dd71ed314 WHIRLPOOL e6c0930f8c3577e5a9dcd8944dd79f6137c580de4e496962ff7c5739afccc14aaf398361c57d3cfc71dbcd1f9e87c816512a07548a633d4a18cdb186543fdd4b +DIST firefox-49.0.2-gu-IN.xpi 491793 SHA256 b44f58a445eb8669bbe480d947e626b6f00b090e7ab78eb3b0d341e039e83f9b SHA512 ae3ac43d85227f0e7937aacce4e2ee514e182afbec748cdec6c702c1d1a3838fa545ac7e18a964e468b598317811553fa548ec10591c310c1920c07110d0078e WHIRLPOOL 9b9b58bee6619206ca31f77dbe2b9c10ca671f670608571794206cb86b872495c474d991f2c512db3e45683701b9bfa1e24a0b753aa76a1ccd69bf07848c4a5e +DIST firefox-49.0.2-he.xpi 460378 SHA256 b81c9d8411f09d1f3e552fb3071e41ddbe780bc2b0df34771394976fb924c89c SHA512 ffa3b61de346088f987ef296152ebde16d42fd7bde07167f1c7cf215b8245b417f68012842b43f9fd5ce6096398d6b542882fc92b13e6282eaba35875072ef95 WHIRLPOOL 8109c8b135675c5d6b588adeee27885c954220695b07b145b5f4831eb6bc4296468ae2af80f6e0645fc2be3eb56302f7acb06cb54fd2a0ecb602db9b041adb8c +DIST firefox-49.0.2-hi-IN.xpi 504515 SHA256 e7eca1d545be818c4832ed1d92ecd25ce8ad4c59e619d02d71db15f94631cf1b SHA512 eee29c825a16003ed33cb8374132e34c06350126caaa55d81c7b7c0f418bb18d7b7f3f9f7f89650dd587e5f2523b0d90246d459483d6d612ae9dbbef06f482b4 WHIRLPOOL 9640f15ac7532e37f9f06c06016f49e82443a80f3fd59ca2ce96a2145623e4c9e4f26aa99a7f952b5971b3b53371bc060da1159d250b49f183dab59380ac0bee +DIST firefox-49.0.2-hr.xpi 447985 SHA256 9f6208e22a94a5b3a3d0f1b53729829dabd522fec169a2a794a1ce3d8061c6f9 SHA512 765d5b0e76fedee97000e6ae4e70fdd6cb7bac168bb611c9cab094d158edf472616b473d436fd771a65f20a73e05eb776acbf99742c6ab1c1f08d5631ade2743 WHIRLPOOL e4067ecb2e714d1be677bf10aad91a77a070ad8a70d8189aeadb11930eb7689d9e9b4f38b6662b0fe11030a99db64943907cb16d7f88fa9997e5c5af99b20dcd +DIST firefox-49.0.2-hsb.xpi 457763 SHA256 a59cbb5ddff83ff9c7a9305328d5bc927eb04527270c72d6a4599e083e383fee SHA512 9f482440559d57a8f0c73f733ee89e8864535824f696877d965076223d124b12e88fe6cd5c8e07943b0166f4525f9f8719924b24ee0c9762f51d170cca27442e WHIRLPOOL f00f0640ba8becb07e4ca0b067ce40ca6c4dcddf0b04ce10bcbff613ad802b76530778fabb533e88ff753d2f3744e353b82647c8576a2c8a6f4b5de61e0b6c12 +DIST firefox-49.0.2-hu.xpi 450546 SHA256 96d8be62b70d73c3ace875c4aa79fb32d0c6a261f27c39ca0d90063a39ac77d8 SHA512 7ee52ce79fcc7e4e673fde0904b6136ee0ef227fffbd9bb03e76bb91037cd75d3ffa43e52bbc652310231511728fad5a578506eaac7c5c40d6c61e0bed30e3fd WHIRLPOOL ffeb4cf3fe40ef10e8bcb17b1a42562ecf1de0addf4a8a7f94cfa295b018bfb7b978704e0027b29af02fe467e9634f8ce72327a0127f9b514579a9e8c0ce8f15 +DIST firefox-49.0.2-hy-AM.xpi 493808 SHA256 971fde32067742370ac876ffd28ad1f87000a766dad4577c2d9f1a4c51714e94 SHA512 943af8c3bd0cc05ed63ea99956cbc913d9f1f2d6edb668c43dff5c88614453ac0211bbdb71486d228ab4f61bdd46225bc74fe4ab1174d7450ac953390415d916 WHIRLPOOL f49c3e398d9c11600c7d164622aa41893026a3c20c82dba596701d819af5a9bdc1c346fa1694923c2a11face942f62dc8dc79c2d4ecba138a254d2df06c5e2c7 +DIST firefox-49.0.2-id.xpi 423402 SHA256 7ccfb2abf77a029852f7da8e7dd77419af5ad746ac03a8f36e53b3d24a3f4429 SHA512 c877f4baa72c1780ef2d2202f6cb94135b3a7da6baf0eecaa8a9f7a30c8e579830cb0ac80a0e09b24f57839481c91c946ce14a6b977514103f01c03254e8efae WHIRLPOOL 4d1307c142515c53198f075c852ad4f69a5eab21f94bda1d65e11bf2a9da678778ad0c90ca596cc46007bb1761b949e6a2809fce8584b5094f50de2417c59e82 +DIST firefox-49.0.2-is.xpi 437737 SHA256 ef83b6ac44a09cd6b59e01bc55db5f2e5cf55f4040ec874bb819089ff7697c17 SHA512 f69ef67e8faf8464c00a95f316e9e317e558e447307e8e2fa99b76acd2d5bfd62dd814ea7c8f4cc33b585e7ba2aec9d1d204403fd3982c2db592d6a5e946884a WHIRLPOOL 419213f2c2026f5f73d48bdaf91c65cf94ad2c696000bdb3f4691d065be3983e67a87d2dc12ac936a707fae57bfb9d2e6b5d2dd0bbe0640d14ae2199021c7339 +DIST firefox-49.0.2-it.xpi 339264 SHA256 178eb7516a3f1f90906bc980e6585000b9806f430978fd1e0527306d0eb9a16d SHA512 bd8d8605fbe0b18b72a7cf3c01db48bfd991352984674fb2030a10074dbbef2e1396bb7daa9a140ace6f0368c234f42421dcb8ab0d8d97a8901675bf56a2a18a WHIRLPOOL 694939d42e9f8bacfb88191fe52c27af9893ad53801378d74ec14e9e32562bea8f308bd00094685da8f38827e6d7871a820a6800886305617a02a4a2c4fd19ea +DIST firefox-49.0.2-ja.xpi 486517 SHA256 c784401f4396f20597b7c835dfe291ed34ac8ff39f94d575683e50aad640a234 SHA512 0d5dc0c204cd9099a78f54ebd1a27bf2632b2d648be4692f6376c7f23d51e0ab0e31aabec3af12605a9199c98d3c798208ffdba23d3d893df60544b81f4a8ea4 WHIRLPOOL 4bb3907ae2594e7db431f87d20683cf244c4d5db7d46cca7e76fc17544dd5352cefd9c92de4ec276c74aa2a7a7a90103a945b2d60203991e475e0205e6fcb7cd +DIST firefox-49.0.2-kk.xpi 494256 SHA256 91bb0807f1215e8cfaa6e85062d864994c9bf7dc7a3c988a0311f8fdebf4e9ad SHA512 a77e31f29c247b413b3f9ed5199bc12df941bada807a29a6819f0ffa1e2a866bb19e3f8e5785932c2bbddd131810252a1707ac1a3764e8fa6d75fe33b5ed3e00 WHIRLPOOL ee0a28f223083606b5d2bb6715b5481b7499825e3597ec079cc1e86c41849c5aa0dae69678f7efcd210383fae539b00f3d63e841dccd550eb7c1b534678c0d01 +DIST firefox-49.0.2-km.xpi 520083 SHA256 30cfa3ceb49c847de219d88c6cf2b02e3a4190e8806a5e56dd09e8d1b80eecbd SHA512 033a8cfc4abbf09668095d52f6aaa31fc8ea6cbbbf977750ea999cc7f0f8d16c06d1815ec81ccdb0c150f2d0751e5f55114f1ef128e36fd586a76215ff91d312 WHIRLPOOL 96a7df8ad1200e7adb6e888832dc45bdbc5e8c9ca4f4841ce1a53899086af5da73f946a0734c47421df73af5129b034349aea0e2fa50e76cb617a82b129bb85c +DIST firefox-49.0.2-kn.xpi 518782 SHA256 16d132bafae24a9c0d23e3686427c2366208dd1e8b859dc2253d1cb36685c22c SHA512 927b5f840d47fc6be7bd97bf215b106c4b9f22c68b07476cb42cdac4cb14506b5bfccea7c6c9b511ff0e1c3f1a891d52781f26a4debdba4ec09f68a975584711 WHIRLPOOL 0225a1ad4c921587674ea8abad95fd7b26bd20fdeea41bc193675d490ef63d04a02f1fc476b207e89439bdacbbbdce686c02d8139c1bd2908dad696f7e2c5520 +DIST firefox-49.0.2-ko.xpi 460895 SHA256 41cec32f26ad1037ff1271bb8dd933bca2fb7e49d3329880d158e7b33fff1449 SHA512 116b3b0e4fa9051b99b23e76d6545471e6261c9dbec398a80d547b27396946654bd4acbdb65183456b6579fddb379b6e2d435b5cffba1b2cdbcb6c8dcb2ae0ed WHIRLPOOL c97ed3ef0d6b24f469077097265873746c16cf245c1abd24b51d3327dc1f4e2a2880042cabb8807d5f2adaee864f7c545bb71e452a30ff5c992598f45c8638f8 +DIST firefox-49.0.2-lij.xpi 396173 SHA256 028ebcf1a36c123ee186f0514953a46696def3aefa5162921d08cc99e2ebc151 SHA512 220280c7b6225c3780bf9a6cd18a857bb5640bf06f95db51646d026373553d63eef19bf2c161acba9d832f56520460fd5201e996a3f2538f42eb4353891641f4 WHIRLPOOL 9748c1a94fc64876acdaf303b6c4787230d8975ba4a15bd6e9ab002328f84d52d8eab18a1d2194d612c3eaac5a1a88f6058b14dc1fdf83890c4a2e9ddf521410 +DIST firefox-49.0.2-lt.xpi 451345 SHA256 bff60b6b3528f6414c50f5274dda4333c4cabb6c79c273f61ecadf27dd59f505 SHA512 8c3ed39309007972f9b8e2cfdb5108a2a9916f89721090fe95d1088e86f3edc48d4fc94c03a7a20f169347739cb89da258e0511bf64ef3bf58e5f7dbc4c305ff WHIRLPOOL a8461ef88d5cc21f5ad60bc7500faa61cc8aac63324221370deb1a90e64675cac8ba23675b2fed77cbd3dc7b1c658d1f35b3363d25f8f52ce170a34b4c07f9c2 +DIST firefox-49.0.2-lv.xpi 445323 SHA256 9d1835f26a2b4ba29802206e536d8c1abb273b114742db4d6f4003c7a7cb031e SHA512 577d3d2a0b2d3c2f39c11002bd868baa14d77541bbd3ba90a82dde75ef35e61da0209c825354302221ef73cf24b68aed5679020cac8d41f367ecddbef595a01a WHIRLPOOL af6e4cdf784ff815ffc84f90d32fe84378cf80bace3008de6e255676b84803f49ba0fee545d89dbb58668bf61ea5ecd906c74ccbc1227b4e48e220d03ed68559 +DIST firefox-49.0.2-mai.xpi 502478 SHA256 4d28adf1f9d6bf4501b0f4f6d66ef9a9b3b9c6817efff7b1c255627c36a4f142 SHA512 c7e275bb9810a9bde727147afc97543c8f08f00bfabf27a7b1f650ef7cb913c6ede0e8952bdc95d227c5af769440eb0ac6c3ff63a3ab4652aae21133d920fcd6 WHIRLPOOL 77ba499e796a27f3d90193cb8e70dc991ff67766685e3c4eb3645bfa6caed2d99b7bc55c575d61d177f37d1ff4fcde6d8a984b1dd6464fbfce1e541478eda49e +DIST firefox-49.0.2-mk.xpi 498491 SHA256 1235d350e956ba5d9c88672897705286c88a732c532a56e8c29b2e0dc607e5a0 SHA512 595133246eb825d0c8b9f6baa0dd04821e45768007104de6aa541d677c52d72a42f43a118791408c568abbf087207c3f03e1bce02ac8ace91c05de1240287e0b WHIRLPOOL ac890709335de856dcf57f878a9e2a1dee659e7936c113a3bbadc1452b8099ed8396925d134205ad247b87784de67695ee3eb87734320f5b3aaa13dc3c4fe73d +DIST firefox-49.0.2-ml.xpi 519595 SHA256 05259bcbd39c508a57dce9ab88ccfd48b4ca004d746176b2b6738703ff146d28 SHA512 390adaa072766cd81ca99505a3e74a0369d97d1b3a3bb092518b73626ee68c7cd68ce3ef817e2d36e1a33d9dede6e94d0d2cbf87d3ad65868ec8ad47b245554e WHIRLPOOL f11cd1c9e48171c7350a7f5d5edc8abdfaa9ca5ce0c9e7b7e5394b7c45c3873e5c41caa36bd03f3f3e4b4fa3d2e2ded6fe921b4b1d9379272375a10c9ad31638 +DIST firefox-49.0.2-mr.xpi 501073 SHA256 5f45fb7014d4e57d2b7dc039c31cdb49294316e0d59bab33e071fdb11ef7d246 SHA512 9a766cfcc6f893abd6c04446ee078e0d5aef55482a5463bd759a098471e6aca282a6c0fe0bb9677cc27692cdc38c904691a0a8ef324068f8abbdd022b7932fd2 WHIRLPOOL e1dc8e7e6079a65d9aa1be5bb1859f7f04fb9a418af057058e1588ecd68525efe14cde22941e3a4745bde965a12f58baa07e36e91bfcbac0d2d45145b04af9b6 +DIST firefox-49.0.2-ms.xpi 439421 SHA256 77e8a2c49e0d1d70a3ac15681a7bfed475ee662988ad4c1354a1efb8fbdc7325 SHA512 77859260d67b03970898f2e62a02fead8eba32273531a6364ebe7838f4b4640a6022b5322de4160bcdbccd6e1f7130483e8d0f7cf2924f5a20cafe807ed603d1 WHIRLPOOL 0ad0f7cfd915ea1f6afd07a2250d442e9e10bcb7268b5df2c36b04f854c056a8b67924d5cb413f91b328ab82d3df6af7894d33ca8f2e3d845669bef7507b4899 +DIST firefox-49.0.2-nb-NO.xpi 433585 SHA256 d45fbbdeaace63622b405440ec5485db21211522932babd3d504e0e0c87fb61d SHA512 12f8f23d6eade8ae89433463b9bb34cf2861cf16c5fc2b19d25f2ac2ee14720fdee9fd392dffab044c8c6f94599e0ff375d8433a34b99b93260d64be2b4e4c9b WHIRLPOOL db8717e6ec180107b8fac8193e265bed3fe99f909b1a147d1de0a112e691088fb9b12108100cc2dc77c3d22e53981ecc613ced6a4a9c0990915ce3350de77893 +DIST firefox-49.0.2-nl.xpi 431242 SHA256 ef09df1807739d68667ba35210de4a1fd7621051af5782ebcda8f390e85ff045 SHA512 3e8ddd3d070e94256bc43985afcfa35c21900e55d0b6ad269990f5e766af3c87f3d0f005a8be8077443e13bc88727a33fbe274c96a36f9f88e433b3e8ac55b7f WHIRLPOOL beb7a97d897b168ee9a6230590451787a62b3a875a67c46f7b2453fec07a9c267b40d662d4fb00d03e58a05f3b62d27f15b6728f56b3803721c371c5445bccc4 +DIST firefox-49.0.2-nn-NO.xpi 427585 SHA256 08f7bb102406e0b5bd68cbb6e1147a5bea4d042ea1df6be279745f1941a458e5 SHA512 0ee6e895d3cddc1501bd08d0bcd6f9c22681d33463df7f6168ddcd57e91878b0c909ad7b9402b8f46a33d113e04eb15ed98dd568f7ab3dc68d9310acb6102c3a WHIRLPOOL 5c48ed21950279146bccdcc48a31c639dcf863a4ac3fbfe4b67ec6bc14b759d788ecbd65b115a1c196a5025912d0de7aca80d6d1d6056ce758de85d28d9b9a30 +DIST firefox-49.0.2-or.xpi 499456 SHA256 be1789bfee2772ea1359e23a0be95713aa4b6b07ce05e36ff55e84c9d3170845 SHA512 80c93a47f25e3dffdfa964560198d3b29d27290f03938359396e933165cdec2ee018c4419f20cc5815db641e2179c8ec20dcf4bb87bcdab69aceae9c8c97ae50 WHIRLPOOL a660acc9ddc26c918f583c8499ea70b9da31ccdbacefa372fe33bb06dfdf6d453f8839344dbfc0f32486dcec0f45d22641c8368b649119b452f7fc53a4b603e1 +DIST firefox-49.0.2-pa-IN.xpi 479086 SHA256 57fbb04f424f680f670c8f13e3212a06b0396465d9ebd908c8e10cf5c5606e1a SHA512 2e39559852745a0c88e250650da2a154f7843d3cf862070781746ad1a17d83747b7a943f608bb57e621f722f55a86bd0bc9f8800ddd43bcec174eab22f05817e WHIRLPOOL 8a44bfdb286be6b7af04c24f310cb4db725ed3397270af3b8dbaddc4b4816f3a7d55a820798faaae159492b8011a735c9ff9cf77efdd01ea94bd790a643085b2 +DIST firefox-49.0.2-pl.xpi 362534 SHA256 820514a8f70cac72cb20a758a77c5de038e15aadc93f883c89ed82e8bc34c49f SHA512 35747a797755012cf608d4360c3e591056344a77534525dc0aad36d31b0e9e57ac41853d301a091c35232cb9d8d3d811383b3d557d261b8fde87196e2d5b010e WHIRLPOOL 0632ea93249ce8e616ee139c3673f4fe3547a94722b506e0cbdea545d1f633f8b9d304e7e168231df21741cf387a55a330516f71f8be2446fb77e2f6ce06ddef +DIST firefox-49.0.2-pt-BR.xpi 446485 SHA256 d0fd13da04c26106684e1a5de78edfb3e99e1297e8042b043d3e73fbcfa06e3d SHA512 04e6ec731da844b497973bb913e9afe0ead2339947681f9c8c647f085df11c804951a872d7fa214e13cb02ff2847eec2c37e2a2dda8fb166986d92713cbb4a5a WHIRLPOOL 756a6dfcadd01c39c34959d09d1c1d073c48e0f11cc39c3353fe11180341f601fd0a07d6ed64308e6fb8950405265612f0849d8288cd064c0bd7bbf5c70a6ef0 +DIST firefox-49.0.2-pt-PT.xpi 433687 SHA256 a80756bc31efa043ac1733abd7ab5ac17f92f69467baf0eae18a7343fd9d0724 SHA512 c8f792a3c89768bd92d0d6addbc87b0831ee14b737d75dcb0b7c3e02bf9e748d3ac7c2008a3e3e7204760a34717a18958a69d507ffc6abf3294439e6f6afb467 WHIRLPOOL 36d4db8fa3e1124ddcccbab2058e6a4f34f373eb5d6044e2c139d6843c05e124b9a02b01ea3cf345142c653503d567cd711ce200fd49ab6f7ce260c292caad57 +DIST firefox-49.0.2-rm.xpi 439646 SHA256 030f6065523859366e7665eb3ac35547ab3a526815c3944f3c193909638ad51c SHA512 ce94c57b7c377bddab6bb8de7a6a73ac98b7e2a40302612019fd2d1664cfbf4b7931029882700d2c5cad0c8c1eb5c2edcbd221f966a36dec7afea789b98c46bf WHIRLPOOL 306932e3d7e89951b1a70dd3e3aee17e3f3405e9d09cc5a7a09226aa76575e1837c6e05dc19fbe7cb0e082f40e1ecd97c245d9ef028f68722c43161b1fe3f233 +DIST firefox-49.0.2-ro.xpi 447538 SHA256 94aefc700df14e0b43b7c7e95212b7b71bec092439b9a28713223dd29b080e6d SHA512 285a4b70fa01d585652398e9cc1c24579ebe87545efdf5fc110e22fde08785be67c609ae18579054e78a08218023121a71d1628cc0012a913b0735900e6eb803 WHIRLPOOL 64b16c22c8ec7da5e1d742d211a93716fdf45689cc488ce01fbfaa82e90c206891a17170e93c3c795f7b3338c7307be5a3801b8fcf5d278d15fa7370dca516bb +DIST firefox-49.0.2-ru.xpi 391743 SHA256 40e688a440692cfbf7c115aa8a90451c53e8df1e137dd8a6342dc38977bbcbb0 SHA512 1f6f9232738355411a1e5dcfddac1cb4cbcc976a15370a180ee58ee314a315e2620a27f3929243361e213d4281ca6652f34143fdc3da4241ee26f44747ca78c3 WHIRLPOOL c9d9e4fc125edbd693dc79a86e708a1080f8230a2a17b26ca1fb33903d53aeb4fa7aeaae4f96385aad07d262b0e3b4e59546b3e9890baaf9871120f2e9931490 +DIST firefox-49.0.2-si.xpi 492130 SHA256 56b986317168d2e67332e8a3d79004707b4820e5ac8d6cc2aaf4a87283a07ace SHA512 bbc5e21d45415e9f46b95a900426fb804e50f8ab183e276d5d2ce6dee5a9339eb28f5f04854a9ac356dface6fc96a3db99bce02c1d1c181db317f625faf1f216 WHIRLPOOL fda2d929d189b9a1f671158b721cb6c32353236bd7caec4f16fcdf7b9da5f04af811b77d88010ab0423129d51908a47b10c5bb4507779f7c960a2e2a970f144c +DIST firefox-49.0.2-sk.xpi 452529 SHA256 009a808a6c76779b0bc4392f5b30620d8ac0acbd20c4c5adc71bb78698af8c4d SHA512 6b8a149b44d5b734934a86911c7211365365e4b000b9672b531c51071bc31be16f3717af94f13cde90748b3d9b89a48f2b9ff84ca6074404f187b1d56d29aa4b WHIRLPOOL f8736e75ccd0cb467c483d21682797a57e7f1331c708b0795cee0555369ec2dfb103cf6f541c9ed20817064ba7851a9b5eea3d363a58e9cdb166f3dce37d1052 +DIST firefox-49.0.2-sl.xpi 430480 SHA256 1ef09212f6cfa8f9fda22fa98f7d9e1164c0279c8945b7089a1c981ddf6e5db5 SHA512 6c658c42ebf6704d56638ad155179224fb15b74102a77f512f4c05f5c55a1c6aaf4632bd45038f85da59738e0e06129759a0c922349134c632ea20de2bdf1599 WHIRLPOOL db1271e08d6f718fc0fa33c2986eb27e8bfea4834c4016e7727be29e20510c73e04079f46f778cd005e7c7326cdd49a271b071dc54acb10f37441ab41f4072ac +DIST firefox-49.0.2-son.xpi 437034 SHA256 4a3421f5107d845973b1e27a8834fa99b9325afaee9ddc629299572509bb32bb SHA512 abecd34df296e341fc658c7207b3c56242406235409592d33dae7fbd6e36ee612d9b0ee01e9743d0a612ddf4039322e7dd7ff4420b4e1270f7c64524b69e2508 WHIRLPOOL 5dcf78baa593dd9c5607505d47f8b8c5410bd859ceff4156343ff23c3118e4ad069b541b5af36ca3002e50fc1f2f86a341e23a959a108a59bf82216d7fe74056 +DIST firefox-49.0.2-sq.xpi 453368 SHA256 bd6b5c55eb8ddccc8c8af5e4fe49799ba34801b8f22e34fe6bd728059c3d0c00 SHA512 2cfc5c09af1eea1b5d37134592bfb0c14099c166f17c3c708d9818b5b8151d4d24ba109c559b168d5da3fc5abc3271e18874cd72a1efa309c7d05d86c45d9a79 WHIRLPOOL c8b76e4758c33f7ccfc00f848eee3a9f4d2322e109b24fbe4837ddb37dfdfdd5427329060019ae9f605f17b0adaa37b12c8cfbd3c6af83601902a30b8cf8d6f9 +DIST firefox-49.0.2-sr.xpi 463884 SHA256 9f2801eb0f7e8b3bc454a3171d437f6be0800cf6d7046a6110cb28452bc55f78 SHA512 e2a5e22209f122a641ef8fa0b2089a3c79bf9b64214012ec2e5d426e3fa715b9e1d728bf98f89f1b66359d919dd2b0b0856bf380988d612454c773739be0741f WHIRLPOOL b50114ad33797b54ec9026695d9617a503854f45812beb851d1b30bad94eae5d2d22db63c5eb52e51c80aeb9421e2221bfa662a3bef30eebf1e6c8c22eec1058 +DIST firefox-49.0.2-sv-SE.xpi 440493 SHA256 29dd70d9bb2cdaa2d81b8cdec1f3a3b839071c60fe1eae02901ed838030b820d SHA512 49f261cfe9872d0c8ff55c8b21d9d038bd6999acac39f68030c531d8e7f2e87e70e8b6f8c9a0030902bc863785d3326ea8092a6022387ae9e8a0609b18f91795 WHIRLPOOL 4837e8c9c1f85abf5c6d1c5c359660601a9cb4a8bb6306c7272feed0bfee72f92c1bffdfe7ca5d3d192c4a6d25ec1c9f77186b3b7d66d5239aad007f86f7b847 +DIST firefox-49.0.2-ta.xpi 492435 SHA256 f36d8065c7901e8a3204d85551354803b00ed66c644a1a2431469ba44e1e3d41 SHA512 98426f514e2d5cbf4ffada3eebaeef90286d401be0e006235bad2feeafe3aa1b8d097f4d29b3fd5e7ed9392e18a8fa2f09f0b1255460a748550869a9e6c833e0 WHIRLPOOL a348b1a9948f11d1cde2ffe7ed24798bbd54f8c8627d7cff018198a19c48edea7a09d8c9ba77062df25a90f740140617bac777d79d728ebb0f86301071365f97 +DIST firefox-49.0.2-te.xpi 518143 SHA256 480625b27a71ecf1b778ca3cc56115c39f7e2557665edd85ae36d53d07485909 SHA512 714f5a3ecca189b3906fb9e894099a5fae8a4791b98b460f7940f4dcad304be77dd2c2fca68dd0b15ab400288166db13b4eab4217c2ec6e6b78da05076c3abb5 WHIRLPOOL bee60da05e443b3deac677a196fbcab71c57c00a7819cd1dc725d6212cd4db37c2ff2ce7da6e78436fd4854cbd2a0cf876b7a34cc2e1d180742d3874ad6cfc73 +DIST firefox-49.0.2-th.xpi 486986 SHA256 10bbbf467c2948f0f60250eb43604886fed2ff5f607a9963ad33e92a0ca83a33 SHA512 9782b85b19bc0ee26316bf56d53e54397620f3d1d12d76ef6c754298611d7cfacb80dbfec4091712522e6d010a17fcca307bb2b6d4eb510372f2db3a3b5d2854 WHIRLPOOL 2902f47605ea41580a42d019da3e3c7e3761a37ca42a6cb672ce00b565171c874273b08c03aff8ec671533c6e7117d9542593dd19c34b5022537e22e1f1e43ec +DIST firefox-49.0.2-tr.xpi 440856 SHA256 bd29d4d94cb73a41605b36abd73defac30deb172a33b59e2bbe4804f0888173c SHA512 74272dad73dfa4539df0d07c461a04a6bfaede14fe28702ded134b26a8667034a35b1761083fa4b1d2c28b4f8f98cada054c167d5029799ac97556637323e234 WHIRLPOOL 1593591b210d4cb827170ae9c12790ea3c28cee9ce3d1d733c814f5dda82f14f54777b2303d3bffb56f2de4577bf54d00e3bdeb17e58630f1d71d365544145f3 +DIST firefox-49.0.2-uk.xpi 491358 SHA256 b5f65ba75b00df3254797bdb4ab21db56c4fed82ce6c2b3c03e78473e7151352 SHA512 0a6571fb971bdd4c91eed34a5b9ede22e461a73d7ce8959f287fcafe2a054048a7bd76399bafd47fad5805c3eddaeb80e20c18f5d3ab049e802178f6c309fd60 WHIRLPOOL bed2240eba403186e59ee8883021c0f04cb98b4a0ec9d2d28e256cdc186ae901180ac6e2b7a51eb2ff08dcd49b6e7ed0a5e7ad8cc7a7c262b1da1ec1e3de4107 +DIST firefox-49.0.2-uz.xpi 446443 SHA256 3ba8eea6634bf38e3708ea65db05c9d1a2b922a440bd8ad3f276b17c3233a35d SHA512 28180a1536287b22ad2555a98070e67c4fd1dbbe1a7e94cf49fac410457450413c22e8f503c3ea53b3188b4edb687040f7780b1bb311d3a27d02dafc7a283de4 WHIRLPOOL 9b5141456d8de11272757ac7b311ed2ace0d44ca732b17e11107c9ee6a5be8f5e450c7a7ab2a7894f25dc0219fe37d869a1c7259337edee48f418e22de1c9bbe +DIST firefox-49.0.2-vi.xpi 448048 SHA256 782805a50b95f6791fafebfc56510a1aa1e0fcce2c19e3c640b85d79c36d970e SHA512 b3142e0937dfe405ba6cecfb52ba425099bc6a91f6653ff8d8d2e62aaaf491dd96d5f39495530315a600110806d2f85f8f933b7f6b471646e5f720a3294c1878 WHIRLPOOL b7a9a865c6c693c2a17e925954a4d36b302f965452a5f030793cdefa87c3efe069ce4ae99be1c91a62a2f131daf838b385d31d4f73e235999d14afb6162824f9 +DIST firefox-49.0.2-xh.xpi 439947 SHA256 a6b18b3e1faf7aee6f9d5e9c07162c2b37175000bfcac676cad42e30d1829b48 SHA512 b2f34e745101c037551306d8c4e94c06ecb186f1a1895d05f8a8271c30675752250ec05761b64639d8e57fac760b7fdee6e7285b58f10bd9ff7de813ce65c4a1 WHIRLPOOL 7565f07be8c42695b8792162c0eaa3ea5e3f615989561a94e9ae6cff69aa629cdd0865f71759efe20d0e172cb3c9dae6d1accf439b6c9e014418c23ef3ba8bab +DIST firefox-49.0.2-zh-CN.xpi 466753 SHA256 b395ff821b85e54311237d5fb244fcca0eca66abf55dfbe8b7ef7bf0edd14a19 SHA512 855cb184aba3fe328f4d4e9b444611daf84695b9ffad154107dab686741fdd566e86160464cb172a1d4f5eeb0a1460d55a3aeb9e2d9fee303c5be8d8c5eb7dd2 WHIRLPOOL b38775e92fdedfd6d36fb44f65c7a6e6e9c2632fbeadecc3399e92462d9cd6d30bee03b0a934a130e94b7def60453530b25780af52c44f1647c95bd282820a5d +DIST firefox-49.0.2-zh-TW.xpi 469470 SHA256 46ed7614c3f1d351b196944a55b8cdc13a10d2dad22805684eff3d30669e7b3c SHA512 e3a3b8725f149620ef156e7ef7c6e21ad356d39a2da4253ff69d57f3de5bc30ed11c2460e77ac0fa61dbac366f1d02724baed6f79a8775708f7c5ed597bbd72f WHIRLPOOL f9996c1c6e5b82253d1379e2809d2a28ded81e593cc46a5bd83b375e434165884357bc951429bf99b175a5573e92aca3dbc41781b83819d0d6bfe0ecc73a2208 +DIST firefox-49.0.2.source.tar.xz 188669928 SHA256 67abe9202958c36bf60454c91065953aa8f6ede83ea1c0e9cdb870c3fc3d56d0 SHA512 e9daa62c8e645ec034f1435afb579ddb5c503db313ea0cc3e48b7508f8368028979de07ca1426cc4c0f3ae82756f39dcb3b349712d520b8503a34afbd443fb1e WHIRLPOOL 23d114938009e8bb3250469e76bf8939c12ae2e8ad9f0220087d1db7ed75cce34d5b053a5f7620c95762c6419fea7efc83ac891019e20baa98cc286dfca57015 diff --git a/www-client/firefox/files/0002-Use-C99-math-isfinite.patch b/www-client/firefox/files/0002-Use-C99-math-isfinite.patch @@ -0,0 +1,17 @@ +--- ./xpcom/ds/nsMathUtils.h.orig ++++ ./xpcom/ds/nsMathUtils.h +@@ -104,12 +104,12 @@ + #ifdef WIN32 + // NOTE: '!!' casts an int to bool without spamming MSVC warning C4800. + return !!_finite(aNum); +-#elif defined(XP_DARWIN) ++#elif defined(XP_DARWIN) || defined(_GLIBCXX_CMATH) + // Darwin has deprecated |finite| and recommends |isfinite|. The former is + // not present in the iOS SDK. + return std::isfinite(aNum); + #else +- return finite(aNum); ++ return isfinite(aNum); + #endif + } + diff --git a/www-client/firefox/files/disable-hunspell_hooks.patch b/www-client/firefox/files/disable-hunspell_hooks.patch @@ -0,0 +1,11 @@ +--- a/mozilla-config.h.in 2016-07-06 15:16:06.621880293 +0200 ++++ b/mozilla-config.h.in 2016-07-06 15:16:42.958428126 +0200 +@@ -54,7 +54,7 @@ + * HUNSPELL_STATIC is defined in extensions/spellcheck/hunspell/src/Makefile.in, + * unless --enable-system-hunspell is defined. + */ +-#if defined(HUNSPELL_STATIC) ++#if 0 + #include "hunspell_alloc_hooks.h" + #include "hunspell_fopen_hooks.h" + #endif diff --git a/www-client/firefox/files/disable-moz-stackwalk.patch b/www-client/firefox/files/disable-moz-stackwalk.patch @@ -0,0 +1,17 @@ +MOZ_STACKWALK_SUPPORTS_LINUX requires GLIBC extensions, Android or +libunwind. Disable it unconditionally now as otherwise x86 build fails. + +--- firefox-45.0/mozglue/misc/StackWalk.cpp.orig ++++ firefox-45.0/mozglue/misc/StackWalk.cpp +@@ -42,10 +42,7 @@ + (defined(XP_DARWIN) && \ + (defined(__i386) || defined(__ppc__) || defined(HAVE__UNWIND_BACKTRACE))) + +-#define MOZ_STACKWALK_SUPPORTS_LINUX \ +- (defined(linux) && \ +- ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \ +- defined(HAVE__UNWIND_BACKTRACE))) ++#define MOZ_STACKWALK_SUPPORTS_LINUX 0 + + #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) + #define HAVE___LIBC_STACK_END 1 diff --git a/www-client/firefox/files/firefox-48.0-pgo.patch b/www-client/firefox/files/firefox-48.0-pgo.patch @@ -0,0 +1,12 @@ +--- firefox-47.0.1/Makefile.in.orig 2016-06-01 07:11:37.000000000 +0300 ++++ firefox-47.0.1/Makefile.in 2016-08-06 16:45:14.442699244 +0300 +@@ -55,6 +55,9 @@ + endif + endif + ++pgo-profile-run: ++ $(PYTHON) $(topsrcdir)/build/pgo/profileserver.py $(EXTRA_TEST_ARGS) ++ + ifdef JS_STANDALONE + .PHONY: CLOBBER + CLOBBER: diff --git a/www-client/firefox/files/fix-arm-atomics-grsec.patch b/www-client/firefox/files/fix-arm-atomics-grsec.patch @@ -0,0 +1,306 @@ +--- mozilla-release/ipc/chromium/src/base/atomicops_internals_arm_gcc.h.orig ++++ mozilla-release/ipc/chromium/src/base/atomicops_internals_arm_gcc.h +@@ -12,43 +35,194 @@ + namespace base { + namespace subtle { + +-// 0xffff0fc0 is the hard coded address of a function provided by +-// the kernel which implements an atomic compare-exchange. On older +-// ARM architecture revisions (pre-v6) this may be implemented using +-// a syscall. This address is stable, and in active use (hard coded) +-// by at least glibc-2.7 and the Android C library. +-typedef Atomic32 (*LinuxKernelCmpxchgFunc)(Atomic32 old_value, +- Atomic32 new_value, +- volatile Atomic32* ptr); +-LinuxKernelCmpxchgFunc pLinuxKernelCmpxchg __attribute__((weak)) = +- (LinuxKernelCmpxchgFunc) 0xffff0fc0; ++// Memory barriers on ARM are funky, but the kernel is here to help: ++// ++// * ARMv5 didn't support SMP, there is no memory barrier instruction at ++// all on this architecture, or when targeting its machine code. ++// ++// * Some ARMv6 CPUs support SMP. A full memory barrier can be produced by ++// writing a random value to a very specific coprocessor register. ++// ++// * On ARMv7, the "dmb" instruction is used to perform a full memory ++// barrier (though writing to the co-processor will still work). ++// However, on single core devices (e.g. Nexus One, or Nexus S), ++// this instruction will take up to 200 ns, which is huge, even though ++// it's completely un-needed on these devices. ++// ++// * There is no easy way to determine at runtime if the device is ++// single or multi-core. However, the kernel provides a useful helper ++// function at a fixed memory address (0xffff0fa0), which will always ++// perform a memory barrier in the most efficient way. I.e. on single ++// core devices, this is an empty function that exits immediately. ++// On multi-core devices, it implements a full memory barrier. ++// ++// * This source could be compiled to ARMv5 machine code that runs on a ++// multi-core ARMv6 or ARMv7 device. In this case, memory barriers ++// are needed for correct execution. Always call the kernel helper, even ++// when targeting ARMv5TE. ++// + +-typedef void (*LinuxKernelMemoryBarrierFunc)(void); +-LinuxKernelMemoryBarrierFunc pLinuxKernelMemoryBarrier __attribute__((weak)) = +- (LinuxKernelMemoryBarrierFunc) 0xffff0fa0; ++inline void MemoryBarrier() { ++#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ ++ defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) ++ __asm__ __volatile__("dmb ish" ::: "memory"); ++#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \ ++ defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \ ++ defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) ++ __asm__ __volatile__("mcr p15,0,r0,c7,c10,5" ::: "memory"); ++#elif defined(__linux__) || defined(__ANDROID__) ++ // Note: This is a function call, which is also an implicit compiler barrier. ++ typedef void (*KernelMemoryBarrierFunc)(); ++ ((KernelMemoryBarrierFunc)0xffff0fa0)(); ++#error MemoryBarrier() is not implemented on this platform. ++#endif ++} + ++// An ARM toolchain would only define one of these depending on which ++// variant of the target architecture is being used. This tests against ++// any known ARMv6 or ARMv7 variant, where it is possible to directly ++// use ldrex/strex instructions to implement fast atomic operations. ++#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ ++ defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || \ ++ defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \ ++ defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \ ++ defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) + + inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { +- Atomic32 prev_value = *ptr; ++ Atomic32 prev_value; ++ int reloop; + do { +- if (!pLinuxKernelCmpxchg(old_value, new_value, +- const_cast<Atomic32*>(ptr))) { +- return old_value; +- } +- prev_value = *ptr; +- } while (prev_value == old_value); ++ // The following is equivalent to: ++ // ++ // prev_value = LDREX(ptr) ++ // reloop = 0 ++ // if (prev_value != old_value) ++ // reloop = STREX(ptr, new_value) ++ __asm__ __volatile__(" ldrex %0, [%3]\n" ++ " mov %1, #0\n" ++ " cmp %0, %4\n" ++#ifdef __thumb2__ ++ " it eq\n" ++#endif ++ " strexeq %1, %5, [%3]\n" ++ : "=&r"(prev_value), "=&r"(reloop), "+m"(*ptr) ++ : "r"(ptr), "r"(old_value), "r"(new_value) ++ : "cc", "memory"); ++ } while (reloop != 0); + return prev_value; + } + ++inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, ++ Atomic32 old_value, ++ Atomic32 new_value) { ++ Atomic32 result = NoBarrier_CompareAndSwap(ptr, old_value, new_value); ++ MemoryBarrier(); ++ return result; ++} ++ ++inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, ++ Atomic32 old_value, ++ Atomic32 new_value) { ++ MemoryBarrier(); ++ return NoBarrier_CompareAndSwap(ptr, old_value, new_value); ++} ++ ++inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr, ++ Atomic32 increment) { ++ Atomic32 value; ++ int reloop; ++ do { ++ // Equivalent to: ++ // ++ // value = LDREX(ptr) ++ // value += increment ++ // reloop = STREX(ptr, value) ++ // ++ __asm__ __volatile__(" ldrex %0, [%3]\n" ++ " add %0, %0, %4\n" ++ " strex %1, %0, [%3]\n" ++ : "=&r"(value), "=&r"(reloop), "+m"(*ptr) ++ : "r"(ptr), "r"(increment) ++ : "cc", "memory"); ++ } while (reloop); ++ return value; ++} ++ ++inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr, ++ Atomic32 increment) { ++ // TODO(digit): Investigate if it's possible to implement this with ++ // a single MemoryBarrier() operation between the LDREX and STREX. ++ // See http://crbug.com/246514 ++ MemoryBarrier(); ++ Atomic32 result = NoBarrier_AtomicIncrement(ptr, increment); ++ MemoryBarrier(); ++ return result; ++} ++ + inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, + Atomic32 new_value) { + Atomic32 old_value; ++ int reloop; + do { ++ // old_value = LDREX(ptr) ++ // reloop = STREX(ptr, new_value) ++ __asm__ __volatile__(" ldrex %0, [%3]\n" ++ " strex %1, %4, [%3]\n" ++ : "=&r"(old_value), "=&r"(reloop), "+m"(*ptr) ++ : "r"(ptr), "r"(new_value) ++ : "cc", "memory"); ++ } while (reloop != 0); ++ return old_value; ++} ++ ++// This tests against any known ARMv5 variant. ++#elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \ ++ defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) ++ ++// The kernel also provides a helper function to perform an atomic ++// compare-and-swap operation at the hard-wired address 0xffff0fc0. ++// On ARMv5, this is implemented by a special code path that the kernel ++// detects and treats specially when thread pre-emption happens. ++// On ARMv6 and higher, it uses LDREX/STREX instructions instead. ++// ++// Note that this always perform a full memory barrier, there is no ++// need to add calls MemoryBarrier() before or after it. It also ++// returns 0 on success, and 1 on exit. ++// ++// Available and reliable since Linux 2.6.24. Both Android and ChromeOS ++// use newer kernel revisions, so this should not be a concern. ++namespace { ++ ++inline int LinuxKernelCmpxchg(Atomic32 old_value, ++ Atomic32 new_value, ++ volatile Atomic32* ptr) { ++ typedef int (*KernelCmpxchgFunc)(Atomic32, Atomic32, volatile Atomic32*); ++ return ((KernelCmpxchgFunc)0xffff0fc0)(old_value, new_value, ptr); ++} ++ ++} // namespace ++ ++inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr, ++ Atomic32 old_value, ++ Atomic32 new_value) { ++ Atomic32 prev_value; ++ for (;;) { ++ prev_value = *ptr; ++ if (prev_value != old_value) ++ return prev_value; ++ if (!LinuxKernelCmpxchg(old_value, new_value, ptr)) ++ return old_value; ++ } ++} ++ ++inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr, ++ Atomic32 new_value) { ++ Atomic32 old_value; ++ do { + old_value = *ptr; +- } while (pLinuxKernelCmpxchg(old_value, new_value, +- const_cast<Atomic32*>(ptr))); ++ } while (LinuxKernelCmpxchg(old_value, new_value, ptr)); + return old_value; + } + +@@ -63,36 +237,57 @@ + // Atomic exchange the old value with an incremented one. + Atomic32 old_value = *ptr; + Atomic32 new_value = old_value + increment; +- if (pLinuxKernelCmpxchg(old_value, new_value, +- const_cast<Atomic32*>(ptr)) == 0) { ++ if (!LinuxKernelCmpxchg(old_value, new_value, ptr)) { + // The exchange took place as expected. + return new_value; + } + // Otherwise, *ptr changed mid-loop and we need to retry. + } +- + } + + inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { +- return NoBarrier_CompareAndSwap(ptr, old_value, new_value); ++ Atomic32 prev_value; ++ for (;;) { ++ prev_value = *ptr; ++ if (prev_value != old_value) { ++ // Always ensure acquire semantics. ++ MemoryBarrier(); ++ return prev_value; ++ } ++ if (!LinuxKernelCmpxchg(old_value, new_value, ptr)) ++ return old_value; ++ } + } + + inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr, + Atomic32 old_value, + Atomic32 new_value) { +- return NoBarrier_CompareAndSwap(ptr, old_value, new_value); ++ // This could be implemented as: ++ // MemoryBarrier(); ++ // return NoBarrier_CompareAndSwap(); ++ // ++ // But would use 3 barriers per succesful CAS. To save performance, ++ // use Acquire_CompareAndSwap(). Its implementation guarantees that: ++ // - A succesful swap uses only 2 barriers (in the kernel helper). ++ // - An early return due to (prev_value != old_value) performs ++ // a memory barrier with no store, which is equivalent to the ++ // generic implementation above. ++ return Acquire_CompareAndSwap(ptr, old_value, new_value); + } + ++#else ++# error "Your CPU's ARM architecture is not supported yet" ++#endif ++ ++// NOTE: Atomicity of the following load and store operations is only ++// guaranteed in case of 32-bit alignement of |ptr| values. ++ + inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; + } + +-inline void MemoryBarrier() { +- pLinuxKernelMemoryBarrier(); +-} +- + inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) { + *ptr = value; + MemoryBarrier(); +@@ -103,9 +298,7 @@ + *ptr = value; + } + +-inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { +- return *ptr; +-} ++inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { return *ptr; } + + inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) { + Atomic32 value = *ptr; +@@ -118,7 +311,6 @@ + return *ptr; + } + +-} // namespace base::subtle +-} // namespace base ++} } // namespace base::subtle + + #endif // BASE_ATOMICOPS_INTERNALS_ARM_GCC_H_ diff --git a/www-client/firefox/files/fix-arm-version-detect.patch b/www-client/firefox/files/fix-arm-version-detect.patch @@ -0,0 +1,13 @@ +diff --git a/build/autoconf/arch.m4 b/build/autoconf/arch.m4 +index b62ea71..53179a7 100644 +--- a/build/autoconf/arch.m4 ++++ b/build/autoconf/arch.m4 +@@ -215,7 +215,7 @@ if test "$CPU_ARCH" = "arm"; then + + AC_MSG_CHECKING(ARM version support in compiler) + dnl Determine the target ARM architecture (5 for ARMv5, v5T, v5E, etc.; 6 for ARMv6, v6K, etc.) +- ARM_ARCH=`${CC-cc} ${CFLAGS} -dM -E - < /dev/null | sed -n 's/.*__ARM_ARCH_\([[0-9]][[0-9]]*\).*/\1/p'` ++ ARM_ARCH=`${CC-cc} ${CFLAGS} -dM -E - < /dev/null | sed -n 's/.*__ARM_ARCH_\([[0-9]][[0-9]]*\).*/\1/p' | head -n 1` + AC_MSG_RESULT("$ARM_ARCH") + + AC_MSG_CHECKING(for ARM NEON support in compiler) diff --git a/www-client/firefox/files/fix-fortify-inline.patch b/www-client/firefox/files/fix-fortify-inline.patch @@ -0,0 +1,11 @@ +--- a/media/webrtc/signaling/src/sdp/sipcc/sdp_os_defs.h ++++ b/media/webrtc/signaling/src/sdp/sipcc/sdp_os_defs.h +@@ -27,8 +27,5 @@ + typedef int16_t int16; + typedef unsigned short ushort; + typedef unsigned long ulong; +-#ifndef __GNUC_STDC_INLINE__ +-#define inline +-#endif + + #endif /* _SDP_OS_DEFS_H_ */ diff --git a/www-client/firefox/files/fix-fortify-system-wrappers.patch b/www-client/firefox/files/fix-fortify-system-wrappers.patch @@ -0,0 +1,13 @@ +The wrapper features.h gets pulled in by system headers causing thigns to +break. We work around it by simply not wrap features.h + +--- ./config/system-headers.orig ++++ ./config/system-headers +@@ -422,7 +422,6 @@ + extras.h + fabdef.h + fcntl.h +-features.h + fibdef.h + File.h + filehdr.h diff --git a/www-client/firefox/files/fix-seccomp-bpf.patch b/www-client/firefox/files/fix-seccomp-bpf.patch @@ -0,0 +1,14 @@ +--- a/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc.orig 2015-09-23 09:10:08.812740571 +0200 ++++ b/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc 2015-09-23 09:11:38.404746155 +0200 +@@ -23,6 +23,11 @@ + #include "sandbox/linux/services/android_ucontext.h" + #endif + ++// musl libc defines siginfo_t __si_fields instead of _sifields ++#if defined(OS_LINUX) && !defined(__GLIBC__) ++#define _sifields __si_fields ++#endif ++ + namespace { + + struct arch_sigsys { diff --git a/www-client/firefox/files/fix-stack-overflow.patch b/www-client/firefox/files/fix-stack-overflow.patch @@ -0,0 +1,45 @@ +https://bugs.alpinelinux.org/issues/5559 +https://bugzilla.mozilla.org/show_bug.cgi?id=1274732 + +diff --git a/netwerk/streamconv/converters/nsHTTPCompressConv.cpp b/netwerk/streamconv/converters/nsHTTPCompressConv.cpp +index 1193529..aeb96b5 100644 +--- a/netwerk/streamconv/converters/nsHTTPCompressConv.cpp ++++ b/netwerk/streamconv/converters/nsHTTPCompressConv.cpp +@@ -165,9 +165,8 @@ nsHTTPCompressConv::BrotliHandler(nsIInputStream *stream, void *closure, const c + nsHTTPCompressConv *self = static_cast<nsHTTPCompressConv *>(closure); + *countRead = 0; + +- const uint32_t kOutSize = 128 * 1024; // just a chunk size, we call in a loop +- unsigned char outBuffer[kOutSize]; +- unsigned char *outPtr; ++ const size_t kOutSize = 128 * 1024; // just a chunk size, we call in a loop ++ uint8_t *outPtr; + size_t outSize; + size_t avail = aAvail; + BrotliResult res; +@@ -177,9 +176,15 @@ nsHTTPCompressConv::BrotliHandler(nsIInputStream *stream, void *closure, const c + return NS_OK; + } + ++ auto outBuffer = MakeUniqueFallible<uint8_t[]>(kOutSize); ++ if (outBuffer == nullptr) { ++ self->mBrotli->mStatus = NS_ERROR_OUT_OF_MEMORY; ++ return self->mBrotli->mStatus; ++ } ++ + do { + outSize = kOutSize; +- outPtr = outBuffer; ++ outPtr = outBuffer.get(); + + // brotli api is documented in brotli/dec/decode.h and brotli/dec/decode.c + LOG(("nsHttpCompresssConv %p brotlihandler decompress %d\n", self, avail)); +@@ -210,7 +215,7 @@ nsHTTPCompressConv::BrotliHandler(nsIInputStream *stream, void *closure, const c + nsresult rv = self->do_OnDataAvailable(self->mBrotli->mRequest, + self->mBrotli->mContext, + self->mBrotli->mSourceOffset, +- reinterpret_cast<const char *>(outBuffer), ++ reinterpret_cast<const char *>(outBuffer.get()), + outSize); + LOG(("nsHttpCompressConv %p BrotliHandler ODA rv=%x", self, rv)); + if (NS_FAILED(rv)) { diff --git a/www-client/firefox/files/fix-toolkit.patch b/www-client/firefox/files/fix-toolkit.patch @@ -0,0 +1,90 @@ +diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc +index 4222ce3..4d40c6a 100644 +--- a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc ++++ b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc +@@ -45,6 +45,7 @@ + #include <sys/mman.h> + #include <sys/stat.h> + #include <unistd.h> ++#include <libgen.h> + + #include <iostream> + #include <set> +diff --git a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc +index 6019fc7..5953e32 100644 +--- a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc ++++ b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc +@@ -41,6 +41,10 @@ + + #include "common/using_std_string.h" + ++#ifndef N_UNDF ++#define N_UNDF 0 ++#endif ++ + using std::vector; + + namespace google_breakpad { +diff --git a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h +index 98ee2dd..d57aa68 100644 +--- a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h ++++ b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h +@@ -55,7 +55,7 @@ + + #ifdef HAVE_MACH_O_NLIST_H + #include <mach-o/nlist.h> +-#elif defined(HAVE_A_OUT_H) ++#elif 0 + #include <a.out.h> + #endif + +diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h +index 93fdad7..f34e5e0 100644 +--- a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h ++++ b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h +@@ -1134,6 +1134,12 @@ struct kernel_statfs { + #ifndef __NR_fallocate + #define __NR_fallocate 285 + #endif ++ ++#undef __NR_pread ++#define __NR_pread __NR_pread64 ++#undef __NR_pwrite ++#define __NR_pwrite __NR_pwrite64 ++ + /* End of x86-64 definitions */ + #elif defined(__mips__) + #if _MIPS_SIM == _MIPS_SIM_ABI32 +diff --git a/toolkit/mozapps/update/common/updatedefines.h b/toolkit/mozapps/update/common/updatedefines.h +index 026e7ed..0801f14 100644 +--- a/toolkit/mozapps/update/common/updatedefines.h ++++ b/toolkit/mozapps/update/common/updatedefines.h +@@ -117,7 +117,7 @@ static inline int mywcsprintf(WCHAR* dest, size_t count, const WCHAR* fmt, ...) + + #ifdef SOLARIS + # include <sys/stat.h> +-#else ++#elif !defined(__linux__) || defined(__GLIBC__) + # include <fts.h> + #endif + # include <dirent.h> +diff --git a/toolkit/mozapps/update/updater/updater.cpp b/toolkit/mozapps/update/updater/updater.cpp +index 257ccb4..01314e4 100644 +--- a/toolkit/mozapps/update/updater/updater.cpp ++++ b/toolkit/mozapps/update/updater/updater.cpp +@@ -3737,6 +3737,7 @@ int add_dir_entries(const NS_tchar *dirpath, ActionList *list) + int add_dir_entries(const NS_tchar *dirpath, ActionList *list) + { + int rv = OK; ++#if !defined(__linux__) || defined(__GLIBC__) + FTS *ftsdir; + FTSENT *ftsdirEntry; + NS_tchar searchpath[MAXPATHLEN]; +@@ -3840,6 +3841,7 @@ int add_dir_entries(const NS_tchar *dirpath, ActionList *list) + } + + fts_close(ftsdir); ++#endif + + return rv; + } diff --git a/www-client/firefox/files/fix-tools.patch b/www-client/firefox/files/fix-tools.patch @@ -0,0 +1,50 @@ +diff --git a/tools/profiler/core/platform-linux.cc b/tools/profiler/core/platform-linux.cc +index 0df1e8f..d868895 100644 +--- a/tools/profiler/core/platform-linux.cc ++++ b/tools/profiler/core/platform-linux.cc +@@ -711,11 +711,13 @@ void OS::Startup() { + void TickSample::PopulateContext(void* aContext) + { + MOZ_ASSERT(aContext); ++#if defined(__GLIBC__) + ucontext_t* pContext = reinterpret_cast<ucontext_t*>(aContext); + if (!getcontext(pContext)) { + context = pContext; + SetSampleContext(this, aContext); + } ++#endif + } + + void OS::SleepMicro(int microseconds) +diff --git a/tools/profiler/core/platform.h b/tools/profiler/core/platform.h +index a38b3b5..170bd75 100644 +--- a/tools/profiler/core/platform.h ++++ b/tools/profiler/core/platform.h +@@ -34,6 +34,8 @@ + #define MOZ_COUNT_DTOR(name) + #endif + ++#include <sys/types.h> ++ + #ifdef ANDROID + #include <android/log.h> + #else +diff --git a/tools/profiler/lul/LulElf.cpp b/tools/profiler/lul/LulElf.cpp +index a922137..d01dde1 100644 +--- a/tools/profiler/lul/LulElf.cpp ++++ b/tools/profiler/lul/LulElf.cpp +@@ -483,10 +483,10 @@ string FormatIdentifier(unsigned char identifier[16]) { + // Return the non-directory portion of FILENAME: the portion after the + // last slash, or the whole filename if there are no slashes. + string BaseFileName(const string &filename) { +- // Lots of copies! basename's behavior is less than ideal. +- char *c_filename = strdup(filename.c_str()); +- string base = basename(c_filename); +- free(c_filename); ++ // basename's behavior is less than ideal so avoid it ++ const char *c_filename = filename.c_str(); ++ const char *p = strrchr(c_filename, '/'); ++ string base = p ? p+1 : c_filename; + return base; + } + diff --git a/www-client/firefox/files/gentoo-default-prefs.js-1 b/www-client/firefox/files/gentoo-default-prefs.js-1 @@ -0,0 +1,17 @@ +pref("app.update.enabled", false); +pref("app.update.autoInstallEnabled", false); +pref("browser.display.use_system_colors", true); +pref("browser.link.open_external", 3); +pref("general.smoothScroll", true); +pref("general.autoScroll", false); +pref("browser.tabs.tabMinWidth", 15); +pref("browser.backspace_action", 0); +pref("browser.urlbar.hideGoButton", true); +pref("accessibility.typeaheadfind", true); +pref("browser.shell.checkDefaultBrowser", false); +pref("browser.EULA.override", true); +pref("general.useragent.vendor", "Gentoo"); +pref("intl.locale.matchOS", true); +pref("general.useragent.locale", "chrome://global/locale/intl.properties"); +pref("extensions.autoDisableScopes", 0); +pref("layout.css.dpi", 0); diff --git a/www-client/firefox/files/gentoo-hwaccel-prefs.js-1 b/www-client/firefox/files/gentoo-hwaccel-prefs.js-1 @@ -0,0 +1,2 @@ +pref("layers.acceleration.force-enabled", true); +pref("webgl.force-enabled", true); diff --git a/www-client/firefox/files/icon/firefox.desktop b/www-client/firefox/files/icon/firefox.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=@NAME@ +Comment=Web Browser +Exec=firefox %u +Icon=@ICON@ +Terminal=false +Type=Application +MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; +Categories=Network;WebBrowser; diff --git a/www-client/firefox/files/mallinfo.patch b/www-client/firefox/files/mallinfo.patch @@ -0,0 +1,20 @@ +diff --git a/xpcom/base/nsMemoryReporterManager.cpp b/xpcom/base/nsMemoryReporterManager.cpp +index 89ee563..eab8cd7 100644 +--- a/xpcom/base/nsMemoryReporterManager.cpp ++++ b/xpcom/base/nsMemoryReporterManager.cpp +@@ -153,6 +153,7 @@ ResidentUniqueDistinguishedAmount(int64_t* aN) + return GetProcSelfSmapsPrivate(aN); + } + ++#ifdef __GLIBC__ + #define HAVE_SYSTEM_HEAP_REPORTER 1 + nsresult + SystemHeapSize(int64_t* aSizeOut) +@@ -172,6 +173,7 @@ SystemHeapSize(int64_t* aSizeOut) + *aSizeOut = size_t(info.hblkhd) + size_t(info.uordblks); + return NS_OK; + } ++#endif + + #elif defined(__DragonFly__) || defined(__FreeBSD__) \ + || defined(__NetBSD__) || defined(__OpenBSD__) \ diff --git a/www-client/firefox/files/mozilla-build-arm.patch b/www-client/firefox/files/mozilla-build-arm.patch @@ -0,0 +1,11 @@ +--- ./gfx/ycbcr/moz.build.orig 2014-04-03 13:50:38.990296661 +0000 ++++ ./gfx/ycbcr/moz.build 2014-04-03 13:52:26.878268547 +0000 +@@ -59,7 +59,7 @@ + 'yuv_row_other.cpp', + ] + +-if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['HAVE_ARM_NEON']: ++if CONFIG['HAVE_ARM_NEON']: + SOURCES += [ + 'yuv_row_arm.s', + ] diff --git a/www-client/firefox/files/musl-pthread-setname.patch b/www-client/firefox/files/musl-pthread-setname.patch @@ -0,0 +1,14 @@ +--- a/js/src/threading/posix/Thread.cpp.orig 2016-09-20 22:19:46.368622126 +0200 ++++ b/js/src/threading/posix/Thread.cpp 2016-09-20 22:23:35.495823534 +0200 +@@ -153,8 +153,10 @@ + rv = 0; + #elif defined(__NetBSD__) + rv = pthread_setname_np(pthread_self(), "%s", (void*)name); +-#else ++#elif defined(__GLIBC__) + rv = pthread_setname_np(pthread_self(), name); ++#else ++ rv = 0; + #endif + MOZ_RELEASE_ASSERT(!rv); + } diff --git a/www-client/firefox/firefox-49.0.2.ebuild b/www-client/firefox/firefox-49.0.2.ebuild @@ -0,0 +1,362 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 +VIRTUALX_REQUIRED="pgo" +WANT_AUTOCONF="2.1" +MOZ_ESR="" + +# This list can be updated with scripts/get_langs.sh from the mozilla overlay +MOZ_LANGS=( ach af an ar as ast az be bg bn-BD bn-IN br bs ca cak cs cy da de dsb +el en en-GB en-US en-ZA eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL +ga-IE gd gl gn gu-IN he hi-IN hr hsb hu hy-AM id is it ja kk km kn ko lij lt +lv mai mk ml mr ms nb-NO nl nn-NO or pa-IN pl pt-BR pt-PT rm ro ru si sk sl +son sq sr sv-SE ta te th tr uk uz vi xh zh-CN zh-TW ) + +# Convert the ebuild version to the upstream mozilla version, used by mozlinguas +MOZ_PV="${PV/_alpha/a}" # Handle alpha for SRC_URI +MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI +MOZ_PV="${MOZ_PV/_rc/rc}" # Handle rc for SRC_URI + +if [[ ${MOZ_ESR} == 1 ]]; then + # ESR releases have slightly different version numbers + MOZ_PV="${MOZ_PV}esr" +fi + +# Patch version +PATCH="${PN}-49.0-patches-02" +MOZ_HTTP_URI="https://archive.mozilla.org/pub/${PN}/releases" + +MOZCONFIG_OPTIONAL_GTK2ONLY=1 +MOZCONFIG_OPTIONAL_WIFI=1 +MOZCONFIG_OPTIONAL_JIT="enabled" + +inherit check-reqs flag-o-matic toolchain-funcs eutils gnome2-utils mozconfig-v6.49 pax-utils fdo-mime autotools virtualx mozlinguas-v2 + +DESCRIPTION="Firefox Web Browser" +HOMEPAGE="http://www.mozilla.com/firefox" + +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~ia64 ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux" + +SLOT="0" +LICENSE="MPL-2.0 GPL-2 LGPL-2.1" +IUSE="bindist hardened +hwaccel pgo selinux +gmp-autoupdate test" +RESTRICT="!bindist? ( bindist )" + +PATCH_URIS=( https://dev.gentoo.org/~{anarchy,axs,polynomial-c}/mozilla/patchsets/${PATCH}.tar.xz ) +SRC_URI="${SRC_URI} + ${MOZ_HTTP_URI}/${MOZ_PV}/source/firefox-${MOZ_PV}.source.tar.xz + ${PATCH_URIS[@]}" + +ASM_DEPEND=">=dev-lang/yasm-1.1" + +RDEPEND=" + >=dev-libs/nss-3.25 + >=dev-libs/nspr-4.12 + selinux? ( sec-policy/selinux-mozilla )" + +DEPEND="${RDEPEND} + pgo? ( >=sys-devel/gcc-4.5 ) + amd64? ( ${ASM_DEPEND} virtual/opengl ) + x86? ( ${ASM_DEPEND} virtual/opengl )" + +S="${WORKDIR}/firefox-${MOZ_PV}" + +QA_PRESTRIPPED="usr/lib*/${PN}/firefox" + +BUILD_OBJ_DIR="${S}/ff" + +pkg_setup() { + moz_pkgsetup + + # Avoid PGO profiling problems due to enviroment leakage + # These should *always* be cleaned up anyway + unset DBUS_SESSION_BUS_ADDRESS \ + DISPLAY \ + ORBIT_SOCKETDIR \ + SESSION_MANAGER \ + XDG_SESSION_COOKIE \ + XAUTHORITY + + if ! use bindist; then + einfo + elog "You are enabling official branding. You may not redistribute this build" + elog "to any users on your network or the internet. Doing so puts yourself into" + elog "a legal problem with Mozilla Foundation" + elog "You can disable it by emerging ${PN} _with_ the bindist USE-flag" + fi + + if use pgo; then + einfo + ewarn "You will do a double build for profile guided optimization." + ewarn "This will result in your build taking at least twice as long as before." + fi +} + +pkg_pretend() { + # Ensure we have enough disk space to compile + if use pgo || use debug || use test ; then + CHECKREQS_DISK_BUILD="8G" + else + CHECKREQS_DISK_BUILD="4G" + fi + check-reqs_pkg_setup +} + +src_unpack() { + unpack ${A} + + # Unpack language packs + mozlinguas_src_unpack +} + +src_prepare() { + # Apply our patches + eapply "${WORKDIR}/firefox" \ + "${FILESDIR}"/${PN}-48.0-pgo.patch \ + "${FILESDIR}"/musl-pthread-setname.patch + + # Enable gnomebreakpad + if use debug ; then + sed -i -e "s:GNOME_DISABLE_CRASH_DIALOG=1:GNOME_DISABLE_CRASH_DIALOG=0:g" \ + "${S}"/build/unix/run-mozilla.sh || die "sed failed!" + fi + + # Ensure that our plugins dir is enabled as default + sed -i -e "s:/usr/lib/mozilla/plugins:/usr/lib/nsbrowser/plugins:" \ + "${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path for 32bit!" + sed -i -e "s:/usr/lib64/mozilla/plugins:/usr/lib64/nsbrowser/plugins:" \ + "${S}"/xpcom/io/nsAppFileLocationProvider.cpp || die "sed failed to replace plugin path for 64bit!" + + # Fix sandbox violations during make clean, bug 372817 + sed -e "s:\(/no-such-file\):${T}\1:g" \ + -i "${S}"/config/rules.mk \ + -i "${S}"/nsprpub/configure{.in,} \ + || die + + # Don't exit with error when some libs are missing which we have in + # system. + sed '/^MOZ_PKG_FATAL_WARNINGS/s@= 1@= 0@' \ + -i "${S}"/browser/installer/Makefile.in || die + + # Don't error out when there's no files to be removed: + sed 's@\(xargs rm\)$@\1 -f@' \ + -i "${S}"/toolkit/mozapps/installer/packager.mk || die + + # Keep codebase the same even if not using official branding + sed '/^MOZ_DEV_EDITION=1/d' \ + -i "${S}"/browser/branding/aurora/configure.sh || die + + # Allow user to apply any additional patches without modifing ebuild + eapply_user + + # Autotools configure is now called old-configure.in + # This works because there is still a configure.in that happens to be for the + # shell wrapper configure script + eautoreconf old-configure.in + + # Must run autoconf in js/src + cd "${S}"/js/src || die + eautoconf old-configure.in + + # Need to update jemalloc's configure + cd "${S}"/memory/jemalloc/src || die + WANT_AUTOCONF= eautoconf +} + +src_configure() { + MEXTENSIONS="default" + # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) + # Note: These are for Gentoo Linux use ONLY. For your own distribution, please + # get your own set of keys. + _google_api_key=AIzaSyDEAOvatFo0eTgsV_ZlEzx0ObmepsMzfAc + + #################################### + # + # mozconfig, CFLAGS and CXXFLAGS setup + # + #################################### + + mozconfig_init + mozconfig_config + + # It doesn't compile on alpha without this LDFLAGS + use alpha && append-ldflags "-Wl,--no-relax" + + # Add full relro support for hardened + use hardened && append-ldflags "-Wl,-z,relro,-z,now" + + # Only available on mozilla-overlay for experimentation -- Removed in Gentoo repo per bug 571180 + #use egl && mozconfig_annotate 'Enable EGL as GL provider' --with-gl-provider=EGL + + # Setup api key for location services + echo -n "${_google_api_key}" > "${S}"/google-api-key + mozconfig_annotate '' --with-google-api-keyfile="${S}/google-api-key" + + mozconfig_annotate '' --enable-extensions="${MEXTENSIONS}" + + # Allow for a proper pgo build + if use pgo; then + echo "mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 \$(MAKE) -C \$(MOZ_OBJDIR) pgo-profile-run'" >> "${S}"/.mozconfig + fi + + echo "mk_add_options MOZ_OBJDIR=${BUILD_OBJ_DIR}" >> "${S}"/.mozconfig + echo "mk_add_options XARGS=/usr/bin/xargs" >> "${S}"/.mozconfig + + # Finalize and report settings + mozconfig_final + + if [[ $(gcc-major-version) -lt 4 ]]; then + append-cxxflags -fno-stack-protector + fi + + # workaround for funky/broken upstream configure... + SHELL="${SHELL:-${EPREFIX%/}/bin/bash}" \ + emake -f client.mk configure +} + +src_compile() { + if use pgo; then + addpredict /root + addpredict /etc/gconf + # Reset and cleanup environment variables used by GNOME/XDG + gnome2_environment_reset + + # Firefox tries to use dri stuff when it's run, see bug 380283 + shopt -s nullglob + cards=$(echo -n /dev/dri/card* | sed 's/ /:/g') + if test -z "${cards}"; then + cards=$(echo -n /dev/ati/card* /dev/nvidiactl* | sed 's/ /:/g') + if test -n "${cards}"; then + # Binary drivers seem to cause access violations anyway, so + # let's use indirect rendering so that the device files aren't + # touched at all. See bug 394715. + export LIBGL_ALWAYS_INDIRECT=1 + fi + fi + shopt -u nullglob + addpredict "${cards}" + + MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX%/}/bin/bash}" \ + virtx emake -f client.mk profiledbuild || die "virtx emake failed" + else + MOZ_MAKE_FLAGS="${MAKEOPTS}" SHELL="${SHELL:-${EPREFIX%/}/bin/bash}" \ + emake -f client.mk realbuild + fi + +} + +src_install() { + cd "${BUILD_OBJ_DIR}" || die + + # Pax mark xpcshell for hardened support, only used for startupcache creation. + pax-mark m "${BUILD_OBJ_DIR}"/dist/bin/xpcshell + + # Add our default prefs for firefox + cp "${FILESDIR}"/gentoo-default-prefs.js-1 \ + "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \ + || die + + mozconfig_install_prefs \ + "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" + + # Augment this with hwaccel prefs + if use hwaccel ; then + cat "${FILESDIR}"/gentoo-hwaccel-prefs.js-1 >> \ + "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \ + || die + fi + + echo "pref(\"extensions.autoDisableScopes\", 3);" >> \ + "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \ + || die + + local plugin + use gmp-autoupdate || for plugin in \ + gmp-gmpopenh264 ; do + echo "pref(\"media.${plugin}.autoupdate\", false);" >> \ + "${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" \ + || die + done + + MOZ_MAKE_FLAGS="${MAKEOPTS}" \ + emake DESTDIR="${D}" install + + # Install language packs + mozlinguas_src_install + + local size sizes icon_path icon name + if use bindist; then + sizes="16 32 48" + icon_path="${S}/browser/branding/aurora" + # Firefox's new rapid release cycle means no more codenames + # Let's just stick with this one... + icon="aurora" + name="Aurora" + + # Override preferences to set the MOZ_DEV_EDITION defaults, since we + # don't define MOZ_DEV_EDITION to avoid profile debaucles. + # (source: browser/app/profile/firefox.js) + cat >>"${BUILD_OBJ_DIR}/dist/bin/browser/defaults/preferences/all-gentoo.js" <<PROFILE_EOF +pref("app.feedback.baseURL", "https://input.mozilla.org/%LOCALE%/feedback/firefoxdev/%VERSION%/"); +sticky_pref("lightweightThemes.selectedThemeID", "firefox-devedition@mozilla.org"); +sticky_pref("browser.devedition.theme.enabled", true); +sticky_pref("devtools.theme", "dark"); +PROFILE_EOF + + else + sizes="16 22 24 32 256" + icon_path="${S}/browser/branding/official" + icon="${PN}" + name="Mozilla Firefox" + fi + + # Install icons and .desktop for menu entry + for size in ${sizes}; do + insinto "/usr/share/icons/hicolor/${size}x${size}/apps" + newins "${icon_path}/default${size}.png" "${icon}.png" + done + # The 128x128 icon has a different name + insinto "/usr/share/icons/hicolor/128x128/apps" + newins "${icon_path}/mozicon128.png" "${icon}.png" + # Install a 48x48 icon into /usr/share/pixmaps for legacy DEs + newicon "${icon_path}/content/icon48.png" "${icon}.png" + newmenu "${FILESDIR}/icon/${PN}.desktop" "${PN}.desktop" + sed -i -e "s:@NAME@:${name}:" -e "s:@ICON@:${icon}:" \ + "${ED}/usr/share/applications/${PN}.desktop" || die + + # Add StartupNotify=true bug 237317 + if use startup-notification ; then + echo "StartupNotify=true"\ + >> "${ED}/usr/share/applications/${PN}.desktop" \ + || die + fi + + # Required in order to use plugins and even run firefox on hardened, with jit useflag. + if use jit; then + pax-mark m "${ED}"${MOZILLA_FIVE_HOME}/{firefox,firefox-bin,plugin-container} + else + pax-mark m "${ED}"${MOZILLA_FIVE_HOME}/plugin-container + fi + + # very ugly hack to make firefox not sigbus on sparc + # FIXME: is this still needed?? + use sparc && { sed -e 's/Firefox/FirefoxGentoo/g' \ + -i "${ED}/${MOZILLA_FIVE_HOME}/application.ini" \ + || die "sparc sed failed"; } +} + +pkg_preinst() { + gnome2_icon_savelist +} + +pkg_postinst() { + # Update mimedb for the new .desktop file + fdo-mime_desktop_database_update + gnome2_icon_cache_update +} + +pkg_postrm() { + gnome2_icon_cache_update +}