diff --git a/.firefox.metadata b/.firefox.metadata
index f98525d..7278b06 100644
--- a/.firefox.metadata
+++ b/.firefox.metadata
@@ -1,2 +1,2 @@
-9c13012fec260c672e0e97ffb29f36fe360b02ad SOURCES/firefox-31.6.0esr.source.tar.bz2
-f8a36ea3087563eea6f1802578769d38bed294e9 SOURCES/firefox-langpacks-31.6.0esr-20150325.tar.bz2
+fed1ce45266ba990bbc44c1248368f6f9e122277 SOURCES/firefox-38.0esr.source.tar.bz2
+181886c28f0bc83a63159daa934b940a131156f4 SOURCES/firefox-langpacks-38.0esr-20150506.tar.bz2
diff --git a/.gitignore b/.gitignore
index 777d548..24b1edf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
-SOURCES/firefox-31.6.0esr.source.tar.bz2
-SOURCES/firefox-langpacks-31.6.0esr-20150325.tar.bz2
+SOURCES/firefox-38.0esr.source.tar.bz2
+SOURCES/firefox-langpacks-38.0esr-20150506.tar.bz2
diff --git a/SOURCES/aarch64-fix-skia.patch b/SOURCES/aarch64-fix-skia.patch
new file mode 100644
index 0000000..4b9958d
--- /dev/null
+++ b/SOURCES/aarch64-fix-skia.patch
@@ -0,0 +1,18 @@
+Based on https://github.com/google/skia/commit/b79ff56de23fef680ae7187040f2d6a9516b553d
+
+Index: mozilla-release/gfx/skia/trunk/src/core/SkUtilsArm.h
+===================================================================
+--- mozilla-release.orig/gfx/skia/trunk/src/core/SkUtilsArm.h
++++ mozilla-release/gfx/skia/trunk/src/core/SkUtilsArm.h
+@@ -21,9 +21,9 @@
+ #define SK_ARM_NEON_MODE_ALWAYS   1
+ #define SK_ARM_NEON_MODE_DYNAMIC  2
+ 
+-#if defined(SK_CPU_ARM32) && defined(__ARM_HAVE_OPTIONAL_NEON_SUPPORT)
++#if defined(__ARM_HAVE_OPTIONAL_NEON_SUPPORT)
+ #  define SK_ARM_NEON_MODE  SK_ARM_NEON_MODE_DYNAMIC
+-#elif defined(SK_CPU_ARM32) && defined(__ARM_HAVE_NEON) || defined(SK_CPU_ARM64)
++#elif defined(__ARM_HAVE_NEON)
+ #  define SK_ARM_NEON_MODE  SK_ARM_NEON_MODE_ALWAYS
+ #else
+ #  define SK_ARM_NEON_MODE  SK_ARM_NEON_MODE_NONE
diff --git a/SOURCES/build-no-format.patch b/SOURCES/build-no-format.patch
new file mode 100644
index 0000000..9bc6129
--- /dev/null
+++ b/SOURCES/build-no-format.patch
@@ -0,0 +1,11 @@
+diff -up mozilla-aurora/media/libstagefright/moz.build.no-format mozilla-aurora/media/libstagefright/moz.build
+--- mozilla-aurora/media/libstagefright/moz.build.no-format	2015-03-16 13:39:35.861598410 +0100
++++ mozilla-aurora/media/libstagefright/moz.build	2015-03-16 13:39:39.710557344 +0100
+@@ -141,7 +141,6 @@ elif CONFIG['GNU_CXX']:
+         '-Wno-sign-compare'
+     ]
+     CXXFLAGS += [
+-        '-Wno-format',
+         '-Wno-multichar',
+         '-Wno-sign-compare',
+         '-Wno-unused',
diff --git a/SOURCES/build-nspr-prbool.patch b/SOURCES/build-nspr-prbool.patch
new file mode 100644
index 0000000..a46f472
--- /dev/null
+++ b/SOURCES/build-nspr-prbool.patch
@@ -0,0 +1,66 @@
+diff -up mozilla-beta/media/webrtc/trunk/webrtc/base/nssidentity.h.prbool-fix mozilla-beta/media/webrtc/trunk/webrtc/base/nssidentity.h
+--- mozilla-beta/media/webrtc/trunk/webrtc/base/nssidentity.h.prbool-fix	2015-04-07 10:29:51.919137851 +0200
++++ mozilla-beta/media/webrtc/trunk/webrtc/base/nssidentity.h	2015-04-07 10:33:06.886532753 +0200
+@@ -15,6 +15,7 @@
+ 
+ #include "cert.h"
+ #include "nspr.h"
++#include "prtypes.h"
+ #include "hasht.h"
+ #include "keythi.h"
+ 
+diff -up mozilla-beta/modules/libmar/sign/nss_secutil.h.prbool-fix mozilla-beta/modules/libmar/sign/nss_secutil.h
+--- mozilla-beta/modules/libmar/sign/nss_secutil.h.prbool-fix	2015-04-07 10:33:13.079513533 +0200
++++ mozilla-beta/modules/libmar/sign/nss_secutil.h	2015-04-07 10:33:16.101504154 +0200
+@@ -11,6 +11,7 @@
+ #include "nss.h"
+ #include "pk11pub.h"
+ #include "cryptohi.h"
++#include "prtypes.h"
+ #include "hasht.h"
+ #include "cert.h"
+ #include "key.h"
+diff -up mozilla-beta/security/certverifier/ExtendedValidation.cpp.prbool-fix mozilla-beta/security/certverifier/ExtendedValidation.cpp
+--- mozilla-beta/security/certverifier/ExtendedValidation.cpp.prbool-fix	2015-04-07 10:36:42.693902941 +0200
++++ mozilla-beta/security/certverifier/ExtendedValidation.cpp	2015-04-07 10:36:45.925893606 +0200
+@@ -9,6 +9,7 @@
+ #include "cert.h"
+ #include "certdb.h"
+ #include "base64.h"
++#include "prtypes.h"
+ #include "hasht.h"
+ #include "pkix/stdkeywords.h"
+ #include "pkix/pkixtypes.h"
+diff -up mozilla-beta/security/certverifier/OCSPCache.h.prbool-fix mozilla-beta/security/certverifier/OCSPCache.h
+--- mozilla-beta/security/certverifier/OCSPCache.h.prbool-fix	2015-04-07 10:36:34.106927741 +0200
++++ mozilla-beta/security/certverifier/OCSPCache.h	2015-04-07 10:36:35.940922444 +0200
+@@ -25,6 +25,7 @@
+ #ifndef mozilla_psm_OCSPCache_h
+ #define mozilla_psm_OCSPCache_h
+ 
++#include "prtypes.h"
+ #include "hasht.h"
+ #include "mozilla/Mutex.h"
+ #include "mozilla/Vector.h"
+diff -up mozilla-beta/security/manager/ssl/src/nsCryptoHash.h.prbool-fix mozilla-beta/security/manager/ssl/src/nsCryptoHash.h
+--- mozilla-beta/security/manager/ssl/src/nsCryptoHash.h.prbool-fix	2015-04-07 10:36:15.887980360 +0200
++++ mozilla-beta/security/manager/ssl/src/nsCryptoHash.h	2015-04-07 10:36:18.124973899 +0200
+@@ -10,6 +10,7 @@
+ #include "nsICryptoHash.h"
+ #include "nsICryptoHMAC.h"
+ #include "nsNSSShutDown.h"
++#include "prtypes.h"
+ #include "hasht.h"
+ #include "secmodt.h"
+ 
+diff -up mozilla-beta/security/manager/ssl/tests/unit/tlsserver/cmd/ClientAuthServer.cpp.prbool-fix mozilla-beta/security/manager/ssl/tests/unit/tlsserver/cmd/ClientAuthServer.cpp
+--- mozilla-beta/security/manager/ssl/tests/unit/tlsserver/cmd/ClientAuthServer.cpp.prbool-fix	2015-04-07 10:36:25.065953853 +0200
++++ mozilla-beta/security/manager/ssl/tests/unit/tlsserver/cmd/ClientAuthServer.cpp	2015-04-07 10:36:27.319947343 +0200
+@@ -15,6 +15,7 @@
+ 
+ #include <stdio.h>
+ 
++#include "prtypes.h"
+ #include "hasht.h"
+ #include "ScopedNSSTypes.h"
+ #include "ssl.h"
diff --git a/SOURCES/disable-webm.patch b/SOURCES/disable-webm.patch
deleted file mode 100644
index 570713b..0000000
--- a/SOURCES/disable-webm.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up mozilla-esr31/browser/confvars.sh.webm-fix mozilla-esr31/browser/confvars.sh
---- mozilla-esr31/browser/confvars.sh.webm-fix	2014-07-21 13:56:53.522253529 +0200
-+++ mozilla-esr31/browser/confvars.sh	2014-07-21 13:57:49.983533186 +0200
-@@ -65,6 +65,6 @@ MOZ_PAY=1
- # Enable activities. These are used for FxOS developers currently.
- MOZ_ACTIVITIES=1
- MOZ_JSDOWNLOADS=1
--MOZ_WEBM_ENCODER=1
-+#MOZ_WEBM_ENCODER=1
- # Enable exact rooting on desktop.
- JSGC_USE_EXACT_ROOTING=1
diff --git a/SOURCES/firefox-centos-default-prefs.js b/SOURCES/firefox-centos-default-prefs.js
deleted file mode 100644
index 3818494..0000000
--- a/SOURCES/firefox-centos-default-prefs.js
+++ /dev/null
@@ -1,28 +0,0 @@
-pref("app.update.auto",                     false);
-pref("app.update.enabled",                  false);
-pref("app.update.autoInstallEnabled",       false);
-pref("browser.backspace_action",            2);
-pref("browser.display.use_system_colors",   true);
-pref("browser.download.folderList",         1);
-pref("browser.link.open_external",          3);
-pref("browser.shell.checkDefaultBrowser",   false);
-pref("general.smoothScroll",                true);
-pref("general.useragent.vendor",            " CentOS");
-pref("general.useragent.vendorSub",         "FIREFOX_RPM_VR");
-pref("intl.locale.matchOS",                 true);
-pref("storage.nfs_filesystem",              false);
-pref("dom.ipc.plugins.enabled.nswrapper*",  false);
-pref("network.manage-offline-status",       true);
-pref("toolkit.networkmanager.disable", false);
-pref("browser.startup.homepage",            "data:text/plain,browser.startup.homepage=file:///usr/share/doc/HTML/index.html");
-pref("toolkit.storage.synchronous",         0);
-pref("startup.homepage_override_url",       "http://www.centos.org");
-pref("startup.homepage_welcome_url",        "http://www.centos.org");
-/* Workaround for rhbz#1134876 */
-pref("javascript.options.baselinejit",      false);
-pref("extensions.shownSelectionUI",         true);
-/* Workaround for rhbz#1110291 */
-pref("network.negotiate-auth.allow-insecure-ntlm-v1", true);
-/* Workaround for mozbz#1063315 */
-pref("security.use_mozillapkix_verification", false);
-pref("geo.wifi.uri", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
diff --git a/SOURCES/firefox-debug.patch b/SOURCES/firefox-debug.patch
new file mode 100644
index 0000000..0fdccb1
--- /dev/null
+++ b/SOURCES/firefox-debug.patch
@@ -0,0 +1,24 @@
+diff -up mozilla-release/browser/installer/package-manifest.in.old mozilla-release/browser/installer/package-manifest.in
+--- mozilla-release/browser/installer/package-manifest.in.old	2015-04-03 04:30:05.000000000 +0200
++++ mozilla-release/browser/installer/package-manifest.in	2015-04-07 13:17:44.180343700 +0200
+@@ -608,7 +608,7 @@
+ @RESPATH@/components/MozKeyboard.js
+ @RESPATH@/components/InputMethod.manifest
+ 
+-#ifdef MOZ_DEBUG
++#ifdef ENABLE_TESTS
+ @RESPATH@/components/TestInterfaceJS.js
+ @RESPATH@/components/TestInterfaceJS.manifest
+ #endif
+diff -up firefox-38.0/mozilla-beta/js/src/jit/shared/CodeGenerator-shared-inl.h.debug firefox-38.0/mozilla-beta/js/src/jit/shared/CodeGenerator-shared-inl.h
+--- mozilla-beta/js/src/jit/shared/CodeGenerator-shared-inl.h.debug	2015-03-31 00:54:47.000000000 +0200
++++ mozilla-beta/js/src/jit/shared/CodeGenerator-shared-inl.h	2015-04-07 21:36:41.136826585 +0200
+@@ -189,7 +189,7 @@ CodeGeneratorShared::verifyHeapAccessDis
+                                                  Scalar::Type type, const Operand& mem,
+                                                  LAllocation alloc)
+ {
+-#ifdef DEBUG
++#if 0
+     using namespace Disassembler;
+ 
+     OtherOperand op;
diff --git a/SOURCES/firefox-default.patch b/SOURCES/firefox-default.patch
index 51edd59..f7b7486 100644
--- a/SOURCES/firefox-default.patch
+++ b/SOURCES/firefox-default.patch
@@ -1,16 +1,7 @@
 diff -up mozilla-aurora/browser/components/preferences/advanced.xul.default mozilla-aurora/browser/components/preferences/advanced.xul
---- mozilla-aurora/browser/components/preferences/advanced.xul.default	2014-05-06 13:17:14.000000000 +0200
-+++ mozilla-aurora/browser/components/preferences/advanced.xul	2014-05-06 14:07:22.972356178 +0200
-@@ -40,7 +40,7 @@
- #endif
-       <preference id="layout.spellcheckDefault"        name="layout.spellcheckDefault"        type="int"/>
- 
--#ifdef HAVE_SHELL_SERVICE
-+#ifdef 0
-       <preference id="browser.shell.checkDefaultBrowser"
-                   name="browser.shell.checkDefaultBrowser"
-                   type="bool"/>
-@@ -68,7 +68,7 @@
+--- mozilla-aurora/browser/components/preferences/advanced.xul.default	2015-03-12 13:21:15.000000000 +0100
++++ mozilla-aurora/browser/components/preferences/advanced.xul	2015-03-12 14:23:22.419249264 +0100
+@@ -58,7 +58,7 @@
                    type="bool"/>
  
       <!-- Update tab -->
@@ -19,8 +10,8 @@ diff -up mozilla-aurora/browser/components/preferences/advanced.xul.default mozi
        <preference id="app.update.enabled"              name="app.update.enabled"              type="bool"/>
        <preference id="app.update.auto"                 name="app.update.auto"                 type="bool"/>
  #ifdef XP_WIN
-@@ -102,7 +102,7 @@
-                   type="bool"/>
+@@ -95,7 +95,7 @@
+                   type="int"/>
      </preferences>
  
 -#ifdef HAVE_SHELL_SERVICE
@@ -28,19 +19,9 @@ diff -up mozilla-aurora/browser/components/preferences/advanced.xul.default mozi
      <stringbundle id="bundleShell" src="chrome://browser/locale/shellservice.properties"/>
      <stringbundle id="bundleBrand" src="chrome://branding/locale/brand.properties"/>
  #endif
-@@ -170,7 +170,7 @@
-                       preference="layout.spellcheckDefault"/>
-           </groupbox>
- 
--#ifdef HAVE_SHELL_SERVICE
-+#ifdef 0
-           <!-- System Defaults -->
-           <groupbox id="systemDefaultsGroup" orient="vertical">
-             <caption label="&systemDefaults.label;"/>
-diff -up mozilla-aurora/browser/components/shell/src/Makefile.in.default mozilla-aurora/browser/components/shell/src/Makefile.in
-diff -up mozilla-aurora/browser/components/shell/src/nsGNOMEShellService.cpp.default mozilla-aurora/browser/components/shell/src/nsGNOMEShellService.cpp
---- mozilla-aurora/browser/components/shell/src/nsGNOMEShellService.cpp.default	2014-05-06 13:17:14.000000000 +0200
-+++ mozilla-aurora/browser/components/shell/src/nsGNOMEShellService.cpp	2014-05-06 14:07:22.973356181 +0200
+diff -up mozilla-aurora/browser/components/shell/nsGNOMEShellService.cpp.default mozilla-aurora/browser/components/shell/nsGNOMEShellService.cpp
+--- mozilla-aurora/browser/components/shell/nsGNOMEShellService.cpp.default	2015-03-12 13:21:16.000000000 +0100
++++ mozilla-aurora/browser/components/shell/nsGNOMEShellService.cpp	2015-03-12 14:23:22.419249264 +0100
 @@ -149,8 +149,8 @@ nsGNOMEShellService::GetAppPathFromLaunc
  bool
  nsGNOMEShellService::KeyMatchesAppName(const char *aKeyValue) const
@@ -90,9 +71,9 @@ diff -up mozilla-aurora/browser/components/shell/src/nsGNOMEShellService.cpp.def
      appKeyValue.AppendLiteral(" %s");
  
      for (unsigned int i = 0; i < ArrayLength(appProtocols); ++i) {
-diff -up mozilla-aurora/browser/components/shell/src/nsGNOMEShellService.h.default mozilla-aurora/browser/components/shell/src/nsGNOMEShellService.h
---- mozilla-aurora/browser/components/shell/src/nsGNOMEShellService.h.default	2014-05-06 13:17:14.000000000 +0200
-+++ mozilla-aurora/browser/components/shell/src/nsGNOMEShellService.h	2014-05-06 14:07:22.973356181 +0200
+diff -up mozilla-aurora/browser/components/shell/nsGNOMEShellService.h.default mozilla-aurora/browser/components/shell/nsGNOMEShellService.h
+--- mozilla-aurora/browser/components/shell/nsGNOMEShellService.h.default	2015-03-12 13:21:16.000000000 +0100
++++ mozilla-aurora/browser/components/shell/nsGNOMEShellService.h	2015-03-12 14:23:22.420249261 +0100
 @@ -13,7 +13,7 @@
  class nsGNOMEShellService MOZ_FINAL : public nsIShellService
  {
diff --git a/SOURCES/firefox-enable-addons.patch b/SOURCES/firefox-enable-addons.patch
index ba74f5f..751d2ce 100644
--- a/SOURCES/firefox-enable-addons.patch
+++ b/SOURCES/firefox-enable-addons.patch
@@ -1,6 +1,6 @@
 diff -up mozilla-aurora/browser/app/profile/firefox.js.addons mozilla-aurora/browser/app/profile/firefox.js
---- mozilla-aurora/browser/app/profile/firefox.js.addons	2014-05-06 13:17:13.000000000 +0200
-+++ mozilla-aurora/browser/app/profile/firefox.js	2014-05-06 14:16:32.678968008 +0200
+--- mozilla-aurora/browser/app/profile/firefox.js.addons	2015-03-12 13:21:14.000000000 +0100
++++ mozilla-aurora/browser/app/profile/firefox.js	2015-03-12 14:25:39.974909169 +0100
 @@ -65,7 +65,8 @@ pref("extensions.hotfix.certs.1.sha1Fing
  
  // Disable add-ons that are not installed by the user in all scopes by default.
@@ -12,14 +12,28 @@ diff -up mozilla-aurora/browser/app/profile/firefox.js.addons mozilla-aurora/bro
  // Dictionary download preference
  pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/firefox/dictionaries/");
 diff -up mozilla-aurora/toolkit/mozapps/extensions/internal/XPIProvider.jsm.addons mozilla-aurora/toolkit/mozapps/extensions/internal/XPIProvider.jsm
---- mozilla-aurora/toolkit/mozapps/extensions/internal/XPIProvider.jsm.addons	2014-05-06 14:16:32.680968014 +0200
-+++ mozilla-aurora/toolkit/mozapps/extensions/internal/XPIProvider.jsm	2014-05-06 14:17:29.482132549 +0200
-@@ -1894,7 +1894,7 @@ this.XPIProvider = {
-         this.showUpgradeUI();
-         flushCaches = true;
-       }
--      else if (aAppChanged === undefined) {
-+      else {
-         // For new profiles we will never need to show the add-on selection UI
-         Services.prefs.setBoolPref(PREF_SHOWN_SELECTION_UI, true);
+--- mozilla-aurora/toolkit/mozapps/extensions/internal/XPIProvider.jsm.addons	2015-03-12 14:25:39.975909166 +0100
++++ mozilla-aurora/toolkit/mozapps/extensions/internal/XPIProvider.jsm	2015-03-12 15:23:05.879366812 +0100
+@@ -2102,11 +2102,7 @@ this.XPIProvider = {
+ 
+       AddonManagerPrivate.markProviderSafe(this);
+ 
+-      if (aAppChanged === undefined) {
+-        // For new profiles we will never need to show the add-on selection UI
+-        Services.prefs.setBoolPref(PREF_SHOWN_SELECTION_UI, true);
+-      }
+-      else if (aAppChanged && !this.allAppGlobal &&
++      if (aAppChanged && !this.allAppGlobal &&
+                Preferences.get(PREF_EM_SHOW_MISMATCH_UI, true)) {
+         if (!Preferences.get(PREF_SHOWN_SELECTION_UI, false)) {
+           // Flip a flag to indicate that we interrupted startup with an interactive prompt
+@@ -2126,6 +2122,9 @@ this.XPIProvider = {
+             flushCaches = true;
+           }
+         }
++      } else {
++        // For new profiles we will never need to show the add-on selection UI
++        Services.prefs.setBoolPref(PREF_SHOWN_SELECTION_UI, true);
        }
+ 
+       if (flushCaches) {
diff --git a/SOURCES/firefox-mozconfig b/SOURCES/firefox-mozconfig
index 5c51689..19beaf1 100755
--- a/SOURCES/firefox-mozconfig
+++ b/SOURCES/firefox-mozconfig
@@ -32,6 +32,8 @@ ac_add_options --with-system-jpeg
 ac_add_options --with-system-zlib
 ac_add_options --with-mozilla-api-keyfile=../mozilla-api-key
 ac_add_options --disable-exact-rooting
+ac_add_options --enable-release
+ac_add_options --enable-skia
 
 export BUILD_OFFICIAL=1
 export CFLAGS="$CFLAGS -gdwarf-2"
diff --git a/SOURCES/firefox-nss-3.18.0.patch b/SOURCES/firefox-nss-3.18.0.patch
new file mode 100644
index 0000000..1a2d195
--- /dev/null
+++ b/SOURCES/firefox-nss-3.18.0.patch
@@ -0,0 +1,12 @@
+diff -up mozilla-release/configure.in.old mozilla-release/configure.in
+--- mozilla-release/configure.in.old	2015-04-28 20:31:45.000000000 +0200
++++ mozilla-release/configure.in	2015-04-28 20:32:40.807783614 +0200
+@@ -3627,7 +3627,7 @@ MOZ_ARG_WITH_BOOL(system-nss,
+     _USE_SYSTEM_NSS=1 )
+ 
+ if test -n "$_USE_SYSTEM_NSS"; then
+-    AM_PATH_NSS(3.18.1, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
++    AM_PATH_NSS(3.18.0, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
+ fi
+ 
+ if test -n "$MOZ_NATIVE_NSS"; then
diff --git a/SOURCES/firefox-ppc64le.patch b/SOURCES/firefox-ppc64le.patch
new file mode 100644
index 0000000..6465eec
--- /dev/null
+++ b/SOURCES/firefox-ppc64le.patch
@@ -0,0 +1,28 @@
+diff -up firefox-36.0/mozilla-release/gfx/skia/trunk/include/core/SkPreConfig.h.ppc64le firefox-36.0/mozilla-release/gfx/skia/trunk/include/core/SkPreConfig.h
+--- firefox-36.0/mozilla-release/gfx/skia/trunk/include/core/SkPreConfig.h.ppc64le	2015-02-20 03:01:40.000000000 +0100
++++ firefox-36.0/mozilla-release/gfx/skia/trunk/include/core/SkPreConfig.h	2015-03-06 15:52:58.298050379 +0100
+@@ -90,6 +90,13 @@
+ #endif
+ 
+ //////////////////////////////////////////////////////////////////////
++#if !defined(SK_CPU_BENDIAN) && !defined(SK_CPU_LENDIAN)
++    #if defined(__BIG_ENDIAN__)
++         #define SK_CPU_BENDIAN
++    #elif defined(__LITTLE_ENDIAN__)
++        #define SK_CPU_LENDIAN
++    #endif
++#endif
+ 
+ #if !defined(SK_CPU_BENDIAN) && !defined(SK_CPU_LENDIAN)
+     #if defined(__sparc) || defined(__sparc__) || \
+diff -up firefox-36.0/mozilla-release/js/src/jsdtoa.cpp.ppc64le firefox-36.0/mozilla-release/js/src/jsdtoa.cpp
+--- firefox-36.0/mozilla-release/js/src/jsdtoa.cpp.ppc64le	2015-02-20 03:01:49.000000000 +0100
++++ firefox-36.0/mozilla-release/js/src/jsdtoa.cpp	2015-03-06 15:54:38.348048226 +0100
+@@ -52,6 +52,7 @@ static inline void dtoa_free(void* p) {
+ #define MALLOC dtoa_malloc
+ #define FREE dtoa_free
+ #include "dtoa.c"
++#undef CONST
+ 
+ /* Mapping of JSDToStrMode -> js_dtoa mode */
+ static const uint8_t dtoaModes[] = {
diff --git a/SOURCES/mozilla-1005535.patch b/SOURCES/mozilla-1005535.patch
new file mode 100644
index 0000000..2f0381b
--- /dev/null
+++ b/SOURCES/mozilla-1005535.patch
@@ -0,0 +1,194 @@
+# HG changeset patch
+# Parent b7eb1ce0237d6125b75bc8ff1cb3afc328d6e78c
+# User Steve Singer <steve@ssinger.info>
+Bug 1005535 - Get skia GPU building on big endian.
+
+diff --git a/configure.in b/configure.in
+--- a/configure.in
++++ b/configure.in
+@@ -8231,21 +8231,21 @@ dnl Skia
+ dnl ========================================================
+ if test "$MOZ_ENABLE_SKIA"; then
+   AC_DEFINE(MOZ_ENABLE_SKIA)
+   AC_DEFINE(USE_SKIA)
+   if test "${MOZ_WIDGET_TOOLKIT}" = "android" -o x"$MOZ_WIDGET_TOOLKIT" = x"gonk"; then
+     AC_DEFINE(SK_BUILD_FOR_ANDROID_NDK)
+   fi
+ 
+-  if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" -a -z "$MOZ_DISABLE_SKIA_GPU" ; then
++#  if test "${CPU_ARCH}" != "ppc" -a "${CPU_ARCH}" != "ppc64" -a "${CPU_ARCH}" != "sparc" -a -z "$MOZ_DISABLE_SKIA_GPU" ; then
+     MOZ_ENABLE_SKIA_GPU=1
+     AC_DEFINE(USE_SKIA_GPU)
+     AC_SUBST(MOZ_ENABLE_SKIA_GPU)
+-  fi
++#  fi
+ fi
+ AC_SUBST(MOZ_ENABLE_SKIA)
+ 
+ dnl ========================================================
+ dnl disable xul
+ dnl ========================================================
+ MOZ_ARG_DISABLE_BOOL(xul,
+ [  --disable-xul           Disable XUL],
+diff --git a/gfx/skia/generate_mozbuild.py b/gfx/skia/generate_mozbuild.py
+--- a/gfx/skia/generate_mozbuild.py
++++ b/gfx/skia/generate_mozbuild.py
+@@ -236,17 +236,17 @@ def generate_separated_sources(platform_
+         return True
+ 
+     return False
+ 
+   separated = {
+     'common': {
+       #'trunk/src/effects/gradients/SkGradientTileProc.cpp',
+       'trunk/src/gpu/gl/GrGLCreateNativeInterface_none.cpp',
+-      'trunk/src/ports/SkDiscardableMemory_none.cpp',
++      #'trunk/src/ports/SkDiscardableMemory_none.cpp',
+       'trunk/src/ports/SkImageDecoder_empty.cpp',
+       'trunk/src/ports/SkMemory_mozalloc.cpp',
+       # 'trunk/src/images/SkImages.cpp',
+       # 'trunk/src/images/SkImageRef.cpp',
+       # 'trunk/src/images/SkImageRef_GlobalPool.cpp',
+       # 'trunk/src/images/SkImageRefPool.cpp',
+       # 'trunk/src/images/SkImageDecoder.cpp',
+       # 'trunk/src/images/SkImageDecoder_Factory.cpp',
+diff --git a/gfx/skia/moz.build b/gfx/skia/moz.build
+--- a/gfx/skia/moz.build
++++ b/gfx/skia/moz.build
+@@ -847,17 +847,16 @@ else:
+         'trunk/src/opts/SkBitmapProcState_opts_none.cpp',
+         'trunk/src/opts/SkBlitMask_opts_none.cpp',
+         'trunk/src/opts/SkBlitRow_opts_none.cpp',
+         'trunk/src/opts/SkBlurImage_opts_none.cpp',
+         'trunk/src/opts/SkMorphology_opts_none.cpp',
+         'trunk/src/opts/SkTextureCompression_opts_none.cpp',
+         'trunk/src/opts/SkUtils_opts_none.cpp',
+         'trunk/src/opts/SkXfermode_opts_none.cpp',
+-        'trunk/src/ports/SkDiscardableMemory_none.cpp',
+     ]
+ 
+ 
+ # can we find a better way of dealing with asm sources?
+ 
+ # left out of UNIFIED_SOURCES for now; that's not C++ anyway, nothing else to unify it with
+ if not CONFIG['INTEL_ARCHITECTURE'] and CONFIG['CPU_ARCH'] == 'arm' and CONFIG['GNU_CC']:
+     SOURCES += [
+diff --git a/gfx/skia/trunk/include/config/SkUserConfig.h b/gfx/skia/trunk/include/config/SkUserConfig.h
+--- a/gfx/skia/trunk/include/config/SkUserConfig.h
++++ b/gfx/skia/trunk/include/config/SkUserConfig.h
+@@ -192,16 +192,17 @@
+ 
+ #if defined(SK_CPU_ARM32) || defined(SK_CPU_ARM64)
+ #  define SK_BARRIERS_PLATFORM_H "skia/SkBarriers_arm.h"
+ #else
+ #  define SK_BARRIERS_PLATFORM_H "skia/SkBarriers_x86.h"
+ #endif
+ 
+ // On all platforms we have this byte order
++
+ #define SK_A32_SHIFT 24
+ #define SK_R32_SHIFT 16
+ #define SK_G32_SHIFT 8
+ #define SK_B32_SHIFT 0
+ 
+ #define SK_ALLOW_STATIC_GLOBAL_INITIALIZERS 0
+ 
+ #define SK_SUPPORT_LEGACY_GETDEVICE
+diff --git a/gfx/skia/trunk/include/core/SkColorPriv.h b/gfx/skia/trunk/include/core/SkColorPriv.h
+--- a/gfx/skia/trunk/include/core/SkColorPriv.h
++++ b/gfx/skia/trunk/include/core/SkColorPriv.h
+@@ -27,37 +27,27 @@
+  *  For easier compatibility with Skia's GPU backend, we further restrict these
+  *  to either (in memory-byte-order) RGBA or BGRA. Note that this "order" does
+  *  not directly correspond to the same shift-order, since we have to take endianess
+  *  into account.
+  *
+  *  Here we enforce this constraint.
+  */
+ 
+-#ifdef SK_CPU_BENDIAN
+-    #define SK_RGBA_R32_SHIFT   24
+-    #define SK_RGBA_G32_SHIFT   16
+-    #define SK_RGBA_B32_SHIFT   8
+-    #define SK_RGBA_A32_SHIFT   0
+ 
+-    #define SK_BGRA_B32_SHIFT   24
+-    #define SK_BGRA_G32_SHIFT   16
+-    #define SK_BGRA_R32_SHIFT   8
+-    #define SK_BGRA_A32_SHIFT   0
+-#else
+     #define SK_RGBA_R32_SHIFT   0
+     #define SK_RGBA_G32_SHIFT   8
+     #define SK_RGBA_B32_SHIFT   16
+     #define SK_RGBA_A32_SHIFT   24
+ 
+     #define SK_BGRA_B32_SHIFT   0
+     #define SK_BGRA_G32_SHIFT   8
+     #define SK_BGRA_R32_SHIFT   16
+     #define SK_BGRA_A32_SHIFT   24
+-#endif
++
+ 
+ #if defined(SK_PMCOLOR_IS_RGBA) && defined(SK_PMCOLOR_IS_BGRA)
+     #error "can't define PMCOLOR to be RGBA and BGRA"
+ #endif
+ 
+ #define LOCAL_PMCOLOR_SHIFTS_EQUIVALENT_TO_RGBA  \
+     (SK_A32_SHIFT == SK_RGBA_A32_SHIFT &&    \
+      SK_R32_SHIFT == SK_RGBA_R32_SHIFT &&    \
+diff --git a/gfx/skia/trunk/include/core/SkImageInfo.h b/gfx/skia/trunk/include/core/SkImageInfo.h
+--- a/gfx/skia/trunk/include/core/SkImageInfo.h
++++ b/gfx/skia/trunk/include/core/SkImageInfo.h
+@@ -83,19 +83,20 @@ enum SkColorType {
+ 
+     kLastEnum_SkColorType = kIndex_8_SkColorType,
+ 
+ #if SK_PMCOLOR_BYTE_ORDER(B,G,R,A)
+     kN32_SkColorType = kBGRA_8888_SkColorType,
+ #elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A)
+     kN32_SkColorType = kRGBA_8888_SkColorType,
+ #else
+-#error "SK_*32_SHFIT values must correspond to BGRA or RGBA byte order"
++     kN32_SkColorType = kBGRA_8888_SkColorType
+ #endif
+ 
++
+ #ifdef SK_SUPPORT_LEGACY_N32_NAME
+     kPMColor_SkColorType = kN32_SkColorType
+ #endif
+ };
+ 
+ static int SkColorTypeBytesPerPixel(SkColorType ct) {
+     static const uint8_t gSize[] = {
+         0,  // Unknown
+diff --git a/gfx/skia/trunk/include/gpu/GrTypes.h b/gfx/skia/trunk/include/gpu/GrTypes.h
+--- a/gfx/skia/trunk/include/gpu/GrTypes.h
++++ b/gfx/skia/trunk/include/gpu/GrTypes.h
+@@ -304,25 +304,23 @@ enum GrPixelConfig {
+      * Byte order is r, g, b, a.  This color format is 32 bits per channel
+      */
+     kRGBA_float_GrPixelConfig,
+     kLast_GrPixelConfig = kRGBA_float_GrPixelConfig
+ };
+ static const int kGrPixelConfigCnt = kLast_GrPixelConfig + 1;
+ 
+ // Aliases for pixel configs that match skia's byte order.
+-#ifndef SK_CPU_LENDIAN
+-    #error "Skia gpu currently assumes little endian"
+-#endif
++
+ #if SK_PMCOLOR_BYTE_ORDER(B,G,R,A)
+     static const GrPixelConfig kSkia8888_GrPixelConfig = kBGRA_8888_GrPixelConfig;
+ #elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A)
+     static const GrPixelConfig kSkia8888_GrPixelConfig = kRGBA_8888_GrPixelConfig;
+ #else
+-    #error "SK_*32_SHIFT values must correspond to GL_BGRA or GL_RGBA format."
++    static const GrPixelConfig kSkia8888_GrPixelConfig = kBGRA_8888_GrPixelConfig;
+ #endif
+ 
+ // Returns true if the pixel config is a GPU-specific compressed format
+ // representation.
+ static inline bool GrPixelConfigIsCompressed(GrPixelConfig config) {
+     switch (config) {
+         case kETC1_GrPixelConfig:
+         case kLATC_GrPixelConfig:
diff --git a/SOURCES/mozilla-1129859-dictfix2.patch b/SOURCES/mozilla-1129859-dictfix2.patch
deleted file mode 100644
index c45ac19..0000000
--- a/SOURCES/mozilla-1129859-dictfix2.patch
+++ /dev/null
@@ -1,419 +0,0 @@
-# HG changeset patch
-# Parent 58ce6051edf56ce70c1a62e88bd879a6e56d9239
-# User Jan Horak <jhorak@redhat.com>
-# Bug 1129859 - Always use '-' as separator between lang-region in dictionary names, fixes problems with system dictionaries which has '_' as separator
-try: -b do -p all -u all -t none
-
-diff --git a/editor/composer/nsEditorSpellCheck.cpp b/editor/composer/nsEditorSpellCheck.cpp
---- a/editor/composer/nsEditorSpellCheck.cpp
-+++ b/editor/composer/nsEditorSpellCheck.cpp
-diff --git a/extensions/spellcheck/hunspell/src/mozHunspell.cpp b/extensions/spellcheck/hunspell/src/mozHunspell.cpp
---- a/extensions/spellcheck/hunspell/src/mozHunspell.cpp
-+++ b/extensions/spellcheck/hunspell/src/mozHunspell.cpp
-@@ -485,16 +485,19 @@ mozHunspell::LoadDictionariesFromDir(nsI
-     rv = file->Exists(&check);
-     if (NS_FAILED(rv) || !check)
-       continue;
- 
- #ifdef DEBUG_bsmedberg
-     printf("Adding dictionary: %s\n", NS_ConvertUTF16toUTF8(dict).get());
- #endif
- 
-+    // Replace '_' separator with '-'
-+    dict.ReplaceChar("_", '-');
-+
-     mDictionaries.Put(dict, file);
-   }
- 
-   return NS_OK;
- }
- 
- nsresult mozHunspell::ConvertCharset(const char16_t* aStr, char ** aDst)
- {
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.aff b/extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.dic b/extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.sug b/extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.sug
-rename from extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.sug
-rename to extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.sug
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.test b/extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.wrong b/extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/1463589_utf.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/1463589-utf.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.aff b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.dic b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.good b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.sug b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.sug
-rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.sug
-rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.sug
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.test b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.wrong b/extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/allcaps_utf.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/allcaps-utf.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.aff b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.dic b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.good b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.sug b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.sug
-rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.sug
-rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.sug
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.test b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/base_utf.wrong b/extensions/spellcheck/hunspell/tests/unit/data/base-utf.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/base_utf.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/base-utf.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.aff b/extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.dic b/extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.test b/extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/colons_in_words.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/colons-in-words.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/condition_utf.aff b/extensions/spellcheck/hunspell/tests/unit/data/condition-utf.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/condition_utf.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/condition-utf.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/condition_utf.dic b/extensions/spellcheck/hunspell/tests/unit/data/condition-utf.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/condition_utf.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/condition-utf.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/condition_utf.good b/extensions/spellcheck/hunspell/tests/unit/data/condition-utf.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/condition_utf.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/condition-utf.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/condition_utf.test b/extensions/spellcheck/hunspell/tests/unit/data/condition-utf.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/condition_utf.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/condition-utf.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/condition_utf.wrong b/extensions/spellcheck/hunspell/tests/unit/data/condition-utf.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/condition_utf.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/condition-utf.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.aff b/extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.dic b/extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.test b/extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.wrong b/extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/digits_in_words.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/digits-in-words.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.aff b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.dic b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.good b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.sug b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.sug
-rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.sug
-rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.sug
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.test b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.wrong b/extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/ngram_utf_fix.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/ngram-utf-fix.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.aff b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.dic b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.good b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.test b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.wrong b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.aff b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.dic b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.good b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.test b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.wrong b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_cpdpat2.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-cpdpat2.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.aff b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.dic b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.good b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.sug b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.sug
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.sug
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.sug
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.test b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.wrong b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword1.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword1.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.aff b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.dic b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.good b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.sug b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.sug
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.sug
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.sug
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.test b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.wrong b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_forbiddenword2.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-forbiddenword2.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.aff b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.dic b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.good b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.sug b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.sug
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.sug
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.sug
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.test b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.wrong b/extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/opentaal_keepcase.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/opentaal-keepcase.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.aff b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.dic b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.good b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.test b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.aff b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.dic b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.good b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.test b/extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_bom2.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-bom2.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.aff b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.aff
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.aff
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.aff
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.dic b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.dic
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.dic
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.dic
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.good b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.good
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.good
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.good
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.sug b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.sug
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.sug
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.sug
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.test b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.test
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.test
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.test
-diff --git a/extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.wrong b/extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.wrong
-rename from extensions/spellcheck/hunspell/tests/unit/data/utf8_nonbmp.wrong
-rename to extensions/spellcheck/hunspell/tests/unit/data/utf8-nonbmp.wrong
-diff --git a/extensions/spellcheck/hunspell/tests/unit/test_hunspell.js b/extensions/spellcheck/hunspell/tests/unit/test_hunspell.js
---- a/extensions/spellcheck/hunspell/tests/unit/test_hunspell.js
-+++ b/extensions/spellcheck/hunspell/tests/unit/test_hunspell.js
-@@ -3,21 +3,21 @@
-  */
- 
- const Cc = Components.classes;
- const Ci = Components.interfaces;
- 
- const tests = [
-     ["affixes", "iso-8859-1"],
-     ["condition", "iso-8859-1"],
--    ["condition_utf", "UTF-8"],
-+    ["condition-utf", "UTF-8"],
-     ["base", "iso-8859-1"],
--    ["base_utf", "UTF-8"],
-+    ["base-utf", "UTF-8"],
-     ["allcaps", "iso-8859-1"],
--    ["allcaps_utf", "UTF-8"],
-+    ["allcaps-utf", "UTF-8"],
-     ["allcaps2", "iso-8859-1"],
-     ["allcaps3", "iso-8859-1"],
-     ["keepcase", "iso-8859-1"],
-     ["i58202", "iso-8859-1"],
-     ["map", "iso-8859-1"],
-     ["rep", "iso-8859-1"],
-     ["sug", "iso-8859-1"],
-     ["sugutf", "UTF-8"],
-@@ -43,19 +43,19 @@ const tests = [
-     ["fogemorpheme", "iso-8859-1"],
-     ["onlyincompound", "iso-8859-1"],
-     ["complexprefixes", "iso-8859-1"],
-     ["complexprefixes2", "iso-8859-1"],
-     ["complexprefixesutf", "UTF-8"],
-     ["conditionalprefix", "iso-8859-1"],
-     ["zeroaffix", "iso-8859-1"],
-     ["utf8", "UTF-8"],
--    ["utf8_bom", "UTF-8", {1: "todo"}],
--    ["utf8_bom2", "UTF-8", {1: "todo"}],
--    ["utf8_nonbmp", "UTF-8", {1: "todo", 2: "todo", 3: "todo", 4: "todo"}],
-+    ["utf8-bom", "UTF-8", {1: "todo"}],
-+    ["utf8-bom2", "UTF-8", {1: "todo"}],
-+    ["utf8-nonbmp", "UTF-8", {1: "todo", 2: "todo", 3: "todo", 4: "todo"}],
-     ["compoundflag", "iso-8859-1"],
-     ["compoundrule", "iso-8859-1"],
-     ["compoundrule2", "iso-8859-1"],
-     ["compoundrule3", "iso-8859-1"],
-     ["compoundrule4", "iso-8859-1"],
-     ["compoundrule5", "UTF-8"],
-     ["compoundrule6", "iso-8859-1"],
-     ["compoundrule7", "iso-8859-1"],
-@@ -86,43 +86,43 @@ const tests = [
-     ["reputf", "UTF-8"],
-     ["ignore", "iso-8859-1"],
-     ["ignoreutf", "UTF-8",
-      {1: "todo", 2: "todo", 3: "todo", 4: "todo", 5: "todo", 6: "todo",
-       7: "todo", 8: "todo"}],
-     ["1592880", "iso-8859-1"],
-     ["1695964", "iso-8859-1"],
-     ["1463589", "iso-8859-1"],
--    ["1463589_utf", "UTF-8"],
-+    ["1463589-utf", "UTF-8"],
-     ["IJ", "iso-8859-1"],
-     ["i68568", "iso-8859-1"],
-     ["i68568utf", "UTF-8"],
-     ["1706659", "iso-8859-1"],
--    ["digits_in_words", "iso-8859-1"],
--//    ["colons_in_words", "iso-8859-1"], Suggestion test only
--    ["ngram_utf_fix", "UTF-8"],
-+    ["digits-in-words", "iso-8859-1"],
-+//    ["colons-in-words", "iso-8859-1"], Suggestion test only
-+    ["ngram-utf-fix", "UTF-8"],
-     ["morph", "us-ascii",
-      {11: "todo", 12: "todo", 13: "todo", 14: "todo", 15: "todo", 16: "todo",
-       17: "todo", 18: "todo", 19: "todo", 20: "todo", 21: "todo", 22: "todo",
-       23: "todo", 24: "todo", 25: "todo", 26: "todo", 27: "todo"}],
-     ["1975530", "UTF-8"],
-     ["fullstrip", "iso-8859-1"],
-     ["iconv", "UTF-8"],
-     ["oconv", "UTF-8"],
-     ["encoding", "iso-8859-1", {1: "todo", 3: "todo"}],
-     ["korean", "UTF-8"],
--    ["opentaal_forbiddenword1", "UTF-8"],
--    ["opentaal_forbiddenword2", "UTF-8"],
--    ["opentaal_keepcase", "UTF-8"],
-+    ["opentaal-forbiddenword1", "UTF-8"],
-+    ["opentaal-forbiddenword2", "UTF-8"],
-+    ["opentaal-keepcase", "UTF-8"],
-     ["arabic", "UTF-8"],
-     ["2970240", "iso-8859-1"],
-     ["2970242", "iso-8859-1"],
-     ["breakoff", "iso-8859-1"],
--    ["opentaal_cpdpat", "iso-8859-1"],
--    ["opentaal_cpdpat2", "iso-8859-1"],
-+    ["opentaal-cpdpat", "iso-8859-1"],
-+    ["opentaal-cpdpat2", "iso-8859-1"],
-     ["2999225", "iso-8859-1"],
-     ["onlyincompound2", "iso-8859-1"],
-     ["forceucase", "iso-8859-1"],
-     ["warn", "iso-8859-1"]
- ];
- 
- function do_get_file_by_line(file, charset) {
-   dump("getting file by line for file " + file.path + "\n");
-diff --git a/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul b/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul
---- a/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul
-+++ b/extensions/spellcheck/tests/chrome/test_add_remove_dictionaries.xul
-@@ -63,26 +63,26 @@ function RunTest() {
-   ok(map.exists());
-   hunspell.addDirectory(map);
- 
-   Components.utils.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm");
-   onSpellCheck(textbox, function () {
- 
-     // test that base and map dictionaries are available
-     var dicts = getDictionaryList(editor);
--    isnot(dicts.indexOf("base_utf"), -1, "base is available");
-+    isnot(dicts.indexOf("base-utf"), -1, "base is available");
-     isnot(dicts.indexOf("maputf"), -1, "map is available");
- 
-     // select base dictionary
--    setCurrentDictionary(editor, "base_utf");
-+    setCurrentDictionary(editor, "base-utf");
- 
-     onSpellCheck(textbox, function () {
-       // test that base dictionary is in use
-       is(getMisspelledWords(editor), "Frühstück" + "qwertyu", "base misspellings");
--      is(getCurrentDictionary(editor), "base_utf", "current dictionary");
-+      is(getCurrentDictionary(editor), "base-utf", "current dictionary");
- 
-       // select map dictionary
-       setCurrentDictionary(editor, "maputf");
- 
-       onSpellCheck(textbox, function () {
-         // test that map dictionary is in use
-         is(getMisspelledWords(editor), "created" + "imply" + "tomorrow" + "qwertyu", "map misspellings");
-         is(getCurrentDictionary(editor), "maputf", "current dictionary");
-@@ -92,17 +92,17 @@ function RunTest() {
- 
-         onSpellCheck(textbox, function () {
-           // test that map dictionary is not in use
-           isnot(getMisspelledWords(editor), "created" + "imply" + "tomorrow" + "qwertyu", "map misspellings");
-           isnot(getCurrentDictionary(editor), "maputf", "current dictionary");
- 
-           // test that base dictionary is available and map dictionary is unavailable
-           var dicts = getDictionaryList(editor);
--          isnot(dicts.indexOf("base_utf"), -1, "base is available");
-+          isnot(dicts.indexOf("base-utf"), -1, "base is available");
-           is(dicts.indexOf("maputf"), -1, "map is unavailable");
- 
-           // uninstall base dictionary
-           hunspell.removeDirectory(base);
- 
-           onSpellCheck(textbox, function () {
-             SimpleTest.finish();
-           });
diff --git a/SOURCES/mozilla-1152515.patch b/SOURCES/mozilla-1152515.patch
new file mode 100644
index 0000000..4be1ca7
--- /dev/null
+++ b/SOURCES/mozilla-1152515.patch
@@ -0,0 +1,68 @@
+diff --git a/security/pkix/lib/pkixder.cpp b/security/pkix/lib/pkixder.cpp
+--- a/security/pkix/lib/pkixder.cpp
++++ b/security/pkix/lib/pkixder.cpp
+@@ -466,28 +466,63 @@ TimeChoice(Reader& tagged, uint8_t expec
+   if (rv != Success) {
+     return rv;
+   }
+ 
+   uint8_t b;
+   if (input.Read(b) != Success) {
+     return Result::ERROR_INVALID_DER_TIME;
+   }
+-  if (b != 'Z') {
++
++  unsigned int hourOffset = 0;
++  unsigned int minuteOffset = 0;
++  bool allowOffset = false;
++  bool haveOffset = false;
++  bool offsetIsPositive = false;
++
++  if (getenv("PKIX_ALLOW_CERT_UTCTIME_OFFSET") != 0) {
++    allowOffset = true;
++  }
++
++  if (allowOffset && (b == '+' || b == '-')) {
++    haveOffset = true;
++    rv = ReadTwoDigits(input, 0u, 23u, hourOffset);
++    if (rv != Success) {
++      return rv;
++    }
++    rv = ReadTwoDigits(input, 0u, 59u, minuteOffset);
++    if (rv != Success) {
++      return rv;
++    }
++    if (b == '+') {
++      offsetIsPositive = true;
++    }
++  } else if (b != 'Z') {
+     return Result::ERROR_INVALID_DER_TIME;
+   }
+   if (End(input) != Success) {
+     return Result::ERROR_INVALID_DER_TIME;
+   }
+ 
+   uint64_t totalSeconds = (static_cast<uint64_t>(days) * 24u * 60u * 60u) +
+                           (static_cast<uint64_t>(hours)      * 60u * 60u) +
+                           (static_cast<uint64_t>(minutes)          * 60u) +
+                           seconds;
+ 
++  if (haveOffset) {
++    uint64_t offsetInSeconds =
++                          (static_cast<uint64_t>(hourOffset) * 60u * 60u) +
++                          (static_cast<uint64_t>(minuteOffset)     * 60u);
++    if (offsetIsPositive) {
++      totalSeconds -= offsetInSeconds;
++    } else {
++      totalSeconds += offsetInSeconds;
++    }
++  }
++
+   time = TimeFromElapsedSecondsAD(totalSeconds);
+   return Success;
+ }
+ 
+ Result
+ IntegralBytes(Reader& input, uint8_t tag,
+               IntegralValueRestriction valueRestriction,
+               /*out*/ Input& value,
diff --git a/SOURCES/mozilla-ppc64le-js.patch b/SOURCES/mozilla-ppc64le-js.patch
deleted file mode 100644
index cfc1301..0000000
--- a/SOURCES/mozilla-ppc64le-js.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-diff -up mozilla-esr31/js/src/assembler/wtf/Platform.h.ppc64le mozilla-esr31/js/src/assembler/wtf/Platform.h
---- mozilla-esr31/js/src/assembler/wtf/Platform.h.ppc64le	2014-11-25 12:23:26.000000000 +0100
-+++ mozilla-esr31/js/src/assembler/wtf/Platform.h	2014-12-19 16:51:25.579571933 +0100
-@@ -179,6 +179,8 @@
- #define WTF_CPU_PPC64 1
- #if !defined(__LITTLE_ENDIAN__)
- #define WTF_CPU_BIG_ENDIAN 1
-+#else
-+#define WTF_CPU_PPC64LE 1
- #endif
- #endif
- 
-diff -up mozilla-esr31/js/src/gc/Memory.cpp.ppc64le mozilla-esr31/js/src/gc/Memory.cpp
---- mozilla-esr31/js/src/gc/Memory.cpp.ppc64le	2014-11-25 12:23:26.000000000 +0100
-+++ mozilla-esr31/js/src/gc/Memory.cpp	2014-12-19 16:51:25.579571933 +0100
-@@ -303,6 +303,9 @@ gc::MarkPagesUnused(JSRuntime *rt, void
- bool
- gc::MarkPagesInUse(JSRuntime *rt, void *p, size_t size)
- {
-+    if (!DecommitEnabled(rt))
-+        return false;
-+
-     JS_ASSERT(uintptr_t(p) % rt->gcSystemPageSize == 0);
-     return true;
- }
-diff -up mozilla-esr31/js/src/yarr/BumpPointerAllocator.h.ppc64le mozilla-esr31/js/src/yarr/BumpPointerAllocator.h
---- mozilla-esr31/js/src/yarr/BumpPointerAllocator.h.ppc64le	2014-11-25 12:23:30.000000000 +0100
-+++ mozilla-esr31/js/src/yarr/BumpPointerAllocator.h	2014-12-19 16:51:25.579571933 +0100
-@@ -38,6 +38,8 @@ namespace WTF {
- #define MINIMUM_BUMP_POOL_SIZE 0x2000
- #elif WTF_CPU_IA64
- #define MINIMUM_BUMP_POOL_SIZE 0x4000
-+#elif WTF_CPU_PPC64LE
-+#define MINIMUM_BUMP_POOL_SIZE 0x10000
- #else
- #define MINIMUM_BUMP_POOL_SIZE 0x1000
- #endif
-diff -up mozilla-esr31/memory/mozjemalloc/jemalloc.c.ppc64le mozilla-esr31/memory/mozjemalloc/jemalloc.c
---- mozilla-esr31/memory/mozjemalloc/jemalloc.c.ppc64le	2014-12-19 16:51:25.580571935 +0100
-+++ mozilla-esr31/memory/mozjemalloc/jemalloc.c	2014-12-19 16:52:11.754626429 +0100
-@@ -596,7 +596,7 @@ static const bool isthreaded = true;
- #define	RUN_MAX_OVRHD_RELAX	0x00001800U
- 
- /* Put a cap on small object run size.  This overrides RUN_MAX_OVRHD. */
--#define	RUN_MAX_SMALL_2POW	15
-+#define	RUN_MAX_SMALL_2POW	16
- #define	RUN_MAX_SMALL		(1U << RUN_MAX_SMALL_2POW)
- 
- /*
diff --git a/SOURCES/remove-ogg.patch b/SOURCES/remove-ogg.patch
deleted file mode 100644
index 9bf924b..0000000
--- a/SOURCES/remove-ogg.patch
+++ /dev/null
@@ -1,449 +0,0 @@
-diff -up mozilla-aurora/config/external/moz.build.remove-ogg mozilla-aurora/config/external/moz.build
---- mozilla-aurora/config/external/moz.build.remove-ogg	2014-05-06 13:17:17.000000000 +0200
-+++ mozilla-aurora/config/external/moz.build	2014-06-03 13:51:14.450340480 +0200
-@@ -33,14 +33,15 @@ if CONFIG['MOZ_WEBM_ENCODER']:
- if CONFIG['MOZ_VPX'] and not CONFIG['MOZ_NATIVE_LIBVPX']:
-     external_dirs += ['media/libvpx']
- 
-+if CONFIG['MOZ_OGG']:
-+    external_dirs += ['media/libogg', 'media/libtheora']
-+
- if not CONFIG['MOZ_NATIVE_PNG']:
-     external_dirs += ['media/libpng']
- 
- external_dirs += [
-     'media/kiss_fft',
-     'media/libcubeb',
--    'media/libogg',
--    'media/libtheora',
-     'media/libspeex_resampler',
-     'media/libsoundtouch',
- ]
-diff -up mozilla-aurora/configure.in.remove-ogg mozilla-aurora/configure.in
---- mozilla-aurora/configure.in.remove-ogg	2014-05-06 13:17:17.000000000 +0200
-+++ mozilla-aurora/configure.in	2014-06-03 13:51:14.452340483 +0200
-@@ -3938,6 +3938,7 @@ MOZ_FEEDS=1
- MOZ_WEBAPP_RUNTIME=
- MOZ_JSDEBUGGER=1
- MOZ_AUTH_EXTENSION=1
-+MOZ_OGG=1
- MOZ_RAW=
- MOZ_VORBIS=
- MOZ_TREMOR=
-@@ -5191,25 +5192,37 @@ fi
- 
- AC_SUBST(MOZ_RAW)
- 
--dnl Checks for __attribute__(aligned()) directive need by libogg
--AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
--    [ac_cv_c_attribute_aligned],
--    [ac_cv_c_attribute_aligned=0
--     CFLAGS_save="${CFLAGS}"
--     CFLAGS="${CFLAGS} -Werror"
--     for ac_cv_c_attr_align_try in 64 32 16 8; do
--       echo "trying $ac_cv_c_attr_align_try"
--       AC_TRY_COMPILE([],
--                      [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
--                      [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
--       if test "$ac_cv_c_attribute_aligned" != 0; then
--         break;
--       fi
--     done
--       CFLAGS="${CFLAGS_save}"])
--if test "${ac_cv_c_attribute_aligned}" != "0"; then
--  AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
--                     [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
-+dnl ========================================================
-+dnl = Disable Ogg Codecs
-+dnl ========================================================
-+MOZ_ARG_DISABLE_BOOL(ogg,
-+[  --disable-ogg           Disable support for OGG media (Theora video and Vorbis audio)],
-+    MOZ_OGG=,
-+    MOZ_OGG=1)
-+
-+if test -n "$MOZ_OGG"; then
-+    AC_DEFINE(MOZ_OGG)
-+
-+    dnl Checks for __attribute__(aligned()) directive
-+    AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
-+        [ac_cv_c_attribute_aligned],
-+        [ac_cv_c_attribute_aligned=0
-+         CFLAGS_save="${CFLAGS}"
-+         CFLAGS="${CFLAGS} -Werror"
-+         for ac_cv_c_attr_align_try in 64 32 16 8; do
-+           echo "trying $ac_cv_c_attr_align_try"
-+           AC_TRY_COMPILE([],
-+                          [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
-+                          [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
-+           if test "$ac_cv_c_attribute_aligned" != 0; then
-+             break;
-+           fi
-+         done
-+           CFLAGS="${CFLAGS_save}"])
-+    if test "${ac_cv_c_attribute_aligned}" != "0"; then
-+      AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
-+                         [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
-+    fi
- fi
- 
- dnl ========================================================
-@@ -5426,7 +5439,7 @@ AC_SUBST(MOZ_NATIVE_LIBVPX)
- AC_SUBST(MOZ_LIBVPX_CFLAGS)
- AC_SUBST(MOZ_LIBVPX_LIBS)
- 
--if test "$MOZ_WEBM"; then
-+if test "$MOZ_WEBM" -o "$MOZ_OGG"; then
-     if test "$MOZ_SAMPLE_TYPE_FLOAT32"; then
-         MOZ_VORBIS=1
-     else
-@@ -5533,6 +5546,15 @@ dnl ====================================
- dnl = Handle dependent MEDIA defines
- dnl ========================================================
- 
-+if test -n "$MOZ_OPUS" -a -z "$MOZ_OGG"; then
-+    AC_MSG_ERROR([MOZ_OPUS requires MOZ_OGG which is disabled.])
-+fi
-+
-+if test -n "$MOZ_VORBIS" -a -z "$MOZ_OGG"; then
-+    AC_MSG_ERROR([MOZ_VORBIS requires MOZ_OGG which is disabled.
-+Note that you need vorbis support for WebM playback.])
-+fi
-+
- if test -n "$MOZ_VORBIS" -a -n "$MOZ_TREMOR"; then
-     AC_MSG_ERROR([MOZ_VORBIS and MOZ_TREMOR are mutually exclusive!  The build system should not allow them both to be set, but they are.  Please file a bug at https://bugzilla.mozilla.org/])
- fi
-@@ -8842,6 +8864,7 @@ AC_SUBST(MOZ_APPLEMEDIA)
- AC_SUBST(MOZ_OMX_PLUGIN)
- AC_SUBST(MOZ_VPX_ERROR_CONCEALMENT)
- AC_SUBST(MOZ_VPX)
-+AC_SUBST(MOZ_OGG)
- AC_SUBST(VPX_AS)
- AC_SUBST(VPX_ASFLAGS)
- AC_SUBST(VPX_DASH_C_FLAG)
-diff -up mozilla-aurora/content/html/content/src/HTMLAudioElement.cpp.remove-ogg mozilla-aurora/content/html/content/src/HTMLAudioElement.cpp
---- mozilla-aurora/content/html/content/src/HTMLAudioElement.cpp.remove-ogg	2014-05-06 13:17:19.000000000 +0200
-+++ mozilla-aurora/content/html/content/src/HTMLAudioElement.cpp	2014-06-03 13:51:14.452340483 +0200
-@@ -81,12 +81,16 @@ nsresult HTMLAudioElement::SetAcceptHead
- #ifdef MOZ_WEBM
-       "audio/webm,"
- #endif
-+#ifdef MOZ_OGG
-       "audio/ogg,"
-+#endif
- #ifdef MOZ_WAVE
-       "audio/wav,"
- #endif
-       "audio/*;q=0.9,"
-+#ifdef MOZ_OGG
-       "application/ogg;q=0.7,"
-+#endif
-       "video/*;q=0.6,*/*;q=0.5");
- 
-     return aChannel->SetRequestHeader(NS_LITERAL_CSTRING("Accept"),
-diff -up mozilla-aurora/content/html/content/src/HTMLVideoElement.cpp.remove-ogg mozilla-aurora/content/html/content/src/HTMLVideoElement.cpp
---- mozilla-aurora/content/html/content/src/HTMLVideoElement.cpp.remove-ogg	2014-05-06 13:17:19.000000000 +0200
-+++ mozilla-aurora/content/html/content/src/HTMLVideoElement.cpp	2014-06-03 13:51:14.452340483 +0200
-@@ -136,9 +136,13 @@ nsresult HTMLVideoElement::SetAcceptHead
- #ifdef MOZ_WEBM
-       "video/webm,"
- #endif
-+#ifdef MOZ_OGG
-       "video/ogg,"
-+#endif
-       "video/*;q=0.9,"
-+#ifdef MOZ_OGG
-       "application/ogg;q=0.7,"
-+#endif
-       "audio/*;q=0.6,*/*;q=0.5");
- 
-   return aChannel->SetRequestHeader(NS_LITERAL_CSTRING("Accept"),
-diff -up mozilla-aurora/content/media/DecoderTraits.cpp.remove-ogg mozilla-aurora/content/media/DecoderTraits.cpp
---- mozilla-aurora/content/media/DecoderTraits.cpp.remove-ogg	2014-05-06 13:17:20.000000000 +0200
-+++ mozilla-aurora/content/media/DecoderTraits.cpp	2014-06-03 13:51:14.452340483 +0200
-@@ -13,8 +13,10 @@
- #include "MediaPluginHost.h"
- #endif
- 
-+#ifdef MOZ_OGG
- #include "OggDecoder.h"
- #include "OggReader.h"
-+#endif
- #ifdef MOZ_WAVE
- #include "WaveDecoder.h"
- #include "WaveReader.h"
-@@ -100,6 +102,7 @@ IsRawType(const nsACString& aType)
- }
- #endif
- 
-+#ifdef MOZ_OGG
- // See http://www.rfc-editor.org/rfc/rfc5334.txt for the definitions
- // of Ogg media types and codec types
- static const char* const gOggTypes[4] = {
-@@ -131,6 +134,7 @@ IsOggType(const nsACString& aType)
- 
-   return CodecListContains(gOggTypes, aType);
- }
-+#endif
- 
- #ifdef MOZ_WAVE
- // See http://www.rfc-editor.org/rfc/rfc2361.txt for the definitions
-@@ -199,8 +203,10 @@ IsGStreamerSupportedType(const nsACStrin
-   if (IsWebMType(aMimeType) && !Preferences::GetBool("media.prefer-gstreamer", false))
-     return false;
- #endif
-+#ifdef MOZ_OGG
-   if (IsOggType(aMimeType) && !Preferences::GetBool("media.prefer-gstreamer", false))
-     return false;
-+#endif
- 
-   return GStreamerDecoder::CanHandleMediaType(aMimeType, nullptr);
- }
-@@ -370,10 +376,12 @@ DecoderTraits::CanHandleMediaType(const
-     result = CANPLAY_MAYBE;
-   }
- #endif
-+#ifdef MOZ_OGG
-   if (IsOggType(nsDependentCString(aMIMEType))) {
-     codecList = MediaDecoder::IsOpusEnabled() ? gOggCodecsWithOpus : gOggCodecs;
-     result = CANPLAY_MAYBE;
-   }
-+#endif
- #ifdef MOZ_WAVE
-   if (IsWaveType(nsDependentCString(aMIMEType))) {
-     codecList = gWaveCodecs;
-@@ -479,10 +487,12 @@ InstantiateDecoder(const nsACString& aTy
-     return decoder.forget();
-   }
- #endif
-+#ifdef MOZ_OGG
-   if (IsOggType(aType)) {
-     decoder = new OggDecoder();
-     return decoder.forget();
-   }
-+#endif
- #ifdef MOZ_WAVE
-   if (IsWaveType(aType)) {
-     decoder = new WaveDecoder();
-@@ -587,9 +597,11 @@ MediaDecoderReader* DecoderTraits::Creat
-     decoderReader = new RawReader(aDecoder);
-   } else
- #endif
-+#ifdef MOZ_OGG
-   if (IsOggType(aType)) {
-     decoderReader = new OggReader(aDecoder);
-   } else
-+#endif
- #ifdef MOZ_WAVE
-   if (IsWaveType(aType)) {
-     decoderReader = new WaveReader(aDecoder);
-@@ -642,7 +654,9 @@ MediaDecoderReader* DecoderTraits::Creat
- bool DecoderTraits::IsSupportedInVideoDocument(const nsACString& aType)
- {
-   return
-+#ifdef MOZ_OGG
-     IsOggType(aType) ||
-+#endif
- #ifdef MOZ_OMX_DECODER
-     // We support amr inside WebApps on firefoxOS but not in general web content.
-     // Ensure we dont create a VideoDocument when accessing amr URLs directly.
-diff -up mozilla-aurora/content/media/encoder/MediaEncoder.cpp.remove-ogg mozilla-aurora/content/media/encoder/MediaEncoder.cpp
---- mozilla-aurora/content/media/encoder/MediaEncoder.cpp.remove-ogg	2014-05-06 13:17:20.000000000 +0200
-+++ mozilla-aurora/content/media/encoder/MediaEncoder.cpp	2014-06-03 13:51:14.453340485 +0200
-@@ -9,7 +9,9 @@
- #include "prlog.h"
- #include "mozilla/Preferences.h"
- 
-+#ifdef MOZ_OGG
- #include "OggWriter.h"
-+#endif
- #ifdef MOZ_OPUS
- #include "OpusTrackEncoder.h"
- 
-@@ -133,6 +135,7 @@ MediaEncoder::CreateEncoder(const nsAStr
-     mimeType = NS_LITERAL_STRING(AUDIO_3GPP);
-   }
- #endif // MOZ_OMX_ENCODER
-+#ifdef MOZ_OGG
-   else if (MediaDecoder::IsOggEnabled() && MediaDecoder::IsOpusEnabled() &&
-            (aMIMEType.EqualsLiteral(AUDIO_OGG) ||
-            (aTrackTypes & ContainerWriter::CREATE_AUDIO_TRACK))) {
-@@ -142,6 +145,7 @@ MediaEncoder::CreateEncoder(const nsAStr
-     NS_ENSURE_TRUE(audioEncoder, nullptr);
-     mimeType = NS_LITERAL_STRING(AUDIO_OGG);
-   }
-+#endif  // MOZ_OGG
-   else {
-     LOG(PR_LOG_ERROR, ("Can not find any encoder to record this media stream"));
-     return nullptr;
-diff -up mozilla-aurora/content/media/MediaDecoder.cpp.remove-ogg mozilla-aurora/content/media/MediaDecoder.cpp
---- mozilla-aurora/content/media/MediaDecoder.cpp.remove-ogg	2014-05-06 13:17:20.000000000 +0200
-+++ mozilla-aurora/content/media/MediaDecoder.cpp	2014-06-03 13:51:14.453340485 +0200
-@@ -1653,6 +1653,7 @@ MediaDecoder::IsRawEnabled()
- }
- #endif
- 
-+#ifdef MOZ_OGG
- bool
- MediaDecoder::IsOpusEnabled()
- {
-@@ -1668,6 +1669,7 @@ MediaDecoder::IsOggEnabled()
- {
-   return Preferences::GetBool("media.ogg.enabled");
- }
-+#endif
- 
- #ifdef MOZ_WAVE
- bool
-diff -up mozilla-aurora/content/media/MediaDecoder.h.remove-ogg mozilla-aurora/content/media/MediaDecoder.h
---- mozilla-aurora/content/media/MediaDecoder.h.remove-ogg	2014-05-06 13:17:20.000000000 +0200
-+++ mozilla-aurora/content/media/MediaDecoder.h	2014-06-03 13:51:14.453340485 +0200
-@@ -844,8 +844,10 @@ public:
-   static bool IsRawEnabled();
- #endif
- 
-+#ifdef MOZ_OGG
-   static bool IsOggEnabled();
-   static bool IsOpusEnabled();
-+#endif
- 
- #ifdef MOZ_WAVE
-   static bool IsWaveEnabled();
-diff -up mozilla-aurora/content/media/moz.build.remove-ogg mozilla-aurora/content/media/moz.build
---- mozilla-aurora/content/media/moz.build.remove-ogg	2014-05-06 13:17:20.000000000 +0200
-+++ mozilla-aurora/content/media/moz.build	2014-06-03 13:51:14.453340485 +0200
-@@ -7,7 +7,6 @@
- PARALLEL_DIRS += [
-   'encoder',
-   'mediasource',
--  'ogg',
-   'webaudio',
-   'webvtt'
- ]
-@@ -17,6 +16,9 @@ TEST_TOOL_DIRS += ['compiledtest']
- if CONFIG['MOZ_RAW']:
-     PARALLEL_DIRS += ['raw']
- 
-+if CONFIG['MOZ_OGG']:
-+    PARALLEL_DIRS += ['ogg']
-+
- if CONFIG['MOZ_WAVE']:
-     PARALLEL_DIRS += ['wave']
- 
-diff -up mozilla-aurora/layout/media/symbols.def.in.remove-ogg mozilla-aurora/layout/media/symbols.def.in
---- mozilla-aurora/layout/media/symbols.def.in.remove-ogg	2014-05-06 13:17:13.000000000 +0200
-+++ mozilla-aurora/layout/media/symbols.def.in	2014-06-03 13:51:14.454340486 +0200
-@@ -145,6 +145,7 @@ cubeb_stream_init
- cubeb_stream_start
- cubeb_stream_stop
- cubeb_stream_get_latency
-+#ifdef MOZ_OGG
- th_comment_clear
- th_comment_init
- th_decode_alloc
-@@ -158,6 +159,7 @@ th_info_init
- th_packet_isheader
- th_packet_iskeyframe
- th_setup_free
-+#endif
- #ifdef MOZ_OPUS
- opus_decoder_create
- opus_decoder_destroy
-diff -up mozilla-aurora/modules/libpref/src/init/all.js.remove-ogg mozilla-aurora/modules/libpref/src/init/all.js
---- mozilla-aurora/modules/libpref/src/init/all.js.remove-ogg	2014-05-19 11:43:49.000000000 +0200
-+++ mozilla-aurora/modules/libpref/src/init/all.js	2014-06-03 13:51:25.028355239 +0200
-@@ -212,7 +212,9 @@ pref("media.fragmented-mp4.use-blank-dec
- #ifdef MOZ_RAW
- pref("media.raw.enabled", true);
- #endif
-+#ifdef MOZ_OGG
- pref("media.ogg.enabled", true);
-+#endif
- #ifdef MOZ_OPUS
- pref("media.opus.enabled", true);
- #endif
-diff -up mozilla-aurora/python/mozbuild/mozbuild/mozinfo.py.remove-ogg mozilla-aurora/python/mozbuild/mozbuild/mozinfo.py
---- mozilla-aurora/python/mozbuild/mozbuild/mozinfo.py.remove-ogg	2014-05-06 13:17:17.000000000 +0200
-+++ mozilla-aurora/python/mozbuild/mozbuild/mozinfo.py	2014-06-03 13:51:25.028355239 +0200
-@@ -84,6 +84,7 @@ def build_dict(config, env=os.environ):
-     d['tests_enabled'] = substs.get('ENABLE_TESTS') == "1"
-     d['bin_suffix'] = substs.get('BIN_SUFFIX', '')
- 
-+    d['ogg'] = bool(substs.get('MOZ_OGG'))
-     d['webm'] = bool(substs.get('MOZ_WEBM'))
-     d['wave'] = bool(substs.get('MOZ_WAVE'))
- 
-diff -up mozilla-aurora/uriloader/exthandler/nsExternalHelperAppService.cpp.remove-ogg mozilla-aurora/uriloader/exthandler/nsExternalHelperAppService.cpp
---- mozilla-aurora/uriloader/exthandler/nsExternalHelperAppService.cpp.remove-ogg	2014-05-06 13:17:27.000000000 +0200
-+++ mozilla-aurora/uriloader/exthandler/nsExternalHelperAppService.cpp	2014-06-03 13:51:25.030355242 +0200
-@@ -462,6 +462,7 @@ static nsDefaultMimeTypeEntry defaultMim
-   { "application/xhtml+xml", "xhtml" },
-   { "application/xhtml+xml", "xht" },
-   { TEXT_PLAIN, "txt" },
-+#ifdef MOZ_OGG
-   { VIDEO_OGG, "ogv" },
-   { VIDEO_OGG, "ogg" },
-   { APPLICATION_OGG, "ogg" },
-@@ -469,6 +470,7 @@ static nsDefaultMimeTypeEntry defaultMim
- #ifdef MOZ_OPUS
-   { AUDIO_OGG, "opus" },
- #endif
-+#endif
- #ifdef MOZ_WEBM
-   { VIDEO_WEBM, "webm" },
-   { AUDIO_WEBM, "webm" },
-diff -up mozilla-aurora/xpcom/build/nsXPComInit.cpp.remove-ogg mozilla-aurora/xpcom/build/nsXPComInit.cpp
---- mozilla-aurora/xpcom/build/nsXPComInit.cpp.remove-ogg	2014-06-03 14:04:38.913464144 +0200
-+++ mozilla-aurora/xpcom/build/nsXPComInit.cpp	2014-06-03 14:06:03.282582245 +0200
-@@ -133,7 +133,9 @@ extern nsresult nsStringInputStreamConst
- #include "mozilla/VisualEventTracer.h"
- #endif
- 
-+#if MOZ_OGG
- #include "ogg/ogg.h"
-+#endif
- #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING)
- #include "vpx_mem/vpx_mem.h"
- #endif
-@@ -378,7 +380,7 @@ private:
- NS_IMPL_ISUPPORTS(ICUReporter, nsIMemoryReporter)
- 
- /* static */ template<> Atomic<size_t> CountingAllocatorBase<ICUReporter>::sAmount(0);
--
-+#if MOZ_OGG
- class OggReporter MOZ_FINAL : public nsIMemoryReporter,
-                               public CountingAllocatorBase<OggReporter>
- {
-@@ -420,7 +422,7 @@ NS_IMPL_ISUPPORTS(VPXReporter, nsIMemory
- 
- /* static */ template<> Atomic<size_t> CountingAllocatorBase<VPXReporter>::sAmount(0);
- #endif /* MOZ_VPX */
--
-+#endif /* MOZ_OGG */
- #ifdef MOZ_WEBM
- class NesteggReporter MOZ_FINAL : public nsIMemoryReporter
-                                 , public CountingAllocatorBase<NesteggReporter>
-@@ -606,12 +608,13 @@ NS_InitXPCOM2(nsIServiceManager* *result
-     // depend on the XPCOM-based memory reporting goop.  So for now, we have
-     // this oddness.
-     mozilla::SetICUMemoryFunctions();
--
-+#if MOZ_OGG
-     // Do the same for libogg.
-     ogg_set_mem_functions(OggReporter::CountingMalloc,
-                           OggReporter::CountingCalloc,
-                           OggReporter::CountingRealloc,
-                           OggReporter::CountingFree);
-+#endif
- 
- #if defined(MOZ_VPX) && !defined(MOZ_VPX_NO_MEM_REPORTING)
-     // And for VPX.
-@@ -678,7 +681,9 @@ NS_InitXPCOM2(nsIServiceManager* *result
- 
-     // The memory reporter manager is up and running -- register our reporters.
-     RegisterStrongMemoryReporter(new ICUReporter());
-+#if MOZ_OGG
-     RegisterStrongMemoryReporter(new OggReporter());
-+#endif
- #ifdef MOZ_VPX
-     RegisterStrongMemoryReporter(new VPXReporter());
- #endif
diff --git a/SPECS/firefox.spec b/SPECS/firefox.spec
index 0583df0..133bb0b 100644
--- a/SPECS/firefox.spec
+++ b/SPECS/firefox.spec
@@ -5,9 +5,6 @@
 # Use system nss/nspr?
 %define system_nss              1
 
-# Enable webm
-%define enable_webm             1
-
 # Gstreamer 1.0 support
 %define enable_gstreamer        1
 
@@ -22,14 +19,15 @@
 
 # Minimal required versions
 %if %{?system_nss}
-%global nspr_version 4.10.6
-%global nss_version 3.16.2.3
+%global nspr_version 4.10.8
+%global nss_version 3.18.0
 %endif
 
 %define cairo_version 1.10.2
 %define freetype_version 2.1.9
 %define ffi_version 3.0.9
 %global libvpx_version 1.3.0
+%define _default_patch_fuzz 2
 
 # Bookmark variables
 %define default_bookmarks_file  %{_datadir}/bookmarks/default-bookmarks.html
@@ -48,26 +46,26 @@
 %define build_langpacks         1
 
 %if %{official_branding}
-%define tarballdir  mozilla-esr31
+%define tarballdir  mozilla-esr38
 %define ext_version esr
 %endif
 
 
 Summary:        Mozilla Firefox Web browser
 Name:           firefox
-Version:        31.6.0
-Release:        2%{?prever}%{?dist}
+Version:        38.0
+Release:        3%{?prever}%{?dist}
 URL:            http://www.mozilla.org/projects/firefox/
 License:        MPLv1.1 or GPLv2+ or LGPLv2+
 Group:          Applications/Internet
 # From ftp://ftp.mozilla.org/pub/firefox/releases/%{version}%{?pretag}/source
 Source0:        firefox-%{version}%{?prever}%{?ext_version}.source.tar.bz2
 %if %{build_langpacks}
-Source1:        firefox-langpacks-%{version}%{?ext_version}-20150325.tar.bz2
+Source1:        firefox-langpacks-%{version}%{?ext_version}-20150506.tar.bz2
 %endif
 Source10:       firefox-mozconfig
 Source11:       firefox-mozconfig-branded
-Source12:       firefox-centos-default-prefs.js
+Source12:       firefox-redhat-default-prefs.js
 Source20:       firefox.desktop
 Source21:       firefox.sh.in
 Source23:       firefox.1
@@ -78,20 +76,26 @@ Source100:      find-external-requires
 Patch0:         firefox-install-dir.patch
 Patch5:         xulrunner-24.0-jemalloc-ppc.patch
 Patch6:         webrtc-arch-cpu.patch
+Patch7:         build-no-format.patch
+Patch8:         firefox-ppc64le.patch
+Patch9:         firefox-debug.patch
+Patch10:        firefox-nss-3.18.0.patch
+Patch11:        build-nspr-prbool.patch
 
 # RPM specific patches
-Patch11:        firefox-default.patch
-Patch12:        firefox-enable-addons.patch
-Patch13:        rhbz-966424.patch
-Patch14:        remove-ogg.patch
-Patch15:        disable-webm.patch
-Patch16:        firefox-enable-plugins.patch
-Patch17:        mozilla-ppc64le-js.patch
-Patch18:        rhbz-1014858.patch
+Patch101:        firefox-default.patch
+Patch102:        firefox-enable-addons.patch
+Patch103:        rhbz-966424.patch
+Patch106:        firefox-enable-plugins.patch
+Patch108:        rhbz-1014858.patch
+# Fix Skia Neon stuff on AArch64
+Patch109:        aarch64-fix-skia.patch
+
 
 # Upstream patches
 Patch200:       firefox-duckduckgo.patch
-Patch201:       mozilla-1129859-dictfix2.patch
+Patch201:       mozilla-1005535.patch
+Patch202:       mozilla-1152515.patch
 
 %if %{official_branding}
 # Required by Mozilla Corporation
@@ -132,10 +136,8 @@ Requires:       sqlite >= %{sqlite_build_version}
 BuildRequires:  libffi-devel >= %{ffi_version}
 Requires:       libffi >= %{ffi_version}
 %endif
-%if %{?enable_webm}
 BuildRequires:  libvpx-devel >= %{libvpx_version}
 Requires:       libvpx >= %{libvpx_version}
-%endif
 %if %{?enable_gstreamer}
 BuildRequires:  gstreamer1-devel
 BuildRequires:  gstreamer1-plugins-base-devel
@@ -174,6 +176,12 @@ Conflicts:      firefox < 24.1.0
 Provides:       webclient
 
 
+# BUILDEQUIRES from yelp
+BuildRequires:  bison
+BuildRequires:  byacc
+BuildRequires:  xmlto
+BuildRequires:  gettext-devel
+
 %define _use_internal_dependency_generator 0
 %define __find_requires %{SOURCE100}
 
@@ -187,29 +195,34 @@ compliance, performance and portability.
 %setup -q -c
 cd %{tarballdir}
 
+# test if they exists
 # Build patches
 # We have to keep original patch backup extension to go thru configure without problems with tests
 %patch0 -p1 -b .orig
 %patch5 -p2 -b .jemalloc-ppc.patch
 %patch6 -p1 -b .webrtc-arch-cpu
-
-# RPM specific patches
-%patch11 -p1 -b .default
-%patch12 -p1 -b .addons
-%patch13 -p1 -b .rhbz-966424
-%patch14 -p1 -b .remove-ogg
-%if !%{?enable_webm}
-%patch15 -p1 -b .webm
+%patch7 -p1 -b .no-format
+%patch8 -p2 -b .ppc64le
+%if %{?debug_build}
+%ifnarch %{ix86} x86_64
+%patch9 -p1 -b .debug
 %endif
-%patch16 -p2 -b .plugins
-%ifarch ppc64 ppc64le
-%patch17 -p1 -b .ppc64le
 %endif
-%patch18 -p1 -b .rhbz-1014858
+%patch10 -p1 -b .nss-3.18.0
+%patch11 -p1 -b .nspr-prbool
+
+# RPM specific patches
+%patch101 -p1 -b .default
+%patch102 -p1 -b .addons
+%patch103 -p1 -b .rhbz-966424
+%patch106 -p2 -b .plugins
+%patch108 -p1 -b .rhbz-1014858
+%patch109 -p1 -b .aarch64
 
 # For branding specific patches.
 %patch200 -p1 -b .duckduckgo
-%patch201 -p1 -b .dict-fix
+%patch201 -p1 -b .mozbz-1005535
+%patch202 -p1 -b .mozbz-1152515
 
 # Upstream patches
 
@@ -235,18 +248,7 @@ echo "ac_add_options --enable-system-sqlite" >> .mozconfig
 echo "ac_add_options --disable-system-sqlite" >> .mozconfig
 %endif
 
-%if %{?enable_webm}
 echo "ac_add_options --with-system-libvpx" >> .mozconfig
-echo "ac_add_options --enable-webm" >> .mozconfig
-echo "ac_add_options --enable-webrtc" >> .mozconfig
-echo "ac_add_options --enable-ogg" >> .mozconfig
-%else
-echo "ac_add_options --without-system-libvpx" >> .mozconfig
-echo "ac_add_options --disable-webm" >> .mozconfig
-echo "ac_add_options --disable-webrtc" >> .mozconfig
-echo "ac_add_options --disable-ogg" >> .mozconfig
-echo "ac_add_options --disable-opus" >> .mozconfig
-%endif
 
 %if %{?system_cairo}
 echo "ac_add_options --enable-system-cairo" >> .mozconfig
@@ -327,7 +329,7 @@ MOZ_OPT_FLAGS=$(echo "$RPM_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/')
 MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
 %endif
 
-export CFLAGS=$MOZ_OPT_FLAGS
+export CFLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-fpermissive//')
 export CXXFLAGS=$MOZ_OPT_FLAGS
 export LDFLAGS=$MOZ_LINK_FLAGS
 
@@ -509,12 +511,13 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 %{mozappdir}/components/*.manifest
 %{mozappdir}/dictionaries
 %{mozappdir}/*.so
-%{mozappdir}/mozilla-xremote-client
+#%{mozappdir}/mozilla-xremote-client FIXME
 %{mozappdir}/omni.ja
 %{mozappdir}/platform.ini
 %{mozappdir}/plugin-container
 %{mozappdir}/dependentlibs.list
 %exclude %{mozappdir}/defaults/pref/channel-prefs.js
+%{mozappdir}/gmp-clearkey
 %if !%{?system_nss}
 %{mozappdir}/*.chk
 %endif
@@ -527,23 +530,39 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 #---------------------------------------------------------------------
 
 %changelog
-* Tue Mar 31 2015 CentOS Sources <bugs@centos.org> - 31.6.0-2.el7.centos
-- CentOS default prefs
+* Thu May  7 2015 Martin Stransky <stransky@redhat.com> - 38.0-3
+- Enabled system nss
+- Removed unused patches
+
+* Mon May  4 2015 Jan Horak - 38.0-2
+- Update to 38.0 ESR
+
+* Mon Apr 27 2015 Martin Stransky <stransky@redhat.com> - 38.0b8-0.11
+- Update to 38.0 Beta 8
+
+* Wed Apr 22 2015 Martin Stransky <stransky@redhat.com> - 38.0b6-0.10
+- Added patch for mozbz#1152515
+
+* Tue Apr 21 2015 Martin Stransky <stransky@redhat.com> - 38.0b6-0.9
+- Update to 38.0 Beta 6
+
+* Mon Apr 20 2015 Martin Stransky <stransky@redhat.com> - 38.0b5-0.8
+- Update to 38.0 Beta 5
 
-* Thu Mar 26 2015 Martin Stransky <stransky@redhat.com> - 31.6.0-2
-- Update to 31.6.0 ESR Build 2
+* Fri Apr 10 2015 Martin Stransky <stransky@redhat.com> - 38.0b3-0.7
+- Update to 38.0 Beta 3
 
-* Wed Mar 25 2015 Jan Horak <jhorak@redhat.com> - 31.6.0-1
-- Update to 31.6.0 ESR
+* Fri Apr 10 2015 Martin Stransky <stransky@redhat.com> - 38.0b1-0.6
+- Added patch for mozbz#1152391
 
-* Sat Mar 21 2015 Martin Stransky <stransky@redhat.com> - 31.5.3-3
-- Update to 31.5.3 ESR
+* Thu Apr  9 2015 Marcin Juszkiewicz <mjuszkiewicz@redhat.com> - 38.0b1-0.5
+- Fix build on AArch64 (based on upstream skia changes)
 
-* Fri Mar 20 2015 Martin Stransky <stransky@redhat.com> - 31.5.2-1
-- Update to 31.5.2 ESR
+* Tue Apr 7 2015 Martin Stransky <stransky@redhat.com> - 38.0b1-0.4
+- Enabled debug build
 
-* Fri Mar 20 2015 Jan Horak <jhorak@redhat.com> - 31.5.1-1
-- Update to 31.5.1 ESR
+* Wed Apr  1 2015 Jan Horak <jhorak@redhat.com> - 38.0b1-1
+- Update to 38.0b1
 
 * Wed Feb 18 2015 Martin Stransky <stransky@redhat.com> - 31.5.0-2
 - Update to 31.5.0 ESR Build 2