From owner-freebsd-gecko@FreeBSD.ORG Sun Jan 12 19:50:40 2014 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4941BF3 for ; Sun, 12 Jan 2014 19:50:40 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.244.247]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A0BE41B60 for ; Sun, 12 Jan 2014 19:50:39 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.244.247]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id s0CJoV86077326 for ; Sun, 12 Jan 2014 19:50:31 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id s0CJoQqk074814 for freebsd-gecko@freebsd.org; Sun, 12 Jan 2014 19:50:26 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sun, 12 Jan 2014 19:50:26 GMT Message-Id: <201401121950.s0CJoQqk074814@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org Subject: [SVN-Commit] r1467 - in trunk: security/ca_root_nss security/nss www/firefox www/firefox-i18n www/firefox-nightly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 19:50:40 -0000 Author: jbeich Date: Sun Jan 12 19:50:25 2014 New Revision: 1467 Log: update Modified: trunk/security/ca_root_nss/Makefile trunk/security/ca_root_nss/distinfo trunk/security/nss/Makefile trunk/security/nss/distinfo trunk/www/firefox-i18n/Makefile trunk/www/firefox-i18n/distinfo trunk/www/firefox-nightly/Makefile trunk/www/firefox-nightly/Makefile.hgrev trunk/www/firefox-nightly/distinfo trunk/www/firefox/Makefile trunk/www/firefox/distinfo Modified: trunk/security/ca_root_nss/Makefile ============================================================================== --- trunk/security/ca_root_nss/Makefile Sat Dec 28 06:35:29 2013 (r1466) +++ trunk/security/ca_root_nss/Makefile Sun Jan 12 19:50:25 2014 (r1467) @@ -24,7 +24,7 @@ # !!! Please DO NOT submit patches for new version until it has !!! # !!! been committed there first. !!! # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -VERSION_NSS= 3.15.3.1 +VERSION_NSS= 3.15.4 #NSS_SUFFIX= .with.ckbi.1.93 CERTDATA_TXT_PATH= nss-${VERSION_NSS}/nss/lib/ckfw/builtins/certdata.txt BUNDLE_PROCESSOR= MAca-bundle.pl Modified: trunk/security/ca_root_nss/distinfo ============================================================================== --- trunk/security/ca_root_nss/distinfo Sat Dec 28 06:35:29 2013 (r1466) +++ trunk/security/ca_root_nss/distinfo Sun Jan 12 19:50:25 2014 (r1467) @@ -1,2 +1,2 @@ -SHA256 (nss-3.15.3.1.tar.gz) = 607a913882540df81f74152e8aa492e0dd09c5d3f2c7321f18c69ee501fc6ba5 -SIZE (nss-3.15.3.1.tar.gz) = 6289657 +SHA256 (nss-3.15.4.tar.gz) = 14d69a0735c5af6b3cc12591f7ebf272203e889f09104182148091d0af682d7c +SIZE (nss-3.15.4.tar.gz) = 6366271 Modified: trunk/security/nss/Makefile ============================================================================== --- trunk/security/nss/Makefile Sat Dec 28 06:35:29 2013 (r1466) +++ trunk/security/nss/Makefile Sun Jan 12 19:50:25 2014 (r1467) @@ -2,7 +2,7 @@ # $FreeBSD: head/security/nss/Makefile 331529 2013-10-24 20:10:51Z flo $ PORTNAME= nss -PORTVERSION= 3.15.3.1 +PORTVERSION= 3.15.4 #DISTVERSIONSUFFIX= .with.ckbi.1.93 CATEGORIES= security MASTER_SITES= MOZILLA/security/${PORTNAME}/releases/${DISTNAME:U:C/[-.]/_/g}_RTM/src Modified: trunk/security/nss/distinfo ============================================================================== --- trunk/security/nss/distinfo Sat Dec 28 06:35:29 2013 (r1466) +++ trunk/security/nss/distinfo Sun Jan 12 19:50:25 2014 (r1467) @@ -1,2 +1,2 @@ -SHA256 (nss-3.15.3.1.tar.gz) = 607a913882540df81f74152e8aa492e0dd09c5d3f2c7321f18c69ee501fc6ba5 -SIZE (nss-3.15.3.1.tar.gz) = 6289657 +SHA256 (nss-3.15.4.tar.gz) = 14d69a0735c5af6b3cc12591f7ebf272203e889f09104182148091d0af682d7c +SIZE (nss-3.15.4.tar.gz) = 6366271 Modified: trunk/www/firefox-i18n/Makefile ============================================================================== --- trunk/www/firefox-i18n/Makefile Sat Dec 28 06:35:29 2013 (r1466) +++ trunk/www/firefox-i18n/Makefile Sun Jan 12 19:50:25 2014 (r1467) @@ -2,7 +2,7 @@ # $FreeBSD: head/www/firefox-i18n/Makefile 313676 2013-03-08 22:27:39Z flo $ PORTNAME= firefox-i18n -PORTVERSION= 27.0b2 +PORTVERSION= 27.0b5 CATEGORIES= www MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${PORTVERSION}/linux-i686/xpi PKGNAMEPREFIX= Modified: trunk/www/firefox-i18n/distinfo ============================================================================== --- trunk/www/firefox-i18n/distinfo Sat Dec 28 06:35:29 2013 (r1466) +++ trunk/www/firefox-i18n/distinfo Sun Jan 12 19:50:25 2014 (r1467) @@ -1,178 +1,178 @@ -SHA256 (xpi/firefox-i18n-27.0b2/ach.xpi) = 87dcb97c2b60009635107fe95c43cf30ae4daf5a4f86999999f33f49a906394d -SIZE (xpi/firefox-i18n-27.0b2/ach.xpi) = 355302 -SHA256 (xpi/firefox-i18n-27.0b2/af.xpi) = d513fe71ee05690fd474e620e27cc7e293a5e9e6c86e79e707a6d8fe48a7dd38 -SIZE (xpi/firefox-i18n-27.0b2/af.xpi) = 348849 -SHA256 (xpi/firefox-i18n-27.0b2/ak.xpi) = 32b3151c5205cc29b7257ba10c394efbfa39e8df0fade52c84ca9a6ffc37a3ba -SIZE (xpi/firefox-i18n-27.0b2/ak.xpi) = 351659 -SHA256 (xpi/firefox-i18n-27.0b2/ar.xpi) = 35c6684cce31d283a38eeee8f492ef344c033251ebd5722a7f9d5dd10e70e0fc -SIZE (xpi/firefox-i18n-27.0b2/ar.xpi) = 378147 -SHA256 (xpi/firefox-i18n-27.0b2/as.xpi) = c0bd8661c9f39d8ac0beb800ba6db5d944849968cb826f11a91153f5c51aaa23 -SIZE (xpi/firefox-i18n-27.0b2/as.xpi) = 400779 -SHA256 (xpi/firefox-i18n-27.0b2/ast.xpi) = a320840eace51587eb5a0a773e5dec866307443c3ae9c66faac86e32c86adfb7 -SIZE (xpi/firefox-i18n-27.0b2/ast.xpi) = 309191 -SHA256 (xpi/firefox-i18n-27.0b2/be.xpi) = 682c219c62b0677f3ca00a64f86979c7b64a436ce3465ded7e8652a3d5336704 -SIZE (xpi/firefox-i18n-27.0b2/be.xpi) = 332361 -SHA256 (xpi/firefox-i18n-27.0b2/bg.xpi) = 2a5d5c69e0b32f715cc322ea15a6a3aa60840c5d6c50aaef4f0965a03d333041 -SIZE (xpi/firefox-i18n-27.0b2/bg.xpi) = 389844 -SHA256 (xpi/firefox-i18n-27.0b2/bn-BD.xpi) = 130f531a8968d17252b86b2d94a6f2e4d776dc2f83228f58c0a9891e06660ea8 -SIZE (xpi/firefox-i18n-27.0b2/bn-BD.xpi) = 410849 -SHA256 (xpi/firefox-i18n-27.0b2/bn-IN.xpi) = df83f7752e8fd4fb9f629048e2a326c0d0c140272c57b36c1183d4f8854c82dd -SIZE (xpi/firefox-i18n-27.0b2/bn-IN.xpi) = 407703 -SHA256 (xpi/firefox-i18n-27.0b2/br.xpi) = dae43680853676d46a82875806da7606b936ebb36943dc181e829aa1d9aea31d -SIZE (xpi/firefox-i18n-27.0b2/br.xpi) = 351231 -SHA256 (xpi/firefox-i18n-27.0b2/bs.xpi) = 0fad7703a829a10ae3fccb82127567346b661547a5886f41f739d171eb10b3a0 -SIZE (xpi/firefox-i18n-27.0b2/bs.xpi) = 354542 -SHA256 (xpi/firefox-i18n-27.0b2/ca.xpi) = 032e138767ef36973ea2945a4f064c9b4e691c1364a8aef1c8a15d883404a38d -SIZE (xpi/firefox-i18n-27.0b2/ca.xpi) = 357571 -SHA256 (xpi/firefox-i18n-27.0b2/cs.xpi) = ca429ba7059544f19916c3e7bee483070255ac4f96020b0b3390602eea98c414 -SIZE (xpi/firefox-i18n-27.0b2/cs.xpi) = 353328 -SHA256 (xpi/firefox-i18n-27.0b2/csb.xpi) = 6df33a77781b898e7367c9c2a8d5a6d5db8a6f76426054461d5b543f055442fb -SIZE (xpi/firefox-i18n-27.0b2/csb.xpi) = 343118 -SHA256 (xpi/firefox-i18n-27.0b2/cy.xpi) = 543ea8d72434ed1bacf867f0754b18120611ef0eeb61d848330b7d2407d256d3 -SIZE (xpi/firefox-i18n-27.0b2/cy.xpi) = 351736 -SHA256 (xpi/firefox-i18n-27.0b2/da.xpi) = 0356b5559f0c125d0393154e39ebc67ba9fb4f9535806f6f1a25e22a64a46818 -SIZE (xpi/firefox-i18n-27.0b2/da.xpi) = 343542 -SHA256 (xpi/firefox-i18n-27.0b2/de.xpi) = 109792ddb09b771e170d5bc84a1d7e258a3ace5a1a7b9036e942a759cfc68536 -SIZE (xpi/firefox-i18n-27.0b2/de.xpi) = 345772 -SHA256 (xpi/firefox-i18n-27.0b2/el.xpi) = 1ba55e705fe468d457411778eecd38ea17886196e3923cdcac667e14725ff08c -SIZE (xpi/firefox-i18n-27.0b2/el.xpi) = 378047 -SHA256 (xpi/firefox-i18n-27.0b2/en-GB.xpi) = d06836022532a581c7554c4be0552533940d02e1ebfd0ab8aec68eab09df75df -SIZE (xpi/firefox-i18n-27.0b2/en-GB.xpi) = 337514 -SHA256 (xpi/firefox-i18n-27.0b2/en-US.xpi) = f01a60e3a9fc0964459ccf423f2505861bd2b1e30b31f6d65147816ce5a61a53 -SIZE (xpi/firefox-i18n-27.0b2/en-US.xpi) = 335286 -SHA256 (xpi/firefox-i18n-27.0b2/en-ZA.xpi) = a391e46bf8f12b9f0f7b23f7d90b71cf5d44feb4907902aa5a5fbe1517810d7d -SIZE (xpi/firefox-i18n-27.0b2/en-ZA.xpi) = 332021 -SHA256 (xpi/firefox-i18n-27.0b2/eo.xpi) = a62542ef743a962ae4c654cb0330b3c745c39996e92414286d63b0bf42992b22 -SIZE (xpi/firefox-i18n-27.0b2/eo.xpi) = 351222 -SHA256 (xpi/firefox-i18n-27.0b2/es-AR.xpi) = d203cfe71cecbce3350f602e54eeef1af14f26d8c630bcd49d37bbd8af72cc8c -SIZE (xpi/firefox-i18n-27.0b2/es-AR.xpi) = 354331 -SHA256 (xpi/firefox-i18n-27.0b2/es-CL.xpi) = ba9f3f87962c10504f30489333a4acd2c2411c8af4c743c0a4b3a72d00aff469 -SIZE (xpi/firefox-i18n-27.0b2/es-CL.xpi) = 301981 -SHA256 (xpi/firefox-i18n-27.0b2/es-ES.xpi) = 6fa73491d2bd207f751c989e9a30ab6751e8397374aa9e2ed457182bff5e2a89 -SIZE (xpi/firefox-i18n-27.0b2/es-ES.xpi) = 291645 -SHA256 (xpi/firefox-i18n-27.0b2/es-MX.xpi) = 5ee2161b44762623257622c3cf07a0a6469475bbce0490327c8f347bdb04b1bb -SIZE (xpi/firefox-i18n-27.0b2/es-MX.xpi) = 356364 -SHA256 (xpi/firefox-i18n-27.0b2/et.xpi) = 5a932bf2d296118c253f2f7bb495f52c19f566d0be4f137be9c65333982b4068 -SIZE (xpi/firefox-i18n-27.0b2/et.xpi) = 343299 -SHA256 (xpi/firefox-i18n-27.0b2/eu.xpi) = 52fc1f219bb34a334ff5258489f654e8c756391c996b5ebc7d33558593807276 -SIZE (xpi/firefox-i18n-27.0b2/eu.xpi) = 350048 -SHA256 (xpi/firefox-i18n-27.0b2/fa.xpi) = 0cbf2cb4f91255d73f32ab8f63dec70e8ff201196e5e71ebe7f49a0b8962c7ff -SIZE (xpi/firefox-i18n-27.0b2/fa.xpi) = 391169 -SHA256 (xpi/firefox-i18n-27.0b2/ff.xpi) = a6bdcfb7739e00dd01789b40c7a4c9ebf51072459902f05831dc04626beb7b4f -SIZE (xpi/firefox-i18n-27.0b2/ff.xpi) = 348064 -SHA256 (xpi/firefox-i18n-27.0b2/fi.xpi) = 6a29cfe36c8c8d16cdd5341f8ea6c43422a4590baab3f5edd7f396f674bad0d4 -SIZE (xpi/firefox-i18n-27.0b2/fi.xpi) = 347383 -SHA256 (xpi/firefox-i18n-27.0b2/fr.xpi) = 096eec7217cc460421209cc898053ad99bd1819729dadd93db7690f5fa26d813 -SIZE (xpi/firefox-i18n-27.0b2/fr.xpi) = 360471 -SHA256 (xpi/firefox-i18n-27.0b2/fy-NL.xpi) = 63b33280853bcfc76fd4a2bf47ee01e46bff71dd55e1a102a7f527a110de9afd -SIZE (xpi/firefox-i18n-27.0b2/fy-NL.xpi) = 356738 -SHA256 (xpi/firefox-i18n-27.0b2/ga-IE.xpi) = cab4d43a404163ef6e878f2a0b31fbb4e6c6cbf54cfca0b1e80b043c40c458e4 -SIZE (xpi/firefox-i18n-27.0b2/ga-IE.xpi) = 361194 -SHA256 (xpi/firefox-i18n-27.0b2/gd.xpi) = 44438c83be755fa52b046641a25c75589acac16407aae389c1a50ad4a4a7d1af -SIZE (xpi/firefox-i18n-27.0b2/gd.xpi) = 357711 -SHA256 (xpi/firefox-i18n-27.0b2/gl.xpi) = 5faa2eb585ebfb63aca55f9c667c020d1c8ed320c37e54cf2a1c75d72d23be4e -SIZE (xpi/firefox-i18n-27.0b2/gl.xpi) = 353152 -SHA256 (xpi/firefox-i18n-27.0b2/gu-IN.xpi) = 7ff1102282f5b2748764e0e308fc84730ecea0f46f9986af5ff12fdd3220edba -SIZE (xpi/firefox-i18n-27.0b2/gu-IN.xpi) = 377591 -SHA256 (xpi/firefox-i18n-27.0b2/he.xpi) = fea754bf8430d888ae1d0a2d605017576dc2618e656aa661e083be382d20af10 -SIZE (xpi/firefox-i18n-27.0b2/he.xpi) = 370012 -SHA256 (xpi/firefox-i18n-27.0b2/hi-IN.xpi) = 26a685447b69ede3d8a1505b6231958f0dc2ccd610ccda84d70c68a290f03001 -SIZE (xpi/firefox-i18n-27.0b2/hi-IN.xpi) = 396455 -SHA256 (xpi/firefox-i18n-27.0b2/hr.xpi) = abbcf46c468e4cc3effa9444b981d5a41ea0487df1eef69fa69d3fe715113411 -SIZE (xpi/firefox-i18n-27.0b2/hr.xpi) = 357710 -SHA256 (xpi/firefox-i18n-27.0b2/hu.xpi) = 5e9cdb84b30d365989ad1d42cea462900bc022b004c0912bba009225c9842f23 -SIZE (xpi/firefox-i18n-27.0b2/hu.xpi) = 362056 -SHA256 (xpi/firefox-i18n-27.0b2/hy-AM.xpi) = 7e3ea8e414fd8f4931e99281e43ef7a2a64bd32169f35fd1c1ff18105dfb517d -SIZE (xpi/firefox-i18n-27.0b2/hy-AM.xpi) = 402985 -SHA256 (xpi/firefox-i18n-27.0b2/id.xpi) = a3a84c2f6b2ad29b692347b783285be8ba3d86c99909e02836277afd17c41717 -SIZE (xpi/firefox-i18n-27.0b2/id.xpi) = 339614 -SHA256 (xpi/firefox-i18n-27.0b2/is.xpi) = 07b940de6b2acf54dc78247eafc7b960e691c8d2c6df1deb0e5401f9af1b7571 -SIZE (xpi/firefox-i18n-27.0b2/is.xpi) = 346533 -SHA256 (xpi/firefox-i18n-27.0b2/it.xpi) = ed00fc9f208bfcbadc80bf8f220b8241cf04bdcbaf84db82302680fb0ed8b3ef -SIZE (xpi/firefox-i18n-27.0b2/it.xpi) = 291097 -SHA256 (xpi/firefox-i18n-27.0b2/ja.xpi) = 2a1172001241f502ebef60b0acfe748b5615d772e9aafd2c82d7e4d9d3773740 -SIZE (xpi/firefox-i18n-27.0b2/ja.xpi) = 388105 -SHA256 (xpi/firefox-i18n-27.0b2/kk.xpi) = b9df16f44d788b9079573534167370a32315501ef9f093d9a238caf811c29853 -SIZE (xpi/firefox-i18n-27.0b2/kk.xpi) = 396376 -SHA256 (xpi/firefox-i18n-27.0b2/km.xpi) = bb1c4c0e215c6a9e372cdbd2e1479cfd4b7bb14bc0fde532cadd8f50c6d21550 -SIZE (xpi/firefox-i18n-27.0b2/km.xpi) = 418736 -SHA256 (xpi/firefox-i18n-27.0b2/kn.xpi) = 81e035b02593bff245095084aa48f5ab84bec8ea1d5c5022a307535f993ff73a -SIZE (xpi/firefox-i18n-27.0b2/kn.xpi) = 408354 -SHA256 (xpi/firefox-i18n-27.0b2/ko.xpi) = c755cf1ab41caf019bbbf29a0019c80fe52e8ecb40340eec07086507f57a7c2a -SIZE (xpi/firefox-i18n-27.0b2/ko.xpi) = 363842 -SHA256 (xpi/firefox-i18n-27.0b2/ku.xpi) = 763716a55aa7ac426f4135e2fdd1953575e5238944b50857b2f9ef62f897a45d -SIZE (xpi/firefox-i18n-27.0b2/ku.xpi) = 370257 -SHA256 (xpi/firefox-i18n-27.0b2/lg.xpi) = 1eaf9c43567457e1cb7a2dd49659d39eafff38584237e2f6a60cc36f6cff325a -SIZE (xpi/firefox-i18n-27.0b2/lg.xpi) = 366471 -SHA256 (xpi/firefox-i18n-27.0b2/lij.xpi) = a6a152121864aa2a762e7985a99892b1536e0184bdc47ca9f24bfab3b1475131 -SIZE (xpi/firefox-i18n-27.0b2/lij.xpi) = 339920 -SHA256 (xpi/firefox-i18n-27.0b2/lt.xpi) = 93629bd94670020dd52ed0bdfc6207c93fff7aecefb8487ac212db12c1c764a3 -SIZE (xpi/firefox-i18n-27.0b2/lt.xpi) = 369742 -SHA256 (xpi/firefox-i18n-27.0b2/lv.xpi) = f016a1b825cc51bdd36141dba3ef7b1543f9ebee818fc9bfe41482f138638195 -SIZE (xpi/firefox-i18n-27.0b2/lv.xpi) = 342751 -SHA256 (xpi/firefox-i18n-27.0b2/mai.xpi) = b15810478264685ec6740faa9734d4d0cd772e2bca6c9e92308db744357de2c5 -SIZE (xpi/firefox-i18n-27.0b2/mai.xpi) = 396638 -SHA256 (xpi/firefox-i18n-27.0b2/mk.xpi) = 0b7f9669c6c691a89394d649ba5dc814bb0187b10ddf816dd252db841997ed73 -SIZE (xpi/firefox-i18n-27.0b2/mk.xpi) = 392648 -SHA256 (xpi/firefox-i18n-27.0b2/ml.xpi) = 1a7d64b79432f4bfe74d4fd7b5c44bd304f69aa11ac2fa7e24b062851b832a60 -SIZE (xpi/firefox-i18n-27.0b2/ml.xpi) = 417097 -SHA256 (xpi/firefox-i18n-27.0b2/mr.xpi) = f0c2817a40ef4f4ab2f98e68d7d03777693d8507da21fd3cebe9d7884149bef4 -SIZE (xpi/firefox-i18n-27.0b2/mr.xpi) = 397292 -SHA256 (xpi/firefox-i18n-27.0b2/nb-NO.xpi) = 41fd5986ab077bd7924f821786e11a71a20075b42bd830bd3ca3ac3293e31a7f -SIZE (xpi/firefox-i18n-27.0b2/nb-NO.xpi) = 342744 -SHA256 (xpi/firefox-i18n-27.0b2/nl.xpi) = 054811fe441265bc66aa83280df5d264ca5a087e3036600840f59419cbb2f34f -SIZE (xpi/firefox-i18n-27.0b2/nl.xpi) = 347974 -SHA256 (xpi/firefox-i18n-27.0b2/nn-NO.xpi) = c4c7550964d8637f0eea7f94b0ca507bbf4ec448a768b715a863f05cf6ffc499 -SIZE (xpi/firefox-i18n-27.0b2/nn-NO.xpi) = 344234 -SHA256 (xpi/firefox-i18n-27.0b2/nso.xpi) = 04f24894be41ecba350610c73e7573e7c141ce1761e01bb3668c19303259615c -SIZE (xpi/firefox-i18n-27.0b2/nso.xpi) = 352797 -SHA256 (xpi/firefox-i18n-27.0b2/or.xpi) = 98907d2e5f9bf8c45ba0d56ebaeeba4eeb046a747cd8ca9852df0c0be0bd0688 -SIZE (xpi/firefox-i18n-27.0b2/or.xpi) = 410077 -SHA256 (xpi/firefox-i18n-27.0b2/pa-IN.xpi) = 63c31bbde6af61afda5f8a8ce59a73ef8dd26c69df26a4f9f8d13379f6115c79 -SIZE (xpi/firefox-i18n-27.0b2/pa-IN.xpi) = 385305 -SHA256 (xpi/firefox-i18n-27.0b2/pl.xpi) = 36ce883667078b23e0abc2171d09521f473f6d762a6ac4cf26a475fb7115740b -SIZE (xpi/firefox-i18n-27.0b2/pl.xpi) = 348875 -SHA256 (xpi/firefox-i18n-27.0b2/pt-BR.xpi) = 900e66f988ce038cb0e95607c99607e6c76cab624a9a06cf44daef1dcd9f3baf -SIZE (xpi/firefox-i18n-27.0b2/pt-BR.xpi) = 354188 -SHA256 (xpi/firefox-i18n-27.0b2/pt-PT.xpi) = 3ed12d1eadeccdb07398a2e84d193b63a55fa044324e3d536b021ebfd4be8bfd -SIZE (xpi/firefox-i18n-27.0b2/pt-PT.xpi) = 347961 -SHA256 (xpi/firefox-i18n-27.0b2/rm.xpi) = 906b9b5a07b8420435a0d556533090fec428a87c42d74e0c7b67fe95af70686f -SIZE (xpi/firefox-i18n-27.0b2/rm.xpi) = 349337 -SHA256 (xpi/firefox-i18n-27.0b2/ro.xpi) = 3ea5f6b32c05ec092c54d9d78d5812308959cb1f68eb55ba09e5d0e880cb3219 -SIZE (xpi/firefox-i18n-27.0b2/ro.xpi) = 378835 -SHA256 (xpi/firefox-i18n-27.0b2/ru.xpi) = 0043f9dd3ed6d7dac5335202a1af073cc077c4ff146515ef0eb402d7963a743d -SIZE (xpi/firefox-i18n-27.0b2/ru.xpi) = 336581 -SHA256 (xpi/firefox-i18n-27.0b2/si.xpi) = 092c7e050f0dd1050666a8d4cbe9ba59fcf8f2edb2d8ac3642421625eb8f4418 -SIZE (xpi/firefox-i18n-27.0b2/si.xpi) = 387685 -SHA256 (xpi/firefox-i18n-27.0b2/sk.xpi) = 9e1f32451e75ed1d1d1d5bf4655c129c290c137e7cf3323fa68ba43d90c18e2a -SIZE (xpi/firefox-i18n-27.0b2/sk.xpi) = 364141 -SHA256 (xpi/firefox-i18n-27.0b2/sl.xpi) = ce55aeb4fe569c543819107b93442a7f4f38df8764658f756bf4ce7b1cb7d914 -SIZE (xpi/firefox-i18n-27.0b2/sl.xpi) = 347792 -SHA256 (xpi/firefox-i18n-27.0b2/son.xpi) = 21325b9059140df4daa6d3568124d5976f7ecae9ef807070a0e02401ac4750fe -SIZE (xpi/firefox-i18n-27.0b2/son.xpi) = 344436 -SHA256 (xpi/firefox-i18n-27.0b2/sq.xpi) = 812c98ba9fabc2cab0bfc55a165c9865c4a05be2dc66a3c2f1686b4ac0bac038 -SIZE (xpi/firefox-i18n-27.0b2/sq.xpi) = 357151 -SHA256 (xpi/firefox-i18n-27.0b2/sr.xpi) = e22a84f2df17c8ab895b93461c7e94e173a1eebe06b8db8ac95987fc73fb03dd -SIZE (xpi/firefox-i18n-27.0b2/sr.xpi) = 399942 -SHA256 (xpi/firefox-i18n-27.0b2/sv-SE.xpi) = 4251c04eb63d53741fc4140ca61cd9f291bd21b1eab07c46e019328052cfc9d0 -SIZE (xpi/firefox-i18n-27.0b2/sv-SE.xpi) = 352873 -SHA256 (xpi/firefox-i18n-27.0b2/ta-LK.xpi) = 189f493254bca2592eaf1e7333ec1966cc60401f8dc0683bb99053cbca973529 -SIZE (xpi/firefox-i18n-27.0b2/ta-LK.xpi) = 398906 -SHA256 (xpi/firefox-i18n-27.0b2/ta.xpi) = 0718f4215a7eec5a59948382c331f8b02251018ac575f8be82a8498953e31775 -SIZE (xpi/firefox-i18n-27.0b2/ta.xpi) = 400415 -SHA256 (xpi/firefox-i18n-27.0b2/te.xpi) = 2ae26bed489c071824b2885fd6f330c95d0481e7cc7f7094e6b80bcb51f8ed78 -SIZE (xpi/firefox-i18n-27.0b2/te.xpi) = 417874 -SHA256 (xpi/firefox-i18n-27.0b2/th.xpi) = 33ec4dd88ad50bde901ecbdd2453bc4fe8fb69178ff2adc5319f0843cd0a7442 -SIZE (xpi/firefox-i18n-27.0b2/th.xpi) = 394994 -SHA256 (xpi/firefox-i18n-27.0b2/tr.xpi) = 4a80363de04b64cdfc36b4e797792ca34dba9b6e2830a954f999447c64b709a1 -SIZE (xpi/firefox-i18n-27.0b2/tr.xpi) = 356671 -SHA256 (xpi/firefox-i18n-27.0b2/uk.xpi) = 952d7e2205824f4f4c1f7acddf6e59c7ba4a41ff5b27ebb027b7280988d01990 -SIZE (xpi/firefox-i18n-27.0b2/uk.xpi) = 382506 -SHA256 (xpi/firefox-i18n-27.0b2/vi.xpi) = c896fd5b52770b7a383b37981fcbf833f18ae13177e86496f18f756edddb7fb9 -SIZE (xpi/firefox-i18n-27.0b2/vi.xpi) = 375489 -SHA256 (xpi/firefox-i18n-27.0b2/zh-CN.xpi) = fed6d493df0728bd03058f84467a4e76ddbe2083552ee9e2b09445bfe76fa66c -SIZE (xpi/firefox-i18n-27.0b2/zh-CN.xpi) = 374674 -SHA256 (xpi/firefox-i18n-27.0b2/zh-TW.xpi) = 42e0dd12f2e25d5de6f8843a97a411f5205c9b0cd7ed84bac5cfdd9488985d96 -SIZE (xpi/firefox-i18n-27.0b2/zh-TW.xpi) = 372322 -SHA256 (xpi/firefox-i18n-27.0b2/zu.xpi) = 6cce0227afc1e9950791492f601f9dcdd1b5d897169797715cb312aa4bd514af -SIZE (xpi/firefox-i18n-27.0b2/zu.xpi) = 357239 +SHA256 (xpi/firefox-i18n-27.0b5/ach.xpi) = 6ae49859872d6d08b5a1f67681f70669236e85430b4a1b1fec80b5114c25dfe5 +SIZE (xpi/firefox-i18n-27.0b5/ach.xpi) = 355303 +SHA256 (xpi/firefox-i18n-27.0b5/af.xpi) = 42a4fbc70188e85c2620910fafc201a37664f07413456a8cf14a60c3af298bc1 +SIZE (xpi/firefox-i18n-27.0b5/af.xpi) = 348849 +SHA256 (xpi/firefox-i18n-27.0b5/ak.xpi) = b5a48b679ad1741a6487d24bd7ab6aac61d2b7497da5945750cd6b589ca33310 +SIZE (xpi/firefox-i18n-27.0b5/ak.xpi) = 351659 +SHA256 (xpi/firefox-i18n-27.0b5/ar.xpi) = 3ca731d5a80d399ca5a5c312ae6d091c6cec318af3137f52ebf84c18798da0ef +SIZE (xpi/firefox-i18n-27.0b5/ar.xpi) = 378147 +SHA256 (xpi/firefox-i18n-27.0b5/as.xpi) = 0e8a2652e81a08d7c93766448268e43be22be994bf45a4f78b44de22887cfd74 +SIZE (xpi/firefox-i18n-27.0b5/as.xpi) = 400779 +SHA256 (xpi/firefox-i18n-27.0b5/ast.xpi) = c928acc095b3357e431ce02ad421f39a5a90601bad68d26a58752e3e8c0bfcdc +SIZE (xpi/firefox-i18n-27.0b5/ast.xpi) = 309191 +SHA256 (xpi/firefox-i18n-27.0b5/be.xpi) = c497cc0e47f0acc03416b07e1419c9cf176107b75c4e0c4ff34a36ce75cc43fe +SIZE (xpi/firefox-i18n-27.0b5/be.xpi) = 332361 +SHA256 (xpi/firefox-i18n-27.0b5/bg.xpi) = 0c46e7bec9513894a5975b2088bcfd724d0a4990eebd58232ccca3e837238b85 +SIZE (xpi/firefox-i18n-27.0b5/bg.xpi) = 389844 +SHA256 (xpi/firefox-i18n-27.0b5/bn-BD.xpi) = c7d1dcd6f3f77e9a66a0bf99ad06230fa5f275ba679e07c4243d81e62e74c063 +SIZE (xpi/firefox-i18n-27.0b5/bn-BD.xpi) = 410850 +SHA256 (xpi/firefox-i18n-27.0b5/bn-IN.xpi) = ea04e439d832be887ecfb8cbfd761b93c0db8712c35d4a941aa61dddbbd1dede +SIZE (xpi/firefox-i18n-27.0b5/bn-IN.xpi) = 407703 +SHA256 (xpi/firefox-i18n-27.0b5/br.xpi) = 4cacc4f39da19c5928c644572288f50320d440457078acf29743ea88e277e80d +SIZE (xpi/firefox-i18n-27.0b5/br.xpi) = 351231 +SHA256 (xpi/firefox-i18n-27.0b5/bs.xpi) = 9e5d8550a630d69d7d5f9705b1c27de40f1d77274552cda1b348256b93cfe02c +SIZE (xpi/firefox-i18n-27.0b5/bs.xpi) = 354542 +SHA256 (xpi/firefox-i18n-27.0b5/ca.xpi) = d3d66b67f5b4d1863dd8a1aaf6a24f1f4eadf988a2509b522db76c9a4241d3cb +SIZE (xpi/firefox-i18n-27.0b5/ca.xpi) = 357571 +SHA256 (xpi/firefox-i18n-27.0b5/cs.xpi) = 9e7834f7df5c097c0938861518c619682391be74bfdfc99ba80a8d6cdf005c0c +SIZE (xpi/firefox-i18n-27.0b5/cs.xpi) = 353328 +SHA256 (xpi/firefox-i18n-27.0b5/csb.xpi) = 5347b5570de508335bbde1373971648946abcb55fae2f234baaa97ce98aa7333 +SIZE (xpi/firefox-i18n-27.0b5/csb.xpi) = 343119 +SHA256 (xpi/firefox-i18n-27.0b5/cy.xpi) = d34c7fdfc361b8be53e203cf2fb4d99d2a4e0db31ca4ec60833599c1c450ee78 +SIZE (xpi/firefox-i18n-27.0b5/cy.xpi) = 351736 +SHA256 (xpi/firefox-i18n-27.0b5/da.xpi) = d064c07199b3ba4b207da0fe0a64d281b763293b68c66ca7b5e54e372398d895 +SIZE (xpi/firefox-i18n-27.0b5/da.xpi) = 343542 +SHA256 (xpi/firefox-i18n-27.0b5/de.xpi) = a2d9d8db672b3ff3e3007ceec38d933775106fe5023de127a7b5a75dd28261de +SIZE (xpi/firefox-i18n-27.0b5/de.xpi) = 345772 +SHA256 (xpi/firefox-i18n-27.0b5/el.xpi) = 70546b0d14748e1990a0401a15275de4c148e82946c94818e4bbbc0b08631fed +SIZE (xpi/firefox-i18n-27.0b5/el.xpi) = 378048 +SHA256 (xpi/firefox-i18n-27.0b5/en-GB.xpi) = 0b3d466d1d9c58d6774d2c042265cab887f4b0e49ac562ed24e4cea9d7022176 +SIZE (xpi/firefox-i18n-27.0b5/en-GB.xpi) = 337514 +SHA256 (xpi/firefox-i18n-27.0b5/en-US.xpi) = 36c21b709d9ee26a8c8e82df571fce80b3f496442f3f8fb9c7239b12b4eb482d +SIZE (xpi/firefox-i18n-27.0b5/en-US.xpi) = 335287 +SHA256 (xpi/firefox-i18n-27.0b5/en-ZA.xpi) = bb7c7f203596113f2ee60c572e5601bb3a2c05b70f8d6528b1ca2b75c9fa3634 +SIZE (xpi/firefox-i18n-27.0b5/en-ZA.xpi) = 332022 +SHA256 (xpi/firefox-i18n-27.0b5/eo.xpi) = 9db38e0720069b42785c8af137007b0c68a69521c72519e0ccdab34098988d56 +SIZE (xpi/firefox-i18n-27.0b5/eo.xpi) = 351112 +SHA256 (xpi/firefox-i18n-27.0b5/es-AR.xpi) = d83d3706663a6d25e12591385e0d3d021c7ed25a59abb725fe8dde256d6ad638 +SIZE (xpi/firefox-i18n-27.0b5/es-AR.xpi) = 354331 +SHA256 (xpi/firefox-i18n-27.0b5/es-CL.xpi) = 516e24289a6b397020419d0d62ba73865d7f30d19e65901c7c0de0a7872e5ee1 +SIZE (xpi/firefox-i18n-27.0b5/es-CL.xpi) = 301981 +SHA256 (xpi/firefox-i18n-27.0b5/es-ES.xpi) = 07f9571bc3c1806621adb4b4d1a6cbabf8b6f6b1b4f8cf2034214442fa23f278 +SIZE (xpi/firefox-i18n-27.0b5/es-ES.xpi) = 293445 +SHA256 (xpi/firefox-i18n-27.0b5/es-MX.xpi) = a29031ef72f68097199639baf5f2958f1ce61d00475be1bc4a642f1b27996223 +SIZE (xpi/firefox-i18n-27.0b5/es-MX.xpi) = 356364 +SHA256 (xpi/firefox-i18n-27.0b5/et.xpi) = 36c7d72e4982b95673fbe6618efab6ab2e958e091d355a2af851e5ba0882e531 +SIZE (xpi/firefox-i18n-27.0b5/et.xpi) = 343299 +SHA256 (xpi/firefox-i18n-27.0b5/eu.xpi) = 289b2113c603b58940d7804e14032f0aa2db04dddabef0f60faa8e37725b4e51 +SIZE (xpi/firefox-i18n-27.0b5/eu.xpi) = 350048 +SHA256 (xpi/firefox-i18n-27.0b5/fa.xpi) = 31d6502e31a486766ce7f73f773977020d66e99998bf7fb1970f1e9468d7e54d +SIZE (xpi/firefox-i18n-27.0b5/fa.xpi) = 391170 +SHA256 (xpi/firefox-i18n-27.0b5/ff.xpi) = 1b0a5b8e9e81d93e53ad7b025b2c783cbe524a99d0aaef4f541990143c4b1107 +SIZE (xpi/firefox-i18n-27.0b5/ff.xpi) = 348065 +SHA256 (xpi/firefox-i18n-27.0b5/fi.xpi) = ea512b7c89c81aa5019f743e92645caf59bc1ba78d324ee812f1c19ed8d34627 +SIZE (xpi/firefox-i18n-27.0b5/fi.xpi) = 347383 +SHA256 (xpi/firefox-i18n-27.0b5/fr.xpi) = 88bc4f4a6d1016740ed270c00262a2709b23b5cb58293f7d990a02973b3ca1f1 +SIZE (xpi/firefox-i18n-27.0b5/fr.xpi) = 360471 +SHA256 (xpi/firefox-i18n-27.0b5/fy-NL.xpi) = eea12492d37cd7ccfd3f03bc4bb685a3fe706e49a5961fd243d4605cfc79c446 +SIZE (xpi/firefox-i18n-27.0b5/fy-NL.xpi) = 356738 +SHA256 (xpi/firefox-i18n-27.0b5/ga-IE.xpi) = 70c20f62ebae3d975a87e90dbd317c907745eec795dd13021a6588fd201176bf +SIZE (xpi/firefox-i18n-27.0b5/ga-IE.xpi) = 361194 +SHA256 (xpi/firefox-i18n-27.0b5/gd.xpi) = 67a320d427852825f9c2c64e14ad7d204856d26bb37e7e9f3669476f699912a2 +SIZE (xpi/firefox-i18n-27.0b5/gd.xpi) = 357711 +SHA256 (xpi/firefox-i18n-27.0b5/gl.xpi) = 3ca12295bd19dda5a3c56f3c67e93771a18c0e920158c9e9f2bd8c104fbc7f38 +SIZE (xpi/firefox-i18n-27.0b5/gl.xpi) = 353152 +SHA256 (xpi/firefox-i18n-27.0b5/gu-IN.xpi) = ec977ac9abc08e728f41c1ead1c11145b839aec076f3ce3415ab9fb383fdc800 +SIZE (xpi/firefox-i18n-27.0b5/gu-IN.xpi) = 377591 +SHA256 (xpi/firefox-i18n-27.0b5/he.xpi) = cbb89b5f7cccdc5d23eedcb3fc1687519ee5fd5961e9925312a15056b726919e +SIZE (xpi/firefox-i18n-27.0b5/he.xpi) = 370013 +SHA256 (xpi/firefox-i18n-27.0b5/hi-IN.xpi) = 5cf038a4f2fdb465f56ebb6f7ecd89a28d3ed70b7c864f102e013ac51e777597 +SIZE (xpi/firefox-i18n-27.0b5/hi-IN.xpi) = 396454 +SHA256 (xpi/firefox-i18n-27.0b5/hr.xpi) = b8e338cea10663fb18c302a0f09e801f77810d438011f8b3c9cd6fcd58906bd2 +SIZE (xpi/firefox-i18n-27.0b5/hr.xpi) = 357710 +SHA256 (xpi/firefox-i18n-27.0b5/hu.xpi) = 293447b8909e027c3fe9711c91874a3f54e3bd3f0a7fa53813ddf8a0633480e2 +SIZE (xpi/firefox-i18n-27.0b5/hu.xpi) = 362056 +SHA256 (xpi/firefox-i18n-27.0b5/hy-AM.xpi) = 044b58bc99509ae72017595f3087da83b1212f3a5705b29e4efb937c3c85d1ca +SIZE (xpi/firefox-i18n-27.0b5/hy-AM.xpi) = 402985 +SHA256 (xpi/firefox-i18n-27.0b5/id.xpi) = d4231321bb28ecc5fc33e3d6c8cfae63233354257334d89c45b36f9016df875c +SIZE (xpi/firefox-i18n-27.0b5/id.xpi) = 339614 +SHA256 (xpi/firefox-i18n-27.0b5/is.xpi) = 2b8758fba2d317b3e564e76d0da695096e3db1960cd7eb152d11268c2e32add2 +SIZE (xpi/firefox-i18n-27.0b5/is.xpi) = 346533 +SHA256 (xpi/firefox-i18n-27.0b5/it.xpi) = 17b1d5925b678ec3bda93418853d632fee0e343dd736ac0f6e5c2060c271b84c +SIZE (xpi/firefox-i18n-27.0b5/it.xpi) = 291094 +SHA256 (xpi/firefox-i18n-27.0b5/ja.xpi) = d7e6f0b0741bed0319a45a12bd480912e8a10c7ef87f0fdbe0f912c574081035 +SIZE (xpi/firefox-i18n-27.0b5/ja.xpi) = 393701 +SHA256 (xpi/firefox-i18n-27.0b5/kk.xpi) = 48400b4bd9626eecef4e245637519fe76e7685923b295fff8ddab989f1542976 +SIZE (xpi/firefox-i18n-27.0b5/kk.xpi) = 396376 +SHA256 (xpi/firefox-i18n-27.0b5/km.xpi) = adb63f93897022bc3821d10e0a1b590558c21cadcc6ede60dc5db6a42e016621 +SIZE (xpi/firefox-i18n-27.0b5/km.xpi) = 418736 +SHA256 (xpi/firefox-i18n-27.0b5/kn.xpi) = deaf27c2ae55ce611f8f68b8bba248c7b468b52ca8ded6fa5c817c49c0fe3387 +SIZE (xpi/firefox-i18n-27.0b5/kn.xpi) = 408354 +SHA256 (xpi/firefox-i18n-27.0b5/ko.xpi) = 38e30d67ebed27ee0812f8509d5d9da1d77f92ed304c1d8a0ead81bd40c7302d +SIZE (xpi/firefox-i18n-27.0b5/ko.xpi) = 363842 +SHA256 (xpi/firefox-i18n-27.0b5/ku.xpi) = febc56f69e1d74f995b86d3c5b22f80e6232137595ad37e5b1d31d6f8c57b52e +SIZE (xpi/firefox-i18n-27.0b5/ku.xpi) = 370258 +SHA256 (xpi/firefox-i18n-27.0b5/lg.xpi) = c3e4910044309df1c21e51cdc0c245a792762a67dd8bdf7174174e878ed685f0 +SIZE (xpi/firefox-i18n-27.0b5/lg.xpi) = 366472 +SHA256 (xpi/firefox-i18n-27.0b5/lij.xpi) = 2b10c963547a18be8d61868f15f79291d3a8f8ae395169b2bb27cc8cfe985d21 +SIZE (xpi/firefox-i18n-27.0b5/lij.xpi) = 339920 +SHA256 (xpi/firefox-i18n-27.0b5/lt.xpi) = 3878222b3c6cc8961e3ca87b41787001083549e88e93a07cfaf2b4acfea22d82 +SIZE (xpi/firefox-i18n-27.0b5/lt.xpi) = 369742 +SHA256 (xpi/firefox-i18n-27.0b5/lv.xpi) = 1292a271d5af64335e9f49ee3f72901705e384374f394c0283de5cfd19804fbc +SIZE (xpi/firefox-i18n-27.0b5/lv.xpi) = 343469 +SHA256 (xpi/firefox-i18n-27.0b5/mai.xpi) = e244e36997b58487a984e22681baaafee97da60cc1dbca89f0fcf95fe6b12dd6 +SIZE (xpi/firefox-i18n-27.0b5/mai.xpi) = 396637 +SHA256 (xpi/firefox-i18n-27.0b5/mk.xpi) = 96de2727e1d03eb01daa97911328a570658b1b330f926c68b71535264ae229bc +SIZE (xpi/firefox-i18n-27.0b5/mk.xpi) = 392648 +SHA256 (xpi/firefox-i18n-27.0b5/ml.xpi) = 9a731118bbf3f812d975bcf4c9abb3356b8d9fcf493cff9f92b1f0b74ca0b90b +SIZE (xpi/firefox-i18n-27.0b5/ml.xpi) = 417097 +SHA256 (xpi/firefox-i18n-27.0b5/mr.xpi) = 0cd2917edeb2bb49b69807420a4c7e8a7e5abe844804e8536fa0c4709fe68001 +SIZE (xpi/firefox-i18n-27.0b5/mr.xpi) = 397292 +SHA256 (xpi/firefox-i18n-27.0b5/nb-NO.xpi) = 1b02254c04cba5f722df4c121a94201cf0c37d9a3e6d25a1ba982d02731339dc +SIZE (xpi/firefox-i18n-27.0b5/nb-NO.xpi) = 342745 +SHA256 (xpi/firefox-i18n-27.0b5/nl.xpi) = 9ce2ae2739b7e793dc958702e2b372fb6ad443e0a7a4170c8b220ba30ca7ac34 +SIZE (xpi/firefox-i18n-27.0b5/nl.xpi) = 348115 +SHA256 (xpi/firefox-i18n-27.0b5/nn-NO.xpi) = 9a2479dd6666e24fdd33bbcd700e1c530b2a101113ec56e1f07d79007d393df6 +SIZE (xpi/firefox-i18n-27.0b5/nn-NO.xpi) = 344234 +SHA256 (xpi/firefox-i18n-27.0b5/nso.xpi) = 9672dec56a00930ee5a33668c36c5c3a3389840065cfc56589a2db9b67fb8bfd +SIZE (xpi/firefox-i18n-27.0b5/nso.xpi) = 352797 +SHA256 (xpi/firefox-i18n-27.0b5/or.xpi) = 1ed177fe5075426bf27dbf91dd967a2e780382f13bc4856b26acaabb564294f6 +SIZE (xpi/firefox-i18n-27.0b5/or.xpi) = 410077 +SHA256 (xpi/firefox-i18n-27.0b5/pa-IN.xpi) = 68a37e3b994a9ecd81d33312f461bee43dc250d13897cc920d753eba7f54d9ad +SIZE (xpi/firefox-i18n-27.0b5/pa-IN.xpi) = 385305 +SHA256 (xpi/firefox-i18n-27.0b5/pl.xpi) = aed70c23f7bb86159ac298929061a994790778de6267164eee4e343b523cc6f4 +SIZE (xpi/firefox-i18n-27.0b5/pl.xpi) = 348875 +SHA256 (xpi/firefox-i18n-27.0b5/pt-BR.xpi) = d44b674cbe98b1577e64e24180bf8e5114e36ad76ed5365c0c93ce9e2124c05f +SIZE (xpi/firefox-i18n-27.0b5/pt-BR.xpi) = 354188 +SHA256 (xpi/firefox-i18n-27.0b5/pt-PT.xpi) = 643158f67ea87803fd3df23764c6aafe45091510705459d5dafd136351fceca6 +SIZE (xpi/firefox-i18n-27.0b5/pt-PT.xpi) = 347961 +SHA256 (xpi/firefox-i18n-27.0b5/rm.xpi) = fcbbcc42fa78ea96cc8d066fe4f963ce19cf86b5b229745316f4c43edd8063e8 +SIZE (xpi/firefox-i18n-27.0b5/rm.xpi) = 349338 +SHA256 (xpi/firefox-i18n-27.0b5/ro.xpi) = 0b65f88872e2b6a64afcd9faecea659cf15ff5f43abd311c3c747ff1fe1b23e8 +SIZE (xpi/firefox-i18n-27.0b5/ro.xpi) = 378835 +SHA256 (xpi/firefox-i18n-27.0b5/ru.xpi) = 22bab91dfcc5d2920e44fef7a2c3c4d98b102044e2b245d2c5f84e3d8d5d8838 +SIZE (xpi/firefox-i18n-27.0b5/ru.xpi) = 336576 +SHA256 (xpi/firefox-i18n-27.0b5/si.xpi) = 26ab1bb9983091e66331c703c77a029a1557cb190b324993c043817f94637fe4 +SIZE (xpi/firefox-i18n-27.0b5/si.xpi) = 387686 +SHA256 (xpi/firefox-i18n-27.0b5/sk.xpi) = 8dafd984a51ae8e32e87c141b6199c63c04087217866c57c7dffaa640f91d6bd +SIZE (xpi/firefox-i18n-27.0b5/sk.xpi) = 364728 +SHA256 (xpi/firefox-i18n-27.0b5/sl.xpi) = ccd1fd921a95ba2c9198da2f6f2ad76a3b285168529eee651b4a9693c09fa762 +SIZE (xpi/firefox-i18n-27.0b5/sl.xpi) = 347792 +SHA256 (xpi/firefox-i18n-27.0b5/son.xpi) = 18f0b422d816eb4bf72cc24a845a94e6f7150bea5faa6918214cf58de89652da +SIZE (xpi/firefox-i18n-27.0b5/son.xpi) = 344436 +SHA256 (xpi/firefox-i18n-27.0b5/sq.xpi) = 336827e5cf53b03320de43c5bbc44c51bb207992511276a8b127786ed9245c91 +SIZE (xpi/firefox-i18n-27.0b5/sq.xpi) = 357151 +SHA256 (xpi/firefox-i18n-27.0b5/sr.xpi) = b41550151d3db896145c6fea127c645ddae234e372b1df7c0ec93ac40d4595ec +SIZE (xpi/firefox-i18n-27.0b5/sr.xpi) = 399943 +SHA256 (xpi/firefox-i18n-27.0b5/sv-SE.xpi) = 2506bf6bd4fc2dd34040da69e7975d9b545ccd08b618406a721f756b813dfbf6 +SIZE (xpi/firefox-i18n-27.0b5/sv-SE.xpi) = 352873 +SHA256 (xpi/firefox-i18n-27.0b5/ta-LK.xpi) = 5bb593ea4e4dc7b80a815207a0b7ef86f7efd7f1dc1b561573c37d6118edc4cb +SIZE (xpi/firefox-i18n-27.0b5/ta-LK.xpi) = 398907 +SHA256 (xpi/firefox-i18n-27.0b5/ta.xpi) = 050efe62dfd90b5597b551af250238532a5cdd446a0bb74c5798b41c41489ecc +SIZE (xpi/firefox-i18n-27.0b5/ta.xpi) = 400415 +SHA256 (xpi/firefox-i18n-27.0b5/te.xpi) = 071f86403eac876ecb5e597716fd2526190116811f8bbf68a930319df8d8219d +SIZE (xpi/firefox-i18n-27.0b5/te.xpi) = 417874 +SHA256 (xpi/firefox-i18n-27.0b5/th.xpi) = 6984904dfdb135c87db2bf4aa143c26625f80c75b2f5966a6b171b349ce933e7 +SIZE (xpi/firefox-i18n-27.0b5/th.xpi) = 394994 +SHA256 (xpi/firefox-i18n-27.0b5/tr.xpi) = beab990ff0999f7f48f39aacf9af44373e3aa9df2a1730babea4ec58348ad648 +SIZE (xpi/firefox-i18n-27.0b5/tr.xpi) = 356671 +SHA256 (xpi/firefox-i18n-27.0b5/uk.xpi) = c8ba7a50445dafde1e5949d51c2839fcb442caf2d763515798ddf92a4eaf3907 +SIZE (xpi/firefox-i18n-27.0b5/uk.xpi) = 382506 +SHA256 (xpi/firefox-i18n-27.0b5/vi.xpi) = 71253b5ccd3d727ae3b52d53a64c799c8438fb611fd81e6a63e07f00522101b2 +SIZE (xpi/firefox-i18n-27.0b5/vi.xpi) = 375489 +SHA256 (xpi/firefox-i18n-27.0b5/zh-CN.xpi) = 93b9f600fe86ad84ba6df2c6a171ba67351f47d52b0ea669b9f8910f61fe675c +SIZE (xpi/firefox-i18n-27.0b5/zh-CN.xpi) = 374674 +SHA256 (xpi/firefox-i18n-27.0b5/zh-TW.xpi) = 891f9ce5c13bae0f330f2d443ba34f24af6ecd6e2a9809498b2c62bf61670fcb +SIZE (xpi/firefox-i18n-27.0b5/zh-TW.xpi) = 372322 +SHA256 (xpi/firefox-i18n-27.0b5/zu.xpi) = 1b14e2136336773b0bee05f7a94bbdd96f8222bc853c11256daadcaccf3e4ca7 +SIZE (xpi/firefox-i18n-27.0b5/zu.xpi) = 357239 Modified: trunk/www/firefox-nightly/Makefile ============================================================================== --- trunk/www/firefox-nightly/Makefile Sat Dec 28 06:35:29 2013 (r1466) +++ trunk/www/firefox-nightly/Makefile Sun Jan 12 19:50:25 2014 (r1467) @@ -18,11 +18,11 @@ BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlite3>0:${PORTSDIR}/databases/py-sqlite3 \ cairo>=1.10.2_1,1:${PORTSDIR}/graphics/cairo \ v4l_compat>0:${PORTSDIR}/multimedia/v4l_compat \ + libvpx>=1.3.0:${PORTSDIR}/multimedia/libvpx \ unzip:${PORTSDIR}/archivers/unzip # nspr>=4.10.3:${PORTSDIR}/devel/nspr \ # nss>=3.15.4:${PORTSDIR}/security/nss \ -# sqlite3>=3.8.1:${PORTSDIR}/databases/sqlite3 \ -# libvpx>=1.3.0:${PORTSDIR}/multimedia/libvpx \ +# sqlite3>=3.8.2:${PORTSDIR}/databases/sqlite3 \ LIB_DEPENDS= libv4l2.so:${PORTSDIR}/multimedia/libv4l @@ -32,7 +32,7 @@ OBJDIR_BUILD= # in-tree build broken after bug 789837 USE_GECKO= gecko MOZ_PKGCONFIG_FILES= # empty -USE_MOZILLA= -nspr -nss -sqlite -vpx +USE_MOZILLA= -nspr -nss -sqlite MOZILLA_NAME= Firefox Nightly MOZILLA_SUFX= -nightly MOZILLA= ${PORTNAME}${MOZILLA_SUFX} Modified: trunk/www/firefox-nightly/Makefile.hgrev ============================================================================== --- trunk/www/firefox-nightly/Makefile.hgrev Sat Dec 28 06:35:29 2013 (r1466) +++ trunk/www/firefox-nightly/Makefile.hgrev Sun Jan 12 19:50:25 2014 (r1467) @@ -1 +1 @@ -HGREV= 161809:451f47a70238 +HGREV= 163029:0c63a95e2dd8 Modified: trunk/www/firefox-nightly/distinfo ============================================================================== --- trunk/www/firefox-nightly/distinfo Sat Dec 28 06:35:29 2013 (r1466) +++ trunk/www/firefox-nightly/distinfo Sun Jan 12 19:50:25 2014 (r1467) @@ -1,2 +1,2 @@ -SHA256 (firefox-nightly/451f47a70238.tar.bz2) = 458d8790f381529356b70902950c0d5d67879e069bb0fa5dcfc327c4dbe8839d -SIZE (firefox-nightly/451f47a70238.tar.bz2) = 133778190 +SHA256 (firefox-nightly/0c63a95e2dd8.tar.bz2) = 7d69723381111b41e3de519c9cee3875a0401df94159158bec2e42d806df9353 +SIZE (firefox-nightly/0c63a95e2dd8.tar.bz2) = 132810958 Modified: trunk/www/firefox/Makefile ============================================================================== --- trunk/www/firefox/Makefile Sat Dec 28 06:35:29 2013 (r1466) +++ trunk/www/firefox/Makefile Sun Jan 12 19:50:25 2014 (r1467) @@ -2,7 +2,7 @@ # $FreeBSD: head/www/firefox/Makefile 310227 2013-01-11 10:22:40Z ehaupt $ PORTNAME= firefox -DISTVERSION= 27.0b2 +DISTVERSION= 27.0b5 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ @@ -13,7 +13,7 @@ COMMENT= Web browser based on the browser portion of Mozilla BUILD_DEPENDS= nspr>=4.10.2:${PORTSDIR}/devel/nspr \ - sqlite3>=3.7.17:${PORTSDIR}/databases/sqlite3 \ + sqlite3>=3.8.0.2:${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 \ Modified: trunk/www/firefox/distinfo ============================================================================== --- trunk/www/firefox/distinfo Sat Dec 28 06:35:29 2013 (r1466) +++ trunk/www/firefox/distinfo Sun Jan 12 19:50:25 2014 (r1467) @@ -1,2 +1,2 @@ -SHA256 (firefox-27.0b2.source.tar.bz2) = c650107528566218c7c4985e740eef8ee9f6bdebab1c003137b11a0dab516986 -SIZE (firefox-27.0b2.source.tar.bz2) = 129692533 +SHA256 (firefox-27.0b5.source.tar.bz2) = d01f653e4dd71c1c1dd1949f6446ae1029e363a01a28dab30532ab9e8a7f82a0 +SIZE (firefox-27.0b5.source.tar.bz2) = 129734686 From owner-freebsd-gecko@FreeBSD.ORG Sun Jan 12 20:33:07 2014 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5F1891BC for ; Sun, 12 Jan 2014 20:33:07 +0000 (UTC) Received: from mail-in-04.arcor-online.net (mail-in-04.arcor-online.net [151.189.21.44]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 125401F15 for ; Sun, 12 Jan 2014 20:33:06 +0000 (UTC) Received: from mail-in-11-z2.arcor-online.net (mail-in-11-z2.arcor-online.net [151.189.8.28]) by mx.arcor.de (Postfix) with ESMTP id E08BAAA254 for ; Sun, 12 Jan 2014 20:59:41 +0100 (CET) Received: from mail-in-09.arcor-online.net (mail-in-09.arcor-online.net [151.189.21.49]) by mail-in-11-z2.arcor-online.net (Postfix) with ESMTP id DB6D37FE92A for ; Sun, 12 Jan 2014 20:59:41 +0100 (CET) X-Greylist: Passed host: 94.217.104.55 X-DKIM: Sendmail DKIM Filter v2.8.2 mail-in-09.arcor-online.net BF8781983C0 Received: from lorvorc.mips.inka.de (dslb-094-217-104-055.pools.arcor-ip.net [94.217.104.55]) by mail-in-09.arcor-online.net (Postfix) with ESMTPS id BF8781983C0 for ; Sun, 12 Jan 2014 20:59:41 +0100 (CET) Received: from lorvorc.mips.inka.de (localhost [127.0.0.1]) by lorvorc.mips.inka.de (8.14.7/8.14.7) with ESMTP id s0CJxfiR004102 for ; Sun, 12 Jan 2014 20:59:41 +0100 (CET) (envelope-from mailnull@lorvorc.mips.inka.de) Received: (from mailnull@localhost) by lorvorc.mips.inka.de (8.14.7/8.14.7/Submit) id s0CJxfjs004101 for freebsd-gecko@freebsd.org; Sun, 12 Jan 2014 20:59:41 +0100 (CET) (envelope-from mailnull) From: naddy@mips.inka.de (Christian Weisgerber) Subject: Firefox noticeably less stable on 10.0 Date: Sun, 12 Jan 2014 19:59:41 +0000 (UTC) Message-ID: Originator: naddy@mips.inka.de (Christian Weisgerber) To: freebsd-gecko@freebsd.org X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jan 2014 20:33:07 -0000 I realize this is pretty worthless... Since I upgraded from 9-STABLE to 10-STABLE, about two weeks ago, Firefox (www/firefox) has become substantially less stable. It used to crash so rarely that I don't really know how often (monthly? less?). Now it seems to randomly crash every 1..2 days. No discernible pattern and the session restore picks up without problems where it left off. That's 9.2-STABLE to 10.0-STABLE, amd64, new install, newly compiled ports, WITH_NEW_XORG=yes (before and after), otherwise default options, same Firefox profile. -- Christian "naddy" Weisgerber naddy@mips.inka.de From owner-freebsd-gecko@FreeBSD.ORG Mon Jan 13 11:07:01 2014 Return-Path: Delivered-To: gecko@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2E2D0757 for ; Mon, 13 Jan 2014 11:07:01 +0000 (UTC) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 004201174 for ; Mon, 13 Jan 2014 11:07:01 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id s0DB707v096154 for ; Mon, 13 Jan 2014 11:07:00 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id s0DB70Mq096152 for gecko@FreeBSD.org; Mon, 13 Jan 2014 11:07:00 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 13 Jan 2014 11:07:00 GMT Message-Id: <201401131107.s0DB70Mq096152@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: gecko@FreeBSD.org Subject: Current problem reports assigned to gecko@FreeBSD.org X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Jan 2014 11:07:01 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o ports/185527 gecko [PATCH] security/nss: Added forgotten libnsssysinit.so o ports/185210 gecko www/seamonkey-i18n: options sometimes ignored o ports/184630 gecko mail/thunderbird jobserver unavailable o ports/184399 gecko www/seamonkey build error on i386 o ports/183630 gecko www/firefox: Firefox 25.0_1,1 cannot built on amd64 o ports/182499 gecko www/firefox crash when i try use textproc/ibus/ o ports/182411 gecko mail/thunderbird: Does not build with poudriere on 9.1 o ports/182386 gecko mail/thunderbird-i18n: fail to build at install stage o ports/182351 gecko mail/thunderbird - doesn't build with qt3 o ports/182346 gecko mail/thunderbird - fails to build with gtk3 o ports/181393 gecko www/xpi-quick-locale-switcher 1.7.8.5 does not works w o ports/181005 gecko mail/thunderbird - Enigmail failes to start pinentry o ports/180938 gecko www/firefox: ia64: ../../../js/src/gc/Heap.h:827:1: er o ports/180855 gecko www/firefox: Firefox 22 crashes on HTML 5 videos o ports/180766 gecko Flash not work in www/firefox o ports/180563 gecko www/seamonkey compilation error with Clang (*pp = '\0' o ports/180380 gecko www/firefox: Firefox 22.0 dies instantly when I try to o ports/179420 gecko www/seamonkey freezes completely by accessing citrix x o ports/178524 gecko BATCH=yes not work for www/firefox-i18n o ports/177404 gecko www/firefox: youtube videos in firefox not working o ports/170310 gecko mail/thunderbird: coredump/crash when used with OpenLD o ports/169366 gecko www/xpi-* ports need re-install after each Firefox upd o ports/168091 gecko Mk/bsd.gecko.mk error: USE_FIREFOX doesn't work correc f ports/165263 gecko mail/thunderbird: core dumping most time when users ar o ports/164239 gecko [PATCH] mail/thunderbird: crash with nss_ldap o ports/160387 gecko security/ca_root_nss: Allow user to trust extra local f ports/155949 gecko www/firefox: firefox 4, WITH_PGO, better Text against o ports/144044 gecko [PATCH] www/firefox: Makefile.webplugins target order 28 problems total. From owner-freebsd-gecko@FreeBSD.ORG Fri Jan 17 09:58:25 2014 Return-Path: Delivered-To: gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D06BA7B3 for ; Fri, 17 Jan 2014 09:58:25 +0000 (UTC) Received: from portscout.freebsd.org (portscout.freebsd.org [IPv6:2001:1900:2254:206a::50:6]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BC6C311E3 for ; Fri, 17 Jan 2014 09:58:25 +0000 (UTC) Received: from portscout.freebsd.org ([127.0.1.123]) by portscout.freebsd.org (8.14.7/8.14.7) with ESMTP id s0H9wPxo019281 for ; Fri, 17 Jan 2014 09:58:25 GMT (envelope-from portscout@FreeBSD.org) Received: (from portscout@localhost) by portscout.freebsd.org (8.14.7/8.14.7/Submit) id s0H9wPdf019277; Fri, 17 Jan 2014 09:58:25 GMT (envelope-from portscout@FreeBSD.org) Message-Id: <201401170958.s0H9wPdf019277@portscout.freebsd.org> X-Authentication-Warning: portscout.freebsd.org: portscout set sender to portscout@FreeBSD.org using -f Content-Disposition: inline Content-Transfer-Encoding: 8bit Content-Type: text/plain MIME-Version: 1.0 Date: Fri, 17 Jan 2014 09:58:25 +0000 From: portscout@FreeBSD.org To: gecko@freebsd.org Subject: FreeBSD ports you maintain which are out of date X-Mailer: portscout/0.8.1 X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jan 2014 09:58:25 -0000 Dear port maintainer, The portscout new distfile checker has detected that one or more of your ports appears to be out of date. Please take the opportunity to check each of the ports listed below, and if possible and appropriate, submit/commit an update. If any ports have already been updated, you can safely ignore the entry. You will not be e-mailed again for any of the port/version combinations below. Full details can be found at the following URL: http://portscout.freebsd.org/gecko@freebsd.org.html Port | Current version | New version ------------------------------------------------+-----------------+------------ www/xpi-greasemonkey | 1.12 | 1.14 ------------------------------------------------+-----------------+------------ If any of the above results are invalid, please check the following page for details on how to improve portscout's detection and selection of distfiles on a per-port basis: http://portscout.freebsd.org/info/portscout-portconfig.txt Thanks. From owner-freebsd-gecko@FreeBSD.ORG Sat Jan 18 15:17:41 2014 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 45B09C13 for ; Sat, 18 Jan 2014 15:17:41 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.244.247]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 82506197B for ; Sat, 18 Jan 2014 15:17:40 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.244.247]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id s0IFHcuV099384 for ; Sat, 18 Jan 2014 15:17:38 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id s0IFHXwS098540 for freebsd-gecko@freebsd.org; Sat, 18 Jan 2014 15:17:33 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sat, 18 Jan 2014 15:17:33 GMT Message-Id: <201401181517.s0IFHXwS098540@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org Subject: [SVN-Commit] r1469 - in trunk: Mk www/firefox-nightly/files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 15:17:41 -0000 Author: jbeich Date: Sat Jan 18 15:17:33 2014 New Revision: 1469 Log: switch nightly to multimedia/gstreamer1 based on upstream patch Added: trunk/www/firefox-nightly/files/patch-bug806917 Modified: trunk/Mk/bsd.gecko.mk Modified: trunk/Mk/bsd.gecko.mk ============================================================================== --- trunk/Mk/bsd.gecko.mk Sat Jan 18 15:17:25 2014 (r1468) +++ trunk/Mk/bsd.gecko.mk Sat Jan 18 15:17:33 2014 (r1469) @@ -704,8 +704,13 @@ .endif .if ${PORT_OPTIONS:MGSTREAMER} +. if ${MOZILLA_VER:R:R} >= 30 || exists(${FILESDIR}/patch-bug806917) +USE_GSTREAMER1?=good libav +MOZ_OPTIONS+= --enable-gstreamer=1.0 +. else USE_GSTREAMER?= good ffmpeg MOZ_OPTIONS+= --enable-gstreamer +. endif .else MOZ_OPTIONS+= --disable-gstreamer .endif Added: trunk/www/firefox-nightly/files/patch-bug806917 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/www/firefox-nightly/files/patch-bug806917 Sat Jan 18 15:17:33 2014 (r1469) @@ -0,0 +1,1973 @@ +commit cb40a26 +Author: Alessandro Decina +Date: Fri Jan 03 08:16:54 2014 -0800 + + Bug 806917 - support GStreamer 1.0 +--- + configure.in | 64 ++- + content/media/gstreamer/GStreamerAllocator.cpp | 194 +++++++ + content/media/gstreamer/GStreamerAllocator.h | 25 + + content/media/gstreamer/GStreamerFormatHelper.cpp | 13 +- + content/media/gstreamer/GStreamerFunctionList.h | 93 +++- + content/media/gstreamer/GStreamerLoader.cpp | 48 +- + content/media/gstreamer/GStreamerLoader.h | 8 + + content/media/gstreamer/GStreamerReader-0.10.cpp | 198 +++++++ + content/media/gstreamer/GStreamerReader.cpp | 618 ++++++++++++++-------- + content/media/gstreamer/GStreamerReader.h | 42 +- + content/media/gstreamer/moz.build | 11 +- + content/media/test/manifest.js | 6 +- + 12 files changed, 1046 insertions(+), 274 deletions(-) + +diff --git configure.in configure.in +index 9776b8d..0b1698d 100644 +--- configure.in ++++ configure.in +@@ -3982,6 +3982,7 @@ MOZ_SAMPLE_TYPE_FLOAT32= + MOZ_SAMPLE_TYPE_S16= + MOZ_OPUS=1 + MOZ_WEBM=1 ++MOZ_GSTREAMER= + MOZ_DIRECTSHOW= + MOZ_WMF= + MOZ_FMP4= +@@ -5624,44 +5625,59 @@ WINNT|Darwin|Android) + ;; + *) + MOZ_GSTREAMER=1 ++ GST_API_VERSION=0.10 + ;; + esac + +-MOZ_ARG_ENABLE_BOOL(gstreamer, +-[ --enable-gstreamer Enable GStreamer support], +-MOZ_GSTREAMER=1, +-MOZ_GSTREAMER=) +- +-if test "$MOZ_GSTREAMER"; then +- # API version, eg 0.10, 1.0 etc ++MOZ_ARG_ENABLE_STRING(gstreamer, ++[ --enable-gstreamer[=0.10] Enable GStreamer support], ++[ MOZ_GSTREAMER=1 ++ # API version, eg 0.10, 1.0 etc ++ if test -z "$enableval" -o "$enableval" = "yes"; then + GST_API_VERSION=0.10 ++ else ++ GST_API_VERSION=$enableval ++ fi], ++) ++ ++if test -n "$MOZ_GSTREAMER"; then + # core/base release number +- GST_VERSION=0.10.25 ++ if test "$GST_API_VERSION" = "1.0"; then ++ GST_VERSION=1.0 ++ else ++ GST_VERSION=0.10.25 ++ fi ++ + PKG_CHECK_MODULES(GSTREAMER, + gstreamer-$GST_API_VERSION >= $GST_VERSION + gstreamer-app-$GST_API_VERSION +- gstreamer-plugins-base-$GST_API_VERSION, , +- AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer])) +- if test -n "$GSTREAMER_LIBS"; then +- _SAVE_LDFLAGS=$LDFLAGS +- LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION" +- AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=) +- if test -n "$_HAVE_LIBGSTVIDEO" ; then +- GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION" +- else +- AC_MSG_ERROR([gstreamer-plugins-base found, but no libgstvideo. Something has gone terribly wrong. Try reinstalling gstreamer-plugins-base; failing that, disable the gstreamer backend with --disable-gstreamer.]) +- fi +- LDFLAGS=$_SAVE_LDFLAGS ++ gstreamer-plugins-base-$GST_API_VERSION, ++ [_HAVE_GSTREAMER=1], ++ [_HAVE_GSTREAMER=]) ++ if test -z "$_HAVE_GSTREAMER"; then ++ AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer]) ++ fi ++ ++ _SAVE_LDFLAGS=$LDFLAGS ++ LDFLAGS="$LDFLAGS $GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION" ++ AC_TRY_LINK(,[return 0;],_HAVE_LIBGSTVIDEO=1,_HAVE_LIBGSTVIDEO=) ++ if test -n "$_HAVE_LIBGSTVIDEO" ; then ++ GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstvideo-$GST_API_VERSION" + else +- AC_MSG_ERROR([gstreamer and gstreamer-plugins-base development packages are needed to build gstreamer backend. Install them or disable gstreamer support with --disable-gstreamer]) ++ AC_MSG_ERROR([gstreamer-plugins-base found, but no libgstvideo. Something has gone terribly wrong. Try reinstalling gstreamer-plugins-base; failing that, disable the gstreamer backend with --disable-gstreamer.]) + fi ++ LDFLAGS=$_SAVE_LDFLAGS ++ ++ AC_SUBST(GSTREAMER_CFLAGS) ++ AC_SUBST(GSTREAMER_LIBS) + fi +-AC_SUBST(GSTREAMER_CFLAGS) +-AC_SUBST(GSTREAMER_LIBS) ++ + AC_SUBST(MOZ_GSTREAMER) ++AC_SUBST(GST_API_VERSION) + + if test -n "$MOZ_GSTREAMER"; then +- AC_DEFINE(MOZ_GSTREAMER) ++ AC_DEFINE(MOZ_GSTREAMER) ++ AC_DEFINE_UNQUOTED(GST_API_VERSION, "$GST_API_VERSION") + fi + + +diff --git content/media/gstreamer/GStreamerAllocator.cpp content/media/gstreamer/GStreamerAllocator.cpp +new file mode 100644 +index 0000000..69d0385 +--- /dev/null ++++ content/media/gstreamer/GStreamerAllocator.cpp +@@ -0,0 +1,194 @@ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include "GStreamerAllocator.h" ++ ++#include ++#include ++ ++#include "GStreamerLoader.h" ++ ++using namespace mozilla::layers; ++ ++namespace mozilla { ++ ++typedef struct ++{ ++ GstAllocator parent; ++ GStreamerReader *reader; ++} MozGfxMemoryAllocator; ++ ++typedef struct ++{ ++ GstAllocatorClass parent; ++} MozGfxMemoryAllocatorClass; ++ ++typedef struct ++{ ++ GstMemory memory; ++ PlanarYCbCrImage* image; ++ guint8* data; ++} MozGfxMemory; ++ ++typedef struct ++{ ++ GstMeta meta; ++} MozGfxMeta; ++ ++typedef struct ++{ ++ GstVideoBufferPoolClass parent_class; ++} MozGfxBufferPoolClass; ++ ++typedef struct ++{ ++ GstVideoBufferPool pool; ++} MozGfxBufferPool; ++ ++G_DEFINE_TYPE(MozGfxMemoryAllocator, moz_gfx_memory_allocator, GST_TYPE_ALLOCATOR); ++G_DEFINE_TYPE(MozGfxBufferPool, moz_gfx_buffer_pool, GST_TYPE_VIDEO_BUFFER_POOL); ++ ++void ++moz_gfx_memory_reset(MozGfxMemory *mem) ++{ ++ if (mem->image) ++ mem->image->Release(); ++ ++ ImageContainer* container = ((MozGfxMemoryAllocator*) mem->memory.allocator)->reader->GetImageContainer(); ++ ImageFormat format = PLANAR_YCBCR; ++ mem->image = reinterpret_cast(container->CreateImage(&format, 1).get()); ++ mem->data = mem->image->AllocateAndGetNewBuffer(mem->memory.size); ++} ++ ++static GstMemory* ++moz_gfx_memory_allocator_alloc(GstAllocator* aAllocator, gsize aSize, ++ GstAllocationParams* aParams) ++{ ++ MozGfxMemory* mem = g_slice_new (MozGfxMemory); ++ gsize maxsize = aSize + aParams->prefix + aParams->padding; ++ gst_memory_init (GST_MEMORY_CAST (mem), ++ (GstMemoryFlags)aParams->flags, ++ aAllocator, NULL, maxsize, aParams->align, ++ aParams->prefix, aSize); ++ mem->image = NULL; ++ moz_gfx_memory_reset(mem); ++ ++ return (GstMemory *) mem; ++} ++ ++static void ++moz_gfx_memory_allocator_free (GstAllocator * allocator, GstMemory * gmem) ++{ ++ MozGfxMemory *mem = (MozGfxMemory *) gmem; ++ ++ if (mem->memory.parent) ++ goto sub_mem; ++ ++ if (mem->image) ++ mem->image->Release(); ++ ++sub_mem: ++ g_slice_free (MozGfxMemory, mem); ++} ++ ++static gpointer ++moz_gfx_memory_map (MozGfxMemory * mem, gsize maxsize, GstMapFlags flags) ++{ ++ return mem->data + mem->memory.offset; ++} ++ ++static gboolean ++moz_gfx_memory_unmap (MozGfxMemory * mem) ++{ ++ return TRUE; ++} ++ ++static MozGfxMemory * ++moz_gfx_memory_share (MozGfxMemory * mem, gssize offset, gsize size) ++{ ++ MozGfxMemory *sub; ++ GstMemory *parent; ++ ++ /* find the real parent */ ++ if ((parent = mem->memory.parent) == NULL) ++ parent = (GstMemory *) mem; ++ ++ if (size == (gsize) -1) ++ size = mem->memory.size - offset; ++ ++ /* the shared memory is always readonly */ ++ sub = g_slice_new (MozGfxMemory); ++ ++ gst_memory_init (GST_MEMORY_CAST (sub), ++ (GstMemoryFlags) (GST_MINI_OBJECT_FLAGS (parent) | GST_MINI_OBJECT_FLAG_LOCK_READONLY), ++ mem->memory.allocator, &mem->memory, mem->memory.maxsize, mem->memory.align, ++ mem->memory.offset + offset, size); ++ ++ sub->image = mem->image; ++ sub->data = mem->data; ++ ++ return sub; ++} ++ ++static void ++moz_gfx_memory_allocator_class_init (MozGfxMemoryAllocatorClass * klass) ++{ ++ GstAllocatorClass *allocator_class; ++ ++ allocator_class = (GstAllocatorClass *) klass; ++ ++ allocator_class->alloc = moz_gfx_memory_allocator_alloc; ++ allocator_class->free = moz_gfx_memory_allocator_free; ++} ++ ++static void ++moz_gfx_memory_allocator_init (MozGfxMemoryAllocator * allocator) ++{ ++ GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator); ++ ++ alloc->mem_type = "moz-gfx-image"; ++ alloc->mem_map = (GstMemoryMapFunction) moz_gfx_memory_map; ++ alloc->mem_unmap = (GstMemoryUnmapFunction) moz_gfx_memory_unmap; ++ alloc->mem_share = (GstMemoryShareFunction) moz_gfx_memory_share; ++ /* fallback copy and is_span */ ++} ++ ++void ++moz_gfx_memory_allocator_set_reader(GstAllocator *aAllocator, GStreamerReader* aReader) ++{ ++ MozGfxMemoryAllocator *allocator = (MozGfxMemoryAllocator *) aAllocator; ++ allocator->reader = aReader; ++} ++ ++nsRefPtr ++moz_gfx_memory_get_image(GstMemory *aMemory) ++{ ++ NS_ASSERTION(GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(aMemory->allocator), "Should be a gfx image"); ++ ++ return ((MozGfxMemory *) aMemory)->image; ++} ++ ++void ++moz_gfx_buffer_pool_reset_buffer (GstBufferPool* aPool, GstBuffer* aBuffer) ++{ ++ GstMemory* mem = gst_buffer_peek_memory(aBuffer, 0); ++ ++ NS_ASSERTION(GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(mem->allocator), "Should be a gfx image"); ++ moz_gfx_memory_reset((MozGfxMemory *) mem); ++ GST_BUFFER_POOL_CLASS(moz_gfx_buffer_pool_parent_class)->reset_buffer(aPool, aBuffer); ++} ++ ++static void ++moz_gfx_buffer_pool_class_init (MozGfxBufferPoolClass * klass) ++{ ++ GstBufferPoolClass *pool_class = (GstBufferPoolClass *) klass; ++ pool_class->reset_buffer = moz_gfx_buffer_pool_reset_buffer; ++} ++ ++static void ++moz_gfx_buffer_pool_init (MozGfxBufferPool * pool) ++{ ++} ++ ++} // namespace mozilla +diff --git content/media/gstreamer/GStreamerAllocator.h content/media/gstreamer/GStreamerAllocator.h +new file mode 100644 +index 0000000..05a4412 +--- /dev/null ++++ content/media/gstreamer/GStreamerAllocator.h +@@ -0,0 +1,25 @@ ++/* This Source Code Form is subject to the terms of the Mozilla Public ++ * License, v. 2.0. If a copy of the MPL was not distributed with this file, ++ * You can obtain one at http://mozilla.org/MPL/2.0/. */ ++ ++#if !defined(GStreamerAllocator_h_) ++#define GStreamerAllocator_h_ ++ ++#include "GStreamerReader.h" ++ ++#define GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR (moz_gfx_memory_allocator_get_type()) ++#define GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR)) ++#define GST_TYPE_MOZ_GFX_BUFFER_POOL (moz_gfx_buffer_pool_get_type()) ++#define GST_IS_MOZ_GFX_BUFFER_POOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_MOZ_GFX_BUFFER_POOL)) ++ ++namespace mozilla { ++ ++GType moz_gfx_memory_allocator_get_type(); ++void moz_gfx_memory_allocator_set_reader(GstAllocator *aAllocator, GStreamerReader* aReader); ++nsRefPtr moz_gfx_memory_get_image(GstMemory *aMemory); ++ ++GType moz_gfx_buffer_pool_get_type(); ++ ++} // namespace mozilla ++ ++#endif +diff --git content/media/gstreamer/GStreamerFormatHelper.cpp content/media/gstreamer/GStreamerFormatHelper.cpp +index be71331..a5e5db8 100644 +--- content/media/gstreamer/GStreamerFormatHelper.cpp ++++ content/media/gstreamer/GStreamerFormatHelper.cpp +@@ -294,12 +294,23 @@ bool GStreamerFormatHelper::CanHandleCodecCaps(GstCaps* aCaps) + GList* GStreamerFormatHelper::GetFactories() { + NS_ASSERTION(sLoadOK, "GStreamer library not linked"); + +- uint32_t cookie = gst_default_registry_get_feature_list_cookie (); ++#if GST_VERSION_MAJOR >= 1 ++ uint32_t cookie = gst_registry_get_feature_list_cookie(gst_registry_get()); ++#else ++ uint32_t cookie = gst_default_registry_get_feature_list_cookie(); ++#endif + if (cookie != mCookie) { + g_list_free(mFactories); ++#if GST_VERSION_MAJOR >= 1 ++ mFactories = ++ gst_registry_feature_filter(gst_registry_get(), ++ (GstPluginFeatureFilter)FactoryFilter, ++ false, nullptr); ++#else + mFactories = + gst_default_registry_feature_filter((GstPluginFeatureFilter)FactoryFilter, + false, nullptr); ++#endif + mCookie = cookie; + } + +diff --git content/media/gstreamer/GStreamerFunctionList.h content/media/gstreamer/GStreamerFunctionList.h +index 56877c0..e169449 100644 +--- content/media/gstreamer/GStreamerFunctionList.h ++++ content/media/gstreamer/GStreamerFunctionList.h +@@ -9,7 +9,6 @@ + * List of symbol names we need to dlsym from the gstreamer library. + */ + GST_FUNC(LIBGSTAPP, gst_app_sink_get_type) +-GST_FUNC(LIBGSTAPP, gst_app_sink_pull_buffer) + GST_FUNC(LIBGSTAPP, gst_app_sink_set_callbacks) + GST_FUNC(LIBGSTAPP, gst_app_src_end_of_stream) + GST_FUNC(LIBGSTAPP, gst_app_src_get_size) +@@ -22,10 +21,8 @@ GST_FUNC(LIBGSTAPP, gst_app_src_set_stream_type) + GST_FUNC(LIBGSTREAMER, gst_bin_get_by_name) + GST_FUNC(LIBGSTREAMER, gst_bin_get_type) + GST_FUNC(LIBGSTREAMER, gst_bin_iterate_recurse) +-GST_FUNC(LIBGSTREAMER, gst_buffer_copy_metadata) + GST_FUNC(LIBGSTREAMER, gst_buffer_get_type) + GST_FUNC(LIBGSTREAMER, gst_buffer_new) +-GST_FUNC(LIBGSTREAMER, gst_buffer_new_and_alloc) + GST_FUNC(LIBGSTREAMER, gst_bus_set_sync_handler) + GST_FUNC(LIBGSTREAMER, gst_bus_timed_pop_filtered) + GST_FUNC(LIBGSTREAMER, gst_caps_append) +@@ -37,46 +34,36 @@ GST_FUNC(LIBGSTREAMER, gst_caps_new_any) + GST_FUNC(LIBGSTREAMER, gst_caps_new_empty) + GST_FUNC(LIBGSTREAMER, gst_caps_new_full) + GST_FUNC(LIBGSTREAMER, gst_caps_new_simple) +-GST_FUNC(LIBGSTREAMER, gst_caps_unref) +-GST_FUNC(LIBGSTREAMER, gst_element_factory_get_klass) ++GST_FUNC(LIBGSTREAMER, gst_caps_set_simple) + GST_FUNC(LIBGSTREAMER, gst_element_factory_get_static_pad_templates) + GST_FUNC(LIBGSTREAMER, gst_element_factory_get_type) + GST_FUNC(LIBGSTREAMER, gst_element_factory_make) + GST_FUNC(LIBGSTREAMER, gst_element_get_factory) +-GST_FUNC(LIBGSTREAMER, gst_element_get_pad) ++GST_FUNC(LIBGSTREAMER, gst_element_get_static_pad) + GST_FUNC(LIBGSTREAMER, gst_element_get_type) + GST_FUNC(LIBGSTREAMER, gst_element_query_convert) + GST_FUNC(LIBGSTREAMER, gst_element_query_duration) + GST_FUNC(LIBGSTREAMER, gst_element_seek_simple) + GST_FUNC(LIBGSTREAMER, gst_element_set_state) +-GST_FUNC(LIBGSTREAMER, gst_event_parse_new_segment) + GST_FUNC(LIBGSTREAMER, gst_flow_get_name) + GST_FUNC(LIBGSTREAMER, gst_init) + GST_FUNC(LIBGSTREAMER, gst_init_check) + GST_FUNC(LIBGSTREAMER, gst_iterator_next) + GST_FUNC(LIBGSTREAMER, gst_message_parse_error) + GST_FUNC(LIBGSTREAMER, gst_message_type_get_name) +-GST_FUNC(LIBGSTREAMER, gst_mini_object_get_type) +-GST_FUNC(LIBGSTREAMER, gst_mini_object_new) + GST_FUNC(LIBGSTREAMER, gst_mini_object_ref) + GST_FUNC(LIBGSTREAMER, gst_mini_object_unref) + GST_FUNC(LIBGSTREAMER, gst_object_get_parent) + GST_FUNC(LIBGSTREAMER, gst_object_unref) +-GST_FUNC(LIBGSTREAMER, gst_pad_add_event_probe) +-GST_FUNC(LIBGSTREAMER, gst_pad_alloc_buffer) + GST_FUNC(LIBGSTREAMER, gst_pad_get_element_private) +-GST_FUNC(LIBGSTREAMER, gst_pad_get_negotiated_caps) +-GST_FUNC(LIBGSTREAMER, gst_pad_set_bufferalloc_function) + GST_FUNC(LIBGSTREAMER, gst_pad_set_element_private) + GST_FUNC(LIBGSTREAMER, gst_parse_bin_from_description) + GST_FUNC(LIBGSTREAMER, gst_pipeline_get_bus) + GST_FUNC(LIBGSTREAMER, gst_pipeline_get_type) + GST_FUNC(LIBGSTREAMER, gst_plugin_feature_get_rank) + GST_FUNC(LIBGSTREAMER, gst_registry_feature_filter) +-GST_FUNC(LIBGSTREAMER, gst_registry_get_default) + GST_FUNC(LIBGSTREAMER, gst_registry_get_feature_list_cookie) + GST_FUNC(LIBGSTREAMER, gst_segment_init) +-GST_FUNC(LIBGSTREAMER, gst_segment_set_newsegment) + GST_FUNC(LIBGSTREAMER, gst_segment_to_stream_time) + GST_FUNC(LIBGSTREAMER, gst_static_caps_get) + GST_FUNC(LIBGSTREAMER, gst_structure_copy) +@@ -85,11 +72,82 @@ GST_FUNC(LIBGSTREAMER, gst_structure_get_int) + GST_FUNC(LIBGSTREAMER, gst_structure_get_value) + GST_FUNC(LIBGSTREAMER, gst_structure_new) + GST_FUNC(LIBGSTREAMER, gst_util_uint64_scale) ++ ++#if GST_VERSION_MAJOR == 0 ++GST_FUNC(LIBGSTAPP, gst_app_sink_pull_buffer) ++GST_FUNC(LIBGSTREAMER, gst_buffer_copy_metadata) ++GST_FUNC(LIBGSTREAMER, gst_buffer_new_and_alloc) ++GST_FUNC(LIBGSTREAMER, gst_caps_unref) ++GST_FUNC(LIBGSTREAMER, gst_element_factory_get_klass) ++GST_FUNC(LIBGSTREAMER, gst_element_get_pad) ++GST_FUNC(LIBGSTREAMER, gst_event_parse_new_segment) ++GST_FUNC(LIBGSTREAMER, gst_mini_object_get_type) ++GST_FUNC(LIBGSTREAMER, gst_mini_object_new) ++GST_FUNC(LIBGSTREAMER, gst_pad_add_event_probe) ++GST_FUNC(LIBGSTREAMER, gst_pad_alloc_buffer) ++GST_FUNC(LIBGSTREAMER, gst_pad_get_negotiated_caps) ++GST_FUNC(LIBGSTREAMER, gst_pad_set_bufferalloc_function) ++GST_FUNC(LIBGSTREAMER, gst_registry_get_default) ++GST_FUNC(LIBGSTREAMER, gst_segment_set_newsegment) + GST_FUNC(LIBGSTVIDEO, gst_video_format_get_component_height) + GST_FUNC(LIBGSTVIDEO, gst_video_format_get_component_offset) + GST_FUNC(LIBGSTVIDEO, gst_video_format_get_component_width) ++GST_FUNC(LIBGSTVIDEO, gst_video_format_get_pixel_stride) + GST_FUNC(LIBGSTVIDEO, gst_video_format_get_row_stride) + GST_FUNC(LIBGSTVIDEO, gst_video_format_parse_caps) ++#else ++ ++GST_FUNC(LIBGSTAPP, gst_app_sink_pull_sample) ++GST_FUNC(LIBGSTREAMER, _gst_caps_any) ++GST_FUNC(LIBGSTREAMER, gst_allocator_get_type) ++GST_FUNC(LIBGSTREAMER, gst_buffer_copy_into) ++GST_FUNC(LIBGSTREAMER, gst_buffer_extract) ++GST_FUNC(LIBGSTREAMER, gst_buffer_get_meta) ++GST_FUNC(LIBGSTREAMER, gst_buffer_get_size) ++GST_FUNC(LIBGSTREAMER, gst_buffer_map) ++GST_FUNC(LIBGSTREAMER, gst_buffer_new_allocate) ++GST_FUNC(LIBGSTREAMER, gst_buffer_n_memory) ++GST_FUNC(LIBGSTREAMER, gst_buffer_peek_memory) ++GST_FUNC(LIBGSTREAMER, gst_buffer_pool_acquire_buffer) ++GST_FUNC(LIBGSTREAMER, gst_buffer_pool_config_set_allocator) ++GST_FUNC(LIBGSTREAMER, gst_buffer_pool_config_set_params) ++GST_FUNC(LIBGSTREAMER, gst_buffer_pool_get_config) ++GST_FUNC(LIBGSTREAMER, gst_buffer_pool_get_type) ++GST_FUNC(LIBGSTREAMER, gst_buffer_pool_is_active) ++GST_FUNC(LIBGSTREAMER, gst_buffer_pool_set_active) ++GST_FUNC(LIBGSTREAMER, gst_buffer_pool_set_config) ++GST_FUNC(LIBGSTREAMER, gst_buffer_set_size) ++GST_FUNC(LIBGSTREAMER, gst_buffer_unmap) ++GST_FUNC(LIBGSTREAMER, gst_element_factory_get_metadata) ++GST_FUNC(LIBGSTREAMER, gst_event_parse_segment) ++GST_FUNC(LIBGSTREAMER, gst_memory_init) ++GST_FUNC(LIBGSTREAMER, gst_memory_map) ++GST_FUNC(LIBGSTREAMER, gst_memory_unmap) ++GST_FUNC(LIBGSTREAMER, gst_object_get_type) ++GST_FUNC(LIBGSTREAMER, gst_pad_add_probe) ++GST_FUNC(LIBGSTREAMER, gst_pad_get_current_caps) ++GST_FUNC(LIBGSTREAMER, gst_pad_probe_info_get_query) ++GST_FUNC(LIBGSTREAMER, gst_query_add_allocation_meta) ++GST_FUNC(LIBGSTREAMER, gst_query_add_allocation_param) ++GST_FUNC(LIBGSTREAMER, gst_query_add_allocation_pool) ++GST_FUNC(LIBGSTREAMER, gst_query_parse_allocation) ++GST_FUNC(LIBGSTREAMER, gst_registry_get) ++GST_FUNC(LIBGSTREAMER, gst_sample_get_buffer) ++GST_FUNC(LIBGSTREAMER, gst_segment_copy_into) ++GST_FUNC(LIBGSTREAMER, gst_structure_free) ++GST_FUNC(LIBGSTVIDEO, gst_buffer_pool_config_get_video_alignment) ++GST_FUNC(LIBGSTVIDEO, gst_buffer_pool_has_option) ++GST_FUNC(LIBGSTVIDEO, gst_video_buffer_pool_get_type) ++GST_FUNC(LIBGSTVIDEO, gst_video_frame_map) ++GST_FUNC(LIBGSTVIDEO, gst_video_frame_unmap) ++GST_FUNC(LIBGSTVIDEO, gst_video_info_align) ++GST_FUNC(LIBGSTVIDEO, gst_video_info_from_caps) ++GST_FUNC(LIBGSTVIDEO, gst_video_info_init) ++GST_FUNC(LIBGSTVIDEO, gst_video_meta_api_get_type) ++GST_FUNC(LIBGSTVIDEO, gst_video_meta_map) ++GST_FUNC(LIBGSTVIDEO, gst_video_meta_unmap) ++ ++#endif + + /* + * Functions that have been defined in the header file. We replace them so that +@@ -99,6 +157,11 @@ GST_FUNC(LIBGSTVIDEO, gst_video_format_parse_caps) + REPLACE_FUNC(gst_buffer_ref); + REPLACE_FUNC(gst_buffer_unref); + REPLACE_FUNC(gst_message_unref); ++ ++#if GST_VERSION_MAJOR == 1 ++REPLACE_FUNC(gst_caps_unref); ++REPLACE_FUNC(gst_sample_unref); ++#endif + #endif + + #endif // !defined(__APPLE__) +diff --git content/media/gstreamer/GStreamerLoader.cpp content/media/gstreamer/GStreamerLoader.cpp +index 5961b23..e6457e0 100644 +--- content/media/gstreamer/GStreamerLoader.cpp ++++ content/media/gstreamer/GStreamerLoader.cpp +@@ -6,13 +6,21 @@ + #include + #include + +-#include "GStreamerLoader.h" ++#include "nsDebug.h" + #include "mozilla/NullPtr.h" + ++#include "GStreamerLoader.h" ++ + #define LIBGSTREAMER 0 + #define LIBGSTAPP 1 + #define LIBGSTVIDEO 2 + ++#ifdef __OpenBSD__ ++#define LIB_GST_SUFFIX ".so" ++#else ++#define LIB_GST_SUFFIX ".so.0" ++#endif ++ + namespace mozilla { + + /* +@@ -32,6 +40,11 @@ namespace mozilla { + GstBuffer * gst_buffer_ref_impl(GstBuffer *buf); + void gst_buffer_unref_impl(GstBuffer *buf); + void gst_message_unref_impl(GstMessage *msg); ++void gst_caps_unref_impl(GstCaps *caps); ++ ++#if GST_VERSION_MAJOR == 1 ++void gst_sample_unref_impl(GstSample *sample); ++#endif + + bool + load_gstreamer() +@@ -58,32 +71,25 @@ load_gstreamer() + if (major == GST_VERSION_MAJOR && minor == GST_VERSION_MINOR) { + gstreamerLib = RTLD_DEFAULT; + } else { +-#ifdef __OpenBSD__ +- gstreamerLib = dlopen("libgstreamer-0.10.so", RTLD_NOW | RTLD_LOCAL); +-#else +- gstreamerLib = dlopen("libgstreamer-0.10.so.0", RTLD_NOW | RTLD_LOCAL); +-#endif ++ gstreamerLib = dlopen("libgstreamer-" GST_API_VERSION LIB_GST_SUFFIX, RTLD_NOW | RTLD_LOCAL); + } + +- void *handles[] = { ++ void *handles[3] = { + gstreamerLib, +-#ifdef __OpenBSD__ +- dlopen("libgstapp-0.10.so", RTLD_NOW | RTLD_LOCAL), +- dlopen("libgstvideo-0.10.so", RTLD_NOW | RTLD_LOCAL) +-#else +- dlopen("libgstapp-0.10.so.0", RTLD_NOW | RTLD_LOCAL), +- dlopen("libgstvideo-0.10.so.0", RTLD_NOW | RTLD_LOCAL) +-#endif ++ dlopen("libgstapp-" GST_API_VERSION LIB_GST_SUFFIX, RTLD_NOW | RTLD_LOCAL), ++ dlopen("libgstvideo-" GST_API_VERSION LIB_GST_SUFFIX, RTLD_NOW | RTLD_LOCAL) + }; + + for (size_t i = 0; i < sizeof(handles) / sizeof(handles[0]); i++) { + if (!handles[i]) { ++ NS_WARNING("Couldn't link gstreamer libraries"); + goto fail; + } + } + + #define GST_FUNC(lib, symbol) \ + if (!(symbol = (typeof(symbol))dlsym(handles[lib], #symbol))) { \ ++ NS_WARNING("Couldn't link symbol " #symbol); \ + goto fail; \ + } + #define REPLACE_FUNC(symbol) symbol = symbol##_impl; +@@ -123,4 +129,18 @@ gst_message_unref_impl(GstMessage *msg) + gst_mini_object_unref(GST_MINI_OBJECT_CAST(msg)); + } + ++#if GST_VERSION_MAJOR == 1 ++void ++gst_sample_unref_impl(GstSample *sample) ++{ ++ gst_mini_object_unref(GST_MINI_OBJECT_CAST(sample)); ++} ++#endif ++ ++void ++gst_caps_unref_impl(GstCaps *caps) ++{ ++ gst_mini_object_unref(GST_MINI_OBJECT_CAST(caps)); ++} ++ + } +diff --git content/media/gstreamer/GStreamerLoader.h content/media/gstreamer/GStreamerLoader.h +index 2d801722..cd7fe6d 100644 +--- content/media/gstreamer/GStreamerLoader.h ++++ content/media/gstreamer/GStreamerLoader.h +@@ -22,6 +22,11 @@ + #include + #pragma GCC diagnostic pop + ++#if GST_VERSION_MAJOR == 1 ++#include ++#include ++#endif ++ + namespace mozilla { + + /* +@@ -42,4 +47,7 @@ bool load_gstreamer(); + + } + ++#undef GST_CAPS_ANY ++#define GST_CAPS_ANY (*_gst_caps_any) ++ + #endif // GStreamerLoader_h_ +diff --git content/media/gstreamer/GStreamerReader-0.10.cpp content/media/gstreamer/GStreamerReader-0.10.cpp +new file mode 100644 +index 0000000..fb98bde +--- /dev/null ++++ content/media/gstreamer/GStreamerReader-0.10.cpp +@@ -0,0 +1,198 @@ ++#include "nsError.h" ++#include "MediaDecoderStateMachine.h" ++#include "AbstractMediaDecoder.h" ++#include "MediaResource.h" ++#include "GStreamerReader.h" ++#include "GStreamerMozVideoBuffer.h" ++#include "GStreamerFormatHelper.h" ++#include "VideoUtils.h" ++#include "mozilla/dom/TimeRanges.h" ++#include "mozilla/Preferences.h" ++ ++using namespace mozilla; ++using mozilla::layers::PlanarYCbCrImage; ++using mozilla::layers::ImageContainer; ++ ++GstFlowReturn GStreamerReader::AllocateVideoBufferCb(GstPad* aPad, ++ guint64 aOffset, ++ guint aSize, ++ GstCaps* aCaps, ++ GstBuffer** aBuf) ++{ ++ GStreamerReader* reader = reinterpret_cast(gst_pad_get_element_private(aPad)); ++ return reader->AllocateVideoBuffer(aPad, aOffset, aSize, aCaps, aBuf); ++} ++ ++GstFlowReturn GStreamerReader::AllocateVideoBuffer(GstPad* aPad, ++ guint64 aOffset, ++ guint aSize, ++ GstCaps* aCaps, ++ GstBuffer** aBuf) ++{ ++ nsRefPtr image; ++ return AllocateVideoBufferFull(aPad, aOffset, aSize, aCaps, aBuf, image); ++} ++ ++GstFlowReturn GStreamerReader::AllocateVideoBufferFull(GstPad* aPad, ++ guint64 aOffset, ++ guint aSize, ++ GstCaps* aCaps, ++ GstBuffer** aBuf, ++ nsRefPtr& aImage) ++{ ++ /* allocate an image using the container */ ++ ImageContainer* container = mDecoder->GetImageContainer(); ++ ImageFormat format = PLANAR_YCBCR; ++ PlanarYCbCrImage* img = reinterpret_cast(container->CreateImage(&format, 1).get()); ++ nsRefPtr image = dont_AddRef(img); ++ ++ /* prepare a GstBuffer pointing to the underlying PlanarYCbCrImage buffer */ ++ GstBuffer* buf = GST_BUFFER(gst_moz_video_buffer_new()); ++ GST_BUFFER_SIZE(buf) = aSize; ++ /* allocate the actual YUV buffer */ ++ GST_BUFFER_DATA(buf) = image->AllocateAndGetNewBuffer(aSize); ++ ++ aImage = image; ++ ++ /* create a GstMozVideoBufferData to hold the image */ ++ GstMozVideoBufferData* bufferdata = new GstMozVideoBufferData(image); ++ ++ /* Attach bufferdata to our GstMozVideoBuffer, it will take care to free it */ ++ gst_moz_video_buffer_set_data(GST_MOZ_VIDEO_BUFFER(buf), bufferdata); ++ ++ *aBuf = buf; ++ return GST_FLOW_OK; ++} ++ ++gboolean GStreamerReader::EventProbe(GstPad* aPad, GstEvent* aEvent) ++{ ++ GstElement* parent = GST_ELEMENT(gst_pad_get_parent(aPad)); ++ switch(GST_EVENT_TYPE(aEvent)) { ++ case GST_EVENT_NEWSEGMENT: ++ { ++ gboolean update; ++ gdouble rate; ++ GstFormat format; ++ gint64 start, stop, position; ++ GstSegment* segment; ++ ++ /* Store the segments so we can convert timestamps to stream time, which ++ * is what the upper layers sync on. ++ */ ++ ReentrantMonitorAutoEnter mon(mGstThreadsMonitor); ++ gst_event_parse_new_segment(aEvent, &update, &rate, &format, ++ &start, &stop, &position); ++ if (parent == GST_ELEMENT(mVideoAppSink)) ++ segment = &mVideoSegment; ++ else ++ segment = &mAudioSegment; ++ gst_segment_set_newsegment(segment, update, rate, format, ++ start, stop, position); ++ break; ++ } ++ case GST_EVENT_FLUSH_STOP: ++ /* Reset on seeks */ ++ ResetDecode(); ++ break; ++ default: ++ break; ++ } ++ gst_object_unref(parent); ++ ++ return TRUE; ++} ++ ++gboolean GStreamerReader::EventProbeCb(GstPad* aPad, ++ GstEvent* aEvent, ++ gpointer aUserData) ++{ ++ GStreamerReader* reader = reinterpret_cast(aUserData); ++ return reader->EventProbe(aPad, aEvent); ++} ++ ++nsRefPtr GStreamerReader::GetImageFromBuffer(GstBuffer* aBuffer) ++{ ++ if (!GST_IS_MOZ_VIDEO_BUFFER (aBuffer)) ++ return nullptr; ++ ++ nsRefPtr image; ++ GstMozVideoBufferData* bufferdata = reinterpret_cast(gst_moz_video_buffer_get_data(GST_MOZ_VIDEO_BUFFER(aBuffer))); ++ image = bufferdata->mImage; ++ ++ PlanarYCbCrImage::Data data; ++ data.mPicX = data.mPicY = 0; ++ data.mPicSize = gfx::IntSize(mPicture.width, mPicture.height); ++ data.mStereoMode = STEREO_MODE_MONO; ++ ++ data.mYChannel = GST_BUFFER_DATA(aBuffer); ++ data.mYStride = gst_video_format_get_row_stride(mFormat, 0, mPicture.width); ++ data.mYSize = gfx::IntSize(data.mYStride, ++ gst_video_format_get_component_height(mFormat, 0, mPicture.height)); ++ data.mYSkip = 0; ++ data.mCbCrStride = gst_video_format_get_row_stride(mFormat, 1, mPicture.width); ++ data.mCbCrSize = gfx::IntSize(data.mCbCrStride, ++ gst_video_format_get_component_height(mFormat, 1, mPicture.height)); ++ data.mCbChannel = data.mYChannel + gst_video_format_get_component_offset(mFormat, 1, ++ mPicture.width, mPicture.height); ++ data.mCrChannel = data.mYChannel + gst_video_format_get_component_offset(mFormat, 2, ++ mPicture.width, mPicture.height); ++ data.mCbSkip = 0; ++ data.mCrSkip = 0; ++ ++ image->SetDataNoCopy(data); ++ ++ return image; ++} ++ ++void GStreamerReader::CopyIntoImageBuffer(GstBuffer* aBuffer, ++ GstBuffer** aOutBuffer, ++ nsRefPtr &aImage) ++{ ++ AllocateVideoBufferFull(nullptr, GST_BUFFER_OFFSET(aBuffer), ++ GST_BUFFER_SIZE(aBuffer), nullptr, aOutBuffer, aImage); ++ ++ gst_buffer_copy_metadata(*aOutBuffer, aBuffer, (GstBufferCopyFlags)GST_BUFFER_COPY_ALL); ++ memcpy(GST_BUFFER_DATA(*aOutBuffer), GST_BUFFER_DATA(aBuffer), GST_BUFFER_SIZE(*aOutBuffer)); ++ ++ aImage = GetImageFromBuffer(*aOutBuffer); ++} ++ ++GstCaps* GStreamerReader::BuildAudioSinkCaps() ++{ ++ GstCaps* caps; ++#ifdef IS_LITTLE_ENDIAN ++ int endianness = 1234; ++#else ++ int endianness = 4321; ++#endif ++ gint width; ++#ifdef MOZ_SAMPLE_TYPE_FLOAT32 ++ caps = gst_caps_from_string("audio/x-raw-float, channels={1,2}"); ++ width = 32; ++#else /* !MOZ_SAMPLE_TYPE_FLOAT32 */ ++ caps = gst_caps_from_string("audio/x-raw-int, channels={1,2}"); ++ width = 16; ++#endif ++ gst_caps_set_simple(caps, ++ "width", G_TYPE_INT, width, ++ "endianness", G_TYPE_INT, endianness, ++ NULL); ++ ++ return caps; ++} ++ ++void GStreamerReader::InstallPadCallbacks() ++{ ++ GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mVideoAppSink), "sink"); ++ gst_pad_add_event_probe(sinkpad, ++ G_CALLBACK(&GStreamerReader::EventProbeCb), this); ++ ++ gst_pad_set_bufferalloc_function(sinkpad, GStreamerReader::AllocateVideoBufferCb); ++ gst_pad_set_element_private(sinkpad, this); ++ gst_object_unref(sinkpad); ++ ++ sinkpad = gst_element_get_static_pad(GST_ELEMENT(mAudioAppSink), "sink"); ++ gst_pad_add_event_probe(sinkpad, ++ G_CALLBACK(&GStreamerReader::EventProbeCb), this); ++ gst_object_unref(sinkpad); ++} +diff --git content/media/gstreamer/GStreamerReader.cpp content/media/gstreamer/GStreamerReader.cpp +index 2be45dc..54509e3 100644 +--- content/media/gstreamer/GStreamerReader.cpp ++++ content/media/gstreamer/GStreamerReader.cpp +@@ -10,8 +10,10 @@ + #include "AbstractMediaDecoder.h" + #include "MediaResource.h" + #include "GStreamerReader.h" ++#if GST_VERSION_MAJOR >= 1 ++#include "GStreamerAllocator.h" ++#endif + #include "GStreamerFormatHelper.h" +-#include "GStreamerMozVideoBuffer.h" + #include "VideoUtils.h" + #include "mozilla/dom/TimeRanges.h" + #include "mozilla/Preferences.h" +@@ -31,14 +33,9 @@ extern PRLogModuleInfo* gMediaDecoderLog; + #define LOG(type, msg) + #endif + +-extern bool +-IsYV12Format(const VideoData::YCbCrBuffer::Plane& aYPlane, +- const VideoData::YCbCrBuffer::Plane& aCbPlane, +- const VideoData::YCbCrBuffer::Plane& aCrPlane); +- + static const unsigned int MAX_CHANNELS = 4; + // Let the demuxer work in pull mode for short files +-static const int SHORT_FILE_SIZE = 1024 * 1024; ++static const int SHORT_FILE_SIZE = 0; + // The default resource->Read() size when working in push mode + static const int DEFAULT_SOURCE_READ_SIZE = 50 * 1024; + +@@ -60,6 +57,10 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder) + : MediaDecoderReader(aDecoder), + mMP3FrameParser(aDecoder->GetResource()->GetLength()), + mUseParserDuration(false), ++#if GST_VERSION_MAJOR >= 1 ++ mAllocator(nullptr), ++ mBufferPool(nullptr), ++#endif + mPlayBin(nullptr), + mBus(nullptr), + mSource(nullptr), +@@ -72,6 +73,9 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder) + mAudioSinkBufferCount(0), + mGstThreadsMonitor("media.gst.threads"), + mReachedEos(false), ++#if GST_VERSION_MAJOR >= 1 ++ mConfigureAlignment(true), ++#endif + fpsNum(0), + fpsDen(0) + { +@@ -83,8 +87,12 @@ GStreamerReader::GStreamerReader(AbstractMediaDecoder* aDecoder) + + mSinkCallbacks.eos = GStreamerReader::EosCb; + mSinkCallbacks.new_preroll = GStreamerReader::NewPrerollCb; ++#if GST_VERSION_MAJOR >= 1 ++ mSinkCallbacks.new_sample = GStreamerReader::NewBufferCb; ++#else + mSinkCallbacks.new_buffer = GStreamerReader::NewBufferCb; + mSinkCallbacks.new_buffer_list = nullptr; ++#endif + + gst_segment_init(&mVideoSegment, GST_FORMAT_UNDEFINED); + gst_segment_init(&mAudioSegment, GST_FORMAT_UNDEFINED); +@@ -108,65 +116,67 @@ GStreamerReader::~GStreamerReader() + mAudioAppSink = nullptr; + gst_object_unref(mBus); + mBus = nullptr; ++#if GST_VERSION_MAJOR >= 1 ++ g_object_unref(mAllocator); ++ g_object_unref(mBufferPool); ++#endif + } + } +- ++ + nsresult GStreamerReader::Init(MediaDecoderReader* aCloneDonor) + { ++#if 0 + GError* error = nullptr; + if (!gst_init_check(0, 0, &error)) { + LOG(PR_LOG_ERROR, ("gst initialization failed: %s", error->message)); + g_error_free(error); + return NS_ERROR_FAILURE; + } ++#endif ++ GStreamerFormatHelper::Instance(); + ++#if GST_VERSION_MAJOR >= 1 ++ mAllocator = static_cast(g_object_new(GST_TYPE_MOZ_GFX_MEMORY_ALLOCATOR, NULL)); ++ moz_gfx_memory_allocator_set_reader(mAllocator, this); ++ ++ mBufferPool = static_cast(g_object_new(GST_TYPE_MOZ_GFX_BUFFER_POOL, NULL)); ++#endif ++ ++#if GST_VERSION_MAJOR >= 1 ++ mPlayBin = gst_element_factory_make("playbin", nullptr); ++#else + mPlayBin = gst_element_factory_make("playbin2", nullptr); ++#endif + if (!mPlayBin) { +- LOG(PR_LOG_ERROR, ("couldn't create playbin2")); ++ LOG(PR_LOG_ERROR, ("couldn't create playbin")); + return NS_ERROR_FAILURE; + } + g_object_set(mPlayBin, "buffer-size", 0, nullptr); + mBus = gst_pipeline_get_bus(GST_PIPELINE(mPlayBin)); + + mVideoSink = gst_parse_bin_from_description("capsfilter name=filter ! " +- "appsink name=videosink sync=true max-buffers=1 " ++ "appsink name=videosink sync=false max-buffers=1 " ++#if GST_VERSION_MAJOR >= 1 ++ "caps=video/x-raw,format=I420" ++#else + "caps=video/x-raw-yuv,format=(fourcc)I420" ++#endif + , TRUE, nullptr); + mVideoAppSink = GST_APP_SINK(gst_bin_get_by_name(GST_BIN(mVideoSink), + "videosink")); +- gst_app_sink_set_callbacks(mVideoAppSink, &mSinkCallbacks, +- (gpointer) this, nullptr); +- GstPad* sinkpad = gst_element_get_pad(GST_ELEMENT(mVideoAppSink), "sink"); +- gst_pad_add_event_probe(sinkpad, +- G_CALLBACK(&GStreamerReader::EventProbeCb), this); +- gst_object_unref(sinkpad); +- gst_pad_set_bufferalloc_function(sinkpad, GStreamerReader::AllocateVideoBufferCb); +- gst_pad_set_element_private(sinkpad, this); +- + mAudioSink = gst_parse_bin_from_description("capsfilter name=filter ! " +-#ifdef MOZ_SAMPLE_TYPE_FLOAT32 +- "appsink name=audiosink max-buffers=2 sync=false caps=audio/x-raw-float," +-#ifdef IS_LITTLE_ENDIAN +- "channels={1,2},width=32,endianness=1234", TRUE, nullptr); +-#else +- "channels={1,2},width=32,endianness=4321", TRUE, nullptr); +-#endif +-#else +- "appsink name=audiosink max-buffers=2 sync=false caps=audio/x-raw-int," +-#ifdef IS_LITTLE_ENDIAN +- "channels={1,2},width=16,endianness=1234", TRUE, nullptr); +-#else +- "channels={1,2},width=16,endianness=4321", TRUE, nullptr); +-#endif +-#endif ++ "appsink name=audiosink sync=false max-buffers=1", TRUE, nullptr); + mAudioAppSink = GST_APP_SINK(gst_bin_get_by_name(GST_BIN(mAudioSink), + "audiosink")); ++ GstCaps* caps = BuildAudioSinkCaps(); ++ g_object_set(mAudioAppSink, "caps", caps, nullptr); ++ gst_caps_unref(caps); ++ ++ gst_app_sink_set_callbacks(mVideoAppSink, &mSinkCallbacks, ++ (gpointer) this, nullptr); + gst_app_sink_set_callbacks(mAudioAppSink, &mSinkCallbacks, +- (gpointer) this, nullptr); +- sinkpad = gst_element_get_pad(GST_ELEMENT(mAudioAppSink), "sink"); +- gst_pad_add_event_probe(sinkpad, +- G_CALLBACK(&GStreamerReader::EventProbeCb), this); +- gst_object_unref(sinkpad); ++ (gpointer) this, nullptr); ++ InstallPadCallbacks(); + + g_object_set(mPlayBin, "uri", "appsrc://", + "video-sink", mVideoSink, +@@ -316,13 +326,13 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, + /* Little trick: set the target caps to "skip" so that playbin2 fails to + * find a decoder for the stream we want to skip. + */ +- GstCaps* filterCaps = gst_caps_new_simple ("skip", nullptr); ++ GstCaps* filterCaps = gst_caps_new_simple ("skip", nullptr, nullptr); + g_object_set(filter, "caps", filterCaps, nullptr); + gst_caps_unref(filterCaps); + gst_object_unref(filter); + } + +- /* start the pipeline */ ++ LOG(PR_LOG_DEBUG, ("starting metadata pipeline")); + gst_element_set_state(mPlayBin, GST_STATE_PAUSED); + + /* Wait for ASYNC_DONE, which is emitted when the pipeline is built, +@@ -343,6 +353,7 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, + gst_message_unref(message); + ret = NS_ERROR_FAILURE; + } else { ++ LOG(PR_LOG_DEBUG, ("read metadata pipeline prerolled")); + gst_message_unref(message); + ret = NS_OK; + break; +@@ -358,16 +369,20 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, + + /* FIXME: workaround for a bug in matroskademux. This seek makes matroskademux + * parse the index */ ++ LOG(PR_LOG_DEBUG, ("doing matroskademux seek hack")); + if (gst_element_seek_simple(mPlayBin, GST_FORMAT_TIME, + GST_SEEK_FLAG_FLUSH, 0)) { + /* after a seek we need to wait again for ASYNC_DONE */ +- message = gst_bus_timed_pop_filtered(mBus, GST_CLOCK_TIME_NONE, ++ message = gst_bus_timed_pop_filtered(mBus, 5 * GST_SECOND, + (GstMessageType)(GST_MESSAGE_ASYNC_DONE | GST_MESSAGE_ERROR)); +- if (GST_MESSAGE_TYPE(message) == GST_MESSAGE_ERROR) { ++ LOG(PR_LOG_DEBUG, ("matroskademux seek hack done")); ++ if (GST_MESSAGE_TYPE(message) != GST_MESSAGE_ASYNC_DONE) { + gst_element_set_state(mPlayBin, GST_STATE_NULL); + gst_message_unref(message); + return NS_ERROR_FAILURE; + } ++ } else { ++ LOG(PR_LOG_DEBUG, ("matroskademux seek hack failed (non fatal)")); + } + + bool isMP3 = mDecoder->GetResource()->GetContentType().EqualsASCII(AUDIO_MP3); +@@ -377,7 +392,6 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, + + /* report the duration */ + gint64 duration; +- GstFormat format = GST_FORMAT_TIME; + + if (isMP3 && mMP3FrameParser.IsMP3()) { + // The MP3FrameParser has reported a duration; use that over the gstreamer +@@ -386,18 +400,25 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, + mUseParserDuration = true; + mLastParserDuration = mMP3FrameParser.GetDuration(); + mDecoder->SetMediaDuration(mLastParserDuration); +- +- } else if (gst_element_query_duration(GST_ELEMENT(mPlayBin), +- &format, &duration) && format == GST_FORMAT_TIME) { +- // Otherwise use the gstreamer duration. +- ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); +- LOG(PR_LOG_DEBUG, ("returning duration %" GST_TIME_FORMAT, +- GST_TIME_ARGS (duration))); +- duration = GST_TIME_AS_USECONDS (duration); +- mDecoder->SetMediaDuration(duration); +- + } else { +- mDecoder->SetMediaSeekable(false); ++ LOG(PR_LOG_DEBUG, ("querying duration")); ++ // Otherwise use the gstreamer duration. ++#if GST_VERSION_MAJOR >= 1 ++ if (gst_element_query_duration(GST_ELEMENT(mPlayBin), ++ GST_FORMAT_TIME, &duration)) { ++#else ++ GstFormat format = GST_FORMAT_TIME; ++ if (gst_element_query_duration(GST_ELEMENT(mPlayBin), ++ &format, &duration) && format == GST_FORMAT_TIME) { ++#endif ++ ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); ++ LOG(PR_LOG_DEBUG, ("have duration %" GST_TIME_FORMAT, ++ GST_TIME_ARGS (duration))); ++ duration = GST_TIME_AS_USECONDS (duration); ++ mDecoder->SetMediaDuration(duration); ++ } else { ++ mDecoder->SetMediaSeekable(false); ++ } + } + + int n_video = 0, n_audio = 0; +@@ -410,7 +431,11 @@ nsresult GStreamerReader::ReadMetadata(MediaInfo* aInfo, + *aTags = nullptr; + + // Watch the pipeline for fatal errors ++#if GST_VERSION_MAJOR >= 1 ++ gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this, NULL); ++#else + gst_bus_set_sync_handler(mBus, GStreamerReader::ErrorCb, this); ++#endif + + /* set the pipeline to PLAYING so that it starts decoding and queueing data in + * the appsinks */ +@@ -424,19 +449,35 @@ nsresult GStreamerReader::CheckSupportedFormats() + bool done = false; + bool unsupported = false; + +- GstIterator *it = gst_bin_iterate_recurse(GST_BIN(mPlayBin)); ++ GstIterator* it = gst_bin_iterate_recurse(GST_BIN(mPlayBin)); + while (!done) { ++ GstIteratorResult res; + GstElement* element; +- GstIteratorResult res = gst_iterator_next(it, (void **)&element); ++ ++#if GST_VERSION_MAJOR >= 1 ++ GValue value = {0,}; ++ res = gst_iterator_next(it, &value); ++#else ++ res = gst_iterator_next(it, (void **) &element); ++#endif + switch(res) { + case GST_ITERATOR_OK: +- { ++ { ++#if GST_VERSION_MAJOR >= 1 ++ element = GST_ELEMENT (g_value_get_object (&value)); ++#endif + GstElementFactory* factory = gst_element_get_factory(element); + if (factory) { + const char* klass = gst_element_factory_get_klass(factory); +- GstPad* pad = gst_element_get_pad(element, "sink"); ++ GstPad* pad = gst_element_get_static_pad(element, "sink"); + if (pad) { +- GstCaps* caps = gst_pad_get_negotiated_caps(pad); ++ GstCaps* caps; ++ ++#if GST_VERSION_MAJOR >= 1 ++ caps = gst_pad_get_current_caps(pad); ++#else ++ caps = gst_pad_get_negotiated_caps(pad); ++#endif + + if (caps) { + /* check for demuxers but ignore elements like id3demux */ +@@ -451,7 +492,11 @@ nsresult GStreamerReader::CheckSupportedFormats() + } + } + ++#if GST_VERSION_MAJOR >= 1 ++ g_value_unset (&value); ++#else + gst_object_unref(element); ++#endif + done = unsupported; + break; + } +@@ -475,16 +520,23 @@ nsresult GStreamerReader::ResetDecode() + { + nsresult res = NS_OK; + ++ LOG(PR_LOG_DEBUG, ("reset decode")); ++ + if (NS_FAILED(MediaDecoderReader::ResetDecode())) { + res = NS_ERROR_FAILURE; + } +- ++ + mVideoQueue.Reset(); + mAudioQueue.Reset(); + + mVideoSinkBufferCount = 0; + mAudioSinkBufferCount = 0; + mReachedEos = false; ++#if GST_VERSION_MAJOR >= 1 ++ mConfigureAlignment = true; ++#endif ++ ++ LOG(PR_LOG_DEBUG, ("reset decode done")); + + return res; + } +@@ -524,24 +576,43 @@ bool GStreamerReader::DecodeAudioData() + } + } + ++#if GST_VERSION_MAJOR >= 1 ++ GstSample *sample = gst_app_sink_pull_sample(mAudioAppSink); ++ buffer = gst_buffer_ref(gst_sample_get_buffer(sample)); ++ gst_sample_unref(sample); ++#else + buffer = gst_app_sink_pull_buffer(mAudioAppSink); ++#endif ++ + mAudioSinkBufferCount--; + } + + int64_t timestamp = GST_BUFFER_TIMESTAMP(buffer); + timestamp = gst_segment_to_stream_time(&mAudioSegment, + GST_FORMAT_TIME, timestamp); ++ + timestamp = GST_TIME_AS_USECONDS(timestamp); + int64_t duration = 0; + if (GST_CLOCK_TIME_IS_VALID(GST_BUFFER_DURATION(buffer))) + duration = GST_TIME_AS_USECONDS(GST_BUFFER_DURATION(buffer)); + + int64_t offset = GST_BUFFER_OFFSET(buffer); ++#if GST_VERSION_MAJOR >= 1 ++ GstMapInfo info; ++ gst_buffer_map(buffer, &info, GST_MAP_READ); ++ unsigned int size = info.size; ++#else + unsigned int size = GST_BUFFER_SIZE(buffer); ++#endif + int32_t frames = (size / sizeof(AudioDataValue)) / mInfo.mAudio.mChannels; + ssize_t outSize = static_cast(size / sizeof(AudioDataValue)); + nsAutoArrayPtr data(new AudioDataValue[outSize]); ++#if GST_VERSION_MAJOR >= 1 ++ memcpy(data, info.data, info.size); ++ gst_buffer_unmap(buffer, &info); ++#else + memcpy(data, GST_BUFFER_DATA(buffer), GST_BUFFER_SIZE(buffer)); ++#endif + AudioData* audio = new AudioData(offset, timestamp, duration, + frames, data.forget(), mInfo.mAudio.mChannels); + +@@ -550,9 +621,9 @@ bool GStreamerReader::DecodeAudioData() + + return true; + } +- ++ + bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip, +- int64_t aTimeThreshold) ++ int64_t aTimeThreshold) + { + NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread."); + +@@ -589,11 +660,17 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip, + + mDecoder->NotifyDecodedFrames(0, 1); + ++#if GST_VERSION_MAJOR >= 1 ++ GstSample *sample = gst_app_sink_pull_sample(mVideoAppSink); ++ buffer = gst_buffer_ref(gst_sample_get_buffer(sample)); ++ gst_sample_unref(sample); ++#else + buffer = gst_app_sink_pull_buffer(mVideoAppSink); ++#endif + mVideoSinkBufferCount--; + } + +- bool isKeyframe = !GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DISCONT); ++ bool isKeyframe = !GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DELTA_UNIT); + if ((aKeyFrameSkip && !isKeyframe)) { + gst_buffer_unref(buffer); + return true; +@@ -609,10 +686,18 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip, + "frame has invalid timestamp"); + + timestamp = GST_TIME_AS_USECONDS(timestamp); ++ int64_t duration; ++ if (GST_CLOCK_TIME_IS_VALID(GST_BUFFER_DURATION(buffer))) ++ duration = GST_TIME_AS_USECONDS(GST_BUFFER_DURATION(buffer)); ++ else if (fpsNum && fpsDen) ++ /* add 1-frame duration */ ++ duration = gst_util_uint64_scale(GST_USECOND, fpsDen, fpsNum); ++ + if (timestamp < aTimeThreshold) { + LOG(PR_LOG_DEBUG, ("skipping frame %" GST_TIME_FORMAT + " threshold %" GST_TIME_FORMAT, +- GST_TIME_ARGS(timestamp), GST_TIME_ARGS(aTimeThreshold))); ++ GST_TIME_ARGS(timestamp * 1000), ++ GST_TIME_ARGS(aTimeThreshold * 1000))); + gst_buffer_unref(buffer); + return true; + } +@@ -621,61 +706,36 @@ bool GStreamerReader::DecodeVideoFrame(bool &aKeyFrameSkip, + /* no more frames */ + return false; + +- int64_t duration = 0; +- if (GST_CLOCK_TIME_IS_VALID(GST_BUFFER_DURATION(buffer))) +- duration = GST_TIME_AS_USECONDS(GST_BUFFER_DURATION(buffer)); +- else if (fpsNum && fpsDen) +- /* 1-frame duration */ +- duration = gst_util_uint64_scale(GST_USECOND, fpsNum, fpsDen); +- +- nsRefPtr image; +- GstMozVideoBufferData* bufferdata = reinterpret_cast +- GST_IS_MOZ_VIDEO_BUFFER(buffer)?gst_moz_video_buffer_get_data(GST_MOZ_VIDEO_BUFFER(buffer)):nullptr; +- +- if(bufferdata) +- image = bufferdata->mImage; ++#if GST_VERSION_MAJOR >= 1 ++ if (mConfigureAlignment && buffer->pool) { ++ GstStructure *config = gst_buffer_pool_get_config(buffer->pool); ++ GstVideoAlignment align; ++ if (gst_buffer_pool_config_get_video_alignment(config, &align)) ++ gst_video_info_align(&mVideoInfo, &align); ++ gst_structure_free(config); ++ mConfigureAlignment = false; ++ } ++#endif + ++ nsRefPtr image = GetImageFromBuffer(buffer); + if (!image) { + /* Ugh, upstream is not calling gst_pad_alloc_buffer(). Fallback to + * allocating a PlanarYCbCrImage backed GstBuffer here and memcpy. + */ + GstBuffer* tmp = nullptr; +- AllocateVideoBufferFull(nullptr, GST_BUFFER_OFFSET(buffer), +- GST_BUFFER_SIZE(buffer), nullptr, &tmp, image); +- +- /* copy */ +- gst_buffer_copy_metadata(tmp, buffer, (GstBufferCopyFlags)GST_BUFFER_COPY_ALL); +- memcpy(GST_BUFFER_DATA(tmp), GST_BUFFER_DATA(buffer), +- GST_BUFFER_SIZE(tmp)); ++ CopyIntoImageBuffer(buffer, &tmp, image); + gst_buffer_unref(buffer); + buffer = tmp; + } + +- guint8* data = GST_BUFFER_DATA(buffer); +- +- int width = mPicture.width; +- int height = mPicture.height; +- GstVideoFormat format = mFormat; +- +- VideoData::YCbCrBuffer b; +- for(int i = 0; i < 3; i++) { +- b.mPlanes[i].mData = data + gst_video_format_get_component_offset(format, i, +- width, height); +- b.mPlanes[i].mStride = gst_video_format_get_row_stride(format, i, width); +- b.mPlanes[i].mHeight = gst_video_format_get_component_height(format, +- i, height); +- b.mPlanes[i].mWidth = gst_video_format_get_component_width(format, +- i, width); +- b.mPlanes[i].mOffset = 0; +- b.mPlanes[i].mSkip = 0; +- } +- +- isKeyframe = !GST_BUFFER_FLAG_IS_SET(buffer, GST_BUFFER_FLAG_DELTA_UNIT); + int64_t offset = mDecoder->GetResource()->Tell(); // Estimate location in media. +- VideoData* video = VideoData::Create(mInfo.mVideo, image, offset, +- timestamp, duration, b, +- isKeyframe, -1, mPicture); ++ VideoData* video = VideoData::CreateFromImage(mInfo.mVideo, ++ mDecoder->GetImageContainer(), ++ offset, timestamp, duration, ++ static_cast(image.get()), ++ isKeyframe, -1, mPicture); + mVideoQueue.Push(video); ++ + gst_buffer_unref(buffer); + + return true; +@@ -698,6 +758,10 @@ nsresult GStreamerReader::Seek(int64_t aTarget, + return NS_ERROR_FAILURE; + } + LOG(PR_LOG_DEBUG, ("seek succeeded")); ++ GstMessage* message = gst_bus_timed_pop_filtered(mBus, GST_CLOCK_TIME_NONE, ++ (GstMessageType)(GST_MESSAGE_ASYNC_DONE | GST_MESSAGE_ERROR)); ++ gst_message_unref(message); ++ LOG(PR_LOG_DEBUG, ("seek completed")); + + return DecodeToTarget(aTarget); + } +@@ -709,7 +773,9 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered, + return NS_OK; + } + ++#if GST_VERSION_MAJOR == 0 + GstFormat format = GST_FORMAT_TIME; ++#endif + MediaResource* resource = mDecoder->GetResource(); + nsTArray ranges; + resource->GetCachedRanges(ranges); +@@ -731,12 +797,21 @@ nsresult GStreamerReader::GetBuffered(dom::TimeRanges* aBuffered, + int64_t endOffset = ranges[index].mEnd; + gint64 startTime, endTime; + ++#if GST_VERSION_MAJOR >= 1 ++ if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES, ++ startOffset, GST_FORMAT_TIME, &startTime)) ++ continue; ++ if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES, ++ endOffset, GST_FORMAT_TIME, &endTime)) ++ continue; ++#else + if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES, + startOffset, &format, &startTime) || format != GST_FORMAT_TIME) + continue; + if (!gst_element_query_convert(GST_ELEMENT(mPlayBin), GST_FORMAT_BYTES, + endOffset, &format, &endTime) || format != GST_FORMAT_TIME) + continue; ++#endif + + double start = (double) GST_TIME_AS_USECONDS (startTime) / GST_MSECOND; + double end = (double) GST_TIME_AS_USECONDS (endTime) / GST_MSECOND; +@@ -755,7 +830,13 @@ void GStreamerReader::ReadAndPushData(guint aLength) + nsresult rv = NS_OK; + + GstBuffer* buffer = gst_buffer_new_and_alloc(aLength); ++#if GST_VERSION_MAJOR >= 1 ++ GstMapInfo info; ++ gst_buffer_map(buffer, &info, GST_MAP_WRITE); ++ guint8 *data = info.data; ++#else + guint8* data = GST_BUFFER_DATA(buffer); ++#endif + uint32_t size = 0, bytesRead = 0; + while(bytesRead < aLength) { + rv = resource->Read(reinterpret_cast(data + bytesRead), +@@ -766,14 +847,19 @@ void GStreamerReader::ReadAndPushData(guint aLength) + bytesRead += size; + } + ++#if GST_VERSION_MAJOR >= 1 ++ gst_buffer_unmap(buffer, &info); ++ gst_buffer_set_size(buffer, bytesRead); ++#else + GST_BUFFER_SIZE(buffer) = bytesRead; ++#endif + + GstFlowReturn ret = gst_app_src_push_buffer(mSource, gst_buffer_ref(buffer)); + if (ret != GST_FLOW_OK) { + LOG(PR_LOG_ERROR, ("ReadAndPushData push ret %s", gst_flow_get_name(ret))); + } + +- if (GST_BUFFER_SIZE (buffer) < aLength) { ++ if (bytesRead < aLength) { + /* If we read less than what we wanted, we reached the end */ + gst_app_src_end_of_stream(mSource); + } +@@ -786,8 +872,13 @@ int64_t GStreamerReader::QueryDuration() + gint64 duration = 0; + GstFormat format = GST_FORMAT_TIME; + ++#if GST_VERSION_MAJOR >= 1 ++ if (gst_element_query_duration(GST_ELEMENT(mPlayBin), ++ format, &duration)) { ++#else + if (gst_element_query_duration(GST_ELEMENT(mPlayBin), + &format, &duration)) { ++#endif + if (format == GST_FORMAT_TIME) { + LOG(PR_LOG_DEBUG, ("pipeline duration %" GST_TIME_FORMAT, + GST_TIME_ARGS (duration))); +@@ -866,103 +957,6 @@ gboolean GStreamerReader::SeekData(GstAppSrc* aSrc, guint64 aOffset) + return NS_SUCCEEDED(rv); + } + +-gboolean GStreamerReader::EventProbeCb(GstPad* aPad, +- GstEvent* aEvent, +- gpointer aUserData) +-{ +- GStreamerReader* reader = reinterpret_cast(aUserData); +- return reader->EventProbe(aPad, aEvent); +-} +- +-gboolean GStreamerReader::EventProbe(GstPad* aPad, GstEvent* aEvent) +-{ +- GstElement* parent = GST_ELEMENT(gst_pad_get_parent(aPad)); +- switch(GST_EVENT_TYPE(aEvent)) { +- case GST_EVENT_NEWSEGMENT: +- { +- gboolean update; +- gdouble rate; +- GstFormat format; +- gint64 start, stop, position; +- GstSegment* segment; +- +- /* Store the segments so we can convert timestamps to stream time, which +- * is what the upper layers sync on. +- */ +- ReentrantMonitorAutoEnter mon(mGstThreadsMonitor); +- gst_event_parse_new_segment(aEvent, &update, &rate, &format, +- &start, &stop, &position); +- if (parent == GST_ELEMENT(mVideoAppSink)) +- segment = &mVideoSegment; +- else +- segment = &mAudioSegment; +- gst_segment_set_newsegment(segment, update, rate, format, +- start, stop, position); +- break; +- } +- case GST_EVENT_FLUSH_STOP: +- /* Reset on seeks */ +- ResetDecode(); +- break; +- default: +- break; +- } +- gst_object_unref(parent); +- +- return TRUE; +-} +- +-GstFlowReturn GStreamerReader::AllocateVideoBufferFull(GstPad* aPad, +- guint64 aOffset, +- guint aSize, +- GstCaps* aCaps, +- GstBuffer** aBuf, +- nsRefPtr& aImage) +-{ +- /* allocate an image using the container */ +- ImageContainer* container = mDecoder->GetImageContainer(); +- ImageFormat format = PLANAR_YCBCR; +- PlanarYCbCrImage* img = reinterpret_cast(container->CreateImage(&format, 1).get()); +- nsRefPtr image = dont_AddRef(img); +- +- /* prepare a GstBuffer pointing to the underlying PlanarYCbCrImage buffer */ +- GstBuffer* buf = GST_BUFFER(gst_moz_video_buffer_new()); +- GST_BUFFER_SIZE(buf) = aSize; +- /* allocate the actual YUV buffer */ +- GST_BUFFER_DATA(buf) = image->AllocateAndGetNewBuffer(aSize); +- +- aImage = image; +- +- /* create a GstMozVideoBufferData to hold the image */ +- GstMozVideoBufferData* bufferdata = new GstMozVideoBufferData(image); +- +- /* Attach bufferdata to our GstMozVideoBuffer, it will take care to free it */ +- gst_moz_video_buffer_set_data(GST_MOZ_VIDEO_BUFFER(buf), bufferdata); +- +- *aBuf = buf; +- return GST_FLOW_OK; +-} +- +-GstFlowReturn GStreamerReader::AllocateVideoBufferCb(GstPad* aPad, +- guint64 aOffset, +- guint aSize, +- GstCaps* aCaps, +- GstBuffer** aBuf) +-{ +- GStreamerReader* reader = reinterpret_cast(gst_pad_get_element_private(aPad)); +- return reader->AllocateVideoBuffer(aPad, aOffset, aSize, aCaps, aBuf); +-} +- +-GstFlowReturn GStreamerReader::AllocateVideoBuffer(GstPad* aPad, +- guint64 aOffset, +- guint aSize, +- GstCaps* aCaps, +- GstBuffer** aBuf) +-{ +- nsRefPtr image; +- return AllocateVideoBufferFull(aPad, aOffset, aSize, aCaps, aBuf, image); +-} +- + GstFlowReturn GStreamerReader::NewPrerollCb(GstAppSink* aSink, + gpointer aUserData) + { +@@ -979,8 +973,12 @@ void GStreamerReader::AudioPreroll() + { + /* The first audio buffer has reached the audio sink. Get rate and channels */ + LOG(PR_LOG_DEBUG, ("Audio preroll")); +- GstPad* sinkpad = gst_element_get_pad(GST_ELEMENT(mAudioAppSink), "sink"); ++ GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mAudioAppSink), "sink"); ++#if GST_VERSION_MAJOR >= 1 ++ GstCaps *caps = gst_pad_get_current_caps(sinkpad); ++#else + GstCaps* caps = gst_pad_get_negotiated_caps(sinkpad); ++#endif + GstStructure* s = gst_caps_get_structure(caps, 0); + mInfo.mAudio.mRate = mInfo.mAudio.mChannels = 0; + gst_structure_get_int(s, "rate", (gint*) &mInfo.mAudio.mRate); +@@ -998,9 +996,18 @@ void GStreamerReader::VideoPreroll() + { + /* The first video buffer has reached the video sink. Get width and height */ + LOG(PR_LOG_DEBUG, ("Video preroll")); +- GstPad* sinkpad = gst_element_get_pad(GST_ELEMENT(mVideoAppSink), "sink"); ++ GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mVideoAppSink), "sink"); ++#if GST_VERSION_MAJOR >= 1 ++ GstCaps* caps = gst_pad_get_current_caps(sinkpad); ++ memset (&mVideoInfo, 0, sizeof (mVideoInfo)); ++ gst_video_info_from_caps(&mVideoInfo, caps); ++ mFormat = mVideoInfo.finfo->format; ++ mPicture.width = mVideoInfo.width; ++ mPicture.height = mVideoInfo.height; ++#else + GstCaps* caps = gst_pad_get_negotiated_caps(sinkpad); + gst_video_format_parse_caps(caps, &mFormat, &mPicture.width, &mPicture.height); ++#endif + GstStructure* structure = gst_caps_get_structure(caps, 0); + gst_structure_get_fraction(structure, "framerate", &fpsNum, &fpsDen); + NS_ASSERTION(mPicture.width && mPicture.height, "invalid video resolution"); +@@ -1029,6 +1036,7 @@ void GStreamerReader::NewVideoBuffer() + /* We have a new video buffer queued in the video sink. Increment the counter + * and notify the decode thread potentially blocked in DecodeVideoFrame + */ ++ + mDecoder->NotifyDecodedFrames(1, 0); + mVideoSinkBufferCount++; + mon.NotifyAll(); +@@ -1095,5 +1103,199 @@ void GStreamerReader::NotifyDataArrived(const char *aBuffer, + } + } + ++#if GST_VERSION_MAJOR >= 1 ++GstCaps* GStreamerReader::BuildAudioSinkCaps() ++{ ++ GstCaps* caps = gst_caps_from_string("audio/x-raw, channels={1,2}"); ++ const char* format; ++#ifdef MOZ_SAMPLE_TYPE_FLOAT32 ++#ifdef IS_LITTLE_ENDIAN ++ format = "F32LE"; ++#else ++ format = "F32BE"; ++#endif ++#else /* !MOZ_SAMPLE_TYPE_FLOAT32 */ ++#ifdef IS_LITTLE_ENDIAN ++ format = "S16LE"; ++#else ++ format = "S16BE"; ++#endif ++#endif ++ gst_caps_set_simple(caps, "format", G_TYPE_STRING, format, NULL); ++ ++ return caps; ++} ++ ++void GStreamerReader::InstallPadCallbacks() ++{ ++ GstPad* sinkpad = gst_element_get_static_pad(GST_ELEMENT(mVideoAppSink), "sink"); ++ ++ gst_pad_add_probe(sinkpad, ++ (GstPadProbeType) (GST_PAD_PROBE_TYPE_SCHEDULING | ++ GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM | ++ GST_PAD_PROBE_TYPE_EVENT_UPSTREAM | ++ GST_PAD_PROBE_TYPE_EVENT_FLUSH), ++ &GStreamerReader::EventProbeCb, this, nullptr); ++ gst_pad_add_probe(sinkpad, GST_PAD_PROBE_TYPE_QUERY_DOWNSTREAM, ++ GStreamerReader::QueryProbeCb, nullptr, nullptr); ++ ++ gst_pad_set_element_private(sinkpad, this); ++ gst_object_unref(sinkpad); ++ ++ sinkpad = gst_element_get_static_pad(GST_ELEMENT(mAudioAppSink), "sink"); ++ gst_pad_add_probe(sinkpad, ++ (GstPadProbeType) (GST_PAD_PROBE_TYPE_SCHEDULING | ++ GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM | ++ GST_PAD_PROBE_TYPE_EVENT_UPSTREAM | ++ GST_PAD_PROBE_TYPE_EVENT_FLUSH), ++ &GStreamerReader::EventProbeCb, this, nullptr); ++ gst_object_unref(sinkpad); ++} ++ ++GstPadProbeReturn GStreamerReader::EventProbeCb(GstPad *aPad, ++ GstPadProbeInfo *aInfo, ++ gpointer aUserData) ++{ ++ GStreamerReader *reader = (GStreamerReader *) aUserData; ++ GstEvent *aEvent = (GstEvent *)aInfo->data; ++ return reader->EventProbe(aPad, aEvent); ++} ++ ++GstPadProbeReturn GStreamerReader::EventProbe(GstPad *aPad, GstEvent *aEvent) ++{ ++ GstElement* parent = GST_ELEMENT(gst_pad_get_parent(aPad)); ++ ++ LOG(PR_LOG_DEBUG, ("event probe %s", GST_EVENT_TYPE_NAME (aEvent))); ++ ++ switch(GST_EVENT_TYPE(aEvent)) { ++ case GST_EVENT_SEGMENT: ++ { ++ const GstSegment *newSegment; ++ GstSegment* segment; ++ ++ /* Store the segments so we can convert timestamps to stream time, which ++ * is what the upper layers sync on. ++ */ ++ ReentrantMonitorAutoEnter mon(mGstThreadsMonitor); ++#if GST_VERSION_MINOR <= 1 && GST_VERSION_MICRO < 1 ++ ResetDecode(); ++#endif ++ gst_event_parse_segment(aEvent, &newSegment); ++ if (parent == GST_ELEMENT(mVideoAppSink)) ++ segment = &mVideoSegment; ++ else ++ segment = &mAudioSegment; ++ gst_segment_copy_into (newSegment, segment); ++ break; ++ } ++ case GST_EVENT_FLUSH_STOP: ++ /* Reset on seeks */ ++ ResetDecode(); ++ break; ++ default: ++ break; ++ } ++ gst_object_unref(parent); ++ ++ return GST_PAD_PROBE_OK; ++} ++ ++GstPadProbeReturn GStreamerReader::QueryProbeCb(GstPad* aPad, GstPadProbeInfo* aInfo, gpointer aUserData) ++{ ++ GStreamerReader* reader = reinterpret_cast(gst_pad_get_element_private(aPad)); ++ return reader->QueryProbe(aPad, aInfo, aUserData); ++} ++ ++GstPadProbeReturn GStreamerReader::QueryProbe(GstPad* aPad, GstPadProbeInfo* aInfo, gpointer aUserData) ++{ ++ GstQuery *query = gst_pad_probe_info_get_query(aInfo); ++ GstPadProbeReturn ret = GST_PAD_PROBE_OK; ++ ++ switch (GST_QUERY_TYPE (query)) { ++ case GST_QUERY_ALLOCATION: ++ GstCaps *caps; ++ GstVideoInfo info; ++ gboolean need_pool; ++ ++ gst_query_parse_allocation(query, &caps, &need_pool); ++ gst_video_info_init(&info); ++ gst_video_info_from_caps(&info, caps); ++ gst_query_add_allocation_param(query, mAllocator, NULL); ++ gst_query_add_allocation_pool(query, mBufferPool, info.size, 0, 0); ++ gst_query_add_allocation_meta(query, GST_VIDEO_META_API_TYPE, NULL); ++ break; ++ default: ++ break; ++ } ++ ++ return ret; ++} ++ ++void GStreamerReader::ImageDataFromVideoFrame(GstVideoFrame *aFrame, ++ PlanarYCbCrImage::Data *aData) ++{ ++ NS_ASSERTION(GST_VIDEO_INFO_IS_YUV(&mVideoInfo), ++ "Non-YUV video frame formats not supported"); ++ NS_ASSERTION(GST_VIDEO_FRAME_N_COMPONENTS(aFrame) == 3, ++ "Unsupported number of components in video frame"); ++ ++ aData->mPicX = aData->mPicY = 0; ++ aData->mPicSize = gfx::IntSize(mPicture.width, mPicture.height); ++ aData->mStereoMode = STEREO_MODE_MONO; ++ ++ aData->mYChannel = GST_VIDEO_FRAME_COMP_DATA(aFrame, 0); ++ aData->mYStride = GST_VIDEO_FRAME_COMP_STRIDE(aFrame, 0); ++ aData->mYSize = gfx::IntSize(GST_VIDEO_FRAME_COMP_WIDTH(aFrame, 0), ++ GST_VIDEO_FRAME_COMP_HEIGHT(aFrame, 0)); ++ aData->mYSkip = GST_VIDEO_FRAME_COMP_PSTRIDE(aFrame, 0) - 1; ++ aData->mCbCrStride = GST_VIDEO_FRAME_COMP_STRIDE(aFrame, 1); ++ aData->mCbCrSize = gfx::IntSize(GST_VIDEO_FRAME_COMP_WIDTH(aFrame, 1), ++ GST_VIDEO_FRAME_COMP_HEIGHT(aFrame, 1)); ++ aData->mCbChannel = GST_VIDEO_FRAME_COMP_DATA(aFrame, 1); ++ aData->mCrChannel = GST_VIDEO_FRAME_COMP_DATA(aFrame, 2); ++ aData->mCbSkip = GST_VIDEO_FRAME_COMP_PSTRIDE(aFrame, 1) - 1; ++ aData->mCrSkip = GST_VIDEO_FRAME_COMP_PSTRIDE(aFrame, 2) - 1; ++} ++ ++nsRefPtr GStreamerReader::GetImageFromBuffer(GstBuffer* aBuffer) ++{ ++ nsRefPtr image = nullptr; ++ ++ if (gst_buffer_n_memory(aBuffer) == 1) { ++ GstMemory* mem = gst_buffer_peek_memory(aBuffer, 0); ++ if (GST_IS_MOZ_GFX_MEMORY_ALLOCATOR(mem->allocator)) { ++ image = moz_gfx_memory_get_image(mem); ++ ++ GstVideoFrame frame; ++ gst_video_frame_map(&frame, &mVideoInfo, aBuffer, GST_MAP_READ); ++ PlanarYCbCrImage::Data data; ++ ImageDataFromVideoFrame(&frame, &data); ++ image->SetDataNoCopy(data); ++ gst_video_frame_unmap(&frame); ++ } ++ } ++ ++ return image; ++} ++ ++void GStreamerReader::CopyIntoImageBuffer(GstBuffer* aBuffer, ++ GstBuffer** aOutBuffer, ++ nsRefPtr &image) ++{ ++ *aOutBuffer = gst_buffer_new_allocate(mAllocator, gst_buffer_get_size(aBuffer), NULL); ++ GstMemory *mem = gst_buffer_peek_memory(*aOutBuffer, 0); ++ GstMapInfo map_info; ++ gst_memory_map(mem, &map_info, GST_MAP_WRITE); ++ gst_buffer_extract(aBuffer, 0, map_info.data, gst_buffer_get_size(aBuffer)); ++ gst_memory_unmap(mem, &map_info); ++ ++ /* create a new gst buffer with the newly created memory and copy the ++ * metadata over from the incoming buffer */ ++ gst_buffer_copy_into(*aOutBuffer, aBuffer, ++ (GstBufferCopyFlags)(GST_BUFFER_COPY_METADATA), 0, -1); ++ image = GetImageFromBuffer(*aOutBuffer); ++} ++#endif ++ + } // namespace mozilla + +diff --git content/media/gstreamer/GStreamerReader.h content/media/gstreamer/GStreamerReader.h +index 1e30bed..6a90702 100644 +--- content/media/gstreamer/GStreamerReader.h ++++ content/media/gstreamer/GStreamerReader.h +@@ -22,6 +22,7 @@ + + #include "MediaDecoderReader.h" + #include "MP3FrameParser.h" ++#include "ImageContainer.h" + #include "nsRect.h" + + namespace mozilla { +@@ -30,10 +31,6 @@ namespace dom { + class TimeRanges; + } + +-namespace layers { +-class PlanarYCbCrImage; +-} +- + class AbstractMediaDecoder; + + class GStreamerReader : public MediaDecoderReader +@@ -67,10 +64,20 @@ public: + return mInfo.HasVideo(); + } + ++ layers::ImageContainer* GetImageContainer() { return mDecoder->GetImageContainer(); } ++ + private: + + void ReadAndPushData(guint aLength); + int64_t QueryDuration(); ++ nsRefPtr GetImageFromBuffer(GstBuffer* aBuffer); ++ void CopyIntoImageBuffer(GstBuffer *aBuffer, GstBuffer** aOutBuffer, nsRefPtr &image); ++ GstCaps* BuildAudioSinkCaps(); ++ void InstallPadCallbacks(); ++ ++#if GST_VERSION_MAJOR >= 1 ++ void ImageDataFromVideoFrame(GstVideoFrame *aFrame, layers::PlanarYCbCrImage::Data *aData); ++#endif + + /* Called once the pipeline is setup to check that the stream only contains + * supported formats +@@ -105,20 +112,31 @@ private: + gboolean SeekData(GstAppSrc* aSrc, guint64 aOffset); + + /* Called when events reach the sinks. See inline comments */ ++#if GST_VERSION_MAJOR == 1 ++ static GstPadProbeReturn EventProbeCb(GstPad *aPad, GstPadProbeInfo *aInfo, gpointer aUserData); ++ GstPadProbeReturn EventProbe(GstPad *aPad, GstEvent *aEvent); ++#else + static gboolean EventProbeCb(GstPad* aPad, GstEvent* aEvent, gpointer aUserData); + gboolean EventProbe(GstPad* aPad, GstEvent* aEvent); ++#endif + +- /* Called when elements in the video branch of the pipeline call +- * gst_pad_alloc_buffer(). Used to provide PlanarYCbCrImage backed GstBuffers +- * to the pipeline so that a memory copy can be avoided when handling YUV +- * buffers from the pipeline to the gfx side. ++ /* Called when the video part of the pipeline allocates buffers. Used to ++ * provide PlanarYCbCrImage backed GstBuffers to the pipeline so that a memory ++ * copy can be avoided when handling YUV buffers from the pipeline to the gfx ++ * side. + */ ++#if GST_VERSION_MAJOR == 1 ++ static GstPadProbeReturn QueryProbeCb(GstPad *aPad, GstPadProbeInfo *aInfo, gpointer aUserData); ++ GstPadProbeReturn QueryProbe(GstPad *aPad, GstPadProbeInfo *aInfo, gpointer aUserData); ++#else + static GstFlowReturn AllocateVideoBufferCb(GstPad* aPad, guint64 aOffset, guint aSize, + GstCaps* aCaps, GstBuffer** aBuf); + GstFlowReturn AllocateVideoBufferFull(GstPad* aPad, guint64 aOffset, guint aSize, + GstCaps* aCaps, GstBuffer** aBuf, nsRefPtr& aImage); + GstFlowReturn AllocateVideoBuffer(GstPad* aPad, guint64 aOffset, guint aSize, + GstCaps* aCaps, GstBuffer** aBuf); ++#endif ++ + + /* Called when the pipeline is prerolled, that is when at start or after a + * seek, the first audio and video buffers are queued in the sinks. +@@ -150,6 +168,11 @@ private: + bool mUseParserDuration; + int64_t mLastParserDuration; + ++#if GST_VERSION_MAJOR >= 1 ++ GstAllocator *mAllocator; ++ GstBufferPool *mBufferPool; ++ GstVideoInfo mVideoInfo; ++#endif + GstElement* mPlayBin; + GstBus* mBus; + GstAppSrc* mSource; +@@ -180,6 +203,9 @@ private: + * DecodeAudioData and DecodeVideoFrame should not expect any more data + */ + bool mReachedEos; ++#if GST_VERSION_MAJOR >= 1 ++ bool mConfigureAlignment; ++#endif + int fpsNum; + int fpsDen; + }; +diff --git content/media/gstreamer/moz.build content/media/gstreamer/moz.build +index 7d51bf5..a3c1856 100644 +--- content/media/gstreamer/moz.build ++++ content/media/gstreamer/moz.build +@@ -15,10 +15,19 @@ SOURCES += [ + 'GStreamerDecoder.cpp', + 'GStreamerFormatHelper.cpp', + 'GStreamerLoader.cpp', +- 'GStreamerMozVideoBuffer.cpp', + 'GStreamerReader.cpp', + ] + ++if CONFIG['GST_API_VERSION'] == '1.0': ++ SOURCES += [ ++ 'GStreamerAllocator.cpp', ++ ] ++else: ++ SOURCES += [ ++ 'GStreamerMozVideoBuffer.cpp', ++ 'GStreamerReader-0.10.cpp', ++ ] ++ + FAIL_ON_WARNINGS = True + + FINAL_LIBRARY = 'gklayout' +diff --git content/media/test/manifest.js content/media/test/manifest.js +index 6e39753..3c8c3b9 100644 +--- content/media/test/manifest.js ++++ content/media/test/manifest.js +@@ -364,9 +364,9 @@ var gUnseekableTests = [ + { name:"bogus.duh", type:"bogus/duh"} + ]; + // Unfortunately big-buck-bunny-unseekable.mp4 is doesn't play on Windows 7, so +-// only include it in the unseekable tests if we're on later versions of Windows. +-if (navigator.userAgent.indexOf("Windows") == -1 || +- IsWindows8OrLater()) { ++// only include it in the unseekable tests if we're on later versions of Windows. ++// This test actually only passes on win8 at the moment. ++if (navigator.userAgent.indexOf("Windows") != -1 && IsWindows8OrLater()) { + gUnseekableTests = gUnseekableTests.concat([ + { name:"big-buck-bunny-unseekable.mp4", type:"video/mp4" } + ]); From owner-freebsd-gecko@FreeBSD.ORG Sat Jan 18 15:17:40 2014 Return-Path: Delivered-To: freebsd-gecko@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 20A0EC12 for ; Sat, 18 Jan 2014 15:17:40 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian.chruetertee.ch [217.150.244.247]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8A1E4197A for ; Sat, 18 Jan 2014 15:17:39 +0000 (UTC) Received: from trillian.chruetertee.ch (trillian [217.150.244.247]) by trillian.chruetertee.ch (8.14.4/8.14.3) with ESMTP id s0IFHUrt097555 for ; Sat, 18 Jan 2014 15:17:30 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Received: (from www@localhost) by trillian.chruetertee.ch (8.14.4/8.14.3/Submit) id s0IFHPIC095126 for freebsd-gecko@freebsd.org; Sat, 18 Jan 2014 15:17:25 GMT (envelope-from svn-freebsd-gecko@chruetertee.ch) Date: Sat, 18 Jan 2014 15:17:25 GMT Message-Id: <201401181517.s0IFHPIC095126@trillian.chruetertee.ch> X-Authentication-Warning: trillian.chruetertee.ch: www set sender to svn-freebsd-gecko@chruetertee.ch using -f From: svn-freebsd-gecko@chruetertee.ch To: freebsd-gecko@freebsd.org Subject: [SVN-Commit] r1468 - in trunk: Mk www/firefox www/firefox-i18n www/firefox-nightly www/firefox-nightly/files www/linux-tor-browser MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: freebsd-gecko@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list Reply-To: freebsd-gecko@freebsd.org List-Id: Gecko Rendering Engine issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Jan 2014 15:17:40 -0000 Author: jbeich Date: Sat Jan 18 15:17:25 2014 New Revision: 1468 Log: update Deleted: trunk/www/firefox-nightly/files/patch-bug878791 Modified: trunk/Mk/bsd.gecko.mk trunk/www/firefox-i18n/Makefile trunk/www/firefox-i18n/distinfo trunk/www/firefox-nightly/Makefile.hgrev trunk/www/firefox-nightly/distinfo trunk/www/firefox-nightly/files/patch-bug826985 trunk/www/firefox-nightly/files/patch-config-baseconfig.mk trunk/www/firefox/Makefile trunk/www/firefox/distinfo trunk/www/linux-tor-browser/Makefile trunk/www/linux-tor-browser/distinfo Modified: trunk/Mk/bsd.gecko.mk ============================================================================== --- trunk/Mk/bsd.gecko.mk Sun Jan 12 19:50:25 2014 (r1467) +++ trunk/Mk/bsd.gecko.mk Sat Jan 18 15:17:25 2014 (r1468) @@ -763,6 +763,8 @@ .if ${PORT_OPTIONS:MPULSEAUDIO} LIB_DEPENDS+= pulse.0:${PORTSDIR}/audio/pulseaudio MOZ_OPTIONS+= --enable-pulseaudio +.else +MOZ_OPTIONS+= --disable-pulseaudio .endif .if ${PORT_OPTIONS:MDEBUG} Modified: trunk/www/firefox-i18n/Makefile ============================================================================== --- trunk/www/firefox-i18n/Makefile Sun Jan 12 19:50:25 2014 (r1467) +++ trunk/www/firefox-i18n/Makefile Sat Jan 18 15:17:25 2014 (r1468) @@ -2,7 +2,7 @@ # $FreeBSD: head/www/firefox-i18n/Makefile 313676 2013-03-08 22:27:39Z flo $ PORTNAME= firefox-i18n -PORTVERSION= 27.0b5 +PORTVERSION= 27.0b7 CATEGORIES= www MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${PORTVERSION}/linux-i686/xpi PKGNAMEPREFIX= Modified: trunk/www/firefox-i18n/distinfo ============================================================================== --- trunk/www/firefox-i18n/distinfo Sun Jan 12 19:50:25 2014 (r1467) +++ trunk/www/firefox-i18n/distinfo Sat Jan 18 15:17:25 2014 (r1468) @@ -1,178 +1,170 @@ -SHA256 (xpi/firefox-i18n-27.0b5/ach.xpi) = 6ae49859872d6d08b5a1f67681f70669236e85430b4a1b1fec80b5114c25dfe5 -SIZE (xpi/firefox-i18n-27.0b5/ach.xpi) = 355303 -SHA256 (xpi/firefox-i18n-27.0b5/af.xpi) = 42a4fbc70188e85c2620910fafc201a37664f07413456a8cf14a60c3af298bc1 -SIZE (xpi/firefox-i18n-27.0b5/af.xpi) = 348849 -SHA256 (xpi/firefox-i18n-27.0b5/ak.xpi) = b5a48b679ad1741a6487d24bd7ab6aac61d2b7497da5945750cd6b589ca33310 -SIZE (xpi/firefox-i18n-27.0b5/ak.xpi) = 351659 -SHA256 (xpi/firefox-i18n-27.0b5/ar.xpi) = 3ca731d5a80d399ca5a5c312ae6d091c6cec318af3137f52ebf84c18798da0ef -SIZE (xpi/firefox-i18n-27.0b5/ar.xpi) = 378147 -SHA256 (xpi/firefox-i18n-27.0b5/as.xpi) = 0e8a2652e81a08d7c93766448268e43be22be994bf45a4f78b44de22887cfd74 -SIZE (xpi/firefox-i18n-27.0b5/as.xpi) = 400779 -SHA256 (xpi/firefox-i18n-27.0b5/ast.xpi) = c928acc095b3357e431ce02ad421f39a5a90601bad68d26a58752e3e8c0bfcdc -SIZE (xpi/firefox-i18n-27.0b5/ast.xpi) = 309191 -SHA256 (xpi/firefox-i18n-27.0b5/be.xpi) = c497cc0e47f0acc03416b07e1419c9cf176107b75c4e0c4ff34a36ce75cc43fe -SIZE (xpi/firefox-i18n-27.0b5/be.xpi) = 332361 -SHA256 (xpi/firefox-i18n-27.0b5/bg.xpi) = 0c46e7bec9513894a5975b2088bcfd724d0a4990eebd58232ccca3e837238b85 -SIZE (xpi/firefox-i18n-27.0b5/bg.xpi) = 389844 -SHA256 (xpi/firefox-i18n-27.0b5/bn-BD.xpi) = c7d1dcd6f3f77e9a66a0bf99ad06230fa5f275ba679e07c4243d81e62e74c063 -SIZE (xpi/firefox-i18n-27.0b5/bn-BD.xpi) = 410850 -SHA256 (xpi/firefox-i18n-27.0b5/bn-IN.xpi) = ea04e439d832be887ecfb8cbfd761b93c0db8712c35d4a941aa61dddbbd1dede -SIZE (xpi/firefox-i18n-27.0b5/bn-IN.xpi) = 407703 -SHA256 (xpi/firefox-i18n-27.0b5/br.xpi) = 4cacc4f39da19c5928c644572288f50320d440457078acf29743ea88e277e80d -SIZE (xpi/firefox-i18n-27.0b5/br.xpi) = 351231 -SHA256 (xpi/firefox-i18n-27.0b5/bs.xpi) = 9e5d8550a630d69d7d5f9705b1c27de40f1d77274552cda1b348256b93cfe02c -SIZE (xpi/firefox-i18n-27.0b5/bs.xpi) = 354542 -SHA256 (xpi/firefox-i18n-27.0b5/ca.xpi) = d3d66b67f5b4d1863dd8a1aaf6a24f1f4eadf988a2509b522db76c9a4241d3cb -SIZE (xpi/firefox-i18n-27.0b5/ca.xpi) = 357571 -SHA256 (xpi/firefox-i18n-27.0b5/cs.xpi) = 9e7834f7df5c097c0938861518c619682391be74bfdfc99ba80a8d6cdf005c0c -SIZE (xpi/firefox-i18n-27.0b5/cs.xpi) = 353328 -SHA256 (xpi/firefox-i18n-27.0b5/csb.xpi) = 5347b5570de508335bbde1373971648946abcb55fae2f234baaa97ce98aa7333 -SIZE (xpi/firefox-i18n-27.0b5/csb.xpi) = 343119 -SHA256 (xpi/firefox-i18n-27.0b5/cy.xpi) = d34c7fdfc361b8be53e203cf2fb4d99d2a4e0db31ca4ec60833599c1c450ee78 -SIZE (xpi/firefox-i18n-27.0b5/cy.xpi) = 351736 -SHA256 (xpi/firefox-i18n-27.0b5/da.xpi) = d064c07199b3ba4b207da0fe0a64d281b763293b68c66ca7b5e54e372398d895 -SIZE (xpi/firefox-i18n-27.0b5/da.xpi) = 343542 -SHA256 (xpi/firefox-i18n-27.0b5/de.xpi) = a2d9d8db672b3ff3e3007ceec38d933775106fe5023de127a7b5a75dd28261de -SIZE (xpi/firefox-i18n-27.0b5/de.xpi) = 345772 -SHA256 (xpi/firefox-i18n-27.0b5/el.xpi) = 70546b0d14748e1990a0401a15275de4c148e82946c94818e4bbbc0b08631fed -SIZE (xpi/firefox-i18n-27.0b5/el.xpi) = 378048 -SHA256 (xpi/firefox-i18n-27.0b5/en-GB.xpi) = 0b3d466d1d9c58d6774d2c042265cab887f4b0e49ac562ed24e4cea9d7022176 -SIZE (xpi/firefox-i18n-27.0b5/en-GB.xpi) = 337514 -SHA256 (xpi/firefox-i18n-27.0b5/en-US.xpi) = 36c21b709d9ee26a8c8e82df571fce80b3f496442f3f8fb9c7239b12b4eb482d -SIZE (xpi/firefox-i18n-27.0b5/en-US.xpi) = 335287 -SHA256 (xpi/firefox-i18n-27.0b5/en-ZA.xpi) = bb7c7f203596113f2ee60c572e5601bb3a2c05b70f8d6528b1ca2b75c9fa3634 -SIZE (xpi/firefox-i18n-27.0b5/en-ZA.xpi) = 332022 -SHA256 (xpi/firefox-i18n-27.0b5/eo.xpi) = 9db38e0720069b42785c8af137007b0c68a69521c72519e0ccdab34098988d56 -SIZE (xpi/firefox-i18n-27.0b5/eo.xpi) = 351112 -SHA256 (xpi/firefox-i18n-27.0b5/es-AR.xpi) = d83d3706663a6d25e12591385e0d3d021c7ed25a59abb725fe8dde256d6ad638 -SIZE (xpi/firefox-i18n-27.0b5/es-AR.xpi) = 354331 -SHA256 (xpi/firefox-i18n-27.0b5/es-CL.xpi) = 516e24289a6b397020419d0d62ba73865d7f30d19e65901c7c0de0a7872e5ee1 -SIZE (xpi/firefox-i18n-27.0b5/es-CL.xpi) = 301981 -SHA256 (xpi/firefox-i18n-27.0b5/es-ES.xpi) = 07f9571bc3c1806621adb4b4d1a6cbabf8b6f6b1b4f8cf2034214442fa23f278 -SIZE (xpi/firefox-i18n-27.0b5/es-ES.xpi) = 293445 -SHA256 (xpi/firefox-i18n-27.0b5/es-MX.xpi) = a29031ef72f68097199639baf5f2958f1ce61d00475be1bc4a642f1b27996223 -SIZE (xpi/firefox-i18n-27.0b5/es-MX.xpi) = 356364 -SHA256 (xpi/firefox-i18n-27.0b5/et.xpi) = 36c7d72e4982b95673fbe6618efab6ab2e958e091d355a2af851e5ba0882e531 -SIZE (xpi/firefox-i18n-27.0b5/et.xpi) = 343299 -SHA256 (xpi/firefox-i18n-27.0b5/eu.xpi) = 289b2113c603b58940d7804e14032f0aa2db04dddabef0f60faa8e37725b4e51 -SIZE (xpi/firefox-i18n-27.0b5/eu.xpi) = 350048 -SHA256 (xpi/firefox-i18n-27.0b5/fa.xpi) = 31d6502e31a486766ce7f73f773977020d66e99998bf7fb1970f1e9468d7e54d -SIZE (xpi/firefox-i18n-27.0b5/fa.xpi) = 391170 -SHA256 (xpi/firefox-i18n-27.0b5/ff.xpi) = 1b0a5b8e9e81d93e53ad7b025b2c783cbe524a99d0aaef4f541990143c4b1107 -SIZE (xpi/firefox-i18n-27.0b5/ff.xpi) = 348065 -SHA256 (xpi/firefox-i18n-27.0b5/fi.xpi) = ea512b7c89c81aa5019f743e92645caf59bc1ba78d324ee812f1c19ed8d34627 -SIZE (xpi/firefox-i18n-27.0b5/fi.xpi) = 347383 -SHA256 (xpi/firefox-i18n-27.0b5/fr.xpi) = 88bc4f4a6d1016740ed270c00262a2709b23b5cb58293f7d990a02973b3ca1f1 -SIZE (xpi/firefox-i18n-27.0b5/fr.xpi) = 360471 -SHA256 (xpi/firefox-i18n-27.0b5/fy-NL.xpi) = eea12492d37cd7ccfd3f03bc4bb685a3fe706e49a5961fd243d4605cfc79c446 -SIZE (xpi/firefox-i18n-27.0b5/fy-NL.xpi) = 356738 -SHA256 (xpi/firefox-i18n-27.0b5/ga-IE.xpi) = 70c20f62ebae3d975a87e90dbd317c907745eec795dd13021a6588fd201176bf -SIZE (xpi/firefox-i18n-27.0b5/ga-IE.xpi) = 361194 -SHA256 (xpi/firefox-i18n-27.0b5/gd.xpi) = 67a320d427852825f9c2c64e14ad7d204856d26bb37e7e9f3669476f699912a2 -SIZE (xpi/firefox-i18n-27.0b5/gd.xpi) = 357711 -SHA256 (xpi/firefox-i18n-27.0b5/gl.xpi) = 3ca12295bd19dda5a3c56f3c67e93771a18c0e920158c9e9f2bd8c104fbc7f38 -SIZE (xpi/firefox-i18n-27.0b5/gl.xpi) = 353152 -SHA256 (xpi/firefox-i18n-27.0b5/gu-IN.xpi) = ec977ac9abc08e728f41c1ead1c11145b839aec076f3ce3415ab9fb383fdc800 -SIZE (xpi/firefox-i18n-27.0b5/gu-IN.xpi) = 377591 -SHA256 (xpi/firefox-i18n-27.0b5/he.xpi) = cbb89b5f7cccdc5d23eedcb3fc1687519ee5fd5961e9925312a15056b726919e -SIZE (xpi/firefox-i18n-27.0b5/he.xpi) = 370013 -SHA256 (xpi/firefox-i18n-27.0b5/hi-IN.xpi) = 5cf038a4f2fdb465f56ebb6f7ecd89a28d3ed70b7c864f102e013ac51e777597 -SIZE (xpi/firefox-i18n-27.0b5/hi-IN.xpi) = 396454 -SHA256 (xpi/firefox-i18n-27.0b5/hr.xpi) = b8e338cea10663fb18c302a0f09e801f77810d438011f8b3c9cd6fcd58906bd2 -SIZE (xpi/firefox-i18n-27.0b5/hr.xpi) = 357710 -SHA256 (xpi/firefox-i18n-27.0b5/hu.xpi) = 293447b8909e027c3fe9711c91874a3f54e3bd3f0a7fa53813ddf8a0633480e2 -SIZE (xpi/firefox-i18n-27.0b5/hu.xpi) = 362056 -SHA256 (xpi/firefox-i18n-27.0b5/hy-AM.xpi) = 044b58bc99509ae72017595f3087da83b1212f3a5705b29e4efb937c3c85d1ca -SIZE (xpi/firefox-i18n-27.0b5/hy-AM.xpi) = 402985 -SHA256 (xpi/firefox-i18n-27.0b5/id.xpi) = d4231321bb28ecc5fc33e3d6c8cfae63233354257334d89c45b36f9016df875c -SIZE (xpi/firefox-i18n-27.0b5/id.xpi) = 339614 -SHA256 (xpi/firefox-i18n-27.0b5/is.xpi) = 2b8758fba2d317b3e564e76d0da695096e3db1960cd7eb152d11268c2e32add2 -SIZE (xpi/firefox-i18n-27.0b5/is.xpi) = 346533 -SHA256 (xpi/firefox-i18n-27.0b5/it.xpi) = 17b1d5925b678ec3bda93418853d632fee0e343dd736ac0f6e5c2060c271b84c -SIZE (xpi/firefox-i18n-27.0b5/it.xpi) = 291094 -SHA256 (xpi/firefox-i18n-27.0b5/ja.xpi) = d7e6f0b0741bed0319a45a12bd480912e8a10c7ef87f0fdbe0f912c574081035 -SIZE (xpi/firefox-i18n-27.0b5/ja.xpi) = 393701 -SHA256 (xpi/firefox-i18n-27.0b5/kk.xpi) = 48400b4bd9626eecef4e245637519fe76e7685923b295fff8ddab989f1542976 -SIZE (xpi/firefox-i18n-27.0b5/kk.xpi) = 396376 -SHA256 (xpi/firefox-i18n-27.0b5/km.xpi) = adb63f93897022bc3821d10e0a1b590558c21cadcc6ede60dc5db6a42e016621 -SIZE (xpi/firefox-i18n-27.0b5/km.xpi) = 418736 -SHA256 (xpi/firefox-i18n-27.0b5/kn.xpi) = deaf27c2ae55ce611f8f68b8bba248c7b468b52ca8ded6fa5c817c49c0fe3387 -SIZE (xpi/firefox-i18n-27.0b5/kn.xpi) = 408354 -SHA256 (xpi/firefox-i18n-27.0b5/ko.xpi) = 38e30d67ebed27ee0812f8509d5d9da1d77f92ed304c1d8a0ead81bd40c7302d -SIZE (xpi/firefox-i18n-27.0b5/ko.xpi) = 363842 -SHA256 (xpi/firefox-i18n-27.0b5/ku.xpi) = febc56f69e1d74f995b86d3c5b22f80e6232137595ad37e5b1d31d6f8c57b52e -SIZE (xpi/firefox-i18n-27.0b5/ku.xpi) = 370258 -SHA256 (xpi/firefox-i18n-27.0b5/lg.xpi) = c3e4910044309df1c21e51cdc0c245a792762a67dd8bdf7174174e878ed685f0 -SIZE (xpi/firefox-i18n-27.0b5/lg.xpi) = 366472 -SHA256 (xpi/firefox-i18n-27.0b5/lij.xpi) = 2b10c963547a18be8d61868f15f79291d3a8f8ae395169b2bb27cc8cfe985d21 -SIZE (xpi/firefox-i18n-27.0b5/lij.xpi) = 339920 -SHA256 (xpi/firefox-i18n-27.0b5/lt.xpi) = 3878222b3c6cc8961e3ca87b41787001083549e88e93a07cfaf2b4acfea22d82 -SIZE (xpi/firefox-i18n-27.0b5/lt.xpi) = 369742 -SHA256 (xpi/firefox-i18n-27.0b5/lv.xpi) = 1292a271d5af64335e9f49ee3f72901705e384374f394c0283de5cfd19804fbc -SIZE (xpi/firefox-i18n-27.0b5/lv.xpi) = 343469 -SHA256 (xpi/firefox-i18n-27.0b5/mai.xpi) = e244e36997b58487a984e22681baaafee97da60cc1dbca89f0fcf95fe6b12dd6 -SIZE (xpi/firefox-i18n-27.0b5/mai.xpi) = 396637 -SHA256 (xpi/firefox-i18n-27.0b5/mk.xpi) = 96de2727e1d03eb01daa97911328a570658b1b330f926c68b71535264ae229bc -SIZE (xpi/firefox-i18n-27.0b5/mk.xpi) = 392648 -SHA256 (xpi/firefox-i18n-27.0b5/ml.xpi) = 9a731118bbf3f812d975bcf4c9abb3356b8d9fcf493cff9f92b1f0b74ca0b90b -SIZE (xpi/firefox-i18n-27.0b5/ml.xpi) = 417097 -SHA256 (xpi/firefox-i18n-27.0b5/mr.xpi) = 0cd2917edeb2bb49b69807420a4c7e8a7e5abe844804e8536fa0c4709fe68001 -SIZE (xpi/firefox-i18n-27.0b5/mr.xpi) = 397292 -SHA256 (xpi/firefox-i18n-27.0b5/nb-NO.xpi) = 1b02254c04cba5f722df4c121a94201cf0c37d9a3e6d25a1ba982d02731339dc -SIZE (xpi/firefox-i18n-27.0b5/nb-NO.xpi) = 342745 -SHA256 (xpi/firefox-i18n-27.0b5/nl.xpi) = 9ce2ae2739b7e793dc958702e2b372fb6ad443e0a7a4170c8b220ba30ca7ac34 -SIZE (xpi/firefox-i18n-27.0b5/nl.xpi) = 348115 -SHA256 (xpi/firefox-i18n-27.0b5/nn-NO.xpi) = 9a2479dd6666e24fdd33bbcd700e1c530b2a101113ec56e1f07d79007d393df6 -SIZE (xpi/firefox-i18n-27.0b5/nn-NO.xpi) = 344234 -SHA256 (xpi/firefox-i18n-27.0b5/nso.xpi) = 9672dec56a00930ee5a33668c36c5c3a3389840065cfc56589a2db9b67fb8bfd -SIZE (xpi/firefox-i18n-27.0b5/nso.xpi) = 352797 -SHA256 (xpi/firefox-i18n-27.0b5/or.xpi) = 1ed177fe5075426bf27dbf91dd967a2e780382f13bc4856b26acaabb564294f6 -SIZE (xpi/firefox-i18n-27.0b5/or.xpi) = 410077 -SHA256 (xpi/firefox-i18n-27.0b5/pa-IN.xpi) = 68a37e3b994a9ecd81d33312f461bee43dc250d13897cc920d753eba7f54d9ad -SIZE (xpi/firefox-i18n-27.0b5/pa-IN.xpi) = 385305 -SHA256 (xpi/firefox-i18n-27.0b5/pl.xpi) = aed70c23f7bb86159ac298929061a994790778de6267164eee4e343b523cc6f4 -SIZE (xpi/firefox-i18n-27.0b5/pl.xpi) = 348875 -SHA256 (xpi/firefox-i18n-27.0b5/pt-BR.xpi) = d44b674cbe98b1577e64e24180bf8e5114e36ad76ed5365c0c93ce9e2124c05f -SIZE (xpi/firefox-i18n-27.0b5/pt-BR.xpi) = 354188 -SHA256 (xpi/firefox-i18n-27.0b5/pt-PT.xpi) = 643158f67ea87803fd3df23764c6aafe45091510705459d5dafd136351fceca6 -SIZE (xpi/firefox-i18n-27.0b5/pt-PT.xpi) = 347961 -SHA256 (xpi/firefox-i18n-27.0b5/rm.xpi) = fcbbcc42fa78ea96cc8d066fe4f963ce19cf86b5b229745316f4c43edd8063e8 -SIZE (xpi/firefox-i18n-27.0b5/rm.xpi) = 349338 -SHA256 (xpi/firefox-i18n-27.0b5/ro.xpi) = 0b65f88872e2b6a64afcd9faecea659cf15ff5f43abd311c3c747ff1fe1b23e8 -SIZE (xpi/firefox-i18n-27.0b5/ro.xpi) = 378835 -SHA256 (xpi/firefox-i18n-27.0b5/ru.xpi) = 22bab91dfcc5d2920e44fef7a2c3c4d98b102044e2b245d2c5f84e3d8d5d8838 -SIZE (xpi/firefox-i18n-27.0b5/ru.xpi) = 336576 -SHA256 (xpi/firefox-i18n-27.0b5/si.xpi) = 26ab1bb9983091e66331c703c77a029a1557cb190b324993c043817f94637fe4 -SIZE (xpi/firefox-i18n-27.0b5/si.xpi) = 387686 -SHA256 (xpi/firefox-i18n-27.0b5/sk.xpi) = 8dafd984a51ae8e32e87c141b6199c63c04087217866c57c7dffaa640f91d6bd -SIZE (xpi/firefox-i18n-27.0b5/sk.xpi) = 364728 -SHA256 (xpi/firefox-i18n-27.0b5/sl.xpi) = ccd1fd921a95ba2c9198da2f6f2ad76a3b285168529eee651b4a9693c09fa762 -SIZE (xpi/firefox-i18n-27.0b5/sl.xpi) = 347792 -SHA256 (xpi/firefox-i18n-27.0b5/son.xpi) = 18f0b422d816eb4bf72cc24a845a94e6f7150bea5faa6918214cf58de89652da -SIZE (xpi/firefox-i18n-27.0b5/son.xpi) = 344436 -SHA256 (xpi/firefox-i18n-27.0b5/sq.xpi) = 336827e5cf53b03320de43c5bbc44c51bb207992511276a8b127786ed9245c91 -SIZE (xpi/firefox-i18n-27.0b5/sq.xpi) = 357151 -SHA256 (xpi/firefox-i18n-27.0b5/sr.xpi) = b41550151d3db896145c6fea127c645ddae234e372b1df7c0ec93ac40d4595ec -SIZE (xpi/firefox-i18n-27.0b5/sr.xpi) = 399943 -SHA256 (xpi/firefox-i18n-27.0b5/sv-SE.xpi) = 2506bf6bd4fc2dd34040da69e7975d9b545ccd08b618406a721f756b813dfbf6 -SIZE (xpi/firefox-i18n-27.0b5/sv-SE.xpi) = 352873 -SHA256 (xpi/firefox-i18n-27.0b5/ta-LK.xpi) = 5bb593ea4e4dc7b80a815207a0b7ef86f7efd7f1dc1b561573c37d6118edc4cb -SIZE (xpi/firefox-i18n-27.0b5/ta-LK.xpi) = 398907 -SHA256 (xpi/firefox-i18n-27.0b5/ta.xpi) = 050efe62dfd90b5597b551af250238532a5cdd446a0bb74c5798b41c41489ecc -SIZE (xpi/firefox-i18n-27.0b5/ta.xpi) = 400415 -SHA256 (xpi/firefox-i18n-27.0b5/te.xpi) = 071f86403eac876ecb5e597716fd2526190116811f8bbf68a930319df8d8219d -SIZE (xpi/firefox-i18n-27.0b5/te.xpi) = 417874 -SHA256 (xpi/firefox-i18n-27.0b5/th.xpi) = 6984904dfdb135c87db2bf4aa143c26625f80c75b2f5966a6b171b349ce933e7 -SIZE (xpi/firefox-i18n-27.0b5/th.xpi) = 394994 -SHA256 (xpi/firefox-i18n-27.0b5/tr.xpi) = beab990ff0999f7f48f39aacf9af44373e3aa9df2a1730babea4ec58348ad648 -SIZE (xpi/firefox-i18n-27.0b5/tr.xpi) = 356671 -SHA256 (xpi/firefox-i18n-27.0b5/uk.xpi) = c8ba7a50445dafde1e5949d51c2839fcb442caf2d763515798ddf92a4eaf3907 -SIZE (xpi/firefox-i18n-27.0b5/uk.xpi) = 382506 -SHA256 (xpi/firefox-i18n-27.0b5/vi.xpi) = 71253b5ccd3d727ae3b52d53a64c799c8438fb611fd81e6a63e07f00522101b2 -SIZE (xpi/firefox-i18n-27.0b5/vi.xpi) = 375489 -SHA256 (xpi/firefox-i18n-27.0b5/zh-CN.xpi) = 93b9f600fe86ad84ba6df2c6a171ba67351f47d52b0ea669b9f8910f61fe675c -SIZE (xpi/firefox-i18n-27.0b5/zh-CN.xpi) = 374674 -SHA256 (xpi/firefox-i18n-27.0b5/zh-TW.xpi) = 891f9ce5c13bae0f330f2d443ba34f24af6ecd6e2a9809498b2c62bf61670fcb -SIZE (xpi/firefox-i18n-27.0b5/zh-TW.xpi) = 372322 -SHA256 (xpi/firefox-i18n-27.0b5/zu.xpi) = 1b14e2136336773b0bee05f7a94bbdd96f8222bc853c11256daadcaccf3e4ca7 -SIZE (xpi/firefox-i18n-27.0b5/zu.xpi) = 357239 +SHA256 (xpi/firefox-i18n-27.0b7/ach.xpi) = f0c61d14b42e1b3f6ffd4d668f17ba2fc1a3e8a4e2a23182eca87ac7bcd80ced +SIZE (xpi/firefox-i18n-27.0b7/ach.xpi) = 355303 +SHA256 (xpi/firefox-i18n-27.0b7/af.xpi) = 2f5ddf4274e6fd9fdd494bdd4d14bcc0243e580ce66b6540df711f1fa45a0a6e +SIZE (xpi/firefox-i18n-27.0b7/af.xpi) = 348849 +SHA256 (xpi/firefox-i18n-27.0b7/ar.xpi) = 1a08631c5c6e714db4a3904966c063162af4312cc2a90699887c930ab3b20b6c +SIZE (xpi/firefox-i18n-27.0b7/ar.xpi) = 378147 +SHA256 (xpi/firefox-i18n-27.0b7/as.xpi) = 91977999cb38b85ceec21098488f199cb706b9a5d22cafc87d2bbadc958624d5 +SIZE (xpi/firefox-i18n-27.0b7/as.xpi) = 400779 +SHA256 (xpi/firefox-i18n-27.0b7/ast.xpi) = 15ca9d9751f20917dd2c94f6e8e88fedbf8e9b32bd60967a543f814d2551602e +SIZE (xpi/firefox-i18n-27.0b7/ast.xpi) = 309191 +SHA256 (xpi/firefox-i18n-27.0b7/be.xpi) = 12808d58ab74f0940110a55b793691eae9aa984a0d1740ba20b2651893ab57a2 +SIZE (xpi/firefox-i18n-27.0b7/be.xpi) = 332361 +SHA256 (xpi/firefox-i18n-27.0b7/bg.xpi) = 1fa4f605914ae789957318381137858881132f4b0d44ddd9f2c9b6e0ab56dc15 +SIZE (xpi/firefox-i18n-27.0b7/bg.xpi) = 389844 +SHA256 (xpi/firefox-i18n-27.0b7/bn-BD.xpi) = 1b0e40b920a1a7e10388e80b7bb60ddf4f4a23de0d0c6b34f38cbf29357306c2 +SIZE (xpi/firefox-i18n-27.0b7/bn-BD.xpi) = 410850 +SHA256 (xpi/firefox-i18n-27.0b7/bn-IN.xpi) = 797959fbbc2a7d7abfc8089dd7e51143f6987a27064753c495c8180482644ca3 +SIZE (xpi/firefox-i18n-27.0b7/bn-IN.xpi) = 407703 +SHA256 (xpi/firefox-i18n-27.0b7/br.xpi) = 9d4fe28e9f2ee6c8420ad4464a7ddb03831b8b9f4303c2855670ab55e2fec387 +SIZE (xpi/firefox-i18n-27.0b7/br.xpi) = 351231 +SHA256 (xpi/firefox-i18n-27.0b7/bs.xpi) = 3ad05908b07b0aa2171356b27b2d84efd0539fc8ee9009aad28f62f5d0bb6d32 +SIZE (xpi/firefox-i18n-27.0b7/bs.xpi) = 354542 +SHA256 (xpi/firefox-i18n-27.0b7/ca.xpi) = 14c8549bceed538a062362625d48c3eebeb586a3730e8733f98b7889d0d72e51 +SIZE (xpi/firefox-i18n-27.0b7/ca.xpi) = 357571 +SHA256 (xpi/firefox-i18n-27.0b7/cs.xpi) = 84cdebdb333556406ae448e49ba5aae8189d466a16bf54fb6ee5926dc238db75 +SIZE (xpi/firefox-i18n-27.0b7/cs.xpi) = 353328 +SHA256 (xpi/firefox-i18n-27.0b7/csb.xpi) = f4bb54f8f31cb3821c21a45084d8e85e6624454d237d798ad458eb5ec69f9ace +SIZE (xpi/firefox-i18n-27.0b7/csb.xpi) = 343119 +SHA256 (xpi/firefox-i18n-27.0b7/cy.xpi) = 41825f50c760ad49776eed916554f4e6840176c366627d9d74fb7afd54817d9a +SIZE (xpi/firefox-i18n-27.0b7/cy.xpi) = 351736 +SHA256 (xpi/firefox-i18n-27.0b7/da.xpi) = 0611682a21fc960f54c917aaa3cb988be4b0be710bf33c22824f10ca602d6f9d +SIZE (xpi/firefox-i18n-27.0b7/da.xpi) = 343542 +SHA256 (xpi/firefox-i18n-27.0b7/de.xpi) = edf483139b5bffa68db67c1e73ca8bf0de963bbfd667763897fba8bf9b97d544 +SIZE (xpi/firefox-i18n-27.0b7/de.xpi) = 345772 +SHA256 (xpi/firefox-i18n-27.0b7/el.xpi) = ee74793033683607d5685b8fd4c45479524f91d7e7539bbf2c540dd29362a68b +SIZE (xpi/firefox-i18n-27.0b7/el.xpi) = 378048 +SHA256 (xpi/firefox-i18n-27.0b7/en-GB.xpi) = b129e0941d2b737fce9ded45c8bb4df9eaab1c10beb20dfc48856e414361e5ac +SIZE (xpi/firefox-i18n-27.0b7/en-GB.xpi) = 337514 +SHA256 (xpi/firefox-i18n-27.0b7/en-US.xpi) = b7538e954f2ed9532d3f1dde15ac65b851774fc432cf80604736a83c2745bb67 +SIZE (xpi/firefox-i18n-27.0b7/en-US.xpi) = 335287 +SHA256 (xpi/firefox-i18n-27.0b7/en-ZA.xpi) = 51152f18429c34683021f58d32e62a71d03a001af665f3ae290a68e6e3016a94 +SIZE (xpi/firefox-i18n-27.0b7/en-ZA.xpi) = 332022 +SHA256 (xpi/firefox-i18n-27.0b7/eo.xpi) = 315606ba055a3082ae03f9ebd0273c4f5d4e44fba1cd68a51d7090b2fb42e0c3 +SIZE (xpi/firefox-i18n-27.0b7/eo.xpi) = 351112 +SHA256 (xpi/firefox-i18n-27.0b7/es-AR.xpi) = 8f342729b96d8b9ce0665966f1af08236c19dabc4e7a6a702a930c6784cb0343 +SIZE (xpi/firefox-i18n-27.0b7/es-AR.xpi) = 354331 +SHA256 (xpi/firefox-i18n-27.0b7/es-CL.xpi) = cef80ffcdf3b01f4ff9a513b69c6137baeaa44ef360002693f611d2d5f790979 +SIZE (xpi/firefox-i18n-27.0b7/es-CL.xpi) = 301977 +SHA256 (xpi/firefox-i18n-27.0b7/es-ES.xpi) = cd911ca6d3d2b12445621062ac29176e8b3d5aa1c08c5a98f29904d2bb9fd11c +SIZE (xpi/firefox-i18n-27.0b7/es-ES.xpi) = 293445 +SHA256 (xpi/firefox-i18n-27.0b7/es-MX.xpi) = cc3da92584be4c5f6174dc684cb448108c29efeb2e596d86a39df96ebe5707d3 +SIZE (xpi/firefox-i18n-27.0b7/es-MX.xpi) = 356364 +SHA256 (xpi/firefox-i18n-27.0b7/et.xpi) = 86b7bd8ebb82fdf21b9764c47685f038da098ab8152b5491f373426f0d38070e +SIZE (xpi/firefox-i18n-27.0b7/et.xpi) = 343299 +SHA256 (xpi/firefox-i18n-27.0b7/eu.xpi) = a23688876b8d4e9b888b6164c05c084194d5ca351ddbce9ea157d8463fc65351 +SIZE (xpi/firefox-i18n-27.0b7/eu.xpi) = 350048 +SHA256 (xpi/firefox-i18n-27.0b7/fa.xpi) = 71f0ea97755babe65e03b1051ba8cfed13fc8b32488e8c3878e794b506528476 +SIZE (xpi/firefox-i18n-27.0b7/fa.xpi) = 391170 +SHA256 (xpi/firefox-i18n-27.0b7/ff.xpi) = 9439daa1017706db16d0d9a415357c2f12abf3eeb4ec402bc9e07a594b937977 +SIZE (xpi/firefox-i18n-27.0b7/ff.xpi) = 348065 +SHA256 (xpi/firefox-i18n-27.0b7/fi.xpi) = 8bf8c5e9ebeb1cc4a740fb05a2d9293dc288554112d648061564504deab4d047 +SIZE (xpi/firefox-i18n-27.0b7/fi.xpi) = 347383 +SHA256 (xpi/firefox-i18n-27.0b7/fr.xpi) = f2875b9622bd54e4ffb36c5a7627e0a01b1c19d7c63dff791c42d9cb6bd5b14d +SIZE (xpi/firefox-i18n-27.0b7/fr.xpi) = 360471 +SHA256 (xpi/firefox-i18n-27.0b7/fy-NL.xpi) = b698f5183ad8b0380db75b324f332f4c65d1073969943140e864fabf41b19651 +SIZE (xpi/firefox-i18n-27.0b7/fy-NL.xpi) = 356738 +SHA256 (xpi/firefox-i18n-27.0b7/ga-IE.xpi) = 948ba54c7d0af9f8e7b961b0cf2cf7fb496a1879c1de6f0a1a5ec87ff3a46f49 +SIZE (xpi/firefox-i18n-27.0b7/ga-IE.xpi) = 361194 +SHA256 (xpi/firefox-i18n-27.0b7/gd.xpi) = 798248a4c5dfdb17a00d05fa82bf90f7faa817bc42d7c10310ced7f5d0c5f6c6 +SIZE (xpi/firefox-i18n-27.0b7/gd.xpi) = 357711 +SHA256 (xpi/firefox-i18n-27.0b7/gl.xpi) = 940ae5903ca5ede7203e4625dbfbc04456044ef92a8eb3b387f7998005bf6539 +SIZE (xpi/firefox-i18n-27.0b7/gl.xpi) = 353152 +SHA256 (xpi/firefox-i18n-27.0b7/gu-IN.xpi) = 57ea107baa966e2f4288d5fa565ab7a7581af5b193a23d8d1642eebb89ef4e0e +SIZE (xpi/firefox-i18n-27.0b7/gu-IN.xpi) = 377591 +SHA256 (xpi/firefox-i18n-27.0b7/he.xpi) = 05bc505f5e628a297702860d702036a8c6edfcc3cca884a6eccfbcb22ae105ef +SIZE (xpi/firefox-i18n-27.0b7/he.xpi) = 370013 +SHA256 (xpi/firefox-i18n-27.0b7/hi-IN.xpi) = 28190efcbd6aee5d955c71aa135f45bda82677d301b3369116de37dccc0d4ab8 +SIZE (xpi/firefox-i18n-27.0b7/hi-IN.xpi) = 396454 +SHA256 (xpi/firefox-i18n-27.0b7/hr.xpi) = f88091e72150597d7ab73aab0872057fbf28713ab1fc288c032fb6725c39cab5 +SIZE (xpi/firefox-i18n-27.0b7/hr.xpi) = 357710 +SHA256 (xpi/firefox-i18n-27.0b7/hu.xpi) = 23ca160de2ea5e3efa8f775419c508dbe7f0b448724164fd882972d173b64910 +SIZE (xpi/firefox-i18n-27.0b7/hu.xpi) = 362056 +SHA256 (xpi/firefox-i18n-27.0b7/hy-AM.xpi) = 4da85760ab8ff381e0cf38512dac0ae889374ace1bc7263b77bbadc935fb73c8 +SIZE (xpi/firefox-i18n-27.0b7/hy-AM.xpi) = 402985 +SHA256 (xpi/firefox-i18n-27.0b7/id.xpi) = 08b63f27deb3f6d4a6e04334b4561133ec8763063b7c6f370e33ccfba95247e6 +SIZE (xpi/firefox-i18n-27.0b7/id.xpi) = 339614 +SHA256 (xpi/firefox-i18n-27.0b7/is.xpi) = 54735e8557dee6baf5a94af7021436ebabcf1bad4863831e084d6efce0735e0e +SIZE (xpi/firefox-i18n-27.0b7/is.xpi) = 346533 +SHA256 (xpi/firefox-i18n-27.0b7/it.xpi) = 9b72e7ca347e456f2ad872d895d6f6c43abd905bbf7a5e533be01a83d917bacb +SIZE (xpi/firefox-i18n-27.0b7/it.xpi) = 291094 +SHA256 (xpi/firefox-i18n-27.0b7/ja.xpi) = a03c1633e2ea4b435fe53f5899fd8cc350f8be6b21075ad60efe9a4a33c133b3 +SIZE (xpi/firefox-i18n-27.0b7/ja.xpi) = 393701 +SHA256 (xpi/firefox-i18n-27.0b7/kk.xpi) = 7ddd368fecc0b9fc7067c693cf20bebf505e7d7436d3be956106aad39011ebf7 +SIZE (xpi/firefox-i18n-27.0b7/kk.xpi) = 396376 +SHA256 (xpi/firefox-i18n-27.0b7/km.xpi) = 6b4c6f832289e16658b9e107fcfef953ddf5470740be8261a77bf4db815b7fb0 +SIZE (xpi/firefox-i18n-27.0b7/km.xpi) = 418736 +SHA256 (xpi/firefox-i18n-27.0b7/kn.xpi) = 85521335e8dc82d334ebd51c5a35fe3be6ca7a050dc2b77e1081b670246fd5b9 +SIZE (xpi/firefox-i18n-27.0b7/kn.xpi) = 408354 +SHA256 (xpi/firefox-i18n-27.0b7/ko.xpi) = d1811d0b67fa83f1ba4882da877274947f2d5f81337b2243bbbceb6267874743 +SIZE (xpi/firefox-i18n-27.0b7/ko.xpi) = 363842 +SHA256 (xpi/firefox-i18n-27.0b7/ku.xpi) = d373d41f3890f881edf983979ebe577af03ccfeadf8b67637b1214f9079a0e95 +SIZE (xpi/firefox-i18n-27.0b7/ku.xpi) = 370258 +SHA256 (xpi/firefox-i18n-27.0b7/lij.xpi) = e5be19f0575cbf5b7446630d2b54ec393e3665c431cfbcfd4cff332efb8a8d65 +SIZE (xpi/firefox-i18n-27.0b7/lij.xpi) = 339920 +SHA256 (xpi/firefox-i18n-27.0b7/lt.xpi) = a94b0a4a4fc93262f53bfc0e9ea662673e219a93d217bb0d9dc857ecc081b236 +SIZE (xpi/firefox-i18n-27.0b7/lt.xpi) = 369742 +SHA256 (xpi/firefox-i18n-27.0b7/lv.xpi) = 5a1d0450bf02f0de1f47f85a1b3ed2a9b99de051f84971f82453177a14dcfab0 +SIZE (xpi/firefox-i18n-27.0b7/lv.xpi) = 343469 +SHA256 (xpi/firefox-i18n-27.0b7/mai.xpi) = 3eb2675cc37d0079c8402dc7bc2ff320961156b00577344b4fb0aca06028616b +SIZE (xpi/firefox-i18n-27.0b7/mai.xpi) = 396637 +SHA256 (xpi/firefox-i18n-27.0b7/mk.xpi) = 2d6d65e7d06e09e0ed973b5245f6010012214018682808bd49e1224d0712c194 +SIZE (xpi/firefox-i18n-27.0b7/mk.xpi) = 392648 +SHA256 (xpi/firefox-i18n-27.0b7/ml.xpi) = 115f601c739ed1c849a7df1c61fb51ec65bda3c20f4e7add12ae36da460ead8a +SIZE (xpi/firefox-i18n-27.0b7/ml.xpi) = 417097 +SHA256 (xpi/firefox-i18n-27.0b7/mr.xpi) = 4007b62d7924da2dddc1ec94c1d5062d7036e902251f1ae762a19c9ae5aaf677 +SIZE (xpi/firefox-i18n-27.0b7/mr.xpi) = 397292 +SHA256 (xpi/firefox-i18n-27.0b7/nb-NO.xpi) = 20ab880cedf85fea948a451d98e1a5cde8956a67491891d86d4489179e29737b +SIZE (xpi/firefox-i18n-27.0b7/nb-NO.xpi) = 346644 +SHA256 (xpi/firefox-i18n-27.0b7/nl.xpi) = 0da77d2632488a1dded1aa468826a5288ebc7465eb679ec4cce0ea9cacda86e9 +SIZE (xpi/firefox-i18n-27.0b7/nl.xpi) = 348115 +SHA256 (xpi/firefox-i18n-27.0b7/nn-NO.xpi) = 6689e80ce6de35911a425ed312a97381004f2d4799d79bb15c9d3cd46dc5acff +SIZE (xpi/firefox-i18n-27.0b7/nn-NO.xpi) = 344621 +SHA256 (xpi/firefox-i18n-27.0b7/or.xpi) = 2e17385ea1ee9fab358ce2aa26a3a1eb574449681e888984287b15d9ad1a7840 +SIZE (xpi/firefox-i18n-27.0b7/or.xpi) = 410077 +SHA256 (xpi/firefox-i18n-27.0b7/pa-IN.xpi) = cc9c5d09d3130364f812041ed4728278c5a4fbbc777b227757d177927b027a2e +SIZE (xpi/firefox-i18n-27.0b7/pa-IN.xpi) = 385305 +SHA256 (xpi/firefox-i18n-27.0b7/pl.xpi) = 545aa2bf381e44e89eeb529ff6610fde5ee95488a5889227892ae2522ad9ecf3 +SIZE (xpi/firefox-i18n-27.0b7/pl.xpi) = 348875 +SHA256 (xpi/firefox-i18n-27.0b7/pt-BR.xpi) = 9d7e18df930729c0c339caa4f7554b3accd5fc79ff54eef6bfad8ca8cbf28004 +SIZE (xpi/firefox-i18n-27.0b7/pt-BR.xpi) = 354079 +SHA256 (xpi/firefox-i18n-27.0b7/pt-PT.xpi) = bda8258188ed84b8b1767d6f1e8695c0327574cf85291278f9726c7fbc23a639 +SIZE (xpi/firefox-i18n-27.0b7/pt-PT.xpi) = 347961 +SHA256 (xpi/firefox-i18n-27.0b7/rm.xpi) = 3081adc2a3f797cb45883ca901073803dc8fce3893d41f78ecbf843de8a720e5 +SIZE (xpi/firefox-i18n-27.0b7/rm.xpi) = 349338 +SHA256 (xpi/firefox-i18n-27.0b7/ro.xpi) = 3932fcb3c5fc33587f3d9a8cba5da27fe58ea11b33071d1ba5c1a673ecff0fac +SIZE (xpi/firefox-i18n-27.0b7/ro.xpi) = 378835 +SHA256 (xpi/firefox-i18n-27.0b7/ru.xpi) = 2a235b0460af2b888722820ca07820311ba9dbf3d7282939f67dd3ff07f3e25a +SIZE (xpi/firefox-i18n-27.0b7/ru.xpi) = 336576 +SHA256 (xpi/firefox-i18n-27.0b7/si.xpi) = c3e5914eb27845dfe7283aec1d40523e8f05a6c8403f73023a47e2ae1faac072 +SIZE (xpi/firefox-i18n-27.0b7/si.xpi) = 387686 +SHA256 (xpi/firefox-i18n-27.0b7/sk.xpi) = cf06adc9eb92c9e90cae0491b9d73fc16aeec514d1df705c164e78d5cbfe0630 +SIZE (xpi/firefox-i18n-27.0b7/sk.xpi) = 364728 +SHA256 (xpi/firefox-i18n-27.0b7/sl.xpi) = 3bb0479b7b7c825b28a739b855ac12e2cb1df0c2304386a0c117d90da3f628c0 +SIZE (xpi/firefox-i18n-27.0b7/sl.xpi) = 347792 +SHA256 (xpi/firefox-i18n-27.0b7/son.xpi) = e5da10fe6d452551a815e5a93ec570e19aff8a66ea516bb3f78fcc1eebb48445 +SIZE (xpi/firefox-i18n-27.0b7/son.xpi) = 344436 +SHA256 (xpi/firefox-i18n-27.0b7/sq.xpi) = ba7b0b43f3624673e7a4739d15840260ee92aafbca867695271b947cf1b6c73f +SIZE (xpi/firefox-i18n-27.0b7/sq.xpi) = 357151 +SHA256 (xpi/firefox-i18n-27.0b7/sr.xpi) = e62c382ebb385c89811498fd18b7a0cae50a6a246ec9db22b365abe36f4d8d6e +SIZE (xpi/firefox-i18n-27.0b7/sr.xpi) = 399943 +SHA256 (xpi/firefox-i18n-27.0b7/sv-SE.xpi) = 6ccaf9700627d7239bfdc93f472463d71c2f7be07ea3de6b8035bce5168b3af0 +SIZE (xpi/firefox-i18n-27.0b7/sv-SE.xpi) = 352873 +SHA256 (xpi/firefox-i18n-27.0b7/ta.xpi) = 838a47b8d03292f6436c166d98e8022e4615035d1174373f64997c10aa610ed0 +SIZE (xpi/firefox-i18n-27.0b7/ta.xpi) = 400415 +SHA256 (xpi/firefox-i18n-27.0b7/te.xpi) = 40b3a9ff34c2326f477c6bdb68652f82e8703efb3999efc4e53df3d9d5d2faec +SIZE (xpi/firefox-i18n-27.0b7/te.xpi) = 417874 +SHA256 (xpi/firefox-i18n-27.0b7/th.xpi) = 900fa98d002ff5541fb8b9d60dbbe35ed78a8fd92e2628e252f55234124479fe +SIZE (xpi/firefox-i18n-27.0b7/th.xpi) = 394994 +SHA256 (xpi/firefox-i18n-27.0b7/tr.xpi) = 6ed4043f46f7c7495f653447d7a7b7b4b94c7b42ddbcf4a15c6985de7bbc9856 +SIZE (xpi/firefox-i18n-27.0b7/tr.xpi) = 356671 +SHA256 (xpi/firefox-i18n-27.0b7/uk.xpi) = f775ad9df7308063933a6f33f3d122a6d2fbac6a1eeee11bf2a3d0fdb5360eca +SIZE (xpi/firefox-i18n-27.0b7/uk.xpi) = 382506 +SHA256 (xpi/firefox-i18n-27.0b7/vi.xpi) = 9b44af4a08464db7e630f0ced55caeb57aac332e40931d01e2e2d4e8b15ea2ff +SIZE (xpi/firefox-i18n-27.0b7/vi.xpi) = 375489 +SHA256 (xpi/firefox-i18n-27.0b7/zh-CN.xpi) = 7ea92e40977989bd7e3cf6facccc9745715c95006fb37b87718563153363d0f8 +SIZE (xpi/firefox-i18n-27.0b7/zh-CN.xpi) = 374674 +SHA256 (xpi/firefox-i18n-27.0b7/zh-TW.xpi) = 6375a3905453b0ce993dc97b43c74a2ed61197cfaca530b6e88289dddf955aa0 +SIZE (xpi/firefox-i18n-27.0b7/zh-TW.xpi) = 372322 +SHA256 (xpi/firefox-i18n-27.0b7/zu.xpi) = 3da39230c650193eac1a20143c161a2e0ff4476963ebca62e9a7acb390dc2538 +SIZE (xpi/firefox-i18n-27.0b7/zu.xpi) = 357239 Modified: trunk/www/firefox-nightly/Makefile.hgrev ============================================================================== --- trunk/www/firefox-nightly/Makefile.hgrev Sun Jan 12 19:50:25 2014 (r1467) +++ trunk/www/firefox-nightly/Makefile.hgrev Sat Jan 18 15:17:25 2014 (r1468) @@ -1 +1 @@ -HGREV= 163029:0c63a95e2dd8 +HGREV= 164137:cc0ba35ea087 Modified: trunk/www/firefox-nightly/distinfo ============================================================================== --- trunk/www/firefox-nightly/distinfo Sun Jan 12 19:50:25 2014 (r1467) +++ trunk/www/firefox-nightly/distinfo Sat Jan 18 15:17:25 2014 (r1468) @@ -1,2 +1,2 @@ -SHA256 (firefox-nightly/0c63a95e2dd8.tar.bz2) = 7d69723381111b41e3de519c9cee3875a0401df94159158bec2e42d806df9353 -SIZE (firefox-nightly/0c63a95e2dd8.tar.bz2) = 132810958 +SHA256 (firefox-nightly/cc0ba35ea087.tar.bz2) = 6db3920e49e17a80669c71aea9d782195be5a1dc9e061ef9cfd49afa60779c8e +SIZE (firefox-nightly/cc0ba35ea087.tar.bz2) = 137793770 Modified: trunk/www/firefox-nightly/files/patch-bug826985 ============================================================================== --- trunk/www/firefox-nightly/files/patch-bug826985 Sun Jan 12 19:50:25 2014 (r1467) +++ trunk/www/firefox-nightly/files/patch-bug826985 Sat Jan 18 15:17:25 2014 (r1468) @@ -42,10 +42,10 @@ index b483cd1..f1dd1f0 100644 --- media/webrtc/signaling/test/Makefile.in +++ media/webrtc/signaling/test/Makefile.in -@@ -17,6 +17,7 @@ LIBS = \ +@@ -7,6 +7,7 @@ LIBS = \ + $(NSPR_LIBS) \ $(NSS_LIBS) \ $(REALTIME_LIBS) \ - $(MOZ_JS_LIBS) \ + $(MOZ_LIBV4L2_LIBS) \ $(DEPTH)/xpcom/glue/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \ $(DEPTH)/media/mtransport/standalone/$(LIB_PREFIX)mtransport_s.$(LIB_SUFFIX) \ Deleted: trunk/www/firefox-nightly/files/patch-bug878791 ============================================================================== --- trunk/www/firefox-nightly/files/patch-bug878791 Sat Jan 18 15:17:25 2014 (r1467) +++ /dev/null 00:00:00 1970 (deleted) @@ -1,11 +0,0 @@ ---- toolkit/components/osfile/modules/osfile_unix_allthreads.jsm.orig 2013-05-11 21:19:53.000000000 +0200 -+++ toolkit/components/osfile/modules/osfile_unix_allthreads.jsm 2013-06-02 17:15:05.000000000 +0200 -@@ -41,7 +41,7 @@ let Const = SharedAll.Constants.libc; - // 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 { Modified: trunk/www/firefox-nightly/files/patch-config-baseconfig.mk ============================================================================== --- trunk/www/firefox-nightly/files/patch-config-baseconfig.mk Sun Jan 12 19:50:25 2014 (r1467) +++ trunk/www/firefox-nightly/files/patch-config-baseconfig.mk Sat Jan 18 15:17:25 2014 (r1468) @@ -9,6 +9,6 @@ +idldir = $(datadir)/idl/%%MOZILLA%% +installdir = $(libdir)/%%MOZILLA%% +sdkdir = $(libdir)/%%MOZILLA%% - DIST = $(DEPTH)/dist - - # We do magic with OBJ_SUFFIX in config.mk, the following ensures we don't + ifndef TOP_DIST + TOP_DIST = dist + endif Modified: trunk/www/firefox/Makefile ============================================================================== --- trunk/www/firefox/Makefile Sun Jan 12 19:50:25 2014 (r1467) +++ trunk/www/firefox/Makefile Sat Jan 18 15:17:25 2014 (r1468) @@ -2,7 +2,7 @@ # $FreeBSD: head/www/firefox/Makefile 310227 2013-01-11 10:22:40Z ehaupt $ PORTNAME= firefox -DISTVERSION= 27.0b5 +DISTVERSION= 27.0b7 PORTEPOCH= 1 CATEGORIES= www ipv6 MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \ Modified: trunk/www/firefox/distinfo ============================================================================== --- trunk/www/firefox/distinfo Sun Jan 12 19:50:25 2014 (r1467) +++ trunk/www/firefox/distinfo Sat Jan 18 15:17:25 2014 (r1468) @@ -1,2 +1,2 @@ -SHA256 (firefox-27.0b5.source.tar.bz2) = d01f653e4dd71c1c1dd1949f6446ae1029e363a01a28dab30532ab9e8a7f82a0 -SIZE (firefox-27.0b5.source.tar.bz2) = 129734686 +SHA256 (firefox-27.0b7.source.tar.bz2) = 56f6922dc5889a4238aa2b148f549e0bbd048f373d2e9c6aa74eb31ca8910b60 +SIZE (firefox-27.0b7.source.tar.bz2) = 129775651 Modified: trunk/www/linux-tor-browser/Makefile ============================================================================== --- trunk/www/linux-tor-browser/Makefile Sun Jan 12 19:50:25 2014 (r1467) +++ trunk/www/linux-tor-browser/Makefile Sat Jan 18 15:17:25 2014 (r1468) @@ -2,10 +2,11 @@ PORTNAME= tor-browser DISTVERSIONPREFIX=linux32- -DISTVERSION= 3.5 +DISTVERSION= 3.5.1 DISTVERSIONSUFFIX=_${LOCALE} CATEGORIES= www security linux -MASTER_SITES= TOR/torbrowser/${DISTVERSION:S/-//g} +MASTER_SITES= https://people.torproject.org/~mikeperry/builds/${DISTVERSION}/ \ + TOR/torbrowser/${DISTVERSION:S/-//g} # XXX copied from security/tor, move to bsd.sites.mk MASTER_SITE_TOR=https://www.torproject.org/dist/%SUBDIR%/ \ https://archive.torproject.org/tor-package-archive/%SUBDIR%/ \ @@ -80,7 +81,7 @@ "Network;WebBrowser;Security;" \ false -ALL_LOCALES= de en-US es-ES fa fr it ko nl pl pt-PT ru vi zh-CN +ALL_LOCALES= ar de en-US es-ES fa fr it ko nl pl pt-PT ru vi zh-CN LOCALE= ${${PORT_OPTIONS:MLANG_*}} OPTIONS_DEFAULT=LANG_US Modified: trunk/www/linux-tor-browser/distinfo ============================================================================== --- trunk/www/linux-tor-browser/distinfo Sun Jan 12 19:50:25 2014 (r1467) +++ trunk/www/linux-tor-browser/distinfo Sat Jan 18 15:17:25 2014 (r1468) @@ -1,26 +1,28 @@ -SHA256 (tor-browser-linux32-3.5_de.tar.xz) = ba1e94771e890ae3905e5b2681f6f7c30064fc0be870c5fdd88c0d97fca92f51 -SIZE (tor-browser-linux32-3.5_de.tar.xz) = 25098360 -SHA256 (tor-browser-linux32-3.5_en-US.tar.xz) = b0b29b4e75cd4a1aaecf7f4716216edcfc5947516744e2eaeae38bec1d03cea1 -SIZE (tor-browser-linux32-3.5_en-US.tar.xz) = 24828428 -SHA256 (tor-browser-linux32-3.5_es-ES.tar.xz) = ee7eaea2fcafe870e238c0ebeae43b72428aba21c70cb8a6bbfaccc028f9d19e -SIZE (tor-browser-linux32-3.5_es-ES.tar.xz) = 25052036 -SHA256 (tor-browser-linux32-3.5_fa.tar.xz) = 55c6b22f13f3ce83f5f14629c6099ea0ab1380ad4b99a551dc12f613f3e1449c -SIZE (tor-browser-linux32-3.5_fa.tar.xz) = 25152336 -SHA256 (tor-browser-linux32-3.5_fr.tar.xz) = 3a97a57d5a564ff5802e651dc7c79eb153b454c089b145f051abd17686c530c5 -SIZE (tor-browser-linux32-3.5_fr.tar.xz) = 25108192 -SHA256 (tor-browser-linux32-3.5_it.tar.xz) = 6f1e30817ef8e3492f464baa91161e9073e9429af461f5ae6e0a9d6785d21941 -SIZE (tor-browser-linux32-3.5_it.tar.xz) = 25037992 -SHA256 (tor-browser-linux32-3.5_ko.tar.xz) = fcfa593f92e2aa89eaa5651d66a7c964f921983e4fdc47363bb3a3da504790b2 -SIZE (tor-browser-linux32-3.5_ko.tar.xz) = 25119916 -SHA256 (tor-browser-linux32-3.5_nl.tar.xz) = 0f213b9c9934d272a02d0ec23bff0420b414e88269017c494b7392bb9c5ca92d -SIZE (tor-browser-linux32-3.5_nl.tar.xz) = 25103996 -SHA256 (tor-browser-linux32-3.5_pl.tar.xz) = a265e5b936ff06da1eb04e00c5f4952b13476d70b5ccf450ff41b9e714f11460 -SIZE (tor-browser-linux32-3.5_pl.tar.xz) = 25114384 -SHA256 (tor-browser-linux32-3.5_pt-PT.tar.xz) = 863c9127cf81519af8a6d63beb4a663b99c63444d0dd78f0bc78b3c84d4b623c -SIZE (tor-browser-linux32-3.5_pt-PT.tar.xz) = 25106216 -SHA256 (tor-browser-linux32-3.5_ru.tar.xz) = c1519f354e22745f2791bb9cbeabd1da961e691e25ce0883d88fcf1896a38b6c -SIZE (tor-browser-linux32-3.5_ru.tar.xz) = 25095392 -SHA256 (tor-browser-linux32-3.5_vi.tar.xz) = d873992a91e14b4bf01238819df691fd1bbbe92820cc2927afd3e59612212711 -SIZE (tor-browser-linux32-3.5_vi.tar.xz) = 25134780 -SHA256 (tor-browser-linux32-3.5_zh-CN.tar.xz) = 3923ab1499ac150f4c102750830e23efe6c6fd078baba95729036f8d747d9c2c -SIZE (tor-browser-linux32-3.5_zh-CN.tar.xz) = 25129388 +SHA256 (tor-browser-linux32-3.5.1_ar.tar.xz) = 62d7221c41efab3a2dbd21164c815557e1d70714e5f54773117c974310e8ffba +SIZE (tor-browser-linux32-3.5.1_ar.tar.xz) = 25145236 +SHA256 (tor-browser-linux32-3.5.1_de.tar.xz) = 9422b74241b816d70c79e0a4c0d0b46d2577e1b7812a41457f0eb5d8fcf639f9 +SIZE (tor-browser-linux32-3.5.1_de.tar.xz) = 25105676 +SHA256 (tor-browser-linux32-3.5.1_en-US.tar.xz) = fbec38f8d15d0f07530fc80fe6f82e4ea9d58974fbdf8b06bceec042290c753a +SIZE (tor-browser-linux32-3.5.1_en-US.tar.xz) = 24836656 +SHA256 (tor-browser-linux32-3.5.1_es-ES.tar.xz) = 54853c2f40a7010c34aa4fc1feae1350821cfb00c5ce217c3a41bf9e8757af29 +SIZE (tor-browser-linux32-3.5.1_es-ES.tar.xz) = 25057092 +SHA256 (tor-browser-linux32-3.5.1_fa.tar.xz) = 71bf11f58466ce737a6d7825a05192ee16e8413a9003630688b6a0ff1cdf18e4 +SIZE (tor-browser-linux32-3.5.1_fa.tar.xz) = 25154228 +SHA256 (tor-browser-linux32-3.5.1_fr.tar.xz) = acb953275d1bf8fded7237bb9c7241e6e7c396ef129ea1f9d1244f6cf1a85535 +SIZE (tor-browser-linux32-3.5.1_fr.tar.xz) = 25124644 +SHA256 (tor-browser-linux32-3.5.1_it.tar.xz) = 58e3f569542d4cbac890c7784083d288a115b085a58b85714b6fc4c39868957f +SIZE (tor-browser-linux32-3.5.1_it.tar.xz) = 25051968 +SHA256 (tor-browser-linux32-3.5.1_ko.tar.xz) = 712858e6377f842efde5459c99a8dd8a085953cb6abde6dac363e4061422e928 +SIZE (tor-browser-linux32-3.5.1_ko.tar.xz) = 25131204 +SHA256 (tor-browser-linux32-3.5.1_nl.tar.xz) = a1efe289adb3211c0b82359b0bf4cfe1aa298ca1b88f0737cf6f0977bcb1b12c +SIZE (tor-browser-linux32-3.5.1_nl.tar.xz) = 25114788 +SHA256 (tor-browser-linux32-3.5.1_pl.tar.xz) = 47c79d86c1f326ec5280b743303ef72c1d9ad4f905c920e376c431ef76e85585 +SIZE (tor-browser-linux32-3.5.1_pl.tar.xz) = 25124012 +SHA256 (tor-browser-linux32-3.5.1_pt-PT.tar.xz) = b3ad549ebdfd51a1b2e342f74f2a42bca7886b9561e462e039fbd3f7132485a2 +SIZE (tor-browser-linux32-3.5.1_pt-PT.tar.xz) = 25114176 +SHA256 (tor-browser-linux32-3.5.1_ru.tar.xz) = 0a3fbd6bf9621b479c3085ce03c91298b471a0c5116d3e5f2b3949859ff76d58 +SIZE (tor-browser-linux32-3.5.1_ru.tar.xz) = 25108104 +SHA256 (tor-browser-linux32-3.5.1_vi.tar.xz) = b24bc59ae7f4ca30f9bd17ed04da28dac91fdfb6525c2524104cb9ecadc1683e +SIZE (tor-browser-linux32-3.5.1_vi.tar.xz) = 25142936 +SHA256 (tor-browser-linux32-3.5.1_zh-CN.tar.xz) = 19429550d1bf09caae01c408d251ce054913371b03fe12598179aec0102537ce +SIZE (tor-browser-linux32-3.5.1_zh-CN.tar.xz) = 25139892