diff options
author | Beat Gaetzi <beat@FreeBSD.org> | 2014-06-11 11:42:55 +0800 |
---|---|---|
committer | Beat Gaetzi <beat@FreeBSD.org> | 2014-06-11 11:42:55 +0800 |
commit | 0557b9315d4e0c460a7150b697ad040a7084852d (patch) | |
tree | 95c4039ece9c88b497d122c1719bf5d754d803a8 /www | |
parent | 43fd6859fb194226b5da2b861b50a9d77315943b (diff) | |
download | freebsd-ports-gnome-0557b9315d4e0c460a7150b697ad040a7084852d.tar.gz freebsd-ports-gnome-0557b9315d4e0c460a7150b697ad040a7084852d.tar.zst freebsd-ports-gnome-0557b9315d4e0c460a7150b697ad040a7084852d.zip |
- Update Firefox to 30.0
- Update Firefox ESR to 24.6.0
- Update libxul to 24.6.0
- Update NSS to 3.16.1
- Update NSPR to 4.10.6
- Update Thunderbird to 24.6.0
- Convert USE_BZIP2 to USES
- Backport ff31 fix against crashing DEBUG build on newegg.com [1]
- Add a note in UPDATING to not build audio/soundtouch with
INTEGER_SAMPLES [2]
- Use arc4random_buf(3) to generate UUIDs (version 4)
- Fix debugger detection used by Telemetry and the slow script dialog
- Add STAGE support [3]
PR: ports/189991 [1]
PR: ports/189217 [2]
PR: ports/189488 [2]
Submitted by: bapt [3]
Sumbitted by: Jan Beich
Security: http://www.vuxml.org/freebsd/888a0262-f0d9-11e3-ba0c-b4b52fce4ce8.html
Diffstat (limited to 'www')
45 files changed, 1501 insertions, 2729 deletions
diff --git a/www/firefox-esr-i18n/Makefile b/www/firefox-esr-i18n/Makefile index 12d0694b5988..16bca4b00878 100644 --- a/www/firefox-esr-i18n/Makefile +++ b/www/firefox-esr-i18n/Makefile @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= firefox -PORTVERSION= 24.5.0 +PORTVERSION= 24.6.0 CATEGORIES= www MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${PORTVERSION}esr/linux-i686/xpi PKGNAMEPREFIX= diff --git a/www/firefox-esr-i18n/distinfo b/www/firefox-esr-i18n/distinfo index 881e6ae4ea10..a26a865488aa 100644 --- a/www/firefox-esr-i18n/distinfo +++ b/www/firefox-esr-i18n/distinfo @@ -1,178 +1,178 @@ -SHA256 (xpi/firefox-24.5.0/ach.xpi) = 89bb3134815fceb3e21b3a0e03c705e4f8df4178271be8798714a78acfdb8368 -SIZE (xpi/firefox-24.5.0/ach.xpi) = 339946 -SHA256 (xpi/firefox-24.5.0/af.xpi) = dbf83ac1bfba4a3c325478813dc7f3b7d90e80d4ade272eb5e17ad97d7837933 -SIZE (xpi/firefox-24.5.0/af.xpi) = 333184 -SHA256 (xpi/firefox-24.5.0/ak.xpi) = 03557473c95e9c8a816784edbf6250a42931887008934f9cc3a908e6f08a6c23 -SIZE (xpi/firefox-24.5.0/ak.xpi) = 340941 -SHA256 (xpi/firefox-24.5.0/ar.xpi) = 461679df4d27aadc21fd04b04fe91fcceeea54a0779e2ab9c564e4647db0f281 -SIZE (xpi/firefox-24.5.0/ar.xpi) = 360850 -SHA256 (xpi/firefox-24.5.0/as.xpi) = 65f041d1ce7f15a2a859c78cea161dd78f73fc4ab2cb56da45eef85f0580093e -SIZE (xpi/firefox-24.5.0/as.xpi) = 378086 -SHA256 (xpi/firefox-24.5.0/ast.xpi) = 8a1061bdb8d92c13322097c4824590615d03cba95a49a0e84794c7eb3072bf34 -SIZE (xpi/firefox-24.5.0/ast.xpi) = 292876 -SHA256 (xpi/firefox-24.5.0/be.xpi) = 156fda23ce2e89c2869f474d25ab49e85bf790b131906601c5187e708aae0774 -SIZE (xpi/firefox-24.5.0/be.xpi) = 316955 -SHA256 (xpi/firefox-24.5.0/bg.xpi) = 5181d2094822162aa17583c1a82709d1a8abdeff28d2f5629848cc65acf5c5a8 -SIZE (xpi/firefox-24.5.0/bg.xpi) = 373136 -SHA256 (xpi/firefox-24.5.0/bn-BD.xpi) = bb073f7e4f6cdb4145c2ebbea5ce37dc056b13d89e7dfc0bbb0692f2ea6ba7f5 -SIZE (xpi/firefox-24.5.0/bn-BD.xpi) = 394939 -SHA256 (xpi/firefox-24.5.0/bn-IN.xpi) = b3546e14be577515a3b4f3eac1b72737f0492e7f18f313d29f565757fcb722d6 -SIZE (xpi/firefox-24.5.0/bn-IN.xpi) = 427780 -SHA256 (xpi/firefox-24.5.0/br.xpi) = aa14900294be897d503ede9cd329ef0a80dd01041523086119a34537e8b77502 -SIZE (xpi/firefox-24.5.0/br.xpi) = 330509 -SHA256 (xpi/firefox-24.5.0/bs.xpi) = 5cb77e0b9c67935ba8a1bc91352552cb2aff201eb1bfe7e116b9d4876396d66a -SIZE (xpi/firefox-24.5.0/bs.xpi) = 341621 -SHA256 (xpi/firefox-24.5.0/ca.xpi) = 85a0c9e67bbd6a2b3207a6025f6e8293900fda05b01556a50a9a14dcf85d2e7d -SIZE (xpi/firefox-24.5.0/ca.xpi) = 341257 -SHA256 (xpi/firefox-24.5.0/cs.xpi) = ce6815b1563758701654b3bc3f1cbd5a5ea1d006cc0066a832b514118f054a3f -SIZE (xpi/firefox-24.5.0/cs.xpi) = 335947 -SHA256 (xpi/firefox-24.5.0/csb.xpi) = 5ee8a4d05b7747ebddc32dabb9e8054422ca715ec8d0f1428f20af7092563f28 -SIZE (xpi/firefox-24.5.0/csb.xpi) = 329796 -SHA256 (xpi/firefox-24.5.0/cy.xpi) = f50f8c73a9871530a11ba6f18d33b0f0b44996923d03d87b2e4fd1832cb0af11 -SIZE (xpi/firefox-24.5.0/cy.xpi) = 330643 -SHA256 (xpi/firefox-24.5.0/da.xpi) = be6a10a1af27e35168e66b21d12ee0b31a22a557f1c101e7a3c31b74bca773bc -SIZE (xpi/firefox-24.5.0/da.xpi) = 326882 -SHA256 (xpi/firefox-24.5.0/de.xpi) = 810293bb68ee37989d779c28670a82ee191b22f2e02538f6635c5bd78a40106f -SIZE (xpi/firefox-24.5.0/de.xpi) = 323258 -SHA256 (xpi/firefox-24.5.0/el.xpi) = b0879237952cc2fcc55a592a47cd2716417dc165024998541c566c6fbaa561d4 -SIZE (xpi/firefox-24.5.0/el.xpi) = 365320 -SHA256 (xpi/firefox-24.5.0/en-GB.xpi) = 7719b15c422cf477d3ada1591ce85e47e428ccaea817a6de58d98c94328982d4 -SIZE (xpi/firefox-24.5.0/en-GB.xpi) = 318298 -SHA256 (xpi/firefox-24.5.0/en-US.xpi) = 9365305ecbd19e8fa23e1cdb003452d9fe624b668098888f676f3d1088d89e71 -SIZE (xpi/firefox-24.5.0/en-US.xpi) = 320993 -SHA256 (xpi/firefox-24.5.0/en-ZA.xpi) = cedee816a20945a4e613d14c653d0d6549533fb41c7b35baf04d269de903c44d -SIZE (xpi/firefox-24.5.0/en-ZA.xpi) = 319321 -SHA256 (xpi/firefox-24.5.0/eo.xpi) = 121c95dd6087373846416c66d8d455a8f5aaa7026d1cd327be27acb68931e75a -SIZE (xpi/firefox-24.5.0/eo.xpi) = 334940 -SHA256 (xpi/firefox-24.5.0/es-AR.xpi) = 3015be6ce0b6064773e95ba22e85ce2698b61e08f4fe9a588a01f7f0e8e95feb -SIZE (xpi/firefox-24.5.0/es-AR.xpi) = 334010 -SHA256 (xpi/firefox-24.5.0/es-CL.xpi) = f3279fb89da82408da9d42c179b21e43c579485fa0e6bd501810749c3c54048c -SIZE (xpi/firefox-24.5.0/es-CL.xpi) = 287027 -SHA256 (xpi/firefox-24.5.0/es-ES.xpi) = b6b20b2effc291c2fac5f6251dc350ae60764c5bf15d94eec42dc029dd03cbe6 -SIZE (xpi/firefox-24.5.0/es-ES.xpi) = 277860 -SHA256 (xpi/firefox-24.5.0/es-MX.xpi) = 24093829c9e9c220edd544c3ccd660976bcf8f6b105b33181069a47b6ed977e0 -SIZE (xpi/firefox-24.5.0/es-MX.xpi) = 302625 -SHA256 (xpi/firefox-24.5.0/et.xpi) = 4c7c05bf0bb5e5908ff9e2d331d0349a2550068da5fd4b1a82e80e09a42f3807 -SIZE (xpi/firefox-24.5.0/et.xpi) = 327698 -SHA256 (xpi/firefox-24.5.0/eu.xpi) = ce23102fbdb04b3844fc7885275edd7bfa7921ea34c651f977b369b1ce984b48 -SIZE (xpi/firefox-24.5.0/eu.xpi) = 332422 -SHA256 (xpi/firefox-24.5.0/fa.xpi) = 55cf194048cbb765d28491522cbf3a59b9b502766222dc843616e9a6503b663f -SIZE (xpi/firefox-24.5.0/fa.xpi) = 375634 -SHA256 (xpi/firefox-24.5.0/ff.xpi) = 3125954890f30fb6ed594363fb1a1ce4106a6c71f542ffaf77ddf0891884ff2e -SIZE (xpi/firefox-24.5.0/ff.xpi) = 332815 -SHA256 (xpi/firefox-24.5.0/fi.xpi) = 7e1daf06bf51ef963d8c8c832cfa039bcd97488e9f916c2d483113157e3c86f2 -SIZE (xpi/firefox-24.5.0/fi.xpi) = 328892 -SHA256 (xpi/firefox-24.5.0/fr.xpi) = 740443f01961855f55956c7bfe67b70599fd81641c8a58e0a3ba27fe1d88ba4f -SIZE (xpi/firefox-24.5.0/fr.xpi) = 339178 -SHA256 (xpi/firefox-24.5.0/fy-NL.xpi) = be38c251d43ee3be8036528fe51053c434cc2d4ee04d5d9d771c58254cad261c -SIZE (xpi/firefox-24.5.0/fy-NL.xpi) = 336593 -SHA256 (xpi/firefox-24.5.0/ga-IE.xpi) = b1f92ecffe17f85f790e7ae67f61050349fac7ab94566352e489137b75cfc8bd -SIZE (xpi/firefox-24.5.0/ga-IE.xpi) = 345295 -SHA256 (xpi/firefox-24.5.0/gd.xpi) = 410feda6a4a6d93b35ef807379d0f879f48200c22a45dca2111a3977952441fb -SIZE (xpi/firefox-24.5.0/gd.xpi) = 344812 -SHA256 (xpi/firefox-24.5.0/gl.xpi) = f32f085c60954ec5cb639504ccd5a01ad205cbb3287e838f5ca20f0c35ffcb9b -SIZE (xpi/firefox-24.5.0/gl.xpi) = 336919 -SHA256 (xpi/firefox-24.5.0/gu-IN.xpi) = e84e03197a8dda85924493e3459e577cf69f1ba7cb0f9f0f39614ff2d5bbd771 -SIZE (xpi/firefox-24.5.0/gu-IN.xpi) = 359359 -SHA256 (xpi/firefox-24.5.0/he.xpi) = 4e81fa8fdba015cb59ad651802634494ddafb9bf00fdc9ac79253b9ad4a9e5db -SIZE (xpi/firefox-24.5.0/he.xpi) = 354631 -SHA256 (xpi/firefox-24.5.0/hi-IN.xpi) = d4280e84dda7f30e272848e9d2764387d400030f89d2cd9cb3d9c3b0d37f5b90 -SIZE (xpi/firefox-24.5.0/hi-IN.xpi) = 379121 -SHA256 (xpi/firefox-24.5.0/hr.xpi) = 87a5b71bd29ca1bdfcf41fa47a674b08292097a2e5e02b0d66a4992ef1f13125 -SIZE (xpi/firefox-24.5.0/hr.xpi) = 336841 -SHA256 (xpi/firefox-24.5.0/hu.xpi) = 3cd756b11e7336aeeac0817d0926fed814725c6391b7da0528c090a5b90fea8c -SIZE (xpi/firefox-24.5.0/hu.xpi) = 344103 -SHA256 (xpi/firefox-24.5.0/hy-AM.xpi) = df292c89159675f8ac95de5c0eb0cc9604ba809bc0df5b93261defee05ef00ea -SIZE (xpi/firefox-24.5.0/hy-AM.xpi) = 385181 -SHA256 (xpi/firefox-24.5.0/id.xpi) = 351efda2d5e392d107d9070a9a2a20cbadb72536c5a49903ca2bed970eaba84b -SIZE (xpi/firefox-24.5.0/id.xpi) = 319795 -SHA256 (xpi/firefox-24.5.0/is.xpi) = a9fe3ff50ad3884c8dc5dda592f7f046867c5afa450571d3189d66ce556ed97d -SIZE (xpi/firefox-24.5.0/is.xpi) = 331826 -SHA256 (xpi/firefox-24.5.0/it.xpi) = 6cb83701d40c29e80bbb554b713af64defdebbb2ec79fca157ce39b1e4368843 -SIZE (xpi/firefox-24.5.0/it.xpi) = 271926 -SHA256 (xpi/firefox-24.5.0/ja.xpi) = 047262fa65b084a51d49371446072444e1c01f1abe08e71a0c96fa01a60b2589 -SIZE (xpi/firefox-24.5.0/ja.xpi) = 370904 -SHA256 (xpi/firefox-24.5.0/kk.xpi) = 8e06e5a4d0ac56ce7b2d70b0b457e4e68f1e6e26ece277839e4c3695d1cb17e6 -SIZE (xpi/firefox-24.5.0/kk.xpi) = 377502 -SHA256 (xpi/firefox-24.5.0/km.xpi) = 35327b91598f75e316c74f1747d8aef6178cb3c4e22589d91ec4f472d75977ea -SIZE (xpi/firefox-24.5.0/km.xpi) = 400559 -SHA256 (xpi/firefox-24.5.0/kn.xpi) = dc7a37b155a5b778890e64b356c69f6daa94af980fd1eaae7413cf5a55963f0e -SIZE (xpi/firefox-24.5.0/kn.xpi) = 391033 -SHA256 (xpi/firefox-24.5.0/ko.xpi) = 4e8fc61a5dbf760468b0994c2482621da257d7fb00540f26030b508c61aee607 -SIZE (xpi/firefox-24.5.0/ko.xpi) = 346164 -SHA256 (xpi/firefox-24.5.0/ku.xpi) = c2443c2f57c40d09f8176c48ec61a7be89a86b31ea1afe7b606626f3e5f719d9 -SIZE (xpi/firefox-24.5.0/ku.xpi) = 355632 -SHA256 (xpi/firefox-24.5.0/lg.xpi) = f739ff649c7313878889bcd037b9e9faa0c5fee884b07ac097fcdad7e6e699e2 -SIZE (xpi/firefox-24.5.0/lg.xpi) = 351111 -SHA256 (xpi/firefox-24.5.0/lij.xpi) = f211bdfd39359d6d83be9ea9357c6b22133d52292418ba0588c3b7330abc483c -SIZE (xpi/firefox-24.5.0/lij.xpi) = 322703 -SHA256 (xpi/firefox-24.5.0/lt.xpi) = 1b1e85e0f0817b7ad6cb1f8bdc80b232aed8ff0e005946345fb7474bd92cbe0a -SIZE (xpi/firefox-24.5.0/lt.xpi) = 352045 -SHA256 (xpi/firefox-24.5.0/lv.xpi) = 9d319f965e9545e50076de73ce9a51e25c457332595d8d5d35bf6bc0b0df5afb -SIZE (xpi/firefox-24.5.0/lv.xpi) = 328665 -SHA256 (xpi/firefox-24.5.0/mai.xpi) = da093cbb6a1e2786ef6561dd91a60bb0fa81e4f1fad603efa566205ac188984c -SIZE (xpi/firefox-24.5.0/mai.xpi) = 379767 -SHA256 (xpi/firefox-24.5.0/mk.xpi) = 965011e03d977df7cdfa4e00e9c1864570bfe26515103664c0c7f739ae6d1ae5 -SIZE (xpi/firefox-24.5.0/mk.xpi) = 376316 -SHA256 (xpi/firefox-24.5.0/ml.xpi) = 8ffbe5d36f5dbf6e07a4e93be42f81bbd01d67473702d6a926451098b01b210b -SIZE (xpi/firefox-24.5.0/ml.xpi) = 399678 -SHA256 (xpi/firefox-24.5.0/mr.xpi) = 1d48a15eab812fdbd999ffa16bc5244cec414e4becc63acb4e6c57e8d9d06598 -SIZE (xpi/firefox-24.5.0/mr.xpi) = 380232 -SHA256 (xpi/firefox-24.5.0/nb-NO.xpi) = 8080a307c0f0ffbf6e87d2709b72048ecaf17b92bc95fd317522ab2044c06f35 -SIZE (xpi/firefox-24.5.0/nb-NO.xpi) = 330966 -SHA256 (xpi/firefox-24.5.0/nl.xpi) = b05435549d6aa06fa4167d034022bdcb399b4cb406d8929ae2c20f57d64d7712 -SIZE (xpi/firefox-24.5.0/nl.xpi) = 331405 -SHA256 (xpi/firefox-24.5.0/nn-NO.xpi) = 550abb8abdea1aac0738535b6b6ee0d84c551a36307b8d6d402592fc2b6cffe9 -SIZE (xpi/firefox-24.5.0/nn-NO.xpi) = 333907 -SHA256 (xpi/firefox-24.5.0/nso.xpi) = 5de065f05acf39ddc493b158ab277cbca78091626242aa50e5b85575ea79c546 -SIZE (xpi/firefox-24.5.0/nso.xpi) = 336298 -SHA256 (xpi/firefox-24.5.0/or.xpi) = ec6d6b647bbc342ef65256cb6e645b3b67db9bfbd9e4e502d83c3bc8c0025741 -SIZE (xpi/firefox-24.5.0/or.xpi) = 364593 -SHA256 (xpi/firefox-24.5.0/pa-IN.xpi) = bbef2c9f3b3d02efd46ab9fcdf56be10ae94a187b4a70191927849e3b2f3cc60 -SIZE (xpi/firefox-24.5.0/pa-IN.xpi) = 365653 -SHA256 (xpi/firefox-24.5.0/pl.xpi) = 3d6583fcd2fc1d8de25eae5996927ba1bd7f90333c978f9f558873dd120c6b5e -SIZE (xpi/firefox-24.5.0/pl.xpi) = 341995 -SHA256 (xpi/firefox-24.5.0/pt-BR.xpi) = 24d5a37fc39bb64d11535625a707bd741f04c603a01e91515d3650c09925c7b0 -SIZE (xpi/firefox-24.5.0/pt-BR.xpi) = 334606 -SHA256 (xpi/firefox-24.5.0/pt-PT.xpi) = d6e489bab3a960bd988d1f1d59c113151820aaa894f116ec168f1cfde8bc9351 -SIZE (xpi/firefox-24.5.0/pt-PT.xpi) = 332740 -SHA256 (xpi/firefox-24.5.0/rm.xpi) = e1aeed564f7492fccbbb0c98918c3a9077501f05ece5493e5c125fabe47f422d -SIZE (xpi/firefox-24.5.0/rm.xpi) = 339698 -SHA256 (xpi/firefox-24.5.0/ro.xpi) = 86d84a90e8bbebeb174d740482b355d93fd63be01efdfc49a85b008262b41aff -SIZE (xpi/firefox-24.5.0/ro.xpi) = 362237 -SHA256 (xpi/firefox-24.5.0/ru.xpi) = 46e7530980ac1b7761d049cb6bde008e94f0ceef0187be8629b722cfd16148a7 -SIZE (xpi/firefox-24.5.0/ru.xpi) = 322761 -SHA256 (xpi/firefox-24.5.0/si.xpi) = deb60b658a54e26b286cf6f1a4996175169333d257ad8a1038faabdc663ddd84 -SIZE (xpi/firefox-24.5.0/si.xpi) = 372983 -SHA256 (xpi/firefox-24.5.0/sk.xpi) = 76bfa6a2bc4c526053fa9a81f3d8be99f1ffe5440c0d3b7f5e419bd723ccc3a6 -SIZE (xpi/firefox-24.5.0/sk.xpi) = 347879 -SHA256 (xpi/firefox-24.5.0/sl.xpi) = a60eeff81f3b3c9a765fead2b00c4ac7d96778b51d8185401dcbb6b5c2c727da -SIZE (xpi/firefox-24.5.0/sl.xpi) = 331572 -SHA256 (xpi/firefox-24.5.0/son.xpi) = e6dc41c014cfe9921f9617837ca5cfbc30da9ba8b0bf0dc97da0370ece749072 -SIZE (xpi/firefox-24.5.0/son.xpi) = 328903 -SHA256 (xpi/firefox-24.5.0/sq.xpi) = c09e2ca9d828763ae9f1056cddcf44771f4fb06b6e2ea919d40b8c9d9c3a6746 -SIZE (xpi/firefox-24.5.0/sq.xpi) = 340677 -SHA256 (xpi/firefox-24.5.0/sr.xpi) = 10aab262ca85ca8fe67aadc1ec718a6b26ed762308ea950edfee75d0c25aa1b5 -SIZE (xpi/firefox-24.5.0/sr.xpi) = 385108 -SHA256 (xpi/firefox-24.5.0/sv-SE.xpi) = 4e26bd50b1770d57a5fa434972d63626fe399fb27452f90e4bdb4450bd14140d -SIZE (xpi/firefox-24.5.0/sv-SE.xpi) = 333507 -SHA256 (xpi/firefox-24.5.0/ta-LK.xpi) = a7d1d5d44fa2b13f5fbc90bb66d29d14201922b4304e91eb463d5ba9a76b8e39 -SIZE (xpi/firefox-24.5.0/ta-LK.xpi) = 384156 -SHA256 (xpi/firefox-24.5.0/ta.xpi) = 1c322d1d87f7ad0b2b2792939dd353d63c864ca5d1038807046fb8f09be5cb82 -SIZE (xpi/firefox-24.5.0/ta.xpi) = 381423 -SHA256 (xpi/firefox-24.5.0/te.xpi) = 4c81cb886077916ab8e622933a1ce832dd4656b72bee9505506059b8d98ee331 -SIZE (xpi/firefox-24.5.0/te.xpi) = 394563 -SHA256 (xpi/firefox-24.5.0/th.xpi) = 1274f67c577a3325423774e17862ceb832a2523564816ef6f9b6bf2e6e6891fe -SIZE (xpi/firefox-24.5.0/th.xpi) = 379823 -SHA256 (xpi/firefox-24.5.0/tr.xpi) = e969d229c5ee5e5d75e9709c07ef2f482974aa27e2c07741d371e29e2c5ae58f -SIZE (xpi/firefox-24.5.0/tr.xpi) = 340387 -SHA256 (xpi/firefox-24.5.0/uk.xpi) = 6352035d5b50ba368aa4bce0bd9fca4811de4467a249e41708c1a771b72e1b26 -SIZE (xpi/firefox-24.5.0/uk.xpi) = 365699 -SHA256 (xpi/firefox-24.5.0/vi.xpi) = 6b915f53d4d375e99f20b955634bcc97e5dafd68e29b51f32d8b91ee02650a96 -SIZE (xpi/firefox-24.5.0/vi.xpi) = 358430 -SHA256 (xpi/firefox-24.5.0/zh-CN.xpi) = 43d21947d10746a7e41caf8df030b32c9ba834f26f47288e5c7d2b2959281fa5 -SIZE (xpi/firefox-24.5.0/zh-CN.xpi) = 358183 -SHA256 (xpi/firefox-24.5.0/zh-TW.xpi) = 88ab281a92fe9d1734cf199c562c80bdd1ccc603ec4c7c45ef82a460a68b6e0b -SIZE (xpi/firefox-24.5.0/zh-TW.xpi) = 351833 -SHA256 (xpi/firefox-24.5.0/zu.xpi) = e0b7089d4e2cf97fb6f3843fb83cf15266a0106326ff6c98616356e064b0749c -SIZE (xpi/firefox-24.5.0/zu.xpi) = 340395 +SHA256 (xpi/firefox-24.6.0/ach.xpi) = 760eaa7d308061e43ba9c57e28ed6f26e3821d286f8425bcb06fe31fa4f375c3 +SIZE (xpi/firefox-24.6.0/ach.xpi) = 339946 +SHA256 (xpi/firefox-24.6.0/af.xpi) = 51aa87f6ff3126bbbc93a62554b3f1ff7c3405279a29acea57a0674a2e53d7c2 +SIZE (xpi/firefox-24.6.0/af.xpi) = 333184 +SHA256 (xpi/firefox-24.6.0/ak.xpi) = 205083dd4890ac6ec3e1b26595e63820fdcfc91d408a1c56d963b084673ed910 +SIZE (xpi/firefox-24.6.0/ak.xpi) = 340940 +SHA256 (xpi/firefox-24.6.0/ar.xpi) = eda2edbf07efa2f1f70c30b3bb699e5db353f7854b8aa1f7e9b8599576b2fca5 +SIZE (xpi/firefox-24.6.0/ar.xpi) = 360850 +SHA256 (xpi/firefox-24.6.0/as.xpi) = 2893b39b73b5ca71b5b562af155db917e5ac1aa0ab02941e400b9cd055346601 +SIZE (xpi/firefox-24.6.0/as.xpi) = 378085 +SHA256 (xpi/firefox-24.6.0/ast.xpi) = 38c5ef1342b84f6f399746a05a2fa03743d19955efa88c34bf33ff6b9bba95e0 +SIZE (xpi/firefox-24.6.0/ast.xpi) = 292876 +SHA256 (xpi/firefox-24.6.0/be.xpi) = 0bc49ac841663b42e769bf26da9f18649762896aef0ba92f5b8399d94219d91f +SIZE (xpi/firefox-24.6.0/be.xpi) = 316955 +SHA256 (xpi/firefox-24.6.0/bg.xpi) = f7835756fbb5ffcc74359200b4f2be3a4a7eca275285a4e5412d076625d52e35 +SIZE (xpi/firefox-24.6.0/bg.xpi) = 373136 +SHA256 (xpi/firefox-24.6.0/bn-BD.xpi) = 1ab701bbf5183df5d89d67adc0fc39eca12b5650b5076d0bc06811e193c0febd +SIZE (xpi/firefox-24.6.0/bn-BD.xpi) = 394939 +SHA256 (xpi/firefox-24.6.0/bn-IN.xpi) = 4934052d84af60e3232799c3a7f5e84d253902e68385344269d69bb2ee891f3c +SIZE (xpi/firefox-24.6.0/bn-IN.xpi) = 427780 +SHA256 (xpi/firefox-24.6.0/br.xpi) = 812c636e08adbdcbebaf9aa3995ed842fe61dd2c5487543df093a8167d30c37f +SIZE (xpi/firefox-24.6.0/br.xpi) = 330509 +SHA256 (xpi/firefox-24.6.0/bs.xpi) = 182ad06c417103df56cd9bac37b7392cafa54b23e38d7b811300ccfb7f4b90c9 +SIZE (xpi/firefox-24.6.0/bs.xpi) = 341620 +SHA256 (xpi/firefox-24.6.0/ca.xpi) = 0b49401392e73469a8296f8319f42e220ad3012db1dd6012c1b45ce8fb359e1d +SIZE (xpi/firefox-24.6.0/ca.xpi) = 341257 +SHA256 (xpi/firefox-24.6.0/cs.xpi) = 87f456f90093e9443c0718ffc9b3eed2bc8992329203a888adf0c78872859960 +SIZE (xpi/firefox-24.6.0/cs.xpi) = 335946 +SHA256 (xpi/firefox-24.6.0/csb.xpi) = d878fc7e6240283850ddd85567b0e3007c73f3cf2242327f1ad6629ce9f79a23 +SIZE (xpi/firefox-24.6.0/csb.xpi) = 329796 +SHA256 (xpi/firefox-24.6.0/cy.xpi) = 7c9c7400ac93e04e5335d359516facb371b77535b86a4731c1fb310f3cd9c151 +SIZE (xpi/firefox-24.6.0/cy.xpi) = 330643 +SHA256 (xpi/firefox-24.6.0/da.xpi) = 018ed2c01fb9df4a83e39c7a25b4d0f2190a7f288d6f1fd6b817e44d29d5948d +SIZE (xpi/firefox-24.6.0/da.xpi) = 326882 +SHA256 (xpi/firefox-24.6.0/de.xpi) = fbaba3f3356377bfc71de91a5943f473d661f2daba32a881e3def5ed5a1244e1 +SIZE (xpi/firefox-24.6.0/de.xpi) = 323258 +SHA256 (xpi/firefox-24.6.0/el.xpi) = c33759d7fe6e3a7f5117af81e82d29e9a05f9384825a8ba8e85943f84d8c4991 +SIZE (xpi/firefox-24.6.0/el.xpi) = 365320 +SHA256 (xpi/firefox-24.6.0/en-GB.xpi) = 886959f3bdd2f14d243812982c5fcc68af7acc742cfad0dc58e3d30fa790256e +SIZE (xpi/firefox-24.6.0/en-GB.xpi) = 318297 +SHA256 (xpi/firefox-24.6.0/en-US.xpi) = 5fb0d62bf3e08c73db0086a5a4721f588dc4b8282d098aff52c83078f1751ce0 +SIZE (xpi/firefox-24.6.0/en-US.xpi) = 320993 +SHA256 (xpi/firefox-24.6.0/en-ZA.xpi) = 207ae891c739deded157f390981ead19120184df069a790d1ed84276df792ea9 +SIZE (xpi/firefox-24.6.0/en-ZA.xpi) = 319321 +SHA256 (xpi/firefox-24.6.0/eo.xpi) = 81818d5f309e35351691a2a8821f90a50772847b5f41bed6bbf01319fe7fb3c1 +SIZE (xpi/firefox-24.6.0/eo.xpi) = 334940 +SHA256 (xpi/firefox-24.6.0/es-AR.xpi) = 7e338148ffa757c40dfa2967b7df02af4865b059f4f50a6569f13355d5a5c1f0 +SIZE (xpi/firefox-24.6.0/es-AR.xpi) = 334010 +SHA256 (xpi/firefox-24.6.0/es-CL.xpi) = 586b97eaeb957c38c93b43499a7ee262622da5c107ebad53c5e0e6026053e12f +SIZE (xpi/firefox-24.6.0/es-CL.xpi) = 287027 +SHA256 (xpi/firefox-24.6.0/es-ES.xpi) = b6ace28a3609016e7f3a54ce39383d0a62355d4a7f9a20e226aae6986247d619 +SIZE (xpi/firefox-24.6.0/es-ES.xpi) = 277859 +SHA256 (xpi/firefox-24.6.0/es-MX.xpi) = a98e55f3ed4d5541ebbae2c301ea76ed87aaaeffc6fbb5d100e30f043135719b +SIZE (xpi/firefox-24.6.0/es-MX.xpi) = 302625 +SHA256 (xpi/firefox-24.6.0/et.xpi) = 857193177866e9ba9d77570c4398522c06e899a5ace1818546c37aa8e8862529 +SIZE (xpi/firefox-24.6.0/et.xpi) = 327697 +SHA256 (xpi/firefox-24.6.0/eu.xpi) = 1822d8c824126df5cd3f7819787173d009420fed02d9e858acd78140d8c4e8d4 +SIZE (xpi/firefox-24.6.0/eu.xpi) = 332422 +SHA256 (xpi/firefox-24.6.0/fa.xpi) = 4d4e10237d0e69a0aac83c7e4c5045a199bc0e263bb46b10e936d8a5484cb456 +SIZE (xpi/firefox-24.6.0/fa.xpi) = 375633 +SHA256 (xpi/firefox-24.6.0/ff.xpi) = 9fe433bed01296ccd02ce631bfbb8eb29cb87da27ce987dfe23bfff6c1a7bb5a +SIZE (xpi/firefox-24.6.0/ff.xpi) = 332815 +SHA256 (xpi/firefox-24.6.0/fi.xpi) = 0023d056329ef77db77fcb85cecc5779a12575679be4aa7480a472fbf1a64fb2 +SIZE (xpi/firefox-24.6.0/fi.xpi) = 328892 +SHA256 (xpi/firefox-24.6.0/fr.xpi) = 204c57d85444cae922e51884a089158a47c5200fa7b67b5ff9be25b3a00b2ff4 +SIZE (xpi/firefox-24.6.0/fr.xpi) = 339178 +SHA256 (xpi/firefox-24.6.0/fy-NL.xpi) = 646692c071f645783c603e3221de9517443af146255354fcf98b2afe230d4924 +SIZE (xpi/firefox-24.6.0/fy-NL.xpi) = 336589 +SHA256 (xpi/firefox-24.6.0/ga-IE.xpi) = d03b520fc2f94bf4b5ff56a29f892a79b48ba3470d024a68cd7674b382c1a9e1 +SIZE (xpi/firefox-24.6.0/ga-IE.xpi) = 345294 +SHA256 (xpi/firefox-24.6.0/gd.xpi) = 110d017c8ca20a29dd940df750d7868d47297c0e8742ad6b05f36016068a4dc3 +SIZE (xpi/firefox-24.6.0/gd.xpi) = 344811 +SHA256 (xpi/firefox-24.6.0/gl.xpi) = 50579a1852c2b482aedf224ed2e520471dc9330263b7fb78ab790348b7c52693 +SIZE (xpi/firefox-24.6.0/gl.xpi) = 336919 +SHA256 (xpi/firefox-24.6.0/gu-IN.xpi) = c8bb7bb276c09cfed037179bf72ba5438b80636b5a700e5db9e84b3ee08edeae +SIZE (xpi/firefox-24.6.0/gu-IN.xpi) = 359359 +SHA256 (xpi/firefox-24.6.0/he.xpi) = 46ef2e3b53745da0cad551efef985adb7933f0b6090c3e187dc4609b207608bd +SIZE (xpi/firefox-24.6.0/he.xpi) = 354631 +SHA256 (xpi/firefox-24.6.0/hi-IN.xpi) = e0ce6c822817a759f08f2fd3978cff91ca010fd4712981a1c5fa2351d7e89be8 +SIZE (xpi/firefox-24.6.0/hi-IN.xpi) = 379121 +SHA256 (xpi/firefox-24.6.0/hr.xpi) = de54dbfb350806e3292859f48d3689ed4716c0dec7fefacc8f895538a3c0d1c0 +SIZE (xpi/firefox-24.6.0/hr.xpi) = 336841 +SHA256 (xpi/firefox-24.6.0/hu.xpi) = 1d279c602f65db04708f1670d192dad2c81823b4f8774ef472e11bf454571c03 +SIZE (xpi/firefox-24.6.0/hu.xpi) = 344103 +SHA256 (xpi/firefox-24.6.0/hy-AM.xpi) = 0b278c52903e631e9ebcebec5416ed82191ec5df9f3544d723747806f69d5425 +SIZE (xpi/firefox-24.6.0/hy-AM.xpi) = 385180 +SHA256 (xpi/firefox-24.6.0/id.xpi) = f152bb87a56aa251324922afc9e5b03d28b96a4cca0a307bb3af4a7d4c0cfb05 +SIZE (xpi/firefox-24.6.0/id.xpi) = 319795 +SHA256 (xpi/firefox-24.6.0/is.xpi) = cfd12ce9a56d5f7e909f59757b2bf88b03e662c56b451680550ce1cb72b93fd9 +SIZE (xpi/firefox-24.6.0/is.xpi) = 331826 +SHA256 (xpi/firefox-24.6.0/it.xpi) = 0eb5b78f7cd1e310e62abc916b108cc660bd55c4f3bb164fc904bf1edcfc6bf1 +SIZE (xpi/firefox-24.6.0/it.xpi) = 271926 +SHA256 (xpi/firefox-24.6.0/ja.xpi) = e3fe0983fc34d84e732975b74a45dd65e25b4bb5e63ebe4f9a4f8c3fc321b78c +SIZE (xpi/firefox-24.6.0/ja.xpi) = 370904 +SHA256 (xpi/firefox-24.6.0/kk.xpi) = 71767c2c1d2d5925861bd56222f18d97b19923b36d07baaae11c1ceb113ad219 +SIZE (xpi/firefox-24.6.0/kk.xpi) = 377502 +SHA256 (xpi/firefox-24.6.0/km.xpi) = d41f31a75c2f84fa40ac71e74c6666e0838ebd2c8113cf9fbc67aa29f7b74142 +SIZE (xpi/firefox-24.6.0/km.xpi) = 400559 +SHA256 (xpi/firefox-24.6.0/kn.xpi) = 65ffea88d62e5fcb6b762f7d966d0744b5a46fc3efea8837f1c1abd2360737b5 +SIZE (xpi/firefox-24.6.0/kn.xpi) = 391034 +SHA256 (xpi/firefox-24.6.0/ko.xpi) = e03decad990bca524ca2f741f75951664b8cebbc48659804a2fe85227fae96fd +SIZE (xpi/firefox-24.6.0/ko.xpi) = 346164 +SHA256 (xpi/firefox-24.6.0/ku.xpi) = 0c14fcab9c376ffd2f0a48782e405c608e3b10c6a3047337c0c3257e63e5a76e +SIZE (xpi/firefox-24.6.0/ku.xpi) = 355632 +SHA256 (xpi/firefox-24.6.0/lg.xpi) = 4cdf9b295ecab6e8f4ee9d1829273878c18cb609f32594af76b1ce1a4bbbce5c +SIZE (xpi/firefox-24.6.0/lg.xpi) = 351111 +SHA256 (xpi/firefox-24.6.0/lij.xpi) = 025d1ddc5446b554000feeeca66023aa3c4234aeba50cd7f1fb2461f404fecfb +SIZE (xpi/firefox-24.6.0/lij.xpi) = 322703 +SHA256 (xpi/firefox-24.6.0/lt.xpi) = 9ada99285be0aef762953cf2c0a5ef1b1ce45d286787a883d0908d2176c1bebc +SIZE (xpi/firefox-24.6.0/lt.xpi) = 352045 +SHA256 (xpi/firefox-24.6.0/lv.xpi) = dfac1a3f01537c6df9a39f05b5ac9c29fdedb3745120c07dc9dbe8bf200244d2 +SIZE (xpi/firefox-24.6.0/lv.xpi) = 328664 +SHA256 (xpi/firefox-24.6.0/mai.xpi) = ccd6b3cc898738961fedce93f5f21ce0e122e51bcd9c4fb4b2d795011cd93ecf +SIZE (xpi/firefox-24.6.0/mai.xpi) = 379767 +SHA256 (xpi/firefox-24.6.0/mk.xpi) = 87a5117d48ae0b5cb2ad00087f0e33a5c41034197ac77f252d7f017fcc05ffa7 +SIZE (xpi/firefox-24.6.0/mk.xpi) = 376316 +SHA256 (xpi/firefox-24.6.0/ml.xpi) = 4d876e6121199dba2e2aaa801c30aa31137515e2ac0bbd54ec6705cf0c8803fa +SIZE (xpi/firefox-24.6.0/ml.xpi) = 399677 +SHA256 (xpi/firefox-24.6.0/mr.xpi) = 9ab7192bdfa84253dc1fe4dd903e578bb2b8be53450361941d96f02ff1d909e7 +SIZE (xpi/firefox-24.6.0/mr.xpi) = 380232 +SHA256 (xpi/firefox-24.6.0/nb-NO.xpi) = 4d3fbcc7ab4fd6d9417e93e9bb2583633368268c3cf167686e9a7cc9aabb69b9 +SIZE (xpi/firefox-24.6.0/nb-NO.xpi) = 330966 +SHA256 (xpi/firefox-24.6.0/nl.xpi) = eb87f884362fd4593f386a8f86086f8c22fcfc225fb8abf96a9c6ff32c74b171 +SIZE (xpi/firefox-24.6.0/nl.xpi) = 331404 +SHA256 (xpi/firefox-24.6.0/nn-NO.xpi) = 3b039307b362d9712c7d046baaddf781b6a14cf3ffdef29a508bf951a3241b2c +SIZE (xpi/firefox-24.6.0/nn-NO.xpi) = 333907 +SHA256 (xpi/firefox-24.6.0/nso.xpi) = 128fb0c052af4b3fff3d59d820560ce8c743090b7e70f637772917422e17d2cf +SIZE (xpi/firefox-24.6.0/nso.xpi) = 336298 +SHA256 (xpi/firefox-24.6.0/or.xpi) = 2907e2f67266186499d845d4e5ca413e8567e619ccad58568e91ad304029910b +SIZE (xpi/firefox-24.6.0/or.xpi) = 364593 +SHA256 (xpi/firefox-24.6.0/pa-IN.xpi) = 5359438a698deb45572471a959cc7dbcb60d667b99b38ca3289e52d657bb5514 +SIZE (xpi/firefox-24.6.0/pa-IN.xpi) = 365653 +SHA256 (xpi/firefox-24.6.0/pl.xpi) = 23d1a216333643bd4f3e24b5e72be7653fce4ac125ca28de28f957f081987457 +SIZE (xpi/firefox-24.6.0/pl.xpi) = 341995 +SHA256 (xpi/firefox-24.6.0/pt-BR.xpi) = 4dedb31cca4cf75d1a89b598d5eaaca4e4c61eba6c0eee2a8bfdec45dca7ae86 +SIZE (xpi/firefox-24.6.0/pt-BR.xpi) = 334606 +SHA256 (xpi/firefox-24.6.0/pt-PT.xpi) = 99a74250f123d9e5a53a45f8fae43c5b58a09c8856898f4a4eb87aedf9e1e65c +SIZE (xpi/firefox-24.6.0/pt-PT.xpi) = 332739 +SHA256 (xpi/firefox-24.6.0/rm.xpi) = 444ae4667d29f81051d0f214eb70816daae1ae0f532d16d63c0fac562808b33f +SIZE (xpi/firefox-24.6.0/rm.xpi) = 339698 +SHA256 (xpi/firefox-24.6.0/ro.xpi) = f6f3131386fc0b9f40c64f7e28f7c3309ddeca6b533915f2fbe11e3918a35936 +SIZE (xpi/firefox-24.6.0/ro.xpi) = 362236 +SHA256 (xpi/firefox-24.6.0/ru.xpi) = f23aabad84b0da7967eaf4741f39fda0a9491fca11f6b7551912388772d5169e +SIZE (xpi/firefox-24.6.0/ru.xpi) = 322761 +SHA256 (xpi/firefox-24.6.0/si.xpi) = e0addba9bab8c09b8cf8ec58f776bd28018b66959f06dff56c2c657248fa6ac6 +SIZE (xpi/firefox-24.6.0/si.xpi) = 372982 +SHA256 (xpi/firefox-24.6.0/sk.xpi) = 8b513cb6acc9df9ae84800114bcf361a119f3f9e9c55b72ead5833fb111d9193 +SIZE (xpi/firefox-24.6.0/sk.xpi) = 347879 +SHA256 (xpi/firefox-24.6.0/sl.xpi) = cedb15a7b0a0b6ed54be366226634111fd8e9a547497dd7ed9196d698193cdd8 +SIZE (xpi/firefox-24.6.0/sl.xpi) = 331572 +SHA256 (xpi/firefox-24.6.0/son.xpi) = 34a568be2b0254416ed0ccd6f38fd56bafe6f7a048130c6b56ce107ca82cc107 +SIZE (xpi/firefox-24.6.0/son.xpi) = 328899 +SHA256 (xpi/firefox-24.6.0/sq.xpi) = 831722b244cc5c6b74a50f31303cd20ff47cfc29f52bad805dde8c021d9c4c8b +SIZE (xpi/firefox-24.6.0/sq.xpi) = 340677 +SHA256 (xpi/firefox-24.6.0/sr.xpi) = 233297df3bfbd044c36bb7cf678690631b30bcdfee2fa8765aac36014708508f +SIZE (xpi/firefox-24.6.0/sr.xpi) = 385108 +SHA256 (xpi/firefox-24.6.0/sv-SE.xpi) = 530ceff17481052717b8f32e8563ba53b05d837494f281d9ebf5a67c81549f56 +SIZE (xpi/firefox-24.6.0/sv-SE.xpi) = 333507 +SHA256 (xpi/firefox-24.6.0/ta-LK.xpi) = c9743edd650e1146744fe836ec09d6e330d3b30f66b72dfa41cca218ca9b619a +SIZE (xpi/firefox-24.6.0/ta-LK.xpi) = 384155 +SHA256 (xpi/firefox-24.6.0/ta.xpi) = 18fc1bd29581ce6f748a16c097c4370b97b0febf8c74ae2975b168659e2f3002 +SIZE (xpi/firefox-24.6.0/ta.xpi) = 381423 +SHA256 (xpi/firefox-24.6.0/te.xpi) = 3812771caa640514ebc9abd1d170402b7fdaf53a447d355bd91ae13ec7746372 +SIZE (xpi/firefox-24.6.0/te.xpi) = 394563 +SHA256 (xpi/firefox-24.6.0/th.xpi) = 14288fe4d0d69795df4aa4fb40471b6398f536c1c00398aedcc539a9ce16ea2d +SIZE (xpi/firefox-24.6.0/th.xpi) = 379823 +SHA256 (xpi/firefox-24.6.0/tr.xpi) = ac03cc9c2c401f15a4bc29d972831195b1465421fed09003f2fcd4351b8b652d +SIZE (xpi/firefox-24.6.0/tr.xpi) = 340387 +SHA256 (xpi/firefox-24.6.0/uk.xpi) = 45f8bf56a2a503074ee2e234f6f336914f0bdba2b1dcfe8e7ed69bbb33ece252 +SIZE (xpi/firefox-24.6.0/uk.xpi) = 365699 +SHA256 (xpi/firefox-24.6.0/vi.xpi) = 9b2fb878254624d8c36cc87aeace3287e06811d457aeba13d1708111f13235b1 +SIZE (xpi/firefox-24.6.0/vi.xpi) = 358430 +SHA256 (xpi/firefox-24.6.0/zh-CN.xpi) = b0387855eb292541034e1b6840920065af40caaee4a1ad67da3bf022947aac61 +SIZE (xpi/firefox-24.6.0/zh-CN.xpi) = 358182 +SHA256 (xpi/firefox-24.6.0/zh-TW.xpi) = fe8aae3ab4b25e242ba2b284e029b9803285e7524bacdecc2af3954bcc5d642b +SIZE (xpi/firefox-24.6.0/zh-TW.xpi) = 351833 +SHA256 (xpi/firefox-24.6.0/zu.xpi) = 4b2ade2bdf3f39900ae3f3b82b9677eca8f2350c6b9c4aff8ee8074c716c9314 +SIZE (xpi/firefox-24.6.0/zu.xpi) = 340395 diff --git a/www/firefox-esr/Makefile b/www/firefox-esr/Makefile index c15bb69d18ff..85f838117fa8 100644 --- a/www/firefox-esr/Makefile +++ b/www/firefox-esr/Makefile @@ -2,8 +2,7 @@ # $FreeBSD$ PORTNAME= firefox -DISTVERSION= 24.5.0 -PORTREVISION= 1 +DISTVERSION= 24.6.0 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}esr/source @@ -42,9 +41,8 @@ USE_QT4= # empty QT_NONSTANDARD= yes ALL_TARGET= default GNU_CONFIGURE= yes -USE_BZIP2= yes USE_GL= gl -USES= dos2unix +USES= dos2unix tar:bzip2 DOS2UNIX_FILES= media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp NO_MOZPKGINSTALL=yes @@ -54,7 +52,6 @@ MOZ_OPTIONS= --program-transform-name='s/firefox/${MOZILLA}/' \ --enable-application=browser \ --enable-official-branding -NO_STAGE= yes .include "${.CURDIR}/../../www/firefox/Makefile.options" .include <bsd.port.pre.mk> @@ -79,14 +76,9 @@ pre-configure: (cd ${WRKSRC} && ${AUTOCONF}) (cd ${WRKSRC}/js/src/ && ${AUTOCONF}) -port-pre-install: - ${ECHO_CMD} 'share/applications/${MOZILLA}.desktop' >> ${PLISTF} - ${ECHO_CMD} 'share/pixmaps/${FIREFOX_ICON}' >> ${PLISTF} - post-install: - ${MKDIR} ${PREFIX}/share/pixmaps - ${INSTALL_DATA} ${WRKDIR}/${MOZILLA}.desktop ${PREFIX}/share/applications/ - ${LN} -sf ${FIREFOX_ICON_SRC} ${PREFIX}/share/pixmaps/${FIREFOX_ICON} - @${CAT} ${PKGMESSAGE} + ${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps + ${INSTALL_DATA} ${WRKDIR}/${MOZILLA}.desktop ${STAGEDIR}${PREFIX}/share/applications/ + ${LN} -sf ${FIREFOX_ICON_SRC} ${STAGEDIR}${PREFIX}/share/pixmaps/${FIREFOX_ICON} .include <bsd.port.post.mk> diff --git a/www/firefox-esr/distinfo b/www/firefox-esr/distinfo index b872161f5c4c..8137a3cde37b 100644 --- a/www/firefox-esr/distinfo +++ b/www/firefox-esr/distinfo @@ -1,2 +1,2 @@ -SHA256 (firefox-24.5.0esr.source.tar.bz2) = 1670e72511cad6047eb8726fa6c2362adcb95b5d53a3c327c4c38bed4b788701 -SIZE (firefox-24.5.0esr.source.tar.bz2) = 119830718 +SHA256 (firefox-24.6.0esr.source.tar.bz2) = 02ee0424ddefd912768a3ae700a4581053ef68f9dea46c34e43e833c119289e4 +SIZE (firefox-24.6.0esr.source.tar.bz2) = 119465935 diff --git a/www/firefox-esr/files/patch-bug1013675 b/www/firefox-esr/files/patch-bug1013675 new file mode 100644 index 000000000000..cb1b4d0f5ea7 --- /dev/null +++ b/www/firefox-esr/files/patch-bug1013675 @@ -0,0 +1,89 @@ +diff --git xpcom/base/nsDebugImpl.cpp xpcom/base/nsDebugImpl.cpp +index 13a286f..293bd73 100644 +--- xpcom/base/nsDebugImpl.cpp ++++ xpcom/base/nsDebugImpl.cpp +@@ -45,13 +45,44 @@ + #endif + #endif + +-#if defined(XP_MACOSX) ++#if defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) + #include <stdbool.h> + #include <sys/types.h> + #include <unistd.h> ++#include <sys/param.h> + #include <sys/sysctl.h> + #endif + ++#if defined(__OpenBSD__) ++#include <sys/proc.h> ++#endif ++ ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include <sys/user.h> ++#endif ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(XP_MACOSX) ++#define KP_FLAGS kp_proc.p_flag ++#elif defined(__DragonFly__) ++#define KP_FLAGS kp_flags ++#elif defined(__FreeBSD__) ++#define KP_FLAGS ki_flag ++#elif defined(__OpenBSD__) && !defined(_P_TRACED) ++#define KP_FLAGS p_psflags ++#define P_TRACED PS_TRACED ++#else ++#define KP_FLAGS p_flag ++#endif ++ + #include "mozilla/mozalloc_abort.h" + + static void +@@ -144,16 +175,22 @@ nsDebugImpl::GetIsDebuggerAttached(bool* aResult) + + #if defined(XP_WIN) + *aResult = ::IsDebuggerPresent(); +-#elif defined(XP_MACOSX) ++#elif defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) + // Specify the info we're looking for +- int mib[4]; +- mib[0] = CTL_KERN; +- mib[1] = KERN_PROC; +- mib[2] = KERN_PROC_PID; +- mib[3] = getpid(); ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; + size_t mibSize = sizeof(mib) / sizeof(int); + +- struct kinfo_proc info; ++ KINFO_PROC info; + size_t infoSize = sizeof(info); + memset(&info, 0, infoSize); + +@@ -163,7 +200,7 @@ nsDebugImpl::GetIsDebuggerAttached(bool* aResult) + return NS_OK; + } + +- if (info.kp_proc.p_flag & P_TRACED) { ++ if (info.KP_FLAGS & P_TRACED) { + *aResult = true; + } + #endif diff --git a/www/firefox-esr/files/patch-bug1015547 b/www/firefox-esr/files/patch-bug1015547 new file mode 100644 index 000000000000..df963e0de88c --- /dev/null +++ b/www/firefox-esr/files/patch-bug1015547 @@ -0,0 +1,94 @@ +diff --git configure.in configure.in +index 7bed45f..053de17 100644 +--- configure.in ++++ configure.in +@@ -3166,6 +3166,7 @@ AC_CHECK_FUNCS(random strerror lchown fc + AC_CHECK_FUNCS(statvfs64 statvfs statfs64 statfs) + AC_CHECK_FUNCS(flockfile getpagesize) + AC_CHECK_FUNCS(localtime_r strtok_r) ++AC_CHECK_FUNCS(arc4random arc4random_buf) + + dnl check for clock_gettime(), the CLOCK_MONOTONIC clock + AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), +diff --git xpcom/base/nsUUIDGenerator.cpp xpcom/base/nsUUIDGenerator.cpp +index 0687344..ca3ff8b 100644 +--- xpcom/base/nsUUIDGenerator.cpp ++++ xpcom/base/nsUUIDGenerator.cpp +@@ -15,6 +15,10 @@ + + #include "nsUUIDGenerator.h" + ++#ifdef ANDROID ++extern "C" NS_EXPORT void arc4random_buf(void *, size_t); ++#endif ++ + using namespace mozilla; + + NS_IMPL_ISUPPORTS1(nsUUIDGenerator, nsIUUIDGenerator) +@@ -34,7 +38,7 @@ nsUUIDGenerator::Init() + // We're a service, so we're guaranteed that Init() is not going + // to be reentered while we're inside Init(). + +-#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(ANDROID) ++#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(HAVE_ARC4RANDOM) + /* initialize random number generator using NSPR random noise */ + unsigned int seed; + +@@ -67,7 +71,7 @@ nsUUIDGenerator::Init() + return NS_ERROR_FAILURE; + #endif + +-#endif /* non XP_WIN and non XP_MACOSX */ ++#endif /* non XP_WIN and non XP_MACOSX and non ARC4RANDOM */ + + return NS_OK; + } +@@ -114,13 +118,16 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + * back to it; instead, we use the value returned when we called + * initstate, since older glibc's have broken setstate() return values + */ +-#ifndef ANDROID ++#ifndef HAVE_ARC4RANDOM + setstate(mState); + #endif + ++#ifdef HAVE_ARC4RANDOM_BUF ++ arc4random_buf(id, sizeof(nsID)); ++#else /* HAVE_ARC4RANDOM_BUF */ + size_t bytesLeft = sizeof(nsID); + while (bytesLeft > 0) { +-#ifdef ANDROID ++#ifdef HAVE_ARC4RANDOM + long rval = arc4random(); + const size_t mRBytes = 4; + #else +@@ -141,6 +148,7 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + + bytesLeft -= toWrite; + } ++#endif /* HAVE_ARC4RANDOM_BUF */ + + /* Put in the version */ + id->m2 &= 0x0fff; +@@ -150,7 +158,7 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + id->m3[0] &= 0x3f; + id->m3[0] |= 0x80; + +-#ifndef ANDROID ++#ifndef HAVE_ARC4RANDOM + /* Restore the previous RNG state */ + setstate(mSavedState); + #endif +diff --git xpcom/base/nsUUIDGenerator.h xpcom/base/nsUUIDGenerator.h +index 6a24212..68ed6f2 100644 +--- xpcom/base/nsUUIDGenerator.h ++++ xpcom/base/nsUUIDGenerator.h +@@ -27,7 +27,7 @@ private: + protected: + + mozilla::Mutex mLock; +-#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(ANDROID) ++#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(HAVE_ARC4RANDOM) + char mState[128]; + char *mSavedState; + uint8_t mRBytes; diff --git a/www/firefox-esr/files/patch-bug916589 b/www/firefox-esr/files/patch-bug916589 index 5748c3316f85..c6c6c58c9175 100644 --- a/www/firefox-esr/files/patch-bug916589 +++ b/www/firefox-esr/files/patch-bug916589 @@ -2,17 +2,8 @@ diff --git media/mtransport/third_party/nrappkit/src/port/generic/include/sys/qu index 5b50785..7cf47d5 100644 --- media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h +++ media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h -@@ -31,11 +31,18 @@ - */ - --#ifndef _SYS_QUEUE_H_ -+#if (defined(BSD) && !defined(__OpenBSD__)) || defined(DARWIN) -+#include_next <sys/queue.h> -+# if defined(__DragonFly__) -+#define STAILQ_FOREACH_SAFE STAILQ_FOREACH_MUTABLE -+#define TAILQ_FOREACH_SAFE TAILQ_FOREACH_MUTABLE -+# endif -+#elif !defined(_SYS_QUEUE_H_) +@@ -33,9 +33,10 @@ + #ifndef _SYS_QUEUE_H_ #define _SYS_QUEUE_H_ -#if !defined(__FreeBSD__) && !defined(DARWIN) @@ -24,7 +15,7 @@ index 5b50785..7cf47d5 100644 #endif #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ -@@ -43,8 +46,6 @@ +@@ -43,8 +44,6 @@ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ (var) = (tvar)) @@ -33,7 +24,7 @@ index 5b50785..7cf47d5 100644 /* * This file defines four types of data structures: singly-linked lists, * singly-linked tail queues, lists and tail queues. -@@ -285,7 +286,7 @@ struct { \ +@@ -285,7 +284,7 @@ struct { \ (STAILQ_EMPTY((head)) ? \ NULL : \ ((struct type *) \ diff --git a/www/firefox-esr/files/patch-zz-bug517422 b/www/firefox-esr/files/patch-zz-bug517422 index acdd451854cd..1c3d05480bc2 100644 --- a/www/firefox-esr/files/patch-zz-bug517422 +++ b/www/firefox-esr/files/patch-zz-bug517422 @@ -178,7 +178,7 @@ index 87db361..7947626 100644 dnl = Disable Opus audio codec support dnl ======================================================== MOZ_ARG_DISABLE_BOOL(opus, -@@ -5219,6 +5274,76 @@ MOZ_ARG_DISABLE_BOOL(opus, +@@ -5219,6 +5274,97 @@ MOZ_ARG_DISABLE_BOOL(opus, MOZ_OPUS=1) dnl ======================================================== @@ -245,6 +245,27 @@ index 87db361..7947626 100644 + +if test -n "$MOZ_NATIVE_SOUNDTOUCH"; then + PKG_CHECK_MODULES(MOZ_SOUNDTOUCH, soundtouch >= 1.7.0) ++ ++ AC_LANG_SAVE ++ AC_LANG_CPLUSPLUS ++ _SAVE_CXXFLAGS=$CXXFLAGS ++ CXXFLAGS="$CXXFLAGS $MOZ_SOUNDTOUCH_CFLAGS" ++ AC_CACHE_CHECK(for soundtouch sample type, ++ ac_cv_soundtouch_sample_type, ++ [AC_TRY_COMPILE([#include <SoundTouch.h> ++ #ifndef SOUNDTOUCH_INTEGER_SAMPLES ++ #error soundtouch expects float samples ++ #endif], ++ [], ++ [ac_cv_soundtouch_sample_type=short], ++ [ac_cv_soundtouch_sample_type=float])]) ++ CXXFLAGS=$_SAVE_CXXFLAGS ++ AC_LANG_RESTORE ++ ++ if test \( -n "$MOZ_SAMPLE_TYPE_S16" -a "$ac_cv_soundtouch_sample_type" != short \) \ ++ -o \( -n "$MOZ_SAMPLE_TYPE_FLOAT32" -a "$ac_cv_soundtouch_sample_type" != float \) ; then ++ AC_MSG_ERROR([SoundTouch library is built with incompatible sample type. Either rebuild the library with/without --enable-integer-samples, chase default Mozilla sample type or remove --with-system-soundtouch.]) ++ fi +fi + +AC_SUBST(MOZ_NATIVE_SOUNDTOUCH) diff --git a/www/firefox-i18n/Makefile b/www/firefox-i18n/Makefile index c1287e5047ae..99f14efe8d43 100644 --- a/www/firefox-i18n/Makefile +++ b/www/firefox-i18n/Makefile @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= firefox-i18n -PORTVERSION= 29.0 +PORTVERSION= 30.0 CATEGORIES= www MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${PORTVERSION}/linux-i686/xpi PKGNAMEPREFIX= @@ -14,7 +14,7 @@ COMMENT= Localized interface for Firefox EXTRACT_DEPENDS= zip:${PORTSDIR}/archivers/zip -USES= zip:infozip gecko:firefox,29 +USES= zip:infozip gecko:firefox,30 USE_XPI= firefox linux-firefox NO_ARCH= yes diff --git a/www/firefox-i18n/distinfo b/www/firefox-i18n/distinfo index 2c33b60cfb34..9497c4a6374e 100644 --- a/www/firefox-i18n/distinfo +++ b/www/firefox-i18n/distinfo @@ -1,176 +1,170 @@ -SHA256 (xpi/firefox-i18n-29.0/ach.xpi) = c6ccf91e05b119f39b0d83905ed143e36187649f62389156803a76318300a299 -SIZE (xpi/firefox-i18n-29.0/ach.xpi) = 373393 -SHA256 (xpi/firefox-i18n-29.0/af.xpi) = adf809368117ba8499a6e2f99b331ab32b62c499ba1174e2fe0918f72819e2b3 -SIZE (xpi/firefox-i18n-29.0/af.xpi) = 367124 -SHA256 (xpi/firefox-i18n-29.0/an.xpi) = a82aa53f398d619cdc203adc4b904b58d7f281550d8f631439c53269fa56a4bd -SIZE (xpi/firefox-i18n-29.0/an.xpi) = 373502 -SHA256 (xpi/firefox-i18n-29.0/ar.xpi) = 9dd29397169946d0ea425483c2c3c60f67d8dbc784b3af302416c36aa0b82cae -SIZE (xpi/firefox-i18n-29.0/ar.xpi) = 396597 -SHA256 (xpi/firefox-i18n-29.0/as.xpi) = 2f3a75d484e415551f9d19fb56c8208d6f65beab8db582b7d62f760f1f2f67f4 -SIZE (xpi/firefox-i18n-29.0/as.xpi) = 415330 -SHA256 (xpi/firefox-i18n-29.0/ast.xpi) = f232691daac61375b54312e6ef04cf4edb1270bc569694516d65c9a07f14f033 -SIZE (xpi/firefox-i18n-29.0/ast.xpi) = 324861 -SHA256 (xpi/firefox-i18n-29.0/be.xpi) = 46d25d6aef317349a915d99ee46325ae4de2947dbfd774343c5093f46b5ce098 -SIZE (xpi/firefox-i18n-29.0/be.xpi) = 340365 -SHA256 (xpi/firefox-i18n-29.0/bg.xpi) = a13eaeda2a8e664cb6849b5073b7da6bbf524b1038d40bda6a2b1c61314e6c07 -SIZE (xpi/firefox-i18n-29.0/bg.xpi) = 400750 -SHA256 (xpi/firefox-i18n-29.0/bn-BD.xpi) = be518dbeff0b3e15b28a196bd31c314b67b0c0116ae20c910b93b3a4b27f67d0 -SIZE (xpi/firefox-i18n-29.0/bn-BD.xpi) = 426365 -SHA256 (xpi/firefox-i18n-29.0/bn-IN.xpi) = cd49bf2e39e388ac3ae8f74df4e823f6a7a8ceec6da44fba7c0b59f09179a62d -SIZE (xpi/firefox-i18n-29.0/bn-IN.xpi) = 421119 -SHA256 (xpi/firefox-i18n-29.0/br.xpi) = 1ba6c16865e0181fea267e45e7f4c87a8518f615b522aea9fb952ec94b984bd2 -SIZE (xpi/firefox-i18n-29.0/br.xpi) = 363996 -SHA256 (xpi/firefox-i18n-29.0/bs.xpi) = e968879eda41d0f96e35a21936d883c92110d40497e247a6510977c167dab4aa -SIZE (xpi/firefox-i18n-29.0/bs.xpi) = 371223 -SHA256 (xpi/firefox-i18n-29.0/ca.xpi) = 602eaef7df208c516efeb4333a050e3433e0f3baad901fe0ea6278ba6678a576 -SIZE (xpi/firefox-i18n-29.0/ca.xpi) = 370413 -SHA256 (xpi/firefox-i18n-29.0/cs.xpi) = 7c57f8242a5c9c7ebfeb22fe24c4d6906a378c9c95e95de22a8fb8020911d0a2 -SIZE (xpi/firefox-i18n-29.0/cs.xpi) = 364875 -SHA256 (xpi/firefox-i18n-29.0/csb.xpi) = 86ffb57f543e8efca951974214f9f84b036c42ed9cb8d0d90974fa6691f2e0fe -SIZE (xpi/firefox-i18n-29.0/csb.xpi) = 355955 -SHA256 (xpi/firefox-i18n-29.0/cy.xpi) = 7e41a6edfc20ca0ef55f8e2e34740521b87f36f48ee97dfcad69b25be0f235c6 -SIZE (xpi/firefox-i18n-29.0/cy.xpi) = 364982 -SHA256 (xpi/firefox-i18n-29.0/da.xpi) = f31a19e5512cf07b40548c676d5e53003734bb72d1898d8fe5a0d92d6cbab868 -SIZE (xpi/firefox-i18n-29.0/da.xpi) = 355875 -SHA256 (xpi/firefox-i18n-29.0/de.xpi) = f1e7a8b7b71373bd566c35559667a4da73b92fe86aebfd7acb0b24f2b0090895 -SIZE (xpi/firefox-i18n-29.0/de.xpi) = 363985 -SHA256 (xpi/firefox-i18n-29.0/el.xpi) = 28ce4ac766d10aef112451128ffe56119e972bfe9210a052c534945dee829820 -SIZE (xpi/firefox-i18n-29.0/el.xpi) = 397064 -SHA256 (xpi/firefox-i18n-29.0/en-GB.xpi) = 27e1a9560dacc0b8665f0bf4155669a208a934684fafe8907ee88e1c7927cdd2 -SIZE (xpi/firefox-i18n-29.0/en-GB.xpi) = 352794 -SHA256 (xpi/firefox-i18n-29.0/en-US.xpi) = 0b665ea8cbec2a5db2d130827c3aeb8be79133a611b0241ee11198d2a68cfcfe -SIZE (xpi/firefox-i18n-29.0/en-US.xpi) = 352631 -SHA256 (xpi/firefox-i18n-29.0/en-ZA.xpi) = 00c54af05c8428e387409359f403993f1a141da9a30d4925a92be57fdbfb0eb7 -SIZE (xpi/firefox-i18n-29.0/en-ZA.xpi) = 343162 -SHA256 (xpi/firefox-i18n-29.0/eo.xpi) = f9f6f9071d6b8c128495ed95620180756112647eb76d680583957763ec63554d -SIZE (xpi/firefox-i18n-29.0/eo.xpi) = 369151 -SHA256 (xpi/firefox-i18n-29.0/es-AR.xpi) = 269b4e8486ffb176a1a5082203398ed7f7c398ee0a3377888319431f1697a380 -SIZE (xpi/firefox-i18n-29.0/es-AR.xpi) = 367827 -SHA256 (xpi/firefox-i18n-29.0/es-CL.xpi) = 13c7a3fed0b61018161e45dd20ce6130583b68f270d4a71f4a1703be26d7dc46 -SIZE (xpi/firefox-i18n-29.0/es-CL.xpi) = 314748 -SHA256 (xpi/firefox-i18n-29.0/es-ES.xpi) = e50a73028675b28b8f60094731c96b24713178025a491aa24bacb805dd554e71 -SIZE (xpi/firefox-i18n-29.0/es-ES.xpi) = 305433 -SHA256 (xpi/firefox-i18n-29.0/es-MX.xpi) = a1966155e366c8b9eeaa87eb1d6e76a3c187c3bf6701b27b68c21b41627097cf -SIZE (xpi/firefox-i18n-29.0/es-MX.xpi) = 372449 -SHA256 (xpi/firefox-i18n-29.0/et.xpi) = 1091cb9efa635996c0c9458a62aeaf03023bbaf2428b291ef2d0993ed9139609 -SIZE (xpi/firefox-i18n-29.0/et.xpi) = 352878 -SHA256 (xpi/firefox-i18n-29.0/eu.xpi) = a09f19ceb466f2c7a2e46b4a1f2dec3775d9b0d9a670ba04733b2ae7afbcbda9 -SIZE (xpi/firefox-i18n-29.0/eu.xpi) = 369441 -SHA256 (xpi/firefox-i18n-29.0/fa.xpi) = f27dca27d9215deae207b4ca38e7260421d74fd482eb8a1ddc6d6d0e39c1bc36 -SIZE (xpi/firefox-i18n-29.0/fa.xpi) = 409149 -SHA256 (xpi/firefox-i18n-29.0/ff.xpi) = 23be65bdb50c441ea75e5f3ed143160091a70191192dd4405da7f5a2d7335587 -SIZE (xpi/firefox-i18n-29.0/ff.xpi) = 361587 -SHA256 (xpi/firefox-i18n-29.0/fi.xpi) = 1dc290cf22dcfab88dcb7bdb0a2ecaad4be6163ee1bd8af13f4962ed037c1a11 -SIZE (xpi/firefox-i18n-29.0/fi.xpi) = 363340 -SHA256 (xpi/firefox-i18n-29.0/fr.xpi) = ada8b98915422b83aa4c62bf514456a27e9cedc82ddb6377178ce396f10729a3 -SIZE (xpi/firefox-i18n-29.0/fr.xpi) = 376279 -SHA256 (xpi/firefox-i18n-29.0/fy-NL.xpi) = 6a4d8b5ac760d8860aba66c779f302e19955fd5a232c237297dde3974b72cb25 -SIZE (xpi/firefox-i18n-29.0/fy-NL.xpi) = 372388 -SHA256 (xpi/firefox-i18n-29.0/ga-IE.xpi) = 25f92f7562f119c97189290f8e4746223d2db2ddf3fd260e3ce246119bcfb483 -SIZE (xpi/firefox-i18n-29.0/ga-IE.xpi) = 378267 -SHA256 (xpi/firefox-i18n-29.0/gd.xpi) = b6f370e9e0b6c8d7c9840999d185c50dc9832ba15691c6c2c2f61dd099bf4912 -SIZE (xpi/firefox-i18n-29.0/gd.xpi) = 375410 -SHA256 (xpi/firefox-i18n-29.0/gl.xpi) = b9e476f99b13b29fd84189283b9a7641ee41d641c171a4fa3587493bcb329a97 -SIZE (xpi/firefox-i18n-29.0/gl.xpi) = 363693 -SHA256 (xpi/firefox-i18n-29.0/gu-IN.xpi) = 1730b390f911b26f1d5107cdf79e9dedf1a970be7da9de96010ff1e83da3a1b0 -SIZE (xpi/firefox-i18n-29.0/gu-IN.xpi) = 391891 -SHA256 (xpi/firefox-i18n-29.0/he.xpi) = 5c62998721b69b83e63b4ec107a62e08d03d482c84de2fb3fc2c0844ab1f2315 -SIZE (xpi/firefox-i18n-29.0/he.xpi) = 385480 -SHA256 (xpi/firefox-i18n-29.0/hi-IN.xpi) = 19774e11ea7d30fa748f3d1aedce3c642dfcf83d3eacde963acf16ea38960a0a -SIZE (xpi/firefox-i18n-29.0/hi-IN.xpi) = 410179 -SHA256 (xpi/firefox-i18n-29.0/hr.xpi) = 17240437b1e72eac60776cb3a307d60cbd59abd0444eee475fca8396ef52817f -SIZE (xpi/firefox-i18n-29.0/hr.xpi) = 376605 -SHA256 (xpi/firefox-i18n-29.0/hu.xpi) = 518c74f77b1150ee0a17b94cafe09f3b1a84f972bf0fc6912a7ab32f5aedba08 -SIZE (xpi/firefox-i18n-29.0/hu.xpi) = 372533 -SHA256 (xpi/firefox-i18n-29.0/hy-AM.xpi) = 3052a32a950786aa0e540d4b4ae134d43def23141670c3625bcc9c0f35ad22c3 -SIZE (xpi/firefox-i18n-29.0/hy-AM.xpi) = 419572 -SHA256 (xpi/firefox-i18n-29.0/id.xpi) = 9f8d98a8b1546072a3675383252fbef3fd0fa9c4c41c3d3a9e1e50bb19535019 -SIZE (xpi/firefox-i18n-29.0/id.xpi) = 352597 -SHA256 (xpi/firefox-i18n-29.0/is.xpi) = 021226df2158678fecc9d0958b8a9a27a3cd70e584c9f34d0c7fa444870d78ad -SIZE (xpi/firefox-i18n-29.0/is.xpi) = 364694 -SHA256 (xpi/firefox-i18n-29.0/it.xpi) = 80dde52c62e44e3706c3a228f091c1473bd871f3428c8efa0338890310b954f5 -SIZE (xpi/firefox-i18n-29.0/it.xpi) = 304003 -SHA256 (xpi/firefox-i18n-29.0/ja.xpi) = 5f23242ee1cd8045abd7564a095c5ba11bd98283b1530f1e3c29cf5fbce362c4 -SIZE (xpi/firefox-i18n-29.0/ja.xpi) = 405190 -SHA256 (xpi/firefox-i18n-29.0/kk.xpi) = b608322fe2364a15c2f96ed88449dfac1a71621081489677015aba1593eac32a -SIZE (xpi/firefox-i18n-29.0/kk.xpi) = 408438 -SHA256 (xpi/firefox-i18n-29.0/km.xpi) = a86a3d15e836df6f767b7af53ec3cbe9c329716adfacbe14811739c878365d8d -SIZE (xpi/firefox-i18n-29.0/km.xpi) = 438772 -SHA256 (xpi/firefox-i18n-29.0/kn.xpi) = 06bc663cf5bd3c70895ba07133cbe14adf36f08a1c375d8e3a9083ab4cda8981 -SIZE (xpi/firefox-i18n-29.0/kn.xpi) = 421792 -SHA256 (xpi/firefox-i18n-29.0/ko.xpi) = eda45d7394b912213cd1e724cf8b45126c7f60cc15cc7289b11c1abb7112b0e1 -SIZE (xpi/firefox-i18n-29.0/ko.xpi) = 372824 -SHA256 (xpi/firefox-i18n-29.0/ku.xpi) = 6fed426902356d91a149187050e97a88b590064be33a996229e328c9ac2ddb5a -SIZE (xpi/firefox-i18n-29.0/ku.xpi) = 377944 -SHA256 (xpi/firefox-i18n-29.0/lij.xpi) = ffcc04ba6231154b7129225b4f8a62ff81c942940b8d055f38d2c770da5baa46 -SIZE (xpi/firefox-i18n-29.0/lij.xpi) = 353132 -SHA256 (xpi/firefox-i18n-29.0/lt.xpi) = 5f0ab5186966f4ef688d089cc1c02256fd58009023b1a65087243cf47898877d -SIZE (xpi/firefox-i18n-29.0/lt.xpi) = 382910 -SHA256 (xpi/firefox-i18n-29.0/lv.xpi) = 7904ce0bd050e3c7bdc5047af6a8483ec6353d7180bf638f73dc4e86caec41cd -SIZE (xpi/firefox-i18n-29.0/lv.xpi) = 360720 -SHA256 (xpi/firefox-i18n-29.0/mai.xpi) = c900355b017b2d6f823749eb2b59e7138885a106a3f935be9a7e91f50e50380b -SIZE (xpi/firefox-i18n-29.0/mai.xpi) = 410012 -SHA256 (xpi/firefox-i18n-29.0/mk.xpi) = 2beb5a8a7c8d4a824b8901a6cbcaf81297347c4b83b1b55bab8855e0e5e87e6b -SIZE (xpi/firefox-i18n-29.0/mk.xpi) = 411450 -SHA256 (xpi/firefox-i18n-29.0/ml.xpi) = 49995a410b48b0c53ff4994633602f868796c24a28d54bd1260b1f43adc79475 -SIZE (xpi/firefox-i18n-29.0/ml.xpi) = 430792 -SHA256 (xpi/firefox-i18n-29.0/mr.xpi) = 87bd2e7b71bcc21458b5d44dd83d9f2eeb461c53cd74c4a76d4eb2a6cba033c1 -SIZE (xpi/firefox-i18n-29.0/mr.xpi) = 408570 -SHA256 (xpi/firefox-i18n-29.0/ms.xpi) = 07a8b2295a6633ec838a6c8a431faff915b5f92e60d3c36aa92f1d6697bd8a49 -SIZE (xpi/firefox-i18n-29.0/ms.xpi) = 368830 -SHA256 (xpi/firefox-i18n-29.0/nb-NO.xpi) = afea740e93a87b7821fcf7885f8c44d8dcd865d1e2418d05530299ca2471a2d3 -SIZE (xpi/firefox-i18n-29.0/nb-NO.xpi) = 362513 -SHA256 (xpi/firefox-i18n-29.0/nl.xpi) = 36dd807b1b080c45a6b68fae77843d30f4cf7291bd29a61a8cebd509aeb470cd -SIZE (xpi/firefox-i18n-29.0/nl.xpi) = 361308 -SHA256 (xpi/firefox-i18n-29.0/nn-NO.xpi) = 9522236bee6c980595ce05f9320d915a31b272a28a878eeab867329357156a9a -SIZE (xpi/firefox-i18n-29.0/nn-NO.xpi) = 358819 -SHA256 (xpi/firefox-i18n-29.0/or.xpi) = 2b78878aa2c06143887d7f7c1f73f3c2d5c98cba58e06df5d96ecfbf9888e143 -SIZE (xpi/firefox-i18n-29.0/or.xpi) = 423772 -SHA256 (xpi/firefox-i18n-29.0/pa-IN.xpi) = 3a372d31c10dfc267cc381974a365eb4b44b6dd70d3054ac624f84fe3b41801c -SIZE (xpi/firefox-i18n-29.0/pa-IN.xpi) = 401685 -SHA256 (xpi/firefox-i18n-29.0/pl.xpi) = 950ed718076217f4ee11c0a21cdc59005b06757af81a4d5cd028d00dc853c3b0 -SIZE (xpi/firefox-i18n-29.0/pl.xpi) = 354459 -SHA256 (xpi/firefox-i18n-29.0/pt-BR.xpi) = 28d5e2814fa7ac74b9ce44c73b1680d6b2360820f51d373c81fc4fc8304b7a7f -SIZE (xpi/firefox-i18n-29.0/pt-BR.xpi) = 372122 -SHA256 (xpi/firefox-i18n-29.0/pt-PT.xpi) = fd74a1e2243899aae3c39e46a2d101338afa10da731a60f1b94ba6deffa2a9b2 -SIZE (xpi/firefox-i18n-29.0/pt-PT.xpi) = 359723 -SHA256 (xpi/firefox-i18n-29.0/rm.xpi) = 9ed40581c971918ea80b17e21acc8b331519b82ee322c6829e482edda6867914 -SIZE (xpi/firefox-i18n-29.0/rm.xpi) = 362965 -SHA256 (xpi/firefox-i18n-29.0/ro.xpi) = d237497e017ef6764fae81477b1ad6593d6d03c432641e14bc87e88cb1ab30c8 -SIZE (xpi/firefox-i18n-29.0/ro.xpi) = 397540 -SHA256 (xpi/firefox-i18n-29.0/ru.xpi) = 5c58a458ce5aa0cb974bd7c750dd155dd0080385bfe97344bb07ca7070d46f1e -SIZE (xpi/firefox-i18n-29.0/ru.xpi) = 344166 -SHA256 (xpi/firefox-i18n-29.0/si.xpi) = f423bc581a57d4f1e315d3f4e591eee9b0b34b0ad26c7356957684ea80607371 -SIZE (xpi/firefox-i18n-29.0/si.xpi) = 403345 -SHA256 (xpi/firefox-i18n-29.0/sk.xpi) = c6e1d20bb1cead467ef3a4782e48f72fe9d577d2e5bf40aafe0f0700f6d86f88 -SIZE (xpi/firefox-i18n-29.0/sk.xpi) = 375676 -SHA256 (xpi/firefox-i18n-29.0/sl.xpi) = c5b6e6aed27cfa73480b89134786f2a450d4fe0f1879389262f0f6dc9892bcd2 -SIZE (xpi/firefox-i18n-29.0/sl.xpi) = 358502 -SHA256 (xpi/firefox-i18n-29.0/son.xpi) = 482834fa2c49c3bddfb48127d83258c1dde5dfc0cc5fd17fd66304fa65e6dcd8 -SIZE (xpi/firefox-i18n-29.0/son.xpi) = 358441 -SHA256 (xpi/firefox-i18n-29.0/sq.xpi) = f001eece8b1b7fc9eec35084679155802062fedd1aa096c2ba74be8e22682131 -SIZE (xpi/firefox-i18n-29.0/sq.xpi) = 374244 -SHA256 (xpi/firefox-i18n-29.0/sr.xpi) = f590d1a96a5231b4a448ca27bde8ffd2a3721f5c8d628475e4705980013d4c21 -SIZE (xpi/firefox-i18n-29.0/sr.xpi) = 412774 -SHA256 (xpi/firefox-i18n-29.0/sv-SE.xpi) = ccb78f6c29e470b15df6c0b0a1a9186ea6da1e95a01c5acf88d6d5663c0ddd37 -SIZE (xpi/firefox-i18n-29.0/sv-SE.xpi) = 368437 -SHA256 (xpi/firefox-i18n-29.0/ta.xpi) = 3a240719bae5fdd5f1dee8502a573c68d496dbcbb89e40fa2588a8f8cded48d1 -SIZE (xpi/firefox-i18n-29.0/ta.xpi) = 416214 -SHA256 (xpi/firefox-i18n-29.0/te.xpi) = 1a42033323e58bb24a230ccc547498d6b54864e6566ce38f97c8f5bc9dc802b1 -SIZE (xpi/firefox-i18n-29.0/te.xpi) = 429025 -SHA256 (xpi/firefox-i18n-29.0/th.xpi) = 9c91150755449786b400af12067d648f5751e78396bf72f9c604874dcdee5f11 -SIZE (xpi/firefox-i18n-29.0/th.xpi) = 413958 -SHA256 (xpi/firefox-i18n-29.0/tr.xpi) = 49c22b8f7384f83249cd1468e14f9aea657a4196fcf11125bfc44e112b6f93cb -SIZE (xpi/firefox-i18n-29.0/tr.xpi) = 369613 -SHA256 (xpi/firefox-i18n-29.0/uk.xpi) = 2f232cc5a4e4b72e11e4751be8667f5c532952ba5864369e07a9438c25afc317 -SIZE (xpi/firefox-i18n-29.0/uk.xpi) = 399496 -SHA256 (xpi/firefox-i18n-29.0/vi.xpi) = e210ec8c8f985d5c6e31e37e191c35d270c310c647cb6e32cc1bf35e93194348 -SIZE (xpi/firefox-i18n-29.0/vi.xpi) = 386470 -SHA256 (xpi/firefox-i18n-29.0/xh.xpi) = 693c3c04abe48a7bf8e0c13c8192451bb70687581b79da13bf2905499c2150e8 -SIZE (xpi/firefox-i18n-29.0/xh.xpi) = 363925 -SHA256 (xpi/firefox-i18n-29.0/zh-CN.xpi) = fe6b9bb7d2dd6227fb6ea3b5ad7ecca1fb02105f10cecefc232aa9f7bc0c7096 -SIZE (xpi/firefox-i18n-29.0/zh-CN.xpi) = 389326 -SHA256 (xpi/firefox-i18n-29.0/zh-TW.xpi) = 34cf42493ffa140f869b48d6deaa10d43664e7dd7bfea6bd4a979062ef476bc1 -SIZE (xpi/firefox-i18n-29.0/zh-TW.xpi) = 386290 -SHA256 (xpi/firefox-i18n-29.0/zu.xpi) = 0ba903dcf73dcd6255e81eb049c0660eb876caef4c83b5ffbc5e1470a5918bc6 -SIZE (xpi/firefox-i18n-29.0/zu.xpi) = 373428 +SHA256 (xpi/firefox-i18n-30.0/ach.xpi) = f5053187ef0c83bf72bd5c71ab09a7ddc1e63baefb416ac1d6b68ba2314ac701 +SIZE (xpi/firefox-i18n-30.0/ach.xpi) = 375205 +SHA256 (xpi/firefox-i18n-30.0/af.xpi) = 1f39dc94db67d1b0f936a21237d98c25fd452a69636e53c6d7ece6c844307c39 +SIZE (xpi/firefox-i18n-30.0/af.xpi) = 369085 +SHA256 (xpi/firefox-i18n-30.0/ar.xpi) = ec7beaee554067af17a3a62220b8f038f75b618a186d2eb73ec948056765c428 +SIZE (xpi/firefox-i18n-30.0/ar.xpi) = 397913 +SHA256 (xpi/firefox-i18n-30.0/as.xpi) = cf9716f7b62bd6f34bb453420dec17a039199d11197c1920553ab299c496d654 +SIZE (xpi/firefox-i18n-30.0/as.xpi) = 416813 +SHA256 (xpi/firefox-i18n-30.0/ast.xpi) = fd83fe909ecb39803f0f7b43d159f34be70d2975584b4246d3625da72f8de09a +SIZE (xpi/firefox-i18n-30.0/ast.xpi) = 321937 +SHA256 (xpi/firefox-i18n-30.0/be.xpi) = 325f8bddf7131f3e7a4a2daa8c632848ade0557bdfe8f8591898c9266ea6349f +SIZE (xpi/firefox-i18n-30.0/be.xpi) = 341619 +SHA256 (xpi/firefox-i18n-30.0/bg.xpi) = b0603d804c90164d3059b86036e67d3f12491c5b698e51ac03f57c909effc2e6 +SIZE (xpi/firefox-i18n-30.0/bg.xpi) = 406716 +SHA256 (xpi/firefox-i18n-30.0/bn-BD.xpi) = 3e044ca099473c577e8849605d3341ab51bafc939e79713da7cb85193b29be77 +SIZE (xpi/firefox-i18n-30.0/bn-BD.xpi) = 428542 +SHA256 (xpi/firefox-i18n-30.0/bn-IN.xpi) = 9dcb9cff07bf636bedf835bb373fa4bc35260824d9d505c4a09fa1f0a1bf9ce4 +SIZE (xpi/firefox-i18n-30.0/bn-IN.xpi) = 426490 +SHA256 (xpi/firefox-i18n-30.0/br.xpi) = 43c85f1d81bc421104577519cd5bee9aaa3893627fd4540cbb24b2e2275f1a6b +SIZE (xpi/firefox-i18n-30.0/br.xpi) = 365142 +SHA256 (xpi/firefox-i18n-30.0/bs.xpi) = c1efd1ae60586b16e50f61d20ffaf41e836c62e7371e3f2bda8e8e45f39bcd31 +SIZE (xpi/firefox-i18n-30.0/bs.xpi) = 373273 +SHA256 (xpi/firefox-i18n-30.0/ca.xpi) = 5f20854d7168d20f5b595ff415ca50417a2ad5e39f7bbe0f6f67a9eaede2aaf6 +SIZE (xpi/firefox-i18n-30.0/ca.xpi) = 371485 +SHA256 (xpi/firefox-i18n-30.0/cs.xpi) = 3197bcc9e38f2b5720a0ae1aa9ed61ebcde6518e675e0ed98c8d3d0feee4d512 +SIZE (xpi/firefox-i18n-30.0/cs.xpi) = 366052 +SHA256 (xpi/firefox-i18n-30.0/csb.xpi) = 989e01fbdf3516295429d3da58331078c9e41ba79ae31e24f34d9c828fbd9944 +SIZE (xpi/firefox-i18n-30.0/csb.xpi) = 358268 +SHA256 (xpi/firefox-i18n-30.0/cy.xpi) = b2327cac42ebd5880653f7ed02835b3a0b85441a0d514d72518231acc32e5dea +SIZE (xpi/firefox-i18n-30.0/cy.xpi) = 366034 +SHA256 (xpi/firefox-i18n-30.0/da.xpi) = 2a0b1447de518bd3c714dd0fa023ae0f3189d98b6035eeb8e2f87f1a37bf4c1f +SIZE (xpi/firefox-i18n-30.0/da.xpi) = 356771 +SHA256 (xpi/firefox-i18n-30.0/de.xpi) = fefa0eee68d3cae832e9afee0a64271b7dd621c0d14479eec472c28a8bb55f25 +SIZE (xpi/firefox-i18n-30.0/de.xpi) = 366021 +SHA256 (xpi/firefox-i18n-30.0/el.xpi) = b70382f47ff0e0999d4b9ff13e13eabee4ac6771ce1d3560b7fbfd1e6452b76b +SIZE (xpi/firefox-i18n-30.0/el.xpi) = 398962 +SHA256 (xpi/firefox-i18n-30.0/en-GB.xpi) = 4fae63b6e5236ef8f21e411165aa1919bb285fe0bb3905d7daf00c6a3cccd480 +SIZE (xpi/firefox-i18n-30.0/en-GB.xpi) = 353587 +SHA256 (xpi/firefox-i18n-30.0/en-US.xpi) = 73879a12023d35214a85cff0d722652f669dba1e62631e815e7b850dfb403e69 +SIZE (xpi/firefox-i18n-30.0/en-US.xpi) = 353451 +SHA256 (xpi/firefox-i18n-30.0/en-ZA.xpi) = 9750f4362f8304c5665153d008ae3b158249a7cba5bd3a79cef7e822959c4bef +SIZE (xpi/firefox-i18n-30.0/en-ZA.xpi) = 345015 +SHA256 (xpi/firefox-i18n-30.0/eo.xpi) = 0f77949f980f8037484f5a3ce2669d732f036772ccecfcb16ced1decc53a9f1b +SIZE (xpi/firefox-i18n-30.0/eo.xpi) = 370141 +SHA256 (xpi/firefox-i18n-30.0/es-AR.xpi) = 263d318d53cd9e64c0a3f4122fa399f4fcbf528c7151dce352f4084e1784f2cd +SIZE (xpi/firefox-i18n-30.0/es-AR.xpi) = 368587 +SHA256 (xpi/firefox-i18n-30.0/es-CL.xpi) = 7bfbb5aa80e61082736383b01190d97c3b066f97c79cef479c97322695267f7f +SIZE (xpi/firefox-i18n-30.0/es-CL.xpi) = 315322 +SHA256 (xpi/firefox-i18n-30.0/es-ES.xpi) = a42b61243fc1596f5352daf6bf27ecf27c0eb70d960bfcfb401c7dc9b22b0bad +SIZE (xpi/firefox-i18n-30.0/es-ES.xpi) = 306415 +SHA256 (xpi/firefox-i18n-30.0/es-MX.xpi) = 077a9c0741e8c6dfe560c11503700713fa46c31f26436d7ab482ccda93a9b6bb +SIZE (xpi/firefox-i18n-30.0/es-MX.xpi) = 373549 +SHA256 (xpi/firefox-i18n-30.0/et.xpi) = b3405694ba783f2b4724ee77438d43c5bb9fa9c99b062179da83359b75def75e +SIZE (xpi/firefox-i18n-30.0/et.xpi) = 353707 +SHA256 (xpi/firefox-i18n-30.0/eu.xpi) = 470e1e96f57a1d34b657446a226305729ac9e4cfee102eba603c252c9a176596 +SIZE (xpi/firefox-i18n-30.0/eu.xpi) = 369555 +SHA256 (xpi/firefox-i18n-30.0/fa.xpi) = 72aee9607616834fb9bf7fa3dda0fd468d2bdcc973cdfa6ba49debe05a35f90c +SIZE (xpi/firefox-i18n-30.0/fa.xpi) = 410903 +SHA256 (xpi/firefox-i18n-30.0/ff.xpi) = b261a6ddcd9b077df4e89603ffcb6fe6568c5a2125fc6a8750bbc61994d59a2d +SIZE (xpi/firefox-i18n-30.0/ff.xpi) = 370692 +SHA256 (xpi/firefox-i18n-30.0/fi.xpi) = e99f6bce22b9e7ce27233d37d1d5c5e465d5737118c2cacfee132aae88de1891 +SIZE (xpi/firefox-i18n-30.0/fi.xpi) = 364259 +SHA256 (xpi/firefox-i18n-30.0/fr.xpi) = cde387fb6d2ac70793a387b79b1193f1578d4e09b7e1b551edcda0176c853981 +SIZE (xpi/firefox-i18n-30.0/fr.xpi) = 377371 +SHA256 (xpi/firefox-i18n-30.0/fy-NL.xpi) = 298865967f4c80a3521c01a4e22e9c7cdda1edbb85755f4e9fc69fcfe73e8e8a +SIZE (xpi/firefox-i18n-30.0/fy-NL.xpi) = 373136 +SHA256 (xpi/firefox-i18n-30.0/ga-IE.xpi) = 8351b8f50482fc719081dca1cd848aaed271c15922b8e2939ef335c4eb62ffb7 +SIZE (xpi/firefox-i18n-30.0/ga-IE.xpi) = 381256 +SHA256 (xpi/firefox-i18n-30.0/gd.xpi) = 24efa269698b83eeab9ed138ff0c239fd53e0c8c89e07864ce0c1017e586b947 +SIZE (xpi/firefox-i18n-30.0/gd.xpi) = 378207 +SHA256 (xpi/firefox-i18n-30.0/gl.xpi) = 860b3cbe4fa38ed7607ec6416286a1210d27a63ef48d3c3dcd25d45e0fda9569 +SIZE (xpi/firefox-i18n-30.0/gl.xpi) = 365569 +SHA256 (xpi/firefox-i18n-30.0/gu-IN.xpi) = 3d5e6dc2b975001df42725dabbdb513999438a75427284dd9b3235ea6b46d3ae +SIZE (xpi/firefox-i18n-30.0/gu-IN.xpi) = 394097 +SHA256 (xpi/firefox-i18n-30.0/he.xpi) = 43ad9bb68e7f2f9c7934ec411725e5b9883f8ebabad5f7e716b6e39b420e3a45 +SIZE (xpi/firefox-i18n-30.0/he.xpi) = 387621 +SHA256 (xpi/firefox-i18n-30.0/hi-IN.xpi) = 053751b323b6faeef472833b24494ddbe018bd9cd917b19e096184972bb4d19a +SIZE (xpi/firefox-i18n-30.0/hi-IN.xpi) = 412281 +SHA256 (xpi/firefox-i18n-30.0/hr.xpi) = 9ffdb635b3ed103ab3f434d8472f4d66fabc29326d8dd53431b854e6c7a92ad6 +SIZE (xpi/firefox-i18n-30.0/hr.xpi) = 377103 +SHA256 (xpi/firefox-i18n-30.0/hu.xpi) = 4eac70ba043bcc51a23beb322ef1cc55267b8d6eec339bc2479c38238c4cc706 +SIZE (xpi/firefox-i18n-30.0/hu.xpi) = 373672 +SHA256 (xpi/firefox-i18n-30.0/hy-AM.xpi) = 1584743623016ef2c922b3d1d861880e1c2ba8864836089ed173d37bb0f59a78 +SIZE (xpi/firefox-i18n-30.0/hy-AM.xpi) = 420567 +SHA256 (xpi/firefox-i18n-30.0/id.xpi) = 6b9331cab4a2ebc9b23d44ba02c5f8262cec1733e22f80eaba2b194dffa34521 +SIZE (xpi/firefox-i18n-30.0/id.xpi) = 353458 +SHA256 (xpi/firefox-i18n-30.0/is.xpi) = 58112df3ea4cc57b99d002f19ac1bf414b17b6c1d1941c7b5806f0f524fc8b9f +SIZE (xpi/firefox-i18n-30.0/is.xpi) = 365850 +SHA256 (xpi/firefox-i18n-30.0/it.xpi) = d84b4cf65fbd1a23c2683346887da15334f48c64381998aa7d5422e303b0656e +SIZE (xpi/firefox-i18n-30.0/it.xpi) = 304978 +SHA256 (xpi/firefox-i18n-30.0/ja.xpi) = 94e0b3d7535ca00cb7229cd7c20fd0760b51bec25f0ccd93e3a1797a8ae94c7a +SIZE (xpi/firefox-i18n-30.0/ja.xpi) = 405379 +SHA256 (xpi/firefox-i18n-30.0/kk.xpi) = 87a73e136e2ebfebc5cbd92d7b20e16a065eef04df9b6050afd29de83e1a6785 +SIZE (xpi/firefox-i18n-30.0/kk.xpi) = 409876 +SHA256 (xpi/firefox-i18n-30.0/km.xpi) = 0979630969fa1c4c40ef5ea4e2a17df39e452cade2d0ccdda10d55b756ec5c70 +SIZE (xpi/firefox-i18n-30.0/km.xpi) = 440407 +SHA256 (xpi/firefox-i18n-30.0/kn.xpi) = feace52a5744fd754b807c84eac24319224781de30ccd295ba8442fb724620de +SIZE (xpi/firefox-i18n-30.0/kn.xpi) = 423620 +SHA256 (xpi/firefox-i18n-30.0/ko.xpi) = 2e49e1e6cffb892ea14089a6b49bdfa21de49fc60eb4c13cfe13cf613792d4b4 +SIZE (xpi/firefox-i18n-30.0/ko.xpi) = 374829 +SHA256 (xpi/firefox-i18n-30.0/ku.xpi) = 06e1c16dcd80db781fc734ecb41445e07f5fb3a4ae895c71a50fe7dc409ddc8b +SIZE (xpi/firefox-i18n-30.0/ku.xpi) = 379930 +SHA256 (xpi/firefox-i18n-30.0/lij.xpi) = 86e1b4ba7acef11d4bbb211679bf8f810e8bdf466cc22aa670cda79fad2055e7 +SIZE (xpi/firefox-i18n-30.0/lij.xpi) = 356150 +SHA256 (xpi/firefox-i18n-30.0/lt.xpi) = d51545cfec7b8b26724f73e80cc8f9db1b1ba502b6668f01983013a69362fbd1 +SIZE (xpi/firefox-i18n-30.0/lt.xpi) = 383890 +SHA256 (xpi/firefox-i18n-30.0/lv.xpi) = 0d51417b425a2136d33701bda3eb4f510f8db4e8e3a47f59ac9438771eced133 +SIZE (xpi/firefox-i18n-30.0/lv.xpi) = 359059 +SHA256 (xpi/firefox-i18n-30.0/mai.xpi) = a2f3563cfb10731fd7a20e2d3817daeb6273d46e7f610786719274fa4c9de053 +SIZE (xpi/firefox-i18n-30.0/mai.xpi) = 412127 +SHA256 (xpi/firefox-i18n-30.0/mk.xpi) = 8c123ce0d0829adc001fb01714303733e21cade4287a388ed0a5195a89918504 +SIZE (xpi/firefox-i18n-30.0/mk.xpi) = 413366 +SHA256 (xpi/firefox-i18n-30.0/ml.xpi) = 8d877768025f6138a880f2d921d4386181b737a423a35367063794b608728f56 +SIZE (xpi/firefox-i18n-30.0/ml.xpi) = 432785 +SHA256 (xpi/firefox-i18n-30.0/mr.xpi) = 5e72c1a4722333b9aad812e172b781bea624d8a0ec0aeec5b52f5729e2df3da7 +SIZE (xpi/firefox-i18n-30.0/mr.xpi) = 410579 +SHA256 (xpi/firefox-i18n-30.0/nb-NO.xpi) = 6e8dbff214a16125ff907669b269b7b2e0b3a83de4cff6a2fe39ebd38f59f49d +SIZE (xpi/firefox-i18n-30.0/nb-NO.xpi) = 363801 +SHA256 (xpi/firefox-i18n-30.0/nl.xpi) = bb2988b3089fbb3f617d5dc4da317d6bda6a16f3c812dd01d593ad0d9595d948 +SIZE (xpi/firefox-i18n-30.0/nl.xpi) = 362382 +SHA256 (xpi/firefox-i18n-30.0/nn-NO.xpi) = e9d3e938083fdafb1010e962302e34300eb9c599b9bfe5de6daed0e85207c00b +SIZE (xpi/firefox-i18n-30.0/nn-NO.xpi) = 360851 +SHA256 (xpi/firefox-i18n-30.0/or.xpi) = fdff4fb0c596aa26a1bf53aabbba9f536194616b9914b3fe31dada0377f937a5 +SIZE (xpi/firefox-i18n-30.0/or.xpi) = 428965 +SHA256 (xpi/firefox-i18n-30.0/pa-IN.xpi) = d2e5cd1c396bdfe4ebac57ca90d20dd59d7c6c31c51d92c0752adedc4dd0821a +SIZE (xpi/firefox-i18n-30.0/pa-IN.xpi) = 406759 +SHA256 (xpi/firefox-i18n-30.0/pl.xpi) = 7b0fcbfbdbab445fb1be5b3e6a787a706f26ca72bfe811e2a1cf39b7d9fc6a4a +SIZE (xpi/firefox-i18n-30.0/pl.xpi) = 353581 +SHA256 (xpi/firefox-i18n-30.0/pt-BR.xpi) = 53c41242f436d3814ffb1bea6b00d0bf9b758bd08120d9a8444d11271e8530de +SIZE (xpi/firefox-i18n-30.0/pt-BR.xpi) = 373136 +SHA256 (xpi/firefox-i18n-30.0/pt-PT.xpi) = 9aef188d9a9f55f68db712880ce464b95be7b064b6fdc2eb2fc09953261a3996 +SIZE (xpi/firefox-i18n-30.0/pt-PT.xpi) = 360707 +SHA256 (xpi/firefox-i18n-30.0/rm.xpi) = c6f7d1006cf56eedcfbceb25f66a1eaa957d6f40d4715ba92b74d1ca35b62b78 +SIZE (xpi/firefox-i18n-30.0/rm.xpi) = 370536 +SHA256 (xpi/firefox-i18n-30.0/ro.xpi) = 9293bd081bd00590962f9c51a838f1a3304e0f1db00be0039c47e782350b16f6 +SIZE (xpi/firefox-i18n-30.0/ro.xpi) = 399527 +SHA256 (xpi/firefox-i18n-30.0/ru.xpi) = 0fec86cfbb14f2e2962b94f81aeaa2925cb26af912dd8fbec15f71f7891c8ba8 +SIZE (xpi/firefox-i18n-30.0/ru.xpi) = 345465 +SHA256 (xpi/firefox-i18n-30.0/si.xpi) = fb2e952ddbbf870665450a8632b276cbb62e37dbeb29130513e3d66dab872060 +SIZE (xpi/firefox-i18n-30.0/si.xpi) = 405107 +SHA256 (xpi/firefox-i18n-30.0/sk.xpi) = 6397df9319a6df628445255085b53c14bb1a3200d9c735de15f3fe0b2d7eb2e1 +SIZE (xpi/firefox-i18n-30.0/sk.xpi) = 376836 +SHA256 (xpi/firefox-i18n-30.0/sl.xpi) = 7704430faf5c7e70a37a3dd6a0e22904c9c205f34e624006e939eda68b09a64a +SIZE (xpi/firefox-i18n-30.0/sl.xpi) = 358783 +SHA256 (xpi/firefox-i18n-30.0/son.xpi) = 6817b48334da873f9a177c2d02456b4608cc6e97f3e1f1ff2b257f4420282e91 +SIZE (xpi/firefox-i18n-30.0/son.xpi) = 360519 +SHA256 (xpi/firefox-i18n-30.0/sq.xpi) = 8c0c9ea9c1b3a004bd95284ccaaaf33274056dcbed42e46b061f66785e115f4a +SIZE (xpi/firefox-i18n-30.0/sq.xpi) = 375451 +SHA256 (xpi/firefox-i18n-30.0/sr.xpi) = 6ec3951f21f71b6623172e5d55375e6ea286fa771480bb34d57be370a6bdf027 +SIZE (xpi/firefox-i18n-30.0/sr.xpi) = 414412 +SHA256 (xpi/firefox-i18n-30.0/sv-SE.xpi) = 881d929aad2ae887652840256db032c6f82459172608faf4360981909ad64205 +SIZE (xpi/firefox-i18n-30.0/sv-SE.xpi) = 369471 +SHA256 (xpi/firefox-i18n-30.0/ta.xpi) = 99695ce5a90a717ce71bc0ecfd4c2a0423190e0b1ed6e0dba20f88c7cb103d13 +SIZE (xpi/firefox-i18n-30.0/ta.xpi) = 421293 +SHA256 (xpi/firefox-i18n-30.0/te.xpi) = cb6895dc2722b1b896be519ed92724f691392d47fd4931978cb07b28ae272856 +SIZE (xpi/firefox-i18n-30.0/te.xpi) = 431168 +SHA256 (xpi/firefox-i18n-30.0/th.xpi) = 19b4b26bb6680d4e6d4012bd368436cf4b189bf76c20dad775a241a9e3ebfcd4 +SIZE (xpi/firefox-i18n-30.0/th.xpi) = 415959 +SHA256 (xpi/firefox-i18n-30.0/tr.xpi) = 11c3dc80161c8381aab9ca174b6067ae72b0ef3ebcda918fb6cbb4ed9477ae8f +SIZE (xpi/firefox-i18n-30.0/tr.xpi) = 370698 +SHA256 (xpi/firefox-i18n-30.0/uk.xpi) = ec8f6faf6c271f7fa7c06113134cb7f8c5e77466cfe1f337e1a875614ba6a950 +SIZE (xpi/firefox-i18n-30.0/uk.xpi) = 401695 +SHA256 (xpi/firefox-i18n-30.0/vi.xpi) = 26be5d152903c759092fa998806dd06aff400aa240f994cf043676b2c9f01f32 +SIZE (xpi/firefox-i18n-30.0/vi.xpi) = 388346 +SHA256 (xpi/firefox-i18n-30.0/zh-CN.xpi) = 6c145b57901063e2edde3d9fed91e5fa6fee9eba6a2b1d6ae539c47b7ecd1d40 +SIZE (xpi/firefox-i18n-30.0/zh-CN.xpi) = 390679 +SHA256 (xpi/firefox-i18n-30.0/zh-TW.xpi) = f9adbf394304da88af89a100840f08a15cc5cdd1dfe0604f3748d360beacac3e +SIZE (xpi/firefox-i18n-30.0/zh-TW.xpi) = 387316 +SHA256 (xpi/firefox-i18n-30.0/zu.xpi) = 2f1d7b072fe28cebd49de1ca825db5cad33be27290c183df772a27426cad60af +SIZE (xpi/firefox-i18n-30.0/zu.xpi) = 375213 diff --git a/www/firefox/Makefile b/www/firefox/Makefile index 2e357ffd91ac..254c9901212e 100644 --- a/www/firefox/Makefile +++ b/www/firefox/Makefile @@ -2,12 +2,11 @@ # $FreeBSD$ PORTNAME= firefox -DISTVERSION= 29.0 -PORTREVISION= 1 +DISTVERSION= 30.0 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ - https://ftp.mozilla.org/pub/mozilla.org/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source/ + https://ftp.mozilla.org/pub/mozilla.org/${PORTNAME}/candidates/${DISTVERSION}-candidates/build2/source/ DISTNAME= ${PORTNAME}-${DISTVERSION}.source MAINTAINER= gecko@FreeBSD.org @@ -21,7 +20,7 @@ BUILD_DEPENDS= nspr>=4.10.3:${PORTSDIR}/devel/nspr \ libvorbis>=1.3.4:${PORTSDIR}/audio/libvorbis \ opus>=1.1:${PORTSDIR}/audio/opus \ libvpx>=1.3.0:${PORTSDIR}/multimedia/libvpx \ - sqlite3>=3.8.2:${PORTSDIR}/databases/sqlite3 \ + sqlite3>=3.8.3.1:${PORTSDIR}/databases/sqlite3 \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3 \ v4l_compat>0:${PORTSDIR}/multimedia/v4l_compat \ zip:${PORTSDIR}/archivers/zip \ @@ -40,13 +39,12 @@ USE_MOZILLA= -cairo MOZILLA_NAME= Firefox WANT_GNOME= yes -USE_QT4= # empty +USE_QT5= # empty QT_NONSTANDARD= yes ALL_TARGET= default GNU_CONFIGURE= yes -USE_BZIP2= yes USE_GL= gl -USES= dos2unix +USES= dos2unix tar:bzip2 DOS2UNIX_FILES= media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp NO_MOZPKGINSTALL=yes @@ -56,7 +54,6 @@ MOZ_OPTIONS= --program-transform-name='s/firefox/${MOZILLA}/' \ --enable-application=browser \ --enable-official-branding -NO_STAGE= yes .include "${.CURDIR}/../../www/firefox/Makefile.options" .include <bsd.port.pre.mk> @@ -102,14 +99,9 @@ pre-configure: (cd ${WRKSRC} && ${AUTOCONF}) (cd ${WRKSRC}/js/src/ && ${AUTOCONF}) -port-pre-install: - ${ECHO_CMD} 'share/applications/${MOZILLA}.desktop' >> ${PLISTF} - ${ECHO_CMD} 'share/pixmaps/${FIREFOX_ICON}' >> ${PLISTF} - post-install: - ${MKDIR} ${PREFIX}/share/pixmaps - ${INSTALL_DATA} ${WRKDIR}/${MOZILLA}.desktop ${PREFIX}/share/applications/ - ${LN} -sf ${FIREFOX_ICON_SRC} ${PREFIX}/share/pixmaps/${FIREFOX_ICON} - @${CAT} ${PKGMESSAGE} + ${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps + ${INSTALL_DATA} ${WRKDIR}/${MOZILLA}.desktop ${STAGEDIR}${PREFIX}/share/applications/ + ${LN} -sf ${FIREFOX_ICON_SRC} ${STAGEDIR}${PREFIX}/share/pixmaps/${FIREFOX_ICON} .include <bsd.port.post.mk> diff --git a/www/firefox/distinfo b/www/firefox/distinfo index ba0c27ea77cd..1170517eb1b6 100644 --- a/www/firefox/distinfo +++ b/www/firefox/distinfo @@ -1,2 +1,2 @@ -SHA256 (firefox-29.0.source.tar.bz2) = 64402a1f1359f3ea30767a94977ae823ac25b39c6d54f9fe6db444ed127db892 -SIZE (firefox-29.0.source.tar.bz2) = 143163777 +SHA256 (firefox-30.0.source.tar.bz2) = 1e95740a8cf7095e210fb6a2313c4d0fba4fdf44ee7c327d01f202638403c22c +SIZE (firefox-30.0.source.tar.bz2) = 143171952 diff --git a/www/firefox/files/patch-bug1013675 b/www/firefox/files/patch-bug1013675 new file mode 100644 index 000000000000..eac435acf3d0 --- /dev/null +++ b/www/firefox/files/patch-bug1013675 @@ -0,0 +1,88 @@ +diff --git xpcom/base/nsDebugImpl.cpp xpcom/base/nsDebugImpl.cpp +index 13a286f..293bd73 100644 +--- xpcom/base/nsDebugImpl.cpp ++++ xpcom/base/nsDebugImpl.cpp +@@ -45,12 +45,43 @@ + #endif + #endif + +-#if defined(XP_MACOSX) ++#if defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) + #include <stdbool.h> + #include <unistd.h> ++#include <sys/param.h> + #include <sys/sysctl.h> + #endif + ++#if defined(__OpenBSD__) ++#include <sys/proc.h> ++#endif ++ ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include <sys/user.h> ++#endif ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(XP_MACOSX) ++#define KP_FLAGS kp_proc.p_flag ++#elif defined(__DragonFly__) ++#define KP_FLAGS kp_flags ++#elif defined(__FreeBSD__) ++#define KP_FLAGS ki_flag ++#elif defined(__OpenBSD__) && !defined(_P_TRACED) ++#define KP_FLAGS p_psflags ++#define P_TRACED PS_TRACED ++#else ++#define KP_FLAGS p_flag ++#endif ++ + #include "mozilla/mozalloc_abort.h" + + static void +@@ -144,16 +175,22 @@ nsDebugImpl::GetIsDebuggerAttached(bool* aResult) + + #if defined(XP_WIN) + *aResult = ::IsDebuggerPresent(); +-#elif defined(XP_MACOSX) ++#elif defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) + // Specify the info we're looking for +- int mib[4]; +- mib[0] = CTL_KERN; +- mib[1] = KERN_PROC; +- mib[2] = KERN_PROC_PID; +- mib[3] = getpid(); ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; + size_t mibSize = sizeof(mib) / sizeof(int); + +- struct kinfo_proc info; ++ KINFO_PROC info; + size_t infoSize = sizeof(info); + memset(&info, 0, infoSize); + +@@ -163,7 +200,7 @@ nsDebugImpl::GetIsDebuggerAttached(bool* aResult) + return NS_OK; + } + +- if (info.kp_proc.p_flag & P_TRACED) { ++ if (info.KP_FLAGS & P_TRACED) { + *aResult = true; + } + #endif diff --git a/www/firefox/files/patch-bug1013882 b/www/firefox/files/patch-bug1013882 new file mode 100644 index 000000000000..14b1e81df5b1 --- /dev/null +++ b/www/firefox/files/patch-bug1013882 @@ -0,0 +1,14 @@ +--- browser/installer/package-manifest.in~ ++++ browser/installer/package-manifest.in +@@ -573,11 +573,6 @@ + @BINPATH@/components/MozKeyboard.js + @BINPATH@/components/InputMethod.manifest + +-#ifdef MOZ_DEBUG +-@BINPATH@/components/TestInterfaceJS.js +-@BINPATH@/components/TestInterfaceJS.manifest +-#endif +- + ; Modules + @BINPATH@/browser/modules/* + @BINPATH@/modules/* diff --git a/www/firefox/files/patch-bug1015547 b/www/firefox/files/patch-bug1015547 new file mode 100644 index 000000000000..ecb488c36e7f --- /dev/null +++ b/www/firefox/files/patch-bug1015547 @@ -0,0 +1,95 @@ +diff --git configure.in configure.in +index 7bed45f..053de17 100644 +--- configure.in ++++ configure.in +@@ -2950,7 +2950,7 @@ dnl Checks for library functions. + dnl ======================================================== + AC_PROG_GCC_TRADITIONAL + AC_FUNC_MEMCMP +-AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize localtime_r) ++AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize localtime_r arc4random arc4random_buf) + + dnl check for clock_gettime(), the CLOCK_MONOTONIC clock + AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), +diff --git xpcom/base/nsUUIDGenerator.cpp xpcom/base/nsUUIDGenerator.cpp +index 0687344..ca3ff8b 100644 +--- xpcom/base/nsUUIDGenerator.cpp ++++ xpcom/base/nsUUIDGenerator.cpp +@@ -15,6 +15,10 @@ + + #include "nsUUIDGenerator.h" + ++#ifdef ANDROID ++extern "C" NS_EXPORT void arc4random_buf(void *, size_t); ++#endif ++ + using namespace mozilla; + + NS_IMPL_ISUPPORTS1(nsUUIDGenerator, nsIUUIDGenerator) +@@ -34,7 +38,7 @@ nsUUIDGenerator::Init() + // We're a service, so we're guaranteed that Init() is not going + // to be reentered while we're inside Init(). + +-#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(ANDROID) ++#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(HAVE_ARC4RANDOM) + /* initialize random number generator using NSPR random noise */ + unsigned int seed; + +@@ -67,7 +71,7 @@ nsUUIDGenerator::Init() + return NS_ERROR_FAILURE; + #endif + +-#endif /* non XP_WIN and non XP_MACOSX */ ++#endif /* non XP_WIN and non XP_MACOSX and non ARC4RANDOM */ + + return NS_OK; + } +@@ -114,13 +118,16 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + * back to it; instead, we use the value returned when we called + * initstate, since older glibc's have broken setstate() return values + */ +-#ifndef ANDROID ++#ifndef HAVE_ARC4RANDOM + setstate(mState); + #endif + ++#ifdef HAVE_ARC4RANDOM_BUF ++ arc4random_buf(id, sizeof(nsID)); ++#else /* HAVE_ARC4RANDOM_BUF */ + size_t bytesLeft = sizeof(nsID); + while (bytesLeft > 0) { +-#ifdef ANDROID ++#ifdef HAVE_ARC4RANDOM + long rval = arc4random(); + const size_t mRBytes = 4; + #else +@@ -141,6 +148,7 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + + bytesLeft -= toWrite; + } ++#endif /* HAVE_ARC4RANDOM_BUF */ + + /* Put in the version */ + id->m2 &= 0x0fff; +@@ -150,7 +158,7 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + id->m3[0] &= 0x3f; + id->m3[0] |= 0x80; + +-#ifndef ANDROID ++#ifndef HAVE_ARC4RANDOM + /* Restore the previous RNG state */ + setstate(mSavedState); + #endif +diff --git xpcom/base/nsUUIDGenerator.h xpcom/base/nsUUIDGenerator.h +index 6a24212..68ed6f2 100644 +--- xpcom/base/nsUUIDGenerator.h ++++ xpcom/base/nsUUIDGenerator.h +@@ -27,7 +27,7 @@ private: + protected: + + mozilla::Mutex mLock; +-#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(ANDROID) ++#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(HAVE_ARC4RANDOM) + char mState[128]; + char *mSavedState; + uint8_t mRBytes; diff --git a/www/firefox/files/patch-bug783463 b/www/firefox/files/patch-bug783463 deleted file mode 100644 index 3ae6d51262e4..000000000000 --- a/www/firefox/files/patch-bug783463 +++ /dev/null @@ -1,11 +0,0 @@ ---- gfx/skia/moz.build~ -+++ gfx/skia/moz.build -@@ -190,7 +190,7 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt - 'SkFontHost_FreeType_common.cpp', - 'SkOSFile.cpp', - ] -- if CONFIG['OS_TARGET'] == 'Linux': -+ if CONFIG['MOZ_X11'] == 1 or CONFIG['OS_TARGET'] == 'Linux': - EXPORTS.skia += [ - 'include/ports/SkTypeface_cairo.h', - ] diff --git a/www/firefox/files/patch-bug806917 b/www/firefox/files/patch-bug806917 deleted file mode 100644 index ca6d5302613b..000000000000 --- a/www/firefox/files/patch-bug806917 +++ /dev/null @@ -1,1999 +0,0 @@ -commit cb40a26 -Author: Alessandro Decina <alessandro.d@gmail.com> -Date: Fri Jan 03 08:16:54 2014 -0800 - - Bug 806917 - support GStreamer 1.0 ---- - configure.in | 66 ++- - content/media/gstreamer/GStreamerAllocator.cpp | 197 +++++++ - content/media/gstreamer/GStreamerAllocator.h | 25 + - content/media/gstreamer/GStreamerFormatHelper.cpp | 13 +- - content/media/gstreamer/GStreamerFunctionList.h | 93 +++- - content/media/gstreamer/GStreamerLoader.cpp | 48 +- - content/media/gstreamer/GStreamerLoader.h | 8 + - content/media/gstreamer/GStreamerReader-0.10.cpp | 200 +++++++ - content/media/gstreamer/GStreamerReader.cpp | 632 ++++++++++++++-------- - content/media/gstreamer/GStreamerReader.h | 42 +- - content/media/gstreamer/moz.build | 11 +- - content/media/test/manifest.js | 6 +- - 12 files changed, 1057 insertions(+), 284 deletions(-) - -diff --git configure.in configure.in -index 9776b8d..0b1698d 100644 ---- configure.in -+++ configure.in -@@ -3988,6 +3988,7 @@ MOZ_SAMPLE_TYPE_FLOAT32= - MOZ_SAMPLE_TYPE_S16= - MOZ_OPUS=1 - MOZ_WEBM=1 -+MOZ_GSTREAMER= - MOZ_DIRECTSHOW= - MOZ_WMF= - MOZ_FMP4= -@@ -5634,44 +5635,61 @@ WINNT|Darwin|Android) - ;; - *) - MOZ_GSTREAMER=1 -+ GST_API_VERSION=0.10 - ;; - esac - --MOZ_ARG_ENABLE_BOOL(gstreamer, --[ --enable-gstreamer Enable GStreamer support], --MOZ_GSTREAMER=1, --MOZ_GSTREAMER=) -- --if test "$MOZ_GSTREAMER"; then -- # API version, eg 0.10, 1.0 etc -+MOZ_ARG_ENABLE_STRING(gstreamer, -+[ --enable-gstreamer[=0.10] Enable GStreamer support], -+[ MOZ_GSTREAMER=1 -+ # API version, eg 0.10, 1.0 etc -+ if test -z "$enableval" -o "$enableval" = "yes"; then - GST_API_VERSION=0.10 -+ elif test "$enableval" = "no"; then -+ MOZ_GSTREAMER= -+ else -+ GST_API_VERSION=$enableval -+ fi], -+) -+ -+if test -n "$MOZ_GSTREAMER"; then - # core/base release number -- GST_VERSION=0.10.25 -+ if test "$GST_API_VERSION" = "1.0"; then -+ GST_VERSION=1.0 -+ else -+ GST_VERSION=0.10.25 -+ fi -+ - PKG_CHECK_MODULES(GSTREAMER, - gstreamer-$GST_API_VERSION >= $GST_VERSION - gstreamer-app-$GST_API_VERSION -- gstreamer-plugins-base-$GST_API_VERSION, , -- AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer])) -- if test -n "$GSTREAMER_LIBS"; then -- _SAVE_LDFLAGS=$LDFLAGS -- LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION" -- AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=) -- if test -n "$_HAVE_LIBGSTVIDEO" ; then -- GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION" -- else -- AC_MSG_ERROR([gstreamer-plugins-base found, but no libgstvideo. Something has gone terribly wrong. Try reinstalling gstreamer-plugins-base; failing that, disable the gstreamer backend with --disable-gstreamer.]) -- fi -- LDFLAGS=$_SAVE_LDFLAGS -+ gstreamer-plugins-base-$GST_API_VERSION, -+ [_HAVE_GSTREAMER=1], -+ [_HAVE_GSTREAMER=]) -+ if test -z "$_HAVE_GSTREAMER"; then -+ AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer]) -+ fi -+ -+ _SAVE_LDFLAGS=$LDFLAGS -+ LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION" -+ AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=) -+ if test -n "$_HAVE_LIBGSTVIDEO" ; then -+ GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION" - else -- AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer]) -+ AC_MSG_ERROR([gstreamer-plugins-base found, but no libgstvideo. Something has gone terribly wrong. Try reinstalling gstreamer-plugins-base; failing that, disable the gstreamer backend with --disable-gstreamer.]) - fi -+ LDFLAGS=$_SAVE_LDFLAGS -+ -+ AC_SUBST(GSTREAMER_CFLAGS) -+ AC_SUBST(GSTREAMER_LIBS) - fi --AC_SUBST(GSTREAMER_CFLAGS) --AC_SUBST(GSTREAMER_LIBS) -+ - AC_SUBST(MOZ_GSTREAMER) -+AC_SUBST(GST_API_VERSION) - - if test -n "$MOZ_GSTREAMER"; then -- AC_DEFINE(MOZ_GSTREAMER) -+ AC_DEFINE(MOZ_GSTREAMER) -+ AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION") - fi - - -diff --git content/media/gstreamer/GStreamerAllocator.cpp content/media/gstreamer/GStreamerAllocator.cpp -new file mode 100644 -index 0000000..69d0385 ---- /dev/null -+++ content/media/gstreamer/GStreamerAllocator.cpp -@@ -0,0 +1,197 @@ -+#ifdef HAVE_CONFIG_H -+#include "config.h" -+#endif -+ -+#include "GStreamerAllocator.h" -+ -+#include <gst/video/video.h> -+#include <gst/video/gstvideometa.h> -+ -+#include "GStreamerLoader.h" -+ -+using namespace mozilla::layers; -+ -+namespace mozilla { -+ -+typedef struct -+{ -+ GstAllocator parent; -+ GStreamerReader *reader; -+} MozGfxMemoryAllocator; -+ -+typedef struct -+{ -+ GstAllocatorClass parent; -+} MozGfxMemoryAllocatorClass; -+ -+typedef struct -+{ -+ GstMemory memory; -+ PlanarYCbCrImage* image; -+ guint8* data; -+} MozGfxMemory; -+ -+typedef struct -+{ -+ GstMeta meta; -+} MozGfxMeta; -+ -+typedef struct -+{ -+ GstVideoBufferPoolClass parent_class; -+} MozGfxBufferPoolClass; -+ -+typedef struct -+{ -+ GstVideoBufferPool pool; -+} MozGfxBufferPool; -+ -+G_DEFINE_TYPE(MozGfxMemoryAllocator, moz_gfx_memory_allocator, GST_TYPE_ALLOCATOR); -+G_DEFINE_TYPE(MozGfxBufferPool, moz_gfx_buffer_pool, GST_TYPE_VIDEO_BUFFER_POOL); -+ -+void -+moz_gfx_memory_reset(MozGfxMemory *mem) -+{ -+ if (mem->image) -+ mem->image->Release(); -+ -+ ImageContainer* container = ((MozGfxMemoryAllocator*) mem->memory.allocator)->reader->GetImageContainer(); -+ mem->image = reinterpret_cast<PlanarYCbCrImage*>(container->CreateImage(ImageFormat::PLANAR_YCBCR).get()); -+ mem->data = mem->image->AllocateAndGetNewBuffer(mem->memory.size); -+} -+ -+static GstMemory* -+moz_gfx_memory_allocator_alloc(GstAllocator* aAllocator, gsize aSize, -+ GstAllocationParams* aParams) -+{ -+ MozGfxMemory* mem = g_slice_new (MozGfxMemory); -+ gsize maxsize = aSize + aParams->prefix + aParams->padding; -+ gst_memory_init(GST_MEMORY_CAST (mem), -+ (GstMemoryFlags)aParams->flags, -+ aAllocator, NULL, maxsize, aParams->align, -+ aParams->prefix, aSize); -+ mem->image = NULL; -+ moz_gfx_memory_reset(mem); -+ -+ return (GstMemory *) mem; -+} -+ -+static void -+moz_gfx_memory_allocator_free (GstAllocator * allocator, GstMemory * gmem) -+{ -+ MozGfxMemory *mem = (MozGfxMemory *) gmem; -+ -+ if (mem->memory.parent) -+ goto sub_mem; -+ -+ if (mem->image) -+ mem->image->Release(); -+ -+sub_mem: -+ g_slice_free (MozGfxMemory, mem); -+} -+ -+static gpointer -+moz_gfx_memory_map (MozGfxMemory * mem, gsize maxsize, GstMapFlags flags) -+{ -+ // check that the allocation didn't fail -+ if (mem->data == nullptr) -+ return nullptr; -+ -+ return mem->data + mem->memory.offset; -+} -+ -+static gboolean -+moz_gfx_memory_unmap (MozGfxMemory * mem) -+{ -+ return TRUE; -+} -+ -+static MozGfxMemory * -+moz_gfx_memory_share (MozGfxMemory * mem, gssize offset, gsize size) -+{ -+ MozGfxMemory *sub; -+ GstMemory *parent; -+ -+ /* find the real parent */ -+ if ((parent = mem->memory.parent) == NULL) -+ parent = (GstMemory *) mem; -+ -+ if (size == (gsize) -1) -+ size = mem->memory.size - offset; -+ -+ /* the shared memory is always readonly */ -+ sub = g_slice_new (MozGfxMemory); -+ -+ gst_memory_init (GST_MEMORY_CAST (sub), -+ (GstMemoryFlags) (GST_MINI_OBJECT_FLAGS (parent) | GST_MINI_OBJECT_FLAG_LOCK_READONLY), -+ mem->memory.allocator, &mem->memory, mem->memory.maxsize, mem->memory.align, -+ mem->memory.offset + offset, size); -+ -+ sub->image = mem->image; -+ sub->data = mem->data; -+ -+ return sub; -+} -+ -+static void -+moz_gfx_memory_allocator_class_init (MozGfxMemoryAllocatorClass * klass) -+{ -+ GstAllocatorClass *allocator_class; -+ -+ allocator_class = (GstAllocatorClass *) klass; -+ -+ allocator_class->alloc = moz_gfx_memory_allocator_alloc; -+ allocator_class->free = moz_gfx_memory_allocator_free; -+} -+ -+static void -+moz_gfx_memory_allocator_init (MozGfxMemoryAllocator * allocator) -+{ -+ GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator); -+ -+ alloc->mem_type = "moz-gfx-image"; -+ alloc->mem_map = (GstMemoryMapFunction) moz_gfx_memory_map; -+ alloc->mem_unmap = (GstMemoryUnmapFunction) moz_gfx_memory_unmap; -+ alloc->mem_share = (GstMemoryShareFunction) moz_gfx_memory_share; -+ /* fallback copy and is_span */ -+} -+ -+void -+moz_gfx_memory_allocator_set_reader(GstAllocator* aAllocator, GStreamerReader* aReader) -+{ -+ MozGfxMemoryAllocator *allocator = (MozGfxMemoryAllocator *) aAllocator; -+ allocator->reader = aReader; -+} -+ -+nsRefPtr<PlanarYCbCrImage> -+moz_gfx_memory_get_image(GstMemory *aMemory) -+{ -+ NS_ASSERTION(GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(aMemory->allocator), "Should be a gfx image"); -+ -+ return ((MozGfxMemory *) aMemory)->image; -+} -+ -+void -+moz_gfx_buffer_pool_reset_buffer (GstBufferPool* aPool, GstBuffer* aBuffer) -+{ -+ GstMemory* mem = gst_buffer_peek_memory(aBuffer, 0); -+ -+ NS_ASSERTION(GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(mem->allocator), "Should be a gfx image"); -+ moz_gfx_memory_reset((MozGfxMemory *) mem); -+ GST_BUFFER_POOL_CLASS(moz_gfx_buffer_pool_parent_class)->reset_buffer(aPool, aBuffer); -+} -+ -+static void -+moz_gfx_buffer_pool_class_init (MozGfxBufferPoolClass * klass) -+{ -+ GstBufferPoolClass *pool_class = (GstBufferPoolClass *) klass; -+ pool_class->reset_buffer = moz_gfx_buffer_pool_reset_buffer; -+} -+ -+static void -+moz_gfx_buffer_pool_init (MozGfxBufferPool * pool) -+{ -+} -+ -+} // namespace mozilla -diff --git content/media/gstreamer/GStreamerAllocator.h content/media/gstreamer/GStreamerAllocator.h -new file mode 100644 -index 0000000..05a4412 ---- /dev/null -+++ content/media/gstreamer/GStreamerAllocator.h -@@ -0,0 +1,25 @@ -+/* This Source Code Form is subject to the terms of the Mozilla Public -+ * License, v. 2.0. If a copy of the MPL was not distributed with this file, -+ * You can obtain one at http://mozilla.org/MPL/2.0/. */ -+ -+#if !defined(GStreamerAllocator_h_) -+#define GStreamerAllocator_h_ -+ -+#include "GStreamerReader.h" -+ -+#define GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR (moz_gfx_memory_allocator_get_type()) -+#define GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR)) -+#define GST_TYPE_MOZ_GFX_BUFFER_POOL (moz_gfx_buffer_pool_get_type()) -+#define GST_IS_MOZ_GFX_BUFFER_POOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MOZ_GFX_BUFFER_POOL)) -+ -+namespace mozilla { -+ -+GType moz_gfx_memory_allocator_get_type(); -+void moz_gfx_memory_allocator_set_reader(GstAllocator *aAllocator, GStreamerReader* aReader); -+nsRefPtr<layers::PlanarYCbCrImage> moz_gfx_memory_get_image(GstMemory *aMemory); -+ -+GType moz_gfx_buffer_pool_get_type(); -+ -+} // namespace mozilla -+ -+#endif -diff --git content/media/gstreamer/GStreamerFormatHelper.cpp content/media/gstreamer/GStreamerFormatHelper.cpp -index be71331..a5e5db8 100644 ---- content/media/gstreamer/GStreamerFormatHelper.cpp -+++ content/media/gstreamer/GStreamerFormatHelper.cpp -@@ -294,12 +294,23 @@ bool GStreamerFormatHelper::CanHandleCodecCaps(GstCaps* aCaps) - GList* GStreamerFormatHelper::GetFactories() { - NS_ASSERTION(sLoadOK, "GStreamer library not linked"); - -- uint32_t cookie = gst_default_registry_get_feature_list_cookie (); -+#if GST_VERSION_MAJOR >= 1 -+ uint32_t cookie = gst_registry_get_feature_list_cookie(gst_registry_get()); -+#else -+ uint32_t cookie = gst_default_registry_get_feature_list_cookie(); -+#endif - if (cookie != mCookie) { - g_list_free(mFactories); -+#if GST_VERSION_MAJOR >= 1 -+ mFactories = -+ gst_registry_feature_filter(gst_registry_get(), -+ (GstPluginFeatureFilter)FactoryFilter, -+ false, nullptr); -+#else - mFactories = - gst_default_registry_feature_filter((GstPluginFeatureFilter)FactoryFilter, - false, nullptr); -+#endif - mCookie = cookie; - } - -diff --git content/media/gstreamer/GStreamerFunctionList.h content/media/gstreamer/GStreamerFunctionList.h -index 56877c0..e169449 100644 ---- content/media/gstreamer/GStreamerFunctionList.h -+++ content/media/gstreamer/GStreamerFunctionList.h -@@ -9,7 +9,6 @@ - * List of symbol names we need to dlsym from the gstreamer library. - */ - GST_FUNC(LIBGSTAPP, gst_app_sink_get_type) --GST_FUNC(LIBGSTAPP, gst_app_sink_pull_buffer) - GST_FUNC(LIBGSTAPP, gst_app_sink_set_callbacks) - GST_FUNC(LIBGSTAPP, gst_app_src_end_of_stream) - GST_FUNC(LIBGSTAPP, gst_app_src_get_size) -@@ -22,10 +21,8 @@ GST_FUNC(LIBGSTAPP, gst_app_src_set_stream_type) - GST_FUNC(LIBGSTREAMER, gst_bin_get_by_name) - GST_FUNC(LIBGSTREAMER, gst_bin_get_type) - GST_FUNC(LIBGSTREAMER, gst_bin_iterate_recurse) --GST_FUNC(LIBGSTREAMER, gst_buffer_copy_metadata) - GST_FUNC(LIBGSTREAMER, gst_buffer_get_type) - GST_FUNC(LIBGSTREAMER, gst_buffer_new) --GST_FUNC(LIBGSTREAMER, gst_buffer_new_and_alloc) - GST_FUNC(LIBGSTREAMER, gst_bus_set_sync_handler) - GST_FUNC(LIBGSTREAMER, gst_bus_timed_pop_filtered) - GST_FUNC(LIBGSTREAMER, gst_caps_append) -@@ -37,47 +34,37 @@ GST_FUNC(LIBGSTREAMER, gst_caps_new_any) - GST_FUNC(LIBGSTREAMER, gst_caps_new_empty) - GST_FUNC(LIBGSTREAMER, gst_caps_new_full) - GST_FUNC(LIBGSTREAMER, gst_caps_new_simple) --GST_FUNC(LIBGSTREAMER, gst_caps_unref) --GST_FUNC(LIBGSTREAMER, gst_element_factory_get_klass) -+GST_FUNC(LIBGSTREAMER, gst_caps_set_simple) - GST_FUNC(LIBGSTREAMER, gst_element_factory_get_static_pad_templates) - GST_FUNC(LIBGSTREAMER, gst_element_factory_get_type) - GST_FUNC(LIBGSTREAMER, gst_element_factory_make) - GST_FUNC(LIBGSTREAMER, gst_element_get_factory) --GST_FUNC(LIBGSTREAMER, gst_element_get_pad) -+GST_FUNC(LIBGSTREAMER, gst_element_get_static_pad) - GST_FUNC(LIBGSTREAMER, gst_element_get_type) - GST_FUNC(LIBGSTREAMER, gst_element_query_convert) - GST_FUNC(LIBGSTREAMER, gst_element_query_duration) - GST_FUNC(LIBGSTREAMER, gst_element_seek_simple) - GST_FUNC(LIBGSTREAMER, gst_element_set_state) --GST_FUNC(LIBGSTREAMER, gst_event_parse_new_segment) - GST_FUNC(LIBGSTREAMER, gst_flow_get_name) - GST_FUNC(LIBGSTREAMER, gst_init) - GST_FUNC(LIBGSTREAMER, gst_init_check) - GST_FUNC(LIBGSTREAMER, gst_iterator_next) - GST_FUNC(LIBGSTREAMER, gst_message_parse_error) - GST_FUNC(LIBGSTREAMER, gst_message_type_get_name) --GST_FUNC(LIBGSTREAMER, gst_mini_object_get_type) --GST_FUNC(LIBGSTREAMER, gst_mini_object_new) - GST_FUNC(LIBGSTREAMER, gst_mini_object_ref) - GST_FUNC(LIBGSTREAMER, gst_mini_object_unref) - GST_FUNC(LIBGSTREAMER, gst_object_get_name) - GST_FUNC(LIBGSTREAMER, gst_object_get_parent) - GST_FUNC(LIBGSTREAMER, gst_object_unref) --GST_FUNC(LIBGSTREAMER, gst_pad_add_event_probe) --GST_FUNC(LIBGSTREAMER, gst_pad_alloc_buffer) - GST_FUNC(LIBGSTREAMER, gst_pad_get_element_private) --GST_FUNC(LIBGSTREAMER, gst_pad_get_negotiated_caps) --GST_FUNC(LIBGSTREAMER, gst_pad_set_bufferalloc_function) - GST_FUNC(LIBGSTREAMER, gst_pad_set_element_private) - GST_FUNC(LIBGSTREAMER, gst_parse_bin_from_description) - GST_FUNC(LIBGSTREAMER, gst_pipeline_get_bus) - GST_FUNC(LIBGSTREAMER, gst_pipeline_get_type) - GST_FUNC(LIBGSTREAMER, gst_plugin_feature_get_rank) - GST_FUNC(LIBGSTREAMER, gst_registry_feature_filter) --GST_FUNC(LIBGSTREAMER, gst_registry_get_default) - GST_FUNC(LIBGSTREAMER, gst_registry_get_feature_list_cookie) - GST_FUNC(LIBGSTREAMER, gst_segment_init) --GST_FUNC(LIBGSTREAMER, gst_segment_set_newsegment) - GST_FUNC(LIBGSTREAMER, gst_segment_to_stream_time) - GST_FUNC(LIBGSTREAMER, gst_static_caps_get) - GST_FUNC(LIBGSTREAMER, gst_structure_copy) -@@ -85,11 +72,82 @@ GST_FUNC(LIBGSTREAMER, gst_structure_get_int) - GST_FUNC(LIBGSTREAMER, gst_structure_get_value) - GST_FUNC(LIBGSTREAMER, gst_structure_new) - GST_FUNC(LIBGSTREAMER, gst_util_uint64_scale) -+ -+#if GST_VERSION_MAJOR == 0 -+GST_FUNC(LIBGSTAPP, gst_app_sink_pull_buffer) -+GST_FUNC(LIBGSTREAMER, gst_buffer_copy_metadata) -+GST_FUNC(LIBGSTREAMER, gst_buffer_new_and_alloc) -+GST_FUNC(LIBGSTREAMER, gst_caps_unref) -+GST_FUNC(LIBGSTREAMER, gst_element_factory_get_klass) -+GST_FUNC(LIBGSTREAMER, gst_element_get_pad) -+GST_FUNC(LIBGSTREAMER, gst_event_parse_new_segment) -+GST_FUNC(LIBGSTREAMER, gst_mini_object_get_type) -+GST_FUNC(LIBGSTREAMER, gst_mini_object_new) -+GST_FUNC(LIBGSTREAMER, gst_pad_add_event_probe) -+GST_FUNC(LIBGSTREAMER, gst_pad_alloc_buffer) -+GST_FUNC(LIBGSTREAMER, gst_pad_get_negotiated_caps) -+GST_FUNC(LIBGSTREAMER, gst_pad_set_bufferalloc_function) -+GST_FUNC(LIBGSTREAMER, gst_registry_get_default) -+GST_FUNC(LIBGSTREAMER, gst_segment_set_newsegment) - GST_FUNC(LIBGSTVIDEO, gst_video_format_get_component_height) - GST_FUNC(LIBGSTVIDEO, gst_video_format_get_component_offset) - GST_FUNC(LIBGSTVIDEO, gst_video_format_get_component_width) -+GST_FUNC(LIBGSTVIDEO, gst_video_format_get_pixel_stride) - GST_FUNC(LIBGSTVIDEO, gst_video_format_get_row_stride) - GST_FUNC(LIBGSTVIDEO, gst_video_format_parse_caps) -+#else -+ -+GST_FUNC(LIBGSTAPP, gst_app_sink_pull_sample) -+GST_FUNC(LIBGSTREAMER, _gst_caps_any) -+GST_FUNC(LIBGSTREAMER, gst_allocator_get_type) -+GST_FUNC(LIBGSTREAMER, gst_buffer_copy_into) -+GST_FUNC(LIBGSTREAMER, gst_buffer_extract) -+GST_FUNC(LIBGSTREAMER, gst_buffer_get_meta) -+GST_FUNC(LIBGSTREAMER, gst_buffer_get_size) -+GST_FUNC(LIBGSTREAMER, gst_buffer_map) -+GST_FUNC(LIBGSTREAMER, gst_buffer_new_allocate) -+GST_FUNC(LIBGSTREAMER, gst_buffer_n_memory) -+GST_FUNC(LIBGSTREAMER, gst_buffer_peek_memory) -+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_acquire_buffer) -+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_config_set_allocator) -+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_config_set_params) -+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_get_config) -+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_get_type) -+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_is_active) -+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_set_active) -+GST_FUNC(LIBGSTREAMER, gst_buffer_pool_set_config) -+GST_FUNC(LIBGSTREAMER, gst_buffer_set_size) -+GST_FUNC(LIBGSTREAMER, gst_buffer_unmap) -+GST_FUNC(LIBGSTREAMER, gst_element_factory_get_metadata) -+GST_FUNC(LIBGSTREAMER, gst_event_parse_segment) -+GST_FUNC(LIBGSTREAMER, gst_memory_init) -+GST_FUNC(LIBGSTREAMER, gst_memory_map) -+GST_FUNC(LIBGSTREAMER, gst_memory_unmap) -+GST_FUNC(LIBGSTREAMER, gst_object_get_type) -+GST_FUNC(LIBGSTREAMER, gst_pad_add_probe) -+GST_FUNC(LIBGSTREAMER, gst_pad_get_current_caps) -+GST_FUNC(LIBGSTREAMER, gst_pad_probe_info_get_query) -+GST_FUNC(LIBGSTREAMER, gst_query_add_allocation_meta) -+GST_FUNC(LIBGSTREAMER, gst_query_add_allocation_param) -+GST_FUNC(LIBGSTREAMER, gst_query_add_allocation_pool) -+GST_FUNC(LIBGSTREAMER, gst_query_parse_allocation) -+GST_FUNC(LIBGSTREAMER, gst_registry_get) -+GST_FUNC(LIBGSTREAMER, gst_sample_get_buffer) -+GST_FUNC(LIBGSTREAMER, gst_segment_copy_into) -+GST_FUNC(LIBGSTREAMER, gst_structure_free) -+GST_FUNC(LIBGSTVIDEO, gst_buffer_pool_config_get_video_alignment) -+GST_FUNC(LIBGSTVIDEO, gst_buffer_pool_has_option) -+GST_FUNC(LIBGSTVIDEO, gst_video_buffer_pool_get_type) -+GST_FUNC(LIBGSTVIDEO, gst_video_frame_map) -+GST_FUNC(LIBGSTVIDEO, gst_video_frame_unmap) -+GST_FUNC(LIBGSTVIDEO, gst_video_info_align) -+GST_FUNC(LIBGSTVIDEO, gst_video_info_from_caps) -+GST_FUNC(LIBGSTVIDEO, gst_video_info_init) -+GST_FUNC(LIBGSTVIDEO, gst_video_meta_api_get_type) -+GST_FUNC(LIBGSTVIDEO, gst_video_meta_map) -+GST_FUNC(LIBGSTVIDEO, gst_video_meta_unmap) -+ -+#endif - - /* - * Functions that have been defined in the header file. We replace them so that -@@ -99,6 +157,11 @@ GST_FUNC(LIBGSTVIDEO, gst_video_format_parse_caps) - REPLACE_FUNC(gst_buffer_ref); - REPLACE_FUNC(gst_buffer_unref); - REPLACE_FUNC(gst_message_unref); -+ -+#if GST_VERSION_MAJOR == 1 -+REPLACE_FUNC(gst_caps_unref); -+REPLACE_FUNC(gst_sample_unref); -+#endif - #endif - - #endif // !defined(__APPLE__) -diff --git content/media/gstreamer/GStreamerLoader.cpp content/media/gstreamer/GStreamerLoader.cpp -index 5961b23..e6457e0 100644 ---- content/media/gstreamer/GStreamerLoader.cpp -+++ content/media/gstreamer/GStreamerLoader.cpp -@@ -6,13 +6,21 @@ - #include <dlfcn.h> - #include <stdio.h> - --#include "GStreamerLoader.h" -+#include "nsDebug.h" - #include "mozilla/NullPtr.h" - -+#include "GStreamerLoader.h" -+ - #define LIBGSTREAMER 0 - #define LIBGSTAPP 1 - #define LIBGSTVIDEO 2 - -+#ifdef __OpenBSD__ -+#define LIB_GST_SUFFIX ".so" -+#else -+#define LIB_GST_SUFFIX ".so.0" -+#endif -+ - namespace mozilla { - - /* -@@ -32,6 +40,11 @@ namespace mozilla { - GstBuffer * gst_buffer_ref_impl(GstBuffer *buf); - void gst_buffer_unref_impl(GstBuffer *buf); - void gst_message_unref_impl(GstMessage *msg); -+void gst_caps_unref_impl(GstCaps *caps); -+ -+#if GST_VERSION_MAJOR == 1 -+void gst_sample_unref_impl(GstSample *sample); -+#endif - - bool - load_gstreamer() -@@ -58,32 +71,25 @@ load_gstreamer() - if (major == GST_VERSION_MAJOR && minor == GST_VERSION_MINOR) { - gstreamerLib = RTLD_DEFAULT; - } else { --#ifdef __OpenBSD__ -- gstreamerLib = dlopen("libgstreamer-0.10.so", RTLD_NOW | RTLD_LOCAL); --#else -- gstreamerLib = dlopen("libgstreamer-0.10.so.0", RTLD_NOW | RTLD_LOCAL); --#endif -+ gstreamerLib = dlopen("libgstreamer-" GST_API_VERSION LIB_GST_SUFFIX, RTLD_NOW | RTLD_LOCAL); - } - -- void *handles[] = { -+ void *handles[3] = { - gstreamerLib, --#ifdef __OpenBSD__ -- dlopen("libgstapp-0.10.so", RTLD_NOW | RTLD_LOCAL), -- dlopen("libgstvideo-0.10.so", RTLD_NOW | RTLD_LOCAL) --#else -- dlopen("libgstapp-0.10.so.0", RTLD_NOW | RTLD_LOCAL), -- dlopen("libgstvideo-0.10.so.0", RTLD_NOW | RTLD_LOCAL) --#endif -+ dlopen("libgstapp-" GST_API_VERSION LIB_GST_SUFFIX, RTLD_NOW | RTLD_LOCAL), -+ dlopen("libgstvideo-" GST_API_VERSION LIB_GST_SUFFIX, RTLD_NOW | RTLD_LOCAL) - }; - - for (size_t i = 0; i < sizeof(handles) / sizeof(handles[0]); i++) { - if (!handles[i]) { -+ NS_WARNING("Couldn't link gstreamer libraries"); - goto fail; - } - } - - #define GST_FUNC(lib, symbol) \ - if (!(symbol = (typeof(symbol))dlsym(handles[lib], #symbol))) { \ -+ NS_WARNING("Couldn't link symbol " #symbol); \ - goto fail; \ - } - #define REPLACE_FUNC(symbol) symbol = symbol##_impl; -@@ -123,4 +129,18 @@ gst_message_unref_impl(GstMessage *msg) - gst_mini_object_unref(GST_MINI_OBJECT_CAST(msg)); - } - -+#if GST_VERSION_MAJOR == 1 -+void -+gst_sample_unref_impl(GstSample *sample) -+{ -+ gst_mini_object_unref(GST_MINI_OBJECT_CAST(sample)); -+} -+#endif -+ -+void -+gst_caps_unref_impl(GstCaps *caps) -+{ -+ gst_mini_object_unref(GST_MINI_OBJECT_CAST(caps)); -+} -+ - } -diff --git content/media/gstreamer/GStreamerLoader.h content/media/gstreamer/GStreamerLoader.h -index 2d801722..cd7fe6d 100644 ---- content/media/gstreamer/GStreamerLoader.h -+++ content/media/gstreamer/GStreamerLoader.h -@@ -22,6 +22,11 @@ - #include <gst/video/video.h> - #pragma GCC diagnostic pop - -+#if GST_VERSION_MAJOR == 1 -+#include <gst/video/gstvideometa.h> -+#include <gst/video/gstvideopool.h> -+#endif -+ - namespace mozilla { - - /* -@@ -42,4 +47,7 @@ bool load_gstreamer(); - - } - -+#undef GST_CAPS_ANY -+#define GST_CAPS_ANY (*_gst_caps_any) -+ - #endif // GStreamerLoader_h_ -diff --git content/media/gstreamer/GStreamerReader-0.10.cpp content/media/gstreamer/GStreamerReader-0.10.cpp -new file mode 100644 -index 0000000..fb98bde ---- /dev/null -+++ content/media/gstreamer/GStreamerReader-0.10.cpp -@@ -0,0 +1,200 @@ -+#include "nsError.h" -+#include "MediaDecoderStateMachine.h" -+#include "AbstractMediaDecoder.h" -+#include "MediaResource.h" -+#include "GStreamerReader.h" -+#include "GStreamerMozVideoBuffer.h" -+#include "GStreamerFormatHelper.h" -+#include "VideoUtils.h" -+#include "mozilla/dom/TimeRanges.h" -+#include "mozilla/Preferences.h" -+ -+using namespace mozilla; -+using mozilla::layers::PlanarYCbCrImage; -+using mozilla::layers::ImageContainer; -+ -+GstFlowReturn GStreamerReader::AllocateVideoBufferCb(GstPad* aPad, -+ guint64 aOffset, -+ guint aSize, -+ GstCaps* aCaps, -+ GstBuffer** aBuf) -+{ -+ GStreamerReader* reader = reinterpret_cast<GStreamerReader*>(gst_pad_get_element_private(aPad)); -+ return reader->AllocateVideoBuffer(aPad, aOffset, aSize, aCaps, aBuf); -+} -+ -+GstFlowReturn GStreamerReader::AllocateVideoBuffer(GstPad* aPad, -+ guint64 aOffset, -+ guint aSize, -+ GstCaps* aCaps, -+ GstBuffer** aBuf) -+{ -+ nsRefPtr<PlanarYCbCrImage> image; -+ return AllocateVideoBufferFull(aPad, aOffset, aSize, aCaps, aBuf, image); -+} -+ -+GstFlowReturn GStreamerReader::AllocateVideoBufferFull(GstPad* aPad, -+ guint64 aOffset, -+ guint aSize, -+ GstCaps* aCaps, -+ GstBuffer** aBuf, -+ nsRefPtr<PlanarYCbCrImage>& aImage) -+{ -+ /* allocate an image using the container */ -+ ImageContainer* container = mDecoder->GetImageContainer(); -+ if (container == nullptr) { -+ return GST_FLOW_ERROR; -+ } -+ PlanarYCbCrImage* img = reinterpret_cast<PlanarYCbCrImage*>(container->CreateImage(ImageFormat::PLANAR_YCBCR).get()); -+ nsRefPtr<PlanarYCbCrImage> image = dont_AddRef(img); -+ -+ /* prepare a GstBuffer pointing to the underlying PlanarYCbCrImage buffer */ -+ GstBuffer* buf = GST_BUFFER(gst_moz_video_buffer_new()); -+ GST_BUFFER_SIZE(buf) = aSize; -+ /* allocate the actual YUV buffer */ -+ GST_BUFFER_DATA(buf) = image->AllocateAndGetNewBuffer(aSize); -+ -+ aImage = image; -+ -+ /* create a GstMozVideoBufferData to hold the image */ -+ GstMozVideoBufferData* bufferdata = new GstMozVideoBufferData(image); -+ -+ /* Attach bufferdata to our GstMozVideoBuffer, it will take care to free it */ -+ gst_moz_video_buffer_set_data(GST_MOZ_VIDEO_BUFFER(buf), bufferdata); -+ -+ *aBuf = buf; -+ return GST_FLOW_OK; -+} -+ -+gboolean GStreamerReader::EventProbe(GstPad* aPad, GstEvent* aEvent) -+{ -+ GstElement* parent = GST_ELEMENT(gst_pad_get_parent(aPad)); -+ switch(GST_EVENT_TYPE(aEvent)) { -+ case GST_EVENT_NEWSEGMENT: -+ { -+ gboolean update; -+ gdouble rate; -+ GstFormat format; -+ gint64 start, stop, position; -+ GstSegment* segment; -+ -+ /* Store the segments so we can convert timestamps to stream time, which -+ * is what the upper layers sync on. -+ */ -+ ReentrantMonitorAutoEnter mon(mGstThreadsMonitor); -+ gst_event_parse_new_segment(aEvent, &update, &rate, &format, -+ &start, &stop, &position); -+ if (parent == GST_ELEMENT(mVideoAppSink)) -+ segment = &mVideoSegment; -+ else -+ segment = &mAudioSegment; -+ gst_segment_set_newsegment(segment, update, rate, format, -+ start, stop, position); -+ break; -+ } -+ case GST_EVENT_FLUSH_STOP: -+ /* Reset on seeks */ -+ ResetDecode(); -+ break; -+ default: -+ break; -+ } -+ gst_object_unref(parent); -+ -+ return TRUE; -+} -+ -+gboolean GStreamerReader::EventProbeCb(GstPad* aPad, -+ GstEvent* aEvent, -+ gpointer aUserData) -+{ -+ GStreamerReader* reader = reinterpret_cast<GStreamerReader*>(aUserData); -+ return reader->EventProbe(aPad, aEvent); -+} -+ -+nsRefPtr<PlanarYCbCrImage> GStreamerReader::GetImageFromBuffer(GstBuffer* aBuffer) -+{ -+ if (!GST_IS_MOZ_VIDEO_BUFFER (aBuffer)) -+ return nullptr; -+ -+ nsRefPtr<PlanarYCbCrImage> image; -+ GstMozVideoBufferData* bufferdata = reinterpret_cast<GstMozVideoBufferData*>(gst_moz_video_buffer_get_data(GST_MOZ_VIDEO_BUFFER(aBuffer))); -+ image = bufferdata->mImage; -+ -+ PlanarYCbCrImage::Data data; -+ data.mPicX = data.mPicY = 0; -+ data.mPicSize = gfx::IntSize(mPicture.width, mPicture.height); -+ data.mStereoMode = StereoMode::MONO; -+ -+ data.mYChannel = GST_BUFFER_DATA(aBuffer); -+ data.mYStride = gst_video_format_get_row_stride(mFormat, 0, mPicture.width); -+ data.mYSize = gfx::IntSize(data.mYStride, -+ gst_video_format_get_component_height(mFormat, 0, mPicture.height)); -+ data.mYSkip = 0; -+ data.mCbCrStride = gst_video_format_get_row_stride(mFormat, 1, mPicture.width); -+ data.mCbCrSize = gfx::IntSize(data.mCbCrStride, -+ gst_video_format_get_component_height(mFormat, 1, mPicture.height)); -+ data.mCbChannel = data.mYChannel + gst_video_format_get_component_offset(mFormat, 1, -+ mPicture.width, mPicture.height); -+ data.mCrChannel = data.mYChannel + gst_video_format_get_component_offset(mFormat, 2, -+ mPicture.width, mPicture.height); -+ data.mCbSkip = 0; -+ data.mCrSkip = 0; -+ -+ image->SetDataNoCopy(data); -+ -+ return image; -+} -+ -+void GStreamerReader::CopyIntoImageBuffer(GstBuffer* aBuffer, -+ GstBuffer** aOutBuffer, -+ nsRefPtr<PlanarYCbCrImage> &aImage) -+{ -+ AllocateVideoBufferFull(nullptr, GST_BUFFER_OFFSET(aBuffer), -+ GST_BUFFER_SIZE(aBuffer), nullptr, aOutBuffer, aImage); -+ -+ gst_buffer_copy_metadata(*aOutBuffer, aBuffer, (GstBufferCopyFlags)GST_BUFFER_COPY_ALL); -+ memcpy(GST_BUFFER_DATA(*aOutBuffer), GST_BUFFER_DATA(aBuffer), GST_BUFFER_SIZE(*aOutBuffer)); -+ -+ aImage = GetImageFromBuffer(*aOutBuffer); -+} -+ -+GstCaps* GStreamerReader::BuildAudioSinkCaps() -+{ -+ GstCaps* caps; -+#ifdef IS_LITTLE_ENDIAN -+ int endianness = 1234; -+#else -+ int endianness = 4321; -+#endif -+ gint width; -+#ifdef MOZ_SAMPLE_TYPE_FLOAT32 -+ caps = gst_caps_from_string("audio/x-raw-float, channels={1,2}"); -+ width = 32; -+#else /* !MOZ_SAMPLE_TYPE_FLOAT32 */ -+ caps = gst_caps_from_string("audio/x-raw-int, channels={1,2}"); -+ width = 16; -+#endif -+ gst_caps_set_simple(caps, -+ "width", G_TYPE_INT, width, -+ "endianness", G_TYPE_INT, endianness, -+ NULL); -+ -+ return caps; -+} -+ -+void GStreamerReader::InstallPadCallbacks() -+{ -+ GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mVideoAppSink), "sink"); -+ gst_pad_add_event_probe(sinkpad, -+ G_CALLBACK(&GStreamerReader::EventProbeCb), this); -+ -+ gst_pad_set_bufferalloc_function(sinkpad, GStreamerReader::AllocateVideoBufferCb); -+ gst_pad_set_element_private(sinkpad, this); -+ gst_object_unref(sinkpad); -+ -+ sinkpad = gst_element_get_static_pad(GST_ELEMENT(mAudioAppSink), "sink"); -+ gst_pad_add_event_probe(sinkpad, -+ G_CALLBACK(&GStreamerReader::EventProbeCb), this); -+ gst_object_unref(sinkpad); -+} -diff --git content/media/gstreamer/GStreamerReader.cpp content/media/gstreamer/GStreamerReader.cpp -index 2be45dc..54509e3 100644 ---- content/media/gstreamer/GStreamerReader.cpp -+++ content/media/gstreamer/GStreamerReader.cpp -@@ -10,8 +10,10 @@ - #include "AbstractMediaDecoder.h" - #include "MediaResource.h" - #include "GStreamerReader.h" -+#if GST_VERSION_MAJOR >= 1 -+#include "GStreamerAllocator.h" -+#endif - #include "GStreamerFormatHelper.h" --#include "GStreamerMozVideoBuffer.h" - #include "VideoUtils.h" - #include "mozilla/dom/TimeRanges.h" - #include "mozilla/Preferences.h" -@@ -31,14 +33,16 @@ extern PRLogModuleInfo* gMediaDecoderLog; - #define LOG(type, msg, ...) - #endif - --extern bool --IsYV12Format(const VideoData::YCbCrBuffer::Plane& aYPlane, -- const VideoData::YCbCrBuffer::Plane& aCbPlane, -- const VideoData::YCbCrBuffer::Plane& aCrPlane); -- -+#if DEBUG - static const unsigned int MAX_CHANNELS = 4; --// Let the demuxer work in pull mode for short files --static const int SHORT_FILE_SIZE = 1024 * 1024; -+#endif -+// Let the demuxer work in pull mode for short files. This used to be a micro -+// optimization to have more accurate durations for ogg files in mochitests. -+// Since as of today we aren't using gstreamer to demux ogg, and having demuxers -+// work in pull mode over http makes them slower (since they really assume -+// near-zero latency in pull mode) set the constant to 0 for now, which -+// effectively disables it. -+static const int SHORT_FILE_SIZE = 0; - // The default resource->Read() size when working in push mode - static const int DEFAULT_SOURCE_READ_SIZE = 50 * 1024; - -@@ -60,6 +62,10 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder) - : MediaDecoderReader(aDecoder), - mMP3FrameParser(aDecoder->GetResource()->GetLength()), - mUseParserDuration(false), -+#if GST_VERSION_MAJOR >= 1 -+ mAllocator(nullptr), -+ mBufferPool(nullptr), -+#endif - mPlayBin(nullptr), - mBus(nullptr), - mSource(nullptr), -@@ -72,6 +78,9 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder) - mAudioSinkBufferCount(0), - mGstThreadsMonitor("media.gst.threads"), - mReachedEos(false), -+#if GST_VERSION_MAJOR >= 1 -+ mConfigureAlignment(true), -+#endif - fpsNum(0), - fpsDen(0) - { -@@ -83,8 +92,12 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder) - - mSinkCallbacks.eos = GStreamerReader::EosCb; - mSinkCallbacks.new_preroll = GStreamerReader::NewPrerollCb; -+#if GST_VERSION_MAJOR >= 1 -+ mSinkCallbacks.new_sample = GStreamerReader::NewBufferCb; -+#else - mSinkCallbacks.new_buffer = GStreamerReader::NewBufferCb; - mSinkCallbacks.new_buffer_list = nullptr; -+#endif - - gst_segment_init(&mVideoSegment, GST_FORMAT_UNDEFINED); - gst_segment_init(&mAudioSegment, GST_FORMAT_UNDEFINED); -@@ -108,65 +121,59 @@ GStreamerReader::~GStreamerReader() - mAudioAppSink = nullptr; - gst_object_unref(mBus); - mBus = nullptr; -+#if GST_VERSION_MAJOR >= 1 -+ g_object_unref(mAllocator); -+ g_object_unref(mBufferPool); -+#endif - } - } - - nsresult GStreamerReader::Init(MediaDecoderReader* aCloneDonor) - { -- GError* error = nullptr; -- if (!gst_init_check(0, 0, &error)) { -- LOG(PR_LOG_ERROR, "gst initialization failed: %s", error->message); -- g_error_free(error); -- return NS_ERROR_FAILURE; -- } -+ GStreamerFormatHelper::Instance(); -+ -+#if GST_VERSION_MAJOR >= 1 -+ mAllocator = static_cast<GstAllocator*>(g_object_new(GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR, nullptr)); -+ moz_gfx_memory_allocator_set_reader(mAllocator, this); -+ -+ mBufferPool = static_cast<GstBufferPool*>(g_object_new(GST_TYPE_MOZ_GFX_BUFFER_POOL, nullptr)); -+#endif - -+#if GST_VERSION_MAJOR >= 1 -+ mPlayBin = gst_element_factory_make("playbin", nullptr); -+#else - mPlayBin = gst_element_factory_make("playbin2", nullptr); -+#endif - if (!mPlayBin) { -- LOG(PR_LOG_ERROR, "couldn't create playbin2"); -+ LOG(PR_LOG_ERROR, "couldn't create playbin"); - return NS_ERROR_FAILURE; - } - g_object_set(mPlayBin, "buffer-size", 0, nullptr); - mBus = gst_pipeline_get_bus(GST_PIPELINE(mPlayBin)); - - mVideoSink = gst_parse_bin_from_description("capsfilter name=filter ! " -- "appsink name=videosink sync=true max-buffers=1 " -+ "appsink name=videosink sync=false max-buffers=1 " -+#if GST_VERSION_MAJOR >= 1 -+ "caps=video/x-raw,format=I420" -+#else - "caps=video/x-raw-yuv,format=(fourcc)I420" -+#endif - , TRUE, nullptr); - mVideoAppSink = GST_APP_SINK(gst_bin_get_by_name(GST_BIN(mVideoSink), - "videosink")); -- gst_app_sink_set_callbacks(mVideoAppSink, &mSinkCallbacks, -- (gpointer) this, nullptr); -- GstPad* sinkpad = gst_element_get_pad(GST_ELEMENT(mVideoAppSink), "sink"); -- gst_pad_add_event_probe(sinkpad, -- G_CALLBACK(&GStreamerReader::EventProbeCb), this); -- gst_object_unref(sinkpad); -- gst_pad_set_bufferalloc_function(sinkpad, GStreamerReader::AllocateVideoBufferCb); -- gst_pad_set_element_private(sinkpad, this); -- - mAudioSink = gst_parse_bin_from_description("capsfilter name=filter ! " --#ifdef MOZ_SAMPLE_TYPE_FLOAT32 -- "appsink name=audiosink max-buffers=2 sync=false caps=audio/x-raw-float," --#ifdef IS_LITTLE_ENDIAN -- "channels={1,2},width=32,endianness=1234", TRUE, nullptr); --#else -- "channels={1,2},width=32,endianness=4321", TRUE, nullptr); --#endif --#else -- "appsink name=audiosink max-buffers=2 sync=false caps=audio/x-raw-int," --#ifdef IS_LITTLE_ENDIAN -- "channels={1,2},width=16,endianness=1234", TRUE, nullptr); --#else -- "channels={1,2},width=16,endianness=4321", TRUE, nullptr); --#endif --#endif -+ "appsink name=audiosink sync=false max-buffers=1", TRUE, nullptr); - mAudioAppSink = GST_APP_SINK(gst_bin_get_by_name(GST_BIN(mAudioSink), - "audiosink")); -+ GstCaps* caps = BuildAudioSinkCaps(); -+ g_object_set(mAudioAppSink, "caps", caps, nullptr); -+ gst_caps_unref(caps); -+ -+ gst_app_sink_set_callbacks(mVideoAppSink, &mSinkCallbacks, -+ (gpointer) this, nullptr); - gst_app_sink_set_callbacks(mAudioAppSink, &mSinkCallbacks, - (gpointer) this, nullptr); -- sinkpad = gst_element_get_pad(GST_ELEMENT(mAudioAppSink), "sink"); -- gst_pad_add_event_probe(sinkpad, -- G_CALLBACK(&GStreamerReader::EventProbeCb), this); -- gst_object_unref(sinkpad); -+ InstallPadCallbacks(); - - g_object_set(mPlayBin, "uri", "appsrc://", - "video-sink", mVideoSink, -@@ -331,13 +340,12 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, - /* Little trick: set the target caps to "skip" so that playbin2 fails to - * find a decoder for the stream we want to skip. - */ -- GstCaps* filterCaps = gst_caps_new_simple ("skip", nullptr); -+ GstCaps* filterCaps = gst_caps_new_simple ("skip", nullptr, nullptr); - g_object_set(filter, "caps", filterCaps, nullptr); - gst_caps_unref(filterCaps); - gst_object_unref(filter); - } - -- /* start the pipeline */ - LOG(PR_LOG_DEBUG, "starting metadata pipeline"); - gst_element_set_state(mPlayBin, GST_STATE_PAUSED); - -@@ -358,6 +366,7 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, - gst_message_unref(message); - ret = NS_ERROR_FAILURE; - } else { -+ LOG(PR_LOG_DEBUG, "read metadata pipeline prerolled"); - gst_message_unref(message); - ret = NS_OK; - break; -@@ -373,21 +383,24 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, - - /* FIXME: workaround for a bug in matroskademux. This seek makes matroskademux - * parse the index */ -+ LOG(PR_LOG_DEBUG, "doing matroskademux seek hack"); - if (gst_element_seek_simple(mPlayBin, GST_FORMAT_TIME, - GST_SEEK_FLAG_FLUSH, 0)) { - /* after a seek we need to wait again for ASYNC_DONE */ -- message = gst_bus_timed_pop_filtered(mBus, GST_CLOCK_TIME_NONE, -+ message = gst_bus_timed_pop_filtered(mBus, 5 * GST_SECOND, - (GstMessageType)(GST_MESSAGE_ASYNC_DONE | GST_MESSAGE_ERROR)); -- if (GST_MESSAGE_TYPE(message) == GST_MESSAGE_ERROR) { -+ LOG(PR_LOG_DEBUG, "matroskademux seek hack done"); -+ if (GST_MESSAGE_TYPE(message) != GST_MESSAGE_ASYNC_DONE) { - gst_element_set_state(mPlayBin, GST_STATE_NULL); - gst_message_unref(message); - return NS_ERROR_FAILURE; - } -+ } else { -+ LOG(PR_LOG_DEBUG, "matroskademux seek hack failed (non fatal)"); - } - - /* report the duration */ - gint64 duration; -- GstFormat format = GST_FORMAT_TIME; - - if (isMP3 && mMP3FrameParser.IsMP3()) { - // The MP3FrameParser has reported a duration; use that over the gstreamer -@@ -396,17 +409,25 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, - mUseParserDuration = true; - mLastParserDuration = mMP3FrameParser.GetDuration(); - mDecoder->SetMediaDuration(mLastParserDuration); -- -- } else if (gst_element_query_duration(GST_ELEMENT(mPlayBin), -- &format, &duration) && format == GST_FORMAT_TIME) { -- // Otherwise use the gstreamer duration. -- ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); -- LOG(PR_LOG_DEBUG, "returning duration %" GST_TIME_FORMAT, GST_TIME_ARGS(duration)); -- duration = GST_TIME_AS_USECONDS (duration); -- mDecoder->SetMediaDuration(duration); -- - } else { -- mDecoder->SetMediaSeekable(false); -+ LOG(PR_LOG_DEBUG, "querying duration"); -+ // Otherwise use the gstreamer duration. -+#if GST_VERSION_MAJOR >= 1 -+ if (gst_element_query_duration(GST_ELEMENT(mPlayBin), -+ GST_FORMAT_TIME, &duration)) { -+#else -+ GstFormat format = GST_FORMAT_TIME; -+ if (gst_element_query_duration(GST_ELEMENT(mPlayBin), -+ &format, &duration) && format == GST_FORMAT_TIME) { -+#endif -+ ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); -+ LOG(PR_LOG_DEBUG, "have duration %" GST_TIME_FORMAT, -+ GST_TIME_ARGS (duration)); -+ duration = GST_TIME_AS_USECONDS (duration); -+ mDecoder->SetMediaDuration(duration); -+ } else { -+ mDecoder->SetMediaSeekable(false); -+ } - } - - int n_video = 0, n_audio = 0; -@@ -410,7 +428,11 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, - *aTags = nullptr; - - // Watch the pipeline for fatal errors -+#if GST_VERSION_MAJOR >= 1 -+ gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this, nullptr); -+#else - gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this); -+#endif - - /* set the pipeline to PLAYING so that it starts decoding and queueing data in - * the appsinks */ -@@ -424,19 +446,35 @@ nsresult GStreamerReader::CheckSupportedFormats() - bool done = false; - bool unsupported = false; - -- GstIterator *it = gst_bin_iterate_recurse(GST_BIN(mPlayBin)); -+ GstIterator* it = gst_bin_iterate_recurse(GST_BIN(mPlayBin)); - while (!done) { -+ GstIteratorResult res; - GstElement* element; -- GstIteratorResult res = gst_iterator_next(it, (void **)&element); -+ -+#if GST_VERSION_MAJOR >= 1 -+ GValue value = {0,}; -+ res = gst_iterator_next(it, &value); -+#else -+ res = gst_iterator_next(it, (void **) &element); -+#endif - switch(res) { - case GST_ITERATOR_OK: - { -+#if GST_VERSION_MAJOR >= 1 -+ element = GST_ELEMENT (g_value_get_object (&value)); -+#endif - GstElementFactory* factory = gst_element_get_factory(element); - if (factory) { - const char* klass = gst_element_factory_get_klass(factory); -- GstPad* pad = gst_element_get_pad(element, "sink"); -+ GstPad* pad = gst_element_get_static_pad(element, "sink"); - if (pad) { -- GstCaps* caps = gst_pad_get_negotiated_caps(pad); -+ GstCaps* caps; -+ -+#if GST_VERSION_MAJOR >= 1 -+ caps = gst_pad_get_current_caps(pad); -+#else -+ caps = gst_pad_get_negotiated_caps(pad); -+#endif - - if (caps) { - /* check for demuxers but ignore elements like id3demux */ -@@ -451,7 +489,11 @@ nsresult GStreamerReader::CheckSupportedFormats() - } - } - -+#if GST_VERSION_MAJOR >= 1 -+ g_value_unset (&value); -+#else - gst_object_unref(element); -+#endif - done = unsupported; - break; - } -@@ -475,6 +517,8 @@ nsresult GStreamerReader::ResetDecode() - { - nsresult res = NS_OK; - -+ LOG(PR_LOG_DEBUG, "reset decode"); -+ - if (NS_FAILED(MediaDecoderReader::ResetDecode())) { - res = NS_ERROR_FAILURE; - } -@@ -485,6 +529,11 @@ nsresult GStreamerReader::ResetDecode() - mVideoSinkBufferCount = 0; - mAudioSinkBufferCount = 0; - mReachedEos = false; -+#if GST_VERSION_MAJOR >= 1 -+ mConfigureAlignment = true; -+#endif -+ -+ LOG(PR_LOG_DEBUG, "reset decode done"); - - return res; - } -@@ -508,11 +557,11 @@ bool GStreamerReader::DecodeAudioData() - /* We have nothing decoded so it makes no sense to return to the state machine - * as it will call us back immediately, we'll return again and so on, wasting - * CPU cycles for no job done. So, block here until there is either video or -- * audio data available -+ * audio data available - */ - mon.Wait(); - if (!mAudioSinkBufferCount) { -- /* There is still no audio data available, so either there is video data or -+ /* There is still no audio data available, so either there is video data or - * something else has happened (Eos, etc...). Return to the state machine - * to process it. - */ -@@ -533,24 +584,44 @@ bool GStreamerReader::DecodeAudioData() - } - } - -+#if GST_VERSION_MAJOR >= 1 -+ GstSample *sample = gst_app_sink_pull_sample(mAudioAppSink); -+ buffer = gst_buffer_ref(gst_sample_get_buffer(sample)); -+ gst_sample_unref(sample); -+#else - buffer = gst_app_sink_pull_buffer(mAudioAppSink); -+#endif -+ - mAudioSinkBufferCount--; - } - - int64_t timestamp = GST_BUFFER_TIMESTAMP(buffer); - timestamp = gst_segment_to_stream_time(&mAudioSegment, - GST_FORMAT_TIME, timestamp); -+ - timestamp = GST_TIME_AS_USECONDS(timestamp); -+ - int64_t duration = 0; - if (GST_CLOCK_TIME_IS_VALID(GST_BUFFER_DURATION(buffer))) - duration = GST_TIME_AS_USECONDS(GST_BUFFER_DURATION(buffer)); - - int64_t offset = GST_BUFFER_OFFSET(buffer); -+#if GST_VERSION_MAJOR >= 1 -+ GstMapInfo info; -+ gst_buffer_map(buffer, &info, GST_MAP_READ); -+ unsigned int size = info.size; -+#else - unsigned int size = GST_BUFFER_SIZE(buffer); -+#endif - int32_t frames = (size / sizeof(AudioDataValue)) / mInfo.mAudio.mChannels; - ssize_t outSize = static_cast<size_t>(size / sizeof(AudioDataValue)); - nsAutoArrayPtr<AudioDataValue> data(new AudioDataValue[outSize]); -+#if GST_VERSION_MAJOR >= 1 -+ memcpy(data, info.data, info.size); -+ gst_buffer_unmap(buffer, &info); -+#else - memcpy(data, GST_BUFFER_DATA(buffer), GST_BUFFER_SIZE(buffer)); -+#endif - AudioData* audio = new AudioData(offset, timestamp, duration, - frames, data.forget(), mInfo.mAudio.mChannels); - -@@ -552,7 +620,7 @@ bool GStreamerReader::DecodeAudioData() - } - - bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip, -- int64_t aTimeThreshold) -+ int64_t aTimeThreshold) - { - NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread."); - -@@ -571,11 +639,11 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip, - /* We have nothing decoded so it makes no sense to return to the state machine - * as it will call us back immediately, we'll return again and so on, wasting - * CPU cycles for no job done. So, block here until there is either video or -- * audio data available -+ * audio data available - */ - mon.Wait(); - if (!mVideoSinkBufferCount) { -- /* There is still no video data available, so either there is audio data or -+ /* There is still no video data available, so either there is audio data or - * something else has happened (Eos, etc...). Return to the state machine - * to process it - */ -@@ -589,11 +657,17 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip, - - mDecoder->NotifyDecodedFrames(0, 1); - -+#if GST_VERSION_MAJOR >= 1 -+ GstSample *sample = gst_app_sink_pull_sample(mVideoAppSink); -+ buffer = gst_buffer_ref(gst_sample_get_buffer(sample)); -+ gst_sample_unref(sample); -+#else - buffer = gst_app_sink_pull_buffer(mVideoAppSink); -+#endif - mVideoSinkBufferCount--; - } - -- bool isKeyframe = !GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DISCONT); -+ bool isKeyframe = !GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DELTA_UNIT); - if ((aKeyFrameSkip && !isKeyframe)) { - gst_buffer_unref(buffer); - return true; -@@ -611,10 +687,18 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip, - "frame has invalid timestamp"); - - timestamp = GST_TIME_AS_USECONDS(timestamp); -+ int64_t duration; -+ if (GST_CLOCK_TIME_IS_VALID(GST_BUFFER_DURATION(buffer))) -+ duration = GST_TIME_AS_USECONDS(GST_BUFFER_DURATION(buffer)); -+ else if (fpsNum && fpsDen) -+ /* add 1-frame duration */ -+ duration = gst_util_uint64_scale(GST_USECOND, fpsDen, fpsNum); -+ - if (timestamp < aTimeThreshold) { - LOG(PR_LOG_DEBUG, "skipping frame %" GST_TIME_FORMAT - " threshold %" GST_TIME_FORMAT, -- GST_TIME_ARGS(timestamp), GST_TIME_ARGS(aTimeThreshold)); -+ GST_TIME_ARGS(timestamp * 1000), -+ GST_TIME_ARGS(aTimeThreshold * 1000)); - gst_buffer_unref(buffer); - return true; - } -@@ -623,61 +707,36 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip, - /* no more frames */ - return false; - -- int64_t duration = 0; -- if (GST_CLOCK_TIME_IS_VALID(GST_BUFFER_DURATION(buffer))) -- duration = GST_TIME_AS_USECONDS(GST_BUFFER_DURATION(buffer)); -- else if (fpsNum && fpsDen) -- /* 1-frame duration */ -- duration = gst_util_uint64_scale(GST_USECOND, fpsNum, fpsDen); -- -- nsRefPtr<PlanarYCbCrImage> image; -- GstMozVideoBufferData* bufferdata = reinterpret_cast<GstMozVideoBufferData*> -- GST_IS_MOZ_VIDEO_BUFFER(buffer)?gst_moz_video_buffer_get_data(GST_MOZ_VIDEO_BUFFER(buffer)):nullptr; -- -- if(bufferdata) -- image = bufferdata->mImage; -+#if GST_VERSION_MAJOR >= 1 -+ if (mConfigureAlignment && buffer->pool) { -+ GstStructure *config = gst_buffer_pool_get_config(buffer->pool); -+ GstVideoAlignment align; -+ if (gst_buffer_pool_config_get_video_alignment(config, &align)) -+ gst_video_info_align(&mVideoInfo, &align); -+ gst_structure_free(config); -+ mConfigureAlignment = false; -+ } -+#endif - -+ nsRefPtr<PlanarYCbCrImage> image = GetImageFromBuffer(buffer); - if (!image) { - /* Ugh, upstream is not calling gst_pad_alloc_buffer(). Fallback to - * allocating a PlanarYCbCrImage backed GstBuffer here and memcpy. - */ - GstBuffer* tmp = nullptr; -- AllocateVideoBufferFull(nullptr, GST_BUFFER_OFFSET(buffer), -- GST_BUFFER_SIZE(buffer), nullptr, &tmp, image); -- -- /* copy */ -- gst_buffer_copy_metadata(tmp, buffer, (GstBufferCopyFlags)GST_BUFFER_COPY_ALL); -- memcpy(GST_BUFFER_DATA(tmp), GST_BUFFER_DATA(buffer), -- GST_BUFFER_SIZE(tmp)); -+ CopyIntoImageBuffer(buffer, &tmp, image); - gst_buffer_unref(buffer); - buffer = tmp; - } - -- guint8* data = GST_BUFFER_DATA(buffer); -- -- int width = mPicture.width; -- int height = mPicture.height; -- GstVideoFormat format = mFormat; -- -- VideoData::YCbCrBuffer b; -- for(int i = 0; i < 3; i++) { -- b.mPlanes[i].mData = data + gst_video_format_get_component_offset(format, i, -- width, height); -- b.mPlanes[i].mStride = gst_video_format_get_row_stride(format, i, width); -- b.mPlanes[i].mHeight = gst_video_format_get_component_height(format, -- i, height); -- b.mPlanes[i].mWidth = gst_video_format_get_component_width(format, -- i, width); -- b.mPlanes[i].mOffset = 0; -- b.mPlanes[i].mSkip = 0; -- } -- -- isKeyframe = !GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DELTA_UNIT); - int64_t offset = mDecoder->GetResource()->Tell(); // Estimate location in media. -- VideoData* video = VideoData::Create(mInfo.mVideo, image, offset, -- timestamp, duration, b, -- isKeyframe, -1, mPicture); -+ VideoData* video = VideoData::CreateFromImage(mInfo.mVideo, -+ mDecoder->GetImageContainer(), -+ offset, timestamp, duration, -+ static_cast<Image*>(image.get()), -+ isKeyframe, -1, mPicture); - mVideoQueue.Push(video); -+ - gst_buffer_unref(buffer); - - return true; -@@ -698,6 +755,10 @@ nsresult GStreamerReader::Seek(int64_t aTarget, - return NS_ERROR_FAILURE; - } - LOG(PR_LOG_DEBUG, "seek succeeded"); -+ GstMessage* message = gst_bus_timed_pop_filtered(mBus, GST_CLOCK_TIME_NONE, -+ (GstMessageType)(GST_MESSAGE_ASYNC_DONE | GST_MESSAGE_ERROR)); -+ gst_message_unref(message); -+ LOG(PR_LOG_DEBUG, "seek completed"); - - return DecodeToTarget(aTarget); - } -@@ -709,7 +770,9 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered, - return NS_OK; - } - -+#if GST_VERSION_MAJOR == 0 - GstFormat format = GST_FORMAT_TIME; -+#endif - MediaResource* resource = mDecoder->GetResource(); - nsTArray<MediaByteRange> ranges; - resource->GetCachedRanges(ranges); -@@ -731,12 +794,21 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered, - int64_t endOffset = ranges[index].mEnd; - gint64 startTime, endTime; - -+#if GST_VERSION_MAJOR >= 1 -+ if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES, -+ startOffset, GST_FORMAT_TIME, &startTime)) -+ continue; -+ if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES, -+ endOffset, GST_FORMAT_TIME, &endTime)) -+ continue; -+#else - if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES, - startOffset, &format, &startTime) || format != GST_FORMAT_TIME) - continue; - if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES, - endOffset, &format, &endTime) || format != GST_FORMAT_TIME) - continue; -+#endif - - double start = (double) GST_TIME_AS_USECONDS (startTime) / GST_MSECOND; - double end = (double) GST_TIME_AS_USECONDS (endTime) / GST_MSECOND; -@@ -755,7 +827,13 @@ void GStreamerReader::ReadAndPushData(guint aLength) - nsresult rv = NS_OK; - - GstBuffer* buffer = gst_buffer_new_and_alloc(aLength); -+#if GST_VERSION_MAJOR >= 1 -+ GstMapInfo info; -+ gst_buffer_map(buffer, &info, GST_MAP_WRITE); -+ guint8 *data = info.data; -+#else - guint8* data = GST_BUFFER_DATA(buffer); -+#endif - uint32_t size = 0, bytesRead = 0; - while(bytesRead < aLength) { - rv = resource->Read(reinterpret_cast<char*>(data + bytesRead), -@@ -780,7 +860,12 @@ void GStreamerReader::ReadAndPushData(guint aLength) - int64_t offset2 = resource->Tell(); - unused << offset2; - -+#if GST_VERSION_MAJOR >= 1 -+ gst_buffer_unmap(buffer, &info); -+ gst_buffer_set_size(buffer, bytesRead); -+#else - GST_BUFFER_SIZE(buffer) = bytesRead; -+#endif - - GstFlowReturn ret = gst_app_src_push_buffer(mSource, gst_buffer_ref(buffer)); - if (ret != GST_FLOW_OK) { -@@ -786,8 +869,13 @@ int64_t GStreamerReader::QueryDuration() - gint64 duration = 0; - GstFormat format = GST_FORMAT_TIME; - -+#if GST_VERSION_MAJOR >= 1 -+ if (gst_element_query_duration(GST_ELEMENT(mPlayBin), -+ format, &duration)) { -+#else - if (gst_element_query_duration(GST_ELEMENT(mPlayBin), - &format, &duration)) { -+#endif - if (format == GST_FORMAT_TIME) { - LOG(PR_LOG_DEBUG, "pipeline duration %" GST_TIME_FORMAT, - GST_TIME_ARGS (duration)); -@@ -893,109 +984,6 @@ gboolean GStreamerReader::SeekData(GstAppSrc* aSrc, guint64 aOffset) - return NS_SUCCEEDED(rv); - } - --gboolean GStreamerReader::EventProbeCb(GstPad* aPad, -- GstEvent* aEvent, -- gpointer aUserData) --{ -- GStreamerReader* reader = reinterpret_cast<GStreamerReader*>(aUserData); -- return reader->EventProbe(aPad, aEvent); --} -- --gboolean GStreamerReader::EventProbe(GstPad* aPad, GstEvent* aEvent) --{ -- GstElement* parent = GST_ELEMENT(gst_pad_get_parent(aPad)); -- switch(GST_EVENT_TYPE(aEvent)) { -- case GST_EVENT_NEWSEGMENT: -- { -- gboolean update; -- gdouble rate; -- GstFormat format; -- gint64 start, stop, position; -- GstSegment* segment; -- -- /* Store the segments so we can convert timestamps to stream time, which -- * is what the upper layers sync on. -- */ -- ReentrantMonitorAutoEnter mon(mGstThreadsMonitor); -- gst_event_parse_new_segment(aEvent, &update, &rate, &format, -- &start, &stop, &position); -- if (parent == GST_ELEMENT(mVideoAppSink)) -- segment = &mVideoSegment; -- else -- segment = &mAudioSegment; -- gst_segment_set_newsegment(segment, update, rate, format, -- start, stop, position); -- break; -- } -- case GST_EVENT_FLUSH_STOP: -- /* Reset on seeks */ -- ResetDecode(); -- break; -- default: -- break; -- } -- gst_object_unref(parent); -- -- return TRUE; --} -- --GstFlowReturn GStreamerReader::AllocateVideoBufferFull(GstPad* aPad, -- guint64 aOffset, -- guint aSize, -- GstCaps* aCaps, -- GstBuffer** aBuf, -- nsRefPtr<PlanarYCbCrImage>& aImage) --{ -- /* allocate an image using the container */ -- ImageContainer* container = mDecoder->GetImageContainer(); -- if (!container) { -- // We don't have an ImageContainer. We probably belong to an <audio> -- // element. -- return GST_FLOW_NOT_SUPPORTED; -- } -- PlanarYCbCrImage* img = -- reinterpret_cast<PlanarYCbCrImage*>( -- container->CreateImage(ImageFormat::PLANAR_YCBCR).get()); -- nsRefPtr<PlanarYCbCrImage> image = dont_AddRef(img); -- -- /* prepare a GstBuffer pointing to the underlying PlanarYCbCrImage buffer */ -- GstBuffer* buf = GST_BUFFER(gst_moz_video_buffer_new()); -- GST_BUFFER_SIZE(buf) = aSize; -- /* allocate the actual YUV buffer */ -- GST_BUFFER_DATA(buf) = image->AllocateAndGetNewBuffer(aSize); -- -- aImage = image; -- -- /* create a GstMozVideoBufferData to hold the image */ -- GstMozVideoBufferData* bufferdata = new GstMozVideoBufferData(image); -- -- /* Attach bufferdata to our GstMozVideoBuffer, it will take care to free it */ -- gst_moz_video_buffer_set_data(GST_MOZ_VIDEO_BUFFER(buf), bufferdata); -- -- *aBuf = buf; -- return GST_FLOW_OK; --} -- --GstFlowReturn GStreamerReader::AllocateVideoBufferCb(GstPad* aPad, -- guint64 aOffset, -- guint aSize, -- GstCaps* aCaps, -- GstBuffer** aBuf) --{ -- GStreamerReader* reader = reinterpret_cast<GStreamerReader*>(gst_pad_get_element_private(aPad)); -- return reader->AllocateVideoBuffer(aPad, aOffset, aSize, aCaps, aBuf); --} -- --GstFlowReturn GStreamerReader::AllocateVideoBuffer(GstPad* aPad, -- guint64 aOffset, -- guint aSize, -- GstCaps* aCaps, -- GstBuffer** aBuf) --{ -- nsRefPtr<PlanarYCbCrImage> image; -- return AllocateVideoBufferFull(aPad, aOffset, aSize, aCaps, aBuf, image); --} -- - GstFlowReturn GStreamerReader::NewPrerollCb(GstAppSink* aSink, - gpointer aUserData) - { -@@ -979,8 +970,12 @@ void GStreamerReader::AudioPreroll() - { - /* The first audio buffer has reached the audio sink. Get rate and channels */ - LOG(PR_LOG_DEBUG, "Audio preroll"); -- GstPad* sinkpad = gst_element_get_pad(GST_ELEMENT(mAudioAppSink), "sink"); -+ GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mAudioAppSink), "sink"); -+#if GST_VERSION_MAJOR >= 1 -+ GstCaps *caps = gst_pad_get_current_caps(sinkpad); -+#else - GstCaps* caps = gst_pad_get_negotiated_caps(sinkpad); -+#endif - GstStructure* s = gst_caps_get_structure(caps, 0); - mInfo.mAudio.mRate = mInfo.mAudio.mChannels = 0; - gst_structure_get_int(s, "rate", (gint*) &mInfo.mAudio.mRate); -@@ -998,9 +993,18 @@ void GStreamerReader::VideoPreroll() - { - /* The first video buffer has reached the video sink. Get width and height */ - LOG(PR_LOG_DEBUG, "Video preroll"); -- GstPad* sinkpad = gst_element_get_pad(GST_ELEMENT(mVideoAppSink), "sink"); -+ GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mVideoAppSink), "sink"); -+#if GST_VERSION_MAJOR >= 1 -+ GstCaps* caps = gst_pad_get_current_caps(sinkpad); -+ memset (&mVideoInfo, 0, sizeof (mVideoInfo)); -+ gst_video_info_from_caps(&mVideoInfo, caps); -+ mFormat = mVideoInfo.finfo->format; -+ mPicture.width = mVideoInfo.width; -+ mPicture.height = mVideoInfo.height; -+#else - GstCaps* caps = gst_pad_get_negotiated_caps(sinkpad); - gst_video_format_parse_caps(caps, &mFormat, &mPicture.width, &mPicture.height); -+#endif - GstStructure* structure = gst_caps_get_structure(caps, 0); - gst_structure_get_fraction(structure, "framerate", &fpsNum, &fpsDen); - NS_ASSERTION(mPicture.width && mPicture.height, "invalid video resolution"); -@@ -1029,6 +1033,7 @@ void GStreamerReader::NewVideoBuffer() - /* We have a new video buffer queued in the video sink. Increment the counter - * and notify the decode thread potentially blocked in DecodeVideoFrame - */ -+ - mDecoder->NotifyDecodedFrames(1, 0); - mVideoSinkBufferCount++; - mon.NotifyAll(); -@@ -1095,5 +1100,199 @@ void GStreamerReader::NotifyDataArrived(const char *aBuffer, - } - } - -+#if GST_VERSION_MAJOR >= 1 -+GstCaps* GStreamerReader::BuildAudioSinkCaps() -+{ -+ GstCaps* caps = gst_caps_from_string("audio/x-raw, channels={1,2}"); -+ const char* format; -+#ifdef MOZ_SAMPLE_TYPE_FLOAT32 -+#ifdef IS_LITTLE_ENDIAN -+ format = "F32LE"; -+#else -+ format = "F32BE"; -+#endif -+#else /* !MOZ_SAMPLE_TYPE_FLOAT32 */ -+#ifdef IS_LITTLE_ENDIAN -+ format = "S16LE"; -+#else -+ format = "S16BE"; -+#endif -+#endif -+ gst_caps_set_simple(caps, "format", G_TYPE_STRING, format, nullptr); -+ -+ return caps; -+} -+ -+void GStreamerReader::InstallPadCallbacks() -+{ -+ GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mVideoAppSink), "sink"); -+ -+ gst_pad_add_probe(sinkpad, -+ (GstPadProbeType) (GST_PAD_PROBE_TYPE_SCHEDULING | -+ GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM | -+ GST_PAD_PROBE_TYPE_EVENT_UPSTREAM | -+ GST_PAD_PROBE_TYPE_EVENT_FLUSH), -+ &GStreamerReader::EventProbeCb, this, nullptr); -+ gst_pad_add_probe(sinkpad, GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM, -+ GStreamerReader::QueryProbeCb, nullptr, nullptr); -+ -+ gst_pad_set_element_private(sinkpad, this); -+ gst_object_unref(sinkpad); -+ -+ sinkpad = gst_element_get_static_pad(GST_ELEMENT(mAudioAppSink), "sink"); -+ gst_pad_add_probe(sinkpad, -+ (GstPadProbeType) (GST_PAD_PROBE_TYPE_SCHEDULING | -+ GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM | -+ GST_PAD_PROBE_TYPE_EVENT_UPSTREAM | -+ GST_PAD_PROBE_TYPE_EVENT_FLUSH), -+ &GStreamerReader::EventProbeCb, this, nullptr); -+ gst_object_unref(sinkpad); -+} -+ -+GstPadProbeReturn GStreamerReader::EventProbeCb(GstPad *aPad, -+ GstPadProbeInfo *aInfo, -+ gpointer aUserData) -+{ -+ GStreamerReader *reader = (GStreamerReader *) aUserData; -+ GstEvent *aEvent = (GstEvent *)aInfo->data; -+ return reader->EventProbe(aPad, aEvent); -+} -+ -+GstPadProbeReturn GStreamerReader::EventProbe(GstPad *aPad, GstEvent *aEvent) -+{ -+ GstElement* parent = GST_ELEMENT(gst_pad_get_parent(aPad)); -+ -+ LOG(PR_LOG_DEBUG, "event probe %s", GST_EVENT_TYPE_NAME (aEvent)); -+ -+ switch(GST_EVENT_TYPE(aEvent)) { -+ case GST_EVENT_SEGMENT: -+ { -+ const GstSegment *newSegment; -+ GstSegment* segment; -+ -+ /* Store the segments so we can convert timestamps to stream time, which -+ * is what the upper layers sync on. -+ */ -+ ReentrantMonitorAutoEnter mon(mGstThreadsMonitor); -+#if GST_VERSION_MINOR <= 1 && GST_VERSION_MICRO < 1 -+ ResetDecode(); -+#endif -+ gst_event_parse_segment(aEvent, &newSegment); -+ if (parent == GST_ELEMENT(mVideoAppSink)) -+ segment = &mVideoSegment; -+ else -+ segment = &mAudioSegment; -+ gst_segment_copy_into (newSegment, segment); -+ break; -+ } -+ case GST_EVENT_FLUSH_STOP: -+ /* Reset on seeks */ -+ ResetDecode(); -+ break; -+ default: -+ break; -+ } -+ gst_object_unref(parent); -+ -+ return GST_PAD_PROBE_OK; -+} -+ -+GstPadProbeReturn GStreamerReader::QueryProbeCb(GstPad* aPad, GstPadProbeInfo* aInfo, gpointer aUserData) -+{ -+ GStreamerReader* reader = reinterpret_cast<GStreamerReader*>(gst_pad_get_element_private(aPad)); -+ return reader->QueryProbe(aPad, aInfo, aUserData); -+} -+ -+GstPadProbeReturn GStreamerReader::QueryProbe(GstPad* aPad, GstPadProbeInfo* aInfo, gpointer aUserData) -+{ -+ GstQuery *query = gst_pad_probe_info_get_query(aInfo); -+ GstPadProbeReturn ret = GST_PAD_PROBE_OK; -+ -+ switch (GST_QUERY_TYPE (query)) { -+ case GST_QUERY_ALLOCATION: -+ GstCaps *caps; -+ GstVideoInfo info; -+ gboolean need_pool; -+ -+ gst_query_parse_allocation(query, &caps, &need_pool); -+ gst_video_info_init(&info); -+ gst_video_info_from_caps(&info, caps); -+ gst_query_add_allocation_param(query, mAllocator, nullptr); -+ gst_query_add_allocation_pool(query, mBufferPool, info.size, 0, 0); -+ gst_query_add_allocation_meta(query, GST_VIDEO_META_API_TYPE, nullptr); -+ break; -+ default: -+ break; -+ } -+ -+ return ret; -+} -+ -+void GStreamerReader::ImageDataFromVideoFrame(GstVideoFrame *aFrame, -+ PlanarYCbCrImage::Data *aData) -+{ -+ NS_ASSERTION(GST_VIDEO_INFO_IS_YUV(&mVideoInfo), -+ "Non-YUV video frame formats not supported"); -+ NS_ASSERTION(GST_VIDEO_FRAME_N_COMPONENTS(aFrame) == 3, -+ "Unsupported number of components in video frame"); -+ -+ aData->mPicX = aData->mPicY = 0; -+ aData->mPicSize = gfx::IntSize(mPicture.width, mPicture.height); -+ aData->mStereoMode = StereoMode::MONO; -+ -+ aData->mYChannel = GST_VIDEO_FRAME_COMP_DATA(aFrame, 0); -+ aData->mYStride = GST_VIDEO_FRAME_COMP_STRIDE(aFrame, 0); -+ aData->mYSize = gfx::IntSize(GST_VIDEO_FRAME_COMP_WIDTH(aFrame, 0), -+ GST_VIDEO_FRAME_COMP_HEIGHT(aFrame, 0)); -+ aData->mYSkip = GST_VIDEO_FRAME_COMP_PSTRIDE(aFrame, 0) - 1; -+ aData->mCbCrStride = GST_VIDEO_FRAME_COMP_STRIDE(aFrame, 1); -+ aData->mCbCrSize = gfx::IntSize(GST_VIDEO_FRAME_COMP_WIDTH(aFrame, 1), -+ GST_VIDEO_FRAME_COMP_HEIGHT(aFrame, 1)); -+ aData->mCbChannel = GST_VIDEO_FRAME_COMP_DATA(aFrame, 1); -+ aData->mCrChannel = GST_VIDEO_FRAME_COMP_DATA(aFrame, 2); -+ aData->mCbSkip = GST_VIDEO_FRAME_COMP_PSTRIDE(aFrame, 1) - 1; -+ aData->mCrSkip = GST_VIDEO_FRAME_COMP_PSTRIDE(aFrame, 2) - 1; -+} -+ -+nsRefPtr<PlanarYCbCrImage> GStreamerReader::GetImageFromBuffer(GstBuffer* aBuffer) -+{ -+ nsRefPtr<PlanarYCbCrImage> image = nullptr; -+ -+ if (gst_buffer_n_memory(aBuffer) == 1) { -+ GstMemory* mem = gst_buffer_peek_memory(aBuffer, 0); -+ if (GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(mem->allocator)) { -+ image = moz_gfx_memory_get_image(mem); -+ -+ GstVideoFrame frame; -+ gst_video_frame_map(&frame, &mVideoInfo, aBuffer, GST_MAP_READ); -+ PlanarYCbCrImage::Data data; -+ ImageDataFromVideoFrame(&frame, &data); -+ image->SetDataNoCopy(data); -+ gst_video_frame_unmap(&frame); -+ } -+ } -+ -+ return image; -+} -+ -+void GStreamerReader::CopyIntoImageBuffer(GstBuffer* aBuffer, -+ GstBuffer** aOutBuffer, -+ nsRefPtr<PlanarYCbCrImage> &image) -+{ -+ *aOutBuffer = gst_buffer_new_allocate(mAllocator, gst_buffer_get_size(aBuffer), nullptr); -+ GstMemory *mem = gst_buffer_peek_memory(*aOutBuffer, 0); -+ GstMapInfo map_info; -+ gst_memory_map(mem, &map_info, GST_MAP_WRITE); -+ gst_buffer_extract(aBuffer, 0, map_info.data, gst_buffer_get_size(aBuffer)); -+ gst_memory_unmap(mem, &map_info); -+ -+ /* create a new gst buffer with the newly created memory and copy the -+ * metadata over from the incoming buffer */ -+ gst_buffer_copy_into(*aOutBuffer, aBuffer, -+ (GstBufferCopyFlags)(GST_BUFFER_COPY_METADATA), 0, -1); -+ image = GetImageFromBuffer(*aOutBuffer); -+} -+#endif -+ - } // namespace mozilla - -diff --git content/media/gstreamer/GStreamerReader.h content/media/gstreamer/GStreamerReader.h -index 1e30bed..6a90702 100644 ---- content/media/gstreamer/GStreamerReader.h -+++ content/media/gstreamer/GStreamerReader.h -@@ -22,6 +22,7 @@ - - #include "MediaDecoderReader.h" - #include "MP3FrameParser.h" -+#include "ImageContainer.h" - #include "nsRect.h" - - namespace mozilla { -@@ -30,10 +31,6 @@ namespace dom { - class TimeRanges; - } - --namespace layers { --class PlanarYCbCrImage; --} -- - class AbstractMediaDecoder; - - class GStreamerReader : public MediaDecoderReader -@@ -67,10 +64,20 @@ public: - return mInfo.HasVideo(); - } - -+ layers::ImageContainer* GetImageContainer() { return mDecoder->GetImageContainer(); } -+ - private: - - void ReadAndPushData(guint aLength); - int64_t QueryDuration(); -+ nsRefPtr<layers::PlanarYCbCrImage> GetImageFromBuffer(GstBuffer* aBuffer); -+ void CopyIntoImageBuffer(GstBuffer *aBuffer, GstBuffer** aOutBuffer, nsRefPtr<layers::PlanarYCbCrImage> &image); -+ GstCaps* BuildAudioSinkCaps(); -+ void InstallPadCallbacks(); -+ -+#if GST_VERSION_MAJOR >= 1 -+ void ImageDataFromVideoFrame(GstVideoFrame *aFrame, layers::PlanarYCbCrImage::Data *aData); -+#endif - - /* Called once the pipeline is setup to check that the stream only contains - * supported formats -@@ -105,20 +112,31 @@ private: - gboolean SeekData(GstAppSrc* aSrc, guint64 aOffset); - - /* Called when events reach the sinks. See inline comments */ -+#if GST_VERSION_MAJOR == 1 -+ static GstPadProbeReturn EventProbeCb(GstPad *aPad, GstPadProbeInfo *aInfo, gpointer aUserData); -+ GstPadProbeReturn EventProbe(GstPad *aPad, GstEvent *aEvent); -+#else - static gboolean EventProbeCb(GstPad* aPad, GstEvent* aEvent, gpointer aUserData); - gboolean EventProbe(GstPad* aPad, GstEvent* aEvent); -+#endif - -- /* Called when elements in the video branch of the pipeline call -- * gst_pad_alloc_buffer(). Used to provide PlanarYCbCrImage backed GstBuffers -- * to the pipeline so that a memory copy can be avoided when handling YUV -- * buffers from the pipeline to the gfx side. -+ /* Called when the video part of the pipeline allocates buffers. Used to -+ * provide PlanarYCbCrImage backed GstBuffers to the pipeline so that a memory -+ * copy can be avoided when handling YUV buffers from the pipeline to the gfx -+ * side. - */ -+#if GST_VERSION_MAJOR == 1 -+ static GstPadProbeReturn QueryProbeCb(GstPad *aPad, GstPadProbeInfo *aInfo, gpointer aUserData); -+ GstPadProbeReturn QueryProbe(GstPad *aPad, GstPadProbeInfo *aInfo, gpointer aUserData); -+#else - static GstFlowReturn AllocateVideoBufferCb(GstPad* aPad, guint64 aOffset, guint aSize, - GstCaps* aCaps, GstBuffer** aBuf); - GstFlowReturn AllocateVideoBufferFull(GstPad* aPad, guint64 aOffset, guint aSize, - GstCaps* aCaps, GstBuffer** aBuf, nsRefPtr<layers::PlanarYCbCrImage>& aImage); - GstFlowReturn AllocateVideoBuffer(GstPad* aPad, guint64 aOffset, guint aSize, - GstCaps* aCaps, GstBuffer** aBuf); -+#endif -+ - - /* Called when the pipeline is prerolled, that is when at start or after a - * seek, the first audio and video buffers are queued in the sinks. -@@ -150,6 +168,11 @@ private: - bool mUseParserDuration; - int64_t mLastParserDuration; - -+#if GST_VERSION_MAJOR >= 1 -+ GstAllocator *mAllocator; -+ GstBufferPool *mBufferPool; -+ GstVideoInfo mVideoInfo; -+#endif - GstElement* mPlayBin; - GstBus* mBus; - GstAppSrc* mSource; -@@ -180,6 +203,9 @@ private: - * DecodeAudioData and DecodeVideoFrame should not expect any more data - */ - bool mReachedEos; -+#if GST_VERSION_MAJOR >= 1 -+ bool mConfigureAlignment; -+#endif - int fpsNum; - int fpsDen; - }; -diff --git content/media/gstreamer/moz.build content/media/gstreamer/moz.build -index 7d51bf5..a3c1856 100644 ---- content/media/gstreamer/moz.build -+++ content/media/gstreamer/moz.build -@@ -15,10 +15,19 @@ SOURCES += [ - 'GStreamerDecoder.cpp', - 'GStreamerFormatHelper.cpp', - 'GStreamerLoader.cpp', -- 'GStreamerMozVideoBuffer.cpp', - 'GStreamerReader.cpp', - ] - -+if CONFIG['GST_API_VERSION'] == '1.0': -+ SOURCES += [ -+ 'GStreamerAllocator.cpp', -+ ] -+else: -+ SOURCES += [ -+ 'GStreamerMozVideoBuffer.cpp', -+ 'GStreamerReader-0.10.cpp', -+ ] -+ - FAIL_ON_WARNINGS = True - - FINAL_LIBRARY = 'gklayout' -diff --git content/media/test/manifest.js content/media/test/manifest.js -index 6e39753..3c8c3b9 100644 ---- content/media/test/manifest.js -+++ content/media/test/manifest.js -@@ -357,9 +357,9 @@ var gUnseekableTests = [ - { name:"bogus.duh", type:"bogus/duh"} - ]; - // Unfortunately big-buck-bunny-unseekable.mp4 is doesn't play on Windows 7, so --// only include it in the unseekable tests if we're on later versions of Windows. --if (navigator.userAgent.indexOf("Windows") == -1 || -- IsWindows8OrLater()) { -+// only include it in the unseekable tests if we're on later versions of Windows. -+// This test actually only passes on win8 at the moment. -+if (navigator.userAgent.indexOf("Windows") != -1 && IsWindows8OrLater()) { - gUnseekableTests = gUnseekableTests.concat([ - { name:"big-buck-bunny-unseekable.mp4", type:"video/mp4" } - ]); diff --git a/www/firefox/files/patch-bug847568 b/www/firefox/files/patch-bug847568 index a253bbdcaf66..aa188f985b8b 100644 --- a/www/firefox/files/patch-bug847568 +++ b/www/firefox/files/patch-bug847568 @@ -86,21 +86,20 @@ index ac38f40..87536b7 100644 dnl Check for pixman and cairo dnl ======================================================== -diff --git content/base/src/Makefile.in content/base/src/Makefile.in -index a618096..596901a 100644 ---- content/base/src/Makefile.in -+++ content/base/src/Makefile.in -@@ -5,6 +5,10 @@ - - include $(topsrcdir)/config/rules.mk +diff --git content/base/src/moz.build content/base/src/moz.build +index d4f6380..0ee55df 100644 +--- content/base/src/moz.build ++++ content/base/src/moz.build +@@ -179,6 +179,9 @@ SOURCES += [ + 'nsObjectLoadingContent.cpp', + ] -+ifdef MOZ_NATIVE_HARFBUZZ -+nsContentUtils.$(OBJ_SUFFIX): CXXFLAGS+=$(MOZ_HARFBUZZ_CFLAGS) -+endif ++if CONFIG['MOZ_NATIVE_HARFBUZZ']: ++ SOURCES['nsContentUtils.cpp'].flags += [CONFIG['MOZ_HARFBUZZ_CFLAGS']] + - # gcc requires -msse2 for this file since it uses SSE2 intrinsics. (See bug - # 585538 comment 12.) - ifneq (,$(INTEL_ARCHITECTURE)) + EXTRA_COMPONENTS += [ + 'contentAreaDropListener.js', + 'contentAreaDropListener.manifest', diff --git gfx/moz.build gfx/moz.build index 519aa46..6929751 100644 --- gfx/moz.build diff --git a/www/firefox/files/patch-bug916589 b/www/firefox/files/patch-bug916589 index 5748c3316f85..c6c6c58c9175 100644 --- a/www/firefox/files/patch-bug916589 +++ b/www/firefox/files/patch-bug916589 @@ -2,17 +2,8 @@ diff --git media/mtransport/third_party/nrappkit/src/port/generic/include/sys/qu index 5b50785..7cf47d5 100644 --- media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h +++ media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h -@@ -31,11 +31,18 @@ - */ - --#ifndef _SYS_QUEUE_H_ -+#if (defined(BSD) && !defined(__OpenBSD__)) || defined(DARWIN) -+#include_next <sys/queue.h> -+# if defined(__DragonFly__) -+#define STAILQ_FOREACH_SAFE STAILQ_FOREACH_MUTABLE -+#define TAILQ_FOREACH_SAFE TAILQ_FOREACH_MUTABLE -+# endif -+#elif !defined(_SYS_QUEUE_H_) +@@ -33,9 +33,10 @@ + #ifndef _SYS_QUEUE_H_ #define _SYS_QUEUE_H_ -#if !defined(__FreeBSD__) && !defined(DARWIN) @@ -24,7 +15,7 @@ index 5b50785..7cf47d5 100644 #endif #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ -@@ -43,8 +46,6 @@ +@@ -43,8 +44,6 @@ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ (var) = (tvar)) @@ -33,7 +24,7 @@ index 5b50785..7cf47d5 100644 /* * This file defines four types of data structures: singly-linked lists, * singly-linked tail queues, lists and tail queues. -@@ -285,7 +286,7 @@ struct { \ +@@ -285,7 +284,7 @@ struct { \ (STAILQ_EMPTY((head)) ? \ NULL : \ ((struct type *) \ diff --git a/www/firefox/files/patch-bug973744 b/www/firefox/files/patch-bug973744 deleted file mode 100644 index 6e700705cfbc..000000000000 --- a/www/firefox/files/patch-bug973744 +++ /dev/null @@ -1,38 +0,0 @@ -commit 2506904 -Author: Alessandro Decina <alessandro.d@gmail.com> -Date: Wed Feb 19 11:30:09 2014 -0500 - - Bug 973744 - Remove matroska seek hack in the gstreamer media backend. r=edwin ---- - content/media/gstreamer/GStreamerReader.cpp | 21 --------------------- - 1 file changed, 21 deletions(-) - -diff --git content/media/gstreamer/GStreamerReader.cpp content/media/gstreamer/GStreamerReader.cpp -index e21ffdd..82dadeb 100644 ---- content/media/gstreamer/GStreamerReader.cpp -+++ content/media/gstreamer/GStreamerReader.cpp -@@ -381,24 +381,6 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, - /* we couldn't get this to play */ - return ret; - -- /* FIXME: workaround for a bug in matroskademux. This seek makes matroskademux -- * parse the index */ -- LOG(PR_LOG_DEBUG, "doing matroskademux seek hack"); -- if (gst_element_seek_simple(mPlayBin, GST_FORMAT_TIME, -- GST_SEEK_FLAG_FLUSH, 0)) { -- /* after a seek we need to wait again for ASYNC_DONE */ -- message = gst_bus_timed_pop_filtered(mBus, 5 * GST_SECOND, -- (GstMessageType)(GST_MESSAGE_ASYNC_DONE | GST_MESSAGE_ERROR)); -- LOG(PR_LOG_DEBUG, "matroskademux seek hack done"); -- if (GST_MESSAGE_TYPE(message) != GST_MESSAGE_ASYNC_DONE) { -- gst_element_set_state(mPlayBin, GST_STATE_NULL); -- gst_message_unref(message); -- return NS_ERROR_FAILURE; -- } -- } else { -- LOG(PR_LOG_DEBUG, "matroskademux seek hack failed (non fatal)"); -- } -- - /* report the duration */ - gint64 duration; - diff --git a/www/firefox/files/patch-bug975397 b/www/firefox/files/patch-bug975397 new file mode 100644 index 000000000000..6257e53e772d --- /dev/null +++ b/www/firefox/files/patch-bug975397 @@ -0,0 +1,73 @@ +commit 2fe45fb +Author: L. David Baron <dbaron@dbaron.org> +Date: Wed Apr 2 22:56:19 2014 -0700 + + Bug 975397 - Call TrackImage when constructing a new nsStyleBorder. r=heycam + + I confirmed that the crashtest crashes in the harness without the patch. + + --HG-- + rename : layout/reftests/backgrounds/blue-32x32.png => layout/style/crashtests/blue-32x32.png +--- + layout/base/nsCSSRendering.cpp | 9 +++++++++ + layout/style/crashtests/blue-32x32.png | Bin 0 -> 110 bytes + layout/style/crashtests/border-image-visited-link.html | 10 ++++++++++ + layout/style/crashtests/crashtests.list | 1 + + 4 files changed, 20 insertions(+) + +diff --git layout/base/nsCSSRendering.cpp layout/base/nsCSSRendering.cpp +index d91309b..2d8bb46 100644 +--- layout/base/nsCSSRendering.cpp ++++ layout/base/nsCSSRendering.cpp +@@ -419,6 +419,10 @@ nsCSSRendering::PaintBorder(nsPresContext* aPresContext, + } + + nsStyleBorder newStyleBorder(*styleBorder); ++ // We could do something fancy to avoid the TrackImage/UntrackImage ++ // work, but it doesn't seem worth it. (We need to call TrackImage ++ // since we're not going through nsRuleNode::ComputeBorderData.) ++ newStyleBorder.TrackImage(aPresContext); + + NS_FOR_CSS_SIDES(side) { + newStyleBorder.SetBorderColor(side, +@@ -428,6 +432,11 @@ nsCSSRendering::PaintBorder(nsPresContext* aPresContext, + PaintBorderWithStyleBorder(aPresContext, aRenderingContext, aForFrame, + aDirtyRect, aBorderArea, newStyleBorder, + aStyleContext, aSkipSides); ++ ++ // We could do something fancy to avoid the TrackImage/UntrackImage ++ // work, but it doesn't seem worth it. (We need to call UntrackImage ++ // since we're not going through nsStyleBorder::Destroy.) ++ newStyleBorder.UntrackImage(aPresContext); + } + + void +diff --git layout/style/crashtests/blue-32x32.png layout/style/crashtests/blue-32x32.png +new file mode 100644 +index 0000000..deefd19 +Binary files /dev/null and layout/style/crashtests/blue-32x32.png differ +diff --git layout/style/crashtests/border-image-visited-link.html layout/style/crashtests/border-image-visited-link.html +new file mode 100644 +index 0000000..b6e3ae5 +--- /dev/null ++++ layout/style/crashtests/border-image-visited-link.html +@@ -0,0 +1,10 @@ ++<!DOCTYPE HTML> ++<title>border-image on link with visited styles</title> ++<style> ++ ++:link { color: blue } ++:visited { color: purple } ++:link, :visited { border: medium solid; border-image: url(blue-32x32.png) 4 4 4 4; } ++ ++</style> ++<a href="http://example.com/">test</a> +diff --git layout/style/crashtests/crashtests.list layout/style/crashtests/crashtests.list +index e414f28..acd709c3 100644 +--- layout/style/crashtests/crashtests.list ++++ layout/style/crashtests/crashtests.list +@@ -104,3 +104,4 @@ load 945048-1.html + load 972199-1.html + load 989965-1.html + load large_border_image_width.html ++load border-image-visited-link.html diff --git a/www/firefox/files/patch-bug975634 b/www/firefox/files/patch-bug975634 deleted file mode 100644 index 4b53531a9a34..000000000000 --- a/www/firefox/files/patch-bug975634 +++ /dev/null @@ -1,63 +0,0 @@ -diff --git configure.in configure.in -index 0d9236a..0447104 100644 ---- configure.in -+++ configure.in -@@ -8670,6 +8670,20 @@ fi - AC_SUBST(MOZ_EM_DEBUG) - - if test -n "$COMPILE_ENVIRONMENT"; then -+AC_MSG_CHECKING([for posix_fadvise]) -+AC_TRY_LINK([#define _XOPEN_SOURCE 600 -+ #include <fcntl.h>], -+ [posix_fadvise(0, 0, 0, 0);], -+ [ac_cv___posix_fadvise=true], -+ [ac_cv___posix_fadvise=false]) -+ -+if test "$ac_cv___posix_fadvise" = true ; then -+ AC_DEFINE(HAVE_POSIX_FADVISE) -+ AC_MSG_RESULT(yes) -+else -+ AC_MSG_RESULT(no) -+fi -+ - AC_MSG_CHECKING([for posix_fallocate]) - AC_TRY_LINK([#define _XOPEN_SOURCE 600 - #include <fcntl.h>], -diff --git js/src/configure.in js/src/configure.in -index da9767c..352ba14 100644 ---- js/src/configure.in -+++ js/src/configure.in -@@ -4025,6 +4025,20 @@ AC_SUBST(CXX_VERSION) - AC_SUBST(MSMANIFEST_TOOL) - AC_SUBST(MOZ_LINKER) - -+AC_MSG_CHECKING([for posix_fadvise]) -+AC_TRY_LINK([#define _XOPEN_SOURCE 600 -+ #include <fcntl.h>], -+ [posix_fadvise(0, 0, 0, 0);], -+ [ac_cv___posix_fadvise=true], -+ [ac_cv___posix_fadvise=false]) -+ -+if test "$ac_cv___posix_fadvise" = true ; then -+ AC_DEFINE(HAVE_POSIX_FADVISE) -+ AC_MSG_RESULT(yes) -+else -+ AC_MSG_RESULT(no) -+fi -+ - AC_MSG_CHECKING([for posix_fallocate]) - AC_TRY_LINK([#define _XOPEN_SOURCE 600 - #include <fcntl.h>], -diff --git xpcom/io/nsLocalFileUnix.cpp xpcom/io/nsLocalFileUnix.cpp -index bacf06c..0e46e4a 100644 ---- xpcom/io/nsLocalFileUnix.cpp -+++ xpcom/io/nsLocalFileUnix.cpp -@@ -382,7 +382,7 @@ nsLocalFile::OpenNSPRFileDesc(int32_t flags, int32_t mode, PRFileDesc **_retval) - PR_Delete(mPath.get()); - } - --#if defined(LINUX) && !defined(ANDROID) -+#if defined(HAVE_POSIX_FADVISE) - if (flags & OS_READAHEAD) { - posix_fadvise(PR_FileDesc2NativeHandle(*_retval), 0, 0, - POSIX_FADV_SEQUENTIAL); diff --git a/www/firefox/files/patch-bug977457 b/www/firefox/files/patch-bug977457 deleted file mode 100644 index cf57b6b1b809..000000000000 --- a/www/firefox/files/patch-bug977457 +++ /dev/null @@ -1,27 +0,0 @@ -diff --git xpcom/base/nsStackWalk.cpp xpcom/base/nsStackWalk.cpp -index bb0e15b..7641267 100644 ---- xpcom/base/nsStackWalk.cpp -+++ xpcom/base/nsStackWalk.cpp -@@ -23,6 +23,12 @@ struct CriticalAddress { - }; - static CriticalAddress gCriticalAddress; - -+// for _Unwind_Backtrace from libcxxrt or libunwind -+// cxxabi.h from libcxxrt implicitly includes unwind.h first -+#if defined(HAVE__UNWIND_BACKTRACE) && !defined(_GNU_SOURCE) -+#define _GNU_SOURCE -+#endif -+ - #if defined(HAVE_DLOPEN) || defined(XP_MACOSX) - #include <dlfcn.h> - #endif -@@ -1222,9 +1228,6 @@ NS_StackWalk(NS_WalkStackCallback aCallback, uint32_t aSkipFrames, - #elif defined(HAVE__UNWIND_BACKTRACE) - - // libgcc_s.so symbols _Unwind_Backtrace@@GCC_3.3 and _Unwind_GetIP@@GCC_3.0 --#ifndef _GNU_SOURCE --#define _GNU_SOURCE --#endif - #include <unwind.h> - - struct unwind_info { diff --git a/www/firefox/files/patch-bug981348 b/www/firefox/files/patch-bug981348 new file mode 100644 index 000000000000..6eb877b08fa8 --- /dev/null +++ b/www/firefox/files/patch-bug981348 @@ -0,0 +1,41 @@ +diff --git dom/system/OSFileConstants.cpp dom/system/OSFileConstants.cpp +index 4b21361..cb3be32 100644 +--- dom/system/OSFileConstants.cpp ++++ dom/system/OSFileConstants.cpp +@@ -596,7 +596,7 @@ static const dom::ConstantSpec gLibcProperties[] = + + { "OSFILE_SIZEOF_STATVFS", INT_TO_JSVAL(sizeof (struct statvfs)) }, + +- { "OSFILE_OFFSETOF_STATVFS_F_BSIZE", INT_TO_JSVAL(offsetof (struct statvfs, f_bsize)) }, ++ { "OSFILE_OFFSETOF_STATVFS_F_FRSIZE", INT_TO_JSVAL(offsetof (struct statvfs, f_frsize)) }, + { "OSFILE_OFFSETOF_STATVFS_F_BAVAIL", INT_TO_JSVAL(offsetof (struct statvfs, f_bavail)) }, + + #endif // defined(XP_UNIX) +diff --git toolkit/components/osfile/modules/osfile_unix_back.jsm toolkit/components/osfile/modules/osfile_unix_back.jsm +index b59fca4..0cf220b 100644 +--- toolkit/components/osfile/modules/osfile_unix_back.jsm ++++ toolkit/components/osfile/modules/osfile_unix_back.jsm +@@ -228,8 +228,8 @@ + let statvfs = new SharedAll.HollowStructure("statvfs", + Const.OSFILE_SIZEOF_STATVFS); + +- statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_BSIZE, +- "f_bsize", Type.unsigned_long.implementation); ++ statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_FRSIZE, ++ "f_frsize", Type.unsigned_long.implementation); + statvfs.add_field_at(Const.OSFILE_OFFSETOF_STATVFS_F_BAVAIL, + "f_bavail", Type.fsblkcnt_t.implementation); + +diff --git toolkit/components/osfile/modules/osfile_unix_front.jsm toolkit/components/osfile/modules/osfile_unix_front.jsm +index 99e5e9b..de642c5 100644 +--- toolkit/components/osfile/modules/osfile_unix_front.jsm ++++ toolkit/components/osfile/modules/osfile_unix_front.jsm +@@ -373,7 +373,7 @@ + throw_on_negative("statvfs", UnixFile.statvfs(sourcePath, fileSystemInfoPtr)); + + let bytes = new Type.uint64_t.implementation( +- fileSystemInfo.f_bsize * fileSystemInfo.f_bavail); ++ fileSystemInfo.f_frsize * fileSystemInfo.f_bavail); + + return bytes.value; + }; diff --git a/www/firefox/files/patch-bug985848 b/www/firefox/files/patch-bug985848 deleted file mode 100644 index c20c0e039827..000000000000 --- a/www/firefox/files/patch-bug985848 +++ /dev/null @@ -1,22 +0,0 @@ ---- media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc -+++ media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc -@@ -19,7 +19,7 @@ - #include <stdlib.h> - - //v4l includes --#if defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) -+#if defined(__NetBSD__) || defined(__OpenBSD__) - #include <sys/videoio.h> - #elif defined(__sun) - #include <sys/videodev2.h> ---- media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc -+++ media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc -@@ -18,7 +18,7 @@ - #include <string.h> - - //v4l includes --#if defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) -+#if defined(__NetBSD__) || defined(__OpenBSD__) - #include <sys/videoio.h> - #elif defined(__sun) - #include <sys/videodev2.h> diff --git a/www/firefox/files/patch-bug989112 b/www/firefox/files/patch-bug989112 deleted file mode 100644 index 3127fe348d42..000000000000 --- a/www/firefox/files/patch-bug989112 +++ /dev/null @@ -1,10 +0,0 @@ ---- content/media/gstreamer/GStreamerFunctionList.h~ -+++ content/media/gstreamer/GStreamerFunctionList.h -@@ -122,6 +122,7 @@ GST_FUNC(LIBGSTREAMER, gst_buffer_set_size) - GST_FUNC(LIBGSTREAMER, gst_buffer_unmap) - GST_FUNC(LIBGSTREAMER, gst_element_factory_get_metadata) - GST_FUNC(LIBGSTREAMER, gst_event_parse_segment) -+GST_FUNC(LIBGSTREAMER, gst_event_type_get_name) - GST_FUNC(LIBGSTREAMER, gst_memory_init) - GST_FUNC(LIBGSTREAMER, gst_memory_map) - GST_FUNC(LIBGSTREAMER, gst_memory_unmap) diff --git a/www/firefox/files/patch-clang34-disable-stdcall b/www/firefox/files/patch-clang34-disable-stdcall index 8f4bb31b9ccd..de30c49f9950 100644 --- a/www/firefox/files/patch-clang34-disable-stdcall +++ b/www/firefox/files/patch-clang34-disable-stdcall @@ -6,8 +6,8 @@ * NS_HIDDEN_(int) NS_FASTCALL func2(char *foo); */ --#if defined(__i386__) && defined(__GNUC__) && !defined(XP_OS2) -+#if defined(__i386__) && defined(__GNUC__) && !defined(XP_OS2) && !(defined(__clang__) && __clang_major__ == 3 && __clang_minor__ == 4 && __clang_patchlevel__ == 0) +-#if defined(__i386__) && defined(__GNUC__) ++#if defined(__i386__) && defined(__GNUC__) && !(defined(__clang__) && __clang_major__ == 3 && __clang_minor__ == 4 && __clang_patchlevel__ == 0) #define NS_FASTCALL __attribute__ ((regparm (3), stdcall)) #define NS_CONSTRUCTOR_FASTCALL __attribute__ ((regparm (3), stdcall)) #elif defined(XP_WIN) && !defined(_WIN64) diff --git a/www/firefox/files/patch-ipc-chromium-Makefile.in b/www/firefox/files/patch-ipc-chromium-Makefile.in index 0e20edf2ee37..fc5808594fb4 100644 --- a/www/firefox/files/patch-ipc-chromium-Makefile.in +++ b/www/firefox/files/patch-ipc-chromium-Makefile.in @@ -1,13 +1,11 @@ --- ipc/chromium/Makefile.in~ +++ ipc/chromium/Makefile.in -@@ -55,9 +60,7 @@ vpath %.c \ - $(srcdir)/src/third_party/libevent \ - $(NULL) - else # } else { --# message_pump_libevent.cc includes third_party/libevent/event.h, --# which we put in $(DIST), see export rule below --LOCAL_INCLUDES += -I$(DIST) -+LOCAL_INCLUDES += $(filter %/compat, $(MOZ_LIBEVENT_CFLAGS)) - endif # } +@@ -28,6 +28,8 @@ include $(topsrcdir)/config/rules.mk + + ifdef MOZ_NATIVE_LIBEVENT # { - vpath %.cc \ ++OS_CPPFLAGS += $(filter %/compat, $(MOZ_LIBEVENT_CFLAGS)) ++ + export-preqs = \ + $(call mkdir_deps,$(CURDIR)/third_party/libevent) \ + $(NULL) diff --git a/www/firefox/files/patch-ipc-chromium-src-base-message_pump_libevent.cc b/www/firefox/files/patch-ipc-chromium-src-base-message_pump_libevent.cc deleted file mode 100644 index 02b6a5e90eca..000000000000 --- a/www/firefox/files/patch-ipc-chromium-src-base-message_pump_libevent.cc +++ /dev/null @@ -1,11 +0,0 @@ ---- ipc/chromium/src/base/message_pump_libevent.cc~ -+++ ipc/chromium/src/base/message_pump_libevent.cc -@@ -16,7 +16,7 @@ - #include "base/scoped_ptr.h" - #include "base/time.h" - #include "nsDependentSubstring.h" --#include "third_party/libevent/event.h" -+#include "event.h" - - // Lifecycle of struct event - // Libevent uses two main data structures: diff --git a/www/firefox/files/patch-z-bug517422 b/www/firefox/files/patch-z-bug517422 index d44a30f7048e..f1d0278a49af 100644 --- a/www/firefox/files/patch-z-bug517422 +++ b/www/firefox/files/patch-z-bug517422 @@ -22,11 +22,17 @@ diff --git config/external/moz.build config/external/moz.build index f67c5c7..eb909ce 100644 --- config/external/moz.build +++ config/external/moz.build -@@ -15,13 +15,13 @@ if CONFIG['MOZ_UPDATER']: +@@ -15,13 +15,19 @@ if CONFIG['MOZ_UPDATER']: if not CONFIG['MOZ_NATIVE_BZ2']: external_dirs += ['modules/libbz2'] -if CONFIG['MOZ_VORBIS']: ++if not CONFIG['MOZ_NATIVE_OGG']: ++ external_dirs += ['media/libogg'] ++ ++if not CONFIG['MOZ_NATIVE_THEORA']: ++ external_dirs += ['media/libtheora'] ++ +if CONFIG['MOZ_VORBIS'] and not CONFIG['MOZ_NATIVE_VORBIS']: external_dirs += ['media/libvorbis'] @@ -39,16 +45,7 @@ index f67c5c7..eb909ce 100644 external_dirs += ['media/libopus'] if CONFIG['MOZ_WEBM']: -@@ -34,16 +34,23 @@ if CONFIG['MOZ_VPX'] and not CONFIG['MOZ - external_dirs += ['media/libvpx'] - - if CONFIG['MOZ_OGG']: -- external_dirs += ['media/libogg', 'media/libtheora'] -+ if not CONFIG['MOZ_NATIVE_OGG']: -+ external_dirs += ['media/libogg'] -+ if not CONFIG['MOZ_NATIVE_THEORA']: -+ external_dirs += ['media/libtheora'] - +@@ -36,13 +42,15 @@ if CONFIG['MOZ_VPX'] and not CONFIG['MOZ_NATIVE_LIBVPX']: if not CONFIG['MOZ_NATIVE_PNG']: external_dirs += ['media/libpng'] @@ -61,6 +58,8 @@ index f67c5c7..eb909ce 100644 external_dirs += [ 'media/kiss_fft', 'media/libcubeb', +- 'media/libogg', +- 'media/libtheora', - 'media/libspeex_resampler', - 'media/libsoundtouch', ] @@ -122,7 +121,7 @@ diff --git configure.in configure.in index 87db361..7947626 100644 --- configure.in +++ configure.in -@@ -5211,6 +5211,57 @@ if test "${ac_cv_c_attribute_aligned}" != "0"; then +@@ -5211,6 +5211,63 @@ if test "${ac_cv_c_attribute_aligned}" != "0"; then fi dnl ======================================================== @@ -136,6 +135,12 @@ index 87db361..7947626 100644 + +if test -n "$MOZ_NATIVE_OGG"; then + PKG_CHECK_MODULES(MOZ_OGG, ogg >= 1.2.1) ++ ++ _SAVE_LIBS=$LIBS ++ LIBS="$LIBS $MOZ_OGG_LIBS" ++ AC_CHECK_FUNC(ogg_set_mem_functions, [], ++ [AC_DEFINE(MOZ_OGG_NO_MEM_REPORTING)]) ++ LIBS=$_SAVE_LIBS +fi + +AC_SUBST(MOZ_NATIVE_OGG) @@ -180,7 +185,7 @@ index 87db361..7947626 100644 dnl = Disable Opus audio codec support dnl ======================================================== MOZ_ARG_DISABLE_BOOL(opus, -@@ -5219,6 +5274,76 @@ MOZ_ARG_DISABLE_BOOL(opus, +@@ -5219,6 +5274,97 @@ MOZ_ARG_DISABLE_BOOL(opus, MOZ_OPUS=1) dnl ======================================================== @@ -247,6 +252,27 @@ index 87db361..7947626 100644 + +if test -n "$MOZ_NATIVE_SOUNDTOUCH"; then + PKG_CHECK_MODULES(MOZ_SOUNDTOUCH, soundtouch >= 1.7.0) ++ ++ AC_LANG_SAVE ++ AC_LANG_CPLUSPLUS ++ _SAVE_CXXFLAGS=$CXXFLAGS ++ CXXFLAGS="$CXXFLAGS $MOZ_SOUNDTOUCH_CFLAGS" ++ AC_CACHE_CHECK(for soundtouch sample type, ++ ac_cv_soundtouch_sample_type, ++ [AC_TRY_COMPILE([#include <SoundTouch.h> ++ #ifndef SOUNDTOUCH_INTEGER_SAMPLES ++ #error soundtouch expects float samples ++ #endif], ++ [], ++ [ac_cv_soundtouch_sample_type=short], ++ [ac_cv_soundtouch_sample_type=float])]) ++ CXXFLAGS=$_SAVE_CXXFLAGS ++ AC_LANG_RESTORE ++ ++ if test \( -n "$MOZ_SAMPLE_TYPE_S16" -a "$ac_cv_soundtouch_sample_type" != short \) \ ++ -o \( -n "$MOZ_SAMPLE_TYPE_FLOAT32" -a "$ac_cv_soundtouch_sample_type" != float \) ; then ++ AC_MSG_ERROR([SoundTouch library is built with incompatible sample type. Either rebuild the library with/without --enable-integer-samples, chase default Mozilla sample type or remove --with-system-soundtouch.]) ++ fi +fi + +AC_SUBST(MOZ_NATIVE_SOUNDTOUCH) @@ -257,30 +283,19 @@ index 87db361..7947626 100644 dnl = Disable VP8 decoder support dnl ======================================================== MOZ_ARG_DISABLE_BOOL(webm, -diff --git content/media/AudioStream.cpp content/media/AudioStream.cpp -index 88c8aa6..6b03288 100644 ---- content/media/AudioStream.cpp -+++ content/media/AudioStream.cpp -@@ -13,7 +13,6 @@ - #include "mozilla/Mutex.h" - #include <algorithm> - #include "mozilla/Preferences.h" --#include "soundtouch/SoundTouch.h" - #include "Latency.h" - - namespace mozilla { diff --git content/media/AudioStream.h content/media/AudioStream.h index 085676d..00c54fb 100644 --- content/media/AudioStream.h +++ content/media/AudioStream.h -@@ -15,6 +15,7 @@ - #include "mozilla/StaticMutex.h" +@@ -26,7 +26,7 @@ public: + }; - #include "cubeb/cubeb.h" -+#include "soundtouch/SoundTouch.h" + namespace soundtouch { +-class SoundTouch; ++class MOZ_IMPORT_API SoundTouch; + } - template <> - class nsAutoRefTraits<cubeb_stream> : public nsPointerRefTraits<cubeb_stream> + namespace mozilla { diff --git content/media/Makefile.in content/media/Makefile.in index fd34449..c6c42c8 100644 --- content/media/Makefile.in @@ -447,3 +462,31 @@ index d42137a..695e75a8 100644 ifdef MOZ_NATIVE_LIBEVENT EXTRA_DSO_LDOPTS += $(MOZ_LIBEVENT_LIBS) endif +diff --git xpcom/build/nsXPComInit.cpp xpcom/build/nsXPComInit.cpp +index 2cf281e..6d7af0e 100644 +--- xpcom/build/nsXPComInit.cpp ++++ xpcom/build/nsXPComInit.cpp +@@ -130,7 +130,9 @@ extern nsresult nsStringInputStreamConstructor(nsISupports *, REFNSIID, void **) + #include "mozilla/VisualEventTracer.h" + #endif + ++#ifndef MOZ_OGG_NO_MEM_REPORTING + #include "ogg/ogg.h" ++#endif + #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING) + #include "vpx_mem/vpx_mem.h" + #endif +@@ -571,11 +573,13 @@ NS_InitXPCOM2(nsIServiceManager* *result, + // this oddness. + mozilla::SetICUMemoryFunctions(); + ++#ifndef MOZ_OGG_NO_MEM_REPORTING + // Do the same for libogg. + ogg_set_mem_functions(OggReporter::CountingMalloc, + OggReporter::CountingCalloc, + OggReporter::CountingRealloc, + OggReporter::CountingFree); ++#endif + + #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING) + // And for VPX. diff --git a/www/libxul/Makefile b/www/libxul/Makefile index 73c42c05dacf..d65d128968ff 100644 --- a/www/libxul/Makefile +++ b/www/libxul/Makefile @@ -2,8 +2,7 @@ # $FreeBSD$ PORTNAME= libxul -DISTVERSION= 24.5.0 -PORTREVISION= 1 +DISTVERSION= 24.6.0 CATEGORIES?= www devel MASTER_SITES= MOZILLA/firefox/releases/${DISTVERSION}esr/source \ https://ftp.mozilla.org/pub/mozilla.org/firefox/candidates/${DISTVERSION}esr-candidates/build1/source/ @@ -39,7 +38,7 @@ WANT_PERL= yes ALL_TARGET= default GNU_CONFIGURE= yes USE_GL= gl -USES= dos2unix tar:bzip2 +USES= dos2unix pathfix tar:bzip2 DOS2UNIX_FILES= media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp MAKE_ENV= SKIP_GRE_REGISTRATION=1 mozappdir=${PREFIX}/lib/${MOZILLA} LDFLAGS+= -Wl,-rpath,${PREFIX}/lib/${MOZ_RPATH} @@ -51,12 +50,11 @@ USE_GECKO= gecko OBJDIR_BUILD= # in-tree build broken after bug 789837 MOZILLA_EXEC_NAME=xulrunner USE_MOZILLA= # empty -MOZILLA_PLIST_DIRS= bin include lib share/idl +MOZILLA_PLIST_DIRS= bin include lib share/idl libdata PLIST_DIRSTRY= share/idl MOZ_PKGCONFIG_FILES= libxul-embedding libxul mozilla-js \ mozilla-plugin -NO_STAGE= yes .include "${.CURDIR}/../../www/firefox/Makefile.options" .include <bsd.port.pre.mk> diff --git a/www/libxul/distinfo b/www/libxul/distinfo index b872161f5c4c..8137a3cde37b 100644 --- a/www/libxul/distinfo +++ b/www/libxul/distinfo @@ -1,2 +1,2 @@ -SHA256 (firefox-24.5.0esr.source.tar.bz2) = 1670e72511cad6047eb8726fa6c2362adcb95b5d53a3c327c4c38bed4b788701 -SIZE (firefox-24.5.0esr.source.tar.bz2) = 119830718 +SHA256 (firefox-24.6.0esr.source.tar.bz2) = 02ee0424ddefd912768a3ae700a4581053ef68f9dea46c34e43e833c119289e4 +SIZE (firefox-24.6.0esr.source.tar.bz2) = 119465935 diff --git a/www/libxul/files/patch-bug1013675 b/www/libxul/files/patch-bug1013675 new file mode 100644 index 000000000000..cb1b4d0f5ea7 --- /dev/null +++ b/www/libxul/files/patch-bug1013675 @@ -0,0 +1,89 @@ +diff --git xpcom/base/nsDebugImpl.cpp xpcom/base/nsDebugImpl.cpp +index 13a286f..293bd73 100644 +--- xpcom/base/nsDebugImpl.cpp ++++ xpcom/base/nsDebugImpl.cpp +@@ -45,13 +45,44 @@ + #endif + #endif + +-#if defined(XP_MACOSX) ++#if defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) + #include <stdbool.h> + #include <sys/types.h> + #include <unistd.h> ++#include <sys/param.h> + #include <sys/sysctl.h> + #endif + ++#if defined(__OpenBSD__) ++#include <sys/proc.h> ++#endif ++ ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include <sys/user.h> ++#endif ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(XP_MACOSX) ++#define KP_FLAGS kp_proc.p_flag ++#elif defined(__DragonFly__) ++#define KP_FLAGS kp_flags ++#elif defined(__FreeBSD__) ++#define KP_FLAGS ki_flag ++#elif defined(__OpenBSD__) && !defined(_P_TRACED) ++#define KP_FLAGS p_psflags ++#define P_TRACED PS_TRACED ++#else ++#define KP_FLAGS p_flag ++#endif ++ + #include "mozilla/mozalloc_abort.h" + + static void +@@ -144,16 +175,22 @@ nsDebugImpl::GetIsDebuggerAttached(bool* aResult) + + #if defined(XP_WIN) + *aResult = ::IsDebuggerPresent(); +-#elif defined(XP_MACOSX) ++#elif defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) + // Specify the info we're looking for +- int mib[4]; +- mib[0] = CTL_KERN; +- mib[1] = KERN_PROC; +- mib[2] = KERN_PROC_PID; +- mib[3] = getpid(); ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; + size_t mibSize = sizeof(mib) / sizeof(int); + +- struct kinfo_proc info; ++ KINFO_PROC info; + size_t infoSize = sizeof(info); + memset(&info, 0, infoSize); + +@@ -163,7 +200,7 @@ nsDebugImpl::GetIsDebuggerAttached(bool* aResult) + return NS_OK; + } + +- if (info.kp_proc.p_flag & P_TRACED) { ++ if (info.KP_FLAGS & P_TRACED) { + *aResult = true; + } + #endif diff --git a/www/libxul/files/patch-bug1015547 b/www/libxul/files/patch-bug1015547 new file mode 100644 index 000000000000..df963e0de88c --- /dev/null +++ b/www/libxul/files/patch-bug1015547 @@ -0,0 +1,94 @@ +diff --git configure.in configure.in +index 7bed45f..053de17 100644 +--- configure.in ++++ configure.in +@@ -3166,6 +3166,7 @@ AC_CHECK_FUNCS(random strerror lchown fc + AC_CHECK_FUNCS(statvfs64 statvfs statfs64 statfs) + AC_CHECK_FUNCS(flockfile getpagesize) + AC_CHECK_FUNCS(localtime_r strtok_r) ++AC_CHECK_FUNCS(arc4random arc4random_buf) + + dnl check for clock_gettime(), the CLOCK_MONOTONIC clock + AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), +diff --git xpcom/base/nsUUIDGenerator.cpp xpcom/base/nsUUIDGenerator.cpp +index 0687344..ca3ff8b 100644 +--- xpcom/base/nsUUIDGenerator.cpp ++++ xpcom/base/nsUUIDGenerator.cpp +@@ -15,6 +15,10 @@ + + #include "nsUUIDGenerator.h" + ++#ifdef ANDROID ++extern "C" NS_EXPORT void arc4random_buf(void *, size_t); ++#endif ++ + using namespace mozilla; + + NS_IMPL_ISUPPORTS1(nsUUIDGenerator, nsIUUIDGenerator) +@@ -34,7 +38,7 @@ nsUUIDGenerator::Init() + // We're a service, so we're guaranteed that Init() is not going + // to be reentered while we're inside Init(). + +-#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(ANDROID) ++#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(HAVE_ARC4RANDOM) + /* initialize random number generator using NSPR random noise */ + unsigned int seed; + +@@ -67,7 +71,7 @@ nsUUIDGenerator::Init() + return NS_ERROR_FAILURE; + #endif + +-#endif /* non XP_WIN and non XP_MACOSX */ ++#endif /* non XP_WIN and non XP_MACOSX and non ARC4RANDOM */ + + return NS_OK; + } +@@ -114,13 +118,16 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + * back to it; instead, we use the value returned when we called + * initstate, since older glibc's have broken setstate() return values + */ +-#ifndef ANDROID ++#ifndef HAVE_ARC4RANDOM + setstate(mState); + #endif + ++#ifdef HAVE_ARC4RANDOM_BUF ++ arc4random_buf(id, sizeof(nsID)); ++#else /* HAVE_ARC4RANDOM_BUF */ + size_t bytesLeft = sizeof(nsID); + while (bytesLeft > 0) { +-#ifdef ANDROID ++#ifdef HAVE_ARC4RANDOM + long rval = arc4random(); + const size_t mRBytes = 4; + #else +@@ -141,6 +148,7 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + + bytesLeft -= toWrite; + } ++#endif /* HAVE_ARC4RANDOM_BUF */ + + /* Put in the version */ + id->m2 &= 0x0fff; +@@ -150,7 +158,7 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + id->m3[0] &= 0x3f; + id->m3[0] |= 0x80; + +-#ifndef ANDROID ++#ifndef HAVE_ARC4RANDOM + /* Restore the previous RNG state */ + setstate(mSavedState); + #endif +diff --git xpcom/base/nsUUIDGenerator.h xpcom/base/nsUUIDGenerator.h +index 6a24212..68ed6f2 100644 +--- xpcom/base/nsUUIDGenerator.h ++++ xpcom/base/nsUUIDGenerator.h +@@ -27,7 +27,7 @@ private: + protected: + + mozilla::Mutex mLock; +-#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(ANDROID) ++#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(HAVE_ARC4RANDOM) + char mState[128]; + char *mSavedState; + uint8_t mRBytes; diff --git a/www/libxul/files/patch-bug916589 b/www/libxul/files/patch-bug916589 index 5748c3316f85..c6c6c58c9175 100644 --- a/www/libxul/files/patch-bug916589 +++ b/www/libxul/files/patch-bug916589 @@ -2,17 +2,8 @@ diff --git media/mtransport/third_party/nrappkit/src/port/generic/include/sys/qu index 5b50785..7cf47d5 100644 --- media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h +++ media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h -@@ -31,11 +31,18 @@ - */ - --#ifndef _SYS_QUEUE_H_ -+#if (defined(BSD) && !defined(__OpenBSD__)) || defined(DARWIN) -+#include_next <sys/queue.h> -+# if defined(__DragonFly__) -+#define STAILQ_FOREACH_SAFE STAILQ_FOREACH_MUTABLE -+#define TAILQ_FOREACH_SAFE TAILQ_FOREACH_MUTABLE -+# endif -+#elif !defined(_SYS_QUEUE_H_) +@@ -33,9 +33,10 @@ + #ifndef _SYS_QUEUE_H_ #define _SYS_QUEUE_H_ -#if !defined(__FreeBSD__) && !defined(DARWIN) @@ -24,7 +15,7 @@ index 5b50785..7cf47d5 100644 #endif #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ -@@ -43,8 +46,6 @@ +@@ -43,8 +44,6 @@ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ (var) = (tvar)) @@ -33,7 +24,7 @@ index 5b50785..7cf47d5 100644 /* * This file defines four types of data structures: singly-linked lists, * singly-linked tail queues, lists and tail queues. -@@ -285,7 +286,7 @@ struct { \ +@@ -285,7 +284,7 @@ struct { \ (STAILQ_EMPTY((head)) ? \ NULL : \ ((struct type *) \ diff --git a/www/libxul/files/patch-zz-bug517422 b/www/libxul/files/patch-zz-bug517422 index acdd451854cd..1c3d05480bc2 100644 --- a/www/libxul/files/patch-zz-bug517422 +++ b/www/libxul/files/patch-zz-bug517422 @@ -178,7 +178,7 @@ index 87db361..7947626 100644 dnl = Disable Opus audio codec support dnl ======================================================== MOZ_ARG_DISABLE_BOOL(opus, -@@ -5219,6 +5274,76 @@ MOZ_ARG_DISABLE_BOOL(opus, +@@ -5219,6 +5274,97 @@ MOZ_ARG_DISABLE_BOOL(opus, MOZ_OPUS=1) dnl ======================================================== @@ -245,6 +245,27 @@ index 87db361..7947626 100644 + +if test -n "$MOZ_NATIVE_SOUNDTOUCH"; then + PKG_CHECK_MODULES(MOZ_SOUNDTOUCH, soundtouch >= 1.7.0) ++ ++ AC_LANG_SAVE ++ AC_LANG_CPLUSPLUS ++ _SAVE_CXXFLAGS=$CXXFLAGS ++ CXXFLAGS="$CXXFLAGS $MOZ_SOUNDTOUCH_CFLAGS" ++ AC_CACHE_CHECK(for soundtouch sample type, ++ ac_cv_soundtouch_sample_type, ++ [AC_TRY_COMPILE([#include <SoundTouch.h> ++ #ifndef SOUNDTOUCH_INTEGER_SAMPLES ++ #error soundtouch expects float samples ++ #endif], ++ [], ++ [ac_cv_soundtouch_sample_type=short], ++ [ac_cv_soundtouch_sample_type=float])]) ++ CXXFLAGS=$_SAVE_CXXFLAGS ++ AC_LANG_RESTORE ++ ++ if test \( -n "$MOZ_SAMPLE_TYPE_S16" -a "$ac_cv_soundtouch_sample_type" != short \) \ ++ -o \( -n "$MOZ_SAMPLE_TYPE_FLOAT32" -a "$ac_cv_soundtouch_sample_type" != float \) ; then ++ AC_MSG_ERROR([SoundTouch library is built with incompatible sample type. Either rebuild the library with/without --enable-integer-samples, chase default Mozilla sample type or remove --with-system-soundtouch.]) ++ fi +fi + +AC_SUBST(MOZ_NATIVE_SOUNDTOUCH) diff --git a/www/linux-firefox/Makefile b/www/linux-firefox/Makefile index 61891e0f8780..4f117bab68e4 100644 --- a/www/linux-firefox/Makefile +++ b/www/linux-firefox/Makefile @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= firefox -DISTVERSION= 29.0 +DISTVERSION= 30.0 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/linux-i686/en-US @@ -11,7 +11,8 @@ DISTNAME= ${PORTNAME}-${DISTVERSION} MAINTAINER= gecko@FreeBSD.org COMMENT= Web browser based on the browser portion of Mozilla -USE_BZIP2= yes +USES= tar:bzip2 + WANT_GTK218= yes USE_LINUX_APPS= dbusglib dbuslibs alsalib alsa-plugins-oss diff --git a/www/linux-firefox/distinfo b/www/linux-firefox/distinfo index be9204d07efe..a9c089c426e3 100644 --- a/www/linux-firefox/distinfo +++ b/www/linux-firefox/distinfo @@ -1,5 +1,5 @@ -SHA256 (firefox-29.0.tar.bz2) = e616abb6854480a33c47b902d1ba277717a855ead3bff560025a25a7f4b1da6d -SIZE (firefox-29.0.tar.bz2) = 36330381 +SHA256 (firefox-30.0.tar.bz2) = 4bca44a1ba94bf5616f7ea650e37cd3e5a719546def9e4a08ee88aedbc3a4db6 +SIZE (firefox-30.0.tar.bz2) = 37350490 SHA256 (glib2-2.22.2-2.fc12.i686.rpm) = e3b459c245ec14e7248e9de4b506963a4773407f3e58835db5070d0ed02ecc99 SIZE (glib2-2.22.2-2.fc12.i686.rpm) = 1162908 SHA256 (gtk2-2.18.3-19.fc12.i686.rpm) = aea9cf7ffe9c8dae0faa2bf3d2aa1b2117c55dce03da72dcce8c268279ec0a4b diff --git a/www/linux-seamonkey/Makefile b/www/linux-seamonkey/Makefile index d6cbb09e04da..4ec42f867bd1 100644 --- a/www/linux-seamonkey/Makefile +++ b/www/linux-seamonkey/Makefile @@ -9,7 +9,7 @@ MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/linux-i686/en-US MAINTAINER= gecko@FreeBSD.org COMMENT= The open source, standards compliant web browser -USE_BZIP2= yes +USES= tar:bzip2 USE_LINUX_APPS= dbusglib dbuslibs alsalib alsa-plugins-oss diff --git a/www/seamonkey/Makefile b/www/seamonkey/Makefile index ff755e2b1848..ab7a35296b76 100644 --- a/www/seamonkey/Makefile +++ b/www/seamonkey/Makefile @@ -70,7 +70,6 @@ MAILNEWS_DESC?= Mail and News modules ALL_TARGET= build MAKEFILE= ${WRKSRC}/client.mk -NO_STAGE= yes .include "${.CURDIR}/../../www/firefox/Makefile.options" .include <bsd.port.options.mk> @@ -198,50 +197,27 @@ post-build: -C ${WRKSRC}/mailnews/extensions/enigmail .endif -port-pre-install: - ${ECHO_CMD} share/applications/${MOZILLA}.desktop >> ${PLIST} - ${ECHO_CMD} 'share/pixmaps/${MOZILLA}.png' >> ${PLIST} - post-install: ${INSTALL_DATA} ${WRKDIR}/${MOZILLA}.desktop ${PREFIX}/share/applications/ ${LN} -sf ${PREFIX}/lib/${MOZILLA}/chrome/icons/default/default48.png \ - ${PREFIX}/share/pixmaps/${MOZILLA}.png + ${STAGEDIR}${PREFIX}/share/pixmaps/${MOZILLA}.png .if ${PORT_OPTIONS:MLIGHTNING} - @${MKDIR} ${XPI_LIBDIR}/${XPI_ID} ${XPI_LIBDIR}/symlinks/seamonkey - @(cd ${XPI_LIBDIR}/${XPI_ID}; ${TAR} -xf ${XPI_FILE}) - @${CHOWN} -R ${SHAREOWN}:${SHAREGRP} ${XPI_LIBDIR}/${XPI_ID} - @${REINPLACE_CMD} -i "" "s/${XPI_ORIG_ID}/${XPI_ID}/" ${XPI_LIBDIR}/${XPI_ID}/install.rdf - @${CHMOD} -R a+rX,go-w ${XPI_LIBDIR}/${XPI_ID} - @${LN} -sf ${XPI_LIBDIR}/${XPI_ID} ${LOCALBASE}/lib/seamonkey/extensions 2>/dev/null || true - @${LN} -sf ${XPI_LIBDIR}/${XPI_ID} ${XPI_LIBDIR}/symlinks/seamonkey 2>/dev/null || true - @(cd ${XPI_LIBDIR}; ${FIND} ${XPI_ID} -not -type d) | ${SORT} | \ - ${SED} -ne 's,^,lib/xpi/,p' >> ${TMPPLIST} - @${ECHO_CMD} 'lib/xpi/symlinks/seamonkey/${XPI_ID}' >> ${TMPPLIST} + @${MKDIR} ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/seamonkey + @(cd ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID}; ${TAR} -xf ${XPI_FILE}) + @${REINPLACE_CMD} -i "" "s/${XPI_ORIG_ID}/${XPI_ID}/" ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID}/install.rdf + @${CHMOD} -R a+rX,go-w ${STAGEDIR}${XPI_LIBDIR}/${XPI_ID} + @${LN} -sf ${XPI_LIBDIR}/${XPI_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/seamonkey 2>/dev/null || true @${ECHO_CMD} '@exec ${LN} -sf %D/lib/xpi/${XPI_ID} ${LOCALBASE}/lib/seamonkey/extensions 2>/dev/null || true' >> ${TMPPLIST} @${ECHO_CMD} '@unexec ${RM} -f ${LOCALBASE}/lib/seamonkey/extensions/${XPI_ID}' >> ${TMPPLIST} - @(cd ${XPI_LIBDIR}; ${FIND} ${XPI_ID} -type d) | ${SORT} -r | \ - ${SED} -ne 's,^,@dirrm lib/xpi/,p' >> ${TMPPLIST} .endif .if ${PORT_OPTIONS:MMAILNEWS} && ${PORT_OPTIONS:MENIGMAIL} - @${MKDIR} ${XPI_LIBDIR}/${EM_ID} ${XPI_LIBDIR}/symlinks/${PORTNAME} - @(cd ${XPI_LIBDIR}/${EM_ID}; ${TAR} -xf ${EM_XPI_FILE}) - @${CHOWN} -R ${SHAREOWN}:${SHAREGRP} ${XPI_LIBDIR}/${EM_ID} - @${REINPLACE_CMD} -i "" "s/${EM_ORIG_ID}/${EM_ID}/" ${EM_ID_RFILES} - @${CHMOD} -R a+rX,go-w ${XPI_LIBDIR}/${EM_ID} - @${LN} -sf ${XPI_LIBDIR}/${EM_ID} ${LOCALBASE}/lib/${PORTNAME}/extensions 2>/dev/null || true - @${LN} -sf ${XPI_LIBDIR}/${EM_ID} ${XPI_LIBDIR}/symlinks/${PORTNAME} 2>/dev/null || true - @(cd ${XPI_LIBDIR}; ${FIND} ${EM_ID} -not -type d) | ${SORT} | \ - ${SED} -ne 's,^,lib/xpi/,p' >> ${TMPPLIST} - @${ECHO_CMD} 'lib/xpi/symlinks/${PORTNAME}/${EM_ID}' >> ${TMPPLIST} + @${MKDIR} ${STAGEDIR}${XPI_LIBDIR}/${EM_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/${PORTNAME} + @(cd ${STAGEDIR}${XPI_LIBDIR}/${EM_ID}; ${TAR} -xf ${EM_XPI_FILE}) + @${REINPLACE_CMD} -i "" "s/${EM_ORIG_ID}/${EM_ID}/" ${EM_ID_RFILES:S/^/${STAGEDIR}/g} + @${CHMOD} -R a+rX,go-w ${STAGEDIR}${XPI_LIBDIR}/${EM_ID} + @${LN} -sf ${XPI_LIBDIR}/${EM_ID} ${STAGEDIR}${XPI_LIBDIR}/symlinks/${PORTNAME} 2>/dev/null || true @${ECHO_CMD} '@exec ${LN} -sf %D/lib/xpi/${EM_ID} ${LOCALBASE}/lib/${PORTNAME}/extensions 2>/dev/null || true' >> ${TMPPLIST} @${ECHO_CMD} '@unexec ${RM} -f ${LOCALBASE}/lib/${PORTNAME}/extensions/${EM_ID}' >> ${TMPPLIST} - @(cd ${XPI_LIBDIR}; ${FIND} ${EM_ID} -type d) | ${SORT} -r | \ - ${SED} -ne 's,^,@dirrm lib/xpi/,p' >> ${TMPPLIST} -.endif -.if ${PORT_OPTIONS:MLIGHTNING} || ${PORT_OPTIONS:MMAILNEWS} && ${PORT_OPTIONS:MENIGMAIL} - @${ECHO_CMD} '@unexec rmdir %D/lib/xpi/symlinks/${PORTNAME} 2>/dev/null || true' >> ${TMPPLIST} - @${ECHO_CMD} '@unexec rmdir %D/lib/xpi/symlinks 2>/dev/null || true' >> ${TMPPLIST} - @${ECHO_CMD} '@unexec rmdir %D/lib/xpi 2>/dev/null || true' >> ${TMPPLIST} .endif .include <bsd.port.post.mk> diff --git a/www/seamonkey/files/patch-bug1013675 b/www/seamonkey/files/patch-bug1013675 new file mode 100644 index 000000000000..c8b0a6bf02d0 --- /dev/null +++ b/www/seamonkey/files/patch-bug1013675 @@ -0,0 +1,88 @@ +diff --git xpcom/base/nsDebugImpl.cpp xpcom/base/nsDebugImpl.cpp +index 13a286f..293bd73 100644 +--- mozilla/xpcom/base/nsDebugImpl.cpp ++++ mozilla/xpcom/base/nsDebugImpl.cpp +@@ -45,12 +45,43 @@ + #endif + #endif + +-#if defined(XP_MACOSX) ++#if defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) + #include <stdbool.h> + #include <unistd.h> ++#include <sys/param.h> + #include <sys/sysctl.h> + #endif + ++#if defined(__OpenBSD__) ++#include <sys/proc.h> ++#endif ++ ++#if defined(__DragonFly__) || defined(__FreeBSD__) ++#include <sys/user.h> ++#endif ++ ++#if defined(__NetBSD__) ++#undef KERN_PROC ++#define KERN_PROC KERN_PROC2 ++#define KINFO_PROC struct kinfo_proc2 ++#else ++#define KINFO_PROC struct kinfo_proc ++#endif ++ ++#if defined(XP_MACOSX) ++#define KP_FLAGS kp_proc.p_flag ++#elif defined(__DragonFly__) ++#define KP_FLAGS kp_flags ++#elif defined(__FreeBSD__) ++#define KP_FLAGS ki_flag ++#elif defined(__OpenBSD__) && !defined(_P_TRACED) ++#define KP_FLAGS p_psflags ++#define P_TRACED PS_TRACED ++#else ++#define KP_FLAGS p_flag ++#endif ++ + #include "mozilla/mozalloc_abort.h" + + static void +@@ -144,16 +175,22 @@ nsDebugImpl::GetIsDebuggerAttached(bool* aResult) + + #if defined(XP_WIN) + *aResult = ::IsDebuggerPresent(); +-#elif defined(XP_MACOSX) ++#elif defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \ ++ || defined(__NetBSD__) || defined(__OpenBSD__) + // Specify the info we're looking for +- int mib[4]; +- mib[0] = CTL_KERN; +- mib[1] = KERN_PROC; +- mib[2] = KERN_PROC_PID; +- mib[3] = getpid(); ++ int mib[] = { ++ CTL_KERN, ++ KERN_PROC, ++ KERN_PROC_PID, ++ getpid(), ++#if defined(__NetBSD__) || defined(__OpenBSD__) ++ sizeof(KINFO_PROC), ++ 1, ++#endif ++ }; + size_t mibSize = sizeof(mib) / sizeof(int); + +- struct kinfo_proc info; ++ KINFO_PROC info; + size_t infoSize = sizeof(info); + memset(&info, 0, infoSize); + +@@ -163,7 +200,7 @@ nsDebugImpl::GetIsDebuggerAttached(bool* aResult) + return NS_OK; + } + +- if (info.kp_proc.p_flag & P_TRACED) { ++ if (info.KP_FLAGS & P_TRACED) { + *aResult = true; + } + #endif diff --git a/www/seamonkey/files/patch-bug1015547 b/www/seamonkey/files/patch-bug1015547 new file mode 100644 index 000000000000..8e6189444b50 --- /dev/null +++ b/www/seamonkey/files/patch-bug1015547 @@ -0,0 +1,95 @@ +diff --git configure.in configure.in +index 7bed45f..053de17 100644 +--- mozilla/configure.in ++++ mozilla/configure.in +@@ -2950,7 +2950,7 @@ dnl Checks for library functions. + dnl ======================================================== + AC_PROG_GCC_TRADITIONAL + AC_FUNC_MEMCMP +-AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize localtime_r) ++AC_CHECK_FUNCS(stat64 lstat64 truncate64 statvfs64 statvfs statfs64 statfs getpagesize localtime_r arc4random arc4random_buf) + + dnl check for clock_gettime(), the CLOCK_MONOTONIC clock + AC_CACHE_CHECK(for clock_gettime(CLOCK_MONOTONIC), +diff --git xpcom/base/nsUUIDGenerator.cpp xpcom/base/nsUUIDGenerator.cpp +index 0687344..ca3ff8b 100644 +--- mozilla/xpcom/base/nsUUIDGenerator.cpp ++++ mozilla/xpcom/base/nsUUIDGenerator.cpp +@@ -15,6 +15,10 @@ + + #include "nsUUIDGenerator.h" + ++#ifdef ANDROID ++extern "C" NS_EXPORT void arc4random_buf(void *, size_t); ++#endif ++ + using namespace mozilla; + + NS_IMPL_ISUPPORTS1(nsUUIDGenerator, nsIUUIDGenerator) +@@ -34,7 +38,7 @@ nsUUIDGenerator::Init() + // We're a service, so we're guaranteed that Init() is not going + // to be reentered while we're inside Init(). + +-#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(ANDROID) ++#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(HAVE_ARC4RANDOM) + /* initialize random number generator using NSPR random noise */ + unsigned int seed; + +@@ -67,7 +71,7 @@ nsUUIDGenerator::Init() + return NS_ERROR_FAILURE; + #endif + +-#endif /* non XP_WIN and non XP_MACOSX */ ++#endif /* non XP_WIN and non XP_MACOSX and non ARC4RANDOM */ + + return NS_OK; + } +@@ -114,13 +118,16 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + * back to it; instead, we use the value returned when we called + * initstate, since older glibc's have broken setstate() return values + */ +-#ifndef ANDROID ++#ifndef HAVE_ARC4RANDOM + setstate(mState); + #endif + ++#ifdef HAVE_ARC4RANDOM_BUF ++ arc4random_buf(id, sizeof(nsID)); ++#else /* HAVE_ARC4RANDOM_BUF */ + size_t bytesLeft = sizeof(nsID); + while (bytesLeft > 0) { +-#ifdef ANDROID ++#ifdef HAVE_ARC4RANDOM + long rval = arc4random(); + const size_t mRBytes = 4; + #else +@@ -141,6 +148,7 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + + bytesLeft -= toWrite; + } ++#endif /* HAVE_ARC4RANDOM_BUF */ + + /* Put in the version */ + id->m2 &= 0x0fff; +@@ -150,7 +158,7 @@ nsUUIDGenerator::GenerateUUIDInPlace(nsID* id) + id->m3[0] &= 0x3f; + id->m3[0] |= 0x80; + +-#ifndef ANDROID ++#ifndef HAVE_ARC4RANDOM + /* Restore the previous RNG state */ + setstate(mSavedState); + #endif +diff --git xpcom/base/nsUUIDGenerator.h xpcom/base/nsUUIDGenerator.h +index 6a24212..68ed6f2 100644 +--- mozilla/xpcom/base/nsUUIDGenerator.h ++++ mozilla/xpcom/base/nsUUIDGenerator.h +@@ -27,7 +27,7 @@ private: + protected: + + mozilla::Mutex mLock; +-#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(ANDROID) ++#if !defined(XP_WIN) && !defined(XP_MACOSX) && !defined(HAVE_ARC4RANDOM) + char mState[128]; + char *mSavedState; + uint8_t mRBytes; diff --git a/www/seamonkey/files/patch-bug916589 b/www/seamonkey/files/patch-bug916589 index c6aef052c4ce..3c24bf7ef332 100644 --- a/www/seamonkey/files/patch-bug916589 +++ b/www/seamonkey/files/patch-bug916589 @@ -2,17 +2,8 @@ diff --git media/mtransport/third_party/nrappkit/src/port/generic/include/sys/qu index 5b50785..7cf47d5 100644 --- mozilla/media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h +++ mozilla/media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h -@@ -31,11 +31,18 @@ - */ - --#ifndef _SYS_QUEUE_H_ -+#if (defined(BSD) && !defined(__OpenBSD__)) || defined(DARWIN) -+#include_next <sys/queue.h> -+# if defined(__DragonFly__) -+#define STAILQ_FOREACH_SAFE STAILQ_FOREACH_MUTABLE -+#define TAILQ_FOREACH_SAFE TAILQ_FOREACH_MUTABLE -+# endif -+#elif !defined(_SYS_QUEUE_H_) +@@ -33,9 +33,10 @@ + #ifndef _SYS_QUEUE_H_ #define _SYS_QUEUE_H_ -#if !defined(__FreeBSD__) && !defined(DARWIN) @@ -24,7 +15,7 @@ index 5b50785..7cf47d5 100644 #endif #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ -@@ -43,8 +46,6 @@ +@@ -43,8 +44,6 @@ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ (var) = (tvar)) @@ -33,7 +24,7 @@ index 5b50785..7cf47d5 100644 /* * This file defines four types of data structures: singly-linked lists, * singly-linked tail queues, lists and tail queues. -@@ -285,7 +286,7 @@ struct { \ +@@ -285,7 +284,7 @@ struct { \ (STAILQ_EMPTY((head)) ? \ NULL : \ ((struct type *) \ diff --git a/www/seamonkey/files/patch-bug975397 b/www/seamonkey/files/patch-bug975397 new file mode 100644 index 000000000000..69e87cef0dc3 --- /dev/null +++ b/www/seamonkey/files/patch-bug975397 @@ -0,0 +1,73 @@ +commit 2fe45fb +Author: L. David Baron <dbaron@dbaron.org> +Date: Wed Apr 2 22:56:19 2014 -0700 + + Bug 975397 - Call TrackImage when constructing a new nsStyleBorder. r=heycam + + I confirmed that the crashtest crashes in the harness without the patch. + + --HG-- + rename : layout/reftests/backgrounds/blue-32x32.png => layout/style/crashtests/blue-32x32.png +--- + layout/base/nsCSSRendering.cpp | 9 +++++++++ + layout/style/crashtests/blue-32x32.png | Bin 0 -> 110 bytes + layout/style/crashtests/border-image-visited-link.html | 10 ++++++++++ + layout/style/crashtests/crashtests.list | 1 + + 4 files changed, 20 insertions(+) + +diff --git layout/base/nsCSSRendering.cpp layout/base/nsCSSRendering.cpp +index d91309b..2d8bb46 100644 +--- mozilla/layout/base/nsCSSRendering.cpp ++++ mozilla/layout/base/nsCSSRendering.cpp +@@ -419,6 +419,10 @@ nsCSSRendering::PaintBorder(nsPresContext* aPresContext, + } + + nsStyleBorder newStyleBorder(*styleBorder); ++ // We could do something fancy to avoid the TrackImage/UntrackImage ++ // work, but it doesn't seem worth it. (We need to call TrackImage ++ // since we're not going through nsRuleNode::ComputeBorderData.) ++ newStyleBorder.TrackImage(aPresContext); + + NS_FOR_CSS_SIDES(side) { + newStyleBorder.SetBorderColor(side, +@@ -428,6 +432,11 @@ nsCSSRendering::PaintBorder(nsPresContext* aPresContext, + PaintBorderWithStyleBorder(aPresContext, aRenderingContext, aForFrame, + aDirtyRect, aBorderArea, newStyleBorder, + aStyleContext, aSkipSides); ++ ++ // We could do something fancy to avoid the TrackImage/UntrackImage ++ // work, but it doesn't seem worth it. (We need to call UntrackImage ++ // since we're not going through nsStyleBorder::Destroy.) ++ newStyleBorder.UntrackImage(aPresContext); + } + + void +diff --git layout/style/crashtests/blue-32x32.png layout/style/crashtests/blue-32x32.png +new file mode 100644 +index 0000000..deefd19 +Binary files /dev/null and layout/style/crashtests/blue-32x32.png differ +diff --git layout/style/crashtests/border-image-visited-link.html layout/style/crashtests/border-image-visited-link.html +new file mode 100644 +index 0000000..b6e3ae5 +--- /dev/null ++++ mozilla/layout/style/crashtests/border-image-visited-link.html +@@ -0,0 +1,10 @@ ++<!DOCTYPE HTML> ++<title>border-image on link with visited styles</title> ++<style> ++ ++:link { color: blue } ++:visited { color: purple } ++:link, :visited { border: medium solid; border-image: url(blue-32x32.png) 4 4 4 4; } ++ ++</style> ++<a href="http://example.com/">test</a> +diff --git layout/style/crashtests/crashtests.list layout/style/crashtests/crashtests.list +index e414f28..acd709c3 100644 +--- mozilla/layout/style/crashtests/crashtests.list ++++ mozilla/layout/style/crashtests/crashtests.list +@@ -102,3 +102,4 @@ load 930270-1.html + load 930270-2.html + load 945048-1.html + load 989965-1.html ++load border-image-visited-link.html diff --git a/www/seamonkey/files/patch-z-bug517422 b/www/seamonkey/files/patch-z-bug517422 index 82e453baca96..15728f8cb66e 100644 --- a/www/seamonkey/files/patch-z-bug517422 +++ b/www/seamonkey/files/patch-z-bug517422 @@ -180,7 +180,7 @@ index 87db361..7947626 100644 dnl = Disable Opus audio codec support dnl ======================================================== MOZ_ARG_DISABLE_BOOL(opus, -@@ -5219,6 +5274,76 @@ MOZ_ARG_DISABLE_BOOL(opus, +@@ -5219,6 +5274,97 @@ MOZ_ARG_DISABLE_BOOL(opus, MOZ_OPUS=1) dnl ======================================================== @@ -247,6 +247,27 @@ index 87db361..7947626 100644 + +if test -n "$MOZ_NATIVE_SOUNDTOUCH"; then + PKG_CHECK_MODULES(MOZ_SOUNDTOUCH, soundtouch >= 1.7.0) ++ ++ AC_LANG_SAVE ++ AC_LANG_CPLUSPLUS ++ _SAVE_CXXFLAGS=$CXXFLAGS ++ CXXFLAGS="$CXXFLAGS $MOZ_SOUNDTOUCH_CFLAGS" ++ AC_CACHE_CHECK(for soundtouch sample type, ++ ac_cv_soundtouch_sample_type, ++ [AC_TRY_COMPILE([#include <SoundTouch.h> ++ #ifndef SOUNDTOUCH_INTEGER_SAMPLES ++ #error soundtouch expects float samples ++ #endif], ++ [], ++ [ac_cv_soundtouch_sample_type=short], ++ [ac_cv_soundtouch_sample_type=float])]) ++ CXXFLAGS=$_SAVE_CXXFLAGS ++ AC_LANG_RESTORE ++ ++ if test \( -n "$MOZ_SAMPLE_TYPE_S16" -a "$ac_cv_soundtouch_sample_type" != short \) \ ++ -o \( -n "$MOZ_SAMPLE_TYPE_FLOAT32" -a "$ac_cv_soundtouch_sample_type" != float \) ; then ++ AC_MSG_ERROR([SoundTouch library is built with incompatible sample type. Either rebuild the library with/without --enable-integer-samples, chase default Mozilla sample type or remove --with-system-soundtouch.]) ++ fi +fi + +AC_SUBST(MOZ_NATIVE_SOUNDTOUCH) |