aboutsummaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
authorFlorian Smeets <flo@FreeBSD.org>2013-09-18 22:40:57 +0000
committerFlorian Smeets <flo@FreeBSD.org>2013-09-18 22:40:57 +0000
commitec4fcd4b2ae992fc8b3cedac4e53df84bbdf643d (patch)
tree424e8968903e2637d7f62a6c7e33ecfdbabacec0 /www
parentd01b11f6fc0a1cbcbef50bc975daad971580fe24 (diff)
downloadports-ec4fcd4b2ae992fc8b3cedac4e53df84bbdf643d.tar.gz
ports-ec4fcd4b2ae992fc8b3cedac4e53df84bbdf643d.zip
Notes
Diffstat (limited to 'www')
-rw-r--r--www/firefox-esr-i18n/Makefile6
-rw-r--r--www/firefox-esr-i18n/distinfo328
-rw-r--r--www/firefox-esr/Makefile6
-rw-r--r--www/firefox-esr/distinfo4
-rw-r--r--www/firefox-i18n/Makefile4
-rw-r--r--www/firefox-i18n/distinfo328
-rw-r--r--www/firefox/Makefile16
-rw-r--r--www/firefox/Makefile.options3
-rw-r--r--www/firefox/distinfo4
-rw-r--r--www/firefox/files/patch-bug72297561
-rw-r--r--www/firefox/files/patch-bug78346328
-rw-r--r--www/firefox/files/patch-bug80348019
-rw-r--r--www/firefox/files/patch-bug8074921314
-rw-r--r--www/firefox/files/patch-bug844818126
-rw-r--r--www/firefox/files/patch-bug86275910
-rw-r--r--www/firefox/files/patch-bug87615613
-rw-r--r--www/firefox/files/patch-bug88618111
-rw-r--r--www/firefox/files/patch-bug889699175
-rw-r--r--www/firefox/files/patch-bug89339739
-rw-r--r--www/firefox/files/patch-bug910875102
-rw-r--r--www/firefox/files/patch-bug91621639
-rw-r--r--www/firefox/files/patch-bug91658940
-rw-r--r--www/firefox/files/patch-build-pgo-profileserver.py23
-rw-r--r--www/firefox/files/patch-duckduckgo11
-rw-r--r--www/firefox/files/patch-js-src-methodjit-MethodJIT.cpp20
-rw-r--r--www/firefox/files/patch-media-webrtc-trunk-testing-gtest-include-gtest-internal-gtest-port.h17
-rw-r--r--www/firefox/files/patch-no-videoio.h22
-rw-r--r--www/libxul/Makefile23
-rw-r--r--www/libxul/distinfo4
-rw-r--r--www/libxul/files/extra-bug78053129
-rw-r--r--www/libxul/files/patch-alsapulse114
-rw-r--r--www/libxul/files/patch-bug68525817
-rw-r--r--www/libxul/files/patch-bug713802163
-rw-r--r--www/libxul/files/patch-bug72297561
-rw-r--r--www/libxul/files/patch-bug73234013
-rw-r--r--www/libxul/files/patch-bug7530461207
-rw-r--r--www/libxul/files/patch-bug77807811
-rw-r--r--www/libxul/files/patch-bug78346328
-rw-r--r--www/libxul/files/patch-bug78463152
-rw-r--r--www/libxul/files/patch-bug78699536
-rw-r--r--www/libxul/files/patch-bug78790412
-rw-r--r--www/libxul/files/patch-bug78803948
-rw-r--r--www/libxul/files/patch-bug78810820
-rw-r--r--www/libxul/files/patch-bug788955299
-rw-r--r--www/libxul/files/patch-bug78943627
-rw-r--r--www/libxul/files/patch-bug78965611
-rw-r--r--www/libxul/files/patch-bug789693109
-rw-r--r--www/libxul/files/patch-bug791305384
-rw-r--r--www/libxul/files/patch-bug79136695
-rw-r--r--www/libxul/files/patch-bug799441116
-rw-r--r--www/libxul/files/patch-bug803480102
-rw-r--r--www/libxul/files/patch-bug80613929
-rw-r--r--www/libxul/files/patch-bug807492628
-rw-r--r--www/libxul/files/patch-bug826985164
-rw-r--r--www/libxul/files/patch-bug82800336
-rw-r--r--www/libxul/files/patch-bug851992373
-rw-r--r--www/libxul/files/patch-bug87615613
-rw-r--r--www/libxul/files/patch-bug87879111
-rw-r--r--www/libxul/files/patch-bug88618111
-rw-r--r--www/libxul/files/patch-bug889699175
-rw-r--r--www/libxul/files/patch-bug893397206
-rw-r--r--www/libxul/files/patch-bug910875102
-rw-r--r--www/libxul/files/patch-bug91621639
-rw-r--r--www/libxul/files/patch-bug91658940
-rw-r--r--www/libxul/files/patch-build-pgo-profileserver.py23
-rw-r--r--www/libxul/files/patch-clang3325
-rw-r--r--www/libxul/files/patch-duckduckgo47
-rw-r--r--www/libxul/files/patch-ipc-chromium-Makefile.in15
-rw-r--r--www/libxul/files/patch-ipc-chromium-src-base-message_pump_libevent.cc4
-rw-r--r--www/libxul/files/patch-js-src-methodjit-MethodJIT.cpp20
-rw-r--r--www/libxul/files/patch-media-libsydneyaudio-src-sydney_audio_oss.c13
-rw-r--r--www/libxul/files/patch-media-webrtc-trunk-src-system_wrappers-source-spreadsortlib-spreadsort.hpp16
-rw-r--r--www/libxul/files/patch-no-videoio.h22
-rw-r--r--www/libxul/files/patch-z-bug76244570
-rw-r--r--www/libxul/files/pkg-deinstall.in24
-rw-r--r--www/libxul/files/pkg-install.in33
-rw-r--r--www/linux-firefox/Makefile29
-rw-r--r--www/linux-firefox/distinfo4
-rw-r--r--www/linux-seamonkey/Makefile4
-rw-r--r--www/linux-seamonkey/Makefile.common36
-rw-r--r--www/linux-seamonkey/distinfo4
81 files changed, 3252 insertions, 4714 deletions
diff --git a/www/firefox-esr-i18n/Makefile b/www/firefox-esr-i18n/Makefile
index f8c9d961faa1..1784d38b6767 100644
--- a/www/firefox-esr-i18n/Makefile
+++ b/www/firefox-esr-i18n/Makefile
@@ -1,11 +1,12 @@
# Created by: Andrew Pantyukhin <infofarmer@FreeBSD.org>
# $FreeBSD$
-PORTNAME= firefox-i18n
-PORTVERSION= 17.0.8
+PORTNAME= firefox
+PORTVERSION= 17.0.9
CATEGORIES= www
MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${PORTVERSION}esr/linux-i686/xpi
PKGNAMEPREFIX=
+PKGNAMESUFFIX= -esr-i18n
DISTFILES= ${FIREFOX_I18N_:S/$/.xpi/}
DIST_SUBDIR= xpi/${DISTNAME}
@@ -16,7 +17,6 @@ EXTRACT_DEPENDS= zip:${PORTSDIR}/archivers/zip
USE_FIREFOX= 17
USE_XPI= firefox linux-firefox
-LATEST_LINK= firefox-esr-i18n
USE_SUBMAKE= yes
diff --git a/www/firefox-esr-i18n/distinfo b/www/firefox-esr-i18n/distinfo
index 1037efe9c2f9..de459fe91a72 100644
--- a/www/firefox-esr-i18n/distinfo
+++ b/www/firefox-esr-i18n/distinfo
@@ -1,164 +1,164 @@
-SHA256 (xpi/firefox-i18n-17.0.8/af.xpi) = b230ec6216b66cd4ebb562f6dba8d7d83450e24cd9fcee8f935984ba18af8101
-SIZE (xpi/firefox-i18n-17.0.8/af.xpi) = 281145
-SHA256 (xpi/firefox-i18n-17.0.8/ak.xpi) = ad19c1528c0655919be353b9cdd48341783b74ab7a5f3164492b986d4c656e86
-SIZE (xpi/firefox-i18n-17.0.8/ak.xpi) = 282976
-SHA256 (xpi/firefox-i18n-17.0.8/ar.xpi) = d231ff048e817b50c2f70934b7f4ad166b3a90098a0b6d64ba99eda9823342cd
-SIZE (xpi/firefox-i18n-17.0.8/ar.xpi) = 311506
-SHA256 (xpi/firefox-i18n-17.0.8/ast.xpi) = 30415f6d08bf4371ce81ebe4be53a15e10f4481e08fab8af684b7d61401f784a
-SIZE (xpi/firefox-i18n-17.0.8/ast.xpi) = 264122
-SHA256 (xpi/firefox-i18n-17.0.8/be.xpi) = 9a82182e59950ed11f867e6595f3ba17d1cb695196eeb51b30e76215852aa4da
-SIZE (xpi/firefox-i18n-17.0.8/be.xpi) = 273411
-SHA256 (xpi/firefox-i18n-17.0.8/bg.xpi) = 4e6de543f17f626092badac19cb2025951f414592b4cecfd958fd0cf38a35ee6
-SIZE (xpi/firefox-i18n-17.0.8/bg.xpi) = 327260
-SHA256 (xpi/firefox-i18n-17.0.8/bn-BD.xpi) = e441286a34f177c757209447191b4b0e03cd1f2a9913aad8037b93136e8709c8
-SIZE (xpi/firefox-i18n-17.0.8/bn-BD.xpi) = 339303
-SHA256 (xpi/firefox-i18n-17.0.8/bn-IN.xpi) = d7e1858997060d73dc0636d96a42c6c5225995cd3517a6bf99b31c19a8d93408
-SIZE (xpi/firefox-i18n-17.0.8/bn-IN.xpi) = 373020
-SHA256 (xpi/firefox-i18n-17.0.8/br.xpi) = dc76c59ee7ea381ebba96d751ab1c13e61ece1621a9ab0ba1bab1ac762d6bc08
-SIZE (xpi/firefox-i18n-17.0.8/br.xpi) = 291582
-SHA256 (xpi/firefox-i18n-17.0.8/bs.xpi) = cd017af4a9bfd7b1d83bf6963b33c3f8297c0c52ce2c4b114f0022cc6ed275a8
-SIZE (xpi/firefox-i18n-17.0.8/bs.xpi) = 292222
-SHA256 (xpi/firefox-i18n-17.0.8/ca.xpi) = 466e188e66115d29d7e58d59243c9bfc40b0a65d001e04565a93b9d8e405db32
-SIZE (xpi/firefox-i18n-17.0.8/ca.xpi) = 293531
-SHA256 (xpi/firefox-i18n-17.0.8/cs.xpi) = 812cb191176fde28282e97ab788279b06d89b10ca1fff216f87338057774db6f
-SIZE (xpi/firefox-i18n-17.0.8/cs.xpi) = 294132
-SHA256 (xpi/firefox-i18n-17.0.8/cy.xpi) = 63b256f0adc1106f3284b46844409d81a7aed6c8247783e01e80578ab198486c
-SIZE (xpi/firefox-i18n-17.0.8/cy.xpi) = 284867
-SHA256 (xpi/firefox-i18n-17.0.8/da.xpi) = 051443a3f523907feea4a28f5b33642f0255561223ed0239a9ad16ea1825bfa7
-SIZE (xpi/firefox-i18n-17.0.8/da.xpi) = 282668
-SHA256 (xpi/firefox-i18n-17.0.8/de.xpi) = 91ace69f197ea68091cb1ffaf0f02b6f26786c2f057c002ce7a37664f32283ec
-SIZE (xpi/firefox-i18n-17.0.8/de.xpi) = 270383
-SHA256 (xpi/firefox-i18n-17.0.8/el.xpi) = 468f0d3c3a7df86fc5797c7153f87fbee0e19909e57a2fe5da5585dbd2779980
-SIZE (xpi/firefox-i18n-17.0.8/el.xpi) = 311652
-SHA256 (xpi/firefox-i18n-17.0.8/en-GB.xpi) = 416064538e1bc74c5489e7d4dbddcf334d8a6c7284a6f17066388a68bcbb4fac
-SIZE (xpi/firefox-i18n-17.0.8/en-GB.xpi) = 272103
-SHA256 (xpi/firefox-i18n-17.0.8/en-US.xpi) = 82fa43a711d466ae618212e720718e0480dde2f63319b985b0bce673415a58da
-SIZE (xpi/firefox-i18n-17.0.8/en-US.xpi) = 272155
-SHA256 (xpi/firefox-i18n-17.0.8/en-ZA.xpi) = adcda2ac9ea782d84faad11e138dc71b60558f2ab1cce71e80b9081bb0fb00f0
-SIZE (xpi/firefox-i18n-17.0.8/en-ZA.xpi) = 272934
-SHA256 (xpi/firefox-i18n-17.0.8/eo.xpi) = 3c1cdc4caef2e5c670b271d2ef7eb704256db883083b58ac0697deffe8ce708f
-SIZE (xpi/firefox-i18n-17.0.8/eo.xpi) = 284799
-SHA256 (xpi/firefox-i18n-17.0.8/es-AR.xpi) = 254e8cdf8c06e180578b2d9f353fbb64c0825560bd0bf882fb42f7f8c03e5072
-SIZE (xpi/firefox-i18n-17.0.8/es-AR.xpi) = 289238
-SHA256 (xpi/firefox-i18n-17.0.8/es-CL.xpi) = 3334e3a1c783235be7d48a30fa79476030eccebda6ccf0034eaa7d85a53d3eec
-SIZE (xpi/firefox-i18n-17.0.8/es-CL.xpi) = 296877
-SHA256 (xpi/firefox-i18n-17.0.8/es-ES.xpi) = 03a4d82e6e104329b78d6fde6285b1d0f274ac1dc62e3139a1a44121e2e4824c
-SIZE (xpi/firefox-i18n-17.0.8/es-ES.xpi) = 242184
-SHA256 (xpi/firefox-i18n-17.0.8/es-MX.xpi) = ea49b40abcc36a4a32fae739e39b1700bf172b5dddc14919592bbd1b6e1db3a5
-SIZE (xpi/firefox-i18n-17.0.8/es-MX.xpi) = 247970
-SHA256 (xpi/firefox-i18n-17.0.8/et.xpi) = f8b40208cecbe5423e072f0063f43d85358f47c2535e837b0c3ca8258ec71cfb
-SIZE (xpi/firefox-i18n-17.0.8/et.xpi) = 284693
-SHA256 (xpi/firefox-i18n-17.0.8/eu.xpi) = 08b98652a8523d6c7db09d8450f25136d778f9917b26192672d454d5c1e6c752
-SIZE (xpi/firefox-i18n-17.0.8/eu.xpi) = 284226
-SHA256 (xpi/firefox-i18n-17.0.8/fa.xpi) = 8fa06ed42c935fc4032a7ecf3efcf9a4604bcea06239546c3ff0e28fcbf4406c
-SIZE (xpi/firefox-i18n-17.0.8/fa.xpi) = 323996
-SHA256 (xpi/firefox-i18n-17.0.8/fi.xpi) = 8e32ca2ec68e8b405d4eb06d6e1fc7b81e3a8368241da71e979cf98d026b5eb0
-SIZE (xpi/firefox-i18n-17.0.8/fi.xpi) = 288654
-SHA256 (xpi/firefox-i18n-17.0.8/fr.xpi) = d94d3dc443433ccf773165eb190d953efa41b52a893a0784868749c953d4f3d1
-SIZE (xpi/firefox-i18n-17.0.8/fr.xpi) = 293361
-SHA256 (xpi/firefox-i18n-17.0.8/fy-NL.xpi) = bd2ed697ed7a6962d57a46e1bfa91dad09ee2e2afd72246699a87270cd09d4c4
-SIZE (xpi/firefox-i18n-17.0.8/fy-NL.xpi) = 289689
-SHA256 (xpi/firefox-i18n-17.0.8/ga-IE.xpi) = 4061b160586f9e7cb298e39f96ddeae64e1e6b37dc8b5955e01dff4f78a9d920
-SIZE (xpi/firefox-i18n-17.0.8/ga-IE.xpi) = 296975
-SHA256 (xpi/firefox-i18n-17.0.8/gl.xpi) = 59c1888ffd571ed199bb921bd82c2810eed8d1fee2e0057e2da463beab48b603
-SIZE (xpi/firefox-i18n-17.0.8/gl.xpi) = 286996
-SHA256 (xpi/firefox-i18n-17.0.8/gu-IN.xpi) = b8b78e370e75b8de1211cf0d0d88fb56efb77b5aa79f56e17d0142f93d795328
-SIZE (xpi/firefox-i18n-17.0.8/gu-IN.xpi) = 319479
-SHA256 (xpi/firefox-i18n-17.0.8/he.xpi) = d3aa3790c1c0023ec3a306d38227401a0c76ebd2480ad5a1a366ea9ac37696e0
-SIZE (xpi/firefox-i18n-17.0.8/he.xpi) = 301481
-SHA256 (xpi/firefox-i18n-17.0.8/hi-IN.xpi) = 6caad9514b2ab45b6e7fc6ee5a146a6735c9e74f80fa4d8ae9de19215644c5c4
-SIZE (xpi/firefox-i18n-17.0.8/hi-IN.xpi) = 330863
-SHA256 (xpi/firefox-i18n-17.0.8/hr.xpi) = 336a9fa402e16201c699a3ac2f3f61d3a8ce8e77286c21ae92ea6ca4ab7a02c6
-SIZE (xpi/firefox-i18n-17.0.8/hr.xpi) = 287939
-SHA256 (xpi/firefox-i18n-17.0.8/hu.xpi) = 588d58f50d75680a371d139f8ff5bcf85d1c747c1ce5ea68fa005548df515562
-SIZE (xpi/firefox-i18n-17.0.8/hu.xpi) = 303043
-SHA256 (xpi/firefox-i18n-17.0.8/hy-AM.xpi) = 22037ccc6a0088f8410ede7c81d12d6c0fdb1074f28c9a1a22e681d580196edd
-SIZE (xpi/firefox-i18n-17.0.8/hy-AM.xpi) = 328202
-SHA256 (xpi/firefox-i18n-17.0.8/id.xpi) = 773894853aa09990d2b9d37b7882d2dc3278828886f9b85597baa69c5347889f
-SIZE (xpi/firefox-i18n-17.0.8/id.xpi) = 283725
-SHA256 (xpi/firefox-i18n-17.0.8/is.xpi) = 1341dc8eee9a07d1061f3beff8ea746be36ae9f1336aac915290d286b6b1ea25
-SIZE (xpi/firefox-i18n-17.0.8/is.xpi) = 284907
-SHA256 (xpi/firefox-i18n-17.0.8/it.xpi) = ddfaabc26f18f2881afda0d9b62d1b42cd7b40e3e98ca99529c7387d98fd4bbe
-SIZE (xpi/firefox-i18n-17.0.8/it.xpi) = 238644
-SHA256 (xpi/firefox-i18n-17.0.8/ja.xpi) = 48346c6e27fd398802bdb8fdf2da32769fec39db78b62250a1cbf72f1fc2908f
-SIZE (xpi/firefox-i18n-17.0.8/ja.xpi) = 322489
-SHA256 (xpi/firefox-i18n-17.0.8/kk.xpi) = db597265643957a0cfeb21e2fdd85907c1224f52af9cb4bd24670b5783de6bf8
-SIZE (xpi/firefox-i18n-17.0.8/kk.xpi) = 330351
-SHA256 (xpi/firefox-i18n-17.0.8/kn.xpi) = 518dfdbf264c42071b7d6e06e319aa07e77d41e42fc17b3d7412f95b4f8a1bf4
-SIZE (xpi/firefox-i18n-17.0.8/kn.xpi) = 354899
-SHA256 (xpi/firefox-i18n-17.0.8/ko.xpi) = e13ff9b91db6ec679f2bc390b58e17e451af66433d77b4ff230b5e0a7986912d
-SIZE (xpi/firefox-i18n-17.0.8/ko.xpi) = 296728
-SHA256 (xpi/firefox-i18n-17.0.8/ku.xpi) = d4866a48150e7d6af889f84aa34c822d9f8a4596e237f027cacef4eba85df663
-SIZE (xpi/firefox-i18n-17.0.8/ku.xpi) = 304897
-SHA256 (xpi/firefox-i18n-17.0.8/lg.xpi) = 01450fe3487e69a920b6181499268b9cd453d9de66bad06415b5a6a0dfcc19d6
-SIZE (xpi/firefox-i18n-17.0.8/lg.xpi) = 290627
-SHA256 (xpi/firefox-i18n-17.0.8/lt.xpi) = 74ab59a24994f2256a58387e80ec9986b4152906889a2d8cbba80cfcb71186e7
-SIZE (xpi/firefox-i18n-17.0.8/lt.xpi) = 349461
-SHA256 (xpi/firefox-i18n-17.0.8/lv.xpi) = 6bb40de2eb19cb92f6630dd6f88a3fa2e881d6e10bf9ef8facfb18d0ef68de52
-SIZE (xpi/firefox-i18n-17.0.8/lv.xpi) = 291403
-SHA256 (xpi/firefox-i18n-17.0.8/mai.xpi) = b0e421debb03d0d5c567c33d17c6b3f7edca6f458bca6ceac0553977648c9e88
-SIZE (xpi/firefox-i18n-17.0.8/mai.xpi) = 328266
-SHA256 (xpi/firefox-i18n-17.0.8/mk.xpi) = 85c2d2d6781bd5aa1d9ac7cae20bfa3cb654d4dbb230f89a95cae053e0563f35
-SIZE (xpi/firefox-i18n-17.0.8/mk.xpi) = 315578
-SHA256 (xpi/firefox-i18n-17.0.8/ml.xpi) = f6a288766bf716aff11707382c808998d0ea222881d7bf2fe4add1acdb44cc49
-SIZE (xpi/firefox-i18n-17.0.8/ml.xpi) = 361541
-SHA256 (xpi/firefox-i18n-17.0.8/mr.xpi) = 2920a89bbf8860a23f1af367c2a97771d4c1446c6255f56358ccfd396e0f9d9a
-SIZE (xpi/firefox-i18n-17.0.8/mr.xpi) = 327860
-SHA256 (xpi/firefox-i18n-17.0.8/nb-NO.xpi) = c5baedc2320fba99d7cea011d188e2153ccf45ea02dc4877f37f7ac3c9cc4cb8
-SIZE (xpi/firefox-i18n-17.0.8/nb-NO.xpi) = 284888
-SHA256 (xpi/firefox-i18n-17.0.8/nl.xpi) = 4ff95dba4e22d16860fd0f1c78d1a48e491854da4a64973521a551c619b83200
-SIZE (xpi/firefox-i18n-17.0.8/nl.xpi) = 286111
-SHA256 (xpi/firefox-i18n-17.0.8/nn-NO.xpi) = bf43f46d3c7096fa12d9ae463b70f42f81ea62d7e8e8a8b9fd51f402e1496b35
-SIZE (xpi/firefox-i18n-17.0.8/nn-NO.xpi) = 287843
-SHA256 (xpi/firefox-i18n-17.0.8/nso.xpi) = 84fabb7dd08eeab63a01b0d355b489482a131e0455d7d29c2d330d433831601d
-SIZE (xpi/firefox-i18n-17.0.8/nso.xpi) = 288149
-SHA256 (xpi/firefox-i18n-17.0.8/or.xpi) = 860c48ab8b8e2fdb07bb911fc5e8464b766315bf1ecf828e0edb7b2f545d5d0c
-SIZE (xpi/firefox-i18n-17.0.8/or.xpi) = 329683
-SHA256 (xpi/firefox-i18n-17.0.8/pa-IN.xpi) = b706b38a4b56116b3b511aa10b220163460369396fdd2e51d27cea2bf55841cf
-SIZE (xpi/firefox-i18n-17.0.8/pa-IN.xpi) = 318503
-SHA256 (xpi/firefox-i18n-17.0.8/pl.xpi) = 7585c41ff1782425e58b983854351e6f46e7f393903da89a935ac4a326f14ba7
-SIZE (xpi/firefox-i18n-17.0.8/pl.xpi) = 301034
-SHA256 (xpi/firefox-i18n-17.0.8/pt-BR.xpi) = 374a98cf06339353107cc90df09b71031e86928391daa8773fe326fcd747cc48
-SIZE (xpi/firefox-i18n-17.0.8/pt-BR.xpi) = 289243
-SHA256 (xpi/firefox-i18n-17.0.8/pt-PT.xpi) = 43b73d362ad90bce3ff441dfc9190cdbe087edefc1940414e2ba19a7cfb782bd
-SIZE (xpi/firefox-i18n-17.0.8/pt-PT.xpi) = 291457
-SHA256 (xpi/firefox-i18n-17.0.8/rm.xpi) = 3bc04a2b8ab825a2bb1799da4caf247344e827c8519dee0d1b36e0891df458fd
-SIZE (xpi/firefox-i18n-17.0.8/rm.xpi) = 288466
-SHA256 (xpi/firefox-i18n-17.0.8/ro.xpi) = fa58ef604f0165d7016ba64cf13a6a1792dc30af84b5a3a2d4531a4b0c0ec753
-SIZE (xpi/firefox-i18n-17.0.8/ro.xpi) = 310251
-SHA256 (xpi/firefox-i18n-17.0.8/ru.xpi) = b3baf4f5f539a792722ebbed6d8c27162812548459d2ff5a78ae2917c739d02e
-SIZE (xpi/firefox-i18n-17.0.8/ru.xpi) = 284914
-SHA256 (xpi/firefox-i18n-17.0.8/si.xpi) = 16fcc9103fb5ed622458c35c4115d3513a6aff065336aac9ce3a7304db826ec9
-SIZE (xpi/firefox-i18n-17.0.8/si.xpi) = 317364
-SHA256 (xpi/firefox-i18n-17.0.8/sk.xpi) = 8ab8a0c823083e0fa5db5c8b9e78779a2553ee2c453b2d8190b53ce82788be59
-SIZE (xpi/firefox-i18n-17.0.8/sk.xpi) = 301478
-SHA256 (xpi/firefox-i18n-17.0.8/sl.xpi) = b525ac9584c3803fd5f22ce611b3462f3959f89817ad27e682d31e50079ebd79
-SIZE (xpi/firefox-i18n-17.0.8/sl.xpi) = 286637
-SHA256 (xpi/firefox-i18n-17.0.8/son.xpi) = 70098df1962037b466d1e5f757bdd065575cfc0f90c5b60310f632ce1385f62c
-SIZE (xpi/firefox-i18n-17.0.8/son.xpi) = 283683
-SHA256 (xpi/firefox-i18n-17.0.8/sq.xpi) = c5a59d0ec7d1721fd806e8e5bfe11494848af04ded5f7755041c09e44d3f88d5
-SIZE (xpi/firefox-i18n-17.0.8/sq.xpi) = 291165
-SHA256 (xpi/firefox-i18n-17.0.8/sr.xpi) = 9ee6800e5f774556d5a6f0a6e9ba506524e01c944b17bbc9d2e588222078e5f6
-SIZE (xpi/firefox-i18n-17.0.8/sr.xpi) = 334014
-SHA256 (xpi/firefox-i18n-17.0.8/sv-SE.xpi) = c7ee92f5d8dc48208299fee3aae747d79c8e971d7f27ef99b4591e9ad658f167
-SIZE (xpi/firefox-i18n-17.0.8/sv-SE.xpi) = 288083
-SHA256 (xpi/firefox-i18n-17.0.8/ta-LK.xpi) = 481185f7b6441b483d220178f3fc35c0a27156a4983d0e42c2a8131795a7a572
-SIZE (xpi/firefox-i18n-17.0.8/ta-LK.xpi) = 339931
-SHA256 (xpi/firefox-i18n-17.0.8/ta.xpi) = 474ea9b302f95b65a448b160febef1524e08bf41dcd32b9f29d5080febc7ea5e
-SIZE (xpi/firefox-i18n-17.0.8/ta.xpi) = 325366
-SHA256 (xpi/firefox-i18n-17.0.8/te.xpi) = 0bf544b82f849920b06d14f6035bb29d2d63848bef949d8b8f3d032e6259d1f6
-SIZE (xpi/firefox-i18n-17.0.8/te.xpi) = 341957
-SHA256 (xpi/firefox-i18n-17.0.8/th.xpi) = 426b343db09a6fec7714c067eaa945d1ba0db27e2e0787efb7c897107ca0b004
-SIZE (xpi/firefox-i18n-17.0.8/th.xpi) = 323677
-SHA256 (xpi/firefox-i18n-17.0.8/tr.xpi) = 0d4c80148bbffeba4d1b27bd22c1f6dde4a755274f3c33a933d223fba53b0975
-SIZE (xpi/firefox-i18n-17.0.8/tr.xpi) = 295841
-SHA256 (xpi/firefox-i18n-17.0.8/uk.xpi) = 9965c7f6bcf5eacc2e494b5cf0f034f950f81cbc239cb9aadaa877d0b6825843
-SIZE (xpi/firefox-i18n-17.0.8/uk.xpi) = 324250
-SHA256 (xpi/firefox-i18n-17.0.8/vi.xpi) = de96642a822d7d31079ae4e2209492e54a08eb3e4cf35f4c35269120b2ee95ed
-SIZE (xpi/firefox-i18n-17.0.8/vi.xpi) = 313548
-SHA256 (xpi/firefox-i18n-17.0.8/zh-CN.xpi) = ec85c2473bf4b28f40394d7153b0e8a1197e60eea2ab8fee86cf408ba510e79f
-SIZE (xpi/firefox-i18n-17.0.8/zh-CN.xpi) = 304250
-SHA256 (xpi/firefox-i18n-17.0.8/zh-TW.xpi) = b2881a5b4abbe19246a423427129d4111e531c765740ad5474c370a57e74cd6b
-SIZE (xpi/firefox-i18n-17.0.8/zh-TW.xpi) = 305437
-SHA256 (xpi/firefox-i18n-17.0.8/zu.xpi) = a2e5eccccbaa7eecedf293c558c8d04a24c6ad1aaecfb2136772aba0edf3d7ab
-SIZE (xpi/firefox-i18n-17.0.8/zu.xpi) = 296593
+SHA256 (xpi/firefox-17.0.9/af.xpi) = 7f0260504e52061b5a6f275d4b95e0e8f55708409f3292812367cbb4d5c820fb
+SIZE (xpi/firefox-17.0.9/af.xpi) = 281146
+SHA256 (xpi/firefox-17.0.9/ak.xpi) = 5cdf30e0e117d45d5a4a25e83b78fadc64bbf42ee0768d9276f91ee8aedaf88d
+SIZE (xpi/firefox-17.0.9/ak.xpi) = 282976
+SHA256 (xpi/firefox-17.0.9/ar.xpi) = 753c3b668374548fe60e8ca7b47a6cd37230167d5e6fb7c44a0ad4d6da3ec95f
+SIZE (xpi/firefox-17.0.9/ar.xpi) = 311507
+SHA256 (xpi/firefox-17.0.9/ast.xpi) = 6906d44d39ca5d2088c0d2704747482cc5e7232af450458ee0a2267ab7845757
+SIZE (xpi/firefox-17.0.9/ast.xpi) = 264123
+SHA256 (xpi/firefox-17.0.9/be.xpi) = 4f5591ba50eb926534d0c2b9b496ce15ed7139e92d0d6497beac065e72bd4517
+SIZE (xpi/firefox-17.0.9/be.xpi) = 273411
+SHA256 (xpi/firefox-17.0.9/bg.xpi) = ea422ff59d6e1e0745bacb561c6a0d28855edbacfedf55fd98c9971bde5c7e64
+SIZE (xpi/firefox-17.0.9/bg.xpi) = 327261
+SHA256 (xpi/firefox-17.0.9/bn-BD.xpi) = 775c12b738227778a98cf795810e2440b2022c3579cf963ff91d9a26b31c1370
+SIZE (xpi/firefox-17.0.9/bn-BD.xpi) = 339303
+SHA256 (xpi/firefox-17.0.9/bn-IN.xpi) = 5130b0bcd48ac22187db4a30062d173c0b0e4236c879848487c25ce2a8fa67b2
+SIZE (xpi/firefox-17.0.9/bn-IN.xpi) = 373021
+SHA256 (xpi/firefox-17.0.9/br.xpi) = b97128f4293abc90ae8f1d0793e9ae3faea1c09b24732317409551f57397b398
+SIZE (xpi/firefox-17.0.9/br.xpi) = 291583
+SHA256 (xpi/firefox-17.0.9/bs.xpi) = 7a8a49cf327950dabce9cf03574bf45d2bf5302da4c81428558bbbf906e1ed02
+SIZE (xpi/firefox-17.0.9/bs.xpi) = 292223
+SHA256 (xpi/firefox-17.0.9/ca.xpi) = cb07a7cab2712ac0f7a440fd666f08c1c005efeb20888801596b277119afda31
+SIZE (xpi/firefox-17.0.9/ca.xpi) = 293532
+SHA256 (xpi/firefox-17.0.9/cs.xpi) = 693730bd1b5f46c3f59698862dd72f9b90c76f087faae7881b98251a8643c9af
+SIZE (xpi/firefox-17.0.9/cs.xpi) = 294133
+SHA256 (xpi/firefox-17.0.9/cy.xpi) = 0b5908c12fe94c0f6a35dbf3da346b663380c1a68ff17c234e53f1c84bbbebcb
+SIZE (xpi/firefox-17.0.9/cy.xpi) = 284868
+SHA256 (xpi/firefox-17.0.9/da.xpi) = 92d27215d507da5dbc61db11cb82ae1ba22a43246de1820633dbc3116c3e452d
+SIZE (xpi/firefox-17.0.9/da.xpi) = 282668
+SHA256 (xpi/firefox-17.0.9/de.xpi) = 8dbee24a5d269c0762b8c041294242ca76f61302c773723bd371c507bc647b0b
+SIZE (xpi/firefox-17.0.9/de.xpi) = 270384
+SHA256 (xpi/firefox-17.0.9/el.xpi) = 60f461421a8c5e6cacf46f6e13d1b1242dbd8a8cb839c65e1298efdd046865b5
+SIZE (xpi/firefox-17.0.9/el.xpi) = 311652
+SHA256 (xpi/firefox-17.0.9/en-GB.xpi) = be98a1a685c3a72f983039a8c524bd6175d59b72169cdf86b65cae5f911548d4
+SIZE (xpi/firefox-17.0.9/en-GB.xpi) = 272104
+SHA256 (xpi/firefox-17.0.9/en-US.xpi) = dc0be0502aa96eeae6383a76d2de3a5df34a2ad7badc2b397842e26aaefe2376
+SIZE (xpi/firefox-17.0.9/en-US.xpi) = 272155
+SHA256 (xpi/firefox-17.0.9/en-ZA.xpi) = 5a469a462f1ffa93ad0fd84c12863b3614ed85ed952766e7f4aa70e2f9c61e71
+SIZE (xpi/firefox-17.0.9/en-ZA.xpi) = 272935
+SHA256 (xpi/firefox-17.0.9/eo.xpi) = 5b4a902b499153ddfec17721b88f6ce5df93ffd84e8be10a15f0d1ea5ca708bb
+SIZE (xpi/firefox-17.0.9/eo.xpi) = 284800
+SHA256 (xpi/firefox-17.0.9/es-AR.xpi) = 0763808de0b1873bacbdc1864fd34605fb9a07e9352a63aea49c372fc06a9dfe
+SIZE (xpi/firefox-17.0.9/es-AR.xpi) = 289239
+SHA256 (xpi/firefox-17.0.9/es-CL.xpi) = 5d18909aa763160fbea9a0db64350944d3273b47b8730423f55d1905696dbf71
+SIZE (xpi/firefox-17.0.9/es-CL.xpi) = 296878
+SHA256 (xpi/firefox-17.0.9/es-ES.xpi) = eefe07da1a4e5d7d6c3cd4a655c71b790b1633e9888bdedfc90b394c6807c312
+SIZE (xpi/firefox-17.0.9/es-ES.xpi) = 242185
+SHA256 (xpi/firefox-17.0.9/es-MX.xpi) = a9032d2f4fe6b256af7e3db9a1ce4ae303d23e449b0c4f2e99b36800356e3d3c
+SIZE (xpi/firefox-17.0.9/es-MX.xpi) = 247971
+SHA256 (xpi/firefox-17.0.9/et.xpi) = 1a8289276dc74e8843e7514b5bc65386116a1c890cc98524a5a21d864ff3178c
+SIZE (xpi/firefox-17.0.9/et.xpi) = 284694
+SHA256 (xpi/firefox-17.0.9/eu.xpi) = 27cc76693ca285abda7eb29b64ee288baf847eabbd3edc52225983226c44ac9d
+SIZE (xpi/firefox-17.0.9/eu.xpi) = 284227
+SHA256 (xpi/firefox-17.0.9/fa.xpi) = c9dd9c058408b29e6cae542de1a9b7c4f2956c51705e17107627512e1b2e895a
+SIZE (xpi/firefox-17.0.9/fa.xpi) = 323997
+SHA256 (xpi/firefox-17.0.9/fi.xpi) = feea35b9d5f3e6d1b6501132d936c495c817fdf13c46223fed17382ddf0abc72
+SIZE (xpi/firefox-17.0.9/fi.xpi) = 288655
+SHA256 (xpi/firefox-17.0.9/fr.xpi) = a8c5f92105aa3383dae13c76100f6ed8d9cff178b311dee7b5a5ca0a3cb86f6e
+SIZE (xpi/firefox-17.0.9/fr.xpi) = 293362
+SHA256 (xpi/firefox-17.0.9/fy-NL.xpi) = 330287e8e9476487c7a00f0e66c30bd4deeb57183b8ec099485945fa8a7e6300
+SIZE (xpi/firefox-17.0.9/fy-NL.xpi) = 289690
+SHA256 (xpi/firefox-17.0.9/ga-IE.xpi) = 3fb367ee983131d60564812cd0928bdf6f4619252450ee107e6565e2ba79a42c
+SIZE (xpi/firefox-17.0.9/ga-IE.xpi) = 296976
+SHA256 (xpi/firefox-17.0.9/gl.xpi) = c0ba1b26790aa7ff991eb7c6f697d5bdbc2bb7ac9aa2c242fbc5982f32df692a
+SIZE (xpi/firefox-17.0.9/gl.xpi) = 286997
+SHA256 (xpi/firefox-17.0.9/gu-IN.xpi) = 72ac2ac25213d7c40f0144931871673cffdbb86738c328be3b08ddbb79f0c0ef
+SIZE (xpi/firefox-17.0.9/gu-IN.xpi) = 319480
+SHA256 (xpi/firefox-17.0.9/he.xpi) = fe72e5c7cf47078f88711192d85366c754f5155a83da8a4bcf9770eb306766f0
+SIZE (xpi/firefox-17.0.9/he.xpi) = 301482
+SHA256 (xpi/firefox-17.0.9/hi-IN.xpi) = 018de94c39166a42bb6b978a444289699d4a939e69431cbdc7180f6d6380b182
+SIZE (xpi/firefox-17.0.9/hi-IN.xpi) = 330864
+SHA256 (xpi/firefox-17.0.9/hr.xpi) = c810059f87762a22f8be0172cfe2f0b32e2cdafb4f487956628716ab09372efd
+SIZE (xpi/firefox-17.0.9/hr.xpi) = 287940
+SHA256 (xpi/firefox-17.0.9/hu.xpi) = aecb3a32df7df05d8a621b8496f488e65f528106b20a0dca323f341e9da11a4c
+SIZE (xpi/firefox-17.0.9/hu.xpi) = 303044
+SHA256 (xpi/firefox-17.0.9/hy-AM.xpi) = 30218c08c66316090acabbd58eb5813cc0466707dfb5e60f5ef241c98733dd74
+SIZE (xpi/firefox-17.0.9/hy-AM.xpi) = 328203
+SHA256 (xpi/firefox-17.0.9/id.xpi) = 433515ff50eaae7ce75c5d70a02afd91377e25a3c11a4457e3757d4b94ef4bcc
+SIZE (xpi/firefox-17.0.9/id.xpi) = 283725
+SHA256 (xpi/firefox-17.0.9/is.xpi) = 2c47d4f9ace4a7dd527915d1e970cf1adb4ff268126fae01f53c42af3573ed17
+SIZE (xpi/firefox-17.0.9/is.xpi) = 284908
+SHA256 (xpi/firefox-17.0.9/it.xpi) = 8bc9f6155ed74d1ff7a0b9d32ae6385e854df6181d40199298257e62a31bc85a
+SIZE (xpi/firefox-17.0.9/it.xpi) = 238645
+SHA256 (xpi/firefox-17.0.9/ja.xpi) = 5d317c6ddbd58f939069a3c7306b1ef37288908f6c4238e9acad82b206332a65
+SIZE (xpi/firefox-17.0.9/ja.xpi) = 322490
+SHA256 (xpi/firefox-17.0.9/kk.xpi) = 5de93350543644d3ea8394c6810f85368b0f2933a3eb7be5a5468096c5901865
+SIZE (xpi/firefox-17.0.9/kk.xpi) = 330352
+SHA256 (xpi/firefox-17.0.9/kn.xpi) = 8f48847052769177deed4c78e8b103129b045bb4168404e477082100f2153ddf
+SIZE (xpi/firefox-17.0.9/kn.xpi) = 354900
+SHA256 (xpi/firefox-17.0.9/ko.xpi) = dc69c7c33446f4353e695f42c7f62b0f0c51cae471182415e0754f73d4515415
+SIZE (xpi/firefox-17.0.9/ko.xpi) = 296729
+SHA256 (xpi/firefox-17.0.9/ku.xpi) = 2bb621adfb42be40136fae29f3b605f6c4d4f2860c70e4148284f2f872a6a47a
+SIZE (xpi/firefox-17.0.9/ku.xpi) = 304898
+SHA256 (xpi/firefox-17.0.9/lg.xpi) = 5665e8ecb6dc909e5263ff92f012d96e5b6506b75f27d8476b376df68f151c83
+SIZE (xpi/firefox-17.0.9/lg.xpi) = 290627
+SHA256 (xpi/firefox-17.0.9/lt.xpi) = 4a22dd0fa980845c52ff542a22ff4d2782644fbf61562b59d47958c63b0af6aa
+SIZE (xpi/firefox-17.0.9/lt.xpi) = 349462
+SHA256 (xpi/firefox-17.0.9/lv.xpi) = 0c584551a8098f332ff104f69873f7fe7032125d440b4d2c655439d96f9f4970
+SIZE (xpi/firefox-17.0.9/lv.xpi) = 291404
+SHA256 (xpi/firefox-17.0.9/mai.xpi) = e48e46a0862ad6d250e13f3ed7ba6260810e8d7a87809a0f95cb5f721041f7fe
+SIZE (xpi/firefox-17.0.9/mai.xpi) = 328267
+SHA256 (xpi/firefox-17.0.9/mk.xpi) = 74eac33091fb3ede7d6b0608e4eae7ca85ede50d70a52b7682ab248c7580dd7f
+SIZE (xpi/firefox-17.0.9/mk.xpi) = 315578
+SHA256 (xpi/firefox-17.0.9/ml.xpi) = abfddffaa764c95d6b934b18ee79b73d0db2aeec71df72a3d6ad7891e069204f
+SIZE (xpi/firefox-17.0.9/ml.xpi) = 361541
+SHA256 (xpi/firefox-17.0.9/mr.xpi) = 427de6f5dc7e17d6b0d5bc28eae10b492684b954cddbca17314029a19ad60b81
+SIZE (xpi/firefox-17.0.9/mr.xpi) = 327860
+SHA256 (xpi/firefox-17.0.9/nb-NO.xpi) = 705fe3683fedec09ec8242332178319ae81b68feccb9faf2e92724cd91e1ae33
+SIZE (xpi/firefox-17.0.9/nb-NO.xpi) = 284889
+SHA256 (xpi/firefox-17.0.9/nl.xpi) = 5c782528ef0bbc0e00ed13eafeedd4ce6314760c11a9a094698db11bb71f1a16
+SIZE (xpi/firefox-17.0.9/nl.xpi) = 286112
+SHA256 (xpi/firefox-17.0.9/nn-NO.xpi) = 94b1dc90f086753842bd737c76ca3e7fa76595ca92f2c77c5074cb9ef2df143b
+SIZE (xpi/firefox-17.0.9/nn-NO.xpi) = 287844
+SHA256 (xpi/firefox-17.0.9/nso.xpi) = fff82877760917c36b89eba1208e94189733c022a4b4749fb11624cfdf4a24ad
+SIZE (xpi/firefox-17.0.9/nso.xpi) = 288150
+SHA256 (xpi/firefox-17.0.9/or.xpi) = be1c8a86e3a983bb8d660e361656a55a374d8336116b79df84e5dbf5cb566022
+SIZE (xpi/firefox-17.0.9/or.xpi) = 329683
+SHA256 (xpi/firefox-17.0.9/pa-IN.xpi) = 8289237ce6218b4b7fd929feb3860e4c97ca18f376247e657f4840e7f2abd577
+SIZE (xpi/firefox-17.0.9/pa-IN.xpi) = 318504
+SHA256 (xpi/firefox-17.0.9/pl.xpi) = f3627a290ba98bf7f847d128a31ca40d08eba5ec5e1105776285816917037e88
+SIZE (xpi/firefox-17.0.9/pl.xpi) = 301035
+SHA256 (xpi/firefox-17.0.9/pt-BR.xpi) = 3d43b2982fc1aadad8d4bbdfcd2ef4b68c253da9fd63476b4555b6559b7e6ca8
+SIZE (xpi/firefox-17.0.9/pt-BR.xpi) = 289244
+SHA256 (xpi/firefox-17.0.9/pt-PT.xpi) = e6629aba045a7a22b69923b91a4f9833cfb622996841b8b91675ad5ede010987
+SIZE (xpi/firefox-17.0.9/pt-PT.xpi) = 291458
+SHA256 (xpi/firefox-17.0.9/rm.xpi) = bb07fbd88153d71940efc4fef5e340022a4648d2f65feca18ade6bc607fcc1ad
+SIZE (xpi/firefox-17.0.9/rm.xpi) = 288466
+SHA256 (xpi/firefox-17.0.9/ro.xpi) = 2ea8971381699231f98fabbded21e69b7e37b2d9ec9f206f2162a876178842e8
+SIZE (xpi/firefox-17.0.9/ro.xpi) = 310252
+SHA256 (xpi/firefox-17.0.9/ru.xpi) = 3cf04ea06556aedae967bd634bec2b71151d72155f913328261a26349b8d7787
+SIZE (xpi/firefox-17.0.9/ru.xpi) = 284915
+SHA256 (xpi/firefox-17.0.9/si.xpi) = 05388c0d2b5175488fec94221707e895629b98d9b07ca84acfba7e099a2eed5c
+SIZE (xpi/firefox-17.0.9/si.xpi) = 317364
+SHA256 (xpi/firefox-17.0.9/sk.xpi) = 462a9f40fd52106246bde6cf88af9e8c8a72d6d60a10e7e999773567d209d021
+SIZE (xpi/firefox-17.0.9/sk.xpi) = 301478
+SHA256 (xpi/firefox-17.0.9/sl.xpi) = 051de32ca4b73e7d6e2ae8690d88b56d321b8b3cac129d0ffaba946b33e4e0b0
+SIZE (xpi/firefox-17.0.9/sl.xpi) = 286638
+SHA256 (xpi/firefox-17.0.9/son.xpi) = e323ba779a99071be5934cff545f77bcf9a2d8cdd08d8a8c75c6373c6910e177
+SIZE (xpi/firefox-17.0.9/son.xpi) = 283684
+SHA256 (xpi/firefox-17.0.9/sq.xpi) = 8a0cc2c0c28437cb9ba729962e26db8ee84c6c9aa58ca4d04c720957eaf0290a
+SIZE (xpi/firefox-17.0.9/sq.xpi) = 291166
+SHA256 (xpi/firefox-17.0.9/sr.xpi) = 4afc31009f28e9aa299580a903e1e62cbaaa2c0366bea1ce2a4f587f6f080c7f
+SIZE (xpi/firefox-17.0.9/sr.xpi) = 334014
+SHA256 (xpi/firefox-17.0.9/sv-SE.xpi) = 16ae14be78e758e04f2ac4629de3b85322a55c8d876dbeb6421a48c153437c56
+SIZE (xpi/firefox-17.0.9/sv-SE.xpi) = 288084
+SHA256 (xpi/firefox-17.0.9/ta-LK.xpi) = 3af37b2f4ef2a6cc0d20857237494d483db54eb2469eae6dcef9fe17d35c4567
+SIZE (xpi/firefox-17.0.9/ta-LK.xpi) = 339932
+SHA256 (xpi/firefox-17.0.9/ta.xpi) = 01fccd79e39ee16be219f12f8e5a1a8797fb1c5303233bdd01db18883ab5ada4
+SIZE (xpi/firefox-17.0.9/ta.xpi) = 325367
+SHA256 (xpi/firefox-17.0.9/te.xpi) = 9ba953cebdaf411e3977668a411bcec854fb249837e6876d8c2db9d6d76bcb9c
+SIZE (xpi/firefox-17.0.9/te.xpi) = 341958
+SHA256 (xpi/firefox-17.0.9/th.xpi) = cba18c2bd16eb8e95fc5ed1f9c52653c3f9b1d5c08fd7d188bccd4c422dbdb91
+SIZE (xpi/firefox-17.0.9/th.xpi) = 323677
+SHA256 (xpi/firefox-17.0.9/tr.xpi) = fead5265d45eeff747fe84cbc17e7881e42c55d3f5a488765c790787f9db47ab
+SIZE (xpi/firefox-17.0.9/tr.xpi) = 295842
+SHA256 (xpi/firefox-17.0.9/uk.xpi) = 78e5a0b00f1952986df39ec1418d29614e024f7385f4f345539027ced0b21f35
+SIZE (xpi/firefox-17.0.9/uk.xpi) = 324251
+SHA256 (xpi/firefox-17.0.9/vi.xpi) = 9b1cee91188a64f839a291dd1645d02f52a15fa7378697b372858429f95a3cd4
+SIZE (xpi/firefox-17.0.9/vi.xpi) = 313548
+SHA256 (xpi/firefox-17.0.9/zh-CN.xpi) = a6b84548f5569a1d29721d0d13de2c0155a88aadb9472b6f4b4fa281741f9e62
+SIZE (xpi/firefox-17.0.9/zh-CN.xpi) = 304250
+SHA256 (xpi/firefox-17.0.9/zh-TW.xpi) = f93121bab234495e06a45d4aa43d681dd8c2e6660518e7d999b3e9d0b18c5018
+SIZE (xpi/firefox-17.0.9/zh-TW.xpi) = 305438
+SHA256 (xpi/firefox-17.0.9/zu.xpi) = fd869932b8bde8ad2f9c616766c8f7cacddb4bc8eb1fb19de6ccb25bb44b7db2
+SIZE (xpi/firefox-17.0.9/zu.xpi) = 296594
diff --git a/www/firefox-esr/Makefile b/www/firefox-esr/Makefile
index ab699054b557..86ebb972e370 100644
--- a/www/firefox-esr/Makefile
+++ b/www/firefox-esr/Makefile
@@ -2,12 +2,12 @@
# $FreeBSD$
PORTNAME= firefox
-DISTVERSION= 17.0.8
+DISTVERSION= 17.0.9
PORTEPOCH= 1
CATEGORIES= www ipv6
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}esr/source
-DISTNAME= ${PORTNAME}-${DISTVERSION}esr.source
PKGNAMESUFFIX= -esr
+DISTNAME= ${PORTNAME}-${DISTVERSION}esr.source
MAINTAINER= gecko@FreeBSD.org
COMMENT= Web browser based on the browser portion of Mozilla
@@ -21,7 +21,6 @@ BUILD_DEPENDS= nspr>=4.9.2:${PORTSDIR}/devel/nspr \
USE_AUTOTOOLS= autoconf213:env
USE_PYTHON_BUILD=-2.7
-LATEST_LINK= firefox-esr
USE_GECKO= gecko
CONFLICTS= firefox-2[0-35-9].* firefox-1[1-689].*
MOZ_PKGCONFIG_FILES= # empty
@@ -34,7 +33,6 @@ QT_NONSTANDARD= yes
ALL_TARGET= default
GNU_CONFIGURE= yes
USE_BZIP2= yes
-USES= gmake pkgconfig
USE_GL= gl
NO_MOZPKGINSTALL=yes
diff --git a/www/firefox-esr/distinfo b/www/firefox-esr/distinfo
index 8423f8c9a451..1c2251d9acb3 100644
--- a/www/firefox-esr/distinfo
+++ b/www/firefox-esr/distinfo
@@ -1,2 +1,2 @@
-SHA256 (firefox-17.0.8esr.source.tar.bz2) = 87f846d0cc6e1b2f4c1baeb58d2123ffbc8c166a1ec81a3b1e0551fbbd6ef1e8
-SIZE (firefox-17.0.8esr.source.tar.bz2) = 90765879
+SHA256 (firefox-17.0.9esr.source.tar.bz2) = 5b2d5498de40a0acd2a1aed8b671ad4b53a991e679ca98027c2a4c89c72f8cae
+SIZE (firefox-17.0.9esr.source.tar.bz2) = 90859763
diff --git a/www/firefox-i18n/Makefile b/www/firefox-i18n/Makefile
index e43a0180fae5..f6b4bda883e4 100644
--- a/www/firefox-i18n/Makefile
+++ b/www/firefox-i18n/Makefile
@@ -2,7 +2,7 @@
# $FreeBSD$
PORTNAME= firefox-i18n
-PORTVERSION= 23.0.1
+PORTVERSION= 24.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
-USE_FIREFOX= 23
+USE_FIREFOX= 24
USE_XPI= firefox linux-firefox
USE_SUBMAKE= yes
diff --git a/www/firefox-i18n/distinfo b/www/firefox-i18n/distinfo
index da29bd2b8b2d..e5e2ffe27b17 100644
--- a/www/firefox-i18n/distinfo
+++ b/www/firefox-i18n/distinfo
@@ -1,164 +1,164 @@
-SHA256 (xpi/firefox-i18n-23.0.1/af.xpi) = f4ff8b0b133fa145cd59ab900533a26391b06153d964bc595a734f8cdef37a2a
-SIZE (xpi/firefox-i18n-23.0.1/af.xpi) = 327796
-SHA256 (xpi/firefox-i18n-23.0.1/ak.xpi) = f0ed7470ed044f20a2e6985eb7b992ac0ebd8b0fcf888644e559bb699d8f5436
-SIZE (xpi/firefox-i18n-23.0.1/ak.xpi) = 337916
-SHA256 (xpi/firefox-i18n-23.0.1/ar.xpi) = ffefd8a9619b7b718400e520c6eb8f5f74c300988e13a53876332f2f87aa83d7
-SIZE (xpi/firefox-i18n-23.0.1/ar.xpi) = 357346
-SHA256 (xpi/firefox-i18n-23.0.1/ast.xpi) = 5d072e0095a2e8a235af988d52fdce571e244063486312518448a7494553cba6
-SIZE (xpi/firefox-i18n-23.0.1/ast.xpi) = 292700
-SHA256 (xpi/firefox-i18n-23.0.1/be.xpi) = 184bb8fd71c5bdba6741f747ecead67dae59c5bc717a8e84aa2697659fd867da
-SIZE (xpi/firefox-i18n-23.0.1/be.xpi) = 317603
-SHA256 (xpi/firefox-i18n-23.0.1/bg.xpi) = ed667eff766d403d37fe51d99e1409c3ac4903e3693ce64daf2b9d0a7ae15d31
-SIZE (xpi/firefox-i18n-23.0.1/bg.xpi) = 369531
-SHA256 (xpi/firefox-i18n-23.0.1/bn-BD.xpi) = 3f3924a2b0d57b901f054727384ce3d5b6c70c4da727d38c55e55802fa754699
-SIZE (xpi/firefox-i18n-23.0.1/bn-BD.xpi) = 391939
-SHA256 (xpi/firefox-i18n-23.0.1/bn-IN.xpi) = 0ee5943baf77a1719a56cf6df031adb2fc18dacc40962acb4dcedef3ea90c56c
-SIZE (xpi/firefox-i18n-23.0.1/bn-IN.xpi) = 425715
-SHA256 (xpi/firefox-i18n-23.0.1/br.xpi) = 520217db2b38fb2c1c5fec1d97fb73a05d0fd4487704fe2c34627ad5d096060a
-SIZE (xpi/firefox-i18n-23.0.1/br.xpi) = 328973
-SHA256 (xpi/firefox-i18n-23.0.1/bs.xpi) = 1d613fdd64eabd71225221ff80123f6a885938cb5c6345e6a35e1d1a8955ab4b
-SIZE (xpi/firefox-i18n-23.0.1/bs.xpi) = 338255
-SHA256 (xpi/firefox-i18n-23.0.1/ca.xpi) = 4f9590d663658e509930999e6899e01ced87b23fcdab532380e5c5216574ab82
-SIZE (xpi/firefox-i18n-23.0.1/ca.xpi) = 339900
-SHA256 (xpi/firefox-i18n-23.0.1/cs.xpi) = 3d26a75900e9cce6f5e726336871733f78fc153a6f6ee2658197a3cc7547c2d8
-SIZE (xpi/firefox-i18n-23.0.1/cs.xpi) = 335893
-SHA256 (xpi/firefox-i18n-23.0.1/cy.xpi) = 69f5dd119b6438d30094ffcf32ebe10d3621ac9eae614a75fd66b6d122497e6d
-SIZE (xpi/firefox-i18n-23.0.1/cy.xpi) = 329217
-SHA256 (xpi/firefox-i18n-23.0.1/da.xpi) = e8b2c5535b094c0227b1de1238ba3ef342d39197e0842b6dcc22b74efad9aa86
-SIZE (xpi/firefox-i18n-23.0.1/da.xpi) = 325396
-SHA256 (xpi/firefox-i18n-23.0.1/de.xpi) = fd64e657cff95edd893e95404b9d4b64703f6e0af7e719a608015c5be87db38f
-SIZE (xpi/firefox-i18n-23.0.1/de.xpi) = 321439
-SHA256 (xpi/firefox-i18n-23.0.1/el.xpi) = 1049af74d18618d9e319f4b3e12e4c1b6b11eac7a3ef3dcc6b2f056f8d2edd13
-SIZE (xpi/firefox-i18n-23.0.1/el.xpi) = 361841
-SHA256 (xpi/firefox-i18n-23.0.1/en-GB.xpi) = b6e4a686bb7d0874f7be82ccb1bfe1e74ead0a8e300585513c8e138842ec8f3a
-SIZE (xpi/firefox-i18n-23.0.1/en-GB.xpi) = 317396
-SHA256 (xpi/firefox-i18n-23.0.1/en-US.xpi) = e0c699fef8d9236cb2d36fa17380ad726eb91c0e00a2c509011c6397060918b5
-SIZE (xpi/firefox-i18n-23.0.1/en-US.xpi) = 319723
-SHA256 (xpi/firefox-i18n-23.0.1/en-ZA.xpi) = 4329140bf5fad45d82bcdf3059a04d5bb337f698f4ba8454d1e4c7c3fba09170
-SIZE (xpi/firefox-i18n-23.0.1/en-ZA.xpi) = 315905
-SHA256 (xpi/firefox-i18n-23.0.1/eo.xpi) = 042034ed962bb7bb7bb1e1b7a667feec4cd3a39225d3d1f2e6d46a571e3add02
-SIZE (xpi/firefox-i18n-23.0.1/eo.xpi) = 333542
-SHA256 (xpi/firefox-i18n-23.0.1/es-AR.xpi) = 1702463fdff15dcaca0c16a2224562502bd715c328baa3b1241d632eabad21d5
-SIZE (xpi/firefox-i18n-23.0.1/es-AR.xpi) = 332695
-SHA256 (xpi/firefox-i18n-23.0.1/es-CL.xpi) = 634f4eb908cbad3f0300c43b576f3957d68d4f328622bbe79f10cc66c606f3ab
-SIZE (xpi/firefox-i18n-23.0.1/es-CL.xpi) = 288643
-SHA256 (xpi/firefox-i18n-23.0.1/es-ES.xpi) = e49080d8b76693f1b85c2eab6861757ddd2cd776b33045ad53fbd560d73d2b2a
-SIZE (xpi/firefox-i18n-23.0.1/es-ES.xpi) = 278333
-SHA256 (xpi/firefox-i18n-23.0.1/es-MX.xpi) = cf835fdc7aada4d457721b498e439edefa93deeb580daa04a214d331ed8480b1
-SIZE (xpi/firefox-i18n-23.0.1/es-MX.xpi) = 299970
-SHA256 (xpi/firefox-i18n-23.0.1/et.xpi) = f1591718cc63ab87ec4a29fb724d7ffc30e93687f55405731c04bd9078c2f3a8
-SIZE (xpi/firefox-i18n-23.0.1/et.xpi) = 326104
-SHA256 (xpi/firefox-i18n-23.0.1/eu.xpi) = 00aaa513c5abd90e94d38556ea18f5df6fabfae49e2207910f9029a0a97dce28
-SIZE (xpi/firefox-i18n-23.0.1/eu.xpi) = 331004
-SHA256 (xpi/firefox-i18n-23.0.1/fa.xpi) = 551edf46a56ba9e5bdfa67e5e8e45144b334809d6032ce4736143794ecf8e1c1
-SIZE (xpi/firefox-i18n-23.0.1/fa.xpi) = 372623
-SHA256 (xpi/firefox-i18n-23.0.1/fi.xpi) = 9dc4ae7b2d742019041cfef325d9fe1422526ea3d01b6bc0e01d9d6137a88e4b
-SIZE (xpi/firefox-i18n-23.0.1/fi.xpi) = 331323
-SHA256 (xpi/firefox-i18n-23.0.1/fr.xpi) = e25a14b688ff18183084d85cc1873d2e752e3130298e1d7722ccfebc88e02b10
-SIZE (xpi/firefox-i18n-23.0.1/fr.xpi) = 338010
-SHA256 (xpi/firefox-i18n-23.0.1/fy-NL.xpi) = 4469b60003cfef7cc988942c378f1c342b1d87b0c85f528d0ab1e2ea7abe7922
-SIZE (xpi/firefox-i18n-23.0.1/fy-NL.xpi) = 335444
-SHA256 (xpi/firefox-i18n-23.0.1/ga-IE.xpi) = 60b8248fef50ada3a91efed816b0df09370161f9584f857485f02c115879419e
-SIZE (xpi/firefox-i18n-23.0.1/ga-IE.xpi) = 343736
-SHA256 (xpi/firefox-i18n-23.0.1/gl.xpi) = baf4b2c0b6857d1ca3b1a4aa03417ba43d2241dd347f009215529e30c4bfff52
-SIZE (xpi/firefox-i18n-23.0.1/gl.xpi) = 333632
-SHA256 (xpi/firefox-i18n-23.0.1/gu-IN.xpi) = 715617c0dc8bc9ad80e38f6bacf9d9b6ece8c26c4a0e1bf938667b0bd406fa28
-SIZE (xpi/firefox-i18n-23.0.1/gu-IN.xpi) = 360063
-SHA256 (xpi/firefox-i18n-23.0.1/he.xpi) = 1fba8f68248e853e252820e7d4c9833847654987b0bc9a924bac0ac82b314075
-SIZE (xpi/firefox-i18n-23.0.1/he.xpi) = 351639
-SHA256 (xpi/firefox-i18n-23.0.1/hi-IN.xpi) = 7f3cb1789d9d4dfe0d053cc73bb769f4bb3a4e99ba5a04d5abf93bc0c5d8927a
-SIZE (xpi/firefox-i18n-23.0.1/hi-IN.xpi) = 377459
-SHA256 (xpi/firefox-i18n-23.0.1/hr.xpi) = 5f4f9cb9a8169ff5097fc4a52eb4f47426a04e48a793ff3537600597e573940a
-SIZE (xpi/firefox-i18n-23.0.1/hr.xpi) = 335424
-SHA256 (xpi/firefox-i18n-23.0.1/hu.xpi) = 10c071a1c733675d6a5a7a0604e02d67760bd75786ae39db4b3d424ed4138497
-SIZE (xpi/firefox-i18n-23.0.1/hu.xpi) = 342497
-SHA256 (xpi/firefox-i18n-23.0.1/hy-AM.xpi) = 734820393af49dbf4b4083bb467aaa2d064ec0ab7ee54c97aeabd25d6b67c1e1
-SIZE (xpi/firefox-i18n-23.0.1/hy-AM.xpi) = 378643
-SHA256 (xpi/firefox-i18n-23.0.1/id.xpi) = a414f9008902781cf3c9327ec1a6e98ebe7a7bf326c80eb62e8a08fc8d24c82b
-SIZE (xpi/firefox-i18n-23.0.1/id.xpi) = 318464
-SHA256 (xpi/firefox-i18n-23.0.1/is.xpi) = f6b0e00c7e5d8d1dcdcaee9a25113f2aa6775cb324ba1a77ced65fef79ff7a16
-SIZE (xpi/firefox-i18n-23.0.1/is.xpi) = 330554
-SHA256 (xpi/firefox-i18n-23.0.1/it.xpi) = 27973a8196c0b05b9c3e39ed9ce5f9ddf1cf794383dec2369fdc43e1a9ebd078
-SIZE (xpi/firefox-i18n-23.0.1/it.xpi) = 272498
-SHA256 (xpi/firefox-i18n-23.0.1/ja.xpi) = 1d0db6ea591314328be18a97c6fc40f7a59916b7cf1103f1b565f342c48b845c
-SIZE (xpi/firefox-i18n-23.0.1/ja.xpi) = 369558
-SHA256 (xpi/firefox-i18n-23.0.1/kk.xpi) = a39a46e8d51282ed1616ede59c55d614bfd26657f99c8d51ec2420525e61363e
-SIZE (xpi/firefox-i18n-23.0.1/kk.xpi) = 381206
-SHA256 (xpi/firefox-i18n-23.0.1/kn.xpi) = e5dfbac4c77d025fbfb98d3907d3b055113fe27631efef6161f6de92865b1f30
-SIZE (xpi/firefox-i18n-23.0.1/kn.xpi) = 386143
-SHA256 (xpi/firefox-i18n-23.0.1/ko.xpi) = 79aa94806a8a5f9bc7bd7c0edf9450c7ab9c25c864b8ecd18f43749909badd94
-SIZE (xpi/firefox-i18n-23.0.1/ko.xpi) = 344582
-SHA256 (xpi/firefox-i18n-23.0.1/ku.xpi) = f58755a571eb34e319fce4da0be054693391b7126b49983da0c7aeb67fde7938
-SIZE (xpi/firefox-i18n-23.0.1/ku.xpi) = 353893
-SHA256 (xpi/firefox-i18n-23.0.1/lg.xpi) = 72ea6146355d150eb3f8f158984da22b07345e2d07eb479738d6cbcf47c4eadf
-SIZE (xpi/firefox-i18n-23.0.1/lg.xpi) = 348076
-SHA256 (xpi/firefox-i18n-23.0.1/lt.xpi) = 8a5f00578b4dc77fe7dba138fb285009d44c0572b394fbf9bb7f57586f6238d4
-SIZE (xpi/firefox-i18n-23.0.1/lt.xpi) = 350804
-SHA256 (xpi/firefox-i18n-23.0.1/lv.xpi) = c589434dd4ddce76434347c3687dc0b68b4e8024b23006a56a9c98bd76e4948d
-SIZE (xpi/firefox-i18n-23.0.1/lv.xpi) = 328561
-SHA256 (xpi/firefox-i18n-23.0.1/mai.xpi) = 47629ea9d240587833300946e8ee5119707531691a9ea164d820779e9d74aaca
-SIZE (xpi/firefox-i18n-23.0.1/mai.xpi) = 375980
-SHA256 (xpi/firefox-i18n-23.0.1/mk.xpi) = c1dfa311908b00dc519ca5a35b45c87c7f142ea704f2d6037d09f031899c060f
-SIZE (xpi/firefox-i18n-23.0.1/mk.xpi) = 373110
-SHA256 (xpi/firefox-i18n-23.0.1/ml.xpi) = 8126fd67bbe4cffe9b0f4678b2da0677fa0741a60d4dd1e3295b54401e6267a8
-SIZE (xpi/firefox-i18n-23.0.1/ml.xpi) = 397885
-SHA256 (xpi/firefox-i18n-23.0.1/mr.xpi) = 57184fd57a5b27c2cc4f3ec4f0347944fad12dd7e0f73d3cdd39e120199c6c22
-SIZE (xpi/firefox-i18n-23.0.1/mr.xpi) = 374960
-SHA256 (xpi/firefox-i18n-23.0.1/nb-NO.xpi) = ed84824080fc2d9a3f183a40b589d04384f5bd7b1b8367eb323a40bb6d769ce8
-SIZE (xpi/firefox-i18n-23.0.1/nb-NO.xpi) = 329357
-SHA256 (xpi/firefox-i18n-23.0.1/nl.xpi) = df5c8b4d678a07f1bbb5027c5b00b6cd99a18c0113980737efde73269f0293f6
-SIZE (xpi/firefox-i18n-23.0.1/nl.xpi) = 330276
-SHA256 (xpi/firefox-i18n-23.0.1/nn-NO.xpi) = 332ee86f60f4465c9ad1888ede13ba9701149b2ecf4c5b5b25c3f310a09667ad
-SIZE (xpi/firefox-i18n-23.0.1/nn-NO.xpi) = 330063
-SHA256 (xpi/firefox-i18n-23.0.1/nso.xpi) = a289fac6d9d40cdccfdc261fe12c058c5fd3f94d4d5ebdaa90a3628558551dfa
-SIZE (xpi/firefox-i18n-23.0.1/nso.xpi) = 332692
-SHA256 (xpi/firefox-i18n-23.0.1/or.xpi) = 27b50cb2079ced76218dd4e56d20ed885faffb4d49ff80f8fd10d8b6848e79cd
-SIZE (xpi/firefox-i18n-23.0.1/or.xpi) = 366750
-SHA256 (xpi/firefox-i18n-23.0.1/pa-IN.xpi) = bf716bc5df76fa8ddd878e4a1825a4f6b41f8ebb0546bacd3de29efb6dea7048
-SIZE (xpi/firefox-i18n-23.0.1/pa-IN.xpi) = 365279
-SHA256 (xpi/firefox-i18n-23.0.1/pl.xpi) = 09b9ef8ac7a1c811549018e8ccf8e1c5a48771a56aabd82ff69584c73fcfae9f
-SIZE (xpi/firefox-i18n-23.0.1/pl.xpi) = 340759
-SHA256 (xpi/firefox-i18n-23.0.1/pt-BR.xpi) = 932d33ceb971c3a1b0ce1f9f0989153f7df899c6fd610137cca0252f13dbe5ce
-SIZE (xpi/firefox-i18n-23.0.1/pt-BR.xpi) = 333255
-SHA256 (xpi/firefox-i18n-23.0.1/pt-PT.xpi) = 9f7f939eea9d39431dcf18fd7c5d5e3d175849354ffb4223e26f13e8147ed0ec
-SIZE (xpi/firefox-i18n-23.0.1/pt-PT.xpi) = 331609
-SHA256 (xpi/firefox-i18n-23.0.1/rm.xpi) = d00f3a87ac3cc917994a5f73956b633eb1ec5cbe0a5cc0dcde60319770d86df7
-SIZE (xpi/firefox-i18n-23.0.1/rm.xpi) = 336471
-SHA256 (xpi/firefox-i18n-23.0.1/ro.xpi) = 9e43f3750e6a09782c460a45ca5d590ef89cc58977cb4cb49c91d72d6239e2da
-SIZE (xpi/firefox-i18n-23.0.1/ro.xpi) = 363851
-SHA256 (xpi/firefox-i18n-23.0.1/ru.xpi) = 8c82b6b3e31d9c5b82149c7d5bd4109b852fc3303d6b6f1eaa98a88a9a7079e9
-SIZE (xpi/firefox-i18n-23.0.1/ru.xpi) = 323389
-SHA256 (xpi/firefox-i18n-23.0.1/si.xpi) = 5f7908cfd0ec3fd36c883fda7eae42f822190a34b4e4a1bd7bff77d3674db238
-SIZE (xpi/firefox-i18n-23.0.1/si.xpi) = 371034
-SHA256 (xpi/firefox-i18n-23.0.1/sk.xpi) = 110dc0908c0e9f8eddc1a58d72d1c931533da48c03eb4f2a1d18cd6435b758a3
-SIZE (xpi/firefox-i18n-23.0.1/sk.xpi) = 346634
-SHA256 (xpi/firefox-i18n-23.0.1/sl.xpi) = 4f185ff521f9239d7c2e66bad1934d6fe563a0e11556d342c771fced57f7b067
-SIZE (xpi/firefox-i18n-23.0.1/sl.xpi) = 331742
-SHA256 (xpi/firefox-i18n-23.0.1/son.xpi) = 66ea2802f06a3dfb6377a6c3011473cec23ca5239e2734abcf261141bb08e2a4
-SIZE (xpi/firefox-i18n-23.0.1/son.xpi) = 327531
-SHA256 (xpi/firefox-i18n-23.0.1/sq.xpi) = 627efd49ee5f60065541770375fbfc1d131b501c9877402aedb5f4468bafd9f1
-SIZE (xpi/firefox-i18n-23.0.1/sq.xpi) = 337344
-SHA256 (xpi/firefox-i18n-23.0.1/sr.xpi) = d3706463e179630e33fae2ac796c92ede69ea22094d4590225f3b5e9784fcac3
-SIZE (xpi/firefox-i18n-23.0.1/sr.xpi) = 383301
-SHA256 (xpi/firefox-i18n-23.0.1/sv-SE.xpi) = 86b34a81d88e658024e15635472b93f0549248649baf33e1e31f3dbefbbcff84
-SIZE (xpi/firefox-i18n-23.0.1/sv-SE.xpi) = 332153
-SHA256 (xpi/firefox-i18n-23.0.1/ta-LK.xpi) = ae46608b0c9bb9eeafcc9a81e76616a9c51a01ec3137aeb70bd10e661f8a0480
-SIZE (xpi/firefox-i18n-23.0.1/ta-LK.xpi) = 382499
-SHA256 (xpi/firefox-i18n-23.0.1/ta.xpi) = ae0be3c5e834a9bb864aa2f5ea80040a6a231035dc4fe5c4c4f62696d601ce83
-SIZE (xpi/firefox-i18n-23.0.1/ta.xpi) = 379865
-SHA256 (xpi/firefox-i18n-23.0.1/te.xpi) = 42dc298216d9f8403aae4b9fb75a0b27fb6d7aff2cf574ec86d630140edc8ae5
-SIZE (xpi/firefox-i18n-23.0.1/te.xpi) = 393187
-SHA256 (xpi/firefox-i18n-23.0.1/th.xpi) = 9d089cab64ac373cba75c9fd63dbb81e643e231e1ec424a29b505ae95258381b
-SIZE (xpi/firefox-i18n-23.0.1/th.xpi) = 376169
-SHA256 (xpi/firefox-i18n-23.0.1/tr.xpi) = b6ab3c207ad12a24b21d2432ca4dfb4ed1b90248cdea1b56c827aea405adbb42
-SIZE (xpi/firefox-i18n-23.0.1/tr.xpi) = 338830
-SHA256 (xpi/firefox-i18n-23.0.1/uk.xpi) = b2de82609267ae0ccf066eecd72cbfaade193f6f507136c27b94070614d9a3d9
-SIZE (xpi/firefox-i18n-23.0.1/uk.xpi) = 364668
-SHA256 (xpi/firefox-i18n-23.0.1/vi.xpi) = 788f72f616132da8f122e79f5c249ca2f7436e119239ab85ac5df773554b4d22
-SIZE (xpi/firefox-i18n-23.0.1/vi.xpi) = 353834
-SHA256 (xpi/firefox-i18n-23.0.1/zh-CN.xpi) = b5411b628f85f67f8681afadb939d438caf2ee5c614992101e3682e9a3387afb
-SIZE (xpi/firefox-i18n-23.0.1/zh-CN.xpi) = 356623
-SHA256 (xpi/firefox-i18n-23.0.1/zh-TW.xpi) = 9d6a4c277f83ca8b3a7cff939d3ae3b0a43870aab7114263a8c7b3ffdc61ecac
-SIZE (xpi/firefox-i18n-23.0.1/zh-TW.xpi) = 350205
-SHA256 (xpi/firefox-i18n-23.0.1/zu.xpi) = 0c76121f2ac9a91ccd5dc10fb7733d3337d0245d2c70fa46f8ab56724f2c5db4
-SIZE (xpi/firefox-i18n-23.0.1/zu.xpi) = 332827
+SHA256 (xpi/firefox-i18n-24.0/af.xpi) = c692d031ea29336bdc61b0e00875100c5516acf58c8e6897a9615a6cb41cfaea
+SIZE (xpi/firefox-i18n-24.0/af.xpi) = 333182
+SHA256 (xpi/firefox-i18n-24.0/ak.xpi) = 75ba44d664ac09d789d8080443b72a07464dcdaad1f987370a6b28cef5542401
+SIZE (xpi/firefox-i18n-24.0/ak.xpi) = 340938
+SHA256 (xpi/firefox-i18n-24.0/ar.xpi) = 37a9378d172e4eb27db1bd86ff02a2fe16eaf3a6380ffdcb51512b77fcd4cca7
+SIZE (xpi/firefox-i18n-24.0/ar.xpi) = 360848
+SHA256 (xpi/firefox-i18n-24.0/ast.xpi) = 38966ca689864afacb8c055c363f0e049ae1ed5bb0492bf38699d161f39fdbcf
+SIZE (xpi/firefox-i18n-24.0/ast.xpi) = 292873
+SHA256 (xpi/firefox-i18n-24.0/be.xpi) = a784cedf5973359edd306643c17e275defe7cb196aa56aaf5697c75f3ef69a0f
+SIZE (xpi/firefox-i18n-24.0/be.xpi) = 316952
+SHA256 (xpi/firefox-i18n-24.0/bg.xpi) = 61e956a5af477c242df82b56c5d9e8c30793797ea0e4040bb78827d1e450cf83
+SIZE (xpi/firefox-i18n-24.0/bg.xpi) = 373134
+SHA256 (xpi/firefox-i18n-24.0/bn-BD.xpi) = 158e1ecbfa0b354fb8306e1ebe447f7a5991c2056fa385320ba1a935ea73b69e
+SIZE (xpi/firefox-i18n-24.0/bn-BD.xpi) = 394937
+SHA256 (xpi/firefox-i18n-24.0/bn-IN.xpi) = b97b4ad91a2d96b6eecf05b02a8879d2c58d7d4c5b3da53806dc2b769bd5d4de
+SIZE (xpi/firefox-i18n-24.0/bn-IN.xpi) = 427777
+SHA256 (xpi/firefox-i18n-24.0/br.xpi) = 9c628e7795cf2f51bba54b25f4e87fd9e48b6aa321cc1771491440ee54293e71
+SIZE (xpi/firefox-i18n-24.0/br.xpi) = 330506
+SHA256 (xpi/firefox-i18n-24.0/bs.xpi) = 61db0003a35538ed1c8f8c46a57c0e120b4169010b02363ef6d4f91572ac3e0a
+SIZE (xpi/firefox-i18n-24.0/bs.xpi) = 341619
+SHA256 (xpi/firefox-i18n-24.0/ca.xpi) = 09569d1e0ad68c2ebaff8a35c02ec91a32fd67fbd394155a34832efe310665ca
+SIZE (xpi/firefox-i18n-24.0/ca.xpi) = 341255
+SHA256 (xpi/firefox-i18n-24.0/cs.xpi) = ea994038ca8590149a36c5699032345487cd855ea1ed410e888bd68884c2d553
+SIZE (xpi/firefox-i18n-24.0/cs.xpi) = 335944
+SHA256 (xpi/firefox-i18n-24.0/cy.xpi) = bad7e04209b93168fdb89eb8c44d1aed4bbd9ab68b67f2eb56d5a1f282fb1116
+SIZE (xpi/firefox-i18n-24.0/cy.xpi) = 330642
+SHA256 (xpi/firefox-i18n-24.0/da.xpi) = e993ba79744e9c00d229a348739bd228e646253042edfd8070c2c9437dbe09c0
+SIZE (xpi/firefox-i18n-24.0/da.xpi) = 326879
+SHA256 (xpi/firefox-i18n-24.0/de.xpi) = 3b6bd3868e8d7bc5498b492625d2b9f76dc9036841d639d1da026ddb8b15ed7a
+SIZE (xpi/firefox-i18n-24.0/de.xpi) = 323256
+SHA256 (xpi/firefox-i18n-24.0/el.xpi) = 12ab6dddbcff247839cbaa25279ac6fa249b8ac5de781bf0f0c1fd393314c2e5
+SIZE (xpi/firefox-i18n-24.0/el.xpi) = 365318
+SHA256 (xpi/firefox-i18n-24.0/en-GB.xpi) = 4cf6a5f4a1060301c26569eda2269dde6658b28fc6af6e589f8299bb9494e222
+SIZE (xpi/firefox-i18n-24.0/en-GB.xpi) = 318294
+SHA256 (xpi/firefox-i18n-24.0/en-US.xpi) = b8e47aa8704f17b2060ef4274c048f5d5c81e42b4d9bdc5394dac46594fa5aef
+SIZE (xpi/firefox-i18n-24.0/en-US.xpi) = 320993
+SHA256 (xpi/firefox-i18n-24.0/en-ZA.xpi) = b9273ea60bb3b81123141c63624b78650ce45a6925486ecaa8204fba898cd3d5
+SIZE (xpi/firefox-i18n-24.0/en-ZA.xpi) = 319319
+SHA256 (xpi/firefox-i18n-24.0/eo.xpi) = 72f3cd19df365064012ecc23dd650702df27d99ce2c1d99b0ea223ab4bdda3e5
+SIZE (xpi/firefox-i18n-24.0/eo.xpi) = 334937
+SHA256 (xpi/firefox-i18n-24.0/es-AR.xpi) = 177b33d01d8c57d48ec0188b86427ad0d05b59ce7a14e2a3ebeee4ed3bd79f4e
+SIZE (xpi/firefox-i18n-24.0/es-AR.xpi) = 334009
+SHA256 (xpi/firefox-i18n-24.0/es-CL.xpi) = c8326e0dd27297621972a240804bc094879cc76bd5599b47f56bb63ed090a2d5
+SIZE (xpi/firefox-i18n-24.0/es-CL.xpi) = 287025
+SHA256 (xpi/firefox-i18n-24.0/es-ES.xpi) = 8b2e1c637525d7c41b6a6d718d3c7c41cb16627dcd87d7f6f4e9504b7a7e7a9e
+SIZE (xpi/firefox-i18n-24.0/es-ES.xpi) = 277858
+SHA256 (xpi/firefox-i18n-24.0/es-MX.xpi) = 6f4ff625c66713a235dc32a6830d48d19ba458fa0f1059b285f259d7480a636d
+SIZE (xpi/firefox-i18n-24.0/es-MX.xpi) = 302623
+SHA256 (xpi/firefox-i18n-24.0/et.xpi) = c90a9cd389a0233b03de22033a905d86878df23d038bedc7d8e8061d64b36445
+SIZE (xpi/firefox-i18n-24.0/et.xpi) = 327695
+SHA256 (xpi/firefox-i18n-24.0/eu.xpi) = 0e1d7155f2a90a0711d75804a216276a4524bb8f032c8abfb7aaa44d5bb254f0
+SIZE (xpi/firefox-i18n-24.0/eu.xpi) = 332420
+SHA256 (xpi/firefox-i18n-24.0/fa.xpi) = 7fc3695866db2082e725ab6fb17cb8691e7bf01a0d7fcd54147983f1c14f767a
+SIZE (xpi/firefox-i18n-24.0/fa.xpi) = 375632
+SHA256 (xpi/firefox-i18n-24.0/fi.xpi) = 5bafdbd682e16c2d1ef853dca70312fd58dac31a6df62026c7355b37d74ac210
+SIZE (xpi/firefox-i18n-24.0/fi.xpi) = 328889
+SHA256 (xpi/firefox-i18n-24.0/fr.xpi) = 1363e814b0963bbf5c222d6c1710109a72636e603ff2d6b94df6310ea9adbede
+SIZE (xpi/firefox-i18n-24.0/fr.xpi) = 339176
+SHA256 (xpi/firefox-i18n-24.0/fy-NL.xpi) = 48911ec2128c2b245c9c4b235c18a21c8d8100a7316d08efe1ac5a2756afb2c7
+SIZE (xpi/firefox-i18n-24.0/fy-NL.xpi) = 336586
+SHA256 (xpi/firefox-i18n-24.0/ga-IE.xpi) = edef8e7ad7773272133d9e28c1bb99b08210473176f3f8ed833dacded575f678
+SIZE (xpi/firefox-i18n-24.0/ga-IE.xpi) = 345291
+SHA256 (xpi/firefox-i18n-24.0/gl.xpi) = 6ac1080299348f28815608f038693fb683ded69d5b6cb0071e05144f3b0c1482
+SIZE (xpi/firefox-i18n-24.0/gl.xpi) = 336917
+SHA256 (xpi/firefox-i18n-24.0/gu-IN.xpi) = b571eaa1d5549eea17875e4e92e731f0cd1cf77fbfae81291f2cb7d739820681
+SIZE (xpi/firefox-i18n-24.0/gu-IN.xpi) = 359358
+SHA256 (xpi/firefox-i18n-24.0/he.xpi) = b09d6b8fe303296246100ba2c4806272b20eb846856a7ff99de8ce9a9a7b0988
+SIZE (xpi/firefox-i18n-24.0/he.xpi) = 354628
+SHA256 (xpi/firefox-i18n-24.0/hi-IN.xpi) = 8b1c6679cca059370eb8c7d5d6ddb6aa32d9c7769ab8d036899680f7912dd2fe
+SIZE (xpi/firefox-i18n-24.0/hi-IN.xpi) = 379119
+SHA256 (xpi/firefox-i18n-24.0/hr.xpi) = d3bb4e273cc91be1eb0bb1109b74d48da17d4d49b04d8dd70b5d5fc70c637faa
+SIZE (xpi/firefox-i18n-24.0/hr.xpi) = 336839
+SHA256 (xpi/firefox-i18n-24.0/hu.xpi) = cb6c293f7a74d390505059f0642aa2b50168ec810fd58e8bc61d613d61ecf1dc
+SIZE (xpi/firefox-i18n-24.0/hu.xpi) = 344101
+SHA256 (xpi/firefox-i18n-24.0/hy-AM.xpi) = 46ce1f282e038f34149adc353f72348a450cc10045b4035d576fe4db003e1d0b
+SIZE (xpi/firefox-i18n-24.0/hy-AM.xpi) = 385177
+SHA256 (xpi/firefox-i18n-24.0/id.xpi) = 311f9a9899b4c14e8c7e6d57a9d8d46f180a76fe9de21a168f2a3ba7a7447d27
+SIZE (xpi/firefox-i18n-24.0/id.xpi) = 319793
+SHA256 (xpi/firefox-i18n-24.0/is.xpi) = 8a96bd1df130a89478363fd3b7f2fad5bbc1ca951f7baa537d2f28ccfa5613cd
+SIZE (xpi/firefox-i18n-24.0/is.xpi) = 331825
+SHA256 (xpi/firefox-i18n-24.0/it.xpi) = b72bc608d6cd95b89f7ca52e0a0dcf20eb334455529297d753fad816a64e8282
+SIZE (xpi/firefox-i18n-24.0/it.xpi) = 271924
+SHA256 (xpi/firefox-i18n-24.0/ja.xpi) = 1aea04aec4b26f78233fae3cff10f0e04afd11cb4541aaa80fa2feecb15d56ed
+SIZE (xpi/firefox-i18n-24.0/ja.xpi) = 370903
+SHA256 (xpi/firefox-i18n-24.0/kk.xpi) = e4c063d14653183d0c86cb2c4f0879690cfe599f025824825a759a7e919cdaaf
+SIZE (xpi/firefox-i18n-24.0/kk.xpi) = 377500
+SHA256 (xpi/firefox-i18n-24.0/kn.xpi) = 0c2d4b8946b555a424bd456cb90539c8adcc55e675493b8bf1cfe98dea2b32c1
+SIZE (xpi/firefox-i18n-24.0/kn.xpi) = 391031
+SHA256 (xpi/firefox-i18n-24.0/ko.xpi) = 5ac92a9e7b5afccf09ffd197d90eb35b6bbcb91848e8434c500f6b38621601ef
+SIZE (xpi/firefox-i18n-24.0/ko.xpi) = 346162
+SHA256 (xpi/firefox-i18n-24.0/ku.xpi) = 052edb608d8b038039af7a9bd61d161ed4e7c34a34fcef7b06de6d42828fafb1
+SIZE (xpi/firefox-i18n-24.0/ku.xpi) = 355628
+SHA256 (xpi/firefox-i18n-24.0/lg.xpi) = c991340349fa805b71c682cb36eecd72f35c272fad49b63a3cefdf082d674015
+SIZE (xpi/firefox-i18n-24.0/lg.xpi) = 351109
+SHA256 (xpi/firefox-i18n-24.0/lt.xpi) = 3c1473992f0214bc756e8597d75e9b262e0bef971bd5bb334805af1fb83d4d81
+SIZE (xpi/firefox-i18n-24.0/lt.xpi) = 352043
+SHA256 (xpi/firefox-i18n-24.0/lv.xpi) = df6921acba87ad3e0334cc0172dada77657a6d49e5c7fe99639b0931cfaede66
+SIZE (xpi/firefox-i18n-24.0/lv.xpi) = 328662
+SHA256 (xpi/firefox-i18n-24.0/mai.xpi) = 3ff2dcbdba54bb48a06cc5e1ad62e45e6bdf18080b6551ea39d225c583fc9307
+SIZE (xpi/firefox-i18n-24.0/mai.xpi) = 379764
+SHA256 (xpi/firefox-i18n-24.0/mk.xpi) = 3dc8529b82b38d7fb4e4a2db43e1885e7bec46b8ecfa814ac44bb674436a95c6
+SIZE (xpi/firefox-i18n-24.0/mk.xpi) = 376314
+SHA256 (xpi/firefox-i18n-24.0/ml.xpi) = 784e4638445eae2aff7357c27fe347c055f50d2d1a0b98ca04075cb6417878d1
+SIZE (xpi/firefox-i18n-24.0/ml.xpi) = 399675
+SHA256 (xpi/firefox-i18n-24.0/mr.xpi) = 0e06bf60bb7ab454c0e2344ac6ff58e307124f5fd1ce5e284ba27a8c5936d5b6
+SIZE (xpi/firefox-i18n-24.0/mr.xpi) = 380229
+SHA256 (xpi/firefox-i18n-24.0/nb-NO.xpi) = 16d5dba99d06752a30f090e66a7190200562d36fc8239c92f121da58b59b0e66
+SIZE (xpi/firefox-i18n-24.0/nb-NO.xpi) = 330964
+SHA256 (xpi/firefox-i18n-24.0/nl.xpi) = d0003d0d9614aa0761508daf8a23604005a28c46570c720539932083db2a7a28
+SIZE (xpi/firefox-i18n-24.0/nl.xpi) = 331402
+SHA256 (xpi/firefox-i18n-24.0/nn-NO.xpi) = 503292a846b3d0dfe5b0137ac02347638b3880db64ca3d56ad792325bc925eea
+SIZE (xpi/firefox-i18n-24.0/nn-NO.xpi) = 333904
+SHA256 (xpi/firefox-i18n-24.0/nso.xpi) = 0db48b062acaa693dbc781b71ac9a09b2e599399b93dfa24322672d1c44d01e2
+SIZE (xpi/firefox-i18n-24.0/nso.xpi) = 336295
+SHA256 (xpi/firefox-i18n-24.0/or.xpi) = 782976abaed0f8875d459bd2a7dd1fadf71fb8aefecd7c33fc5c774d18a3135e
+SIZE (xpi/firefox-i18n-24.0/or.xpi) = 364591
+SHA256 (xpi/firefox-i18n-24.0/pa-IN.xpi) = 0cf089451ce5e83ae7f2b186105dbaee09ed42016124a1d4520befdaa1df3a0d
+SIZE (xpi/firefox-i18n-24.0/pa-IN.xpi) = 365650
+SHA256 (xpi/firefox-i18n-24.0/pl.xpi) = a8a79980f33129191ad9c15fc100f81599b6f4dc27a47f011760612a72421898
+SIZE (xpi/firefox-i18n-24.0/pl.xpi) = 341993
+SHA256 (xpi/firefox-i18n-24.0/pt-BR.xpi) = 1a15a4aac4dea02af8a710b3f7404803734335e9bc61069d2cd78524ac374b93
+SIZE (xpi/firefox-i18n-24.0/pt-BR.xpi) = 334604
+SHA256 (xpi/firefox-i18n-24.0/pt-PT.xpi) = 26568031d5446110c0fddff6288c01584139a538e7d0443e1ca2c21ccfc97183
+SIZE (xpi/firefox-i18n-24.0/pt-PT.xpi) = 332736
+SHA256 (xpi/firefox-i18n-24.0/rm.xpi) = fcf56fe438aa25241b7cdfbe63552978024e6f766f78781fc05df7364aa5ae10
+SIZE (xpi/firefox-i18n-24.0/rm.xpi) = 339696
+SHA256 (xpi/firefox-i18n-24.0/ro.xpi) = 8ab022cc98c69bb33a1163f49c391f4258d1fb54928ab65f858b47fd98731766
+SIZE (xpi/firefox-i18n-24.0/ro.xpi) = 362235
+SHA256 (xpi/firefox-i18n-24.0/ru.xpi) = 1f3db7e002fbef5eecd1a79b211fcb25ef5e4a9a1b67c64a0661044e58a3eda1
+SIZE (xpi/firefox-i18n-24.0/ru.xpi) = 322758
+SHA256 (xpi/firefox-i18n-24.0/si.xpi) = 30ae92a58500e678800f4962c6f3a8fecb16950325e7f60691cdb76684cda837
+SIZE (xpi/firefox-i18n-24.0/si.xpi) = 372980
+SHA256 (xpi/firefox-i18n-24.0/sk.xpi) = 23c729e4308e545e45f9d7f1b560e4660922010e163ba399bd5ef4909bc5b0ca
+SIZE (xpi/firefox-i18n-24.0/sk.xpi) = 347877
+SHA256 (xpi/firefox-i18n-24.0/sl.xpi) = bd3fc99671779dbe2ebaae557416e884a021be3648e55c5ba2f015582773adda
+SIZE (xpi/firefox-i18n-24.0/sl.xpi) = 331569
+SHA256 (xpi/firefox-i18n-24.0/son.xpi) = 67abc22ef9b0b5423fc80f97ebbc4192725f616aefd5efe5d1e456e00b8e6ed1
+SIZE (xpi/firefox-i18n-24.0/son.xpi) = 328896
+SHA256 (xpi/firefox-i18n-24.0/sq.xpi) = 0eee192d607325c2156c8740bd11d70ce13b21e669e82c4f8691cc5ebbbc2227
+SIZE (xpi/firefox-i18n-24.0/sq.xpi) = 340676
+SHA256 (xpi/firefox-i18n-24.0/sr.xpi) = 836d48dba9fa96011ae4494f184435e500d2ad2c3d39318d3d94d9e5b62af001
+SIZE (xpi/firefox-i18n-24.0/sr.xpi) = 385107
+SHA256 (xpi/firefox-i18n-24.0/sv-SE.xpi) = cb637233a0d149fc894b9ed5aaefdaab2cc8a8e06db651b9f04249bed24e8548
+SIZE (xpi/firefox-i18n-24.0/sv-SE.xpi) = 333504
+SHA256 (xpi/firefox-i18n-24.0/ta-LK.xpi) = 5008b354dcb89b31a5e7fab1cca0dfa171c979c0ace0b4d5589bed5e6fd79cd5
+SIZE (xpi/firefox-i18n-24.0/ta-LK.xpi) = 384152
+SHA256 (xpi/firefox-i18n-24.0/ta.xpi) = a893043dead4291f664424e5be43d77bcac97ef4efe098331899de6dd27c11b3
+SIZE (xpi/firefox-i18n-24.0/ta.xpi) = 381421
+SHA256 (xpi/firefox-i18n-24.0/te.xpi) = 829e6539a163ba84ad643bd2d196a6d3c4186065ee95e13645f14ddf23c66cae
+SIZE (xpi/firefox-i18n-24.0/te.xpi) = 394561
+SHA256 (xpi/firefox-i18n-24.0/th.xpi) = f501fd7f2305e8079130db0869d6e1eceedad0d347ae6277db3c584a00cbea32
+SIZE (xpi/firefox-i18n-24.0/th.xpi) = 379820
+SHA256 (xpi/firefox-i18n-24.0/tr.xpi) = 302a4a6fd8a115905bcefa53e65953aaee79867fd1395b045054b2e3a891d579
+SIZE (xpi/firefox-i18n-24.0/tr.xpi) = 340385
+SHA256 (xpi/firefox-i18n-24.0/uk.xpi) = 85e3daf4e80642170c293a8dc8c28104ec62d992d42c623edc3d786855b6b8d4
+SIZE (xpi/firefox-i18n-24.0/uk.xpi) = 365697
+SHA256 (xpi/firefox-i18n-24.0/vi.xpi) = 7f1959467b4d448b865e83cd7e3bd3ed9297c51056ca376011fb7bcd6dc1584a
+SIZE (xpi/firefox-i18n-24.0/vi.xpi) = 358428
+SHA256 (xpi/firefox-i18n-24.0/zh-CN.xpi) = 69c944e9bfa76992048e30cc12449683e0f14784e964da900f3644c9184befa9
+SIZE (xpi/firefox-i18n-24.0/zh-CN.xpi) = 358180
+SHA256 (xpi/firefox-i18n-24.0/zh-TW.xpi) = 817ca4e5cf8581a5857d754aa9d9c3e8192753307d3e2fced89fcf158f7f83ea
+SIZE (xpi/firefox-i18n-24.0/zh-TW.xpi) = 351830
+SHA256 (xpi/firefox-i18n-24.0/zu.xpi) = 9e0d8aa8161549d3200898e0e751d505b6c035fdd45d48bcb1ade9449f566696
+SIZE (xpi/firefox-i18n-24.0/zu.xpi) = 340392
diff --git a/www/firefox/Makefile b/www/firefox/Makefile
index 515db0a7e6bc..0227880b9a1e 100644
--- a/www/firefox/Makefile
+++ b/www/firefox/Makefile
@@ -2,11 +2,11 @@
# $FreeBSD$
PORTNAME= firefox
-DISTVERSION= 23.0.1
+DISTVERSION= 24.0
PORTEPOCH= 1
CATEGORIES= www ipv6
-MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source
-DISTNAME= ${PORTNAME}-${DISTVERSION}.source
+MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}esr/source
+DISTNAME= ${PORTNAME}-${DISTVERSION}esr.source
MAINTAINER= gecko@FreeBSD.org
COMMENT= Web browser based on the browser portion of Mozilla
@@ -16,13 +16,15 @@ BUILD_DEPENDS= nspr>=4.10:${PORTSDIR}/devel/nspr \
sqlite3>=3.7.16.1:${PORTSDIR}/databases/sqlite3 \
${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3 \
cairo>=1.10.2_1,1:${PORTSDIR}/graphics/cairo \
+ v4l_compat>0:${PORTSDIR}/multimedia/v4l_compat \
unzip:${PORTSDIR}/archivers/unzip
+LIB_DEPENDS= libv4l2.so:${PORTSDIR}/multimedia/libv4l
USE_AUTOTOOLS= autoconf213:env
USE_PYTHON_BUILD=-2.7
OBJDIR_BUILD= # in-tree build broken after bug 789837
USE_GECKO= gecko
-CONFLICTS= firefox-24.* firefox-1[07].*
+CONFLICTS= firefox-esr-24.* firefox-esr-17.* firefox-1[07].*
MOZ_PKGCONFIG_FILES= # empty
USE_MOZILLA= # empty
MOZILLA_NAME= Firefox
@@ -33,7 +35,6 @@ QT_NONSTANDARD= yes
ALL_TARGET= default
GNU_CONFIGURE= yes
USE_BZIP2= yes
-USES= gmake pkgconfig
USE_GL= gl
USE_DOS2UNIX= media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp
NO_MOZPKGINSTALL=yes
@@ -44,8 +45,7 @@ MOZ_OPTIONS= --program-transform-name='s/firefox/${MOZILLA}/' \
--enable-application=browser \
--enable-official-branding
-OPTIONS_DEFINE= WEBRTC
-OPTIONS_DEFAULT=WEBRTC
+OPTIONS_DEFAULT=GSTREAMER
.include "${.CURDIR}/../../www/firefox/Makefile.options"
@@ -54,7 +54,7 @@ OPTIONS_SINGLE_AUDIO:=${OPTIONS_SINGLE_AUDIO:S/OSS//}
.include <bsd.port.pre.mk>
-WRKSRC:= ${WRKDIR}/mozilla-release
+WRKSRC:= ${WRKDIR}/mozilla-esr24
post-extract:
@${SED} -e 's|@FIREFOX_ICON@|${FIREFOX_ICON}|' -e 's|@MOZILLA@|${MOZILLA}|' \
diff --git a/www/firefox/Makefile.options b/www/firefox/Makefile.options
index 23feea6ee0c6..1c1868271049 100644
--- a/www/firefox/Makefile.options
+++ b/www/firefox/Makefile.options
@@ -1,7 +1,7 @@
# -*- makefile-bsdmake -*-
OPTIONS_DEFINE+= DBUS DEBUG GCONF GIO GNOMEUI GNOMEVFS2 GSTREAMER \
- LIBPROXY LOGGING OPTIMIZED_CFLAGS PGO
+ LIBPROXY LOGGING OPTIMIZED_CFLAGS PGO PROFILE TEST
OPTIONS_DEFAULT+= ALSA DBUS GIO LOGGING
OPTIONS_SINGLE+= AUDIO
@@ -13,4 +13,3 @@ GNOMEUI_DESC?= libgnomeui support module
LIBPROXY_DESC?= Proxy support via libproxy
LIGHTNING_DESC?= Calendar extension
LOGGING_DESC?= Additional log messages
-WEBRTC_DESC?= Web Real-Time Communication
diff --git a/www/firefox/distinfo b/www/firefox/distinfo
index 61b5fe8f9366..278ae2dcd950 100644
--- a/www/firefox/distinfo
+++ b/www/firefox/distinfo
@@ -1,2 +1,2 @@
-SHA256 (firefox-23.0.1.source.tar.bz2) = bb2c2e99a03859ebd8c02b8bc4c57b39ccc97c55872c2737c433212c0ebe01cf
-SIZE (firefox-23.0.1.source.tar.bz2) = 115727982
+SHA256 (firefox-24.0esr.source.tar.bz2) = 3872f7c4c7b3f1f3f06dd3e4f7cc97b59a6857085af8f2df56820185e3d5cadb
+SIZE (firefox-24.0esr.source.tar.bz2) = 119722621
diff --git a/www/firefox/files/patch-bug722975 b/www/firefox/files/patch-bug722975
deleted file mode 100644
index 21c28b19540b..000000000000
--- a/www/firefox/files/patch-bug722975
+++ /dev/null
@@ -1,61 +0,0 @@
-# HG changeset patch
-# Parent 9d3c9b863c697634e434b687d456bb82fa794ecf
-# User Uli Schlachter <psychon@znc.in>
-Bug 722975 - --enable-system-cairo build is broken after Bug 715658 fixed
-
-
-diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp
---- gfx/thebes/gfxPlatform.cpp
-+++ gfx/thebes/gfxPlatform.cpp
-@@ -502,21 +502,19 @@ struct SourceSurfaceUserData
- BackendType mBackendType;
- };
-
- void SourceBufferDestroy(void *srcSurfUD)
- {
- delete static_cast<SourceSurfaceUserData*>(srcSurfUD);
- }
-
--void SourceSnapshotDetached(cairo_surface_t *nullSurf)
-+void SourceSnapshotDetached(void *nullSurf)
- {
-- gfxImageSurface* origSurf =
-- static_cast<gfxImageSurface*>(cairo_surface_get_user_data(nullSurf, &kSourceSurface));
--
-+ gfxImageSurface *origSurf = static_cast<gfxImageSurface*>(nullSurf);
- origSurf->SetData(&kSourceSurface, NULL, NULL);
- }
-
- RefPtr<SourceSurface>
- gfxPlatform::GetSourceSurfaceForSurface(DrawTarget *aTarget, gfxASurface *aSurface)
- {
- void *userData = aSurface->GetData(&kSourceSurface);
-
-@@ -621,24 +619,19 @@ gfxPlatform::GetSourceSurfaceForSurface(
- }
-
- srcBuffer = Factory::CreateWrappingDataSourceSurface(imgSurface->Data(),
- imgSurface->Stride(),
- size, format);
-
- }
-
-- cairo_surface_t *nullSurf =
-- cairo_null_surface_create(CAIRO_CONTENT_COLOR_ALPHA);
-- cairo_surface_set_user_data(nullSurf,
-- &kSourceSurface,
-- imgSurface,
-- NULL);
-- cairo_surface_attach_snapshot(imgSurface->CairoSurface(), nullSurf, SourceSnapshotDetached);
-- cairo_surface_destroy(nullSurf);
-+ cairo_surface_set_mime_data(imgSurface->CairoSurface(), "mozilla/magic",
-+ (const unsigned char *) "data", 4,
-+ SourceSnapshotDetached, imgSurface.get());
- }
-
- SourceSurfaceUserData *srcSurfUD = new SourceSurfaceUserData;
- srcSurfUD->mBackendType = aTarget->GetType();
- srcSurfUD->mSrcSurface = srcBuffer;
- aSurface->SetData(&kSourceSurface, srcSurfUD, SourceBufferDestroy);
-
- return srcBuffer;
diff --git a/www/firefox/files/patch-bug783463 b/www/firefox/files/patch-bug783463
index b27a1997c534..dedbb7003927 100644
--- a/www/firefox/files/patch-bug783463
+++ b/www/firefox/files/patch-bug783463
@@ -1,14 +1,14 @@
---- gfx/skia/Makefile.in~
-+++ gfx/skia/Makefile.in
-@@ -339,10 +339,9 @@ CPPSRCS += \
- SkMMapStream.cpp \
- SkOSFile.cpp \
- $(NULL)
--ifeq (Linux,$(OS_TARGET))
-+ifneq (,$(or $(MOZ_X11),$(filter Linux,$(OS_TARGET))))
- CPPSRCS += \
- SkFontHost_linux.cpp \
-- SkFontHost_tables.cpp \
- SkTime_Unix.cpp \
- $(NULL)
- endif
+--- gfx/skia/moz.build~
++++ gfx/skia/moz.build
+@@ -188,10 +188,9 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt
+ 'SkMMapStream.cpp',
+ 'SkOSFile.cpp',
+ ]
+- if CONFIG['OS_TARGET'] == 'Linux':
++ if CONFIG['MOZ_X11'] == 1 or CONFIG['OS_TARGET'] == 'Linux':
+ CPP_SOURCES += [
+ 'SkFontHost_linux.cpp',
+- 'SkFontHost_tables.cpp',
+ 'SkThread_pthread.cpp',
+ 'SkTime_Unix.cpp',
+ ]
diff --git a/www/firefox/files/patch-bug803480 b/www/firefox/files/patch-bug803480
index 1d99d93d7215..5f5b4fe7f392 100644
--- a/www/firefox/files/patch-bug803480
+++ b/www/firefox/files/patch-bug803480
@@ -75,15 +75,28 @@ index a0575dc..be327fd 100644
dnl
dnl option to disable cookies
diff --git netwerk/wifi/Makefile.in netwerk/wifi/Makefile.in
-index 39d7364..e8d276b 100644
+index 26dbd79..4cbf912 100644
--- netwerk/wifi/Makefile.in
+++ netwerk/wifi/Makefile.in
-@@ -41,7 +41,7 @@ CPPSRCS += nsWifiScannerSolaris.cpp
+@@ -20,7 +20,7 @@ ifeq ($(OS_ARCH),SunOS)
OS_INCLUDES += $(GLIB_CFLAGS)
endif
-ifdef MOZ_ENABLE_DBUS
+ifdef NECKO_WIFI_DBUS
- CPPSRCS += nsWifiScannerDBus.cpp
OS_INCLUDES += $(MOZ_DBUS_GLIB_CFLAGS)
endif
+
+diff --git netwerk/wifi/moz.build netwerk/wifi/moz.build
+index 5e70211..07b01de 100644
+--- netwerk/wifi/moz.build
++++ netwerk/wifi/moz.build
+@@ -43,7 +43,7 @@ elif CONFIG['OS_ARCH'] == 'SunOS':
+ 'nsWifiScannerSolaris.cpp',
+ ]
+
+-if CONFIG['MOZ_ENABLE_DBUS']:
++if CONFIG['NECKO_WIFI_DBUS']:
+ CPP_SOURCES += [
+ 'nsWifiScannerDBus.cpp',
+ ]
diff --git a/www/firefox/files/patch-bug807492 b/www/firefox/files/patch-bug807492
index 4b4e90f52ba1..3b39766e0492 100644
--- a/www/firefox/files/patch-bug807492
+++ b/www/firefox/files/patch-bug807492
@@ -1,19 +1,4 @@
-diff --git config/system-headers config/system-headers
-index 9bd1efa..1095a01 100644
---- config/system-headers
-+++ config/system-headers
-@@ -1121,8 +1121,10 @@ gst/app/gstappsink.h
- gst/app/gstappsrc.h
- gst/video/video.h
- sys/msg.h
- sys/ipc.h
- sys/thr.h
- sys/user.h
- kvm.h
- spawn.h
-+err.h
-+xlocale.h
-diff --git configure.in configure.in
+JJdiff --git configure.in configure.in
index c167461..8346c11 100644
--- configure.in
+++ configure.in
@@ -36,21 +21,6 @@ index c167461..8346c11 100644
;;
esac
fi
-diff --git js/src/config/system-headers js/src/config/system-headers
-index 9bd1efa..1095a01 100644
---- js/src/config/system-headers
-+++ js/src/config/system-headers
-@@ -1121,8 +1121,10 @@ gst/app/gstappsink.h
- gst/app/gstappsrc.h
- gst/video/video.h
- sys/msg.h
- sys/ipc.h
- sys/thr.h
- sys/user.h
- kvm.h
- spawn.h
-+err.h
-+xlocale.h
diff --git media/mtransport/objs.mk media/mtransport/objs.mk
index f1fc85f..141e8ca 100644
--- media/mtransport/objs.mk
@@ -581,1288 +551,6 @@ index a30e330..cfbd8a3 100644
ifeq ($(OS_TARGET),Darwin)
LIBS += \
-framework AudioToolbox \
-diff --git media/webrtc/trunk/webrtc/build/common.gypi media/webrtc/trunk/webrtc/build/common.gypi
-index 9ca9f7c..d5c4ab9 100644
---- media/webrtc/trunk/webrtc/build/common.gypi
-+++ media/webrtc/trunk/webrtc/build/common.gypi
-@@ -119,16 +119,21 @@
- # flood of chromium-style warnings. Investigate enabling them:
- # http://code.google.com/p/webrtc/issues/detail?id=163
- 'clang_use_chrome_plugins%': 0,
-
- # Switch between Android audio device OpenSL ES implementation
- # and Java Implementation
- 'enable_android_opensl%': 0,
- }],
-+ ['OS=="linux" or OS=="solaris" or os_bsd==1', {
-+ 'include_v4l2_video_capture%': 1,
-+ }, {
-+ 'include_v4l2_video_capture%': 0,
-+ }],
- ['OS=="ios"', {
- 'enable_video%': 0,
- 'enable_protobuf%': 0,
- 'build_libjpeg%': 0,
- 'build_libyuv%': 0,
- 'build_libvpx%': 0,
- 'include_tests%': 0,
- }],
-@@ -205,16 +210,28 @@
- 'defines': ['WEBRTC_ARCH_ARM_NEON',
- 'WEBRTC_BUILD_NEON_LIBS',
- 'WEBRTC_DETECT_ARM_NEON'],
- }],
- ],
- }],
- ],
- }],
-+ ['os_bsd==1', {
-+ 'defines': [
-+ 'WEBRTC_BSD',
-+ 'WEBRTC_THREAD_RR',
-+ ],
-+ }],
-+ ['OS=="dragonfly" or OS=="netbsd"', {
-+ 'defines': [
-+ # doesn't support pthread_condattr_setclock
-+ 'WEBRTC_CLOCK_TYPE_REALTIME',
-+ ],
-+ }],
- ['OS=="ios"', {
- 'defines': [
- 'WEBRTC_MAC',
- 'WEBRTC_IOS',
- 'WEBRTC_THREAD_RR',
- 'WEBRTC_CLOCK_TYPE_REALTIME',
- ],
- }],
-diff --git media/webrtc/trunk/webrtc/modules/audio_device/audio_device_utility.cc media/webrtc/trunk/webrtc/modules/audio_device/audio_device_utility.cc
-index 203f09a..0b0b70e 100644
---- media/webrtc/trunk/webrtc/modules/audio_device/audio_device_utility.cc
-+++ media/webrtc/trunk/webrtc/modules/audio_device/audio_device_utility.cc
-@@ -41,17 +41,17 @@ bool AudioDeviceUtility::StringCompare(
- const char* str1 , const char* str2,
- const WebRtc_UWord32 length)
- {
- return ((_strnicmp(str1, str2, length) == 0) ? true : false);
- }
-
- } // namespace webrtc
-
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
-
- // ============================================================================
- // Linux & Mac
- // ============================================================================
-
- #include <sys/time.h> // gettimeofday
- #include <time.h> // gettimeofday
- #include <string.h> // strncasecmp
-@@ -104,11 +104,11 @@ WebRtc_UWord32 AudioDeviceUtility::GetTimeInMS()
- bool AudioDeviceUtility::StringCompare(
- const char* str1 , const char* str2, const WebRtc_UWord32 length)
- {
- return (strncasecmp(str1, str2, length) == 0)?true: false;
- }
-
- } // namespace webrtc
-
--#endif // defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#endif // defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
-
-
-diff --git media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc
-index bdad224..39e1132 100644
---- media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc
-+++ media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc
-@@ -7,16 +7,17 @@
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
- #include "modules/rtp_rtcp/source/forward_error_correction.h"
-
- #include <algorithm>
- #include <cassert>
-+#include <cstdlib> // for abs()
- #include <cstring>
- #include <iterator>
-
- #include "modules/rtp_rtcp/source/forward_error_correction_internal.h"
- #include "modules/rtp_rtcp/source/rtp_utility.h"
- #include "system_wrappers/interface/trace.h"
-
- namespace webrtc {
-diff --git media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc
-index 298d479..37b70c9 100644
---- media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc
-+++ media/webrtc/trunk/webrtc/modules/rtp_rtcp/source/rtp_utility.cc
-@@ -13,17 +13,17 @@
- #include <cassert>
- #include <cmath> // ceil
- #include <cstring> // memcpy
-
- #if defined(_WIN32)
- #include <Windows.h> // FILETIME
- #include <WinSock.h> // timeval
- #include <MMSystem.h> // timeGetTime
--#elif ((defined WEBRTC_LINUX) || (defined WEBRTC_MAC))
-+#elif ((defined WEBRTC_LINUX) || (defined WEBRTC_BSD) || (defined WEBRTC_MAC))
- #include <sys/time.h> // gettimeofday
- #include <time.h>
- #endif
- #if (defined(_DEBUG) && defined(_WIN32) && (_MSC_VER >= 1400))
- #include <stdio.h>
- #endif
-
- #include "system_wrappers/interface/tick_util.h"
-@@ -151,17 +151,17 @@ void get_time(WindowsHelpTimer* help_timer, FILETIME& current_time) {
- virtual WebRtc_Word64 GetTimeInMS();
-
- virtual void CurrentNTP(WebRtc_UWord32& secs, WebRtc_UWord32& frac);
-
- private:
- WindowsHelpTimer* _helpTimer;
- };
-
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
-
- // A clock reading times from the POSIX API.
- class UnixSystemClock : public RtpRtcpClock {
- public:
- UnixSystemClock() {}
- virtual ~UnixSystemClock() {}
-
- virtual WebRtc_Word64 GetTimeInMS();
-@@ -209,17 +209,17 @@ void WindowsSystemClock::CurrentNTP(WebRtc_UWord32& secs,
- } else if (dtemp < -1) {
- dtemp += 1;
- secs--;
- }
- dtemp *= NTP_FRAC;
- frac = (WebRtc_UWord32)dtemp;
- }
-
--#elif ((defined WEBRTC_LINUX) || (defined WEBRTC_MAC))
-+#elif ((defined WEBRTC_LINUX) || (defined WEBRTC_BSD) || (defined WEBRTC_MAC))
-
- WebRtc_Word64 UnixSystemClock::GetTimeInMS() {
- return TickTime::MillisecondTimestamp();
- }
-
- // Use the system time.
- void UnixSystemClock::CurrentNTP(WebRtc_UWord32& secs, WebRtc_UWord32& frac) {
- double dtemp;
-@@ -248,17 +248,17 @@ void UnixSystemClock::CurrentNTP(WebRtc_UWord32& secs, WebRtc_UWord32& frac) {
- // Note that this is a POD. Only PODs are allowed to have static storage
- // duration according to the Google Style guide.
- static WindowsHelpTimer global_help_timer = {0, 0, {{ 0, 0}, 0}, 0};
- #endif
-
- RtpRtcpClock* GetSystemClock() {
- #if defined(_WIN32)
- return new WindowsSystemClock(&global_help_timer);
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- return new UnixSystemClock();
- #else
- return NULL;
- #endif
- }
-
- WebRtc_UWord32 GetCurrentRTP(RtpRtcpClock* clock, WebRtc_UWord32 freq) {
- const bool use_global_clock = (clock == NULL);
-@@ -325,17 +325,17 @@ WebRtc_UWord16 GetPayloadDataLength(const WebRtcRTPHeader* rtp_header,
- return static_cast<WebRtc_UWord16>(length);
- }
-
- #if defined(_WIN32)
- bool StringCompare(const char* str1, const char* str2,
- const WebRtc_UWord32 length) {
- return (_strnicmp(str1, str2, length) == 0) ? true : false;
- }
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- bool StringCompare(const char* str1, const char* str2,
- const WebRtc_UWord32 length) {
- return (strncasecmp(str1, str2, length) == 0) ? true : false;
- }
- #endif
-
- #if !defined(WEBRTC_LITTLE_ENDIAN) && !defined(WEBRTC_BIG_ENDIAN)
- #error Either WEBRTC_LITTLE_ENDIAN or WEBRTC_BIG_ENDIAN must be defined
-diff --git media/webrtc/trunk/webrtc/modules/udp_transport/source/udp_transport_impl.cc media/webrtc/trunk/webrtc/modules/udp_transport/source/udp_transport_impl.cc
-index e50db5d..70ad8a8 100644
---- media/webrtc/trunk/webrtc/modules/udp_transport/source/udp_transport_impl.cc
-+++ media/webrtc/trunk/webrtc/modules/udp_transport/source/udp_transport_impl.cc
-@@ -13,60 +13,62 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
-
- #if defined(_WIN32)
- #include <winsock2.h>
- #include <ws2tcpip.h>
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- #include <arpa/inet.h>
- #include <ctype.h>
- #include <fcntl.h>
- #include <netdb.h>
-+#include <sys/socket.h>
- #include <net/if.h>
- #include <netinet/in.h>
- #include <stdlib.h>
- #include <sys/ioctl.h>
--#include <sys/socket.h>
- #include <sys/time.h>
- #include <unistd.h>
- #ifndef WEBRTC_IOS
- #include <net/if_arp.h>
- #endif
- #endif // defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-
- #if defined(WEBRTC_MAC)
--#include <ifaddrs.h>
- #include <machine/types.h>
- #endif
-+#if defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
-+#include <ifaddrs.h>
-+#endif
- #if defined(WEBRTC_LINUX)
- #include <linux/netlink.h>
- #include <linux/rtnetlink.h>
- #endif
-
- #include "common_types.h"
- #include "critical_section_wrapper.h"
- #include "rw_lock_wrapper.h"
- #include "trace.h"
- #include "typedefs.h"
- #include "udp_socket_manager_wrapper.h"
-
--#if defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#if defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- #define GetLastError() errno
-
- #define IFRSIZE ((int)(size * sizeof (struct ifreq)))
-
- #define NLMSG_OK_NO_WARNING(nlh,len) \
- ((len) >= (int)sizeof(struct nlmsghdr) && \
- (int)(nlh)->nlmsg_len >= (int)sizeof(struct nlmsghdr) && \
- (int)(nlh)->nlmsg_len <= (len))
-
--#endif // defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#endif // defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
-
- namespace webrtc {
-
- class SocketFactory : public UdpTransportImpl::SocketFactoryInterface {
- public:
- UdpSocketWrapper* CreateSocket(const WebRtc_Word32 id,
- UdpSocketManager* mgr,
- CallbackObj obj,
-@@ -2366,17 +2368,17 @@ WebRtc_UWord32 UdpTransport::InetAddrIPV4(const char* ip)
- {
- return ::inet_addr(ip);
- }
-
- WebRtc_Word32 UdpTransport::InetPresentationToNumeric(WebRtc_Word32 af,
- const char* src,
- void* dst)
- {
--#if defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#if defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- const WebRtc_Word32 result = inet_pton(af, src, dst);
- return result > 0 ? 0 : -1;
-
- #elif defined(_WIN32)
- SocketAddress temp;
- int length=sizeof(SocketAddress);
-
- if(af == AF_INET)
-@@ -2488,17 +2490,17 @@ WebRtc_Word32 UdpTransport::LocalHostAddressIPV6(char n_localIP[16])
- break;
- };
- }
- freeaddrinfo(result);
- WEBRTC_TRACE(kTraceWarning, kTraceTransport, -1,
- "getaddrinfo failed to find address");
- return -1;
-
--#elif defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- struct ifaddrs* ptrIfAddrs = NULL;
- struct ifaddrs* ptrIfAddrsStart = NULL;
-
- getifaddrs(&ptrIfAddrsStart);
- ptrIfAddrs = ptrIfAddrsStart;
- while(ptrIfAddrs)
- {
- if(ptrIfAddrs->ifa_addr->sa_family == AF_INET6)
-@@ -2680,17 +2682,17 @@ WebRtc_Word32 UdpTransport::LocalHostAddress(WebRtc_UWord32& localIP)
- }
- else
- {
- WebRtc_Word32 error = WSAGetLastError();
- WEBRTC_TRACE(kTraceWarning, kTraceTransport, -1,
- "gethostbyname failed, error:%d", error);
- return -1;
- }
--#elif (defined(WEBRTC_MAC))
-+#elif (defined(WEBRTC_BSD) || defined(WEBRTC_MAC))
- char localname[255];
- if (gethostname(localname, 255) != -1)
- {
- hostent* localHost;
- localHost = gethostbyname(localname);
- if(localHost)
- {
- if(localHost->h_addrtype != AF_INET)
-@@ -2819,17 +2821,17 @@ WebRtc_Word32 UdpTransport::IPAddress(const SocketAddress& address,
- }
-
- source_port = address._sockaddr_in6.sin6_port;
- }
- // Convert port number to network byte order.
- sourcePort = htons(source_port);
- return 0;
-
-- #elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+ #elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- WebRtc_Word32 ipFamily = address._sockaddr_storage.sin_family;
- const void* ptrNumericIP = NULL;
-
- if(ipFamily == AF_INET)
- {
- ptrNumericIP = &(address._sockaddr_in.sin_addr);
- }
- else if(ipFamily == AF_INET6)
-diff --git media/webrtc/trunk/webrtc/modules/utility/source/rtp_dump_impl.cc media/webrtc/trunk/webrtc/modules/utility/source/rtp_dump_impl.cc
-index 69a52ec..7ac226c 100644
---- media/webrtc/trunk/webrtc/modules/utility/source/rtp_dump_impl.cc
-+++ media/webrtc/trunk/webrtc/modules/utility/source/rtp_dump_impl.cc
-@@ -14,17 +14,17 @@
- #include <stdio.h>
-
- #include "critical_section_wrapper.h"
- #include "trace.h"
-
- #if defined(_WIN32)
- #include <Windows.h>
- #include <mmsystem.h>
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- #include <string.h>
- #include <sys/time.h>
- #include <time.h>
- #endif
-
- #if (defined(_DEBUG) && defined(_WIN32))
- #define DEBUG_PRINT(expr) OutputDebugString(##expr)
- #define DEBUG_PRINTP(expr, p) \
-@@ -233,17 +233,17 @@ bool RtpDumpImpl::RTCP(const WebRtc_UWord8* packet) const
- return is_rtcp;
- }
-
- // TODO (hellner): why is TickUtil not used here?
- inline WebRtc_UWord32 RtpDumpImpl::GetTimeInMS() const
- {
- #if defined(_WIN32)
- return timeGetTime();
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- struct timeval tv;
- struct timezone tz;
- unsigned long val;
-
- gettimeofday(&tv, &tz);
- val = tv.tv_sec * 1000 + tv.tv_usec / 1000;
- return val;
- #else
-diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
-index 653ee16..8d6fd68 100644
---- media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
-+++ media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
-@@ -14,17 +14,23 @@
- #include <unistd.h>
- #include <sys/ioctl.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <stdio.h>
- #include <stdlib.h>
-
- //v4l includes
-+#if defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__)
-+#include <sys/videoio.h>
-+#elif defined(__sun)
-+#include <sys/videodev2.h>
-+#else
- #include <linux/videodev2.h>
-+#endif
-
- #include "ref_count.h"
- #include "trace.h"
-
-
- namespace webrtc
- {
- namespace videocapturemodule
-diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
-index 12df1b3..424ea0a 100644
---- media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
-+++ media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
-@@ -7,22 +7,30 @@
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
- #include <sys/ioctl.h>
- #include <unistd.h>
- #include <sys/stat.h>
- #include <fcntl.h>
--#include <linux/videodev2.h>
- #include <errno.h>
- #include <stdio.h>
- #include <sys/mman.h>
- #include <string.h>
-
-+//v4l includes
-+#if defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__)
-+#include <sys/videoio.h>
-+#elif defined(__sun)
-+#include <sys/videodev2.h>
-+#else
-+#include <linux/videodev2.h>
-+#endif
-+
- #include <new>
-
- #include "ref_count.h"
- #include "trace.h"
- #include "thread_wrapper.h"
- #include "critical_section_wrapper.h"
- #include "video_capture_linux.h"
-
-diff --git media/webrtc/trunk/webrtc/modules/video_capture/device_info_impl.cc media/webrtc/trunk/webrtc/modules/video_capture/device_info_impl.cc
-index e3f7bb5..882cede 100644
---- media/webrtc/trunk/webrtc/modules/video_capture/device_info_impl.cc
-+++ media/webrtc/trunk/webrtc/modules/video_capture/device_info_impl.cc
-@@ -49,17 +49,17 @@ WebRtc_Word32 DeviceInfoImpl::NumberOfCapabilities(
- if (!deviceUniqueIdUTF8)
- return -1;
-
- _apiLock.AcquireLockShared();
-
- if (_lastUsedDeviceNameLength == strlen((char*) deviceUniqueIdUTF8))
- {
- // Is it the same device that is asked for again.
--#if defined(WEBRTC_MAC) || defined(WEBRTC_LINUX)
-+#if defined(WEBRTC_MAC) || defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
- if(strncasecmp((char*)_lastUsedDeviceName,
- (char*) deviceUniqueIdUTF8,
- _lastUsedDeviceNameLength)==0)
- #else
- if (_strnicmp((char*) _lastUsedDeviceName,
- (char*) deviceUniqueIdUTF8,
- _lastUsedDeviceNameLength) == 0)
- #endif
-@@ -86,17 +86,17 @@ WebRtc_Word32 DeviceInfoImpl::GetCapability(const char* deviceUniqueIdUTF8,
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, _id,
- "deviceUniqueIdUTF8 parameter not set in call to GetCapability");
- return -1;
- }
- ReadLockScoped cs(_apiLock);
-
- if ((_lastUsedDeviceNameLength != strlen((char*) deviceUniqueIdUTF8))
--#if defined(WEBRTC_MAC) || defined(WEBRTC_LINUX)
-+#if defined(WEBRTC_MAC) || defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
- || (strncasecmp((char*)_lastUsedDeviceName,
- (char*) deviceUniqueIdUTF8,
- _lastUsedDeviceNameLength)!=0))
- #else
- || (_strnicmp((char*) _lastUsedDeviceName,
- (char*) deviceUniqueIdUTF8,
- _lastUsedDeviceNameLength) != 0))
- #endif
-@@ -150,17 +150,17 @@ WebRtc_Word32 DeviceInfoImpl::GetBestMatchedCapability(
- {
-
-
- if (!deviceUniqueIdUTF8)
- return -1;
-
- ReadLockScoped cs(_apiLock);
- if ((_lastUsedDeviceNameLength != strlen((char*) deviceUniqueIdUTF8))
--#if defined(WEBRTC_MAC) || defined(WEBRTC_LINUX)
-+#if defined(WEBRTC_MAC) || defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
- || (strncasecmp((char*)_lastUsedDeviceName,
- (char*) deviceUniqueIdUTF8,
- _lastUsedDeviceNameLength)!=0))
- #else
- || (_strnicmp((char*) _lastUsedDeviceName,
- (char*) deviceUniqueIdUTF8,
- _lastUsedDeviceNameLength) != 0))
- #endif
-diff --git media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
-index 0a9765e..8d4bbf4 100644
---- media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
-+++ media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
-@@ -43,17 +43,17 @@
- 'conditions': [
- ['include_internal_video_capture==0', {
- 'sources': [
- 'external/device_info_external.cc',
- 'external/video_capture_external.cc',
- ],
- }, { # include_internal_video_capture == 1
- 'conditions': [
-- ['OS=="linux"', {
-+ ['include_v4l2_video_capture==1', {
- 'include_dirs': [
- 'linux',
- ],
- 'sources': [
- 'linux/device_info_linux.cc',
- 'linux/device_info_linux.h',
- 'linux/video_capture_linux.cc',
- 'linux/video_capture_linux.h',
-@@ -152,31 +152,35 @@
- 'include_dirs': [
- 'include',
- ],
- 'sources': [
- 'test/video_capture_unittest.cc',
- 'test/video_capture_main_mac.mm',
- ],
- 'conditions': [
-- ['OS=="mac" or OS=="linux"', {
-+ ['OS!="win" and OS!="android"', {
- 'cflags': [
- '-Wno-write-strings',
- ],
- 'ldflags': [
- '-lpthread -lm',
- ],
- }],
-- ['OS=="linux"', {
-+ ['include_v4l2_video_capture==1', {
- 'libraries': [
-- '-lrt',
- '-lXext',
- '-lX11',
- ],
- }],
-+ ['OS=="linux"', {
-+ 'libraries': [
-+ '-lrt',
-+ ],
-+ }],
- ['OS=="mac"', {
- 'dependencies': [
- # Link with a special main for mac so we can use the webcam.
- '<(webrtc_root)/test/test.gyp:test_support_main_threaded_mac',
- ],
- 'xcode_settings': {
- # TODO(andrew): CoreAudio and AudioToolbox shouldn't be needed.
- 'OTHER_LDFLAGS': [
-diff --git media/webrtc/trunk/webrtc/system_wrappers/interface/asm_defines.h media/webrtc/trunk/webrtc/system_wrappers/interface/asm_defines.h
-index 0cd85d0..45591be 100644
---- media/webrtc/trunk/webrtc/system_wrappers/interface/asm_defines.h
-+++ media/webrtc/trunk/webrtc/system_wrappers/interface/asm_defines.h
-@@ -6,17 +6,17 @@
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
- #ifndef WEBRTC_SYSTEM_WRAPPERS_INTERFACE_ASM_DEFINES_H_
- #define WEBRTC_SYSTEM_WRAPPERS_INTERFACE_ASM_DEFINES_H_
-
--#if defined(__linux__) && defined(__ELF__)
-+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__ELF__)
- .section .note.GNU-stack,"",%progbits
- #endif
-
- // Define the macros used in ARM assembly code, so that for Mac or iOS builds
- // we add leading underscores for the function names.
- #ifdef __APPLE__
- .macro GLOBAL_FUNCTION name
- .global _\name
-diff --git media/webrtc/trunk/webrtc/system_wrappers/interface/tick_util.h media/webrtc/trunk/webrtc/system_wrappers/interface/tick_util.h
-index 0cd85d0..45591be 100644
---- media/webrtc/trunk/webrtc/system_wrappers/interface/tick_util.h
-+++ media/webrtc/trunk/webrtc/system_wrappers/interface/tick_util.h
-@@ -189,17 +189,17 @@ inline WebRtc_Word64 TickTime::QueryOsForTicks() {
- // 0x0fffffff ~3.1 days, the code will not take that long to execute
- // so it must have been a wrap around.
- if (old > 0xf0000000 && now < 0x0fffffff) {
- num_wrap_time_get_time++;
- }
- }
- result.ticks_ = now + (num_wrap_time_get_time << 32);
- #endif
--#elif defined(WEBRTC_LINUX)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
- struct timespec ts;
- // TODO(wu): Remove CLOCK_REALTIME implementation.
- #ifdef WEBRTC_CLOCK_TYPE_REALTIME
- clock_gettime(CLOCK_REALTIME, &ts);
- #else
- clock_gettime(CLOCK_MONOTONIC, &ts);
- #endif
- result.ticks_ = 1000000000LL * static_cast<WebRtc_Word64>(ts.tv_sec) +
-@@ -236,34 +236,34 @@ inline WebRtc_Word64 TickTime::MillisecondTimestamp() {
- #if _WIN32
- #ifdef USE_QUERY_PERFORMANCE_COUNTER
- LARGE_INTEGER qpfreq;
- QueryPerformanceFrequency(&qpfreq);
- return (ticks * 1000) / qpfreq.QuadPart;
- #else
- return ticks;
- #endif
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- return ticks / 1000000LL;
- #else
- return ticks / 1000LL;
- #endif
- }
-
- inline WebRtc_Word64 TickTime::MicrosecondTimestamp() {
- WebRtc_Word64 ticks = TickTime::Now().Ticks();
- #if _WIN32
- #ifdef USE_QUERY_PERFORMANCE_COUNTER
- LARGE_INTEGER qpfreq;
- QueryPerformanceFrequency(&qpfreq);
- return (ticks * 1000) / (qpfreq.QuadPart / 1000);
- #else
- return ticks * 1000LL;
- #endif
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- return ticks / 1000LL;
- #else
- return ticks;
- #endif
- }
-
- inline WebRtc_Word64 TickTime::Ticks() const {
- return ticks_;
-@@ -273,33 +273,33 @@ inline WebRtc_Word64 TickTime::MillisecondsToTicks(const WebRtc_Word64 ms) {
- #if _WIN32
- #ifdef USE_QUERY_PERFORMANCE_COUNTER
- LARGE_INTEGER qpfreq;
- QueryPerformanceFrequency(&qpfreq);
- return (qpfreq.QuadPart * ms) / 1000;
- #else
- return ms;
- #endif
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- return ms * 1000000LL;
- #else
- return ms * 1000LL;
- #endif
- }
-
- inline WebRtc_Word64 TickTime::TicksToMilliseconds(const WebRtc_Word64 ticks) {
- #if _WIN32
- #ifdef USE_QUERY_PERFORMANCE_COUNTER
- LARGE_INTEGER qpfreq;
- QueryPerformanceFrequency(&qpfreq);
- return (ticks * 1000) / qpfreq.QuadPart;
- #else
- return ticks;
- #endif
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- return ticks / 1000000LL;
- #else
- return ticks / 1000LL;
- #endif
- }
-
- inline TickTime& TickTime::operator+=(const WebRtc_Word64& ticks) {
- ticks_ += ticks;
-@@ -318,17 +318,17 @@ inline WebRtc_Word64 TickInterval::Milliseconds() const {
- #ifdef USE_QUERY_PERFORMANCE_COUNTER
- LARGE_INTEGER qpfreq;
- QueryPerformanceFrequency(&qpfreq);
- return (interval_ * 1000) / qpfreq.QuadPart;
- #else
- // interval_ is in ms
- return interval_;
- #endif
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- // interval_ is in ns
- return interval_ / 1000000;
- #else
- // interval_ is usecs
- return interval_ / 1000;
- #endif
- }
-
-@@ -337,17 +337,17 @@ inline WebRtc_Word64 TickInterval::Microseconds() const {
- #ifdef USE_QUERY_PERFORMANCE_COUNTER
- LARGE_INTEGER qpfreq;
- QueryPerformanceFrequency(&qpfreq);
- return (interval_ * 1000000) / qpfreq.QuadPart;
- #else
- // interval_ is in ms
- return interval_ * 1000LL;
- #endif
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- // interval_ is in ns
- return interval_ / 1000;
- #else
- // interval_ is usecs
- return interval_;
- #endif
- }
-
-diff --git media/webrtc/trunk/webrtc/system_wrappers/source/atomic32_posix.cc media/webrtc/trunk/webrtc/system_wrappers/source/atomic32_posix.cc
-index 05b0e57..993456c 100644
---- media/webrtc/trunk/webrtc/system_wrappers/source/atomic32_posix.cc
-+++ media/webrtc/trunk/webrtc/system_wrappers/source/atomic32_posix.cc
-@@ -7,17 +7,16 @@
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
- #include "atomic32.h"
-
- #include <assert.h>
- #include <inttypes.h>
--#include <malloc.h>
-
- #include "common_types.h"
-
- namespace webrtc {
-
- Atomic32::Atomic32(WebRtc_Word32 initial_value)
- : value_(initial_value) {
- assert(Is32bitAligned());
-diff --git media/webrtc/trunk/webrtc/system_wrappers/source/condition_variable.cc media/webrtc/trunk/webrtc/system_wrappers/source/condition_variable.cc
-index b37d037..fcea221 100644
---- media/webrtc/trunk/webrtc/system_wrappers/source/condition_variable.cc
-+++ media/webrtc/trunk/webrtc/system_wrappers/source/condition_variable.cc
-@@ -3,31 +3,33 @@
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-+#include "condition_variable_wrapper.h"
-+
- #if defined(_WIN32)
- #include <windows.h>
- #include "condition_variable_win.h"
--#include "condition_variable_wrapper.h"
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- #include <pthread.h>
- #include "condition_variable_posix.h"
--#include "condition_variable_wrapper.h"
-+#else
-+#include <stddef.h> // for NULL
- #endif
-
- namespace webrtc {
-
- ConditionVariableWrapper* ConditionVariableWrapper::CreateConditionVariable() {
- #if defined(_WIN32)
- return new ConditionVariableWindows;
--#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- return ConditionVariablePosix::Create();
- #else
- return NULL;
- #endif
- }
-
- } // namespace webrtc
-diff --git media/webrtc/trunk/webrtc/system_wrappers/source/condition_variable_posix.cc media/webrtc/trunk/webrtc/system_wrappers/source/condition_variable_posix.cc
-index 48835ab..16c6033 100644
---- media/webrtc/trunk/webrtc/system_wrappers/source/condition_variable_posix.cc
-+++ media/webrtc/trunk/webrtc/system_wrappers/source/condition_variable_posix.cc
-@@ -74,17 +74,17 @@ void ConditionVariablePosix::SleepCS(CriticalSectionWrapper& crit_sect) {
- &crit_sect);
- pthread_cond_wait(&cond_, &cs->mutex_);
- }
-
- bool ConditionVariablePosix::SleepCS(CriticalSectionWrapper& crit_sect,
- unsigned long max_time_inMS) {
- const unsigned long INFINITE = 0xFFFFFFFF;
- const int MILLISECONDS_PER_SECOND = 1000;
--#ifndef WEBRTC_LINUX
-+#if !defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
- const int MICROSECONDS_PER_MILLISECOND = 1000;
- #endif
- const int NANOSECONDS_PER_SECOND = 1000000000;
- const int NANOSECONDS_PER_MILLISECOND = 1000000;
-
- CriticalSectionPosix* cs = reinterpret_cast<CriticalSectionPosix*>(
- &crit_sect);
-
-diff --git media/webrtc/trunk/webrtc/system_wrappers/source/cpu.cc media/webrtc/trunk/webrtc/system_wrappers/source/cpu.cc
-index 3df5d18..4cd3ddf 100644
---- media/webrtc/trunk/webrtc/system_wrappers/source/cpu.cc
-+++ media/webrtc/trunk/webrtc/system_wrappers/source/cpu.cc
-@@ -9,28 +9,28 @@
- */
-
- #include "system_wrappers/interface/cpu_wrapper.h"
-
- #if defined(_WIN32)
- #include "cpu_win.h"
- #elif defined(WEBRTC_MAC)
- #include "cpu_mac.h"
--#elif defined(WEBRTC_ANDROID)
-+#elif defined(WEBRTC_ANDROID) || defined(WEBRTC_BSD)
- // Not implemented yet, might be possible to use Linux implementation
- #else // defined(WEBRTC_LINUX)
- #include "cpu_linux.h"
- #endif
-
- namespace webrtc {
- CpuWrapper* CpuWrapper::CreateCpu() {
- #if defined(_WIN32)
- return new CpuWindows();
- #elif defined(WEBRTC_MAC)
- return new CpuWrapperMac();
--#elif defined(WEBRTC_ANDROID)
-+#elif defined(WEBRTC_ANDROID) || defined(WEBRTC_BSD)
- return 0;
- #else
- return new CpuLinux();
- #endif
- }
-
- } // namespace webrtc
-diff --git media/webrtc/trunk/webrtc/system_wrappers/source/cpu_info.cc media/webrtc/trunk/webrtc/system_wrappers/source/cpu_info.cc
-index e367abf..e14d7af 100644
---- media/webrtc/trunk/webrtc/system_wrappers/source/cpu_info.cc
-+++ media/webrtc/trunk/webrtc/system_wrappers/source/cpu_info.cc
-@@ -7,23 +7,25 @@
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
- #include "system_wrappers/interface/cpu_info.h"
-
- #if defined(_WIN32)
- #include <Windows.h>
--#elif defined(WEBRTC_MAC)
--#include <sys/sysctl.h>
-+#elif defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- #include <sys/types.h>
-+#include <sys/sysctl.h>
- #elif defined(WEBRTC_ANDROID)
- // Not implemented yet, might be possible to use Linux implementation
--#else // defined(WEBRTC_LINUX)
-+#elif defined(WEBRTC_LINUX)
- #include <sys/sysinfo.h>
-+#else // defined(_SC_NPROCESSORS_ONLN)
-+#include <unistd.h>
- #endif
-
- #include "trace.h"
-
- namespace webrtc {
-
- WebRtc_UWord32 CpuInfo::number_of_cores_ = 0;
-
-@@ -36,29 +38,38 @@ WebRtc_UWord32 CpuInfo::DetectNumberOfCores() {
- WEBRTC_TRACE(kTraceStateInfo, kTraceUtility, -1,
- "Available number of cores:%d", number_of_cores_);
-
- #elif defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_GONK)
- number_of_cores_ = get_nprocs();
- WEBRTC_TRACE(kTraceStateInfo, kTraceUtility, -1,
- "Available number of cores:%d", number_of_cores_);
-
--#elif defined(WEBRTC_MAC)
-- int name[] = {CTL_HW, HW_AVAILCPU};
-+#elif defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
-+ int name[] = {
-+ CTL_HW,
-+#ifdef HW_AVAILCPU
-+ HW_AVAILCPU,
-+#else
-+ HW_NCPU,
-+#endif
-+ };
- int ncpu;
- size_t size = sizeof(ncpu);
- if (0 == sysctl(name, 2, &ncpu, &size, NULL, 0)) {
- number_of_cores_ = static_cast<WebRtc_UWord32>(ncpu);
- WEBRTC_TRACE(kTraceStateInfo, kTraceUtility, -1,
- "Available number of cores:%d", number_of_cores_);
- } else {
- WEBRTC_TRACE(kTraceError, kTraceUtility, -1,
- "Failed to get number of cores");
- number_of_cores_ = 1;
- }
-+#elif defined(_SC_NPROCESSORS_ONLN)
-+ _numberOfCores = sysconf(_SC_NPROCESSORS_ONLN);
- #else
- WEBRTC_TRACE(kTraceWarning, kTraceUtility, -1,
- "No function to get number of cores");
- number_of_cores_ = 1;
- #endif
- }
- return number_of_cores_;
- }
-diff --git media/webrtc/trunk/webrtc/system_wrappers/source/thread_posix.cc media/webrtc/trunk/webrtc/system_wrappers/source/thread_posix.cc
-index 6334490..852ebaa 100644
---- media/webrtc/trunk/webrtc/system_wrappers/source/thread_posix.cc
-+++ media/webrtc/trunk/webrtc/system_wrappers/source/thread_posix.cc
-@@ -54,16 +54,27 @@
- #ifdef WEBRTC_LINUX
- #include <sys/types.h>
- #include <sched.h>
- #include <sys/syscall.h>
- #include <linux/unistd.h>
- #include <sys/prctl.h>
- #endif
-
-+#if defined(__NetBSD__)
-+#include <lwp.h>
-+#elif defined(__FreeBSD__)
-+#include <sys/param.h>
-+#include <sys/thr.h>
-+#endif
-+
-+#if defined(WEBRTC_BSD) && !defined(__NetBSD__)
-+#include <pthread_np.h>
-+#endif
-+
- #include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
- #include "webrtc/system_wrappers/interface/event_wrapper.h"
- #include "webrtc/system_wrappers/interface/trace.h"
-
- namespace webrtc {
-
- int ConvertToSystemPriority(ThreadPriority priority, int min_prio,
- int max_prio) {
-@@ -136,16 +147,30 @@ ThreadPosix::ThreadPosix(ThreadRunFunction func, ThreadObj obj,
- }
- }
-
- uint32_t ThreadWrapper::GetThreadId() {
- #if defined(WEBRTC_ANDROID) || defined(WEBRTC_LINUX) || defined(WEBRTC_GONK)
- return static_cast<uint32_t>(syscall(__NR_gettid));
- #elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
- return pthread_mach_thread_np(pthread_self());
-+#elif defined(__NetBSD__)
-+ return _lwp_self();
-+#elif defined(__DragonFly__)
-+ return lwp_gettid();
-+#elif defined(__OpenBSD__)
-+ return reinterpret_cast<uintptr_t> (pthread_self());
-+#elif defined(__FreeBSD__)
-+# if __FreeBSD_version > 900030
-+ return pthread_getthreadid_np();
-+# else
-+ long lwpid;
-+ thr_self(&lwpid);
-+ return lwpid;
-+# endif
- #else
- return reinterpret_cast<uint32_t>(pthread_self());
- #endif
- }
-
- int ThreadPosix::Construct() {
- int result = 0;
- #if !defined(WEBRTC_ANDROID) && !defined(WEBRTC_GONK)
-@@ -167,17 +192,17 @@ int ThreadPosix::Construct() {
- }
-
- ThreadPosix::~ThreadPosix() {
- pthread_attr_destroy(&attr_);
- delete event_;
- delete crit_state_;
- }
-
--#define HAS_THREAD_ID !defined(WEBRTC_IOS) && !defined(WEBRTC_MAC)
-+#define HAS_THREAD_ID !defined(WEBRTC_IOS) && !defined(WEBRTC_MAC) && !defined(WEBRTC_BSD)
-
- bool ThreadPosix::Start(unsigned int& thread_id)
- {
- if (!run_function_) {
- return false;
- }
- int result = pthread_attr_setdetachstate(&attr_, PTHREAD_CREATE_DETACHED);
- // Set the stack stack size to 1M.
-@@ -232,31 +257,40 @@ bool ThreadPosix::Start(unsigned int& thread_id)
- WEBRTC_TRACE(kTraceError, kTraceUtility, -1,
- "unable to set thread priority");
- }
- return true;
- }
-
- // CPU_ZERO and CPU_SET are not available in NDK r7, so disable
- // SetAffinity on Android for now.
--#if (defined(WEBRTC_LINUX) && (!defined(WEBRTC_ANDROID)) && (!defined(WEBRTC_GONK)))
-+#if defined(__FreeBSD__) || (defined(WEBRTC_LINUX) && \
-+ (!defined(WEBRTC_ANDROID)) && (!defined(WEBRTC_GONK)))
- bool ThreadPosix::SetAffinity(const int* processor_numbers,
- const unsigned int amount_of_processors) {
- if (!processor_numbers || (amount_of_processors == 0)) {
- return false;
- }
-+#if defined(__FreeBSD__)
-+ cpuset_t mask;
-+#else
- cpu_set_t mask;
-+#endif
- CPU_ZERO(&mask);
-
- for (unsigned int processor = 0;
- processor < amount_of_processors;
- ++processor) {
- CPU_SET(processor_numbers[processor], &mask);
- }
--#if defined(WEBRTC_ANDROID) || defined(WEBRTC_GONK)
-+#if defined(__FreeBSD__)
-+ const int result = pthread_setaffinity_np(thread_,
-+ sizeof(mask),
-+ &mask);
-+#elif defined(WEBRTC_ANDROID) || defined(WEBRTC_GONK)
- // Android.
- const int result = syscall(__NR_sched_setaffinity,
- pid_,
- sizeof(mask),
- &mask);
- #else
- // "Normal" Linux.
- const int result = sched_setaffinity(pid_,
-@@ -320,16 +353,20 @@ void ThreadPosix::Run() {
- pid_ = GetThreadId();
- #endif
- // The event the Start() is waiting for.
- event_->Set();
-
- if (set_thread_name_) {
- #ifdef WEBRTC_LINUX
- prctl(PR_SET_NAME, (unsigned long)name_, 0, 0, 0);
-+#elif defined(__NetBSD__)
-+ pthread_setname_np(pthread_self(), "%s", (void *)name_);
-+#elif defined(WEBRTC_BSD)
-+ pthread_set_name_np(pthread_self(), name_);
- #endif
- WEBRTC_TRACE(kTraceStateInfo, kTraceUtility, -1,
- "Thread with name:%s started ", name_);
- } else {
- WEBRTC_TRACE(kTraceStateInfo, kTraceUtility, -1,
- "Thread without name started");
- }
- bool alive = true;
-diff --git media/webrtc/trunk/webrtc/system_wrappers/source/trace_posix.cc media/webrtc/trunk/webrtc/system_wrappers/source/trace_posix.cc
-index 2c7e59a..6f23fcb 100644
---- media/webrtc/trunk/webrtc/system_wrappers/source/trace_posix.cc
-+++ media/webrtc/trunk/webrtc/system_wrappers/source/trace_posix.cc
-@@ -49,17 +49,17 @@ TracePosix::~TracePosix() {
- WebRtc_Word32 TracePosix::AddTime(char* trace_message,
- const TraceLevel level) const {
- struct timeval system_time_high_res;
- if (gettimeofday(&system_time_high_res, 0) == -1) {
- return -1;
- }
- struct tm buffer;
- const struct tm* system_time =
-- localtime_r(&system_time_high_res.tv_sec, &buffer);
-+ localtime_r((const time_t *)(&system_time_high_res.tv_sec), &buffer);
-
- const WebRtc_UWord32 ms_time = system_time_high_res.tv_usec / 1000;
- WebRtc_UWord32 prev_tickCount = 0;
- if (level == kTraceApiCall) {
- prev_tickCount = prev_tick_count_;
- prev_tick_count_ = ms_time;
- } else {
- prev_tickCount = prev_api_tick_count_;
-diff --git media/webrtc/trunk/webrtc/typedefs.h media/webrtc/trunk/webrtc/typedefs.h
-index 6334490..852ebaa 100644
---- media/webrtc/trunk/webrtc/typedefs.h
-+++ media/webrtc/trunk/webrtc/typedefs.h
-@@ -16,17 +16,17 @@
-
- // Reserved words definitions
- // TODO(andrew): Remove this.
- #define G_CONST const
-
- // For access to standard POSIXish features, use WEBRTC_POSIX instead of a
- // more specific macro.
- #if defined(WEBRTC_MAC) || defined(WEBRTC_LINUX) || \
-- defined(WEBRTC_ANDROID)
-+ defined(WEBRTC_ANDROID) || defined(WEBRTC_BSD)
- #define WEBRTC_POSIX
- #endif
-
- // Processor architecture detection. For more info on what's defined, see:
- // http://msdn.microsoft.com/en-us/library/b0084kay.aspx
- // http://www.agner.org/optimize/calling_conventions.pdf
- // or with gcc, run: "echo | gcc -E -dM -"
- // TODO(andrew): replace WEBRTC_LITTLE_ENDIAN with WEBRTC_ARCH_LITTLE_ENDIAN.
-diff --git media/webrtc/trunk/webrtc/video_engine/vie_defines.h media/webrtc/trunk/webrtc/video_engine/vie_defines.h
-index 2cc18cc7..2c042a0 100644
---- media/webrtc/trunk/webrtc/video_engine/vie_defines.h
-+++ media/webrtc/trunk/webrtc/video_engine/vie_defines.h
-@@ -168,17 +168,17 @@ inline int ChannelId(const int moduleId) {
-
- // Example: "Oct 10 2002 12:05:30 r".
- #define BUILDINFO BUILDDATE TEXT(" ") BUILDTIME TEXT(" ") BUILDMODE
- #define RENDER_MODULE_TYPE kRenderWindows
- #endif
-
- // Linux specific.
- #ifndef WEBRTC_ANDROID
--#ifdef WEBRTC_LINUX
-+#if defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
- // Build information macros.
- #if defined(_DEBUG)
- #define BUILDMODE "d"
- #elif defined(DEBUG)
- #define BUILDMODE "d"
- #elif defined(NDEBUG)
- #define BUILDMODE "r"
- #else
-diff --git media/webrtc/trunk/webrtc/voice_engine/voe_network_impl.cc media/webrtc/trunk/webrtc/voice_engine/voe_network_impl.cc
-index 174abca..f8a2b2d 100644
---- media/webrtc/trunk/webrtc/voice_engine/voe_network_impl.cc
-+++ media/webrtc/trunk/webrtc/voice_engine/voe_network_impl.cc
-@@ -467,17 +467,17 @@ int VoENetworkImpl::SetSendTOS(int channel,
- int DSCP,
- int priority,
- bool useSetSockopt)
- {
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "SetSendTOS(channel=%d, DSCP=%d, useSetSockopt=%d)",
- channel, DSCP, useSetSockopt);
-
--#if !defined(_WIN32) && !defined(WEBRTC_LINUX) && !defined(WEBRTC_MAC)
-+#if !defined(_WIN32) && !defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) && !defined(WEBRTC_MAC)
- _shared->SetLastError(VE_FUNC_NOT_SUPPORTED, kTraceWarning,
- "SetSendTOS() is not supported on this platform");
- return -1;
- #endif
-
- #ifndef WEBRTC_EXTERNAL_TRANSPORT
- if (!_shared->statistics().Initialized())
- {
-@@ -523,17 +523,17 @@ int VoENetworkImpl::SetSendTOS(int channel,
- return -1;
- }
- if (channelPtr->ExternalTransport())
- {
- _shared->SetLastError(VE_EXTERNAL_TRANSPORT_ENABLED, kTraceError,
- "SetSendTOS() external transport is enabled");
- return -1;
- }
--#if defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
-+#if defined(WEBRTC_LINUX) || defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
- useSetSockopt = true;
- WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_shared->instance_id(), -1),
- " force useSetSockopt=true since there is no alternative"
- " implementation");
- #endif
-
- return channelPtr->SetSendTOS(DSCP, priority, useSetSockopt);
- #else
-@@ -546,17 +546,17 @@ int VoENetworkImpl::SetSendTOS(int channel,
- int VoENetworkImpl::GetSendTOS(int channel,
- int& DSCP,
- int& priority,
- bool& useSetSockopt)
- {
- WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
- "GetSendTOS(channel=%d)", channel);
-
--#if !defined(_WIN32) && !defined(WEBRTC_LINUX) && !defined(WEBRTC_MAC)
-+#if !defined(_WIN32) && !defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) && !defined(WEBRTC_MAC)
- _shared->SetLastError(VE_FUNC_NOT_SUPPORTED, kTraceWarning,
- "GetSendTOS() is not supported on this platform");
- return -1;
- #endif
- #ifndef WEBRTC_EXTERNAL_TRANSPORT
- if (!_shared->statistics().Initialized())
- {
- _shared->SetLastError(VE_NOT_INITED, kTraceError);
-diff --git media/webrtc/trunk/webrtc/voice_engine/voice_engine_defines.h media/webrtc/trunk/webrtc/voice_engine/voice_engine_defines.h
-index 7d4c729..4104719 100644
---- media/webrtc/trunk/webrtc/voice_engine/voice_engine_defines.h
-+++ media/webrtc/trunk/webrtc/voice_engine/voice_engine_defines.h
-@@ -409,41 +409,43 @@ namespace webrtc
-
- #else
- #define ANDROID_NOT_SUPPORTED(stat)
- #endif // #ifdef WEBRTC_LINUX
-
- // *** WEBRTC_MAC ***
- // including iPhone
-
--#ifdef WEBRTC_MAC
-+#if defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
-
- #include <pthread.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <errno.h>
- #include <sys/stat.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <sched.h>
- #include <sys/time.h>
- #include <time.h>
-+#if !defined(WEBRTC_BSD)
- #include <AudioUnit/AudioUnit.h>
- #if !defined(WEBRTC_IOS)
- #include <CoreServices/CoreServices.h>
- #include <CoreAudio/CoreAudio.h>
- #include <AudioToolbox/DefaultAudioOutput.h>
- #include <AudioToolbox/AudioConverter.h>
- #include <CoreAudio/HostTime.h>
- #endif
-+#endif
-
- #define DWORD unsigned long int
- #define WINAPI
- #define LPVOID void *
- #define FALSE 0
- #define TRUE 1
- #define SOCKADDR_IN struct sockaddr_in
- #define UINT unsigned int
-@@ -526,13 +528,13 @@ namespace webrtc
- // Defines
- // ----------------------------------------------------------------------------
-
- #define IPHONE_NOT_SUPPORTED(stat)
- #endif
-
- #else
- #define IPHONE_NOT_SUPPORTED(stat)
--#endif // #ifdef WEBRTC_MAC
-+#endif // #if defined(WEBRTC_BSD) || defined(WEBRTC_MAC)
-
-
-
- #endif // WEBRTC_VOICE_ENGINE_VOICE_ENGINE_DEFINES_H
diff --git media/webrtc/trunk/tools/gyp/pylib/gyp/generator/mozmake.py media/webrtc/trunk/tools/gyp/pylib/gyp/generator/mozmake.py
index 338d0b7..2241d41 100644
--- media/webrtc/trunk/tools/gyp/pylib/gyp/generator/mozmake.py
diff --git a/www/firefox/files/patch-bug844818 b/www/firefox/files/patch-bug844818
deleted file mode 100644
index 87151264c032..000000000000
--- a/www/firefox/files/patch-bug844818
+++ /dev/null
@@ -1,126 +0,0 @@
-diff --git configure.in configure.in
-index 7cd6e17..a1dbdf7 100644
---- configure.in
-+++ configure.in
-@@ -9106,6 +9106,18 @@ elif test "${OS_TARGET}" = "Android"; th
- fi
- fi
-
-+# Keep libcubeb and audio_device backends in sync
-+if test -n "$MOZ_ALSA"; then
-+ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_alsa_audio=1"
-+else
-+ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_alsa_audio=0"
-+fi
-+if test -n "$MOZ_PULSEAUDIO"; then
-+ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_pulse_audio=1"
-+else
-+ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D include_pulse_audio=0"
-+fi
-+
- # Don't try to compile sse4.1 code if toolchain doesn't support
- if test -z "$HAVE_TOOLCHAIN_SUPPORT_MSSE4_1"; then
- EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D yuv_disable_asm=1"
-diff --git media/webrtc/trunk/webrtc/modules/audio_device/audio_device.gypi media/webrtc/trunk/webrtc/modules/audio_device/audio_device.gypi
-index 8457737..dfc83ff 100644
---- media/webrtc/trunk/webrtc/modules/audio_device/audio_device.gypi
-+++ media/webrtc/trunk/webrtc/modules/audio_device/audio_device.gypi
-@@ -45,11 +45,15 @@
- 'dummy/audio_device_utility_dummy.h',
- ],
- 'conditions': [
-- ['OS=="linux"', {
-+ ['include_alsa_audio==1 or include_pulse_audio==1', {
- 'include_dirs': [
- 'linux',
- ],
-- }], # OS==linux
-+ 'defines': [
-+ # avoid pointless rename
-+ 'WEBRTC_LINUX',
-+ ],
-+ }], # include_alsa_audio==1 or include_pulse_audio==1
- ['OS=="ios"', {
- 'include_dirs': [
- 'ios',
-@@ -74,14 +78,8 @@
- }],
- ['include_internal_audio_device==1', {
- 'sources': [
-- 'linux/alsasymboltable_linux.cc',
-- 'linux/alsasymboltable_linux.h',
-- 'linux/audio_device_alsa_linux.cc',
-- 'linux/audio_device_alsa_linux.h',
- 'linux/audio_device_utility_linux.cc',
- 'linux/audio_device_utility_linux.h',
-- 'linux/audio_mixer_manager_alsa_linux.cc',
-- 'linux/audio_mixer_manager_alsa_linux.h',
- 'linux/latebindingsymboltable_linux.cc',
- 'linux/latebindingsymboltable_linux.h',
- 'mac/audio_device_mac.cc',
-@@ -116,28 +114,36 @@
- },
- }],
- ['OS=="linux"', {
-- 'defines': [
-- 'LINUX_ALSA',
-- ],
- 'link_settings': {
- 'libraries': [
- '-ldl',
- ],
- },
-- 'conditions': [
-- ['include_pulse_audio==1', {
-- 'defines': [
-- 'LINUX_PULSE',
-- ],
-- 'sources': [
-- 'linux/audio_device_pulse_linux.cc',
-- 'linux/audio_device_pulse_linux.h',
-- 'linux/audio_mixer_manager_pulse_linux.cc',
-- 'linux/audio_mixer_manager_pulse_linux.h',
-- 'linux/pulseaudiosymboltable_linux.cc',
-- 'linux/pulseaudiosymboltable_linux.h',
-- ],
-- }],
-+ }],
-+ ['include_alsa_audio==1', {
-+ 'defines': [
-+ 'LINUX_ALSA',
-+ ],
-+ 'sources': [
-+ 'linux/alsasymboltable_linux.cc',
-+ 'linux/alsasymboltable_linux.h',
-+ 'linux/audio_device_alsa_linux.cc',
-+ 'linux/audio_device_alsa_linux.h',
-+ 'linux/audio_mixer_manager_alsa_linux.cc',
-+ 'linux/audio_mixer_manager_alsa_linux.h',
-+ ],
-+ }],
-+ ['include_pulse_audio==1', {
-+ 'defines': [
-+ 'LINUX_PULSE',
-+ ],
-+ 'sources': [
-+ 'linux/audio_device_pulse_linux.cc',
-+ 'linux/audio_device_pulse_linux.h',
-+ 'linux/audio_mixer_manager_pulse_linux.cc',
-+ 'linux/audio_mixer_manager_pulse_linux.h',
-+ 'linux/pulseaudiosymboltable_linux.cc',
-+ 'linux/pulseaudiosymboltable_linux.h',
- ],
- }],
- ['OS=="mac"', {
-diff --git media/webrtc/webrtc_config.gypi media/webrtc/webrtc_config.gypi
-index b504d3d..e2eb127 100644
---- media/webrtc/webrtc_config.gypi
-+++ media/webrtc/webrtc_config.gypi
-@@ -9,7 +9,6 @@
- 'include_internal_video_render': 0,
- 'clang_use_chrome_plugins': 0,
- 'enable_protobuf': 0,
-- 'include_pulse_audio': 0,
- 'include_tests': 0,
- 'use_system_libjpeg': 1,
- 'use_system_libvpx': 1,
diff --git a/www/firefox/files/patch-bug862759 b/www/firefox/files/patch-bug862759
deleted file mode 100644
index c6ff6607f75c..000000000000
--- a/www/firefox/files/patch-bug862759
+++ /dev/null
@@ -1,10 +0,0 @@
---- js/src/frontend/ParseMaps.cpp~
-+++ js/src/frontend/ParseMaps.cpp
-@@ -134,5 +134,5 @@ frontend::InitAtomMap(JSContext *cx, frontend::AtomIndexMap *indices, HeapPtrAto
- }
- }
-
--template class AtomDecls<FullParseHandler>;
--template class AtomDecls<SyntaxParseHandler>;
-+template class frontend::AtomDecls<FullParseHandler>;
-+template class frontend::AtomDecls<SyntaxParseHandler>;
diff --git a/www/firefox/files/patch-bug876156 b/www/firefox/files/patch-bug876156
new file mode 100644
index 000000000000..84ecf6170671
--- /dev/null
+++ b/www/firefox/files/patch-bug876156
@@ -0,0 +1,13 @@
+diff --git mfbt/Atomics.h mfbt/Atomics.h
+index d79af6c..40b9336 100644
+--- mfbt/Atomics.h
++++ mfbt/Atomics.h
+@@ -35,7 +35,7 @@
+ */
+ # if !defined(__linux__) && !defined(__OpenBSD__) && \
+ (__cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)) && \
+- __has_include(<atomic>)
++ __has_include_next(<atomic>)
+ # define MOZ_HAVE_CXX11_ATOMICS
+ # endif
+ /*
diff --git a/www/firefox/files/patch-bug886181 b/www/firefox/files/patch-bug886181
new file mode 100644
index 000000000000..ed1c4df8348b
--- /dev/null
+++ b/www/firefox/files/patch-bug886181
@@ -0,0 +1,11 @@
+--- modules/libpref/src/init/all.js~
++++ modules/libpref/src/init/all.js
+@@ -193,7 +193,7 @@ pref("media.webm.enabled", true);
+ pref("media.dash.enabled", false);
+ #endif
+ #ifdef MOZ_GSTREAMER
+-pref("media.gstreamer.enabled", false);
++pref("media.gstreamer.enabled", true);
+ #endif
+ #ifdef MOZ_WEBRTC
+ pref("media.navigator.enabled", true);
diff --git a/www/firefox/files/patch-bug889699 b/www/firefox/files/patch-bug889699
new file mode 100644
index 000000000000..fef97da4ac50
--- /dev/null
+++ b/www/firefox/files/patch-bug889699
@@ -0,0 +1,175 @@
+commit 7eb5827
+Author: Edwin Flores <eflores@mozilla.com>
+Date: Sat Jul 20 12:03:08 2013 +1200
+
+ Bug 889699 - Make gstreamer backend return more accurate results for canPlayType() r=alessandro.d
+---
+ content/media/gstreamer/GStreamerFormatHelper.cpp | 90 +++++++++++++++++------
+ 1 file changed, 66 insertions(+), 24 deletions(-)
+
+diff --git content/media/gstreamer/GStreamerFormatHelper.cpp content/media/gstreamer/GStreamerFormatHelper.cpp
+index f05ff8f..39f1fdf 100644
+--- content/media/gstreamer/GStreamerFormatHelper.cpp
++++ content/media/gstreamer/GStreamerFormatHelper.cpp
+@@ -6,7 +6,7 @@
+
+ #include "GStreamerFormatHelper.h"
+ #include "nsCharSeparatedTokenizer.h"
+-#include "nsXPCOMStrings.h"
++#include "nsString.h"
+ #include "GStreamerLoader.h"
+
+ #define ENTRY_FORMAT(entry) entry[0]
+@@ -36,7 +36,7 @@ void GStreamerFormatHelper::Shutdown() {
+ }
+ }
+
+-char const *const GStreamerFormatHelper::mContainers[6][2] = {
++static char const *const sContainers[6][2] = {
+ {"video/mp4", "video/quicktime"},
+ {"video/quicktime", "video/quicktime"},
+ {"audio/mp4", "audio/x-m4a"},
+@@ -45,7 +45,7 @@ char const *const GStreamerFormatHelper::mContainers[6][2] = {
+ {"audio/mp3", "audio/mpeg, mpegversion=(int)1"},
+ };
+
+-char const *const GStreamerFormatHelper::mCodecs[9][2] = {
++static char const *const sCodecs[9][2] = {
+ {"avc1.42E01E", "video/x-h264"},
+ {"avc1.42001E", "video/x-h264"},
+ {"avc1.58A01E", "video/x-h264"},
+@@ -57,6 +57,15 @@ char const *const GStreamerFormatHelper::mCodecs[9][2] = {
+ {"mp3", "audio/mpeg, mpegversion=(int)1"},
+ };
+
++static char const * const sDefaultCodecCaps[][2] = {
++ {"video/mp4", "video/x-h264"},
++ {"video/quicktime", "video/x-h264"},
++ {"audio/mp4", "audio/mpeg, mpegversion=(int)4"},
++ {"audio/x-m4a", "audio/mpeg, mpegversion=(int)4"},
++ {"audio/mp3", "audio/mpeg, layer=(int)3"},
++ {"audio/mpeg", "audio/mpeg, layer=(int)3"}
++};
++
+ GStreamerFormatHelper::GStreamerFormatHelper()
+ : mFactories(nullptr),
+ mCookie(static_cast<uint32_t>(-1))
+@@ -66,15 +75,15 @@ GStreamerFormatHelper::GStreamerFormatHelper()
+ }
+
+ mSupportedContainerCaps = gst_caps_new_empty();
+- for (unsigned int i = 0; i < G_N_ELEMENTS(mContainers); i++) {
+- const char* capsString = mContainers[i][1];
++ for (unsigned int i = 0; i < G_N_ELEMENTS(sContainers); i++) {
++ const char* capsString = sContainers[i][1];
+ GstCaps* caps = gst_caps_from_string(capsString);
+ gst_caps_append(mSupportedContainerCaps, caps);
+ }
+
+ mSupportedCodecCaps = gst_caps_new_empty();
+- for (unsigned int i = 0; i < G_N_ELEMENTS(mCodecs); i++) {
+- const char* capsString = mCodecs[i][1];
++ for (unsigned int i = 0; i < G_N_ELEMENTS(sCodecs); i++) {
++ const char* capsString = sCodecs[i][1];
+ GstCaps* caps = gst_caps_from_string(capsString);
+ gst_caps_append(mSupportedCodecCaps, caps);
+ }
+@@ -92,6 +101,41 @@ GStreamerFormatHelper::~GStreamerFormatHelper() {
+ g_list_free(mFactories);
+ }
+
++static GstCaps *
++GetContainerCapsFromMIMEType(const char *aType) {
++ /* convert aMIMEType to gst container caps */
++ const char* capsString = nullptr;
++ for (uint32_t i = 0; i < G_N_ELEMENTS(sContainers); i++) {
++ if (!strcmp(ENTRY_FORMAT(sContainers[i]), aType)) {
++ capsString = ENTRY_CAPS(sContainers[i]);
++ break;
++ }
++ }
++
++ if (!capsString) {
++ /* we couldn't find any matching caps */
++ return nullptr;
++ }
++
++ return gst_caps_from_string(capsString);
++}
++
++static GstCaps *
++GetDefaultCapsFromMIMEType(const char *aType) {
++ GstCaps *caps = GetContainerCapsFromMIMEType(aType);
++
++ for (uint32_t i = 0; i < G_N_ELEMENTS(sDefaultCodecCaps); i++) {
++ if (!strcmp(sDefaultCodecCaps[i][0], aType)) {
++ GstCaps *tmp = gst_caps_from_string(sDefaultCodecCaps[i][1]);
++
++ gst_caps_append(caps, tmp);
++ return caps;
++ }
++ }
++
++ return nullptr;
++}
++
+ bool GStreamerFormatHelper::CanHandleMediaType(const nsACString& aMIMEType,
+ const nsAString* aCodecs) {
+ if (!sLoadOK) {
+@@ -101,7 +145,15 @@ bool GStreamerFormatHelper::CanHandleMediaType(const nsACString& aMIMEType,
+ const char *type;
+ NS_CStringGetData(aMIMEType, &type, NULL);
+
+- GstCaps* caps = ConvertFormatsToCaps(type, aCodecs);
++ GstCaps *caps;
++ if (aCodecs && !aCodecs->IsEmpty()) {
++ caps = ConvertFormatsToCaps(type, aCodecs);
++ } else {
++ // Get a minimal set of codec caps for this MIME type we should support so
++ // that we don't overreport MIME types we are able to play.
++ caps = GetDefaultCapsFromMIMEType(type);
++ }
++
+ if (!caps) {
+ return false;
+ }
+@@ -118,21 +170,11 @@ GstCaps* GStreamerFormatHelper::ConvertFormatsToCaps(const char* aMIMEType,
+
+ unsigned int i;
+
+- /* convert aMIMEType to gst container caps */
+- const char* capsString = nullptr;
+- for (i = 0; i < G_N_ELEMENTS(mContainers); i++) {
+- if (!strcmp(ENTRY_FORMAT(mContainers[i]), aMIMEType)) {
+- capsString = ENTRY_CAPS(mContainers[i]);
+- break;
+- }
+- }
+-
+- if (!capsString) {
+- /* we couldn't find any matching caps */
++ GstCaps *caps = GetContainerCapsFromMIMEType(aMIMEType);
++ if (!caps) {
+ return nullptr;
+ }
+
+- GstCaps* caps = gst_caps_from_string(capsString);
+ /* container only */
+ if (!aCodecs) {
+ return caps;
+@@ -141,11 +183,11 @@ GstCaps* GStreamerFormatHelper::ConvertFormatsToCaps(const char* aMIMEType,
+ nsCharSeparatedTokenizer tokenizer(*aCodecs, ',');
+ while (tokenizer.hasMoreTokens()) {
+ const nsSubstring& codec = tokenizer.nextToken();
+- capsString = nullptr;
++ const char *capsString = nullptr;
+
+- for (i = 0; i < G_N_ELEMENTS(mCodecs); i++) {
+- if (codec.EqualsASCII(ENTRY_FORMAT(mCodecs[i]))) {
+- capsString = ENTRY_CAPS(mCodecs[i]);
++ for (i = 0; i < G_N_ELEMENTS(sCodecs); i++) {
++ if (codec.EqualsASCII(ENTRY_FORMAT(sCodecs[i]))) {
++ capsString = ENTRY_CAPS(sCodecs[i]);
+ break;
+ }
+ }
diff --git a/www/firefox/files/patch-bug893397 b/www/firefox/files/patch-bug893397
index b9bd05aaa7f3..4d755c2ebb17 100644
--- a/www/firefox/files/patch-bug893397
+++ b/www/firefox/files/patch-bug893397
@@ -11,27 +11,27 @@ index 549ad06..2878d9f 100644
NECKO_WIFI=1
;;
Linux)
-diff --git netwerk/wifi/Makefile.in netwerk/wifi/Makefile.in
+diff --git netwerk/wifi/moz.build netwerk/wifi/moz.build
index 07b01de..11706af 100644
---- netwerk/wifi/Makefile.in
-+++ netwerk/wifi/Makefile.in
-@@ -32,6 +32,10 @@ CPPSRCS += nsWifiScannerMac.cpp
- CMMSRCS = osx_corewlan.mm
- endif
-
-+ifeq ($(OS_ARCH),FreeBSD)
-+CPPSRCS += nsWifiScannerFreeBSD.cpp
-+endif
-+
- ifneq (,$(filter WINNT,$(OS_ARCH)))
- CPPSRCS += nsWifiScannerWin.cpp
- endif
+--- netwerk/wifi/moz.build
++++ netwerk/wifi/moz.build
+@@ -34,6 +34,10 @@ if CONFIG['OS_ARCH'] == 'Darwin':
+ CMMSRCS += [
+ 'osx_corewlan.mm',
+ ]
++elif CONFIG['OS_ARCH'] == 'FreeBSD':
++ CPP_SOURCES += [
++ 'nsWifiScannerFreeBSD.cpp',
++ ]
+ elif CONFIG['OS_ARCH'] == 'WINNT':
+ CPP_SOURCES += [
+ 'nsWifiScannerWin.cpp',
diff --git netwerk/wifi/nsWifiScannerFreeBSD.cpp netwerk/wifi/nsWifiScannerFreeBSD.cpp
new file mode 100644
index 0000000..80d4cb6
--- /dev/null
+++ netwerk/wifi/nsWifiScannerFreeBSD.cpp
-@@ -0,0 +1,171 @@
+@@ -0,0 +1,172 @@
+/* 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/. */
@@ -158,10 +158,11 @@ index 0000000..80d4cb6
+
+ // log the data
+ LOG(( "FreeBSD access point: "
-+ << "SSID: " << ssid << ", "
-+ << "MAC: " << isr->isr_bssid << ", "
-+ << "Strength: " << isr->isr_rssi ", "
-+ << "Channel: " << isr->isr_freq << "MHz" ));
++ "SSID: %s, MAC: %02x-%02x-%02x-%02x-%02x-%02x, "
++ "Strength: %d, Channel: %dMHz\n",
++ ssid, isr->isr_bssid[0], isr->isr_bssid[1], isr->isr_bssid[2],
++ isr->isr_bssid[3], isr->isr_bssid[4], isr->isr_bssid[5],
++ isr->isr_rssi, isr->isr_freq));
+
+ // increment pointers
+ len -= isr->isr_len;
diff --git a/www/firefox/files/patch-bug910875 b/www/firefox/files/patch-bug910875
new file mode 100644
index 000000000000..4f1d5a521e84
--- /dev/null
+++ b/www/firefox/files/patch-bug910875
@@ -0,0 +1,102 @@
+diff --git media/webrtc/trunk/webrtc/modules/audio_device/audio_device_impl.cc media/webrtc/trunk/webrtc/modules/audio_device/audio_device_impl.cc
+index f231b1e..6087696 100644
+--- media/webrtc/trunk/webrtc/modules/audio_device/audio_device_impl.cc
++++ media/webrtc/trunk/webrtc/modules/audio_device/audio_device_impl.cc
+@@ -16,7 +16,9 @@
+ #include <assert.h>
+ #include <string.h>
+
+-#if defined(_WIN32)
++#if defined(WEBRTC_DUMMY_AUDIO_BUILD)
++// do not include platform specific headers
++#elif defined(_WIN32)
+ #include "audio_device_utility_win.h"
+ #include "audio_device_wave_win.h"
+ #if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
+@@ -32,14 +34,8 @@
+ #include <stdlib.h>
+ #include "audio_device_utility_android.h"
+ #include "audio_device_jni_android.h"
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+ #include "audio_device_utility_linux.h"
+- #if defined(LINUX_ALSA)
+- #include "audio_device_alsa_linux.h"
+- #endif
+- #if defined(LINUX_PULSE)
+- #include "audio_device_pulse_linux.h"
+- #endif
+ #elif defined(WEBRTC_IOS)
+ #include "audio_device_utility_ios.h"
+ #include "audio_device_ios.h"
+@@ -47,6 +43,12 @@
+ #include "audio_device_utility_mac.h"
+ #include "audio_device_mac.h"
+ #endif
++#if defined(LINUX_ALSA)
++ #include "audio_device_alsa_linux.h"
++#endif
++#if defined(LINUX_PULSE)
++ #include "audio_device_pulse_linux.h"
++#endif
+ #include "audio_device_dummy.h"
+ #include "audio_device_utility_dummy.h"
+ #include "critical_section_wrapper.h"
+@@ -161,7 +163,7 @@ WebRtc_Word32 AudioDeviceModuleImpl::Che
+ #elif defined(WEBRTC_ANDROID)
+ platform = kPlatformAndroid;
+ WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "current platform is ANDROID");
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+ platform = kPlatformLinux;
+ WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "current platform is LINUX");
+ #elif defined(WEBRTC_IOS)
+@@ -309,7 +311,7 @@ int32_t AudioDeviceModuleImpl::CreatePlatformSpecificObjects()
+
+ // Create the *Linux* implementation of the Audio Device
+ //
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+ if ((audioLayer == kLinuxPulseAudio) || (audioLayer == kPlatformDefaultAudio))
+ {
+ #if defined(LINUX_PULSE)
+@@ -355,7 +357,7 @@ int32_t AudioDeviceModuleImpl::CreatePlatformSpecificObjects()
+ //
+ ptrAudioDeviceUtility = new AudioDeviceUtilityLinux(Id());
+ }
+-#endif // #if defined(WEBRTC_LINUX)
++#endif // #if defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+
+ // Create the *iPhone* implementation of the Audio Device
+ //
+diff --git media/webrtc/trunk/webrtc/modules/audio_device/test/audio_device_test_api.cc media/webrtc/trunk/webrtc/modules/audio_device/test/audio_device_test_api.cc
+index defd7f8..906c4a2 100644
+--- media/webrtc/trunk/webrtc/modules/audio_device/test/audio_device_test_api.cc
++++ media/webrtc/trunk/webrtc/modules/audio_device/test/audio_device_test_api.cc
+@@ -197,7 +197,7 @@ class AudioDeviceAPITest: public testing::Test {
+ // Create default implementation instance
+ EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
+ kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL);
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+ EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
+ kId, AudioDeviceModule::kWindowsWaveAudio)) == NULL);
+ EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
+@@ -1690,7 +1690,7 @@ TEST_F(AudioDeviceAPITest, CPULoad) {
+
+ // TODO(kjellander): Fix flakiness causing failures on Windows.
+ // TODO(phoglund): Fix flakiness causing failures on Linux.
+-#if !defined(_WIN32) && !defined(WEBRTC_LINUX)
++#if !defined(_WIN32) && !defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ TEST_F(AudioDeviceAPITest, StartAndStopRawOutputFileRecording) {
+ // NOTE: this API is better tested in a functional test
+ CheckInitialPlayoutStates();
+@@ -1759,7 +1759,7 @@ TEST_F(AudioDeviceAPITest, StartAndStopRawInputFileRecording) {
+ // - size of raw_input_not_recording.pcm shall be 0
+ // - size of raw_input_not_recording.pcm shall be > 0
+ }
+-#endif // !WIN32 && !WEBRTC_LINUX
++#endif // !WIN32 && !WEBRTC_LINUX && !defined(WEBRTC_BSD)
+
+ TEST_F(AudioDeviceAPITest, RecordingSampleRate) {
+ uint32_t sampleRate(0);
diff --git a/www/firefox/files/patch-bug916216 b/www/firefox/files/patch-bug916216
new file mode 100644
index 000000000000..ca82967fa78c
--- /dev/null
+++ b/www/firefox/files/patch-bug916216
@@ -0,0 +1,39 @@
+--- media/webrtc/trunk/build/build_config.h~
++++ media/webrtc/trunk/build/build_config.h
+@@ -37,9 +37,15 @@
+ #elif defined(_WIN32)
+ #define OS_WIN 1
+ #define TOOLKIT_VIEWS 1
+-#elif defined(__FreeBSD__)
++#elif defined(__DragonFly__)
++#define OS_DRAGONFLY 1
++#define TOOLKIT_GTK
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ #define OS_FREEBSD 1
+ #define TOOLKIT_GTK
++#elif defined(__NetBSD__)
++#define OS_NETBSD 1
++#define TOOLKIT_GTK
+ #elif defined(__OpenBSD__)
+ #define OS_OPENBSD 1
+ #define TOOLKIT_GTK
+@@ -56,15 +62,15 @@
+
+ // For access to standard BSD features, use OS_BSD instead of a
+ // more specific macro.
+-#if defined(OS_FREEBSD) || defined(OS_OPENBSD)
++#if defined(OS_DRAGONFLY) || defined(OS_FREEBSD) \
++ || defined(OS_NETBSD) || defined(OS_OPENBSD)
+ #define OS_BSD 1
+ #endif
+
+ // For access to standard POSIXish features, use OS_POSIX instead of a
+ // more specific macro.
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_FREEBSD) || \
+- defined(OS_OPENBSD) || defined(OS_SOLARIS) || defined(OS_ANDROID) || \
+- defined(OS_NACL)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
++ defined(OS_SOLARIS) || defined(OS_ANDROID) || defined(OS_NACL)
+ #define OS_POSIX 1
+ #endif
+
diff --git a/www/firefox/files/patch-bug916589 b/www/firefox/files/patch-bug916589
new file mode 100644
index 000000000000..664a7b167314
--- /dev/null
+++ b/www/firefox/files/patch-bug916589
@@ -0,0 +1,40 @@
+diff --git media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h
+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,14 @@
+ */
+
+-#ifndef _SYS_QUEUE_H_
++#if (defined(BSD) && !defined(__OpenBSD__)) || defined(DARWIN)
++#include_next <sys/queue.h>
++#elif !defined(_SYS_QUEUE_H_)
+ #define _SYS_QUEUE_H_
+
+-#if !defined(__FreeBSD__) && !defined(DARWIN)
+ #include <stddef.h>
+-#define __offsetof offsetof
++
++#ifndef offsetof
++#define offsetof(type, field) ((size_t)(&((type *)0)->field))
+ #endif
+
+ #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
+@@ -43,8 +46,6 @@
+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+-// #define __offsetof(type, field) ((size_t)(&((type *)0)->field))
+-
+ /*
+ * This file defines four types of data structures: singly-linked lists,
+ * singly-linked tail queues, lists and tail queues.
+@@ -285,7 +286,7 @@ struct { \
+ (STAILQ_EMPTY((head)) ? \
+ NULL : \
+ ((struct type *) \
+- ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
++ ((char *)((head)->stqh_last) - offsetof(struct type, field))))
+
+ #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
+
diff --git a/www/firefox/files/patch-build-pgo-profileserver.py b/www/firefox/files/patch-build-pgo-profileserver.py
index fdab788f8fe4..31a3a0889c0a 100644
--- a/www/firefox/files/patch-build-pgo-profileserver.py
+++ b/www/firefox/files/patch-build-pgo-profileserver.py
@@ -1,18 +1,11 @@
--- build/pgo/profileserver.py.orig 2011-02-24 21:49:47.000000000 +0100
+++ build/pgo/profileserver.py 2011-02-24 21:50:30.000000000 +0100
-@@ -43,13 +43,13 @@ if __name__ == '__main__':
- t.setDaemon(True) # don't hang on exit
- t.start()
-
-- automation.setServerInfo("localhost", PORT)
-+ automation.setServerInfo("127.0.0.1", PORT)
- automation.initializeProfile(PROFILE_DIRECTORY)
- browserEnv = automation.environment()
- browserEnv["XPCOM_DEBUG_BREAK"] = "warn"
- browserEnv["MOZ_JAR_LOG_FILE"] = MOZ_JAR_LOG_FILE
+@@ -59,7 +59,7 @@ if __name__ == '__main__':
+ env["MOZ_JAR_LOG_FILE"] = os.path.abspath(jarlog)
+ print "jarlog: %s" % env["MOZ_JAR_LOG_FILE"]
-- url = "http://localhost:%d/index.html" % PORT
-+ url = "http://127.0.0.1:%d/index.html" % PORT
- appPath = os.path.join(SCRIPT_DIR, automation.DEFAULT_APP)
- status = automation.runApp(url, browserEnv, appPath, PROFILE_DIRECTORY, {},
- debuggerInfo=debuggerInfo,
+- cmdargs = ["http://localhost:%d/index.html" % PORT]
++ cmdargs = ["http://127.0.0.1:%d/index.html" % PORT]
+ runner = FirefoxRunner(profile=profile,
+ binary=build.get_binary_path(where="staged-package"),
+ cmdargs=cmdargs,
diff --git a/www/firefox/files/patch-duckduckgo b/www/firefox/files/patch-duckduckgo
index de6b18f3afc0..bc3a7e321f41 100644
--- a/www/firefox/files/patch-duckduckgo
+++ b/www/firefox/files/patch-duckduckgo
@@ -1,11 +1,7 @@
diff -r f2fa4ae74ee1 browser/locales/en-US/chrome/browser-region/region.properties
--- browser/locales/en-US/chrome/browser-region/region.properties Mon Oct 24 22:54:18 2011 +0300
+++ browser/locales/en-US/chrome/browser-region/region.properties Tue Oct 25 21:13:40 2011 -0400
-@@ -4,15 +4,16 @@
- # Default search engine
- browser.search.defaultenginename=Google
-
- # Search engine order (order displayed in the search bar dropdown)s
+@@ -9,6 +9,7 @@
browser.search.order.1=Google
browser.search.order.2=Yahoo
browser.search.order.3=Bing
@@ -13,11 +9,6 @@ diff -r f2fa4ae74ee1 browser/locales/en-US/chrome/browser-region/region.properti
# This is the default set of web based feed handlers shown in the reader
# selection UI
- browser.contentHandlers.types.0.title=My Yahoo!
- browser.contentHandlers.types.0.uri=http://add.my.yahoo.com/rss?url=%s
-
- # increment this number when anything gets changed in the list below. This will
- # cause Firefox to re-read these prefs and inject any new handlers into the
--- /dev/null 2013-02-09 00:33:00.000000000 +0100
+++ browser/locales/en-US/searchplugins/duckduckgo.xml 2013-02-09 00:40:19.000000000 +0100
@@ -0,0 +1,11 @@
diff --git a/www/firefox/files/patch-js-src-methodjit-MethodJIT.cpp b/www/firefox/files/patch-js-src-methodjit-MethodJIT.cpp
deleted file mode 100644
index d29c15ccc05a..000000000000
--- a/www/firefox/files/patch-js-src-methodjit-MethodJIT.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
---- js/src/methodjit/MethodJIT.cpp~
-+++ js/src/methodjit/MethodJIT.cpp
-@@ -171,7 +171,7 @@
-
- JS_STATIC_ASSERT(offsetof(FrameRegs, sp) == 0);
-
--#if defined(__linux__) && defined(JS_CPU_X64)
-+#if defined(__ELF__) && defined(JS_CPU_X64)
- # define SYMBOL_STRING_RELOC(name) #name "@plt"
- #else
- # define SYMBOL_STRING_RELOC(name) SYMBOL_STRING(name)
-@@ -149,7 +149,7 @@
-
- #if defined(XP_MACOSX)
- # define HIDE_SYMBOL(name) ".private_extern _" #name
--#elif defined(__linux__)
-+#elif defined(__ELF__)
- # define HIDE_SYMBOL(name) ".hidden" #name
- #else
- # define HIDE_SYMBOL(name)
diff --git a/www/firefox/files/patch-media-webrtc-trunk-testing-gtest-include-gtest-internal-gtest-port.h b/www/firefox/files/patch-media-webrtc-trunk-testing-gtest-include-gtest-internal-gtest-port.h
deleted file mode 100644
index 14c7d3a684a9..000000000000
--- a/www/firefox/files/patch-media-webrtc-trunk-testing-gtest-include-gtest-internal-gtest-port.h
+++ /dev/null
@@ -1,17 +0,0 @@
---- media/webrtc/trunk/testing/gtest/include/gtest/internal/gtest-port.h.orig 2012-12-09 16:28:45.641625374 +0100
-+++ media/webrtc/trunk/testing/gtest/include/gtest/internal/gtest-port.h 2012-12-09 19:09:11.664625374 +0100
-@@ -490,10 +490,10 @@
- # define GTEST_ENV_HAS_TR1_TUPLE_ 1
- # endif
-
--// C++11 specifies that <tuple> provides std::tuple. Users can't use
--// gtest in C++11 mode until their standard library is at least that
--// compliant.
--# if GTEST_LANG_CXX11
-+// C++11 specifies that <tuple> provides std::tuple. Use that if gtest is used
-+// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6
-+// can build with clang but need to use gcc4.2's libstdc++).
-+# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325)
- # define GTEST_ENV_HAS_STD_TUPLE_ 1
- # endif
-
diff --git a/www/firefox/files/patch-no-videoio.h b/www/firefox/files/patch-no-videoio.h
new file mode 100644
index 000000000000..c20c0e039827
--- /dev/null
+++ b/www/firefox/files/patch-no-videoio.h
@@ -0,0 +1,22 @@
+--- 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/libxul/Makefile b/www/libxul/Makefile
index 1a51c10641cf..0623fa36bda6 100644
--- a/www/libxul/Makefile
+++ b/www/libxul/Makefile
@@ -2,7 +2,7 @@
# $FreeBSD$
PORTNAME= libxul
-DISTVERSION= 17.0.8
+DISTVERSION= 24.0
CATEGORIES?= www devel
MASTER_SITES= MOZILLA/firefox/releases/${DISTVERSION}esr/source
DISTNAME= firefox-${DISTVERSION}esr.source
@@ -10,14 +10,16 @@ DISTNAME= firefox-${DISTVERSION}esr.source
MAINTAINER?= gecko@FreeBSD.org
COMMENT?= Mozilla runtime package that can be used to bootstrap XUL+XPCOM apps
-BUILD_DEPENDS= nspr>=4.9.2:${PORTSDIR}/devel/nspr \
- nss>=3.13.6_1:${PORTSDIR}/security/nss \
- sqlite3>=3.7.13:${PORTSDIR}/databases/sqlite3 \
+BUILD_DEPENDS= nspr>=4.10:${PORTSDIR}/devel/nspr \
+ nss>=3.15:${PORTSDIR}/security/nss \
+ sqlite3>=3.7.16.1:${PORTSDIR}/databases/sqlite3 \
${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3 \
cairo>=1.10.2_1,1:${PORTSDIR}/graphics/cairo \
+ v4l_compat>0:${PORTSDIR}/multimedia/v4l_compat \
unzip:${PORTSDIR}/archivers/unzip
+LIB_DEPENDS= libv4l2.so:${PORTSDIR}/multimedia/libv4l
-WRKSRC= ${WRKDIR}/mozilla-esr17
+WRKSRC= ${WRKDIR}/mozilla-esr24
CONFLICTS= libxul-1.9.*
USE_AUTOTOOLS= autoconf213:env
@@ -29,8 +31,8 @@ WANT_PERL= yes
ALL_TARGET= default
GNU_CONFIGURE= yes
USE_BZIP2= yes
-USES= pkgconfig gmake
USE_GL= gl
+USE_DOS2UNIX= 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}
USE_LDCONFIG= ${PREFIX}/lib/${MOZILLA}
@@ -38,6 +40,7 @@ USE_LDCONFIG= ${PREFIX}/lib/${MOZILLA}
MOZ_OPTIONS?= --enable-application=xulrunner
MOZ_EXTENSIONS= default,cookie,permissions
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
@@ -45,7 +48,13 @@ PLIST_DIRSTRY= share/idl
MOZ_PKGCONFIG_FILES= libxul-embedding libxul mozilla-js \
mozilla-plugin
+OPTIONS_DEFAULT=GSTREAMER
+
.include "${.CURDIR}/../../www/firefox/Makefile.options"
+
+# OSS is gone after bug 852401
+OPTIONS_SINGLE_AUDIO:=${OPTIONS_SINGLE_AUDIO:S/OSS//}
+
.include <bsd.port.pre.mk>
.if ${USE_MOZILLA:M-nss}
@@ -53,6 +62,8 @@ MOZ_PKGCONFIG_FILES+= mozilla-nss
.endif
post-patch:
+ @${REINPLACE_CMD} -e '/MOZPNG/s/=[0-9]*/=10511/' \
+ ${WRKSRC}/configure.in
@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
${WRKSRC}/xulrunner/stub/nsXULStub.cpp
diff --git a/www/libxul/distinfo b/www/libxul/distinfo
index 8423f8c9a451..278ae2dcd950 100644
--- a/www/libxul/distinfo
+++ b/www/libxul/distinfo
@@ -1,2 +1,2 @@
-SHA256 (firefox-17.0.8esr.source.tar.bz2) = 87f846d0cc6e1b2f4c1baeb58d2123ffbc8c166a1ec81a3b1e0551fbbd6ef1e8
-SIZE (firefox-17.0.8esr.source.tar.bz2) = 90765879
+SHA256 (firefox-24.0esr.source.tar.bz2) = 3872f7c4c7b3f1f3f06dd3e4f7cc97b59a6857085af8f2df56820185e3d5cadb
+SIZE (firefox-24.0esr.source.tar.bz2) = 119722621
diff --git a/www/libxul/files/extra-bug780531 b/www/libxul/files/extra-bug780531
index aa3547c397a4..26859a9bde10 100644
--- a/www/libxul/files/extra-bug780531
+++ b/www/libxul/files/extra-bug780531
@@ -1,13 +1,24 @@
--- configure.in~
+++ configure.in
-@@ -5151,8 +5148,8 @@ fi
+@@ -5364,15 +5364,18 @@ AC_SUBST(MOZ_SRTP)
- AC_SUBST(MOZ_WEBRTC)
-
--case "$target_cpu" in
--arm*)
+ dnl Use integers over floats for audio on B2G and Android, because audio
+ dnl backends for those platforms don't support floats.
+-if test "$OS_TARGET" = "Android"; then
+case "$target" in
-+arm-*-linux*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*)
- MOZ_SAMPLE_TYPE_S16LE=1
- AC_DEFINE(MOZ_SAMPLE_TYPE_S16LE)
- AC_SUBST(MOZ_SAMPLE_TYPE_S16LE)
++*-android*|*-linuxandroid*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*)
+ MOZ_SAMPLE_TYPE_S16=1
+ AC_DEFINE(MOZ_SAMPLE_TYPE_S16)
+ AC_SUBST(MOZ_SAMPLE_TYPE_S16)
+-else
++;;
++*)
+ MOZ_SAMPLE_TYPE_FLOAT32=1
+ AC_DEFINE(MOZ_SAMPLE_TYPE_FLOAT32)
+ AC_SUBST(MOZ_SAMPLE_TYPE_FLOAT32)
+-fi
++;;
++esac
+
+ dnl ========================================================
+ dnl = Disable Speech API code
diff --git a/www/libxul/files/patch-alsapulse b/www/libxul/files/patch-alsapulse
deleted file mode 100644
index f0c38d347bea..000000000000
--- a/www/libxul/files/patch-alsapulse
+++ /dev/null
@@ -1,114 +0,0 @@
-diff --git configure.in configure.in
-index 5980b76..11f5f77 100644
---- configure.in
-+++ configure.in
-@@ -5600,13 +5600,25 @@ dnl ========================================================
- dnl = Check alsa availability on Linux if using sydneyaudio
- dnl ========================================================
-
-+MOZ_ARG_ENABLE_BOOL(alsa,
-+[ --enable-alsa Enable Alsa support (default on Linux)],
-+MOZ_ALSA=1,
-+MOZ_ALSA= MOZ_ALSA_FORCE=$enableval)
-+
- dnl If using sydneyaudio with Linux, ensure that the alsa library is available
--if test -n "$MOZ_SYDNEYAUDIO" -a "$OS_TARGET" = "Linux"; then
-+if test -n "$MOZ_SYDNEYAUDIO" -a "$OS_TARGET" = "Linux" -a "$MOZ_ALSA_FORCE" != "no"; then
-+ MOZ_ALSA=1
-+fi
-+
-+if test -n "$MOZ_ALSA"; then
-+ AC_DEFINE(MOZ_CUBEB)
- PKG_CHECK_MODULES(MOZ_ALSA, alsa, ,
- [echo "$MOZ_ALSA_PKG_ERRORS"
- AC_MSG_ERROR([Need alsa for Ogg, Wave or WebM decoding on Linux. Disable with --disable-ogg --disable-wave --disable-webm. (On Ubuntu, you might try installing the package libasound2-dev.)])])
- fi
-
-+AC_SUBST(MOZ_ALSA)
-+
- dnl ========================================================
- dnl = Enable PulseAudio
- dnl ========================================================
-diff --git media/libcubeb/src/Makefile.in media/libcubeb/src/Makefile.in
-index 5ab4dd8..c8df26f 100644
---- media/libcubeb/src/Makefile.in
-+++ media/libcubeb/src/Makefile.in
-@@ -24,10 +24,6 @@ endif
-
- ifeq ($(OS_TARGET),Android)
- # No Android implementation of libcubeb yet.
--else ifeq ($(OS_TARGET),Linux)
--CSRCS = \
-- cubeb_alsa.c \
-- $(NULL)
- endif
-
- ifeq ($(OS_TARGET),Darwin)
-@@ -42,6 +38,12 @@ CSRCS = \
- $(NULL)
- endif
-
-+ifdef MOZ_ALSA
-+CSRCS = \
-+ cubeb_alsa.c \
-+ $(NULL)
-+endif
-+
- ifdef MOZ_PULSEAUDIO
- CSRCS = \
- cubeb_pulse.c \
-diff --git media/libsydneyaudio/src/Makefile.in media/libsydneyaudio/src/Makefile.in
-index 8dda8ce..b19641d 100644
---- media/libsydneyaudio/src/Makefile.in
-+++ media/libsydneyaudio/src/Makefile.in
-@@ -30,10 +30,6 @@ else ifeq ($(MOZ_WIDGET_TOOLKIT),android)
- CSRCS = \
- sydney_audio_android.c \
- $(NULL)
--else ifeq ($(OS_ARCH),Linux)
--CSRCS = \
-- sydney_audio_alsa.c \
-- $(NULL)
- endif
-
- ifeq ($(OS_ARCH),WINNT)
-@@ -68,6 +64,18 @@ CSRCS = \
- $(NULL)
- endif
-
-+ifdef MOZ_ALSA
-+CSRCS = \
-+ sydney_audio_alsa.c \
-+ $(NULL)
-+endif
-+
-+ifdef MOZ_PULSEAUDIO
-+CSRCS = \
-+ sydney_audio_pulseaudio.c \
-+ $(NULL)
-+endif
-+
- ifeq ($(OS_ARCH),WINNT)
- OS_LIBS += winmm.lib
- endif
-diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in
-index 43384e9..e46a6e3 100644
---- toolkit/library/Makefile.in
-+++ toolkit/library/Makefile.in
-@@ -370,14 +370,11 @@ endif
-
- EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,gkmedias,$(DIST)/lib)
-
--ifdef MOZ_SYDNEYAUDIO
--ifeq ($(OS_ARCH),Linux)
-+ifneq (,$(MOZ_CUBEB)$(MOZ_SYDNEYAUDIO))
-+ifdef MOZ_ALSA
- EXTRA_DSO_LDOPTS += $(MOZ_ALSA_LIBS)
- endif
--endif
--
- ifdef MOZ_PULSEAUDIO
--ifdef MOZ_CUBEB
- EXTRA_DSO_LDOPTS += $(MOZ_PULSEAUDIO_LIBS)
- endif
- endif
diff --git a/www/libxul/files/patch-bug685258 b/www/libxul/files/patch-bug685258
deleted file mode 100644
index ead2d3858209..000000000000
--- a/www/libxul/files/patch-bug685258
+++ /dev/null
@@ -1,17 +0,0 @@
-# HG changeset patch
-# User Oleg Romashin <romaxa@gmail.com>
-# Parent a2291c212856ad27622416e83c8311b6a33b52f1
-Bug 685258 - Pulse audio backend does not check provided playback and crashes r=derf
-
-diff --git a/content/media/nsAudioStream.cpp b/content/media/nsAudioStream.cpp
---- content/media/nsAudioStream.cpp
-+++ content/media/nsAudioStream.cpp
-@@ -429,7 +429,7 @@ nsresult nsNativeAudioStream::Init(PRInt32 aNumChannels, PRInt32 aRate, SampleFo
- mFormat = aFormat;
-
- if (sa_stream_create_pcm(reinterpret_cast<sa_stream_t**>(&mAudioHandle),
-- NULL,
-+ "Mozilla",
- SA_MODE_WRONLY,
- SA_PCM_FORMAT_S16_NE,
- aRate,
diff --git a/www/libxul/files/patch-bug713802 b/www/libxul/files/patch-bug713802
deleted file mode 100644
index 7d3cc4dad110..000000000000
--- a/www/libxul/files/patch-bug713802
+++ /dev/null
@@ -1,163 +0,0 @@
-commit 20586fa
-Author: Karl Tomlinson <karlt+@karlt.net>
-Date: Thu Sep 27 18:35:06 2012 +1200
-
- b=713802 default enable GIO support and disable GnomeVFS r=glandium
-
- --HG--
- extra : transplant_source : wk%ADr%CA%8EN%AE%C93p/p%0A%26%0E%1D0%F20
----
- browser/confvars.sh | 2 +-
- configure.in | 20 ++++++++++----------
- xulrunner/confvars.sh | 2 +-
- 3 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git browser/confvars.sh browser/confvars.sh
-index 40ab494..eae5645 100755
---- browser/confvars.sh
-+++ browser/confvars.sh
-@@ -21,7 +21,7 @@ MOZ_SERVICES_AITC=1
- MOZ_SERVICES_NOTIFICATIONS=1
- MOZ_SERVICES_SYNC=1
- MOZ_APP_VERSION=$FIREFOX_VERSION
--MOZ_EXTENSIONS_DEFAULT=" gnomevfs"
-+MOZ_EXTENSIONS_DEFAULT=" gio"
- # MOZ_APP_DISPLAYNAME will be set by branding/configure.sh
- # Changing MOZ_*BRANDING_DIRECTORY requires a clobber to ensure correct results,
- # because branding dependencies are broken.
-diff --git configure.in configure.in
-index 87a9391..2118651 100644
---- configure.in
-+++ configure.in
-@@ -4846,21 +4846,21 @@ dnl ========================================================
-
- if test "$MOZ_X11"
- then
-- dnl build the gnomevfs extension by default only when the
-+ dnl build the GIO extension by default only when the
- dnl GTK2 toolkit is in use.
- if test "$MOZ_ENABLE_GTK2"
- then
-- MOZ_ENABLE_GNOMEVFS=1
-+ MOZ_ENABLE_GIO=1
- MOZ_ENABLE_GCONF=1
- fi
-
- dnl ========================================================
- dnl = GnomeVFS support module
- dnl ========================================================
-- MOZ_ARG_DISABLE_BOOL(gnomevfs,
-- [ --disable-gnomevfs Disable GnomeVFS support ],
-- MOZ_ENABLE_GNOMEVFS=,
-- MOZ_ENABLE_GNOMEVFS=force)
-+ MOZ_ARG_ENABLE_BOOL(gnomevfs,
-+ [ --enable-gnomevfs Enable GnomeVFS support (default: disabled)],
-+ MOZ_ENABLE_GNOMEVFS=force,
-+ MOZ_ENABLE_GNOMEVFS=)
-
- if test "$MOZ_ENABLE_GNOMEVFS"
- then
-@@ -4884,10 +4884,10 @@ then
- dnl ========================================================
- dnl = GIO support module
- dnl ========================================================
-- MOZ_ARG_ENABLE_BOOL(gio,
-- [ --enable-gio Enable GIO support (default: disabled)],
-- MOZ_ENABLE_GIO=force,
-- MOZ_ENABLE_GIO=)
-+ MOZ_ARG_DISABLE_BOOL(gio,
-+ [ --disable-gio Disable GIO support],
-+ MOZ_ENABLE_GIO=,
-+ MOZ_ENABLE_GIO=force)
-
- if test "$MOZ_ENABLE_GIO" -a "$MOZ_ENABLE_GTK2"
- then
-diff --git xulrunner/confvars.sh xulrunner/confvars.sh
-index 2fa6ead..5fe2c3d 100755
---- xulrunner/confvars.sh
-+++ xulrunner/confvars.sh
-@@ -10,5 +10,5 @@ MOZ_XULRUNNER=1
- MOZ_CHROME_FILE_FORMAT=omni
- MOZ_APP_VERSION=$MOZILLA_VERSION
- MOZ_PLACES=1
--MOZ_EXTENSIONS_DEFAULT=" gnomevfs"
-+MOZ_EXTENSIONS_DEFAULT=" gio"
- MOZ_URL_CLASSIFIER=1
-
-commit d884d75
-Author: Karl Tomlinson <karlt+@karlt.net>
-Date: Thu Sep 27 18:34:44 2012 +1200
-
- b=713802 disable gnomevfs extension without --enable-gnomevfs r=glandium
-
- --HG--
- extra : transplant_source : i%07%81%E9%90_%C1%05b%194%9B%1E%93%FC%03%279%F9%8A
----
- configure.in | 12 +++---------
- 1 file changed, 3 insertions(+), 9 deletions(-)
-
-diff --git configure.in configure.in
-index f2b4041..87a9391 100644
---- configure.in
-+++ configure.in
-@@ -4875,12 +4875,6 @@ then
- fi
- MOZ_ENABLE_GNOMEVFS=
- ])
-- else
-- if test `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
-- PKG_CHECK_MODULES(MOZ_GNOMEVFS, gnome-vfs-2.0 >= $GNOMEVFS_VERSION gnome-vfs-module-2.0 >= $GNOMEVFS_VERSION,[
-- MOZ_GNOMEVFS_LIBS=`echo $MOZ_GNOMEVFS_LIBS | sed 's/-llinc\>//'`
-- ])
-- fi
- fi
-
- AC_SUBST(MOZ_ENABLE_GNOMEVFS)
-@@ -5967,10 +5961,10 @@ MOZ_ARG_ENABLE_STRING(extensions,
- done],
- MOZ_EXTENSIONS="$MOZ_EXTENSIONS_DEFAULT")
-
--if test -z "$MOZ_ENABLE_GNOMEVFS" -a -z "$MOZ_GNOMEVFS_LIBS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
-+if test -z "$MOZ_ENABLE_GNOMEVFS" -a `echo "$MOZ_EXTENSIONS" | grep -c gnomevfs` -ne 0; then
- # Suppress warning on non-X11 platforms
- if test -n "$MOZ_X11"; then
-- AC_MSG_WARN([Cannot build gnomevfs without required libraries. Removing gnomevfs from MOZ_EXTENSIONS.])
-+ AC_MSG_WARN([Removing gnomevfs from MOZ_EXTENSIONS due to no --enable-gnomevfs.])
- fi
- MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gnomevfs||'`
- fi
-@@ -5983,7 +5977,7 @@ fi
- if test -z "$MOZ_ENABLE_GIO" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
- # Suppress warning on non-X11 platforms
- if test -n "$MOZ_X11"; then
-- AC_MSG_WARN([Cannot build gio without required libraries. Removing gio from MOZ_EXTENSIONS.])
-+ AC_MSG_WARN([Removing gio from MOZ_EXTENSIONS due to --disable-gio.])
- fi
- MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
- fi
-
-commit ddedeea
-Author: Karl Tomlinson <karlt+@karlt.net>
-Date: Thu Sep 27 13:47:19 2012 +1200
-
- b=713802 link gio extension against libxul for tracemalloc stack functions r=bsmedberg
-
- --HG--
- extra : transplant_source : %C8%A3o%BE%A0z%F7%C8%8A%E6%0E%D4s%7D%90%9C%D9%0F%06%7E
----
- extensions/gio/Makefile.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git extensions/gio/Makefile.in extensions/gio/Makefile.in
-index 46412c4..ccf2846 100644
---- extensions/gio/Makefile.in
-+++ extensions/gio/Makefile.in
-@@ -23,7 +23,7 @@ LOCAL_INCLUDES = $(MOZ_GIO_CFLAGS)
-
- EXTRA_DSO_LDOPTS = \
- $(XPCOM_GLUE_LDOPTS) \
-- $(NSPR_LIBS) \
-+ $(MOZ_COMPONENT_LIBS) \
- $(MOZ_GIO_LIBS) \
- $(NULL)
-
diff --git a/www/libxul/files/patch-bug722975 b/www/libxul/files/patch-bug722975
deleted file mode 100644
index 46a3381b9375..000000000000
--- a/www/libxul/files/patch-bug722975
+++ /dev/null
@@ -1,61 +0,0 @@
-# HG changeset patch
-# Parent 9d3c9b863c697634e434b687d456bb82fa794ecf
-# User Uli Schlachter <psychon@znc.in>
-Bug 722975 - --enable-system-cairo build is broken after Bug 715658 fixed
-
-
-diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp
---- gfx/thebes/gfxPlatform.cpp
-+++ gfx/thebes/gfxPlatform.cpp
-@@ -484,21 +484,19 @@ gfxPlatform::CreateDrawTargetForSurface(
-
- cairo_user_data_key_t kSourceSurface;
-
- void SourceBufferDestroy(void *srcBuffer)
- {
- static_cast<SourceSurface*>(srcBuffer)->Release();
- }
-
--void SourceSnapshotDetached(cairo_surface_t *nullSurf)
-+void SourceSnapshotDetached(void *nullSurf)
- {
-- gfxImageSurface* origSurf =
-- static_cast<gfxImageSurface*>(cairo_surface_get_user_data(nullSurf, &kSourceSurface));
--
-+ gfxImageSurface *origSurf = static_cast<gfxImageSurface*>(nullSurf);
- origSurf->SetData(&kSourceSurface, NULL, NULL);
- }
-
- RefPtr<SourceSurface>
- gfxPlatform::GetSourceSurfaceForSurface(DrawTarget *aTarget, gfxASurface *aSurface)
- {
- void *userData = aSurface->GetData(&kSourceSurface);
-
-@@ -588,24 +586,19 @@ gfxPlatform::GetSourceSurfaceForSurface(
- }
-
- srcBuffer = Factory::CreateWrappingDataSourceSurface(imgSurface->Data(),
- imgSurface->Stride(),
- size, format);
-
- }
-
-- cairo_surface_t *nullSurf =
-- cairo_null_surface_create(CAIRO_CONTENT_COLOR_ALPHA);
-- cairo_surface_set_user_data(nullSurf,
-- &kSourceSurface,
-- imgSurface,
-- NULL);
-- cairo_surface_attach_snapshot(imgSurface->CairoSurface(), nullSurf, SourceSnapshotDetached);
-- cairo_surface_destroy(nullSurf);
-+ cairo_surface_set_mime_data(imgSurface->CairoSurface(), "mozilla/magic",
-+ (const unsigned char *) "data", 4,
-+ SourceSnapshotDetached, imgSurface.get());
- }
-
- srcBuffer->AddRef();
- aSurface->SetData(&kSourceSurface, srcBuffer, SourceBufferDestroy);
-
- return srcBuffer;
- }
-
diff --git a/www/libxul/files/patch-bug732340 b/www/libxul/files/patch-bug732340
deleted file mode 100644
index 95756678bd0f..000000000000
--- a/www/libxul/files/patch-bug732340
+++ /dev/null
@@ -1,13 +0,0 @@
---- gfx/harfbuzz/src/hb-ot-layout.cc.orig 2012-06-24 22:14:46.463741874 -0400
-+++ gfx/harfbuzz/src/hb-ot-layout.cc 2012-06-24 22:15:06.784770042 -0400
-@@ -537,4 +537,10 @@ hb_ot_layout_position_finish (hb_face_t
- GPOS::position_finish (buffer);
- }
-
-+#if !defined(__clang__) && defined(__GNUC__) && __GNUC_MINOR__ <= 3
-+template int SortedArrayOf<Record<LangSys> >::search<unsigned int>(unsigned int const &) const;
-+template int SortedArrayOf<Record<Script> >::search<unsigned int>(unsigned int const &) const;
-+template int SortedArrayOf<IntType<unsigned short> >::search<unsigned int>(unsigned int const &) const;
-+template int SortedArrayOf<RangeRecord>::search<unsigned int>(unsigned int const &) const;
-+#endif
-
diff --git a/www/libxul/files/patch-bug753046 b/www/libxul/files/patch-bug753046
deleted file mode 100644
index 3d99258b8323..000000000000
--- a/www/libxul/files/patch-bug753046
+++ /dev/null
@@ -1,1207 +0,0 @@
-# Bug 753046 - Add support for DragonFly/NetBSD
-
-$NetBSD: patch-dom_plugins_ipc_PluginModuleChild.cpp,v 1.1 2012/03/06 12:34:09 ryoon Exp $
-
---- dom/plugins/ipc/PluginModuleChild.cpp.orig 2011-12-20 23:28:14.000000000 +0000
-+++ dom/plugins/ipc/PluginModuleChild.cpp
-@@ -5,6 +5,7 @@
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
- #ifdef MOZ_WIDGET_QT
-+#include <unistd.h> // for _exit()
- #include <QtCore/QTimer>
- #include "nsQAppInstance.h"
- #include "NestedLoopTimer.h"
-@@ -228,7 +228,7 @@ PluginModuleChild::Init(const std::strin
-
- // TODO: use PluginPRLibrary here
-
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
- mShutdownFunc =
- (NP_PLUGINSHUTDOWN) PR_FindFunctionSymbol(mLibrary, "NP_Shutdown");
-
-@@ -1790,7 +1790,7 @@ PluginModuleChild::AnswerNP_GetEntryPoin
- PLUGIN_LOG_DEBUG_METHOD;
- AssertPluginThread();
-
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
- return true;
- #elif defined(OS_WIN) || defined(OS_MACOSX)
- *_retval = mGetEntryPointsFunc(&mFunctions);
-@@ -1823,7 +1823,7 @@ PluginModuleChild::AnswerNP_Initialize(N
- SendBackUpXResources(FileDescriptor(xSocketFd, false/*don't close*/));
- #endif
-
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
- *_retval = mInitializeFunc(&sBrowserFuncs, &mFunctions);
- return true;
- #elif defined(OS_WIN) || defined(OS_MACOSX)
-$NetBSD: patch-dom_plugins_ipc_PluginModuleChild.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $
-
---- dom/plugins/ipc/PluginModuleChild.h.orig 2011-12-20 23:28:14.000000000 +0000
-+++ dom/plugins/ipc/PluginModuleChild.h
-@@ -340,7 +340,7 @@ private:
-
- // we get this from the plugin
- NP_PLUGINSHUTDOWN mShutdownFunc;
--#ifdef OS_LINUX
-+#if defined(OS_LINUX) || defined(OS_BSD)
- NP_PLUGINUNIXINIT mInitializeFunc;
- #elif defined(OS_WIN) || defined(OS_MACOSX)
- NP_PLUGININIT mInitializeFunc;
-$NetBSD: patch-ipc_chromium_Makefile.in,v 1.1 2012/03/06 12:34:09 ryoon Exp $
-
---- ipc/chromium/Makefile.in.orig 2012-02-16 06:40:33.000000000 +0000
-+++ ipc/chromium/Makefile.in
-@@ -278,6 +278,33 @@ endif
-
- endif # } OS_LINUX
-
-+ifdef OS_BSD # {
-+
-+CPPSRCS += \
-+ atomicops_internals_x86_gcc.cc \
-+ process_util_bsd.cc \
-+ time_posix.cc \
-+ $(NULL)
-+
-+ifdef MOZ_ENABLE_GTK2
-+CPPSRCS += \
-+ message_pump_glib.cc \
-+ $(NULL)
-+endif
-+
-+ifdef MOZ_ENABLE_QT
-+MOCSRCS = \
-+ moc_message_pump_qt.cc \
-+ $(NULL)
-+
-+CPPSRCS += \
-+ $(MOCSRCS) \
-+ message_pump_qt.cc \
-+ $(NULL)
-+endif
-+
-+endif # } OS_BSD
-+
- # libevent
-
- ifndef MOZ_NATIVE_LIBEVENT # {
-$NetBSD: patch-ipc_chromium_chromium-config.mk,v 1.2 2012/03/15 08:30:06 ryoon Exp $
-
---- ipc/chromium/chromium-config.mk.orig 2012-02-16 07:40:33.000000000 +0100
-+++ ipc/chromium/chromium-config.mk 2012-03-11 11:05:40.397182000 +0100
-@@ -56,17 +56,6 @@
- -I$(DEPTH)/ipc/ipdl/_ipdlheaders \
- $(NULL)
-
--ifeq ($(OS_ARCH),Darwin) # {
--
--OS_MACOSX = 1
--OS_POSIX = 1
--
--DEFINES += \
-- -DOS_MACOSX=1 \
-- -DOS_POSIX=1 \
-- $(NULL)
--
--else # } {
- ifeq ($(OS_ARCH),WINNT) # {
- OS_LIBS += $(call EXPAND_LIBNAME,psapi shell32 dbghelp)
-
-@@ -93,13 +82,65 @@
- endif
-
- else # } {
--
--OS_LINUX = 1
- OS_POSIX = 1
-+DEFINES += -DOS_POSIX=1
-+
-+ifeq ($(OS_ARCH),Darwin) # {
-+
-+OS_MACOSX = 1
-+DEFINES += \
-+ -DOS_MACOSX=1 \
-+ $(NULL)
-+
-+else # } {
-+ifeq ($(OS_ARCH),DragonFly) # {
-+
-+OS_DRAGONFLY = 1
-+OS_BSD = 1
-+OS_LIBS += $(call EXPAND_LIBNAME,kvm)
-+DEFINES += \
-+ -DOS_DRAGONFLY=1 \
-+ -DOS_BSD=1 \
-+ $(NULL)
-+
-+else # } {
-+ifeq ($(OS_ARCH),FreeBSD) # {
-+
-+OS_FREEBSD = 1
-+OS_BSD = 1
-+OS_LIBS += $(call EXPAND_LIBNAME,kvm)
-+DEFINES += \
-+ -DOS_FREEBSD=1 \
-+ -DOS_BSD=1 \
-+ $(NULL)
-
-+else # } {
-+ifeq ($(OS_ARCH),NetBSD) # {
-+
-+OS_NETBSD = 1
-+OS_BSD = 1
-+OS_LIBS += $(call EXPAND_LIBNAME,kvm)
-+DEFINES += \
-+ -DOS_NETBSD=1 \
-+ -DOS_BSD=1 \
-+ $(NULL)
-+
-+else # } {
-+ifeq ($(OS_ARCH),OpenBSD) # {
-+
-+OS_OPENBSD = 1
-+OS_BSD = 1
-+OS_LIBS += $(call EXPAND_LIBNAME,kvm)
-+DEFINES += \
-+ -DOS_OPENBSD=1 \
-+ -DOS_BSD=1 \
-+ $(NULL)
-+
-+else # } {
-+
-+OS_LINUX = 1
- DEFINES += \
- -DOS_LINUX=1 \
-- -DOS_POSIX=1 \
- $(NULL)
-
- # NB: to stop gcc warnings about exporting template instantiation
-@@ -107,4 +147,8 @@
-
- endif # }
- endif # }
-+endif # }
-+endif # }
-+endif # }
-+endif # }
-
-$NetBSD: patch-ipc_chromium_src_base_base__paths.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $
-
---- ipc/chromium/src/base/base_paths.h.orig 2011-12-20 23:28:19.000000000 +0000
-+++ ipc/chromium/src/base/base_paths.h
-@@ -13,7 +13,7 @@
- #include "base/base_paths_win.h"
- #elif defined(OS_MACOSX)
- #include "base/base_paths_mac.h"
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
- #include "base/base_paths_linux.h"
- #endif
- #include "base/path_service.h"
-$NetBSD: patch-ipc_chromium_src_base_debug__util__posic.cc,v 1.3 2012/04/01 15:18:45 ryoon Exp $
-
---- ipc/chromium/src/base/debug_util_posix.cc.orig 2012-03-13 01:36:53.000000000 +0000
-+++ ipc/chromium/src/base/debug_util_posix.cc
-@@ -5,7 +5,7 @@
- #include "build/build_config.h"
- #include "base/debug_util.h"
-
--#define MOZ_HAVE_EXECINFO_H (!defined(ANDROID) && !defined(__OpenBSD__))
-+#define MOZ_HAVE_EXECINFO_H (defined(OS_LINUX) && !defined(ANDROID))
-
- #include <errno.h>
- #include <fcntl.h>
-@@ -17,9 +17,16 @@
- #include <unistd.h>
- #if MOZ_HAVE_EXECINFO_H
- #include <execinfo.h>
-+#endif
-+
-+#if defined(OS_MACOSX) || defined(OS_BSD)
- #include <sys/sysctl.h>
- #endif
-
-+#if defined(OS_DRAGONFLY) || defined(OS_FREEBSD)
-+#include <sys/user.h>
-+#endif
-+
- #include "base/basictypes.h"
- #include "base/eintr_wrapper.h"
- #include "base/logging.h"
-@@ -32,7 +37,7 @@ bool DebugUtil::SpawnDebuggerOnProcess(u
- return false;
- }
-
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_BSD)
-
- // Based on Apple's recommended method as described in
- // http://developer.apple.com/qa/qa2004/qa1361.html
-@@ -71,7 +76,15 @@ bool DebugUtil::BeingDebugged() {
-
- // This process is being debugged if the P_TRACED flag is set.
- is_set = true;
-+#if defined(OS_DRAGONFLY)
-+ being_debugged = (info.kp_flags & P_TRACED) != 0;
-+#elif defined(OS_FREEBSD)
-+ being_debugged = (info.ki_flag & P_TRACED) != 0;
-+#elif defined(OS_OPENBSD)
-+ being_debugged = (info.p_flag & P_TRACED) != 0;
-+#else
- being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0;
-+#endif
- return being_debugged;
- }
-
-diff --git ipc/chromium/src/base/dir_reader_bsd.h ipc/chromium/src/base/dir_reader_bsd.h
-new file mode 100644
-index 0000000..3fc1a87
---- /dev/null
-+++ ipc/chromium/src/base/dir_reader_bsd.h
-@@ -0,0 +1,112 @@
-+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+// derived from dir_reader_linux.h
-+
-+#ifndef BASE_DIR_READER_BSD_H_
-+#define BASE_DIR_READER_BSD_H_
-+#pragma once
-+
-+#include <dirent.h>
-+#include <errno.h>
-+#include <fcntl.h>
-+#include <stdint.h>
-+#include <unistd.h>
-+
-+#include "base/logging.h"
-+#include "base/eintr_wrapper.h"
-+
-+// See the comments in dir_reader_posix.h about this.
-+
-+namespace base {
-+
-+class DirReaderBSD {
-+ public:
-+ explicit DirReaderBSD(const char* directory_path)
-+#ifdef O_DIRECTORY
-+ : fd_(open(directory_path, O_RDONLY | O_DIRECTORY)),
-+#else
-+ : fd_(open(directory_path, O_RDONLY)),
-+#endif
-+ offset_(0),
-+ size_(0) {
-+ memset(buf_, 0, sizeof(buf_));
-+ }
-+
-+ ~DirReaderBSD() {
-+ if (fd_ >= 0) {
-+ if (HANDLE_EINTR(close(fd_)))
-+ DLOG(ERROR) << "Failed to close directory handle";
-+ }
-+ }
-+
-+ bool IsValid() const {
-+ return fd_ >= 0;
-+ }
-+
-+ // Move to the next entry returning false if the iteration is complete.
-+ bool Next() {
-+ if (size_) {
-+ struct dirent* dirent = reinterpret_cast<struct dirent*>(&buf_[offset_]);
-+#ifdef OS_DRAGONFLY
-+ offset_ += _DIRENT_DIRSIZ(dirent);
-+#else
-+ offset_ += dirent->d_reclen;
-+#endif
-+ }
-+
-+ if (offset_ != size_)
-+ return true;
-+
-+#ifdef OS_OPENBSD
-+ const int r = getdirentries(fd_, buf_, sizeof(buf_), basep_);
-+#else
-+ const int r = getdents(fd_, buf_, sizeof(buf_));
-+#endif
-+ if (r == 0)
-+ return false;
-+ if (r == -1) {
-+#ifdef OS_OPENBSD
-+ DLOG(ERROR) << "getdirentries returned an error: " << errno;
-+#else
-+ DLOG(ERROR) << "getdents returned an error: " << errno;
-+#endif
-+ return false;
-+ }
-+ size_ = r;
-+ offset_ = 0;
-+ return true;
-+ }
-+
-+ const char* name() const {
-+ if (!size_)
-+ return NULL;
-+
-+ const struct dirent* dirent =
-+ reinterpret_cast<const struct dirent*>(&buf_[offset_]);
-+ return dirent->d_name;
-+ }
-+
-+ int fd() const {
-+ return fd_;
-+ }
-+
-+ static bool IsFallback() {
-+ return false;
-+ }
-+
-+ private:
-+ const int fd_;
-+ char buf_[512];
-+#ifdef OS_OPENBSD
-+ off_t *basep_;
-+#endif
-+ size_t offset_, size_;
-+
-+ DISALLOW_COPY_AND_ASSIGN(DirReaderBSD);
-+};
-+
-+} // namespace base
-+
-+#endif // BASE_DIR_READER_BSD_H_
-diff --git ipc/chromium/src/base/dir_reader_posix.h ipc/chromium/src/base/dir_reader_posix.h
-index 9a34492..62b280c 100644
---- ipc/chromium/src/base/dir_reader_posix.h
-+++ ipc/chromium/src/base/dir_reader_posix.h
-@@ -18,16 +18,20 @@
- // seems worse than falling back to enumerating all file descriptors so we will
- // probably never implement this on the Mac.
-
--#if defined(OS_LINUX) && !defined(OS_OPENBSD)
-+#if defined(OS_LINUX)
- #include "base/dir_reader_linux.h"
-+#elif defined(OS_BSD)
-+#include "base/dir_reader_bsd.h"
- #else
- #include "base/dir_reader_fallback.h"
- #endif
-
- namespace base {
-
--#if defined(OS_LINUX) && !defined(OS_OPENBSD)
-+#if defined(OS_LINUX)
- typedef DirReaderLinux DirReaderPosix;
-+#elif defined(OS_BSD)
-+typedef DirReaderBSD DirReaderPosix;
- #else
- typedef DirReaderFallback DirReaderPosix;
- #endif
-$NetBSD: patch-ipc_chromium_src_base_file__util__posix.cc,v 1.2 2012/03/06 12:34:09 ryoon Exp $
-
---- ipc/chromium/src/base/file_util_posix.cc.orig 2011-12-20 23:28:19.000000000 +0000
-+++ ipc/chromium/src/base/file_util_posix.cc
-@@ -31,7 +31,7 @@
- #include "base/time.h"
-
- // FreeBSD/OpenBSD lacks stat64, but its stat handles files >2GB just fine
--#if defined(OS_FREEBSD) || defined(OS_OPENBSD)
-+#ifndef HAVE_STAT64
- #define stat64 stat
- #endif
-
-$NetBSD: patch-ipc_chromium_src_base_message__loop.cc,v 1.1 2012/03/06 12:34:09 ryoon Exp $
-
---- ipc/chromium/src/base/message_loop.cc.orig 2012-02-16 07:40:33.000000000 +0100
-+++ ipc/chromium/src/base/message_loop.cc 2012-02-21 21:24:41.000000000 +0100
-@@ -19,7 +19,7 @@
- #if defined(OS_POSIX)
- #include "base/message_pump_libevent.h"
- #endif
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_BSD)
- #ifdef MOZ_WIDGET_GTK2
- #include "base/message_pump_glib.h"
- #endif
-@@ -119,7 +119,7 @@
- if (type_ == TYPE_UI) {
- #if defined(OS_MACOSX)
- pump_ = base::MessagePumpMac::Create();
--#elif defined(OS_LINUX)
-+#elif defined(OS_LINUX) || defined(OS_BSD)
- pump_ = new base::MessagePumpForUI();
- #endif // OS_LINUX
- } else if (type_ == TYPE_IO) {
-$NetBSD: patch-ipc_chromium_src_base_platform__thread.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $
-
---- ipc/chromium/src/base/platform_thread.h.orig 2011-12-20 23:28:19.000000000 +0000
-+++ ipc/chromium/src/base/platform_thread.h
-@@ -22,9 +22,12 @@ typedef void* PlatformThreadHandle; // HANDLE
- #elif defined(OS_POSIX)
- #include <pthread.h>
- typedef pthread_t PlatformThreadHandle;
--#if defined(OS_LINUX)
-+#if defined(OS_LINUX) || defined(OS_OPENBSD)
- #include <unistd.h>
- typedef pid_t PlatformThreadId;
-+#elif defined(OS_BSD)
-+#include <sys/types.h>
-+typedef lwpid_t PlatformThreadId;
- #elif defined(OS_MACOSX)
- #include <mach/mach.h>
- typedef mach_port_t PlatformThreadId;
-$NetBSD: patch-ipc_chromium_src_base_platform__thread__posix.cc,v 1.4 2012/04/01 15:18:45 ryoon Exp $
-
---- ipc/chromium/src/base/platform_thread_posix.cc.orig 2012-03-13 01:36:53.000000000 +0000
-+++ ipc/chromium/src/base/platform_thread_posix.cc
-@@ -9,16 +9,24 @@
-
- #if defined(OS_MACOSX)
- #include <mach/mach.h>
-+#elif defined(OS_NETBSD)
-+#include <lwp.h>
- #elif defined(OS_LINUX)
- #include <sys/syscall.h>
--#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__)
- #include <sys/prctl.h>
--#elif !defined(__NetBSD__)
--#include <pthread_np.h>
-+#elif defined(OS_FREEBSD)
-+#include <sys/param.h>
-+#include <sys/thr.h>
- #endif
-+
-+#if !defined(OS_MACOSX)
- #include <unistd.h>
- #endif
-
-+#if defined(OS_BSD) && !defined(OS_NETBSD)
-+#include <pthread_np.h>
-+#endif
-+
- #if defined(OS_MACOSX)
- namespace base {
- void InitThreading();
-@@ -38,9 +45,20 @@ PlatformThreadId PlatformThread::CurrentId() {
- // into the kernel.
- #if defined(OS_MACOSX)
- return mach_thread_self();
--#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
-+#elif defined(OS_NETBSD)
-+ return _lwp_self();
-+#elif defined(OS_DRAGONFLY)
-+ return lwp_gettid();
-+#elif defined(OS_FREEBSD)
-+# if __FreeBSD_version > 900030
-+ return pthread_getthreadid_np();
-+# else
-+ long lwpid;
-+ thr_self(&lwpid);
-+ return lwpid;
-+# endif
-+#elif defined(OS_OPENBSD)
-- // TODO(BSD): find a better thread ID
-- return (intptr_t)(pthread_self());
-+ return (intptr_t) (pthread_self());
- #elif defined(OS_LINUX)
- return syscall(__NR_gettid);
- #endif
-@@ -102,9 +102,9 @@ void PlatformThread::SetName(const char* name) {
- // Note that glibc also has a 'pthread_setname_np' api, but it may not be
- // available everywhere and it's only benefit over using prctl directly is
- // that it can set the name of threads other than the current thread.
--#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
-+#if defined(OS_BSD) && !defined(OS_NETBSD)
- pthread_set_name_np(pthread_self(), name);
--#elif defined(__NetBSD__)
-+#elif defined(OS_NETBSD)
- pthread_setname_np(pthread_self(), "%s", (void *)name);
- #else
- prctl(PR_SET_NAME, reinterpret_cast<uintptr_t>(name), 0, 0, 0);
-$NetBSD: patch-ipc_chromium_src_base_process__util.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $
-
---- ipc/chromium/src/base/process_util.h.orig 2011-12-21 00:28:19.000000000 +0100
-+++ ipc/chromium/src/base/process_util.h 2012-01-31 13:14:54.000000000 +0100
-@@ -280,6 +280,7 @@ class NamedProcessIterator {
- const ProcessEntry* NextProcessEntry();
-
- private:
-+#if !defined(OS_BSD)
- // Determines whether there's another process (regardless of executable)
- // left in the list of all processes. Returns true and sets entry_ to
- // that process's info if there is one, false otherwise.
-@@ -292,18 +292,24 @@
- void InitProcessEntry(ProcessEntry* entry);
-
- std::wstring executable_name_;
-+#endif
-
- #if defined(OS_WIN)
- HANDLE snapshot_;
- bool started_iteration_;
- #elif defined(OS_LINUX)
- DIR *procfs_dir_;
-+#elif defined(OS_BSD)
-+ std::vector<ProcessEntry> content;
-+ size_t nextEntry;
- #elif defined(OS_MACOSX)
- std::vector<kinfo_proc> kinfo_procs_;
- size_t index_of_kinfo_proc_;
- #endif
-+#if !defined(OS_BSD)
- ProcessEntry entry_;
- const ProcessFilter* filter_;
-+#endif
-
- DISALLOW_EVIL_CONSTRUCTORS(NamedProcessIterator);
- };
-$NetBSD: patch-ipc_chromium_src_base_process__util__bsd.cc,v 1.4 2012/04/01 15:18:45 ryoon Exp $
-
---- ipc/chromium/src/base/process_util_bsd.cc.orig 2012-04-01 00:04:28.000000000 +0000
-+++ ipc/chromium/src/base/process_util_bsd.cc
-@@ -0,0 +1,367 @@
-+// Copyright (c) 2008 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+// derived from process_util_linux.cc and process_util_mac.cc
-+
-+#include "base/process_util.h"
-+
-+#include <sys/param.h>
-+#include <sys/sysctl.h>
-+#include <sys/wait.h>
-+#if defined(OS_DRAGONFLY) || defined(OS_FREEBSD)
-+#include <sys/user.h>
-+#endif
-+
-+#include <ctype.h>
-+#include <fcntl.h>
-+#include <kvm.h>
-+#include <unistd.h>
-+
-+#include <string>
-+
-+#include "base/debug_util.h"
-+#include "base/eintr_wrapper.h"
-+#include "base/file_util.h"
-+#include "base/logging.h"
-+#include "base/string_tokenizer.h"
-+#include "base/string_util.h"
-+
-+#if (defined(_POSIX_SPAWN) && _POSIX_SPAWN > 0) \
-+ || (defined(OS_NETBSD) && __NetBSD_Version__ >= 599006500)
-+#define HAVE_POSIX_SPAWN 1
-+#endif
-+
-+/*
-+ * On platforms that are not gonk based, we fall back to an arbitrary
-+ * UID. This is generally the UID for user `nobody', albeit it is not
-+ * always the case.
-+ */
-+
-+#if defined(OS_NETBSD) || defined(OS_OPENBSD)
-+# define CHILD_UNPRIVILEGED_UID 32767
-+# define CHILD_UNPRIVILEGED_GID 32767
-+#else
-+# define CHILD_UNPRIVILEGED_UID 65534
-+# define CHILD_UNPRIVILEGED_GID 65534
-+#endif
-+
-+#ifndef __dso_public
-+# ifdef __exported
-+# define __dso_public __exported
-+# else
-+# define __dso_public __attribute__((__visibility__("default")))
-+# endif
-+#endif
-+
-+#ifdef HAVE_POSIX_SPAWN
-+#include <spawn.h>
-+extern "C" char **environ __dso_public;
-+#endif
-+
-+namespace {
-+
-+enum ParsingState {
-+ KEY_NAME,
-+ KEY_VALUE
-+};
-+
-+static mozilla::EnvironmentLog gProcessLog("MOZ_PROCESS_LOG");
-+
-+} // namespace
-+
-+namespace base {
-+
-+#ifdef HAVE_POSIX_SPAWN
-+
-+void FreeEnvVarsArray(char* array[], int length)
-+{
-+ for (int i = 0; i < length; i++) {
-+ free(array[i]);
-+ }
-+ delete[] array;
-+}
-+
-+bool LaunchApp(const std::vector<std::string>& argv,
-+ const file_handle_mapping_vector& fds_to_remap,
-+ bool wait, ProcessHandle* process_handle) {
-+ return LaunchApp(argv, fds_to_remap, environment_map(),
-+ wait, process_handle);
-+}
-+
-+bool LaunchApp(const std::vector<std::string>& argv,
-+ const file_handle_mapping_vector& fds_to_remap,
-+ const environment_map& env_vars_to_set,
-+ bool wait, ProcessHandle* process_handle,
-+ ProcessArchitecture arch) {
-+ return LaunchApp(argv, fds_to_remap, env_vars_to_set,
-+ SAME_PRIVILEGES_AS_PARENT,
-+ wait, process_handle);
-+}
-+
-+bool LaunchApp(const std::vector<std::string>& argv,
-+ const file_handle_mapping_vector& fds_to_remap,
-+ const environment_map& env_vars_to_set,
-+ ChildPrivileges privs,
-+ bool wait, ProcessHandle* process_handle,
-+ ProcessArchitecture arch) {
-+ bool retval = true;
-+
-+ char* argv_copy[argv.size() + 1];
-+ for (size_t i = 0; i < argv.size(); i++) {
-+ argv_copy[i] = const_cast<char*>(argv[i].c_str());
-+ }
-+ argv_copy[argv.size()] = NULL;
-+
-+ // Make sure we don't leak any FDs to the child process by marking all FDs
-+ // as close-on-exec.
-+ SetAllFDsToCloseOnExec();
-+
-+ // Copy environment to a new char array and add the variables
-+ // in env_vars_to_set.
-+ // Existing variables are overwritten by env_vars_to_set.
-+ int pos = 0;
-+ environment_map combined_env_vars = env_vars_to_set;
-+ while(environ[pos] != NULL) {
-+ std::string varString = environ[pos];
-+ std::string varName = varString.substr(0, varString.find_first_of('='));
-+ std::string varValue = varString.substr(varString.find_first_of('=') + 1);
-+ if (combined_env_vars.find(varName) == combined_env_vars.end()) {
-+ combined_env_vars[varName] = varValue;
-+ }
-+ pos++;
-+ }
-+ int varsLen = combined_env_vars.size() + 1;
-+
-+ char** vars = new char*[varsLen];
-+ int i = 0;
-+ for (environment_map::const_iterator it = combined_env_vars.begin();
-+ it != combined_env_vars.end(); ++it) {
-+ std::string entry(it->first);
-+ entry += "=";
-+ entry += it->second;
-+ vars[i] = strdup(entry.c_str());
-+ i++;
-+ }
-+ vars[i] = NULL;
-+
-+ posix_spawn_file_actions_t file_actions;
-+ if (posix_spawn_file_actions_init(&file_actions) != 0) {
-+ FreeEnvVarsArray(vars, varsLen);
-+ return false;
-+ }
-+
-+ // Turn fds_to_remap array into a set of dup2 calls.
-+ for (file_handle_mapping_vector::const_iterator it = fds_to_remap.begin();
-+ it != fds_to_remap.end();
-+ ++it) {
-+ int src_fd = it->first;
-+ int dest_fd = it->second;
-+
-+ if (src_fd == dest_fd) {
-+ int flags = fcntl(src_fd, F_GETFD);
-+ if (flags != -1) {
-+ fcntl(src_fd, F_SETFD, flags & ~FD_CLOEXEC);
-+ }
-+ } else {
-+ if (posix_spawn_file_actions_adddup2(&file_actions, src_fd, dest_fd) != 0) {
-+ posix_spawn_file_actions_destroy(&file_actions);
-+ FreeEnvVarsArray(vars, varsLen);
-+ return false;
-+ }
-+ }
-+ }
-+
-+ pid_t pid = 0;
-+ int spawn_succeeded = (posix_spawnp(&pid,
-+ argv_copy[0],
-+ &file_actions,
-+ NULL,
-+ argv_copy,
-+ vars) == 0);
-+
-+ FreeEnvVarsArray(vars, varsLen);
-+
-+ posix_spawn_file_actions_destroy(&file_actions);
-+
-+ bool process_handle_valid = pid > 0;
-+ if (!spawn_succeeded || !process_handle_valid) {
-+ retval = false;
-+ } else {
-+ if (wait)
-+ HANDLE_EINTR(waitpid(pid, 0, 0));
-+
-+ if (process_handle)
-+ *process_handle = pid;
-+ }
-+
-+ return retval;
-+}
-+
-+bool LaunchApp(const CommandLine& cl,
-+ bool wait, bool start_hidden, ProcessHandle* process_handle) {
-+ // TODO(playmobil): Do we need to respect the start_hidden flag?
-+ file_handle_mapping_vector no_files;
-+ return LaunchApp(cl.argv(), no_files, wait, process_handle);
-+}
-+
-+#else // no posix_spawn, use fork/exec
-+
-+bool LaunchApp(const std::vector<std::string>& argv,
-+ const file_handle_mapping_vector& fds_to_remap,
-+ bool wait, ProcessHandle* process_handle) {
-+ return LaunchApp(argv, fds_to_remap, environment_map(),
-+ wait, process_handle);
-+}
-+
-+bool LaunchApp(const std::vector<std::string>& argv,
-+ const file_handle_mapping_vector& fds_to_remap,
-+ const environment_map& env_vars_to_set,
-+ bool wait, ProcessHandle* process_handle,
-+ ProcessArchitecture arch) {
-+ return LaunchApp(argv, fds_to_remap, env_vars_to_set,
-+ SAME_PRIVILEGES_AS_PARENT,
-+ wait, process_handle);
-+}
-+
-+bool LaunchApp(const std::vector<std::string>& argv,
-+ const file_handle_mapping_vector& fds_to_remap,
-+ const environment_map& env_vars_to_set,
-+ ChildPrivileges privs,
-+ bool wait, ProcessHandle* process_handle,
-+ ProcessArchitecture arch) {
-+ scoped_array<char*> argv_cstr(new char*[argv.size() + 1]);
-+ // Illegal to allocate memory after fork and before execvp
-+ InjectiveMultimap fd_shuffle1, fd_shuffle2;
-+ fd_shuffle1.reserve(fds_to_remap.size());
-+ fd_shuffle2.reserve(fds_to_remap.size());
-+
-+ pid_t pid = fork();
-+ if (pid < 0)
-+ return false;
-+
-+ if (pid == 0) {
-+ for (file_handle_mapping_vector::const_iterator
-+ it = fds_to_remap.begin(); it != fds_to_remap.end(); ++it) {
-+ fd_shuffle1.push_back(InjectionArc(it->first, it->second, false));
-+ fd_shuffle2.push_back(InjectionArc(it->first, it->second, false));
-+ }
-+
-+ if (!ShuffleFileDescriptors(&fd_shuffle1))
-+ _exit(127);
-+
-+ CloseSuperfluousFds(fd_shuffle2);
-+
-+ for (size_t i = 0; i < argv.size(); i++)
-+ argv_cstr[i] = const_cast<char*>(argv[i].c_str());
-+ argv_cstr[argv.size()] = NULL;
-+
-+ if (privs == UNPRIVILEGED) {
-+ if (setgid(CHILD_UNPRIVILEGED_GID) != 0) {
-+ DLOG(ERROR) << "FAILED TO setgid() CHILD PROCESS, path: " << argv_cstr[0];
-+ _exit(127);
-+ }
-+ if (setuid(CHILD_UNPRIVILEGED_UID) != 0) {
-+ DLOG(ERROR) << "FAILED TO setuid() CHILD PROCESS, path: " << argv_cstr[0];
-+ _exit(127);
-+ }
-+ if (chdir("/") != 0)
-+ gProcessLog.print("==> could not chdir()\n");
-+ }
-+
-+ for (environment_map::const_iterator it = env_vars_to_set.begin();
-+ it != env_vars_to_set.end(); ++it) {
-+ if (setenv(it->first.c_str(), it->second.c_str(), 1/*overwrite*/))
-+ _exit(127);
-+ }
-+ execv(argv_cstr[0], argv_cstr.get());
-+ // if we get here, we're in serious trouble and should complain loudly
-+ DLOG(ERROR) << "FAILED TO exec() CHILD PROCESS, path: " << argv_cstr[0];
-+ _exit(127);
-+ } else {
-+ gProcessLog.print("==> process %d launched child process %d\n",
-+ GetCurrentProcId(), pid);
-+ if (wait)
-+ HANDLE_EINTR(waitpid(pid, 0, 0));
-+
-+ if (process_handle)
-+ *process_handle = pid;
-+ }
-+
-+ return true;
-+}
-+
-+bool LaunchApp(const CommandLine& cl,
-+ bool wait, bool start_hidden,
-+ ProcessHandle* process_handle) {
-+ file_handle_mapping_vector no_files;
-+ return LaunchApp(cl.argv(), no_files, wait, process_handle);
-+}
-+
-+#endif
-+
-+NamedProcessIterator::NamedProcessIterator(const std::wstring& executable_name,
-+ const ProcessFilter* filter)
-+{
-+ int numEntries;
-+ kvm_t *kvm;
-+ std::string exe(WideToASCII(executable_name));
-+
-+#if defined(OS_DRAGONFLY) || defined(OS_FREEBSD)
-+ kvm = kvm_open(NULL, NULL, NULL, O_RDONLY, NULL);
-+ struct kinfo_proc* procs = kvm_getprocs(kvm, KERN_PROC_UID, getuid(), &numEntries);
-+ if (procs != NULL && numEntries > 0) {
-+ for (int i = 0; i < numEntries; i++) {
-+# if defined(OS_DRAGONFLY)
-+ if (exe != procs[i].kp_comm) continue;
-+ if (filter && !filter->Includes(procs[i].kp_pid, procs[i].kp_ppid)) continue;
-+ ProcessEntry e;
-+ e.pid = procs[i].kp_pid;
-+ e.ppid = procs[i].kp_ppid;
-+ strlcpy(e.szExeFile, procs[i].kp_comm, sizeof e.szExeFile);
-+ content.push_back(e);
-+# elif defined(OS_FREEBSD)
-+ if (exe != procs[i].ki_comm) continue;
-+ if (filter && !filter->Includes(procs[i].ki_pid, procs[i].ki_ppid)) continue;
-+ ProcessEntry e;
-+ e.pid = procs[i].ki_pid;
-+ e.ppid = procs[i].ki_ppid;
-+ strlcpy(e.szExeFile, procs[i].ki_comm, sizeof e.szExeFile);
-+ content.push_back(e);
-+# endif
-+#else
-+ kvm = kvm_open(NULL, NULL, NULL, KVM_NO_FILES, NULL);
-+#if defined(OS_OPENBSD)
-+ struct kinfo_proc* procs = kvm_getprocs(kvm, KERN_PROC_UID, getuid(), sizeof(struct kinfo_proc), &numEntries);
-+#else
-+ struct kinfo_proc2* procs = kvm_getproc2(kvm, KERN_PROC_UID, getuid(), sizeof(struct kinfo_proc2), &numEntries);
-+#endif
-+ if (procs != NULL && numEntries > 0) {
-+ for (int i = 0; i < numEntries; i++) {
-+ if (exe != procs[i].p_comm) continue;
-+ if (filter && !filter->Includes(procs[i].p_pid, procs[i].p_ppid)) continue;
-+ ProcessEntry e;
-+ e.pid = procs[i].p_pid;
-+ e.ppid = procs[i].p_ppid;
-+ strlcpy(e.szExeFile, procs[i].p_comm, sizeof e.szExeFile);
-+ content.push_back(e);
-+#endif
-+ }
-+ }
-+ nextEntry = 0;
-+ kvm_close(kvm);
-+}
-+
-+NamedProcessIterator::~NamedProcessIterator() {
-+}
-+
-+const ProcessEntry* NamedProcessIterator::NextProcessEntry() {
-+ if (nextEntry >= content.size()) return NULL;
-+ return &content[nextEntry++];
-+}
-+
-+bool ProcessMetrics::GetIOCounters(IoCounters* io_counters) const {
-+ return false;
-+}
-+
-+} // namespace base
-$NetBSD: patch-ipc_chromium_src_base_process__util__posix.cc,v 1.1 2012/03/06 12:34:09 ryoon Exp $
-
---- ipc/chromium/src/base/process_util_posix.cc.orig 2011-12-20 23:28:19.000000000 +0000
-+++ ipc/chromium/src/base/process_util_posix.cc
-@@ -116,6 +116,11 @@ void CloseSuperfluousFds(const base::Inj
- #elif defined(OS_MACOSX)
- static const rlim_t kSystemDefaultMaxFds = 256;
- static const char kFDDir[] = "/dev/fd";
-+#elif defined(OS_BSD)
-+ // the getrlimit below should never fail, so whatever ..
-+ static const rlim_t kSystemDefaultMaxFds = 1024;
-+ // at least /dev/fd will exist
-+ static const char kFDDir[] = "/dev/fd";
- #endif
-
- // Get the maximum number of FDs possible.
-@@ -199,7 +204,7 @@ void CloseSuperfluousFds(const base::Inj
- void SetAllFDsToCloseOnExec() {
- #if defined(OS_LINUX)
- const char fd_dir[] = "/proc/self/fd";
--#elif defined(OS_MACOSX)
-+#elif defined(OS_MACOSX) || defined(OS_BSD)
- const char fd_dir[] = "/dev/fd";
- #endif
- ScopedDIR dir_closer(opendir(fd_dir));
-$NetBSD: patch-ipc_chromium_src_base_sys__info__posix.cc,v 1.2 2011/11/27 13:09:00 tnn Exp $
-
---- ipc/chromium/src/base/sys_info_posix.cc.orig 2011-11-04 21:34:00.000000000 +0000
-+++ ipc/chromium/src/base/sys_info_posix.cc
-@@ -18,6 +18,11 @@
- #include <mach/mach_init.h>
- #endif
-
-+#if defined(OS_NETBSD)
-+#include <sys/param.h>
-+#include <sys/sysctl.h>
-+#endif
-+
- #include "base/logging.h"
- #include "base/string_util.h"
-
-@@ -26,7 +31,11 @@ namespace base {
- int SysInfo::NumberOfProcessors() {
- // It seems that sysconf returns the number of "logical" processors on both
- // mac and linux. So we get the number of "online logical" processors.
-+#ifdef _SC_NPROCESSORS_ONLN
- static long res = sysconf(_SC_NPROCESSORS_ONLN);
-+#else
-+ static long res = 1;
-+#endif
- if (res == -1) {
- NOTREACHED();
- return 1;
-@@ -52,6 +61,20 @@ int64 SysInfo::AmountOfPhysicalMemory()
- }
-
- return static_cast<int64>(hostinfo.max_mem);
-+#elif defined(OS_NETBSD)
-+ int mib[2];
-+ int rc;
-+ int64_t memSize;
-+ size_t len = sizeof(memSize);
-+
-+ mib[0] = CTL_HW;
-+ mib[1] = HW_PHYSMEM64;
-+ rc = sysctl( mib, 2, &memSize, &len, NULL, 0 );
-+ if (-1 != rc) {
-+ return memSize;
-+ }
-+ return 0;
-+
- #else
- long pages = sysconf(_SC_PHYS_PAGES);
- long page_size = sysconf(_SC_PAGE_SIZE);
-diff --git ipc/chromium/src/base/time_posix.cc ipc/chromium/src/base/time_posix.cc
-index abf2a56..48791f6 100644
---- ipc/chromium/src/base/time_posix.cc
-+++ ipc/chromium/src/base/time_posix.cc
-@@ -167,7 +167,7 @@ TimeTicks TimeTicks::Now() {
- // With numer and denom = 1 (the expected case), the 64-bit absolute time
- // reported in nanoseconds is enough to last nearly 585 years.
-
--#elif defined(__OpenBSD__) || defined(OS_POSIX) && \
-+#elif defined(OS_OPENBSD) || defined(OS_POSIX) && \
- defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0
-
- struct timespec ts;
-$NetBSD: patch-ipc_chromium_src_build_build__config.h,v 1.4 2012/04/01 15:18:45 ryoon Exp $
-
---- ipc/chromium/src/build/build_config.h.orig 2012-03-13 01:36:53.000000000 +0000
-+++ ipc/chromium/src/build/build_config.h
-@@ -19,6 +19,12 @@
- #define OS_MACOSX 1
- #elif defined(__linux__) || defined(ANDROID)
- #define OS_LINUX 1
-+#elif defined(__DragonFly__)
-+#define OS_DRAGONFLY 1
-+#elif defined(__FreeBSD__)
-+#define OS_FREEBSD 1
-+#elif defined(__NetBSD__)
-+#define OS_NETBSD 1
- #elif defined(__OpenBSD__)
- #define OS_OPENBSD 1
- #elif defined(_WIN32)
-@@ -27,9 +33,16 @@
- #error Please add support for your platform in build/build_config.h
- #endif
-
-+// For access to standard BSD features, use OS_BSD instead of a
-+// more specific macro.
-+#if defined(OS_DRAGONFLY) || defined(OS_FREEBSD) \
-+ || defined(OS_NETBSD) || defined(OS_OPENBSD)
-+#define OS_BSD 1
-+#endif
-+
- // For access to standard POSIX features, use OS_POSIX instead of a more
- // specific macro.
--#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_OPENBSD)
-+#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
- #define OS_POSIX 1
- #endif
-
-diff --git ipc/chromium/src/chrome/common/ipc_channel_posix.cc ipc/chromium/src/chrome/common/ipc_channel_posix.cc
-index bd866ee..2ea5b19 100644
---- ipc/chromium/src/chrome/common/ipc_channel_posix.cc
-+++ ipc/chromium/src/chrome/common/ipc_channel_posix.cc
-@@ -7,6 +7,7 @@
- #include <errno.h>
- #include <fcntl.h>
- #include <stddef.h>
-+#include <unistd.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/stat.h>
-$NetBSD: patch-ipc_chromium_src_chrome_common_ipc__channel__posix.h,v 1.1 2011/07/11 12:46:14 tnn Exp $
-
---- ipc/chromium/src/chrome/common/ipc_channel_posix.h.orig 2011-06-15 21:57:27.000000000 +0000
-+++ ipc/chromium/src/chrome/common/ipc_channel_posix.h
-@@ -92,7 +92,7 @@ class Channel::ChannelImpl : public Mess
- };
-
- // This is a control message buffer large enough to hold kMaxReadFDs
--#if defined(OS_MACOSX)
-+#if defined(OS_MACOSX) || defined(OS_NETBSD)
- // TODO(agl): OSX appears to have non-constant CMSG macros!
- char input_cmsg_buf_[1024];
- #else
-$NetBSD: patch-ipc_chromium_src_chrome_common_ipc__message__utils.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $
-
---- ipc/chromium/src/chrome/common/ipc_message_utils.h.orig 2011-12-20 23:28:19.000000000 +0000
-+++ ipc/chromium/src/chrome/common/ipc_message_utils.h
-@@ -195,7 +195,7 @@
- };
- #endif
-
--#if !(defined(OS_MACOSX) || defined(OS_OPENBSD) || defined(OS_WIN) || (defined(OS_LINUX) && defined(ARCH_CPU_64_BITS)) || defined(ARCH_CPU_S390))
-+#if !(defined(OS_MACOSX) || defined(OS_OPENBSD) || defined(OS_WIN) || ((defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS)) || defined(ARCH_CPU_S390))
- // There size_t is a synonym for |unsigned long| ...
- template <>
- struct ParamTraits<size_t> {
-@@ -248,7 +248,7 @@
- };
- #endif // defined(OS_MACOSX)
-
--#if !(defined(OS_LINUX) && defined(ARCH_CPU_64_BITS))
-+#if !((defined(OS_BSD) || defined(OS_LINUX)) && defined(ARCH_CPU_64_BITS))
- // int64 is |long int| on 64-bit systems, uint64 is |unsigned long|
- template <>
- struct ParamTraits<int64> {
-$NetBSD: patch-ipc_chromium_src_chrome_common_transport__dib.h,v 1.1 2012/03/06 12:34:09 ryoon Exp $
-
---- ipc/chromium/src/chrome/common/transport_dib.h.orig 2011-12-20 23:28:19.000000000 +0000
-+++ ipc/chromium/src/chrome/common/transport_dib.h
-@@ -7,7 +7,7 @@
-
- #include "base/basictypes.h"
-
--#if defined(OS_WIN) || defined(OS_MACOSX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
- #include "base/shared_memory.h"
- #endif
-
-@@ -66,7 +66,7 @@ class TransportDIB {
- uint32 sequence_num;
- };
- typedef HandleAndSequenceNum Id;
--#elif defined(OS_MACOSX)
-+#elif defined(OS_MACOSX) || defined(OS_BSD)
- typedef base::SharedMemoryHandle Handle;
- // On Mac, the inode number of the backing file is used as an id.
- typedef base::SharedMemoryId Id;
-@@ -108,7 +108,7 @@ class TransportDIB {
-
- private:
- TransportDIB();
--#if defined(OS_WIN) || defined(OS_MACOSX)
-+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD)
- explicit TransportDIB(base::SharedMemoryHandle dib);
- base::SharedMemory shared_memory_;
- uint32 sequence_num_;
-$NetBSD: patch-ipc_glue_GeckoChildProcessHost.cpp,v 1.2 2012/03/15 08:30:06 ryoon Exp $
-
---- ipc/glue/GeckoChildProcessHost.cpp.orig 2011-12-20 23:28:19.000000000 +0000
-+++ ipc/glue/GeckoChildProcessHost.cpp
-@@ -430,7 +430,7 @@
- // and passing wstrings from one config to the other is unsafe. So
- // we split the logic here.
-
--#if defined(OS_LINUX) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
- base::environment_map newEnvVars;
- // XPCOM may not be initialized in some subprocesses. We don't want
- // to initialize XPCOM just for the directory service, especially
-@@ -445,8 +445,8 @@
- if (NS_SUCCEEDED(rv)) {
- nsCString path;
- greDir->GetNativePath(path);
--# ifdef OS_LINUX
--# ifdef MOZ_WIDGET_ANDROID
-+# if defined(OS_LINUX) || defined(OS_BSD)
-+# if defined(MOZ_WIDGET_ANDROID) || defined(OS_BSD)
- path += "/lib";
- # endif // MOZ_WIDGET_ANDROID
- const char *ld_library_path = PR_GetEnv("LD_LIBRARY_PATH");
-@@ -557,7 +557,7 @@
- childArgv.push_back(pidstring);
-
- #if defined(MOZ_CRASHREPORTER)
--# if defined(OS_LINUX)
-+# if defined(OS_LINUX) || defined(OS_BSD)
- int childCrashFd, childCrashRemapFd;
- if (!CrashReporter::CreateNotificationPipeForChild(
- &childCrashFd, &childCrashRemapFd))
-@@ -594,7 +594,7 @@
- #endif
-
- base::LaunchApp(childArgv, mFileMap,
--#if defined(OS_LINUX) || defined(OS_MACOSX)
-+#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
- newEnvVars, privs,
- #endif
- false, &process, arch);
-diff --git ipc/glue/SharedMemorySysV.h ipc/glue/SharedMemorySysV.h
-index f37998d..b05dc7b 100644
---- ipc/glue/SharedMemorySysV.h
-+++ ipc/glue/SharedMemorySysV.h
-@@ -8,7 +8,7 @@
- #ifndef mozilla_ipc_SharedMemorySysV_h
- #define mozilla_ipc_SharedMemorySysV_h
-
--#if defined(OS_LINUX) && !defined(ANDROID)
-+#if (defined(OS_LINUX) && !defined(ANDROID)) || defined(OS_BSD)
-
- // SysV shared memory isn't available on Windows, but we define the
- // following macro so that #ifdefs are clearer (compared to #ifdef
-$NetBSD: patch-mm,v 1.13 2012/06/05 18:09:21 ryoon Exp $
-
---- toolkit/library/Makefile.in.orig 2012-05-23 18:57:09.000000000 +0000
-+++ toolkit/library/Makefile.in
-@@ -534,6 +538,12 @@ EXTRA_DSO_LDOPTS += -lelf -ldemangle
- endif
- endif
-
-+ifneq (,$(filter DragonFly FreeBSD NetBSD OpenBSD,$(OS_ARCH)))
-+OS_LIBS += $(call EXPAND_LIBNAME,kvm)
-+# keep `environ' unresolved, see bug 14426 for binutils
-+EXTRA_DSO_LDOPTS += -Wl,--warn-unresolved-symbols
-+endif
-+
- ifeq ($(OS_ARCH),WINNT)
- OS_LIBS += $(call EXPAND_LIBNAME,shell32 ole32 version winspool comdlg32 imm32 msimg32 shlwapi psapi ws2_32 dbghelp rasapi32 rasdlg iphlpapi uxtheme setupapi secur32 sensorsapi portabledeviceguids windowscodecs wininet)
- ifdef ACCESSIBILITY
diff --git a/www/libxul/files/patch-bug778078 b/www/libxul/files/patch-bug778078
deleted file mode 100644
index f7bedeb8053c..000000000000
--- a/www/libxul/files/patch-bug778078
+++ /dev/null
@@ -1,11 +0,0 @@
---- toolkit/xre/nsAppRunner.cpp~
-+++ toolkit/xre/nsAppRunner.cpp
-@@ -3833,7 +3833,7 @@ XREMain::XRE_main(int argc, char* argv[]
- ScopedLogging log;
-
- #if defined(MOZ_WIDGET_GTK)
--#ifdef MOZ_MEMORY
-+#if defined(MOZ_MEMORY) || defined(__FreeBSD__) || defined(__NetBSD__)
- // Disable the slice allocator, since jemalloc already uses similar layout
- // algorithms, and using a sub-allocator tends to increase fragmentation.
- // This must be done before g_thread_init() is called.
diff --git a/www/libxul/files/patch-bug783463 b/www/libxul/files/patch-bug783463
index b27a1997c534..dedbb7003927 100644
--- a/www/libxul/files/patch-bug783463
+++ b/www/libxul/files/patch-bug783463
@@ -1,14 +1,14 @@
---- gfx/skia/Makefile.in~
-+++ gfx/skia/Makefile.in
-@@ -339,10 +339,9 @@ CPPSRCS += \
- SkMMapStream.cpp \
- SkOSFile.cpp \
- $(NULL)
--ifeq (Linux,$(OS_TARGET))
-+ifneq (,$(or $(MOZ_X11),$(filter Linux,$(OS_TARGET))))
- CPPSRCS += \
- SkFontHost_linux.cpp \
-- SkFontHost_tables.cpp \
- SkTime_Unix.cpp \
- $(NULL)
- endif
+--- gfx/skia/moz.build~
++++ gfx/skia/moz.build
+@@ -188,10 +188,9 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt
+ 'SkMMapStream.cpp',
+ 'SkOSFile.cpp',
+ ]
+- if CONFIG['OS_TARGET'] == 'Linux':
++ if CONFIG['MOZ_X11'] == 1 or CONFIG['OS_TARGET'] == 'Linux':
+ CPP_SOURCES += [
+ 'SkFontHost_linux.cpp',
+- 'SkFontHost_tables.cpp',
+ 'SkThread_pthread.cpp',
+ 'SkTime_Unix.cpp',
+ ]
diff --git a/www/libxul/files/patch-bug784631 b/www/libxul/files/patch-bug784631
deleted file mode 100644
index 2c8a1560b877..000000000000
--- a/www/libxul/files/patch-bug784631
+++ /dev/null
@@ -1,52 +0,0 @@
-commit 66b3921
-Author: Terrence Cole <terrence@mozilla.com>
-Date: Tue Sep 11 12:31:04 2012 -0700
-
- Bug 784631 - Fix some clang build errors in SpiderMonkey; r=Waldo f=espindola
-
- Computed gotos are not in the C++ standard: clang and gcc differ on semantics.
----
- js/src/jsinterp.cpp | 3 ++-
- js/src/jsutil.h | 8 ++++----
- 2 files changed, 6 insertions(+), 5 deletions(-)
-
-diff --git js/src/jsinterp.cpp js/src/jsinterp.cpp
-index 0094c72..27a64a7 100644
---- js/src/jsinterp.cpp
-+++ js/src/jsinterp.cpp
-@@ -1231,6 +1231,7 @@ js::Interpret(JSContext *cx, StackFrame *entryFrame, InterpMode interpMode)
- RootedPropertyName rootName0(cx);
- RootedId rootId0(cx);
- RootedShape rootShape0(cx);
-+ DebugOnly<uint32_t> blockDepth;
-
- if (!entryFrame)
- entryFrame = regs.fp();
-@@ -3650,7 +3651,7 @@ BEGIN_CASE(JSOP_LEAVEBLOCK)
- BEGIN_CASE(JSOP_LEAVEFORLETIN)
- BEGIN_CASE(JSOP_LEAVEBLOCKEXPR)
- {
-- DebugOnly<uint32_t> blockDepth = regs.fp()->blockChain().stackDepth();
-+ blockDepth = regs.fp()->blockChain().stackDepth();
-
- regs.fp()->popBlock(cx);
-
-diff --git js/src/jsutil.h js/src/jsutil.h
-index 8838b6f..016a877 100644
---- js/src/jsutil.h
-+++ js/src/jsutil.h
-@@ -432,10 +432,10 @@ typedef size_t jsbitmap;
- #if defined(__clang__)
- # define JS_SILENCE_UNUSED_VALUE_IN_EXPR(expr) \
- JS_BEGIN_MACRO \
-- _Pragma("clang diagnostic push") \
-- _Pragma("clang diagnostic ignored \"-Wunused-value\"") \
-- expr; \
-- _Pragma("clang diagnostic pop") \
-+ _Pragma("(clang diagnostic push)") \
-+ _Pragma("(clang diagnostic ignored \"-Wunused-value\")") \
-+ {expr;} \
-+ _Pragma("(clang diagnostic pop)") \
- JS_END_MACRO
- #elif (__GNUC__ >= 5) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)
- # define JS_SILENCE_UNUSED_VALUE_IN_EXPR(expr) \
diff --git a/www/libxul/files/patch-bug786995 b/www/libxul/files/patch-bug786995
deleted file mode 100644
index 85b3abcc3d13..000000000000
--- a/www/libxul/files/patch-bug786995
+++ /dev/null
@@ -1,36 +0,0 @@
-# Bug 786995 - configure should check for SSSE3 support in the whole toolchain
-
---- configure.in.orig 2012-09-02 00:37:29.000000000 +0200
-+++ configure.in 2012-09-02 00:38:50.000000000 +0200
-@@ -1710,15 +1710,15 @@
- _MOZ_RTTI_FLAGS_OFF=-fno-rtti
-
- # Check for -mssse3 on $CC
-- AC_MSG_CHECKING([for -mssse3 option to $CC])
-- HAVE_COMPILER_FLAG_MSSSE3=
-+ AC_MSG_CHECKING([if toolchain supports -mssse3 option])
-+ HAVE_TOOLCHAIN_SUPPORT_MSSSE3=
- _SAVE_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS -mssse3"
-- AC_TRY_COMPILE(,,AC_MSG_RESULT([yes])
-- [HAVE_COMPILER_FLAG_MSSSE3=1],
-+ AC_TRY_COMPILE([asm ("pmaddubsw %xmm2,%xmm3");],,AC_MSG_RESULT([yes])
-+ [HAVE_TOOLCHAIN_SUPPORT_MSSSE3=1],
- AC_MSG_RESULT([no]))
- CFLAGS=$_SAVE_CFLAGS
-- AC_SUBST(HAVE_COMPILER_FLAG_MSSSE3)
-+ AC_SUBST(HAVE_TOOLCHAIN_SUPPORT_MSSSE3)
-
- # Turn on GNU-specific warnings:
- # -Wall - turn on a lot of warnings
---- gfx/skia/Makefile.in.orig 2012-09-02 00:39:00.000000000 +0200
-+++ gfx/skia/Makefile.in 2012-09-02 00:39:21.000000000 +0200
-@@ -365,7 +365,7 @@
- SkUtils_opts_SSE2.cpp \
- opts_check_SSE2.cpp \
- $(NULL)
--ifdef HAVE_COMPILER_FLAG_MSSSE3
-+ifdef HAVE_TOOLCHAIN_SUPPORT_MSSSE3
- DEFINES += -DSK_BUILD_SSSE3
- CPPSRCS += SkBitmapProcState_opts_SSSE3.cpp
- endif
diff --git a/www/libxul/files/patch-bug787904 b/www/libxul/files/patch-bug787904
deleted file mode 100644
index 55f7a6046813..000000000000
--- a/www/libxul/files/patch-bug787904
+++ /dev/null
@@ -1,12 +0,0 @@
---- js/src/gc/Heap.h
-+++ js/src/gc/Heap.h
-@@ -108,7 +108,8 @@ struct Cell
- * Bug 692267: Move page size definition to gc/Memory.h and include it
- * directly once jsgc.h is no longer an installed header.
- */
--#if defined(SOLARIS) && (defined(__sparc) || defined(__sparcv9))
-+#if (defined(SOLARIS) || defined(__FreeBSD__)) && \
-+ (defined(__sparc) || defined(__sparcv9) || defined(__ia64))
- const size_t PageShift = 13;
- #else
- const size_t PageShift = 12;
diff --git a/www/libxul/files/patch-bug788039 b/www/libxul/files/patch-bug788039
deleted file mode 100644
index a678de2eab4f..000000000000
--- a/www/libxul/files/patch-bug788039
+++ /dev/null
@@ -1,48 +0,0 @@
-# Bug 788039 - With no prefix search libevent via pkg-config.
-
---- configure.in~
-+++ configure.in
-@@ -3854,7 +3854,7 @@ fi
- dnl system libevent Support
- dnl ========================================================
- MOZ_ARG_WITH_STRING(system-libevent,
--[ --with-system-libevent=[PFX]
-+[ --with-system-libevent[=PFX]
- Use system libevent [installed at prefix PFX]],
- LIBEVENT_DIR=$withval)
-
-@@ -3863,10 +3863,11 @@ _SAVE_LDFLAGS=$LDFLAGS
- _SAVE_LIBS=$LIBS
- if test -z "$LIBEVENT_DIR" -o "$LIBEVENT_DIR" = no; then
- MOZ_NATIVE_LIBEVENT=
-+elif test "$LIBEVENT_DIR" = yes; then
-+ PKG_CHECK_MODULES(MOZ_LIBEVENT, libevent,
-+ MOZ_NATIVE_LIBEVENT=1,
-+ AC_MSG_ERROR([--with-system-libevent requested but libevent package not found]))
- else
-- if test "${LIBEVENT_DIR}" = "yes"; then
-- LIBEVENT_DIR=/usr
-- fi
- CFLAGS="-I${LIBEVENT_DIR}/include $CFLAGS"
- LDFLAGS="-L${LIBEVENT_DIR}/lib $LDFLAGS"
- MOZ_CHECK_HEADER(event.h,
-@@ -3876,16 +3877,16 @@ else
- AC_MSG_ERROR([--with-system-libevent requested but event.h not found]))
- AC_CHECK_LIB(event, event_init,
- [MOZ_NATIVE_LIBEVENT=1
-- MOZ_LIBEVENT_INCLUDES="${LIBEVENT_DIR}/include"
-+ MOZ_LIBEVENT_CFLAGS="-I${LIBEVENT_DIR}/include"
- MOZ_LIBEVENT_LIBS="-L${LIBEVENT_DIR}/lib -levent"],
-- [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_INCLUDES= MOZ_LIBEVENT_LIBS=])
-+ [MOZ_NATIVE_LIBEVENT= MOZ_LIBEVENT_CFLAGS= MOZ_LIBEVENT_LIBS=])
- fi
- CFLAGS=$_SAVE_CFLAGS
- LDFLAGS=$_SAVE_LDFLAGS
- LIBS=$_SAVE_LIBS
-
- AC_SUBST(MOZ_NATIVE_LIBEVENT)
--AC_SUBST(MOZ_LIBEVENT_INCLUDES)
-+AC_SUBST(MOZ_LIBEVENT_CFLAGS)
- AC_SUBST(MOZ_LIBEVENT_LIBS)
-
- dnl ========================================================
diff --git a/www/libxul/files/patch-bug788108 b/www/libxul/files/patch-bug788108
deleted file mode 100644
index 80ff18649882..000000000000
--- a/www/libxul/files/patch-bug788108
+++ /dev/null
@@ -1,20 +0,0 @@
---- content/base/public/nsContentUtils.h~
-+++ content/base/public/nsContentUtils.h
-@@ -18,17 +18,6 @@
- #include <ieeefp.h>
- #endif
-
--//A trick to handle IEEE floating point exceptions on FreeBSD - E.D.
--#ifdef __FreeBSD__
--#include <ieeefp.h>
--#if !defined(__i386__) && !defined(__x86_64__)
--static fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP;
--#else
--static fp_except_t allmask = FP_X_INV|FP_X_OFL|FP_X_UFL|FP_X_DZ|FP_X_IMP|FP_X_DNML;
--#endif
--static fp_except_t oldmask = fpsetmask(~allmask);
--#endif
--
- #include "nsAString.h"
- #include "nsIStatefulFrame.h"
- #include "nsNodeInfoManager.h"
diff --git a/www/libxul/files/patch-bug788955 b/www/libxul/files/patch-bug788955
deleted file mode 100644
index 57c5f12d7ed4..000000000000
--- a/www/libxul/files/patch-bug788955
+++ /dev/null
@@ -1,299 +0,0 @@
-diff --git Makefile.in Makefile.in
-index e341462..f75bd55 100644
---- Makefile.in
-+++ Makefile.in
-@@ -48,8 +48,10 @@ endif
- ifdef MOZ_MEMORY
- tier_base_dirs += memory/mozjemalloc
- ifdef MOZ_JEMALLOC
-+ifndef MOZ_NATIVE_JEMALLOC
- tier_base_dirs += memory/jemalloc
- endif
-+endif
- tier_base_dirs += memory/build
- endif
- ifndef MOZ_NATIVE_ZLIB
-diff --git allmakefiles.sh allmakefiles.sh
-index 6a9be4b..d2e49e3 100755
---- allmakefiles.sh
-+++ allmakefiles.sh
-@@ -59,7 +59,7 @@ if [ ! "$LIBXUL_SDK" ]; then
- mozglue/Makefile
- mozglue/build/Makefile
- "
-- if [ "$MOZ_JEMALLOC" ]; then
-+ if [ "$MOZ_JEMALLOC" -a -z "$MOZ_NATIVE_JEMALLOC" ]; then
- add_makefiles "
- memory/jemalloc/Makefile
- "
-diff --git configure.in configure.in
-index bb05782..2f32516 100644
---- configure.in
-+++ configure.in
-@@ -3711,21 +3711,22 @@ fi
-
- dnl Check for the existence of various allocation headers/functions
-
-+MALLOC_HEADERS="malloc.h malloc_np.h malloc/malloc.h sys/malloc.h"
- MALLOC_H=
--MOZ_CHECK_HEADER(malloc.h, [MALLOC_H=malloc.h])
--if test "$MALLOC_H" = ""; then
-- MOZ_CHECK_HEADER(malloc/malloc.h, [MALLOC_H=malloc/malloc.h])
-- if test "$MALLOC_H" = ""; then
-- MOZ_CHECK_HEADER(sys/malloc.h, [MALLOC_H=sys/malloc.h])
-+
-+for file in $MALLOC_HEADERS; do
-+ MOZ_CHECK_HEADER($file, [MALLOC_H=$file])
-+ if test "$MALLOC_H" != ""; then
-+ AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
-+ break
- fi
--fi
--if test "$MALLOC_H" != ""; then
-- AC_DEFINE_UNQUOTED(MALLOC_H, <$MALLOC_H>)
--fi
-+done
-
- MOZ_ALLOCATING_FUNCS="strndup posix_memalign memalign valloc"
- AC_CHECK_FUNCS(strndup posix_memalign memalign valloc)
-
-+AC_CHECK_FUNCS(malloc_usable_size)
-+
- dnl See if compiler supports some gcc-style attributes
-
- AC_CACHE_CHECK(for __attribute__((always_inline)),
-@@ -6939,6 +6940,18 @@ else
- fi
-
- if test -z "$MOZ_MEMORY"; then
-+ if test -n "$MOZ_JEMALLOC"; then
-+ MOZ_NATIVE_JEMALLOC=1
-+ AC_CHECK_FUNCS(mallctl nallocm,,
-+ [MOZ_NATIVE_JEMALLOC=
-+ break])
-+ if test -n "$MOZ_NATIVE_JEMALLOC"; then
-+ MOZ_MEMORY=1
-+ AC_DEFINE(MOZ_MEMORY)
-+ AC_DEFINE(MOZ_JEMALLOC)
-+ AC_DEFINE(MOZ_NATIVE_JEMALLOC)
-+ fi
-+ fi
- case "${target}" in
- *-mingw*)
- if test -z "$WIN32_REDIST_DIR" -a -z "$MOZ_DEBUG"; then
-@@ -7033,6 +7046,7 @@ else
- fi # MOZ_MEMORY
- AC_SUBST(MOZ_MEMORY)
- AC_SUBST(MOZ_JEMALLOC)
-+AC_SUBST(MOZ_NATIVE_JEMALLOC)
- AC_SUBST(MOZ_GLUE_LDFLAGS)
- AC_SUBST(MOZ_GLUE_PROGRAM_LDFLAGS)
- AC_SUBST(WIN32_CRT_LIBS)
-@@ -8820,10 +8834,22 @@ fi
-
- # Run jemalloc configure script
-
--if test "$MOZ_JEMALLOC" -a "$MOZ_MEMORY"; then
-+if test -z "$MOZ_NATIVE_JEMALLOC" -a "$MOZ_JEMALLOC" -a "$MOZ_MEMORY" ; then
- ac_configure_args="$_SUBDIR_CONFIG_ARGS --build=$build --host=$target --enable-stats --with-jemalloc-prefix=je_"
-- if test "$OS_ARCH" = "Linux"; then
-- MANGLE="malloc calloc valloc free realloc memalign posix_memalign malloc_usable_size"
-+ case "$OS_ARCH" in
-+ Linux|DragonFly|FreeBSD|NetBSD|OpenBSD)
-+ MANGLE="malloc calloc valloc free realloc posix_memalign"
-+ case "$OS_ARCH" in
-+ Linux)
-+ MANGLE="$MANGLE memalign malloc_usable_size"
-+ ;;
-+ FreeBSD)
-+ MANGLE="$MANGLE malloc_usable_size"
-+ ;;
-+ esac
-+ ;;
-+ esac
-+ if test -n "$MANGLE"; then
- MANGLED=
- JEMALLOC_WRAPPER=
- if test -n "$_WRAP_MALLOC"; then
-diff --git memory/build/Makefile.in memory/build/Makefile.in
-index dca0f48..af93ee0 100644
---- memory/build/Makefile.in
-+++ memory/build/Makefile.in
-@@ -22,7 +22,9 @@ CSRCS = extraMallocFuncs.c
-
- ifdef MOZ_JEMALLOC
- CSRCS += mozjemalloc_compat.c
-+ifndef MOZ_NATIVE_JEMALLOC
- SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,jemalloc,$(DEPTH)/memory/jemalloc)
-+endif
- else
- SHARED_LIBRARY_LIBS += $(call EXPAND_LIBNAME_PATH,jemalloc,$(DEPTH)/memory/mozjemalloc)
- endif
-diff --git memory/build/extraMallocFuncs.c memory/build/extraMallocFuncs.c
-index 9d87629..03c8320 100644
---- memory/build/extraMallocFuncs.c
-+++ memory/build/extraMallocFuncs.c
-@@ -94,8 +94,16 @@ wrap(wcsdup)(const wchar_t *src)
- #endif
-
- #ifdef MOZ_JEMALLOC
-+
-+#undef wrap
-+#if defined(MOZ_NATIVE_JEMALLOC)
-+#define wrap(a) a
-+#else
-+#define wrap(a) je_ ## a
-+#endif
-+
- /* Override some jemalloc defaults */
--const char *je_malloc_conf = "narenas:1,lg_chunk:20";
-+MOZ_EXPORT_DATA(const char *) wrap(malloc_conf) = "narenas:1,lg_chunk:20";
-
- #ifdef ANDROID
- #include <android/log.h>
-diff --git memory/build/mozjemalloc_compat.c memory/build/mozjemalloc_compat.c
-index 10a845a..94ad96e 100644
---- memory/build/mozjemalloc_compat.c
-+++ memory/build/mozjemalloc_compat.c
-@@ -5,14 +5,21 @@
- #include "mozilla/Types.h"
- #include "jemalloc_types.h"
-
--extern int je_mallctl(const char*, void*, size_t*, void*, size_t);
-+#if defined(MOZ_NATIVE_JEMALLOC)
-+#define wrap(a) a
-+#else
-+#define wrap(a) je_ ## a
-+#endif
-
--MOZ_EXPORT_API (void)
-+extern MOZ_IMPORT_API(int)
-+wrap(mallctl)(const char*, void*, size_t*, void*, size_t);
-+
-+MOZ_EXPORT_API(void)
- jemalloc_stats(jemalloc_stats_t *stats)
- {
- size_t size = sizeof(stats->mapped);
-- je_mallctl("stats.mapped", &stats->mapped, &size, NULL, 0);
-- je_mallctl("stats.allocated", &stats->allocated, &size, NULL, 0);
-+ wrap(mallctl)("stats.mapped", &stats->mapped, &size, NULL, 0);
-+ wrap(mallctl)("stats.allocated", &stats->allocated, &size, NULL, 0);
- stats->committed = -1;
- stats->dirty = -1;
- }
-diff --git memory/jemalloc/src/src/mutex.c memory/jemalloc/src/src/mutex.c
-index 37a843e..55e18c2 100644
---- memory/jemalloc/src/src/mutex.c
-+++ memory/jemalloc/src/src/mutex.c
-@@ -64,7 +64,7 @@ pthread_create(pthread_t *__restrict thread,
- /******************************************************************************/
-
- #ifdef JEMALLOC_MUTEX_INIT_CB
--int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex,
-+JEMALLOC_EXPORT int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex,
- void *(calloc_cb)(size_t, size_t));
- #endif
-
-diff --git memory/mozalloc/mozalloc.cpp memory/mozalloc/mozalloc.cpp
-index 5b61050b..5b3399a 100644
---- memory/mozalloc/mozalloc.cpp
-+++ memory/mozalloc/mozalloc.cpp
-@@ -12,16 +12,13 @@
- #include <sys/types.h>
-
- #if defined(MALLOC_H)
--# include MALLOC_H // for memalign, valloc where available
-+# include MALLOC_H // for memalign, valloc, malloc_size, malloc_usable_size
- #endif // if defined(MALLOC_H)
- #include <stddef.h> // for size_t
- #include <stdlib.h> // for malloc, free
- #if defined(XP_UNIX)
- # include <unistd.h> // for valloc on *BSD
- #endif //if defined(XP_UNIX)
--#if defined(__FreeBSD__)
--# include <malloc_np.h> // for malloc_usable_size
--#endif // if defined(__FreeBSD__)
-
- #if defined(XP_WIN) || (defined(XP_OS2) && defined(__declspec))
- # define MOZALLOC_EXPORT __declspec(dllexport)
-@@ -213,8 +210,7 @@ moz_malloc_usable_size(void *ptr)
-
- #if defined(XP_MACOSX)
- return malloc_size(ptr);
--#elif defined(MOZ_MEMORY) || (defined(XP_LINUX) && !defined(ANDROID)) || defined(__FreeBSD__)
-- // Android bionic libc doesn't have malloc_usable_size.
-+#elif defined(HAVE_MALLOC_USABLE_SIZE) || defined(MOZ_MEMORY)
- return malloc_usable_size(ptr);
- #elif defined(XP_WIN)
- return _msize(ptr);
-diff --git memory/mozjemalloc/jemalloc.h memory/mozjemalloc/jemalloc.h
-index f0e0878..2486e83 100644
---- memory/mozjemalloc/jemalloc.h
-+++ memory/mozjemalloc/jemalloc.h
-@@ -37,22 +37,29 @@
- #endif
- #include "jemalloc_types.h"
-
-+#if defined(MOZ_NATIVE_JEMALLOC)
-+#define wrap(a) a
-+#else
-+#define wrap(a) je_ ## a
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-
--#if defined(MOZ_MEMORY_LINUX)
-+#if defined(MOZ_NATIVE_JEMALLOC) \
-+ || defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD)
- __attribute__((weak))
- #endif
- void jemalloc_stats(jemalloc_stats_t *stats);
-
- /* Computes the usable size in advance. */
- #if !defined(MOZ_MEMORY_DARWIN)
--#if defined(MOZ_MEMORY_LINUX)
-+#if defined(MOZ_MEMORY_LINUX) || defined(MOZ_MEMORY_BSD)
- __attribute__((weak))
- #endif
- #if defined(MOZ_JEMALLOC)
--int je_nallocm(size_t *rsize, size_t size, int flags);
-+MOZ_IMPORT_API(int) wrap(nallocm)(size_t *rsize, size_t size, int flags);
- #else
- size_t je_malloc_good_size(size_t size);
- #endif
-@@ -62,11 +69,11 @@ static inline size_t je_malloc_usable_size_in_advance(size_t size) {
- #if defined(MOZ_MEMORY_DARWIN)
- return malloc_good_size(size);
- #elif defined(MOZ_JEMALLOC)
-- if (je_nallocm) {
-+ if (wrap(nallocm)) {
- size_t ret;
- if (size == 0)
- size = 1;
-- if (!je_nallocm(&ret, size, 0))
-+ if (!wrap(nallocm)(&ret, size, 0))
- return ret;
- }
- return size;
-@@ -113,4 +120,6 @@ void jemalloc_purge_freed_pages();
- } /* extern "C" */
- #endif
-
-+#undef wrap
-+
- #endif /* _JEMALLOC_H_ */
-diff --git mozglue/build/Makefile.in mozglue/build/Makefile.in
-index c333647..15ba505 100644
---- mozglue/build/Makefile.in
-+++ mozglue/build/Makefile.in
-@@ -23,7 +23,7 @@ FORCE_STATIC_LIB = 1
- endif
-
- # Keep jemalloc separated when mozglue is statically linked
--ifeq (1_1,$(MOZ_MEMORY)_$(FORCE_SHARED_LIB))
-+ifeq (1_1,$(MOZ_MEMORY)_$(or $(MOZ_NATIVE_JEMALLOC),$(FORCE_SHARED_LIB)))
- SHARED_LIBRARY_LIBS = $(call EXPAND_LIBNAME_PATH,memory,$(DEPTH)/memory/build)
- else
- # Temporary, until bug 662814 lands
diff --git a/www/libxul/files/patch-bug789436 b/www/libxul/files/patch-bug789436
deleted file mode 100644
index 6d1e7069b858..000000000000
--- a/www/libxul/files/patch-bug789436
+++ /dev/null
@@ -1,27 +0,0 @@
---- toolkit/xre/nsAppRunner.cpp~
-+++ toolkit/xre/nsAppRunner.cpp
-@@ -1388,11 +1388,6 @@ static int MSCRTReportHook( int aReportType, char *aMessage, int *oReturnValue)
-
- #endif
-
--#if defined(FREEBSD)
--// pick up fpsetmask prototype.
--#include <ieeefp.h>
--#endif
--
- static inline void
- DumpVersion()
- {
-@@ -4136,12 +4131,5 @@ SetupErrorHandling(const char* progname)
-
- // Unbuffer stdout, needed for tinderbox tests.
- setbuf(stdout, 0);
--
--#if defined(FREEBSD)
-- // Disable all SIGFPE's on FreeBSD, as it has non-IEEE-conformant fp
-- // trap behavior that trips up on floating-point tests performed by
-- // the JS engine. See bugzilla bug 9967 details.
-- fpsetmask(0);
--#endif
- }
-
diff --git a/www/libxul/files/patch-bug789656 b/www/libxul/files/patch-bug789656
deleted file mode 100644
index ebc567ef27ac..000000000000
--- a/www/libxul/files/patch-bug789656
+++ /dev/null
@@ -1,11 +0,0 @@
---- media/libopus/Makefile.in~
-+++ media/libopus/Makefile.in
-@@ -20,7 +20,7 @@ DEFINES += \
- -Drestrict= \
- $(NULL)
-
--ifneq ($(filter $(OS_ARCH),Linux Darwin),)
-+ifneq ($(filter $(OS_ARCH),Linux Darwin DragonFly FreeBSD NetBSD OpenBSD),)
- DEFINES += -DHAVE_LRINTF
- endif
- ifeq ($(OS_ARCH), WINNT)
diff --git a/www/libxul/files/patch-bug789693 b/www/libxul/files/patch-bug789693
deleted file mode 100644
index 1d2b790a35d5..000000000000
--- a/www/libxul/files/patch-bug789693
+++ /dev/null
@@ -1,109 +0,0 @@
---- toolkit/components/startup/nsAppStartup.cpp
-+++ toolkit/components/startup/nsAppStartup.cpp
-@@ -50,18 +50,41 @@
- #include <sys/syscall.h>
- #endif
-
--#ifdef XP_MACOSX
-+#if defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \
-+ || defined(__NetBSD__) || defined(__OpenBSD__)
-+#include <sys/param.h>
- #include <sys/sysctl.h>
- #endif
-
--#ifdef __OpenBSD__
--#include <sys/param.h>
--#include <sys/sysctl.h>
-+#if defined(__DragonFly__) || defined(__FreeBSD__)
-+#include <sys/user.h>
- #endif
-
- #include "mozilla/Telemetry.h"
- #include "mozilla/StartupTimeline.h"
-
-+#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_START_SEC kp_proc.p_un.__p_starttime.tv_sec
-+#define KP_START_USEC kp_proc.p_un.__p_starttime.tv_usec
-+#elif defined(__DragonFly__)
-+#define KP_START_SEC kp_start.tv_sec
-+#define KP_START_USEC kp_start.tv_usec
-+#elif defined(__FreeBSD__)
-+#define KP_START_SEC ki_start.tv_sec
-+#define KP_START_USEC ki_start.tv_usec
-+#else
-+#define KP_START_SEC p_ustart_sec
-+#define KP_START_USEC p_ustart_usec
-+#endif
-+
- static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
-
- #define kPrefLastSuccess "toolkit.startup.last_success"
-@@ -836,42 +859,30 @@ CalculateProcessCreationTimestamp()
- #endif
- return timestamp;
- }
--#elif defined(XP_MACOSX)
-+#elif defined(XP_MACOSX) || defined(__DragonFly__) || defined(__FreeBSD__) \
-+ || defined(__NetBSD__) || defined(__OpenBSD__)
- static PRTime
- CalculateProcessCreationTimestamp()
- {
-- int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
-- size_t buffer_size;
-- if (sysctl(mib, 4, NULL, &buffer_size, NULL, 0))
-- return 0;
-+ int mib[] = {
-+ CTL_KERN,
-+ KERN_PROC,
-+ KERN_PROC_PID,
-+ getpid(),
-+#if defined(__NetBSD__) || defined(__OpenBSD__)
-+ sizeof(KINFO_PROC),
-+ 1,
-+#endif
-+ };
-+ u_int miblen = sizeof(mib) / sizeof(mib[0]);
-
-- struct kinfo_proc *proc = (kinfo_proc*) malloc(buffer_size);
-- if (sysctl(mib, 4, proc, &buffer_size, NULL, 0)) {
-- free(proc);
-- return 0;
-- }
-- PRTime starttime = static_cast<PRTime>(proc->kp_proc.p_un.__p_starttime.tv_sec) * PR_USEC_PER_SEC;
-- starttime += proc->kp_proc.p_un.__p_starttime.tv_usec;
-- free(proc);
-- return starttime;
--}
--#elif defined(__OpenBSD__)
--static PRTime
--CalculateProcessCreationTimestamp()
--{
-- int mib[6] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid(), sizeof(struct kinfo_proc), 1 };
-- size_t buffer_size;
-- if (sysctl(mib, 6, NULL, &buffer_size, NULL, 0))
-+ KINFO_PROC proc;
-+ size_t buffer_size = sizeof(proc);
-+ if (sysctl(mib, miblen, &proc, &buffer_size, NULL, 0))
- return 0;
-
-- struct kinfo_proc *proc = (struct kinfo_proc*) malloc(buffer_size);
-- if (sysctl(mib, 6, proc, &buffer_size, NULL, 0)) {
-- free(proc);
-- return 0;
-- }
-- PRTime starttime = static_cast<PRTime>(proc->p_ustart_sec) * PR_USEC_PER_SEC;
-- starttime += proc->p_ustart_usec;
-- free(proc);
-+ PRTime starttime = static_cast<PRTime>(proc.KP_START_SEC) * PR_USEC_PER_SEC;
-+ starttime += proc.KP_START_USEC;
- return starttime;
- }
- #else
diff --git a/www/libxul/files/patch-bug791305 b/www/libxul/files/patch-bug791305
index 534e7f2d9cac..ef75e4a17bb5 100644
--- a/www/libxul/files/patch-bug791305
+++ b/www/libxul/files/patch-bug791305
@@ -15,93 +15,383 @@ Date: Fri Sep 14 15:54:55 2012 -0400
image/decoders/nsJPEGDecoder.cpp | 311 ++-------------------------------------
2 files changed, 20 insertions(+), 297 deletions(-)
+diff --git configure.in configure.in
+index f0aeb5d..1c01010 100644
+--- configure.in
++++ configure.in
+@@ -4027,11 +4027,7 @@ if test "$MOZ_NATIVE_JPEG" = 1; then
+ #include <jpeglib.h> ],
+ [ #if JPEG_LIB_VERSION < $MOZJPEG
+ #error "Insufficient JPEG library version ($MOZJPEG required)."
+- #endif
+- #ifndef JCS_EXTENSIONS
+- #error "libjpeg-turbo JCS_EXTENSIONS required"
+- #endif
+- ],
++ #endif ],
+ MOZ_NATIVE_JPEG=1,
+ AC_MSG_ERROR([Insufficient JPEG library version for --with-system-jpeg]))
+ fi
diff --git image/decoders/nsJPEGDecoder.cpp image/decoders/nsJPEGDecoder.cpp
-index c1fb515..1d2a259 100644
+index 8fa8200..1d2a259 100644
--- image/decoders/nsJPEGDecoder.cpp
+++ image/decoders/nsJPEGDecoder.cpp
-@@ -22,6 +22,13 @@
+@@ -21,13 +21,28 @@
+
extern "C" {
#include "iccjpeg.h"
+-}
+#ifdef JCS_EXTENSIONS
-+#if defined(IS_BIG_ENDIAN)
-+#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB
-+#else
-+#define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX
-+#endif
+ #if defined(IS_BIG_ENDIAN)
+ #define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_XRGB
+ #else
+ #define MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB JCS_EXT_BGRX
+ #endif
+#else
- /* Colorspace conversion (copied from jpegint.h) */
- struct jpeg_color_deconverter {
- JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
-@@ -34,6 +41,7 @@ METHODDEF(void)
- ycc_rgb_convert_argb (j_decompress_ptr cinfo,
- JSAMPIMAGE input_buf, JDIMENSION input_row,
- JSAMPARRAY output_buf, int num_rows);
++/* Colorspace conversion (copied from jpegint.h) */
++struct jpeg_color_deconverter {
++ JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
++ JMETHOD(void, color_convert, (j_decompress_ptr cinfo,
++ JSAMPIMAGE input_buf, JDIMENSION input_row,
++ JSAMPARRAY output_buf, int num_rows));
++};
++
++METHODDEF(void)
++ycc_rgb_convert_argb (j_decompress_ptr cinfo,
++ JSAMPIMAGE input_buf, JDIMENSION input_row,
++ JSAMPARRAY output_buf, int num_rows);
+#endif
- }
++}
static void cmyk_convert_rgb(JSAMPROW row, JDIMENSION width);
-@@ -329,7 +340,18 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount)
+
+@@ -324,6 +340,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, uint32_t aCount)
case JCS_GRAYSCALE:
case JCS_RGB:
case JCS_YCbCr:
+#ifdef JCS_EXTENSIONS
-+ // if we're not color managing we can decode directly to
-+ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB
-+ if (mCMSMode != eCMSMode_All) {
-+ mInfo.out_color_space = MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB;
-+ mInfo.out_color_components = 4;
-+ } else {
-+ mInfo.out_color_space = JCS_RGB;
-+ }
+ // if we're not color managing we can decode directly to
+ // MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB
+ if (mCMSMode != eCMSMode_All) {
+@@ -332,6 +349,9 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, uint32_t aCount)
+ } else {
+ mInfo.out_color_space = JCS_RGB;
+ }
+#else
- mInfo.out_color_space = JCS_RGB;
++ mInfo.out_color_space = JCS_RGB;
+#endif
break;
case JCS_CMYK:
case JCS_YCCK:
-@@ -397,6 +419,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount)
+@@ -399,6 +419,15 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, uint32_t aCount)
return; /* I/O suspension */
}
+#ifndef JCS_EXTENSIONS
- /* Force to use our YCbCr to Packed RGB converter when possible */
- if (!mTransform && (mCMSMode != eCMSMode_All) &&
- mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) {
-@@ -404,6 +427,7 @@ nsJPEGDecoder::WriteInternal(const char *aBuffer, PRUint32 aCount)
- mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/
- mInfo.cconvert->color_convert = ycc_rgb_convert_argb;
- }
++ /* Force to use our YCbCr to Packed RGB converter when possible */
++ if (!mTransform && (mCMSMode != eCMSMode_All) &&
++ mInfo.jpeg_color_space == JCS_YCbCr && mInfo.out_color_space == JCS_RGB) {
++ /* Special case for the most common case: transform from YCbCr direct into packed ARGB */
++ mInfo.out_color_components = 4; /* Packed ARGB pixels are always 4 bytes...*/
++ mInfo.cconvert->color_convert = ycc_rgb_convert_argb;
++ }
+#endif
/* If this is a progressive JPEG ... */
mState = mInfo.buffered_image ? JPEG_DECOMPRESS_PROGRESSIVE : JPEG_DECOMPRESS_SEQUENTIAL;
-@@ -542,7 +566,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend)
- PRUint32 *imageRow = ((PRUint32*)mImageData) +
+@@ -544,7 +573,11 @@ nsJPEGDecoder::OutputScanlines(bool* suspend)
+ uint32_t *imageRow = ((uint32_t*)mImageData) +
(mInfo.output_scanline * mInfo.output_width);
+#ifdef JCS_EXTENSIONS
-+ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) {
+ if (mInfo.out_color_space == MOZ_JCS_EXT_NATIVE_ENDIAN_XRGB) {
+#else
- if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) {
++ if (mInfo.cconvert->color_convert == ycc_rgb_convert_argb) {
+#endif
/* Special case: scanline will be directly converted into packed ARGB */
if (jpeg_read_scanlines(&mInfo, (JSAMPARRAY)&imageRow, 1) != 1) {
*suspend = true; /* suspend */
-@@ -858,6 +887,7 @@ term_source (j_decompress_ptr jd)
+@@ -854,6 +887,282 @@ term_source (j_decompress_ptr jd)
} // namespace mozilla
+#ifndef JCS_EXTENSIONS
- /**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/
-
- /*
-@@ -1130,7 +1160,8 @@ ycc_rgb_convert_argb (j_decompress_ptr cinfo,
- }
- }
- }
++/**************** YCbCr -> Cairo's RGB24/ARGB32 conversion: most common case **************/
++
++/*
++ * YCbCr is defined per CCIR 601-1, except that Cb and Cr are
++ * normalized to the range 0..MAXJSAMPLE rather than -0.5 .. 0.5.
++ * The conversion equations to be implemented are therefore
++ * R = Y + 1.40200 * Cr
++ * G = Y - 0.34414 * Cb - 0.71414 * Cr
++ * B = Y + 1.77200 * Cb
++ * where Cb and Cr represent the incoming values less CENTERJSAMPLE.
++ * (These numbers are derived from TIFF 6.0 section 21, dated 3-June-92.)
++ *
++ * To avoid floating-point arithmetic, we represent the fractional constants
++ * as integers scaled up by 2^16 (about 4 digits precision); we have to divide
++ * the products by 2^16, with appropriate rounding, to get the correct answer.
++ * Notice that Y, being an integral input, does not contribute any fraction
++ * so it need not participate in the rounding.
++ *
++ * For even more speed, we avoid doing any multiplications in the inner loop
++ * by precalculating the constants times Cb and Cr for all possible values.
++ * For 8-bit JSAMPLEs this is very reasonable (only 256 entries per table);
++ * for 12-bit samples it is still acceptable. It's not very reasonable for
++ * 16-bit samples, but if you want lossless storage you shouldn't be changing
++ * colorspace anyway.
++ * The Cr=>R and Cb=>B values can be rounded to integers in advance; the
++ * values for the G calculation are left scaled up, since we must add them
++ * together before rounding.
++ */
++
++#define SCALEBITS 16 /* speediest right-shift on some machines */
++
++/* Use static tables for color processing. */
++/* Four tables, each 256 entries of 4 bytes totals 4K which is not bad... */
++
++const int Cr_r_tab[(MAXJSAMPLE+1) * sizeof(int)] ={
++ -0xb3, -0xb2, -0xb1, -0xaf, -0xae, -0xac,
++ -0xab, -0xaa, -0xa8, -0xa7, -0xa5, -0xa4,
++ -0xa3, -0xa1, -0xa0, -0x9e, -0x9d, -0x9c,
++ -0x9a, -0x99, -0x97, -0x96, -0x95, -0x93,
++ -0x92, -0x90, -0x8f, -0x8e, -0x8c, -0x8b,
++ -0x89, -0x88, -0x87, -0x85, -0x84, -0x82,
++ -0x81, -0x80, -0x7e, -0x7d, -0x7b, -0x7a,
++ -0x79, -0x77, -0x76, -0x74, -0x73, -0x72,
++ -0x70, -0x6f, -0x6d, -0x6c, -0x6b, -0x69,
++ -0x68, -0x66, -0x65, -0x64, -0x62, -0x61,
++ -0x5f, -0x5e, -0x5d, -0x5b, -0x5a, -0x58,
++ -0x57, -0x56, -0x54, -0x53, -0x51, -0x50,
++ -0x4f, -0x4d, -0x4c, -0x4a, -0x49, -0x48,
++ -0x46, -0x45, -0x43, -0x42, -0x40, -0x3f,
++ -0x3e, -0x3c, -0x3b, -0x39, -0x38, -0x37,
++ -0x35, -0x34, -0x32, -0x31, -0x30, -0x2e,
++ -0x2d, -0x2b, -0x2a, -0x29, -0x27, -0x26,
++ -0x24, -0x23, -0x22, -0x20, -0x1f, -0x1d,
++ -0x1c, -0x1b, -0x19, -0x18, -0x16, -0x15,
++ -0x14, -0x12, -0x11, -0x0f, -0x0e, -0x0d,
++ -0x0b, -0x0a, -0x08, -0x07, -0x06, -0x04,
++ -0x03, -0x01, 0x00, 0x01, 0x03, 0x04,
++ 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x0d,
++ 0x0e, 0x0f, 0x11, 0x12, 0x14, 0x15,
++ 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1d,
++ 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26,
++ 0x27, 0x29, 0x2a, 0x2b, 0x2d, 0x2e,
++ 0x30, 0x31, 0x32, 0x34, 0x35, 0x37,
++ 0x38, 0x39, 0x3b, 0x3c, 0x3e, 0x3f,
++ 0x40, 0x42, 0x43, 0x45, 0x46, 0x48,
++ 0x49, 0x4a, 0x4c, 0x4d, 0x4f, 0x50,
++ 0x51, 0x53, 0x54, 0x56, 0x57, 0x58,
++ 0x5a, 0x5b, 0x5d, 0x5e, 0x5f, 0x61,
++ 0x62, 0x64, 0x65, 0x66, 0x68, 0x69,
++ 0x6b, 0x6c, 0x6d, 0x6f, 0x70, 0x72,
++ 0x73, 0x74, 0x76, 0x77, 0x79, 0x7a,
++ 0x7b, 0x7d, 0x7e, 0x80, 0x81, 0x82,
++ 0x84, 0x85, 0x87, 0x88, 0x89, 0x8b,
++ 0x8c, 0x8e, 0x8f, 0x90, 0x92, 0x93,
++ 0x95, 0x96, 0x97, 0x99, 0x9a, 0x9c,
++ 0x9d, 0x9e, 0xa0, 0xa1, 0xa3, 0xa4,
++ 0xa5, 0xa7, 0xa8, 0xaa, 0xab, 0xac,
++ 0xae, 0xaf, 0xb1, 0xb2,
++ };
++
++const int Cb_b_tab[(MAXJSAMPLE+1) * sizeof(int)] ={
++ -0xe3, -0xe1, -0xdf, -0xde, -0xdc, -0xda,
++ -0xd8, -0xd6, -0xd5, -0xd3, -0xd1, -0xcf,
++ -0xce, -0xcc, -0xca, -0xc8, -0xc6, -0xc5,
++ -0xc3, -0xc1, -0xbf, -0xbe, -0xbc, -0xba,
++ -0xb8, -0xb7, -0xb5, -0xb3, -0xb1, -0xaf,
++ -0xae, -0xac, -0xaa, -0xa8, -0xa7, -0xa5,
++ -0xa3, -0xa1, -0x9f, -0x9e, -0x9c, -0x9a,
++ -0x98, -0x97, -0x95, -0x93, -0x91, -0x90,
++ -0x8e, -0x8c, -0x8a, -0x88, -0x87, -0x85,
++ -0x83, -0x81, -0x80, -0x7e, -0x7c, -0x7a,
++ -0x78, -0x77, -0x75, -0x73, -0x71, -0x70,
++ -0x6e, -0x6c, -0x6a, -0x69, -0x67, -0x65,
++ -0x63, -0x61, -0x60, -0x5e, -0x5c, -0x5a,
++ -0x59, -0x57, -0x55, -0x53, -0x52, -0x50,
++ -0x4e, -0x4c, -0x4a, -0x49, -0x47, -0x45,
++ -0x43, -0x42, -0x40, -0x3e, -0x3c, -0x3a,
++ -0x39, -0x37, -0x35, -0x33, -0x32, -0x30,
++ -0x2e, -0x2c, -0x2b, -0x29, -0x27, -0x25,
++ -0x23, -0x22, -0x20, -0x1e, -0x1c, -0x1b,
++ -0x19, -0x17, -0x15, -0x13, -0x12, -0x10,
++ -0x0e, -0x0c, -0x0b, -0x09, -0x07, -0x05,
++ -0x04, -0x02, 0x00, 0x02, 0x04, 0x05,
++ 0x07, 0x09, 0x0b, 0x0c, 0x0e, 0x10,
++ 0x12, 0x13, 0x15, 0x17, 0x19, 0x1b,
++ 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x25,
++ 0x27, 0x29, 0x2b, 0x2c, 0x2e, 0x30,
++ 0x32, 0x33, 0x35, 0x37, 0x39, 0x3a,
++ 0x3c, 0x3e, 0x40, 0x42, 0x43, 0x45,
++ 0x47, 0x49, 0x4a, 0x4c, 0x4e, 0x50,
++ 0x52, 0x53, 0x55, 0x57, 0x59, 0x5a,
++ 0x5c, 0x5e, 0x60, 0x61, 0x63, 0x65,
++ 0x67, 0x69, 0x6a, 0x6c, 0x6e, 0x70,
++ 0x71, 0x73, 0x75, 0x77, 0x78, 0x7a,
++ 0x7c, 0x7e, 0x80, 0x81, 0x83, 0x85,
++ 0x87, 0x88, 0x8a, 0x8c, 0x8e, 0x90,
++ 0x91, 0x93, 0x95, 0x97, 0x98, 0x9a,
++ 0x9c, 0x9e, 0x9f, 0xa1, 0xa3, 0xa5,
++ 0xa7, 0xa8, 0xaa, 0xac, 0xae, 0xaf,
++ 0xb1, 0xb3, 0xb5, 0xb7, 0xb8, 0xba,
++ 0xbc, 0xbe, 0xbf, 0xc1, 0xc3, 0xc5,
++ 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xcf,
++ 0xd1, 0xd3, 0xd5, 0xd6, 0xd8, 0xda,
++ 0xdc, 0xde, 0xdf, 0xe1,
++ };
++
++const int Cr_g_tab[(MAXJSAMPLE+1) * sizeof(int)] ={
++ 0x5b6900, 0x5ab22e, 0x59fb5c, 0x59448a, 0x588db8, 0x57d6e6,
++ 0x572014, 0x566942, 0x55b270, 0x54fb9e, 0x5444cc, 0x538dfa,
++ 0x52d728, 0x522056, 0x516984, 0x50b2b2, 0x4ffbe0, 0x4f450e,
++ 0x4e8e3c, 0x4dd76a, 0x4d2098, 0x4c69c6, 0x4bb2f4, 0x4afc22,
++ 0x4a4550, 0x498e7e, 0x48d7ac, 0x4820da, 0x476a08, 0x46b336,
++ 0x45fc64, 0x454592, 0x448ec0, 0x43d7ee, 0x43211c, 0x426a4a,
++ 0x41b378, 0x40fca6, 0x4045d4, 0x3f8f02, 0x3ed830, 0x3e215e,
++ 0x3d6a8c, 0x3cb3ba, 0x3bfce8, 0x3b4616, 0x3a8f44, 0x39d872,
++ 0x3921a0, 0x386ace, 0x37b3fc, 0x36fd2a, 0x364658, 0x358f86,
++ 0x34d8b4, 0x3421e2, 0x336b10, 0x32b43e, 0x31fd6c, 0x31469a,
++ 0x308fc8, 0x2fd8f6, 0x2f2224, 0x2e6b52, 0x2db480, 0x2cfdae,
++ 0x2c46dc, 0x2b900a, 0x2ad938, 0x2a2266, 0x296b94, 0x28b4c2,
++ 0x27fdf0, 0x27471e, 0x26904c, 0x25d97a, 0x2522a8, 0x246bd6,
++ 0x23b504, 0x22fe32, 0x224760, 0x21908e, 0x20d9bc, 0x2022ea,
++ 0x1f6c18, 0x1eb546, 0x1dfe74, 0x1d47a2, 0x1c90d0, 0x1bd9fe,
++ 0x1b232c, 0x1a6c5a, 0x19b588, 0x18feb6, 0x1847e4, 0x179112,
++ 0x16da40, 0x16236e, 0x156c9c, 0x14b5ca, 0x13fef8, 0x134826,
++ 0x129154, 0x11da82, 0x1123b0, 0x106cde, 0x0fb60c, 0x0eff3a,
++ 0x0e4868, 0x0d9196, 0x0cdac4, 0x0c23f2, 0x0b6d20, 0x0ab64e,
++ 0x09ff7c, 0x0948aa, 0x0891d8, 0x07db06, 0x072434, 0x066d62,
++ 0x05b690, 0x04ffbe, 0x0448ec, 0x03921a, 0x02db48, 0x022476,
++ 0x016da4, 0x00b6d2, 0x000000, -0x00b6d2, -0x016da4, -0x022476,
++ -0x02db48, -0x03921a, -0x0448ec, -0x04ffbe, -0x05b690, -0x066d62,
++ -0x072434, -0x07db06, -0x0891d8, -0x0948aa, -0x09ff7c, -0x0ab64e,
++ -0x0b6d20, -0x0c23f2, -0x0cdac4, -0x0d9196, -0x0e4868, -0x0eff3a,
++ -0x0fb60c, -0x106cde, -0x1123b0, -0x11da82, -0x129154, -0x134826,
++ -0x13fef8, -0x14b5ca, -0x156c9c, -0x16236e, -0x16da40, -0x179112,
++ -0x1847e4, -0x18feb6, -0x19b588, -0x1a6c5a, -0x1b232c, -0x1bd9fe,
++ -0x1c90d0, -0x1d47a2, -0x1dfe74, -0x1eb546, -0x1f6c18, -0x2022ea,
++ -0x20d9bc, -0x21908e, -0x224760, -0x22fe32, -0x23b504, -0x246bd6,
++ -0x2522a8, -0x25d97a, -0x26904c, -0x27471e, -0x27fdf0, -0x28b4c2,
++ -0x296b94, -0x2a2266, -0x2ad938, -0x2b900a, -0x2c46dc, -0x2cfdae,
++ -0x2db480, -0x2e6b52, -0x2f2224, -0x2fd8f6, -0x308fc8, -0x31469a,
++ -0x31fd6c, -0x32b43e, -0x336b10, -0x3421e2, -0x34d8b4, -0x358f86,
++ -0x364658, -0x36fd2a, -0x37b3fc, -0x386ace, -0x3921a0, -0x39d872,
++ -0x3a8f44, -0x3b4616, -0x3bfce8, -0x3cb3ba, -0x3d6a8c, -0x3e215e,
++ -0x3ed830, -0x3f8f02, -0x4045d4, -0x40fca6, -0x41b378, -0x426a4a,
++ -0x43211c, -0x43d7ee, -0x448ec0, -0x454592, -0x45fc64, -0x46b336,
++ -0x476a08, -0x4820da, -0x48d7ac, -0x498e7e, -0x4a4550, -0x4afc22,
++ -0x4bb2f4, -0x4c69c6, -0x4d2098, -0x4dd76a, -0x4e8e3c, -0x4f450e,
++ -0x4ffbe0, -0x50b2b2, -0x516984, -0x522056, -0x52d728, -0x538dfa,
++ -0x5444cc, -0x54fb9e, -0x55b270, -0x566942, -0x572014, -0x57d6e6,
++ -0x588db8, -0x59448a, -0x59fb5c, -0x5ab22e,
++ };
++
++const int Cb_g_tab[(MAXJSAMPLE+1) * sizeof(int)] ={
++ 0x2c8d00, 0x2c34e6, 0x2bdccc, 0x2b84b2, 0x2b2c98, 0x2ad47e,
++ 0x2a7c64, 0x2a244a, 0x29cc30, 0x297416, 0x291bfc, 0x28c3e2,
++ 0x286bc8, 0x2813ae, 0x27bb94, 0x27637a, 0x270b60, 0x26b346,
++ 0x265b2c, 0x260312, 0x25aaf8, 0x2552de, 0x24fac4, 0x24a2aa,
++ 0x244a90, 0x23f276, 0x239a5c, 0x234242, 0x22ea28, 0x22920e,
++ 0x2239f4, 0x21e1da, 0x2189c0, 0x2131a6, 0x20d98c, 0x208172,
++ 0x202958, 0x1fd13e, 0x1f7924, 0x1f210a, 0x1ec8f0, 0x1e70d6,
++ 0x1e18bc, 0x1dc0a2, 0x1d6888, 0x1d106e, 0x1cb854, 0x1c603a,
++ 0x1c0820, 0x1bb006, 0x1b57ec, 0x1affd2, 0x1aa7b8, 0x1a4f9e,
++ 0x19f784, 0x199f6a, 0x194750, 0x18ef36, 0x18971c, 0x183f02,
++ 0x17e6e8, 0x178ece, 0x1736b4, 0x16de9a, 0x168680, 0x162e66,
++ 0x15d64c, 0x157e32, 0x152618, 0x14cdfe, 0x1475e4, 0x141dca,
++ 0x13c5b0, 0x136d96, 0x13157c, 0x12bd62, 0x126548, 0x120d2e,
++ 0x11b514, 0x115cfa, 0x1104e0, 0x10acc6, 0x1054ac, 0x0ffc92,
++ 0x0fa478, 0x0f4c5e, 0x0ef444, 0x0e9c2a, 0x0e4410, 0x0debf6,
++ 0x0d93dc, 0x0d3bc2, 0x0ce3a8, 0x0c8b8e, 0x0c3374, 0x0bdb5a,
++ 0x0b8340, 0x0b2b26, 0x0ad30c, 0x0a7af2, 0x0a22d8, 0x09cabe,
++ 0x0972a4, 0x091a8a, 0x08c270, 0x086a56, 0x08123c, 0x07ba22,
++ 0x076208, 0x0709ee, 0x06b1d4, 0x0659ba, 0x0601a0, 0x05a986,
++ 0x05516c, 0x04f952, 0x04a138, 0x04491e, 0x03f104, 0x0398ea,
++ 0x0340d0, 0x02e8b6, 0x02909c, 0x023882, 0x01e068, 0x01884e,
++ 0x013034, 0x00d81a, 0x008000, 0x0027e6, -0x003034, -0x00884e,
++ -0x00e068, -0x013882, -0x01909c, -0x01e8b6, -0x0240d0, -0x0298ea,
++ -0x02f104, -0x03491e, -0x03a138, -0x03f952, -0x04516c, -0x04a986,
++ -0x0501a0, -0x0559ba, -0x05b1d4, -0x0609ee, -0x066208, -0x06ba22,
++ -0x07123c, -0x076a56, -0x07c270, -0x081a8a, -0x0872a4, -0x08cabe,
++ -0x0922d8, -0x097af2, -0x09d30c, -0x0a2b26, -0x0a8340, -0x0adb5a,
++ -0x0b3374, -0x0b8b8e, -0x0be3a8, -0x0c3bc2, -0x0c93dc, -0x0cebf6,
++ -0x0d4410, -0x0d9c2a, -0x0df444, -0x0e4c5e, -0x0ea478, -0x0efc92,
++ -0x0f54ac, -0x0facc6, -0x1004e0, -0x105cfa, -0x10b514, -0x110d2e,
++ -0x116548, -0x11bd62, -0x12157c, -0x126d96, -0x12c5b0, -0x131dca,
++ -0x1375e4, -0x13cdfe, -0x142618, -0x147e32, -0x14d64c, -0x152e66,
++ -0x158680, -0x15de9a, -0x1636b4, -0x168ece, -0x16e6e8, -0x173f02,
++ -0x17971c, -0x17ef36, -0x184750, -0x189f6a, -0x18f784, -0x194f9e,
++ -0x19a7b8, -0x19ffd2, -0x1a57ec, -0x1ab006, -0x1b0820, -0x1b603a,
++ -0x1bb854, -0x1c106e, -0x1c6888, -0x1cc0a2, -0x1d18bc, -0x1d70d6,
++ -0x1dc8f0, -0x1e210a, -0x1e7924, -0x1ed13e, -0x1f2958, -0x1f8172,
++ -0x1fd98c, -0x2031a6, -0x2089c0, -0x20e1da, -0x2139f4, -0x21920e,
++ -0x21ea28, -0x224242, -0x229a5c, -0x22f276, -0x234a90, -0x23a2aa,
++ -0x23fac4, -0x2452de, -0x24aaf8, -0x250312, -0x255b2c, -0x25b346,
++ -0x260b60, -0x26637a, -0x26bb94, -0x2713ae, -0x276bc8, -0x27c3e2,
++ -0x281bfc, -0x287416, -0x28cc30, -0x29244a, -0x297c64, -0x29d47e,
++ -0x2a2c98, -0x2a84b2, -0x2adccc, -0x2b34e6,
++ };
++
++
++/* We assume that right shift corresponds to signed division by 2 with
++ * rounding towards minus infinity. This is correct for typical "arithmetic
++ * shift" instructions that shift in copies of the sign bit. But some
++ * C compilers implement >> with an unsigned shift. For these machines you
++ * must define RIGHT_SHIFT_IS_UNSIGNED.
++ * RIGHT_SHIFT provides a proper signed right shift of an INT32 quantity.
++ * It is only applied with constant shift counts. SHIFT_TEMPS must be
++ * included in the variables of any routine using RIGHT_SHIFT.
++ */
++
++#ifdef RIGHT_SHIFT_IS_UNSIGNED
++#define SHIFT_TEMPS INT32 shift_temp;
++#define RIGHT_SHIFT(x,shft) \
++ ((shift_temp = (x)) < 0 ? \
++ (shift_temp >> (shft)) | ((~((INT32) 0)) << (32-(shft))) : \
++ (shift_temp >> (shft)))
++#else
++#define SHIFT_TEMPS
++#define RIGHT_SHIFT(x,shft) ((x) >> (shft))
+#endif
-
-
++
++
++METHODDEF(void)
++ycc_rgb_convert_argb (j_decompress_ptr cinfo,
++ JSAMPIMAGE input_buf, JDIMENSION input_row,
++ JSAMPARRAY output_buf, int num_rows)
++{
++ JDIMENSION num_cols = cinfo->output_width;
++ JSAMPLE * range_limit = cinfo->sample_range_limit;
++
++ SHIFT_TEMPS
++
++ /* This is used if we don't have SSE2 */
++
++ while (--num_rows >= 0) {
++ JSAMPROW inptr0 = input_buf[0][input_row];
++ JSAMPROW inptr1 = input_buf[1][input_row];
++ JSAMPROW inptr2 = input_buf[2][input_row];
++ input_row++;
++ uint32_t *outptr = (uint32_t *) *output_buf++;
++ for (JDIMENSION col = 0; col < num_cols; col++) {
++ int y = GETJSAMPLE(inptr0[col]);
++ int cb = GETJSAMPLE(inptr1[col]);
++ int cr = GETJSAMPLE(inptr2[col]);
++ JSAMPLE * range_limit_y = range_limit + y;
++ /* Range-limiting is essential due to noise introduced by DCT losses. */
++ outptr[col] = 0xFF000000 |
++ ( range_limit_y[Cr_r_tab[cr]] << 16 ) |
++ ( range_limit_y[((int) RIGHT_SHIFT(Cb_g_tab[cb] + Cr_g_tab[cr], SCALEBITS))] << 8 ) |
++ ( range_limit_y[Cb_b_tab[cb]] );
++ }
++ }
++}
++#endif
++
++
/**************** Inverted CMYK -> RGB conversion **************/
/*
+ * Input is (Inverted) CMYK stored as 4 bytes per pixel.
diff --git a/www/libxul/files/patch-bug791366 b/www/libxul/files/patch-bug791366
deleted file mode 100644
index 2be866d928cd..000000000000
--- a/www/libxul/files/patch-bug791366
+++ /dev/null
@@ -1,95 +0,0 @@
-diff --git xpcom/base/nsMemoryReporterManager.cpp xpcom/base/nsMemoryReporterManager.cpp
-index a9aff58..674e757 100644
---- xpcom/base/nsMemoryReporterManager.cpp
-+++ xpcom/base/nsMemoryReporterManager.cpp
-@@ -32,7 +32,7 @@ using namespace mozilla;
- # include "jemalloc.h"
- #endif // MOZ_MEMORY
-
--#if defined(XP_LINUX) || defined(XP_MACOSX) || defined(SOLARIS)
-+#ifdef XP_UNIX
-
- #include <sys/time.h>
- #include <sys/resource.h>
-@@ -95,6 +95,81 @@ static nsresult GetResident(PRInt64 *n)
- return GetProcSelfStatmField(1, n);
- }
-
-+#elif defined(__DragonFly__) || defined(__FreeBSD__) \
-+ || defined(__NetBSD__) || defined(__OpenBSD__)
-+
-+#include <sys/param.h>
-+#include <sys/sysctl.h>
-+#if defined(__DragonFly__) || defined(__FreeBSD__)
-+#include <sys/user.h>
-+#endif
-+
-+#include <unistd.h>
-+
-+#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(__DragonFly__)
-+#define KP_SIZE(kp) (kp.kp_vm_map_size)
-+#define KP_RSS(kp) (kp.kp_vm_rssize * getpagesize())
-+#elif defined(__FreeBSD__)
-+#define KP_SIZE(kp) (kp.ki_size)
-+#define KP_RSS(kp) (kp.ki_rssize * getpagesize())
-+#elif defined(__NetBSD__)
-+#define KP_SIZE(kp) (kp.p_vm_msize * getpagesize())
-+#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize())
-+#elif defined(__OpenBSD__)
-+#define KP_SIZE(kp) ((kp.p_vm_dsize + kp.p_vm_ssize \
-+ + kp.p_vm_tsize) * getpagesize())
-+#define KP_RSS(kp) (kp.p_vm_rssize * getpagesize())
-+#endif
-+
-+static nsresult GetKinfoProcSelf(KINFO_PROC *proc)
-+{
-+ int mib[] = {
-+ CTL_KERN,
-+ KERN_PROC,
-+ KERN_PROC_PID,
-+ getpid(),
-+#if defined(__NetBSD__) || defined(__OpenBSD__)
-+ sizeof(KINFO_PROC),
-+ 1,
-+#endif
-+ };
-+ u_int miblen = sizeof(mib) / sizeof(mib[0]);
-+ size_t size = sizeof(KINFO_PROC);
-+ if (sysctl(mib, miblen, proc, &size, NULL, 0))
-+ return NS_ERROR_FAILURE;
-+
-+ return NS_OK;
-+}
-+
-+#define HAVE_VSIZE_AND_RESIDENT_REPORTERS 1
-+static nsresult GetVsize(PRInt64 *n)
-+{
-+ KINFO_PROC proc;
-+ nsresult rv = GetKinfoProcSelf(&proc);
-+ if (NS_SUCCEEDED(rv))
-+ *n = KP_SIZE(proc);
-+
-+ return rv;
-+}
-+
-+static nsresult GetResident(PRInt64 *n)
-+{
-+ KINFO_PROC proc;
-+ nsresult rv = GetKinfoProcSelf(&proc);
-+ if (NS_SUCCEEDED(rv))
-+ *n = KP_RSS(proc);
-+
-+ return rv;
-+}
-+
- #elif defined(SOLARIS)
-
- #include <procfs.h>
diff --git a/www/libxul/files/patch-bug799441 b/www/libxul/files/patch-bug799441
deleted file mode 100644
index 98bc613ba60d..000000000000
--- a/www/libxul/files/patch-bug799441
+++ /dev/null
@@ -1,116 +0,0 @@
-commit b9accdd
-Author: Mike Hommey <mh+mozilla@glandium.org>
-Date: Thu Oct 18 14:47:10 2012 +0200
-
- Bug 799441 - Build GIO module in libxul. r=ted
----
- configure.in | 6 ++++++
- extensions/gio/Makefile.in | 14 +++-----------
- toolkit/library/Makefile.in | 5 +++++
- toolkit/library/nsStaticXULComponents.cpp | 7 +++++++
- toolkit/toolkit-tiers.mk | 4 ++++
- 5 files changed, 25 insertions(+), 11 deletions(-)
-
-diff --git configure.in configure.in
-index a9fb5f1..37e6db8 100644
---- configure.in
-+++ configure.in
-@@ -6086,6 +6086,12 @@ if test -n "$LIBXUL_SDK_DIR" -a `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; th
- MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
- fi
-
-+if test `echo "$MOZ_EXTENSIONS" | grep -c gio` -ne 0; then
-+ MOZ_GIO_COMPONENT=1
-+ MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|gio||'`
-+fi
-+AC_SUBST(MOZ_GIO_COMPONENT)
-+
- if test -z "$MOZ_JSDEBUGGER" -a `echo "$MOZ_EXTENSIONS" | grep -c venkman` -ne 0; then
- AC_MSG_WARN([Cannot build venkman without JavaScript debug library. Removing venkman from MOZ_EXTENSIONS.])
- MOZ_EXTENSIONS=`echo $MOZ_EXTENSIONS | sed -e 's|venkman||'`
-diff --git extensions/gio/Makefile.in extensions/gio/Makefile.in
-index ccf2846..79112a8 100644
---- extensions/gio/Makefile.in
-+++ extensions/gio/Makefile.in
-@@ -14,6 +14,9 @@ MODULE = nkgio
- LIBRARY_NAME = nkgio
- SHORT_LIBNAME = nkgio
- IS_COMPONENT = 1
-+EXPORT_LIBRARY = 1
-+MODULE_NAME = nsGIOModule
-+LIBXUL_LIBRARY = 1
-
- CPPSRCS = \
- nsGIOProtocolHandler.cpp \
-@@ -21,15 +24,4 @@ CPPSRCS = \
-
- LOCAL_INCLUDES = $(MOZ_GIO_CFLAGS)
-
--EXTRA_DSO_LDOPTS = \
-- $(XPCOM_GLUE_LDOPTS) \
-- $(MOZ_COMPONENT_LIBS) \
-- $(MOZ_GIO_LIBS) \
-- $(NULL)
--
--# make sure this component is never statically linked into the main
--# application. this is necessary since we don't want to force users
--# to install gio in order to use the rest of mozilla ;-)
--FORCE_SHARED_LIB= 1
--
- include $(topsrcdir)/config/rules.mk
-diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in
-index 7f9046e..6499758 100644
---- toolkit/library/Makefile.in
-+++ toolkit/library/Makefile.in
-@@ -333,6 +333,11 @@ COMPONENT_LIBS += gkdebug
- endif
- endif
-
-+ifdef MOZ_GIO_COMPONENT
-+DEFINES += -DMOZ_GIO_COMPONENT
-+COMPONENT_LIBS += nkgio
-+endif
-+
- ifdef MOZ_APP_COMPONENT_LIBS
- COMPONENT_LIBS += $(MOZ_APP_COMPONENT_LIBS)
- endif
-diff --git toolkit/library/nsStaticXULComponents.cpp toolkit/library/nsStaticXULComponents.cpp
-index e1d90f2..85b21a2 100644
---- toolkit/library/nsStaticXULComponents.cpp
-+++ toolkit/library/nsStaticXULComponents.cpp
-@@ -164,6 +164,12 @@
- #define PROFILER_MODULE
- #endif
-
-+#if defined(MOZ_GIO_COMPONENT)
-+#define GIO_MODULE MODULE(nsGIOModule)
-+#else
-+#define GIO_MODULE
-+#endif
-+
- #define XUL_MODULES \
- MODULE(nsUConvModule) \
- MODULE(nsI18nModule) \
-@@ -220,6 +226,7 @@
- MODULE(nsTelemetryModule) \
- MODULE(jsinspector) \
- MODULE(jsdebugger) \
-+ GIO_MODULE \
- /* end of list */
-
- #define MODULE(_name) \
-diff --git toolkit/toolkit-tiers.mk toolkit/toolkit-tiers.mk
-index e87d7af..4b16d23 100644
---- toolkit/toolkit-tiers.mk
-+++ toolkit/toolkit-tiers.mk
-@@ -252,6 +252,10 @@ tier_platform_dirs += js/ductwork/debugger
-
- tier_platform_dirs += other-licenses/snappy
-
-+ifdef MOZ_GIO_COMPONENT
-+tier_platform_dirs += extensions/gio
-+endif
-+
- ifdef APP_LIBXUL_STATICDIRS
- # Applications can cheat and ask for code to be
- # built before libxul so libxul can be linked against it.
diff --git a/www/libxul/files/patch-bug803480 b/www/libxul/files/patch-bug803480
new file mode 100644
index 000000000000..5f5b4fe7f392
--- /dev/null
+++ b/www/libxul/files/patch-bug803480
@@ -0,0 +1,102 @@
+diff --git configure.in configure.in
+index a0575dc..be327fd 100644
+--- configure.in
++++ configure.in
+@@ -4306,7 +4306,6 @@ NS_PRINTING=1
+ MOZ_PDF_PRINTING=
+ MOZ_DISABLE_CRYPTOLEGACY=
+ NSS_DISABLE_DBM=
+-NECKO_WIFI=1
+ NECKO_COOKIES=1
+ NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource websocket wyciwyg device"
+ USE_ARM_KUSER=
+@@ -4336,11 +4335,6 @@ case "${target}" in
+ fi
+
+ NSS_DISABLE_DBM=1
+- if test -z "$gonkdir"; then
+- NECKO_WIFI=
+- else
+- NECKO_WIFI=1
+- fi
+ MOZ_THEME_FASTSTRIPE=1
+ MOZ_TREE_FREETYPE=1
+ MOZ_MEMORY=1
+@@ -8485,28 +8479,39 @@ done
+ dnl
+ dnl option to disable necko's wifi scanner
+ dnl
++
++case "$OS_TARGET" in
++ OS2)
++ dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
++ ;;
++ Android)
++ if test -n "$gonkdir"; then
++ NECKO_WIFI=1
++ fi
++ ;;
++ Darwin|SunOS|WINNT)
++ NECKO_WIFI=1
++ ;;
++ Linux)
++ if test -z "$MOZ_ENABLE_DBUS"; then
++ AC_MSG_ERROR([Necko WiFi scanning needs DBus on your platform, remove --disable-dbus or use --disable-necko-wifi])
++ fi
++ NECKO_WIFI=1
++ NECKO_WIFI_DBUS=1
++ ;;
++esac
++
+ MOZ_ARG_DISABLE_BOOL(necko-wifi,
+ [ --disable-necko-wifi Disable necko wifi scanner],
+ NECKO_WIFI=,
+ NECKO_WIFI=1)
+
+-if test "$OS_ARCH" = "OS2"; then
+- dnl OS/2 implementation of Necko-WiFi support will be added in bug 506566
+- NECKO_WIFI=
+-fi
+-if test "$NECKO_WIFI" -a \
+- "$OS_ARCH" != "Linux" -a \
+- "$OS_ARCH" != "Darwin" -a \
+- "$OS_ARCH" != "SunOS" -a \
+- "$OS_ARCH" != "WINNT"; then
+- AC_MSG_ERROR([Necko WiFi scanning not supported on your platform, use --disable-necko-wifi])
+-fi
+-
+ if test "$NECKO_WIFI"; then
+ AC_DEFINE(NECKO_WIFI)
+ _NON_GLOBAL_ACDEFINES="$_NON_GLOBAL_ACDEFINES NECKO_WIFI"
+ fi
+ AC_SUBST(NECKO_WIFI)
++AC_SUBST(NECKO_WIFI_DBUS)
+
+ dnl
+ dnl option to disable cookies
+diff --git netwerk/wifi/Makefile.in netwerk/wifi/Makefile.in
+index 26dbd79..4cbf912 100644
+--- netwerk/wifi/Makefile.in
++++ netwerk/wifi/Makefile.in
+@@ -20,7 +20,7 @@ ifeq ($(OS_ARCH),SunOS)
+ OS_INCLUDES += $(GLIB_CFLAGS)
+ endif
+
+-ifdef MOZ_ENABLE_DBUS
++ifdef NECKO_WIFI_DBUS
+ OS_INCLUDES += $(MOZ_DBUS_GLIB_CFLAGS)
+ endif
+
+diff --git netwerk/wifi/moz.build netwerk/wifi/moz.build
+index 5e70211..07b01de 100644
+--- netwerk/wifi/moz.build
++++ netwerk/wifi/moz.build
+@@ -43,7 +43,7 @@ elif CONFIG['OS_ARCH'] == 'SunOS':
+ 'nsWifiScannerSolaris.cpp',
+ ]
+
+-if CONFIG['MOZ_ENABLE_DBUS']:
++if CONFIG['NECKO_WIFI_DBUS']:
+ CPP_SOURCES += [
+ 'nsWifiScannerDBus.cpp',
+ ]
diff --git a/www/libxul/files/patch-bug806139 b/www/libxul/files/patch-bug806139
deleted file mode 100644
index 56791e71fb61..000000000000
--- a/www/libxul/files/patch-bug806139
+++ /dev/null
@@ -1,29 +0,0 @@
---- content/html/content/public/nsHTMLMediaElement.h~
-+++ content/html/content/public/nsHTMLMediaElement.h
-@@ -311,7 +311,7 @@ public:
- static bool IsH264Enabled();
- static bool IsH264Type(const nsACString& aType);
- static const char gH264Types[3][16];
-- static char const *const gH264Codecs[7];
-+ static char const *const gH264Codecs[9];
- #endif
-
- #ifdef MOZ_MEDIA_PLUGINS
---- content/html/content/src/nsHTMLMediaElement.cpp~
-+++ content/html/content/src/nsHTMLMediaElement.cpp
-@@ -2114,12 +2114,14 @@ const char nsHTMLMediaElement::gH264Type
- "video/quicktime",
- };
-
--char const *const nsHTMLMediaElement::gH264Codecs[7] = {
-+char const *const nsHTMLMediaElement::gH264Codecs[9] = {
- "avc1.42E01E",
- "avc1.42001E",
- "avc1.58A01E",
- "avc1.4D401E",
- "avc1.64001E",
-+ "avc1.64001F",
-+ "mp4v.20.3",
- "mp4a.40.2",
- nullptr
- };
diff --git a/www/libxul/files/patch-bug807492 b/www/libxul/files/patch-bug807492
new file mode 100644
index 000000000000..3b39766e0492
--- /dev/null
+++ b/www/libxul/files/patch-bug807492
@@ -0,0 +1,628 @@
+JJdiff --git configure.in configure.in
+index c167461..8346c11 100644
+--- configure.in
++++ configure.in
+@@ -5246,17 +5246,17 @@ if test "$NS_PRINTING"; then
+ AC_DEFINE(NS_PRINT_PREVIEW)
+ fi
+
+ dnl Turn off webrtc for OS's we don't handle yet, but allow
+ dnl --enable-webrtc to override. Can disable for everything in
+ dnl the master list above.
+ if test -n "$MOZ_WEBRTC"; then
+ case "$target" in
+- *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*)
++ *-linux*|*-mingw*|*-darwin*|*-android*|*-linuxandroid*|*-dragonfly*|*-freebsd*|*-netbsd*|*-openbsd*)
+ dnl Leave enabled
+ ;;
+ *)
+ dnl default to disabled for all others
+ MOZ_WEBRTC=
+ ;;
+ esac
+ fi
+diff --git media/mtransport/objs.mk media/mtransport/objs.mk
+index f1fc85f..141e8ca 100644
+--- media/mtransport/objs.mk
++++ media/mtransport/objs.mk
+@@ -18,22 +18,26 @@ LOCAL_INCLUDES += \
+ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/util/libekr \
+ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/log \
+ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/registry \
+ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/stats \
+ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/plugin \
+ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/event \
+ $(NULL)
+
+-ifeq ($(OS_TARGET), Darwin)
++ifneq (,$(filter Darwin DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET)))
+ LOCAL_INCLUDES += \
+ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/darwin/include \
+ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/generic/include \
+ $(NULL)
++ifeq ($(OS_TARGET), Darwin)
+ DEFINES += -DDARWIN
++else
++DEFINES += -DBSD
++endif
+ endif
+
+ ifeq ($(OS_TARGET), Linux)
+ LOCAL_INCLUDES += \
+ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/linux/include \
+ -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/generic/include \
+ $(NULL)
+ DEFINES += -DLINUX
+diff --git media/mtransport/test/Makefile.in media/mtransport/test/Makefile.in
+index c1d5bf4..2ecf2c7 100644
+--- media/mtransport/test/Makefile.in
++++ media/mtransport/test/Makefile.in
+@@ -73,22 +73,24 @@ DEFINES += -D__Userspace_os_FreeBSD=1
+ else
+ #default_fallback; probably doesn't work
+ DEFINES += -D__Userspace_os_$(OS_TARGET)=1
+ endif
+ endif
+ endif
+ endif
+
+-ifeq ($(OS_TARGET), Darwin)
++ifneq (,$(filter Darwin DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET)))
+ LOCAL_INCLUDES += -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/darwin/include
++ifeq ($(OS_TARGET), Darwin)
+ DEFINES += \
+ -DGTEST_USE_OWN_TR1_TUPLE=1 \
+ $(NULL)
+ endif
++endif
+
+ ifeq ($(OS_TARGET), Linux)
+ LOCAL_INCLUDES += -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/linux/include
+ endif
+
+ ifeq ($(OS_TARGET), Android)
+ LOCAL_INCLUDES += -I$(topsrcdir)/media/mtransport/third_party/nrappkit/src/port/android/include
+
+diff --git media/mtransport/third_party/nICEr/nicer.gyp media/mtransport/third_party/nICEr/nicer.gyp
+index 0e1f8b4..9a4b995 100644
+--- media/mtransport/third_party/nICEr/nicer.gyp
++++ media/mtransport/third_party/nICEr/nicer.gyp
+@@ -126,26 +126,36 @@
+ 'R_DEFINED_UINT2=uint16_t',
+ 'R_DEFINED_INT4=int32_t',
+ 'R_DEFINED_UINT4=uint32_t',
+ 'R_DEFINED_INT8=int64_t',
+ 'R_DEFINED_UINT8=uint64_t',
+ ],
+
+ 'conditions' : [
+- ## Mac
++ ## Mac and BSDs
+ [ 'OS == "mac"', {
++ 'defines' : [
++ 'DARWIN',
++ 'HAVE_XLOCALE',
++ ],
++ }],
++ [ 'os_bsd == 1', {
++ 'defines' : [
++ 'BSD',
++ ],
++ }],
++ [ 'OS == "mac" or os_bsd == 1', {
+ 'cflags_mozilla': [
+ '-Wall',
+ '-Wno-parentheses',
+ '-Wno-strict-prototypes',
+ '-Wmissing-prototypes',
+ ],
+ 'defines' : [
+- 'DARWIN',
+ 'HAVE_LIBM=1',
+ 'HAVE_STRDUP=1',
+ 'HAVE_STRLCPY=1',
+ 'HAVE_SYS_TIME_H=1',
+ 'HAVE_VFPRINTF=1',
+ 'NEW_STDIO'
+ 'RETSIGTYPE=void',
+ 'TIME_WITH_SYS_TIME_H=1',
+diff --git media/mtransport/third_party/nICEr/src/stun/addrs.c media/mtransport/third_party/nICEr/src/stun/addrs.c
+index b0b66b2..04fea94 100644
+--- media/mtransport/third_party/nICEr/src/stun/addrs.c
++++ media/mtransport/third_party/nICEr/src/stun/addrs.c
+@@ -50,17 +50,19 @@ static char *RCSSTRING __UNUSED__="$Id: addrs.c,v 1.2 2008/04/28 18:21:30 ekr Ex
+ #else
+ #include <syslog.h>
+ /* Work around an Android NDK < r8c bug */
+ #undef __unused
+ #include <linux/sysctl.h>
+ #endif
+ #include <net/if.h>
+ #ifndef LINUX
++#if !defined(__OpenBSD__) && !defined(__NetBSD__)
+ #include <net/if_var.h>
++#endif
+ #include <net/if_dl.h>
+ #include <net/if_types.h>
+ #include <sys/sockio.h>
+ #else
+ #include <linux/if.h>
+ #endif
+ #include <net/route.h>
+
+@@ -75,17 +77,17 @@ static char *RCSSTRING __UNUSED__="$Id: addrs.c,v 1.2 2008/04/28 18:21:30 ekr Ex
+ #include <netdb.h>
+ #endif /* UNIX */
+
+ #include "stun.h"
+ #include "addrs.h"
+
+
+
+-#ifdef DARWIN
++#if defined(BSD) || defined(DARWIN)
+ /*
+ * Copyright (c) 1983, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+@@ -685,17 +687,17 @@ nr_stun_remove_duplicate_addrs(nr_transport_addr addrs[], int remove_loopback, i
+ }
+
+ int
+ nr_stun_get_addrs(nr_transport_addr addrs[], int maxaddrs, int drop_loopback, int *count)
+ {
+ int _status=0;
+ int i;
+
+-#ifdef DARWIN
++#if defined(BSD) || defined(DARWIN)
+ _status = stun_get_mib_addrs(addrs, maxaddrs, count);
+ #elif defined(WIN32)
+ _status = stun_get_win32_addrs(addrs, maxaddrs, count);
+ #elif defined(__sparc__)
+ _status = stun_get_sparc_addrs(addrs, maxaddrs, count);
+ #else
+ _status = stun_get_siocgifconf_addrs(addrs, maxaddrs, count);
+ #endif
+diff --git media/mtransport/third_party/nICEr/src/stun/stun.h media/mtransport/third_party/nICEr/src/stun/stun.h
+index a3c51f9..eb65ac8 100644
+--- media/mtransport/third_party/nICEr/src/stun/stun.h
++++ media/mtransport/third_party/nICEr/src/stun/stun.h
+@@ -36,21 +36,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ #ifdef WIN32
+ #include <winsock2.h>
+ #else
+ #include <sys/param.h>
+ #include <sys/socket.h>
+ #include <net/if.h>
+ #ifndef LINUX
++#if !defined(__OpenBSD__) && !defined(__NetBSD__)
+ #include <net/if_var.h>
++#endif
+ #include <net/if_dl.h>
+ #include <net/if_types.h>
+ #endif
++#ifndef BSD
+ #include <net/route.h>
++#endif
+ #include <netinet/in.h>
+ #ifndef LINUX
+ #include <netinet/in_var.h>
+ #endif
+ #include <arpa/inet.h>
+ #include <netdb.h>
+ #endif
+ #include <time.h>
+diff --git media/mtransport/third_party/nICEr/src/util/mbslen.c media/mtransport/third_party/nICEr/src/util/mbslen.c
+index cc260b7..66af2d7 100644
+--- media/mtransport/third_party/nICEr/src/util/mbslen.c
++++ media/mtransport/third_party/nICEr/src/util/mbslen.c
+@@ -38,50 +38,58 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ #include <errno.h>
+ #include <csi_platform.h>
+
+ #include <assert.h>
+ #include <locale.h>
+ #include <stdlib.h>
+ #include <wchar.h>
+-#ifdef DARWIN
++
++#ifdef __FreeBSD__
++#include <osreldate.h>
++# if __FreeBSD_version > 900505
++# define HAVE_XLOCALE
++# endif
++#endif
++
++#ifdef HAVE_XLOCALE
+ #include <xlocale.h>
+-#endif /* DARWIN */
++#endif /* HAVE_XLOCALE */
+
+ #include "nr_api.h"
+ #include "mbslen.h"
+
+ /* get number of characters in a mult-byte character string */
+ int
+ mbslen(const char *s, size_t *ncharsp)
+ {
+-#ifdef DARWIN
++#ifdef HAVE_XLOCALE
+ static locale_t loc = 0;
+ static int initialized = 0;
+-#endif /* DARWIN */
++#endif /* HAVE_XLOCALE */
+ #ifdef WIN32
+ char *my_locale=0;
+ unsigned int i;
+ #endif /* WIN32 */
+ int _status;
+ size_t nbytes;
+ int nchars;
+ mbstate_t mbs;
+
+-#ifdef DARWIN
++#ifdef HAVE_XLOCALE
+ if (! initialized) {
+ initialized = 1;
+ loc = newlocale(LC_CTYPE_MASK, "UTF-8", LC_GLOBAL_LOCALE);
+ }
+
+ if (loc == 0) {
+ /* unable to create the UTF-8 locale */
+ assert(loc != 0); /* should never happen */
+-#endif /* DARWIN */
++#endif /* HAVE_XLOCALE */
+
+ #ifdef WIN32
+ if (!setlocale(LC_CTYPE, 0))
+ ABORT(R_INTERNAL);
+
+ if (!(my_locale = r_strdup(setlocale(LC_CTYPE, 0))))
+ ABORT(R_NO_MEMORY);
+
+@@ -94,28 +102,28 @@ mbslen(const char *s, size_t *ncharsp)
+ /* can't count UTF-8 characters with mbrlen if the locale isn't UTF-8 */
+ /* null-checking setlocale is required because Android */
+ char *locale = setlocale(LC_CTYPE, 0);
+ /* some systems use "utf8" instead of "UTF-8" like Fedora 17 */
+ if (!locale || (!strcasestr(locale, "UTF-8") && !strcasestr(locale, "UTF8")))
+ ABORT(R_NOT_FOUND);
+ #endif
+
+-#ifdef DARWIN
++#ifdef HAVE_XLOCALE
+ }
+-#endif /* DARWIN */
++#endif /* HAVE_XLOCALE */
+
+ memset(&mbs, 0, sizeof(mbs));
+ nchars = 0;
+
+-#ifdef DARWIN
++#ifdef HAVE_XLOCALE
+ while (*s != '\0' && (nbytes = mbrlen_l(s, strlen(s), &mbs, loc)) != 0)
+ #else
+ while (*s != '\0' && (nbytes = mbrlen(s, strlen(s), &mbs)) != 0)
+-#endif /* DARWIN */
++#endif /* HAVE_XLOCALE */
+ {
+ if (nbytes == (size_t)-1) /* should never happen */ {
+ ABORT(R_INTERNAL);
+ }
+ if (nbytes == (size_t)-2) /* encoding error */ {
+ ABORT(R_BAD_DATA);
+ }
+
+diff --git media/mtransport/third_party/nrappkit/nrappkit.gyp media/mtransport/third_party/nrappkit/nrappkit.gyp
+index 3cc8e1c..74016c6 100644
+--- media/mtransport/third_party/nrappkit/nrappkit.gyp
++++ media/mtransport/third_party/nrappkit/nrappkit.gyp
+@@ -142,26 +142,35 @@
+ 'R_DEFINED_UINT2=uint16_t',
+ 'R_DEFINED_INT4=int32_t',
+ 'R_DEFINED_UINT4=uint32_t',
+ 'R_DEFINED_INT8=int64_t',
+ 'R_DEFINED_UINT8=uint64_t',
+ ],
+
+ 'conditions' : [
+- ## Mac
++ ## Mac and BSDs
+ [ 'OS == "mac"', {
++ 'defines' : [
++ 'DARWIN',
++ ],
++ }],
++ [ 'os_bsd == 1', {
++ 'defines' : [
++ 'BSD',
++ ],
++ }],
++ [ 'OS == "mac" or os_bsd == 1', {
+ 'cflags_mozilla': [
+ '-Wall',
+ '-Wno-parentheses',
+ '-Wno-strict-prototypes',
+ '-Wmissing-prototypes',
+ ],
+ 'defines' : [
+- 'DARWIN',
+ 'HAVE_LIBM=1',
+ 'HAVE_STRDUP=1',
+ 'HAVE_STRLCPY=1',
+ 'HAVE_SYS_TIME_H=1',
+ 'HAVE_VFPRINTF=1',
+ 'NEW_STDIO'
+ 'RETSIGTYPE=void',
+ 'TIME_WITH_SYS_TIME_H=1',
+diff --git media/mtransport/third_party/nrappkit/src/log/r_log.c media/mtransport/third_party/nrappkit/src/log/r_log.c
+index efb7ef2..aebf578 100644
+--- media/mtransport/third_party/nrappkit/src/log/r_log.c
++++ media/mtransport/third_party/nrappkit/src/log/r_log.c
+@@ -43,16 +43,17 @@ static char *RCSSTRING __UNUSED__ ="$Id: r_log.c,v 1.10 2008/11/25 22:25:18 adam
+ #ifdef LINUX
+ #define _BSD_SOURCE
+ #endif
+
+ #include "r_log.h"
+ #include "hex.h"
+
+ #include <string.h>
++#include <errno.h>
+ #ifndef _MSC_VER
+ #include <strings.h>
+ #include <syslog.h>
+ #endif
+ #include <registry.h>
+ #include <time.h>
+
+
+diff --git media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h
+index bcb1ec0..bb73591 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
+@@ -33,7 +33,7 @@
+ #ifndef _SYS_QUEUE_H_
+ #define _SYS_QUEUE_H_
+
+-#ifndef DARWIN
++#if !defined(__FreeBSD__) && !defined(DARWIN)
+ #include <stddef.h>
+ #define __offsetof offsetof
+ #endif
+diff --git media/mtransport/third_party/nrappkit/src/util/util.c media/mtransport/third_party/nrappkit/src/util/util.c
+index a7d4ff1..ff11a60 100644
+--- media/mtransport/third_party/nrappkit/src/util/util.c
++++ media/mtransport/third_party/nrappkit/src/util/util.c
+@@ -40,16 +40,17 @@
+ static char *RCSSTRING __UNUSED__ ="$Id: util.c,v 1.5 2007/11/21 00:09:13 adamcain Exp $";
+
+ #ifndef WIN32
+ #include <sys/uio.h>
+ #include <pwd.h>
+ #include <dirent.h>
+ #endif
+ #include <string.h>
++#include <errno.h>
+ #include <ctype.h>
+ #include <sys/stat.h>
+ #ifdef OPENSSL
+ #include <openssl/evp.h>
+ #endif
+ #include "nr_common.h"
+ #include "r_common.h"
+ #include "registry.h"
+diff --git media/webrtc/signaling/signaling.gyp media/webrtc/signaling/signaling.gyp
+index 2a91e3d..31de641 100644
+--- media/webrtc/signaling/signaling.gyp
++++ media/webrtc/signaling/signaling.gyp
+@@ -212,16 +212,29 @@
+ 'SIPCC_BUILD',
+ 'HAVE_WINSOCK2_H',
+ 'CPR_STDINT_INCLUDE=\\"mozilla/StandardInteger.h\\"'
+ ],
+
+ 'cflags_mozilla': [
+ ],
+ }],
++ ['os_bsd==1', {
++ 'include_dirs': [
++ ],
++ 'defines': [
++ # avoiding pointless ifdef churn
++ 'SIP_OS_OSX',
++ 'OSX',
++ 'SECLIB_OPENSSL',
++ ],
++
++ 'cflags_mozilla': [
++ ],
++ }],
+ ['OS=="mac"', {
+ 'include_dirs': [
+ ],
+ 'defines': [
+ 'SIP_OS_OSX',
+ 'OSX',
+ '_FORTIFY_SOURCE=2',
+ ],
+@@ -747,17 +760,17 @@
+ 'EXTERNAL_TICK_REQUIRED',
+ 'GIPS_VER=3480',
+ ],
+
+ 'cflags_mozilla': [
+ ],
+
+ }],
+- ['OS=="mac"', {
++ ['OS=="mac" or os_bsd==1', {
+
+ 'include_dirs': [
+ ],
+
+ 'sources': [
+ # SIPSTACK
+ './src/sipcc/core/sipstack/sip_platform_task.c',
+
+@@ -792,24 +805,23 @@
+ './src/sipcc/cpr/darwin/cpr_darwin_timers_using_select.c',
+ './src/sipcc/cpr/darwin/cpr_darwin_tst.h',
+ './src/sipcc/cpr/darwin/cpr_darwin_types.h',
+ ],
+
+
+ 'defines' : [
+ 'SIP_OS_OSX',
+- '_POSIX_SOURCE',
++ # using BSD extensions, leave _POSIX_SOURCE undefined
+ 'CPR_MEMORY_LITTLE_ENDIAN',
+ 'NO_SOCKET_POLLING',
+ 'USE_TIMER_SELECT_BASED',
+ 'FULL_BUILD',
+ 'STUBBED_OUT',
+ 'USE_PRINTF',
+- '_DARWIN_C_SOURCE',
+ 'NO_NSPR_10_SUPPORT',
+ ],
+
+ 'cflags_mozilla': [
+ ],
+ }],
+ ],
+
+diff --git media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.c media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.c
+index a7c47e1..4f191de 100644
+--- media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.c
++++ media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.c
+@@ -317,21 +317,25 @@ cprGetMessage (cprMsgQueue_t msgQueue, boolean waitForever, void **ppUserData)
+ {
+ static const char fname[] = "cprGetMessage";
+
+ void *buffer = 0;
+ cpr_msg_queue_t *msgq;
+ cpr_msgq_node_t *node;
+ struct timespec timeout;
+ struct timeval tv;
++#ifndef __APPLE__
++ struct timezone tz;
++#else
+ // On the iPhone, there is a DarwinAlias problem with "timezone"
+ struct _timezone {
+ int tz_minuteswest; /* of Greenwich */
+ int tz_dsttime; /* type of dst correction to apply */
+ } tz;
++#endif
+
+ /* Initialize ppUserData */
+ if (ppUserData) {
+ *ppUserData = NULL;
+ }
+
+ msgq = (cpr_msg_queue_t *) msgQueue;
+ if (msgq == NULL) {
+diff --git media/webrtc/signaling/test/Makefile.in media/webrtc/signaling/test/Makefile.in
+index a30e330..cfbd8a3 100644
+--- media/webrtc/signaling/test/Makefile.in
++++ media/webrtc/signaling/test/Makefile.in
+@@ -81,17 +81,17 @@ endif
+ ifeq (qt,$(MOZ_WIDGET_TOOLKIT))
+ LIBS += \
+ $(XLIBS) \
+ $(TK_LIBS) \
+ $(MOZ_PANGO_LIBS) \
+ $(NULL)
+ endif
+
+-ifeq ($(OS_TARGET),Linux)
++ifneq (,$(filter Linux DragonFly FreeBSD NetBSD OpenBSD,$(OS_TARGET)))
+ LIBS += \
+ $(MOZ_CAIRO_OSLIBS) \
+ $(NULL)
+ endif
+
+ ifeq ($(OS_TARGET),Darwin)
+ LIBS += \
+ -framework AudioToolbox \
+diff --git media/webrtc/trunk/tools/gyp/pylib/gyp/generator/mozmake.py media/webrtc/trunk/tools/gyp/pylib/gyp/generator/mozmake.py
+index 338d0b7..2241d41 100644
+--- media/webrtc/trunk/tools/gyp/pylib/gyp/generator/mozmake.py
++++ media/webrtc/trunk/tools/gyp/pylib/gyp/generator/mozmake.py
+@@ -1,16 +1,17 @@
+ # Copyright (c) 2012 Mozilla Foundation. All rights reserved.
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+ import collections
+ import gyp
+ import gyp.common
+ import sys
++import platform
+ import os
+ import re
+ import shlex
+
+ generator_wants_sorted_dependencies = True
+
+ generator_default_variables = {
+ }
+@@ -107,30 +108,44 @@ endif
+
+ def ensure_directory_exists(path):
+ dir = os.path.dirname(path)
+ if dir and not os.path.exists(dir):
+ os.makedirs(dir)
+
+ def GetFlavor(params):
+ """Returns |params.flavor| if it's set, the system's default flavor else."""
++ system = platform.system().lower()
+ flavors = {
+- 'win32': 'win',
+- 'darwin': 'mac',
+- 'sunos5': 'solaris',
+- 'freebsd7': 'freebsd',
+- 'freebsd8': 'freebsd',
++ 'microsoft': 'win',
++ 'windows' : 'win',
++ 'darwin' : 'mac',
++ 'sunos' : 'solaris',
++ 'dragonfly': 'bsd',
++ 'freebsd' : 'bsd',
++ 'netbsd' : 'bsd',
++ 'openbsd' : 'bsd',
+ }
+- flavor = flavors.get(sys.platform, 'linux')
+- return params.get('flavor', flavor)
++
++ if 'flavor' in params:
++ return params['flavor']
++ if system.startswith('cygwin'):
++ return 'win'
++ if system in flavors:
++ return flavors[system]
++
++ return 'linux'
+
+
+ def CalculateVariables(default_variables, params):
++ flavor = GetFlavor(params)
++ if flavor == 'bsd':
++ flavor = platform.system().lower()
+ generator_flags = params.get('generator_flags', {})
+- default_variables['OS'] = generator_flags.get('os', GetFlavor(params))
++ default_variables['OS'] = generator_flags.get('os', flavor)
+
+
+ def CalculateGeneratorInputInfo(params):
+ """Calculate the generator specific info that gets fed to input (called by
+ gyp)."""
+ generator_flags = params.get('generator_flags', {})
+ if generator_flags.get('adjust_static_libraries', False):
+ global generator_wants_static_library_dependencies_adjusted
diff --git a/www/libxul/files/patch-bug826985 b/www/libxul/files/patch-bug826985
new file mode 100644
index 000000000000..fe55ff667281
--- /dev/null
+++ b/www/libxul/files/patch-bug826985
@@ -0,0 +1,164 @@
+commit 8024d93
+Author: Henrik Gulbrandsen <henrik@gulbra.net>
+Date: Fri Jan 4 13:49:22 2013 +0100
+
+ Bug 826985 - Support more video formats for WebRTC via libv4l2 on Linux.
+---
+ configure.in | 7 +++++++
+ media/webrtc/signaling/test/Makefile.in | 1 +
+ .../modules/video_capture/linux/device_info_linux.cc | 17 +++++++++++++++++
+ .../modules/video_capture/linux/video_capture_linux.cc | 16 +++++++++++++++-
+ .../webrtc/modules/video_capture/video_capture.gypi | 11 +++++++++++
+ toolkit/library/Makefile.in | 1 +
+ 6 files changed, 52 insertions(+), 1 deletion(-)
+
+diff --git configure.in configure.in
+index 55e4cd1..76567b3 100644
+--- configure.in
++++ configure.in
+@@ -5309,6 +5309,9 @@ if test -n "$MOZ_WEBRTC"; then
+ MOZ_VP8_ENCODER=1
+ MOZ_VP8_ERROR_CONCEALMENT=1
+
++ dnl with libv4l2 we can support more cameras
++ PKG_CHECK_MODULES(MOZ_LIBV4L2, libv4l2)
++
+ dnl enable once Signaling lands
+ MOZ_WEBRTC_SIGNALING=1
+ AC_DEFINE(MOZ_WEBRTC_SIGNALING)
+@@ -8981,6 +8984,10 @@ elif test "${OS_TARGET}" = "Android"; then
+ fi
+ fi
+
++if test -n "$MOZ_LIBV4L2_LIBS"; then
++ EXTRA_GYP_DEFINES="$EXTRA_GYP_DEFINES -D use_libv4l2=1"
++fi
++
+ if test -n "$MOZ_WEBRTC"; then
+ AC_MSG_RESULT("generating WebRTC Makefiles...")
+
+diff --git media/webrtc/signaling/test/Makefile.in media/webrtc/signaling/test/Makefile.in
+index b483cd1..f1dd1f0 100644
+--- media/webrtc/signaling/test/Makefile.in
++++ media/webrtc/signaling/test/Makefile.in
+@@ -17,6 +17,7 @@ LIBS = \
+ $(NSPR_LIBS) \
+ $(NSS_LIBS) \
+ $(REALTIME_LIBS) \
++ $(MOZ_LIBV4L2_LIBS) \
+ $(DEPTH)/xpcom/glue/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \
+ $(DEPTH)/media/mtransport/standalone/$(LIB_PREFIX)mtransport_s.$(LIB_SUFFIX) \
+ $(DEPTH)/media/webrtc/signalingtest/signaling_ecc/$(LIB_PREFIX)ecc.$(LIB_SUFFIX) \
+diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
+index 239a292..bab496c 100644
+--- media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
++++ media/webrtc/trunk/webrtc/modules/video_capture/linux/device_info_linux.cc
+@@ -26,11 +26,23 @@
+ #else
+ #include <linux/videodev2.h>
+ #endif
++#ifdef HAVE_LIBV4L2
++#include <libv4l2.h>
++#endif
+
+ #include "ref_count.h"
+ #include "trace.h"
+
+
++#ifdef HAVE_LIBV4L2
++#define open v4l2_open
++#define close v4l2_close
++#define dup v4l2_dup
++#define ioctl v4l2_ioctl
++#define mmap v4l2_mmap
++#define munmap v4l2_munmap
++#endif
++
+ namespace webrtc
+ {
+ namespace videocapturemodule
+@@ -130,6 +142,11 @@ WebRtc_Word32 DeviceInfoLinux::GetDeviceName(
+ memset(deviceNameUTF8, 0, deviceNameLength);
+ memcpy(cameraName, cap.card, sizeof(cap.card));
+
++ if (cameraName[0] == '\0')
++ {
++ sprintf(cameraName, "Camera at /dev/video%d", deviceNumber);
++ }
++
+ if (deviceNameLength >= strlen(cameraName))
+ {
+ memcpy(deviceNameUTF8, cameraName, strlen(cameraName));
+diff --git media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
+index 12df1b3..e9863ba 100644
+--- media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
++++ media/webrtc/trunk/webrtc/modules/video_capture/linux/video_capture_linux.cc
+@@ -25,6 +25,9 @@
+ #else
+ #include <linux/videodev2.h>
+ #endif
++#ifdef HAVE_LIBV4L2
++#include <libv4l2.h>
++#endif
+
+ #include <new>
+
+@@ -26,6 +31,15 @@
+ #include "critical_section_wrapper.h"
+ #include "video_capture_linux.h"
+
++#ifdef HAVE_LIBV4L2
++#define open v4l2_open
++#define close v4l2_close
++#define dup v4l2_dup
++#define ioctl v4l2_ioctl
++#define mmap v4l2_mmap
++#define munmap v4l2_munmap
++#endif
++
+ namespace webrtc
+ {
+ namespace videocapturemodule
+diff --git media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
+index d46b5aa..e452223 100644
+--- media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
++++ media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi
+@@ -7,6 +7,9 @@
+ # be found in the AUTHORS file in the root of the source tree.
+
+ {
++ 'variables': {
++ 'use_libv4l2%': 0,
++ },
+ 'targets': [
+ {
+ 'target_name': 'video_capture_module',
+@@ -49,6 +52,16 @@
+ }, { # include_internal_video_capture == 1
+ 'conditions': [
+ ['include_v4l2_video_capture==1', {
++ 'conditions': [
++ ['use_libv4l2==1', {
++ 'defines': [
++ 'HAVE_LIBV4L2',
++ ],
++ 'libraries': [
++ '-lv4l2',
++ ],
++ }],
++ ],
+ 'include_dirs': [
+ 'linux',
+ ],
+diff --git toolkit/library/Makefile.in toolkit/library/Makefile.in
+index 9c16ffa..1db3794 100644
+--- toolkit/library/Makefile.in
++++ toolkit/library/Makefile.in
+@@ -405,6 +405,7 @@ endif
+ EXTRA_DSO_LDOPTS += $(call EXPAND_LIBNAME_PATH,gkmedias,$(DIST)/lib)
+
+ ifdef MOZ_WEBRTC
++EXTRA_DSO_LDOPTS += $(MOZ_LIBV4L2_LIBS)
+ ifdef MOZ_PEERCONNECTION
+ COMPONENT_LIBS += peerconnection
+ endif
diff --git a/www/libxul/files/patch-bug828003 b/www/libxul/files/patch-bug828003
deleted file mode 100644
index 16a7b9d46b78..000000000000
--- a/www/libxul/files/patch-bug828003
+++ /dev/null
@@ -1,36 +0,0 @@
---- gfx/qcms/qcmstypes.h
-+++ gfx/qcms/qcmstypes.h
-@@ -7,30 +7,12 @@
- #include "mozilla/StandardInteger.h"
-
- /* prtypes.h defines IS_LITTLE_ENDIAN and IS_BIG ENDIAN */
-+/* StandardInteger.h defines int*_t and uintptr_t */
-
--#if defined (__SVR4) && defined (__sun)
--/* int_types.h gets included somehow, so avoid redefining the types differently */
--#include <sys/int_types.h>
--#elif defined (_AIX)
-+#if defined(_AIX)
- #include <sys/types.h>
--#elif defined(__OpenBSD__)
--#include <inttypes.h>
--#elif !defined(ANDROID)
--typedef int8_t int8_t;
--typedef uint8_t uint8_t;
--typedef int16_t int16_t;
--typedef uint16_t uint16_t;
--typedef int32_t int32_t;
--typedef uint32_t uint32_t;
--typedef int64_t int64_t;
--typedef uint64_t uint64_t;
--
--#ifdef __OS2__
--/* OS/2's stdlib typdefs uintptr_t. So we'll just include that so we don't collide */
-+#elif defined(__OS2__)
- #include <stdlib.h>
--#elif !defined(__intptr_t_defined) && !defined(_UINTPTR_T_DEFINED)
--typedef PRUptrdiff uintptr_t;
--#endif
- #endif
-
- #else // MOZ_QCMS
diff --git a/www/libxul/files/patch-bug851992 b/www/libxul/files/patch-bug851992
new file mode 100644
index 000000000000..3185452e2b44
--- /dev/null
+++ b/www/libxul/files/patch-bug851992
@@ -0,0 +1,373 @@
+diff --git a/config/Makefile.in b/config/Makefile.in
+--- config/Makefile.in
++++ config/Makefile.in
+@@ -97,16 +97,17 @@ export:: $(export-preqs)
+ -DMOZ_TREE_PIXMAN=$(MOZ_TREE_PIXMAN) \
+ -DMOZ_NATIVE_HUNSPELL=$(MOZ_NATIVE_HUNSPELL) \
+ -DMOZ_NATIVE_BZ2=$(MOZ_NATIVE_BZ2) \
+ -DMOZ_NATIVE_ZLIB=$(MOZ_NATIVE_ZLIB) \
+ -DMOZ_NATIVE_PNG=$(MOZ_NATIVE_PNG) \
+ -DMOZ_NATIVE_JPEG=$(MOZ_NATIVE_JPEG) \
+ -DMOZ_NATIVE_LIBEVENT=$(MOZ_NATIVE_LIBEVENT) \
+ -DMOZ_NATIVE_LIBVPX=$(MOZ_NATIVE_LIBVPX) \
++ -DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \
+ $(srcdir)/system-headers | $(PERL) $(topsrcdir)/nsprpub/config/make-system-wrappers.pl system_wrappers
+ $(INSTALL) system_wrappers $(DIST)
+
+ GARBAGE_DIRS += system_wrappers
+ endif
+
+ ifdef WRAP_STL_INCLUDES
+ ifdef GNU_CXX
+diff --git a/config/system-headers b/config/system-headers
+--- config/system-headers
++++ config/system-headers
+@@ -1125,8 +1125,19 @@ gst/video/video.h
+ sys/msg.h
+ sys/ipc.h
+ sys/thr.h
+ sys/user.h
+ kvm.h
+ spawn.h
+ err.h
+ xlocale.h
++#if MOZ_NATIVE_ICU==1
++unicode/locid.h
++unicode/numsys.h
++unicode/ucal.h
++unicode/ucol.h
++unicode/udat.h
++unicode/udatpg.h
++unicode/uenum.h
++unicode/unum.h
++unicode/ustring.h
++#endif
+diff --git a/configure.in b/configure.in
+--- configure.in
++++ configure.in
+@@ -4134,16 +4134,32 @@ if test -n "$MOZ_NATIVE_FFI"; then
+ PKG_CHECK_MODULES(MOZ_FFI, libffi > 3.0.9)
+ else
+ PKG_CHECK_MODULES(MOZ_FFI, libffi >= 3.0.9)
+ fi
+ MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_FFI_LIBS"
+ fi
+
+ dnl ========================================================
++dnl system icu support
++dnl ========================================================
++MOZ_NATIVE_ICU=
++MOZ_ARG_WITH_BOOL(system-icu,
++[ --with-system-icu
++ Use system icu (located with pkgconfig)],
++ MOZ_NATIVE_ICU=1)
++
++if test -n "$MOZ_NATIVE_ICU"; then
++ PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1)
++ MOZ_JS_STATIC_LIBS="$MOZ_JS_STATIC_LIBS $MOZ_ICU_LIBS"
++fi
++
++AC_SUBST(MOZ_NATIVE_ICU)
++
++dnl ========================================================
+ dnl Java SDK support
+ dnl ========================================================
+
+ JAVA_BIN_PATH=
+ MOZ_ARG_WITH_STRING(java-bin-path,
+ [ --with-java-bin-path=dir
+ Location of Java binaries (java, javac, jar)],
+ JAVA_BIN_PATH=$withval)
+diff --git a/js/src/Makefile.in b/js/src/Makefile.in
+--- js/src/Makefile.in
++++ js/src/Makefile.in
+@@ -232,48 +232,54 @@ endif
+
+ #############################################
+ # BEGIN ECMAScript Internationalization API
+ #
+
+ # ICU headers need to be available whether we build with the complete
+ # Internationalization API or not - ICU stubs rely on them.
+
++ifdef MOZ_NATIVE_ICU
++LOCAL_INCLUDES += $(MOZ_ICU_CFLAGS)
++else
+ LOCAL_INCLUDES += \
+ -I$(topsrcdir)/../../intl/icu/source/common \
+ -I$(topsrcdir)/../../intl/icu/source/i18n \
+ $(NULL)
++endif
+
+ ifdef ENABLE_INTL_API
+
+ ifeq ($(OS_ARCH),WINNT)
+ # Parallel gmake is buggy on Windows
+ ICU_GMAKE_OPTIONS="-j1"
+ # Library names: On Windows, ICU uses modified library names for static
+ # and debug libraries.
+ ifdef MOZ_DEBUG
+ ICU_LIB_SUFFIX=d
+ endif
+ ICU_LIB_RENAME = $(foreach libname,$(ICU_LIB_NAMES),\
+ cp -p intl/icu/lib/s$(libname)$(ICU_LIB_SUFFIX).lib intl/icu/lib/$(libname).lib;)
+ endif
+
++ifndef MOZ_NATIVE_ICU
+ # - Build ICU as part of the "export" target, so things get built
+ # in the right order.
+ # - ICU requires GNU make according to its readme.html. pymake can't be used
+ # because it doesn't support order only dependencies.
+ # - Force ICU to use the standard suffix for object files because expandlibs
+ # will discard all files with a non-standard suffix (bug 857450).
+ # - Options for genrb: -k strict parsing; -R omit collation tailoring rules.
+ export::
+ $(GMAKE) $(ICU_GMAKE_OPTIONS) -C intl/icu STATIC_O=$(OBJ_SUFFIX) GENRBOPTS='-k -R'
+ $(ICU_LIB_RENAME)
+
+ distclean clean::
+ $(call SUBMAKE,$@,intl/icu)
++endif
+
+ endif
+
+ #
+ # END ECMAScript Internationalization API
+ #############################################
+
+
+@@ -398,17 +404,21 @@ CFLAGS += $(MOZ_ZLIB_CFLAGS)
+ EXTRA_LIBS += $(MOZ_ZLIB_LIBS)
+ # Enable zlib usage if zlib has been located. When building the browser on
+ # Windows, MOZ_ZLIB_LIBS is empty because zlib is part of libmozglue. We thus
+ # also enable zlib if mozglue is present.
+ ifneq (,$(MOZ_ZLIB_LIBS)$(MOZ_GLUE_LDFLAGS))
+ DEFINES += -DUSE_ZLIB
+ endif
+
+-SHARED_LIBRARY_LIBS += $(ICU_LIBS)
++ifdef MOZ_NATIVE_ICU
++EXTRA_DSO_LDOPTS += $(MOZ_ICU_LIBS)
++else
++SHARED_LIBRARY_LIBS += $(MOZ_ICU_LIBS)
++endif
+
+ # Prevent floating point errors caused by VC++ optimizations
+ ifdef _MSC_VER
+ # XXX We should add this to CXXFLAGS, too?
+ CFLAGS += -fp:precise
+
+ ifeq ($(CPU_ARCH),x86)
+ # Workaround compiler bug on PGO (Bug 721284)
+diff --git a/js/src/config/Makefile.in b/js/src/config/Makefile.in
+--- js/src/config/Makefile.in
++++ js/src/config/Makefile.in
+@@ -54,16 +54,17 @@ include $(topsrcdir)/config/rules.mk
+
+ HOST_CFLAGS += -DUNICODE -D_UNICODE
+
+ ifdef WRAP_SYSTEM_INCLUDES
+ export:: \
+ $(call mkdir_deps,system_wrappers_js) \
+ $(NULL)
+ $(PYTHON) $(srcdir)/Preprocessor.py $(DEFINES) $(ACDEFINES) \
++ -DMOZ_NATIVE_ICU=$(MOZ_NATIVE_ICU) \
+ $(srcdir)/system-headers | $(PERL) $(srcdir)/make-system-wrappers.pl system_wrappers_js
+ $(INSTALL) system_wrappers_js $(DIST)
+
+ GARBAGE_DIRS += system_wrappers_js
+ endif
+
+ GARBAGE += $(srcdir)/*.pyc *.pyc
+
+diff --git a/js/src/config/system-headers b/js/src/config/system-headers
+--- js/src/config/system-headers
++++ js/src/config/system-headers
+@@ -1125,8 +1125,19 @@ gst/video/video.h
+ sys/msg.h
+ sys/ipc.h
+ sys/thr.h
+ sys/user.h
+ kvm.h
+ spawn.h
+ err.h
+ xlocale.h
++#if MOZ_NATIVE_ICU==1
++unicode/locid.h
++unicode/numsys.h
++unicode/ucal.h
++unicode/ucol.h
++unicode/udat.h
++unicode/udatpg.h
++unicode/uenum.h
++unicode/unum.h
++unicode/ustring.h
++#endif
+diff --git a/js/src/configure.in b/js/src/configure.in
+--- js/src/configure.in
++++ js/src/configure.in
+@@ -4406,59 +4406,68 @@ if test "$ACCESSIBILITY" -a "$MOZ_ENABLE
+ AC_DEFINE_UNQUOTED(ATK_MINOR_VERSION, $ATK_MINOR_VERSION)
+ AC_DEFINE_UNQUOTED(ATK_REV_VERSION, $ATK_REV_VERSION)
+ fi
+
+
+ dnl ========================================================
+ dnl ECMAScript Internationalization API Support (uses ICU)
+ dnl ========================================================
++ICU_LIB_NAMES=
++MOZ_NATIVE_ICU=
++MOZ_ARG_WITH_BOOL(system-icu,
++[ --with-system-icu
++ Use system icu (located with pkgconfig)],
++ MOZ_NATIVE_ICU=1)
++
++if test -n "$MOZ_NATIVE_ICU"; then
++ PKG_CHECK_MODULES(MOZ_ICU, icu-i18n >= 50.1)
++fi
+
+ if test -n "$JS_STANDALONE"; then
+ ENABLE_INTL_API=1
+ fi
+ MOZ_ARG_ENABLE_BOOL(intl-api,
+ [ --enable-intl-api Enable ECMAScript Internationalization API (default=yes for standalone JS)],
+ ENABLE_INTL_API=1,
+ ENABLE_INTL_API= )
+
+ dnl Settings for the implementation of the ECMAScript Internationalization API
+ if test -n "$ENABLE_INTL_API"; then
+ AC_DEFINE(ENABLE_INTL_API)
+- # We build ICU as a static library.
+- AC_DEFINE(U_STATIC_IMPLEMENTATION)
+-
+- case "$OS_TARGET" in
+- WINNT)
+- ICU_LIB_NAMES="icuin icuuc icudt"
+- ;;
+- Darwin|Linux)
+- ICU_LIB_NAMES="icui18n icuuc icudata"
+- ;;
+- *)
+- AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform])
+- esac
+-
+- ICU_LIBS='$(call EXPAND_LIBNAME_PATH,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/lib)'
+-else
+- ICU_LIB_NAMES=
+- ICU_LIBS=
++
++ if test -z "$MOZ_NATIVE_ICU"; then
++ case "$OS_TARGET" in
++ WINNT)
++ ICU_LIB_NAMES="icuin icuuc icudt"
++ ;;
++ Darwin|Linux)
++ ICU_LIB_NAMES="icui18n icuuc icudata"
++ ;;
++ *)
++ AC_MSG_ERROR([ECMAScript Internationalization API is not yet supported on this platform])
++ esac
++ MOZ_ICU_LIBS='$(call EXPAND_LIBNAME_PATH,$(ICU_LIB_NAMES),$(DEPTH)/intl/icu/lib)'
++ fi
+ fi
+
+ AC_SUBST(ENABLE_INTL_API)
+ AC_SUBST(ICU_LIB_NAMES)
+-AC_SUBST(ICU_LIBS)
+-
+-dnl Source files that use ICU should have control over which parts of the ICU
+-dnl namespace they want to use.
+-AC_DEFINE(U_USING_ICU_NAMESPACE,0)
+-
++AC_SUBST(MOZ_ICU_LIBS)
++AC_SUBST(MOZ_NATIVE_ICU)
+
+ dnl Settings for ICU
+-if test -n "$ENABLE_INTL_API" ; then
++if test -n "$ENABLE_INTL_API" -a -z "$MOZ_NATIVE_ICU"; then
++ dnl We build ICU as a static library.
++ AC_DEFINE(U_STATIC_IMPLEMENTATION)
++
++ dnl Source files that use ICU should have control over which parts of the ICU
++ dnl namespace they want to use.
++ AC_DEFINE(U_USING_ICU_NAMESPACE,0)
++
+ # Set ICU compile options
+ ICU_CPPFLAGS=""
+ # don't use icu namespace automatically in client code
+ ICU_CPPFLAGS="$ICU_CPPFLAGS -DU_USING_ICU_NAMESPACE=0"
+ # don't include obsolete header files
+ ICU_CPPFLAGS="$ICU_CPPFLAGS -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1"
+ # remove chunks of the library that we don't need (yet)
+ ICU_CPPFLAGS="$ICU_CPPFLAGS -DUCONFIG_NO_LEGACY_CONVERSION"
+diff --git a/js/src/gdb/Makefile.in b/js/src/gdb/Makefile.in
+--- js/src/gdb/Makefile.in
++++ js/src/gdb/Makefile.in
+@@ -14,16 +14,20 @@ include $(DEPTH)/config/autoconf.mk
+ # Building against js_static requires that we declare mfbt sybols "exported"
+ # on its behalf.
+ DEFINES += -DEXPORT_JS_API -DIMPL_MFBT
+
+ LIBS = $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(NSPR_LIBS) $(MOZ_ZLIB_LIBS)
+
+ LOCAL_INCLUDES += -I$(topsrcdir) -I..
+
++ifdef MOZ_NATIVE_ICU
++EXTRA_LIBS += $(MOZ_ICU_LIBS)
++endif
++
+ EXTRA_LIBS += $(MOZ_FFI_LIBS)
+
+ # Place a GDB Python auto-load file next to the gdb-tests executable, both
+ # in the build directory and in the dist/bin directory.
+ PP_TARGETS += GDB_AUTOLOAD
+ GDB_AUTOLOAD := gdb-tests-gdb.py.in
+ GDB_AUTOLOAD_FLAGS := -Dtopsrcdir=$(abspath $(topsrcdir))
+
+diff --git a/js/src/jsapi-tests/Makefile.in b/js/src/jsapi-tests/Makefile.in
+--- js/src/jsapi-tests/Makefile.in
++++ js/src/jsapi-tests/Makefile.in
+@@ -15,16 +15,20 @@ DEFINES += -DEXPORT_JS_API
+ # Building against js_static requires that we declare mfbt sybols "exported"
+ # on its behalf.
+ DEFINES += -DIMPL_MFBT
+
+ LIBS = $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(NSPR_LIBS) $(MOZ_ZLIB_LIBS)
+
+ LOCAL_INCLUDES += -I$(topsrcdir) -I..
+
++ifdef MOZ_NATIVE_ICU
++EXTRA_LIBS += $(MOZ_ICU_LIBS)
++endif
++
+ EXTRA_LIBS += $(MOZ_FFI_LIBS)
+
+ ifdef QEMU_EXE
+ MOZ_POST_PROGRAM_COMMAND = $(topsrcdir)/build/qemu-wrap --qemu $(QEMU_EXE) --libdir $(CROSS_LIB)
+ endif
+
+ # Place a GDB Python auto-load file next to the jsapi-tests executable in
+ # the build directory.
+diff --git a/js/src/shell/Makefile.in b/js/src/shell/Makefile.in
+--- js/src/shell/Makefile.in
++++ js/src/shell/Makefile.in
+@@ -22,16 +22,19 @@ DEFINES += -DEXPORT_JS_API
+ # Building against js_static requires that we declare mfbt sybols "exported"
+ # on its behalf.
+ DEFINES += -DIMPL_MFBT
+
+ LIBS = $(NSPR_LIBS) $(EDITLINE_LIBS) $(DEPTH)/$(LIB_PREFIX)js_static.$(LIB_SUFFIX) $(MOZ_ZLIB_LIBS)
+ ifdef MOZ_NATIVE_FFI
+ EXTRA_LIBS += $(MOZ_FFI_LIBS)
+ endif
++ifdef MOZ_NATIVE_ICU
++EXTRA_LIBS += $(MOZ_ICU_LIBS)
++endif
+
+ LOCAL_INCLUDES += -I$(topsrcdir) -I..
+
+ ifeq ($(OS_ARCH),Darwin)
+ ifeq ($(TARGET_CPU),x86_64)
+ DARWIN_EXE_LDFLAGS += -pagezero_size 10000 -image_base 100000000
+ endif
+ endif
diff --git a/www/libxul/files/patch-bug876156 b/www/libxul/files/patch-bug876156
new file mode 100644
index 000000000000..84ecf6170671
--- /dev/null
+++ b/www/libxul/files/patch-bug876156
@@ -0,0 +1,13 @@
+diff --git mfbt/Atomics.h mfbt/Atomics.h
+index d79af6c..40b9336 100644
+--- mfbt/Atomics.h
++++ mfbt/Atomics.h
+@@ -35,7 +35,7 @@
+ */
+ # if !defined(__linux__) && !defined(__OpenBSD__) && \
+ (__cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)) && \
+- __has_include(<atomic>)
++ __has_include_next(<atomic>)
+ # define MOZ_HAVE_CXX11_ATOMICS
+ # endif
+ /*
diff --git a/www/libxul/files/patch-bug878791 b/www/libxul/files/patch-bug878791
new file mode 100644
index 000000000000..d8a3612e1702
--- /dev/null
+++ b/www/libxul/files/patch-bug878791
@@ -0,0 +1,11 @@
+--- toolkit/components/osfile/osfile_unix_allthreads.jsm.orig 2013-05-11 21:19:53.000000000 +0200
++++ toolkit/components/osfile/osfile_unix_allthreads.jsm 2013-06-02 17:15:05.000000000 +0200
+@@ -40,7 +40,7 @@ if (typeof Components != "undefined") {
+ // Open libc
+ let libc;
+ let libc_candidates = [ "libSystem.B.dylib",
+- "libc.so.6",
++ "libc.so.7",
+ "libc.so" ];
+ for (let i = 0; i < libc_candidates.length; ++i) {
+ try {
diff --git a/www/libxul/files/patch-bug886181 b/www/libxul/files/patch-bug886181
new file mode 100644
index 000000000000..ed1c4df8348b
--- /dev/null
+++ b/www/libxul/files/patch-bug886181
@@ -0,0 +1,11 @@
+--- modules/libpref/src/init/all.js~
++++ modules/libpref/src/init/all.js
+@@ -193,7 +193,7 @@ pref("media.webm.enabled", true);
+ pref("media.dash.enabled", false);
+ #endif
+ #ifdef MOZ_GSTREAMER
+-pref("media.gstreamer.enabled", false);
++pref("media.gstreamer.enabled", true);
+ #endif
+ #ifdef MOZ_WEBRTC
+ pref("media.navigator.enabled", true);
diff --git a/www/libxul/files/patch-bug889699 b/www/libxul/files/patch-bug889699
new file mode 100644
index 000000000000..fef97da4ac50
--- /dev/null
+++ b/www/libxul/files/patch-bug889699
@@ -0,0 +1,175 @@
+commit 7eb5827
+Author: Edwin Flores <eflores@mozilla.com>
+Date: Sat Jul 20 12:03:08 2013 +1200
+
+ Bug 889699 - Make gstreamer backend return more accurate results for canPlayType() r=alessandro.d
+---
+ content/media/gstreamer/GStreamerFormatHelper.cpp | 90 +++++++++++++++++------
+ 1 file changed, 66 insertions(+), 24 deletions(-)
+
+diff --git content/media/gstreamer/GStreamerFormatHelper.cpp content/media/gstreamer/GStreamerFormatHelper.cpp
+index f05ff8f..39f1fdf 100644
+--- content/media/gstreamer/GStreamerFormatHelper.cpp
++++ content/media/gstreamer/GStreamerFormatHelper.cpp
+@@ -6,7 +6,7 @@
+
+ #include "GStreamerFormatHelper.h"
+ #include "nsCharSeparatedTokenizer.h"
+-#include "nsXPCOMStrings.h"
++#include "nsString.h"
+ #include "GStreamerLoader.h"
+
+ #define ENTRY_FORMAT(entry) entry[0]
+@@ -36,7 +36,7 @@ void GStreamerFormatHelper::Shutdown() {
+ }
+ }
+
+-char const *const GStreamerFormatHelper::mContainers[6][2] = {
++static char const *const sContainers[6][2] = {
+ {"video/mp4", "video/quicktime"},
+ {"video/quicktime", "video/quicktime"},
+ {"audio/mp4", "audio/x-m4a"},
+@@ -45,7 +45,7 @@ char const *const GStreamerFormatHelper::mContainers[6][2] = {
+ {"audio/mp3", "audio/mpeg, mpegversion=(int)1"},
+ };
+
+-char const *const GStreamerFormatHelper::mCodecs[9][2] = {
++static char const *const sCodecs[9][2] = {
+ {"avc1.42E01E", "video/x-h264"},
+ {"avc1.42001E", "video/x-h264"},
+ {"avc1.58A01E", "video/x-h264"},
+@@ -57,6 +57,15 @@ char const *const GStreamerFormatHelper::mCodecs[9][2] = {
+ {"mp3", "audio/mpeg, mpegversion=(int)1"},
+ };
+
++static char const * const sDefaultCodecCaps[][2] = {
++ {"video/mp4", "video/x-h264"},
++ {"video/quicktime", "video/x-h264"},
++ {"audio/mp4", "audio/mpeg, mpegversion=(int)4"},
++ {"audio/x-m4a", "audio/mpeg, mpegversion=(int)4"},
++ {"audio/mp3", "audio/mpeg, layer=(int)3"},
++ {"audio/mpeg", "audio/mpeg, layer=(int)3"}
++};
++
+ GStreamerFormatHelper::GStreamerFormatHelper()
+ : mFactories(nullptr),
+ mCookie(static_cast<uint32_t>(-1))
+@@ -66,15 +75,15 @@ GStreamerFormatHelper::GStreamerFormatHelper()
+ }
+
+ mSupportedContainerCaps = gst_caps_new_empty();
+- for (unsigned int i = 0; i < G_N_ELEMENTS(mContainers); i++) {
+- const char* capsString = mContainers[i][1];
++ for (unsigned int i = 0; i < G_N_ELEMENTS(sContainers); i++) {
++ const char* capsString = sContainers[i][1];
+ GstCaps* caps = gst_caps_from_string(capsString);
+ gst_caps_append(mSupportedContainerCaps, caps);
+ }
+
+ mSupportedCodecCaps = gst_caps_new_empty();
+- for (unsigned int i = 0; i < G_N_ELEMENTS(mCodecs); i++) {
+- const char* capsString = mCodecs[i][1];
++ for (unsigned int i = 0; i < G_N_ELEMENTS(sCodecs); i++) {
++ const char* capsString = sCodecs[i][1];
+ GstCaps* caps = gst_caps_from_string(capsString);
+ gst_caps_append(mSupportedCodecCaps, caps);
+ }
+@@ -92,6 +101,41 @@ GStreamerFormatHelper::~GStreamerFormatHelper() {
+ g_list_free(mFactories);
+ }
+
++static GstCaps *
++GetContainerCapsFromMIMEType(const char *aType) {
++ /* convert aMIMEType to gst container caps */
++ const char* capsString = nullptr;
++ for (uint32_t i = 0; i < G_N_ELEMENTS(sContainers); i++) {
++ if (!strcmp(ENTRY_FORMAT(sContainers[i]), aType)) {
++ capsString = ENTRY_CAPS(sContainers[i]);
++ break;
++ }
++ }
++
++ if (!capsString) {
++ /* we couldn't find any matching caps */
++ return nullptr;
++ }
++
++ return gst_caps_from_string(capsString);
++}
++
++static GstCaps *
++GetDefaultCapsFromMIMEType(const char *aType) {
++ GstCaps *caps = GetContainerCapsFromMIMEType(aType);
++
++ for (uint32_t i = 0; i < G_N_ELEMENTS(sDefaultCodecCaps); i++) {
++ if (!strcmp(sDefaultCodecCaps[i][0], aType)) {
++ GstCaps *tmp = gst_caps_from_string(sDefaultCodecCaps[i][1]);
++
++ gst_caps_append(caps, tmp);
++ return caps;
++ }
++ }
++
++ return nullptr;
++}
++
+ bool GStreamerFormatHelper::CanHandleMediaType(const nsACString& aMIMEType,
+ const nsAString* aCodecs) {
+ if (!sLoadOK) {
+@@ -101,7 +145,15 @@ bool GStreamerFormatHelper::CanHandleMediaType(const nsACString& aMIMEType,
+ const char *type;
+ NS_CStringGetData(aMIMEType, &type, NULL);
+
+- GstCaps* caps = ConvertFormatsToCaps(type, aCodecs);
++ GstCaps *caps;
++ if (aCodecs && !aCodecs->IsEmpty()) {
++ caps = ConvertFormatsToCaps(type, aCodecs);
++ } else {
++ // Get a minimal set of codec caps for this MIME type we should support so
++ // that we don't overreport MIME types we are able to play.
++ caps = GetDefaultCapsFromMIMEType(type);
++ }
++
+ if (!caps) {
+ return false;
+ }
+@@ -118,21 +170,11 @@ GstCaps* GStreamerFormatHelper::ConvertFormatsToCaps(const char* aMIMEType,
+
+ unsigned int i;
+
+- /* convert aMIMEType to gst container caps */
+- const char* capsString = nullptr;
+- for (i = 0; i < G_N_ELEMENTS(mContainers); i++) {
+- if (!strcmp(ENTRY_FORMAT(mContainers[i]), aMIMEType)) {
+- capsString = ENTRY_CAPS(mContainers[i]);
+- break;
+- }
+- }
+-
+- if (!capsString) {
+- /* we couldn't find any matching caps */
++ GstCaps *caps = GetContainerCapsFromMIMEType(aMIMEType);
++ if (!caps) {
+ return nullptr;
+ }
+
+- GstCaps* caps = gst_caps_from_string(capsString);
+ /* container only */
+ if (!aCodecs) {
+ return caps;
+@@ -141,11 +183,11 @@ GstCaps* GStreamerFormatHelper::ConvertFormatsToCaps(const char* aMIMEType,
+ nsCharSeparatedTokenizer tokenizer(*aCodecs, ',');
+ while (tokenizer.hasMoreTokens()) {
+ const nsSubstring& codec = tokenizer.nextToken();
+- capsString = nullptr;
++ const char *capsString = nullptr;
+
+- for (i = 0; i < G_N_ELEMENTS(mCodecs); i++) {
+- if (codec.EqualsASCII(ENTRY_FORMAT(mCodecs[i]))) {
+- capsString = ENTRY_CAPS(mCodecs[i]);
++ for (i = 0; i < G_N_ELEMENTS(sCodecs); i++) {
++ if (codec.EqualsASCII(ENTRY_FORMAT(sCodecs[i]))) {
++ capsString = ENTRY_CAPS(sCodecs[i]);
+ break;
+ }
+ }
diff --git a/www/libxul/files/patch-bug893397 b/www/libxul/files/patch-bug893397
new file mode 100644
index 000000000000..4d755c2ebb17
--- /dev/null
+++ b/www/libxul/files/patch-bug893397
@@ -0,0 +1,206 @@
+diff --git configure.in configure.in
+index 549ad06..2878d9f 100644
+--- configure.in
++++ configure.in
+@@ -8491,7 +8491,7 @@ case "$OS_TARGET" in
+ NECKO_WIFI=1
+ fi
+ ;;
+- Darwin|SunOS|WINNT)
++ Darwin|FreeBSD|SunOS|WINNT)
+ NECKO_WIFI=1
+ ;;
+ Linux)
+diff --git netwerk/wifi/moz.build netwerk/wifi/moz.build
+index 07b01de..11706af 100644
+--- netwerk/wifi/moz.build
++++ netwerk/wifi/moz.build
+@@ -34,6 +34,10 @@ if CONFIG['OS_ARCH'] == 'Darwin':
+ CMMSRCS += [
+ 'osx_corewlan.mm',
+ ]
++elif CONFIG['OS_ARCH'] == 'FreeBSD':
++ CPP_SOURCES += [
++ 'nsWifiScannerFreeBSD.cpp',
++ ]
+ elif CONFIG['OS_ARCH'] == 'WINNT':
+ CPP_SOURCES += [
+ 'nsWifiScannerWin.cpp',
+diff --git netwerk/wifi/nsWifiScannerFreeBSD.cpp netwerk/wifi/nsWifiScannerFreeBSD.cpp
+new file mode 100644
+index 0000000..80d4cb6
+--- /dev/null
++++ netwerk/wifi/nsWifiScannerFreeBSD.cpp
+@@ -0,0 +1,172 @@
++/* 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/. */
++
++// Developed by J.R. Oldroyd <fbsd@opal.com>, December 2012.
++
++// For FreeBSD we use the getifaddrs(3) to obtain the list of interfaces
++// and then check for those with an 802.11 media type and able to return
++// a list of stations. This is similar to ifconfig(8).
++
++#include <sys/types.h>
++#include <sys/ioctl.h>
++#include <sys/socket.h>
++#include <net/if.h>
++#include <net/if_media.h>
++#include <net80211/ieee80211_ioctl.h>
++
++#include <ifaddrs.h>
++#include <string.h>
++#include <unistd.h>
++
++#include "nsWifiAccessPoint.h"
++
++using namespace mozilla;
++
++static nsresult
++FreeBSDGetAccessPointData(nsCOMArray<nsWifiAccessPoint> &accessPoints)
++{
++ bool res = false;
++ char *dupn = NULL;
++ struct ifaddrs *ifal, *ifa;
++ unsigned len;
++
++ // get list of interfaces
++ if (getifaddrs(&ifal) < 0)
++ return NS_ERROR_FAILURE;
++
++ accessPoints.Clear();
++
++ // loop through the interfaces
++ for (ifa = ifal; ifa; ifa = ifa->ifa_next) {
++ int s;
++ struct ifreq ifr;
++ struct ifmediareq ifmr;
++ struct ieee80211req i802r;
++ char iscanbuf[32*1024], *vsr;
++
++ memset(&ifr, 0, sizeof(ifr));
++
++ // list can contain duplicates, so ignore those
++ if (dupn != NULL && strcmp(dupn, ifa->ifa_name) == 0)
++ continue;
++ dupn = ifa->ifa_name;
++
++ // store interface name in socket structure
++ strncpy(ifr.ifr_name, ifa->ifa_name, sizeof(ifr.ifr_name));
++ ifr.ifr_addr.sa_family = AF_LOCAL;
++
++ // open socket to interface
++ if ((s = socket(ifr.ifr_addr.sa_family, SOCK_DGRAM, 0)) < 0)
++ continue;
++
++ // clear interface media structure
++ (void) memset(&ifmr, 0, sizeof(ifmr));
++ (void) strncpy(ifmr.ifm_name, ifa->ifa_name, sizeof(ifmr.ifm_name));
++
++ // get interface media information
++ if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) < 0) {
++ close(s);
++ continue;
++ }
++
++ // check interface is a WiFi interface
++ if (IFM_TYPE(ifmr.ifm_active) != IFM_IEEE80211) {
++ close(s);
++ continue;
++ }
++
++ // perform WiFi scan
++ (void) memset(&i802r, 0, sizeof(i802r));
++ (void) strncpy(i802r.i_name, ifa->ifa_name, sizeof(i802r.i_name));
++ i802r.i_type = IEEE80211_IOC_SCAN_RESULTS;
++ i802r.i_data = iscanbuf;
++ i802r.i_len = sizeof(iscanbuf);
++ if (ioctl(s, SIOCG80211, &i802r) < 0) {
++ close(s);
++ continue;
++ }
++
++ // close socket
++ close(s);
++
++ // loop through WiFi networks and build geoloc-lookup structure
++ vsr = (char *) i802r.i_data;
++ len = i802r.i_len;
++ while (len >= sizeof(struct ieee80211req_scan_result)) {
++ struct ieee80211req_scan_result *isr;
++ char *id;
++ int idlen;
++ char ssid[IEEE80211_NWID_LEN+1];
++ nsWifiAccessPoint *ap;
++
++ isr = (struct ieee80211req_scan_result *) vsr;
++
++ // determine size of this entry
++ if (isr->isr_meshid_len) {
++ id = vsr + isr->isr_ie_off + isr->isr_ssid_len;
++ idlen = isr->isr_meshid_len;
++ }
++ else {
++ id = vsr + isr->isr_ie_off;
++ idlen = isr->isr_ssid_len;
++ }
++
++ // copy network data
++ strncpy(ssid, id, idlen);
++ ssid[idlen] = '\0';
++ ap = new nsWifiAccessPoint();
++ ap->setSSID(ssid, strlen(ssid));
++ ap->setMac(isr->isr_bssid);
++ ap->setSignal(isr->isr_rssi);
++ accessPoints.AppendObject(ap);
++ res = true;
++
++ // log the data
++ LOG(( "FreeBSD access point: "
++ "SSID: %s, MAC: %02x-%02x-%02x-%02x-%02x-%02x, "
++ "Strength: %d, Channel: %dMHz\n",
++ ssid, isr->isr_bssid[0], isr->isr_bssid[1], isr->isr_bssid[2],
++ isr->isr_bssid[3], isr->isr_bssid[4], isr->isr_bssid[5],
++ isr->isr_rssi, isr->isr_freq));
++
++ // increment pointers
++ len -= isr->isr_len;
++ vsr += isr->isr_len;
++ }
++ }
++
++ freeifaddrs(ifal);
++
++ return res ? NS_OK : NS_ERROR_FAILURE;
++}
++
++nsresult
++nsWifiMonitor::DoScan()
++{
++ // Regularly get the access point data.
++
++ nsCOMArray<nsWifiAccessPoint> lastAccessPoints;
++ nsCOMArray<nsWifiAccessPoint> accessPoints;
++
++ do {
++ nsresult rv = FreeBSDGetAccessPointData(accessPoints);
++ if (NS_FAILED(rv))
++ return rv;
++
++ bool accessPointsChanged = !AccessPointsEqual(accessPoints, lastAccessPoints);
++ ReplaceArray(lastAccessPoints, accessPoints);
++
++ rv = CallWifiListeners(lastAccessPoints, accessPointsChanged);
++ NS_ENSURE_SUCCESS(rv, rv);
++
++ // wait for some reasonable amount of time. pref?
++ LOG(("waiting on monitor\n"));
++
++ ReentrantMonitorAutoEnter mon(mReentrantMonitor);
++ mon.Wait(PR_SecondsToInterval(60));
++ }
++ while (mKeepGoing);
++
++ return NS_OK;
++}
diff --git a/www/libxul/files/patch-bug910875 b/www/libxul/files/patch-bug910875
new file mode 100644
index 000000000000..4f1d5a521e84
--- /dev/null
+++ b/www/libxul/files/patch-bug910875
@@ -0,0 +1,102 @@
+diff --git media/webrtc/trunk/webrtc/modules/audio_device/audio_device_impl.cc media/webrtc/trunk/webrtc/modules/audio_device/audio_device_impl.cc
+index f231b1e..6087696 100644
+--- media/webrtc/trunk/webrtc/modules/audio_device/audio_device_impl.cc
++++ media/webrtc/trunk/webrtc/modules/audio_device/audio_device_impl.cc
+@@ -16,7 +16,9 @@
+ #include <assert.h>
+ #include <string.h>
+
+-#if defined(_WIN32)
++#if defined(WEBRTC_DUMMY_AUDIO_BUILD)
++// do not include platform specific headers
++#elif defined(_WIN32)
+ #include "audio_device_utility_win.h"
+ #include "audio_device_wave_win.h"
+ #if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
+@@ -32,14 +34,8 @@
+ #include <stdlib.h>
+ #include "audio_device_utility_android.h"
+ #include "audio_device_jni_android.h"
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+ #include "audio_device_utility_linux.h"
+- #if defined(LINUX_ALSA)
+- #include "audio_device_alsa_linux.h"
+- #endif
+- #if defined(LINUX_PULSE)
+- #include "audio_device_pulse_linux.h"
+- #endif
+ #elif defined(WEBRTC_IOS)
+ #include "audio_device_utility_ios.h"
+ #include "audio_device_ios.h"
+@@ -47,6 +43,12 @@
+ #include "audio_device_utility_mac.h"
+ #include "audio_device_mac.h"
+ #endif
++#if defined(LINUX_ALSA)
++ #include "audio_device_alsa_linux.h"
++#endif
++#if defined(LINUX_PULSE)
++ #include "audio_device_pulse_linux.h"
++#endif
+ #include "audio_device_dummy.h"
+ #include "audio_device_utility_dummy.h"
+ #include "critical_section_wrapper.h"
+@@ -161,7 +163,7 @@ WebRtc_Word32 AudioDeviceModuleImpl::Che
+ #elif defined(WEBRTC_ANDROID)
+ platform = kPlatformAndroid;
+ WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "current platform is ANDROID");
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+ platform = kPlatformLinux;
+ WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "current platform is LINUX");
+ #elif defined(WEBRTC_IOS)
+@@ -309,7 +311,7 @@ int32_t AudioDeviceModuleImpl::CreatePlatformSpecificObjects()
+
+ // Create the *Linux* implementation of the Audio Device
+ //
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+ if ((audioLayer == kLinuxPulseAudio) || (audioLayer == kPlatformDefaultAudio))
+ {
+ #if defined(LINUX_PULSE)
+@@ -355,7 +357,7 @@ int32_t AudioDeviceModuleImpl::CreatePlatformSpecificObjects()
+ //
+ ptrAudioDeviceUtility = new AudioDeviceUtilityLinux(Id());
+ }
+-#endif // #if defined(WEBRTC_LINUX)
++#endif // #if defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+
+ // Create the *iPhone* implementation of the Audio Device
+ //
+diff --git media/webrtc/trunk/webrtc/modules/audio_device/test/audio_device_test_api.cc media/webrtc/trunk/webrtc/modules/audio_device/test/audio_device_test_api.cc
+index defd7f8..906c4a2 100644
+--- media/webrtc/trunk/webrtc/modules/audio_device/test/audio_device_test_api.cc
++++ media/webrtc/trunk/webrtc/modules/audio_device/test/audio_device_test_api.cc
+@@ -197,7 +197,7 @@ class AudioDeviceAPITest: public testing::Test {
+ // Create default implementation instance
+ EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
+ kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL);
+-#elif defined(WEBRTC_LINUX)
++#elif defined(WEBRTC_LINUX) || defined(WEBRTC_BSD)
+ EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
+ kId, AudioDeviceModule::kWindowsWaveAudio)) == NULL);
+ EXPECT_TRUE((audio_device_ = AudioDeviceModuleImpl::Create(
+@@ -1690,7 +1690,7 @@ TEST_F(AudioDeviceAPITest, CPULoad) {
+
+ // TODO(kjellander): Fix flakiness causing failures on Windows.
+ // TODO(phoglund): Fix flakiness causing failures on Linux.
+-#if !defined(_WIN32) && !defined(WEBRTC_LINUX)
++#if !defined(_WIN32) && !defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ TEST_F(AudioDeviceAPITest, StartAndStopRawOutputFileRecording) {
+ // NOTE: this API is better tested in a functional test
+ CheckInitialPlayoutStates();
+@@ -1759,7 +1759,7 @@ TEST_F(AudioDeviceAPITest, StartAndStopRawInputFileRecording) {
+ // - size of raw_input_not_recording.pcm shall be 0
+ // - size of raw_input_not_recording.pcm shall be > 0
+ }
+-#endif // !WIN32 && !WEBRTC_LINUX
++#endif // !WIN32 && !WEBRTC_LINUX && !defined(WEBRTC_BSD)
+
+ TEST_F(AudioDeviceAPITest, RecordingSampleRate) {
+ uint32_t sampleRate(0);
diff --git a/www/libxul/files/patch-bug916216 b/www/libxul/files/patch-bug916216
new file mode 100644
index 000000000000..ca82967fa78c
--- /dev/null
+++ b/www/libxul/files/patch-bug916216
@@ -0,0 +1,39 @@
+--- media/webrtc/trunk/build/build_config.h~
++++ media/webrtc/trunk/build/build_config.h
+@@ -37,9 +37,15 @@
+ #elif defined(_WIN32)
+ #define OS_WIN 1
+ #define TOOLKIT_VIEWS 1
+-#elif defined(__FreeBSD__)
++#elif defined(__DragonFly__)
++#define OS_DRAGONFLY 1
++#define TOOLKIT_GTK
++#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ #define OS_FREEBSD 1
+ #define TOOLKIT_GTK
++#elif defined(__NetBSD__)
++#define OS_NETBSD 1
++#define TOOLKIT_GTK
+ #elif defined(__OpenBSD__)
+ #define OS_OPENBSD 1
+ #define TOOLKIT_GTK
+@@ -56,15 +62,15 @@
+
+ // For access to standard BSD features, use OS_BSD instead of a
+ // more specific macro.
+-#if defined(OS_FREEBSD) || defined(OS_OPENBSD)
++#if defined(OS_DRAGONFLY) || defined(OS_FREEBSD) \
++ || defined(OS_NETBSD) || defined(OS_OPENBSD)
+ #define OS_BSD 1
+ #endif
+
+ // For access to standard POSIXish features, use OS_POSIX instead of a
+ // more specific macro.
+-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_FREEBSD) || \
+- defined(OS_OPENBSD) || defined(OS_SOLARIS) || defined(OS_ANDROID) || \
+- defined(OS_NACL)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \
++ defined(OS_SOLARIS) || defined(OS_ANDROID) || defined(OS_NACL)
+ #define OS_POSIX 1
+ #endif
+
diff --git a/www/libxul/files/patch-bug916589 b/www/libxul/files/patch-bug916589
new file mode 100644
index 000000000000..664a7b167314
--- /dev/null
+++ b/www/libxul/files/patch-bug916589
@@ -0,0 +1,40 @@
+diff --git media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h media/mtransport/third_party/nrappkit/src/port/generic/include/sys/queue.h
+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,14 @@
+ */
+
+-#ifndef _SYS_QUEUE_H_
++#if (defined(BSD) && !defined(__OpenBSD__)) || defined(DARWIN)
++#include_next <sys/queue.h>
++#elif !defined(_SYS_QUEUE_H_)
+ #define _SYS_QUEUE_H_
+
+-#if !defined(__FreeBSD__) && !defined(DARWIN)
+ #include <stddef.h>
+-#define __offsetof offsetof
++
++#ifndef offsetof
++#define offsetof(type, field) ((size_t)(&((type *)0)->field))
+ #endif
+
+ #define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
+@@ -43,8 +46,6 @@
+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
+ (var) = (tvar))
+
+-// #define __offsetof(type, field) ((size_t)(&((type *)0)->field))
+-
+ /*
+ * This file defines four types of data structures: singly-linked lists,
+ * singly-linked tail queues, lists and tail queues.
+@@ -285,7 +286,7 @@ struct { \
+ (STAILQ_EMPTY((head)) ? \
+ NULL : \
+ ((struct type *) \
+- ((char *)((head)->stqh_last) - __offsetof(struct type, field))))
++ ((char *)((head)->stqh_last) - offsetof(struct type, field))))
+
+ #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next)
+
diff --git a/www/libxul/files/patch-build-pgo-profileserver.py b/www/libxul/files/patch-build-pgo-profileserver.py
index 0571eb19903d..31a3a0889c0a 100644
--- a/www/libxul/files/patch-build-pgo-profileserver.py
+++ b/www/libxul/files/patch-build-pgo-profileserver.py
@@ -1,18 +1,11 @@
--- build/pgo/profileserver.py.orig 2011-02-24 21:49:47.000000000 +0100
+++ build/pgo/profileserver.py 2011-02-24 21:50:30.000000000 +0100
-@@ -77,13 +77,13 @@
- t.setDaemon(True) # don't hang on exit
- t.start()
-
-- automation.setServerInfo("localhost", PORT)
-+ automation.setServerInfo("127.0.0.1", PORT)
- automation.initializeProfile(PROFILE_DIRECTORY)
- browserEnv = automation.environment()
- browserEnv["XPCOM_DEBUG_BREAK"] = "warn"
- browserEnv["MOZ_JAR_LOG_DIR"] = MOZ_JAR_LOG_DIR
+@@ -59,7 +59,7 @@ if __name__ == '__main__':
+ env["MOZ_JAR_LOG_FILE"] = os.path.abspath(jarlog)
+ print "jarlog: %s" % env["MOZ_JAR_LOG_FILE"]
-- url = "http://localhost:%d/index.html" % PORT
-+ url = "http://127.0.0.1:%d/index.html" % PORT
- appPath = os.path.join(SCRIPT_DIR, automation.DEFAULT_APP)
- status = automation.runApp(url, browserEnv, appPath, PROFILE_DIRECTORY, {},
- debuggerInfo=debuggerInfo,
+- cmdargs = ["http://localhost:%d/index.html" % PORT]
++ cmdargs = ["http://127.0.0.1:%d/index.html" % PORT]
+ runner = FirefoxRunner(profile=profile,
+ binary=build.get_binary_path(where="staged-package"),
+ cmdargs=cmdargs,
diff --git a/www/libxul/files/patch-clang33 b/www/libxul/files/patch-clang33
deleted file mode 100644
index dbf18eb4b70d..000000000000
--- a/www/libxul/files/patch-clang33
+++ /dev/null
@@ -1,25 +0,0 @@
---- js/src/jspropertycacheinlines.h~
-+++ js/src/jspropertycacheinlines.h
-@@ -31,7 +31,7 @@ JS_ALWAYS_INLINE void
- js::PropertyCache::test(JSContext *cx, jsbytecode *pc, JSObject *&obj,
- JSObject *&pobj, PropertyCacheEntry *&entry, PropertyName *&name)
- {
-- AssertRootingUnnecessary assert(cx);
-+ js::AssertRootingUnnecessary assert(cx);
-
- JS_ASSERT(this == &JS_PROPERTY_CACHE(cx));
-
---- js/src/vm/ObjectImpl-inl.h~
-+++ js/src/vm/ObjectImpl-inl.h
-@@ -176,9 +176,9 @@ js::ObjectImpl::initializeSlotRange(uint
- JSCompartment *comp = compartment();
- uint32_t offset = start;
- for (HeapSlot *sp = fixedStart; sp < fixedEnd; sp++)
-- sp->init(comp, this->asObjectPtr(), offset++, UndefinedValue());
-+ sp->init(comp, this->asObjectPtr(), offset++, js::UndefinedValue());
- for (HeapSlot *sp = slotsStart; sp < slotsEnd; sp++)
-- sp->init(comp, this->asObjectPtr(), offset++, UndefinedValue());
-+ sp->init(comp, this->asObjectPtr(), offset++, js::UndefinedValue());
- }
-
- inline bool
diff --git a/www/libxul/files/patch-duckduckgo b/www/libxul/files/patch-duckduckgo
new file mode 100644
index 000000000000..bc3a7e321f41
--- /dev/null
+++ b/www/libxul/files/patch-duckduckgo
@@ -0,0 +1,47 @@
+diff -r f2fa4ae74ee1 browser/locales/en-US/chrome/browser-region/region.properties
+--- browser/locales/en-US/chrome/browser-region/region.properties Mon Oct 24 22:54:18 2011 +0300
++++ browser/locales/en-US/chrome/browser-region/region.properties Tue Oct 25 21:13:40 2011 -0400
+@@ -9,6 +9,7 @@
+ browser.search.order.1=Google
+ browser.search.order.2=Yahoo
+ browser.search.order.3=Bing
++browser.search.order.4=DuckDuckGo
+
+ # This is the default set of web based feed handlers shown in the reader
+ # selection UI
+--- /dev/null 2013-02-09 00:33:00.000000000 +0100
++++ browser/locales/en-US/searchplugins/duckduckgo.xml 2013-02-09 00:40:19.000000000 +0100
+@@ -0,0 +1,11 @@
++<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
++<ShortName>DuckDuckGo</ShortName>
++<Description>We believe in better search and not tracking.</Description>
++<InputEncoding>UTF-8</InputEncoding>
++<Image height="16" width="16" type="image/x-icon">data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAANcNAADXDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyDsJmlk8pf6+v3s/v7+++zr/fcnIOyzJyDsgCcg7CYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIOwBJyDscCcg7PZttJ7/7Pfs//////++xO7/S5GA/ycg7P8nIOz2JyDscCcg7AEAAAAAAAAAAAAAAAAnIOwBJyDstScg7P8nIOz/Y8p5/2fHZf9Yv0z/YcF2/1rBUv8nIOz/JyDs/ycg7P8nIOy1JyDsAQAAAAAAAAAAJyDscCcg7P8nIOz/JyDs/4jQoP/p9+n//////05X3v9LkYD/JyDs/ycg7P8nIOz/JyDs/ycg7HAAAAAAJyDsJicg7PYnIOz/JyDs/zUu7f/+/v////////////89N+7/JyDs/yUo7f8nIOz/JyDs/ycg7P8nIOz2JyDsJicg7IAnIOz/JyDs/ycg7P9hXPH////////////t/P//GIr2/wfD+/8Gyfz/DKv5/yM57/8nIOz/JyDs/ycg7H8nIOyzJyDs/ycg7P8nIOz/jov1////////////Otz9/w3G/P8cWfH/JSvt/ycg7P8nIOz/JyDs/ycg7P8nIOyzJyDs5icg7P8nIOz/JyDs/7u5+f///////////27l/v8E0v3/BNL9/wTQ/f8Oofn/IT7v/ycg7P8nIOz/JyDs5icg7OYnIOz/JyDs/ycg7P/p6P3/uWsC////////////5fr//6Po/f8Thfb/DKv5/w6f+f8nIOz/JyDs/ycg7OYnIOyzJyDs/ycg7P8nIOz/9/b+/////////////////7lrAv/V1Pv/JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOyzJyDsgCcg7P8nIOz/JyDs/8/N+///////////////////////iIX1/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDsfycg7CYnIOz2JyDs/ycg7P9FP+7/q6n4/+7u/f/n5v3/fXn0/yoj7P8nIOz/JyDs/ycg7P8nIOz/JyDs9icg7CYAAAAAJyDscCcg7P8nIOz/wsD6/+no/f/Y1/z/eHTz/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs/ycg7HAAAAAAAAAAACcg7AEnIOy1JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs/ycg7LUnIOwBAAAAAAAAAAAAAAAAJyDsAScg7HAnIOz2JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs9icg7HAnIOwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyDsJicg7IAnIOyzJyDs5icg7OYnIOyzJyDsgCcg7CYAAAAAAAAAAAAAAAAAAAAA+B8AAPAPAADAAwAAwAMAAIABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAACAAQAAwAMAAMADAADwDwAA+B8AAA==</Image>
++<Url type="text/html" method="GET" template="https://duckduckgo.com/">
++<Param name="q" value="{searchTerms}"/>
++<Param name="t" value="freebsd"/>
++</Url>
++<SearchForm>https://duckduckgo.com/</SearchForm>
++</SearchPlugin>
+diff -r f2fa4ae74ee1 browser/locales/en-US/searchplugins/list.txt
+--- browser/locales/en-US/searchplugins/list.txt Mon Oct 24 22:54:18 2011 +0300
++++ browser/locales/en-US/searchplugins/list.txt Tue Oct 25 21:13:40 2011 -0400
+@@ -1,7 +1,8 @@
+ amazondotcom
+ bing
++duckduckgo
+ eBay
+ google
+ twitter
+ wikipedia
+ yahoo
+--- browser/app/profile/firefox.js.orig 2013-02-09 12:26:02.000000000 +0100
++++ browser/app/profile/firefox.js 2013-02-09 12:26:19.000000000 +0100
+@@ -341,6 +341,7 @@
+ pref("browser.search.order.1", "chrome://browser-region/locale/region.properties");
+ pref("browser.search.order.2", "chrome://browser-region/locale/region.properties");
+ pref("browser.search.order.3", "chrome://browser-region/locale/region.properties");
++pref("browser.search.order.4", "chrome://browser-region/locale/region.properties");
+
+ // search bar results always open in a new tab
+ pref("browser.search.openintab", false);
diff --git a/www/libxul/files/patch-ipc-chromium-Makefile.in b/www/libxul/files/patch-ipc-chromium-Makefile.in
index b660c3662bb0..0e20edf2ee37 100644
--- a/www/libxul/files/patch-ipc-chromium-Makefile.in
+++ b/www/libxul/files/patch-ipc-chromium-Makefile.in
@@ -1,20 +1,5 @@
--- ipc/chromium/Makefile.in~
+++ ipc/chromium/Makefile.in
-@@ -43,6 +43,14 @@ include $(DEPTH)/config/autoconf.mk
-
- OS_CXXFLAGS := $(filter-out -fshort-wchar,$(OS_CXXFLAGS))
-
-+# workaround IPC hang with libevent2
-+ifndef MOZ_DEBUG
-+ifneq (,$(filter 4.2.%, $(CXX_VERSION)))
-+MOZ_OPTIMIZE_FLAGS = -O1
-+OS_CXXFLAGS += $(MOZ_OPTIMIZE_FLAGS)
-+endif
-+endif
-+
- LIBRARY_NAME = chromium_s
- FORCE_STATIC_LIB = 1
- LIBXUL_LIBRARY = 1
@@ -55,9 +60,7 @@ vpath %.c \
$(srcdir)/src/third_party/libevent \
$(NULL)
diff --git a/www/libxul/files/patch-ipc-chromium-src-base-message_pump_libevent.cc b/www/libxul/files/patch-ipc-chromium-src-base-message_pump_libevent.cc
index 7d4dc959eedf..02b6a5e90eca 100644
--- a/www/libxul/files/patch-ipc-chromium-src-base-message_pump_libevent.cc
+++ b/www/libxul/files/patch-ipc-chromium-src-base-message_pump_libevent.cc
@@ -1,9 +1,9 @@
--- ipc/chromium/src/base/message_pump_libevent.cc~
+++ ipc/chromium/src/base/message_pump_libevent.cc
-@@ -15,7 +15,7 @@
- #include "base/scoped_nsautorelease_pool.h"
+@@ -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"
diff --git a/www/libxul/files/patch-js-src-methodjit-MethodJIT.cpp b/www/libxul/files/patch-js-src-methodjit-MethodJIT.cpp
deleted file mode 100644
index d29c15ccc05a..000000000000
--- a/www/libxul/files/patch-js-src-methodjit-MethodJIT.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
---- js/src/methodjit/MethodJIT.cpp~
-+++ js/src/methodjit/MethodJIT.cpp
-@@ -171,7 +171,7 @@
-
- JS_STATIC_ASSERT(offsetof(FrameRegs, sp) == 0);
-
--#if defined(__linux__) && defined(JS_CPU_X64)
-+#if defined(__ELF__) && defined(JS_CPU_X64)
- # define SYMBOL_STRING_RELOC(name) #name "@plt"
- #else
- # define SYMBOL_STRING_RELOC(name) SYMBOL_STRING(name)
-@@ -149,7 +149,7 @@
-
- #if defined(XP_MACOSX)
- # define HIDE_SYMBOL(name) ".private_extern _" #name
--#elif defined(__linux__)
-+#elif defined(__ELF__)
- # define HIDE_SYMBOL(name) ".hidden" #name
- #else
- # define HIDE_SYMBOL(name)
diff --git a/www/libxul/files/patch-media-libsydneyaudio-src-sydney_audio_oss.c b/www/libxul/files/patch-media-libsydneyaudio-src-sydney_audio_oss.c
deleted file mode 100644
index a7fd5f1ffd09..000000000000
--- a/www/libxul/files/patch-media-libsydneyaudio-src-sydney_audio_oss.c
+++ /dev/null
@@ -1,13 +0,0 @@
---- media/libsydneyaudio/src/sydney_audio_oss.c~
-+++ media/libsydneyaudio/src/sydney_audio_oss.c
-@@ -446,6 +446,10 @@ static void audio_callback(void* data)
- printf("!"); /* not enough audio data */
- #endif
- bytes = bytes-bytes_to_copy;
-+ struct timespec ts = {0, 1000000};
-+ pthread_mutex_unlock(&s->mutex);
-+ nanosleep(&ts, NULL);
-+ pthread_mutex_lock(&s->mutex);
- break;
- }
- free(s->bl_head);
diff --git a/www/libxul/files/patch-media-webrtc-trunk-src-system_wrappers-source-spreadsortlib-spreadsort.hpp b/www/libxul/files/patch-media-webrtc-trunk-src-system_wrappers-source-spreadsortlib-spreadsort.hpp
new file mode 100644
index 000000000000..eeb58e7baa20
--- /dev/null
+++ b/www/libxul/files/patch-media-webrtc-trunk-src-system_wrappers-source-spreadsortlib-spreadsort.hpp
@@ -0,0 +1,16 @@
+--- media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp~
++++ media/webrtc/trunk/webrtc/system_wrappers/source/spreadsortlib/spreadsort.hpp
+@@ -21,6 +21,13 @@ Scott McMurray
+ #include "constants.hpp"
+ #include <cstring>
+
++#ifdef __FreeBSD__
++# include <osreldate.h>
++# if __FreeBSD_version < 900506
++# define getchar boost_getchar
++# endif
++#endif
++
+ namespace boost {
+ namespace detail {
+ //This only works on unsigned data types
diff --git a/www/libxul/files/patch-no-videoio.h b/www/libxul/files/patch-no-videoio.h
new file mode 100644
index 000000000000..c20c0e039827
--- /dev/null
+++ b/www/libxul/files/patch-no-videoio.h
@@ -0,0 +1,22 @@
+--- 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/libxul/files/patch-z-bug762445 b/www/libxul/files/patch-z-bug762445
deleted file mode 100644
index fd42fea9cab2..000000000000
--- a/www/libxul/files/patch-z-bug762445
+++ /dev/null
@@ -1,70 +0,0 @@
-commit b44dc8e
-Author: Jan Beich <jbeich@tormail.org>
-Date: Fri Oct 12 18:49:59 2012 +0000
-
- Bug 762445 - Add jemalloc3 glue for heap-committed, heap-dirty in about:memory.
----
- memory/build/mozjemalloc_compat.c | 34 ++++++++++++++++++++++++++++------
- 1 file changed, 28 insertions(+), 6 deletions(-)
-
-diff --git memory/build/mozjemalloc_compat.c memory/build/mozjemalloc_compat.c
-index 94ad96e..7adfef5 100644
---- memory/build/mozjemalloc_compat.c
-+++ memory/build/mozjemalloc_compat.c
-@@ -11,15 +11,50 @@
- #define wrap(a) je_ ## a
- #endif
-
--extern MOZ_IMPORT_API(int)
-+/*
-+ * CTL_* macros are from memory/jemalloc/src/src/stats.c with changes:
-+ * - drop `t' argument to avoid redundancy in calculating type size
-+ * - require `i' argument for arena number explicitly
-+ */
-+
-+#define CTL_GET(n, v) do { \
-+ size_t sz = sizeof(v); \
-+ wrap(mallctl)(n, &v, &sz, NULL, 0); \
-+} while (0)
-+
-+#define CTL_I_GET(n, v, i) do { \
-+ size_t mib[6]; \
-+ size_t miblen = sizeof(mib) / sizeof(mib[0]); \
-+ size_t sz = sizeof(v); \
-+ wrap(mallctlnametomib)(n, mib, &miblen); \
-+ mib[2] = i; \
-+ wrap(mallctlbymib)(mib, miblen, &v, &sz, NULL, 0); \
-+} while (0)
-+
-+MOZ_IMPORT_API(int)
- wrap(mallctl)(const char*, void*, size_t*, void*, size_t);
-+MOZ_IMPORT_API(int)
-+wrap(mallctlnametomib)(const char *name, size_t *mibp, size_t *miblenp);
-+MOZ_IMPORT_API(int)
-+wrap(mallctlbymib)(const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen);
-
- MOZ_EXPORT_API(void)
- jemalloc_stats(jemalloc_stats_t *stats)
- {
-- size_t size = sizeof(stats->mapped);
-- wrap(mallctl)("stats.mapped", &stats->mapped, &size, NULL, 0);
-- wrap(mallctl)("stats.allocated", &stats->allocated, &size, NULL, 0);
-- stats->committed = -1;
-- stats->dirty = -1;
-+ unsigned narenas;
-+ size_t active, allocated, mapped, page, pdirty;
-+
-+ CTL_GET("arenas.narenas", narenas);
-+ CTL_GET("arenas.page", page);
-+ CTL_GET("stats.active", active);
-+ CTL_GET("stats.allocated", allocated);
-+ CTL_GET("stats.mapped", mapped);
-+
-+ /* get the summation for all arenas, i == narenas */
-+ CTL_I_GET("stats.arenas.0.pdirty", pdirty, narenas);
-+
-+ stats->allocated = allocated;
-+ stats->mapped = mapped;
-+ stats->dirty = pdirty * page;
-+ stats->committed = active + stats->dirty;
- }
diff --git a/www/libxul/files/pkg-deinstall.in b/www/libxul/files/pkg-deinstall.in
new file mode 100644
index 000000000000..c54266e6984f
--- /dev/null
+++ b/www/libxul/files/pkg-deinstall.in
@@ -0,0 +1,24 @@
+#!/bin/sh
+# Created by: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xDEINSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+rm -f ${MOZDIR}/component.reg
+rm -f ${MOZDIR}/components/*.dat
+rm -f ${MOZDIR}/components.ini
+rm -f ${MOZDIR}/defaults.ini
+rm -f ${MOZDIR}/chrome/app-chrome.manifest
+rm -rf ${MOZDIR}/updates
+find %%MOZDIR%%/plugins/ -depth 1 -type l -delete > /dev/null 2>&1
+find %%MOZDIR%%/extensions/ -depth 1 -type l -delete > /dev/null 2>&1
+
+exit 0
diff --git a/www/libxul/files/pkg-install.in b/www/libxul/files/pkg-install.in
new file mode 100644
index 000000000000..bb5cc73af4e8
--- /dev/null
+++ b/www/libxul/files/pkg-install.in
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Created by: Thierry Thomas (<thierry@pompo.net>)
+# Fix the chrome registry.
+
+umask 022
+PATH=/bin:/usr/bin
+
+[ "x$1" = "x" ] && exit 1
+[ "x$2" != "xPOST-INSTALL" ] && exit 0
+
+MOZDIR=%%MOZDIR%%
+MOZBIN=${MOZDIR}/%%MOZILLA_BIN%%
+REGXPCOM=${MOZDIR}/regxpcom
+REGCHROME=${MOZDIR}/regchrome
+
+rm -rf ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/chrome/*.rdf
+mkdir -p ${MOZDIR}/chrome/overlayinfo
+rm -f ${MOZDIR}/component.reg
+
+cd ${MOZDIR} || exit 1
+if [ -f ${REGXPCOM} ]; then
+ ./run-mozilla.sh ${REGXPCOM} || true
+fi
+if [ -f ${REGCHROME} ]; then
+ ./run-mozilla.sh ${REGCHROME} || true
+fi
+if [ -f ${MOZBIN} -a "${1%-*}" = "nvu" ]; then
+ ./run-mozilla.sh ${MOZBIN} -register > /dev/null 2>&1
+fi
+cp -R %%LOCALBASE%%/lib/xpi/symlinks/%%MOZILLA%%/ %%MOZDIR%%/extensions/ > /dev/null 2>&1
+
+exit 0
diff --git a/www/linux-firefox/Makefile b/www/linux-firefox/Makefile
index 726227ea9219..fdd58bc51515 100644
--- a/www/linux-firefox/Makefile
+++ b/www/linux-firefox/Makefile
@@ -2,19 +2,17 @@
# $FreeBSD$
PORTNAME= firefox
-PORTVERSION= 23.0
+DISTVERSION= 24.0
PORTEPOCH= 1
CATEGORIES= www
-MASTER_SITES= MOZILLA/${PORTNAME}/releases/${PORTVERSION}/linux-i686/en-US
+MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}esr/linux-i686/en-US
+DISTNAME= ${PORTNAME}-${DISTVERSION}esr
MAINTAINER= gecko@FreeBSD.org
COMMENT= Web browser based on the browser portion of Mozilla
-EXTRACT_DEPENDS=${NONEXISTENT}:${PORTSDIR}/www/linux-seamonkey:extract
-
-CONFLICTS= linux-firefox-24.* linux-firefox-1[07].*
-USE_LDCONFIG= yes
USE_BZIP2= yes
+REPLACE_GRE= yes
USE_LINUX_APPS= dbusglib dbuslibs alsalib alsa-plugins-oss
@@ -23,23 +21,4 @@ APP_SUBDIR= browser/ # plugins, extensions
.include "${.CURDIR}/../linux-seamonkey/Makefile.common"
-# XXX remove after linux_base-c6 and linux-c6-gtk2 become default
-# using seamonkey gre for linux_base-f10 compat
-post-extract: replace-gre
-replace-gre: version-compat-check
- @${ECHO_MSG} "===> GRE versions are compatible, replacing with" \
- "$$(${MAKE} -V PKGNAME -C ${.CURDIR}/../linux-seamonkey)"
- cd $$(${MAKE} -V WRKSRC -C ${.CURDIR}/../linux-seamonkey); \
- ${CP} lib* dependentlibs.list ${WRKSRC}
-
-version-compat-check:
- @${ECHO_MSG} "===> Checking GRE version is compatible with" \
- "$$(${MAKE} -V PKGNAME -C ${.CURDIR}/../linux-seamonkey)"
- @ff_gre_version=$$(${AWK} -F= '/Milestone/ { print $$2 }' ${WRKSRC}/platform.ini); \
- sm_gre_version=$$(${AWK} -F= '/Milestone/ { print $$2 }' $$(${MAKE} -V WRKSRC -C ${.CURDIR}/../linux-seamonkey)/platform.ini); \
- if [ $$ff_gre_version != $$sm_gre_version ]; then \
- ${ECHO_MSG} "===> GRE versions aren't compatible, aborting"; \
- exit 1; \
- fi
-
.include <bsd.port.mk>
diff --git a/www/linux-firefox/distinfo b/www/linux-firefox/distinfo
index f5ca792100aa..1b175b553ef9 100644
--- a/www/linux-firefox/distinfo
+++ b/www/linux-firefox/distinfo
@@ -1,2 +1,2 @@
-SHA256 (firefox-23.0.tar.bz2) = 5a3318f5a8c0ad3d039f22fd58694211f18169ef9a7b5b9fbe122a8fab0f5685
-SIZE (firefox-23.0.tar.bz2) = 26109538
+SHA256 (firefox-24.0esr.tar.bz2) = 5c5b38252dc95df688f20b8acea952211fce61803e99a56e3bb23623cf856f5a
+SIZE (firefox-24.0esr.tar.bz2) = 29023319
diff --git a/www/linux-seamonkey/Makefile b/www/linux-seamonkey/Makefile
index 3bb2a0bcc02b..12691a0365f7 100644
--- a/www/linux-seamonkey/Makefile
+++ b/www/linux-seamonkey/Makefile
@@ -2,9 +2,9 @@
# $FreeBSD$
PORTNAME= seamonkey
-PORTVERSION= 2.20
+DISTVERSION= 2.21
CATEGORIES= www
-MASTER_SITES= MOZILLA/${PORTNAME}/releases/${PORTVERSION}/linux-i686/en-US
+MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/linux-i686/en-US
MAINTAINER= gecko@FreeBSD.org
COMMENT= The open source, standards compliant web browser
diff --git a/www/linux-seamonkey/Makefile.common b/www/linux-seamonkey/Makefile.common
index 82f389b301a9..f08e8262ee12 100644
--- a/www/linux-seamonkey/Makefile.common
+++ b/www/linux-seamonkey/Makefile.common
@@ -1,14 +1,14 @@
-# New ports collection makefile for: mozilla linux binary ports
-# Date created: 1 May 2006
-# Whom: Andrew Pantyukhin <infofarmer@FreeBSD.org>
-#
+# Created by: Andrew Pantyukhin <infofarmer@FreeBSD.org>
# $FreeBSD$
-#
CATEGORIES+= linux
MASTER_SITES?= MOZILLA/${PORTNAME}/releases/${PORTVERSION}esr/linux-i686/en-US
PKGNAMEPREFIX?= linux-
+.if defined(REPLACE_GRE)
+EXTRACT_DEPENDS+=${NONEXISTENT}:${.CURDIR}/../../www/linux-seamonkey:extract
+.endif
+
NO_BUILD= yes
ONLY_FOR_ARCHS= i386 amd64
APP_NAME= ${PKGBASE}
@@ -38,18 +38,34 @@ post-extract:
@${MKDIR} ${WRKSRC}/${APP_SUBDIR}extensions
.endif
-.if ${CATEGORIES:Mwww}
+.if defined(REPLACE_GRE)
+# XXX remove after linux_base-c6 and linux-c6-gtk2 become default
+# using seamonkey gre for linux_base-f10 compat
+post-extract: replace-gre
+replace-gre: version-compat-check
+ @${ECHO_MSG} "===> GRE versions are compatible, replacing with" \
+ "$$(${MAKE} -V PKGNAME -C ${.CURDIR}/../../www/linux-seamonkey)"
+ cd $$(${MAKE} -V WRKSRC -C ${.CURDIR}/../../www/linux-seamonkey); \
+ ${CP} lib* dependentlibs.list ${WRKSRC}
+
+version-compat-check:
+ @${ECHO_MSG} "===> Checking GRE version is compatible with" \
+ "$$(${MAKE} -V PKGNAME -C ${.CURDIR}/../../www/linux-seamonkey)"
+ @ff_gre_version=$$(${AWK} -F= '/Milestone/ { print $$2 }' ${WRKSRC}/platform.ini); \
+ sm_gre_version=$$(${AWK} -F= '/Milestone/ { print $$2 }' $$(${MAKE} -V WRKSRC -C ${.CURDIR}/../../www/linux-seamonkey)/platform.ini); \
+ if [ $$ff_gre_version != $$sm_gre_version ]; then \
+ ${ECHO_MSG} "===> GRE versions aren't compatible, aborting"; \
+ exit 1; \
+ fi
+.endif
+
.if !target(post-patch)
post-patch:
@${MKDIR} ${PREFS_FILE:H}
- # no AFMT_FLOAT support in kernel (bug 780531)
- ${ECHO} 'pref("media.use_cubeb", false);' >> ${PREFS_FILE}
-
# out-of-process plugins don't work with linuxulator (ports/170402)
${ECHO} 'pref("dom.ipc.plugins.enabled", false);' >> ${PREFS_FILE}
.endif
-.endif
.if !target(do-install)
do-install:
diff --git a/www/linux-seamonkey/distinfo b/www/linux-seamonkey/distinfo
index 50d33cd40823..a786f2181101 100644
--- a/www/linux-seamonkey/distinfo
+++ b/www/linux-seamonkey/distinfo
@@ -1,2 +1,2 @@
-SHA256 (seamonkey-2.20.tar.bz2) = d2ac37fbb15f1d2a4297fc12c9db2116e64f6318c3a3b63c6e05dbffdec835e7
-SIZE (seamonkey-2.20.tar.bz2) = 27791845
+SHA256 (seamonkey-2.21.tar.bz2) = ff6f361e1db0add6d4c38e5594a8b99c31f11992ae56dc2981329f66439161e2
+SIZE (seamonkey-2.21.tar.bz2) = 29490026