diff --git a/.firefox.metadata b/.firefox.metadata
index 795b7e6..3129be2 100644
--- a/.firefox.metadata
+++ b/.firefox.metadata
@@ -1,6 +1,7 @@
-511960dd78451a06c9df76509635aeec05b2051a SOURCES/Python-2.7.8.tgz
-467bdb846d67c01aed9e521fe0ef280065a50c3c SOURCES/devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm
-38571ff21e6f93c24b4fca0dd87196fb53ede504 SOURCES/firefox-52.8.0esr.source.tar.xz
-44444cc6217a7bbd4deedeba9f0a51349b1eb498 SOURCES/firefox-langpacks-52.8.0esr-20180509.tar.xz
-e5ba84786af5d0e0e23b1a9112c76821ef23306c SOURCES/gcc48-4.8.2-16.el5.src.rpm
+18a8f30a0356c751b8d0ea6f76e764cab13ee046 SOURCES/Python-2.7.13.tar.xz
+e7b9c954fdba527404b9b371f25890ec03d6a0ad SOURCES/firefox-60.1.0esr.source.tar.xz
+188ce061988d69a7ffd629a19a3780eb62b6a40a SOURCES/firefox-langpacks-60.1.0esr-20180622.tar.xz
+6724218efbb1f3fa14541cb2f255970b98446a45 SOURCES/firefox-symbolic.svg
+a7a6297b01578ad0f45c966816c46ce3f97e286b SOURCES/gtk3-private-3.22.26-1.el6.src.rpm
+e188ab1a444697bc649e223c28389d82ca94c472 SOURCES/libffi-3.0.13-18.el7_3.src.rpm
 77fd30f7ebc12a629a31c1e252cec06af55a71fe SOURCES/yasm-1.2.0-3.el5.src.rpm
diff --git a/.gitignore b/.gitignore
index 54d7176..1122ae7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
-SOURCES/Python-2.7.8.tgz
-SOURCES/devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm
-SOURCES/firefox-52.8.0esr.source.tar.xz
-SOURCES/firefox-langpacks-52.8.0esr-20180509.tar.xz
-SOURCES/gcc48-4.8.2-16.el5.src.rpm
+SOURCES/Python-2.7.13.tar.xz
+SOURCES/firefox-60.1.0esr.source.tar.xz
+SOURCES/firefox-langpacks-60.1.0esr-20180622.tar.xz
+SOURCES/firefox-symbolic.svg
+SOURCES/gtk3-private-3.22.26-1.el6.src.rpm
+SOURCES/libffi-3.0.13-18.el7_3.src.rpm
 SOURCES/yasm-1.2.0-3.el5.src.rpm
diff --git a/SOURCES/build-aarch64-skia.patch b/SOURCES/build-aarch64-skia.patch
new file mode 100644
index 0000000..1ecad24
--- /dev/null
+++ b/SOURCES/build-aarch64-skia.patch
@@ -0,0 +1,12 @@
+diff -up firefox-61.0/gfx/skia/skia/src/jumper/SkJumper_stages.cpp.aarch64-skia firefox-61.0/gfx/skia/skia/src/jumper/SkJumper_stages.cpp
+--- firefox-61.0/gfx/skia/skia/src/jumper/SkJumper_stages.cpp.aarch64-skia	2018-06-20 09:19:11.411939714 +0200
++++ firefox-61.0/gfx/skia/skia/src/jumper/SkJumper_stages.cpp	2018-06-20 09:23:36.831919894 +0200
+@@ -686,7 +686,7 @@ SI F from_half(U16 h) {
+ }
+ 
+ SI U16 to_half(F f) {
+-#if defined(JUMPER_IS_NEON) && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds.
++#if 0 && defined(__aarch64__) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds.
+     return vcvt_f16_f32(f);
+ 
+ #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512)
diff --git a/SOURCES/build-big-endian.patch b/SOURCES/build-big-endian.patch
new file mode 100644
index 0000000..e8ec439
--- /dev/null
+++ b/SOURCES/build-big-endian.patch
@@ -0,0 +1,84 @@
+diff -up firefox-60.0/gfx/skia/skia/include/core/SkColorPriv.h.big-endian firefox-60.0/gfx/skia/skia/include/core/SkColorPriv.h
+--- firefox-60.0/gfx/skia/skia/include/core/SkColorPriv.h.big-endian	2018-04-09 22:50:48.000000000 +0200
++++ firefox-60.0/gfx/skia/skia/include/core/SkColorPriv.h	2018-04-18 11:51:38.748680174 +0200
+@@ -54,18 +54,19 @@ static inline U8CPU SkUnitScalarClampToB
+  *
+  *  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
+ #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
+-#endif
++/*#endif*/
+ 
+ #define SkGetPackedA32(packed)      ((uint32_t)((packed) << (24 - SK_A32_SHIFT)) >> 24)
+ #define SkGetPackedR32(packed)      ((uint32_t)((packed) << (24 - SK_R32_SHIFT)) >> 24)
+diff -up firefox-60.0/gfx/skia/skia/include/core/SkImageInfo.h.big-endian firefox-60.0/gfx/skia/skia/include/core/SkImageInfo.h
+--- firefox-60.0/gfx/skia/skia/include/core/SkImageInfo.h.big-endian	2018-04-09 22:50:48.000000000 +0200
++++ firefox-60.0/gfx/skia/skia/include/core/SkImageInfo.h	2018-04-18 11:51:38.748680174 +0200
+@@ -84,7 +84,8 @@ enum SkColorType {
+ #elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A)
+     kN32_SkColorType = kRGBA_8888_SkColorType,
+ #else
+-    #error "SK_*32_SHIFT values must correspond to BGRA or RGBA byte order"
++    //#error "SK_*32_SHIFT values must correspond to BGRA or RGBA byte order"
++    kN32_SkColorType = kBGRA_8888_SkColorType
+ #endif
+ };
+ 
+diff -up firefox-60.0/gfx/skia/skia/include/gpu/GrTypes.h.big-endian firefox-60.0/gfx/skia/skia/include/gpu/GrTypes.h
+--- firefox-60.0/gfx/skia/skia/include/gpu/GrTypes.h.big-endian	2018-04-09 22:50:48.000000000 +0200
++++ firefox-60.0/gfx/skia/skia/include/gpu/GrTypes.h	2018-04-18 11:51:38.748680174 +0200
+@@ -344,15 +344,13 @@ enum 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;
++    static const GrPixelConfig kSkiaGamma8888_GrPixelConfig = kSBGRA_8888_GrPixelConfig;
+ #endif
+ 
+ /**
+diff -up firefox-60.0/gfx/skia/skia/src/core/SkColorData.h.big-endian firefox-60.0/gfx/skia/skia/src/core/SkColorData.h
+--- firefox-60.0/gfx/skia/skia/src/core/SkColorData.h.big-endian	2018-04-18 13:42:06.980476156 +0200
++++ firefox-60.0/gfx/skia/skia/src/core/SkColorData.h	2018-04-18 13:42:50.493520552 +0200
+@@ -31,18 +31,19 @@
+  *
+  *  Here we enforce this constraint.
+  */
+-
++/*
+ #ifdef SK_CPU_BENDIAN
+     #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_BGRA_B32_SHIFT   0
+     #define SK_BGRA_G32_SHIFT   8
+     #define SK_BGRA_R32_SHIFT   16
+     #define SK_BGRA_A32_SHIFT   24
+-#endif
++//#endif
+ 
+ #if defined(SK_PMCOLOR_IS_RGBA) && defined(SK_PMCOLOR_IS_BGRA)
+     #error "can't define PMCOLOR to be RGBA and BGRA"
diff --git a/SOURCES/build-debug-qcms.patch b/SOURCES/build-debug-qcms.patch
new file mode 100644
index 0000000..a65223a
--- /dev/null
+++ b/SOURCES/build-debug-qcms.patch
@@ -0,0 +1,12 @@
+diff -up firefox-60.0/gfx/qcms/transform-altivec.c.debug firefox-60.0/gfx/qcms/transform-altivec.c
+--- firefox-60.0/gfx/qcms/transform-altivec.c.debug	2018-05-15 09:26:43.603043100 +0200
++++ firefox-60.0/gfx/qcms/transform-altivec.c	2018-05-15 09:28:57.302385632 +0200
+@@ -30,7 +30,7 @@
+ static const ALIGN float floatScaleX4 = FLOATSCALE;
+ static const ALIGN float clampMaxValueX4 = CLAMPMAXVAL;
+ 
+-inline vector float load_aligned_float(float *dataPtr)
++static vector float load_aligned_float(float *dataPtr)
+ {
+ 	vector float data = vec_lde(0, dataPtr);
+ 	vector unsigned char moveToStart = vec_lvsl(0, dataPtr);
diff --git a/SOURCES/build-gdk-version.patch b/SOURCES/build-gdk-version.patch
new file mode 100644
index 0000000..a25b255
--- /dev/null
+++ b/SOURCES/build-gdk-version.patch
@@ -0,0 +1,19 @@
+diff -up mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/old-configure.in.gdk-version mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/old-configure.in
+--- mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/old-configure.in.gdk-version	2018-03-10 03:54:17.000000000 +0100
++++ mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/old-configure.in	2018-03-28 13:11:06.294873487 +0200
+@@ -61,6 +61,7 @@ CAIRO_VERSION=1.10
+ GTK2_VERSION=2.18.0
+ GTK3_VERSION=3.4.0
+ GDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4
++GDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_4
+ WINDRES_VERSION=2.14.90
+ W32API_VERSION=3.14
+ GCONF_VERSION=1.2.1
+@@ -2173,6 +2174,7 @@ if test "$COMPILE_ENVIRONMENT"; then
+     dnl GDK_VERSION_MIN_REQUIRED is not set here as GDK3 deprecated warnings
+     dnl are suppressed by widget/gtk/compat-gtk3/gdk/gdkversionmacros.h.
+     AC_DEFINE_UNQUOTED(GDK_VERSION_MAX_ALLOWED,$GDK_VERSION_MAX_ALLOWED)
++    AC_DEFINE_UNQUOTED(GDK_VERSION_MIN_REQUIRED,$GDK_VERSION_MIN_REQUIRED)
+     GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32
+   fi
+   if test "$MOZ_WIDGET_TOOLKIT" = gtk2; then
diff --git a/SOURCES/build-icu-big-endian.patch b/SOURCES/build-icu-big-endian.patch
index 68fbea1..c26a4d4 100644
--- a/SOURCES/build-icu-big-endian.patch
+++ b/SOURCES/build-icu-big-endian.patch
@@ -1,6 +1,6 @@
-diff -up mozilla-aurora/build/autoconf/icu.m4.icu-endian mozilla-aurora/build/autoconf/icu.m4
---- mozilla-aurora/build/autoconf/icu.m4.icu-endian	2016-12-09 09:11:01.227317790 +0100
-+++ mozilla-aurora/build/autoconf/icu.m4	2016-12-09 09:18:40.608712247 +0100
+diff -up firefox-60.0/build/autoconf/icu.m4.icu firefox-60.0/build/autoconf/icu.m4
+--- firefox-60.0/build/autoconf/icu.m4.icu	2018-04-17 15:11:54.100644119 +0200
++++ firefox-60.0/build/autoconf/icu.m4	2018-04-17 15:12:50.740686636 +0200
 @@ -78,7 +78,7 @@ if test -n "$USE_ICU"; then
      # TODO: the l is actually endian-dependent
      # We could make this set as 'l' or 'b' for little or big, respectively,
@@ -8,5 +8,5 @@ diff -up mozilla-aurora/build/autoconf/icu.m4.icu-endian mozilla-aurora/build/au
 -    ICU_DATA_FILE="icudt${version}l.dat"
 +    ICU_DATA_FILE="icudt${version}b.dat"
  
-     dnl We won't build ICU data as a separate file when building
-     dnl JS standalone so that embedders don't have to deal with it.
+     MOZ_ICU_DATA_ARCHIVE=
+ fi
diff --git a/SOURCES/build-jit-atomic-always-lucky.patch b/SOURCES/build-jit-atomic-always-lucky.patch
new file mode 100644
index 0000000..31bc5ec
--- /dev/null
+++ b/SOURCES/build-jit-atomic-always-lucky.patch
@@ -0,0 +1,30 @@
+diff -up firefox-57.0b5/js/src/jit/AtomicOperations.h.jit-atomic-lucky firefox-57.0b5/js/src/jit/AtomicOperations.h
+--- firefox-57.0b5/js/src/jit/AtomicOperations.h.jit-atomic-lucky	2017-10-06 12:34:02.338973607 +0200
++++ firefox-57.0b5/js/src/jit/AtomicOperations.h	2017-10-06 12:38:24.632622215 +0200
+@@ -415,7 +415,7 @@ AtomicOperations::isLockfreeJS(int32_t s
+ #elif defined(__s390__) || defined(__s390x__)
+ # include "jit/none/AtomicOperations-feeling-lucky.h"
+ #else
+-# error "No AtomicOperations support provided for this platform"
++# include "jit/none/AtomicOperations-feeling-lucky.h"
+ #endif
+ 
+ #endif // jit_AtomicOperations_h
+diff -up firefox-57.0b5/js/src/jit/none/AtomicOperations-feeling-lucky.h.jit-atomic-lucky firefox-57.0b5/js/src/jit/none/AtomicOperations-feeling-lucky.h
+--- firefox-57.0b5/js/src/jit/none/AtomicOperations-feeling-lucky.h.jit-atomic-lucky	2017-09-19 06:18:28.000000000 +0200
++++ firefox-57.0b5/js/src/jit/none/AtomicOperations-feeling-lucky.h	2017-10-06 12:34:02.338973607 +0200
+@@ -79,6 +79,14 @@
+ #  define GNUC_COMPATIBLE
+ #endif
+ 
++#ifdef __s390__
++#  define GNUC_COMPATIBLE
++#endif
++
++#ifdef __s390x__
++#  define GNUC_COMPATIBLE
++#endif
++
+ // The default implementation tactic for gcc/clang is to use the newer
+ // __atomic intrinsics added for use in C++11 <atomic>.  Where that
+ // isn't available, we use GCC's older __sync functions instead.
diff --git a/SOURCES/build-missing-getrandom.patch b/SOURCES/build-missing-getrandom.patch
deleted file mode 100644
index 3a4adde..0000000
--- a/SOURCES/build-missing-getrandom.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up firefox-52.0b8/js/src/jsmath.cpp.missing-getrandom firefox-52.0b8/js/src/jsmath.cpp
---- firefox-52.0b8/js/src/jsmath.cpp.missing-getrandom	2017-02-22 08:09:21.764353407 +0100
-+++ firefox-52.0b8/js/src/jsmath.cpp	2017-02-22 08:10:36.939330775 +0100
-@@ -78,7 +78,7 @@
- static_assert(GETRANDOM_NR == SYS_getrandom,
-               "GETRANDOM_NR should match the actual SYS_getrandom value");
- #  endif
--# else
-+# elif defined(GETRANDOM_NR)
- #  define SYS_getrandom GETRANDOM_NR
- # endif
- 
-@@ -721,7 +721,7 @@ js::GenerateRandomSeed()
-     seed = (static_cast<uint64_t>(arc4random()) << 32) | arc4random();
- #elif defined(XP_UNIX)
-     bool done = false;
--# if defined(__linux__)
-+# if defined(__linux__) && defined(SYS_getrandom)
-     // Try the relatively new getrandom syscall first. It's the preferred way
-     // on Linux as /dev/urandom may not work inside chroots and is harder to
-     // sandbox (see bug 995069).
diff --git a/SOURCES/build-mozconfig-fix.patch b/SOURCES/build-mozconfig-fix.patch
new file mode 100644
index 0000000..91dffb1
--- /dev/null
+++ b/SOURCES/build-mozconfig-fix.patch
@@ -0,0 +1,12 @@
+diff -up mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/python/mozbuild/mozbuild/mozconfig.py.mozconfig-fix mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/python/mozbuild/mozbuild/mozconfig.py
+--- mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/python/mozbuild/mozbuild/mozconfig.py.mozconfig-fix	2018-03-13 17:22:19.018466884 +0100
++++ mozilla-release-c61f5f5ead48c78a80c80db5c489bdc7cfaf8175/python/mozbuild/mozbuild/mozconfig.py	2018-03-13 17:23:57.379559640 +0100
+@@ -446,7 +446,7 @@ class MozconfigLoader(object):
+                             value = value[1:]
+ 
+                         # Lines with a quote not ending in a quote are multi-line.
+-                        if has_quote and not value.endswith("'"):
++                        if has_quote and not value.endswith(("'", ";")):
+                             in_variable = name
+                             current.append(value)
+                             continue
diff --git a/SOURCES/build-nss-prbool.patch b/SOURCES/build-nss-prbool.patch
deleted file mode 100644
index 491b2e1..0000000
--- a/SOURCES/build-nss-prbool.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff -up firefox-52.0esr/security/certverifier/CTLogVerifier.cpp.nss-prbool firefox-52.0esr/security/certverifier/CTLogVerifier.cpp
---- firefox-52.0esr/security/certverifier/CTLogVerifier.cpp.nss-prbool	2017-02-28 02:56:03.000000000 +0100
-+++ firefox-52.0esr/security/certverifier/CTLogVerifier.cpp	2017-03-01 11:34:15.623577628 +0100
-@@ -7,6 +7,7 @@
- #include "CTLogVerifier.h"
- 
- #include "CTSerialization.h"
-+#include "prtypes.h"
- #include "hasht.h"
- #include "mozilla/ArrayUtils.h"
- #include "mozilla/Assertions.h"
-diff -up firefox-52.0esr/security/manager/ssl/nsSSLStatus.cpp.nss-prbool firefox-52.0esr/security/manager/ssl/nsSSLStatus.cpp
---- firefox-52.0esr/security/manager/ssl/nsSSLStatus.cpp.nss-prbool	2017-03-01 12:09:16.649945106 +0100
-+++ firefox-52.0esr/security/manager/ssl/nsSSLStatus.cpp	2017-03-01 12:09:35.749939355 +0100
-@@ -4,6 +4,7 @@
-  * 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/. */
- 
-+#include "prtypes.h"
- #include "mozilla/Casting.h"
- #include "nsSSLStatus.h"
- #include "nsIClassInfoImpl.h"
diff --git a/SOURCES/build-nss-version.patch b/SOURCES/build-nss-version.patch
index 42f375d..734005d 100644
--- a/SOURCES/build-nss-version.patch
+++ b/SOURCES/build-nss-version.patch
@@ -1,12 +1,12 @@
-diff -up firefox-52.0esr/old-configure.in.nss-ver firefox-52.0esr/old-configure.in
---- firefox-52.0esr/old-configure.in.nss-ver	2017-03-01 10:12:54.668047060 +0100
-+++ firefox-52.0esr/old-configure.in	2017-03-01 10:13:01.733044933 +0100
-@@ -2123,7 +2123,7 @@ MOZ_ARG_WITH_BOOL(system-nss,
+diff -up firefox-60.1.0/old-configure.in.nss-version firefox-60.1.0/old-configure.in
+--- firefox-60.1.0/old-configure.in.nss-version	2018-06-20 14:24:55.204158540 +0200
++++ firefox-60.1.0/old-configure.in	2018-06-20 14:30:19.517004230 +0200
+@@ -1768,7 +1768,7 @@ MOZ_ARG_WITH_BOOL(system-nss,
      _USE_SYSTEM_NSS=1 )
  
  if test -n "$_USE_SYSTEM_NSS"; then
--    AM_PATH_NSS(3.28.6, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
-+    AM_PATH_NSS(3.28.4, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
+-    AM_PATH_NSS(3.36.4, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
++    AM_PATH_NSS(3.36.0, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
  fi
  
- if test -n "$MOZ_SYSTEM_NSS"; then
+ if test -z "$MOZ_SYSTEM_NSS"; then
diff --git a/SOURCES/build-s390-atomic.patch b/SOURCES/build-s390-atomic.patch
deleted file mode 100644
index 3624b98..0000000
--- a/SOURCES/build-s390-atomic.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up mozilla-aurora/js/src/jit/AtomicOperations.h.s390-atomic mozilla-aurora/js/src/jit/AtomicOperations.h
---- mozilla-aurora/js/src/jit/AtomicOperations.h.s390-atomic	2016-11-15 12:22:38.000000000 +0100
-+++ mozilla-aurora/js/src/jit/AtomicOperations.h	2016-12-08 15:36:11.792439891 +0100
-@@ -341,6 +341,9 @@ AtomicOperations::isLockfree(int32_t siz
- #  include "jit/none/AtomicOperations-ppc.h"
- # elif defined(__aarch64__)
- #  include "jit/arm64/AtomicOperations-arm64.h"
-+# elif defined(__s390__)
-+   // Also works with ppc atomic operations
-+#  include "jit/none/AtomicOperations-ppc.h"
- # else
- #  include "jit/none/AtomicOperations-none.h" // These MOZ_CRASH() always
- # endif
diff --git a/SOURCES/build-s390-missing-include.patch b/SOURCES/build-s390-missing-include.patch
deleted file mode 100644
index 59157e6..0000000
--- a/SOURCES/build-s390-missing-include.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -up firefox-52.1.0esr/dom/filesystem/compat/FileSystemDirectoryReader.h.s390-build-includes-fix firefox-52.1.0esr/dom/filesystem/compat/FileSystemDirectoryReader.h
---- firefox-52.1.0esr/dom/filesystem/compat/FileSystemDirectoryReader.h.s390-build-includes-fix	2017-04-12 09:31:39.419402551 +0200
-+++ firefox-52.1.0esr/dom/filesystem/compat/FileSystemDirectoryReader.h	2017-04-12 09:31:53.392340589 +0200
-@@ -11,6 +11,7 @@
- #include "mozilla/ErrorResult.h"
- #include "mozilla/dom/BindingDeclarations.h"
- #include "nsCycleCollectionParticipant.h"
-+#include "mozilla/dom/FileSystemDirectoryEntry.h"
- #include "nsWrapperCache.h"
- 
- namespace mozilla {
diff --git a/SOURCES/distribution.ini b/SOURCES/distribution.ini
new file mode 100644
index 0000000..8bf461e
--- /dev/null
+++ b/SOURCES/distribution.ini
@@ -0,0 +1,9 @@
+[Global]
+id=redhat
+version=1.0
+about=Mozilla Firefox for Red Hat Enterprise Linux
+
+[Preferences]
+app.distributor=redhat
+app.distributor.channel=redhat
+app.partner.fedora=redhat
diff --git a/SOURCES/find-external-requires b/SOURCES/find-external-requires
deleted file mode 100755
index d79db1d..0000000
--- a/SOURCES/find-external-requires
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-# Finds requirements provided outside of the current file set
-
-filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"`
-
-provides=`echo $filelist | /usr/lib/rpm/find-provides`
-
-{
-for f in $filelist ; do
-	echo $f | /usr/lib/rpm/find-requires | while read req ; do
-		found=0
-		for p in $provides ; do
-			if [ "$req" = "$p" ]; then
-				found=1
-			fi
-		done
-		if [ "$found" = "0" ]; then
-			echo $req
-		fi
-	done
-done
-} | sort -u
\ No newline at end of file
diff --git a/SOURCES/firefox-centos-default-prefs.js b/SOURCES/firefox-centos-default-prefs.js
deleted file mode 100644
index fd3108f..0000000
--- a/SOURCES/firefox-centos-default-prefs.js
+++ /dev/null
@@ -1,27 +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");
-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%");
-pref("browser.tabs.remote.autostart",       false);
diff --git a/SOURCES/firefox-default.patch b/SOURCES/firefox-default.patch
deleted file mode 100644
index 641337b..0000000
--- a/SOURCES/firefox-default.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-diff -up mozilla-aurora/browser/components/preferences/in-content/advanced.xul.default mozilla-aurora/browser/components/preferences/in-content/advanced.xul
---- mozilla-aurora/browser/components/preferences/in-content/advanced.xul.default	2016-11-15 12:21:37.000000000 +0100
-+++ mozilla-aurora/browser/components/preferences/in-content/advanced.xul	2016-12-08 10:51:04.049353573 +0100
-@@ -75,7 +75,7 @@
-               type="bool"/>
- 
-  <!-- Update tab -->
--#ifdef MOZ_UPDATER
-+#ifdef 0
-   <preference id="app.update.enabled"
-               name="app.update.enabled"
-               type="bool"/>
-@@ -116,7 +116,7 @@
-               type="int"/>
- </preferences>
- 
--#ifdef HAVE_SHELL_SERVICE
-+#ifdef 0
-   <stringbundle id="bundleShell" src="chrome://browser/locale/shellservice.properties"/>
-   <stringbundle id="bundleBrand" src="chrome://branding/locale/brand.properties"/>
- #endif
-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	2016-11-15 12:21:39.000000000 +0100
-+++ mozilla-aurora/browser/components/shell/nsGNOMEShellService.cpp	2016-12-08 10:51:04.049353573 +0100
-@@ -150,8 +150,8 @@ nsGNOMEShellService::GetAppPathFromLaunc
- bool
- nsGNOMEShellService::KeyMatchesAppName(const char *aKeyValue) const
- {
-+  nsAutoCString appName;
- 
--  gchar *commandPath;
-   if (mUseLocaleFilenames) {
-     gchar *nativePath = g_filename_from_utf8(aKeyValue, -1,
-                                              nullptr, nullptr, nullptr);
-@@ -160,17 +160,13 @@ nsGNOMEShellService::KeyMatchesAppName(c
-       return false;
-     }
- 
--    commandPath = g_find_program_in_path(nativePath);
-+    appName.Assign(nativePath);
-     g_free(nativePath);
-   } else {
--    commandPath = g_find_program_in_path(aKeyValue);
-+    appName.Assign(aKeyValue);
-   }
- 
--  if (!commandPath)
--    return false;
--
--  bool matches = mAppPath.Equals(commandPath);
--  g_free(commandPath);
-+  bool matches = mAppPath.Equals(appName);
-   return matches;
- }
- 
-@@ -253,16 +249,7 @@ nsGNOMEShellService::SetDefaultBrowser(b
-   nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
-   nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
-   if (gconf) {
--    nsAutoCString appKeyValue;
--    if (mAppIsInPath) {
--      // mAppPath is in the users path, so use only the basename as the launcher
--      gchar *tmp = g_path_get_basename(mAppPath.get());
--      appKeyValue = tmp;
--      g_free(tmp);
--    } else {
--      appKeyValue = mAppPath;
--    }
--
-+    nsAutoCString appKeyValue(MOZ_APP_NAME);
-     appKeyValue.AppendLiteral(" %s");
- 
-     for (unsigned int i = 0; i < ArrayLength(appProtocols); ++i) {
-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	2016-12-08 10:51:04.049353573 +0100
-+++ mozilla-aurora/browser/components/shell/nsGNOMEShellService.h	2016-12-08 10:55:53.754263671 +0100
-@@ -13,7 +13,7 @@
- class nsGNOMEShellService final : public nsIGNOMEShellService
- {
- public:
--  nsGNOMEShellService() : mAppIsInPath(false) { }
-+  nsGNOMEShellService() : mAppIsInPath(true) { }
- 
-   NS_DECL_ISUPPORTS
-   NS_DECL_NSISHELLSERVICE
-diff -up mozilla-aurora/browser/components/shell/ShellService.jsm.default mozilla-aurora/browser/components/shell/ShellService.jsm
---- mozilla-aurora/browser/components/shell/ShellService.jsm.default	2016-12-08 10:56:51.602245720 +0100
-+++ mozilla-aurora/browser/components/shell/ShellService.jsm	2016-12-08 10:56:58.213243668 +0100
-@@ -48,7 +48,7 @@ let ShellServiceInternal = {
-    * up and "browser.shell.checkDefaultBrowser" is true, otherwise it
-    * is false.
-    */
--  _checkedThisSession: false,
-+  _checkedThisSession: true,
-   get shouldCheckDefaultBrowser() {
-     // If we've already checked, the browser has been started and this is a
-     // new window open, and we don't want to check again.
diff --git a/SOURCES/firefox-disable-dbus-remote.patch b/SOURCES/firefox-disable-dbus-remote.patch
new file mode 100644
index 0000000..33b21cb
--- /dev/null
+++ b/SOURCES/firefox-disable-dbus-remote.patch
@@ -0,0 +1,36 @@
+diff -up firefox-60.1.0/toolkit/components/remote/moz.build.disable-dbus-remote firefox-60.1.0/toolkit/components/remote/moz.build
+--- firefox-60.1.0/toolkit/components/remote/moz.build.disable-dbus-remote	2018-06-21 09:29:35.975729500 +0200
++++ firefox-60.1.0/toolkit/components/remote/moz.build	2018-06-21 09:29:53.863631963 +0200
+@@ -22,11 +22,6 @@ if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']
+         'nsGTKRemoteService.cpp',
+         'nsRemoteService.cpp',
+     ]
+-    if CONFIG['MOZ_ENABLE_DBUS']:
+-        SOURCES += [
+-            'nsDBusRemoteService.cpp',
+-        ]
+-        CXXFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']
+ 
+ FINAL_LIBRARY = 'xul'
+ 
+diff -up firefox-60.1.0/toolkit/components/remote/nsRemoteService.cpp.disable-dbus-remote firefox-60.1.0/toolkit/components/remote/nsRemoteService.cpp
+--- firefox-60.1.0/toolkit/components/remote/nsRemoteService.cpp.disable-dbus-remote	2018-06-19 22:35:27.000000000 +0200
++++ firefox-60.1.0/toolkit/components/remote/nsRemoteService.cpp	2018-06-21 09:30:24.949462465 +0200
+@@ -6,7 +6,7 @@
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
+ #include "nsGTKRemoteService.h"
+-#ifdef MOZ_ENABLE_DBUS
++#if 0 // Disable DBus remote
+ #include "nsDBusRemoteService.h"
+ #endif
+ #include "nsRemoteService.h"
+@@ -34,7 +34,7 @@ NS_IMPL_ISUPPORTS(nsRemoteService,
+ NS_IMETHODIMP
+ nsRemoteService::Startup(const char* aAppName, const char* aProfileName)
+ {
+-#if defined(MOZ_ENABLE_DBUS)
++#if 0 // Disable DBus remote
+     nsresult rv;
+     mDBusRemoteService = new nsDBusRemoteService();
+     rv = mDBusRemoteService->Startup(aAppName, aProfileName);
diff --git a/SOURCES/firefox-enable-addons.patch b/SOURCES/firefox-enable-addons.patch
index c1c82bb..15d0707 100644
--- a/SOURCES/firefox-enable-addons.patch
+++ b/SOURCES/firefox-enable-addons.patch
@@ -1,13 +1,13 @@
-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	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
+diff -up firefox-55.0/browser/app/profile/firefox.js.addons firefox-55.0/browser/app/profile/firefox.js
+--- firefox-55.0/browser/app/profile/firefox.js.addons	2017-08-02 10:58:30.566363833 +0200
++++ firefox-55.0/browser/app/profile/firefox.js	2017-08-02 10:59:15.377216959 +0200
+@@ -65,7 +65,8 @@ pref("extensions.systemAddon.update.url"
  
  // Disable add-ons that are not installed by the user in all scopes by default.
  // See the SCOPE constants in AddonManager.jsm for values to use here.
 -pref("extensions.autoDisableScopes", 15);
 +pref("extensions.autoDisableScopes", 0);
 +pref("extensions.showMismatchUI", false);
+ // Scopes to scan for changes at startup.
+ pref("extensions.startupScanScopes", 0);
  
- // Dictionary download preference
- pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/firefox/dictionaries/");
diff --git a/SOURCES/firefox-enable-plugins.patch b/SOURCES/firefox-enable-plugins.patch
deleted file mode 100644
index a1ee8c5..0000000
--- a/SOURCES/firefox-enable-plugins.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -up firefox-31.1.0/mozilla-esr31/browser/app/profile/firefox.js.plugins firefox-31.1.0/mozilla-esr31/browser/app/profile/firefox.js
---- firefox-31.1.0/mozilla-esr31/browser/app/profile/firefox.js.plugins	2014-09-11 13:47:45.000000000 +0200
-+++ firefox-31.1.0/mozilla-esr31/browser/app/profile/firefox.js	2014-09-11 14:42:26.036810267 +0200
-@@ -657,7 +657,7 @@ pref("plugins.click_to_play", true);
- 
- pref("plugins.hideMissingPluginsNotification", false);
- 
--pref("plugin.default.state", 1);
-+pref("plugin.default.state", 2);
- 
- // Plugins bundled in XPIs are enabled by default.
- pref("plugin.defaultXpi.state", 2);
-@@ -665,7 +665,7 @@ pref("plugin.defaultXpi.state", 2);
- // Flash is enabled by default, and Java is click-to-activate by default on
- // all channels.
- pref("plugin.state.flash", 2);
--pref("plugin.state.java", 1);
-+pref("plugin.state.java", 2);
- 
- // Whitelist Requests
- 
diff --git a/SOURCES/firefox-fedora-ua.patch b/SOURCES/firefox-fedora-ua.patch
new file mode 100644
index 0000000..a5b7866
--- /dev/null
+++ b/SOURCES/firefox-fedora-ua.patch
@@ -0,0 +1,21 @@
+diff -up firefox-35.0.1/mozilla-release/media/webrtc/trunk/Makefile.old firefox-35.0.1/mozilla-release/media/webrtc/trunk/Makefile
+diff -up firefox-35.0.1/mozilla-release/netwerk/protocol/http/nsHttpHandler.cpp.old firefox-35.0.1/mozilla-release/netwerk/protocol/http/nsHttpHandler.cpp
+--- firefox-35.0.1/mozilla-release/netwerk/protocol/http/nsHttpHandler.cpp.old	2015-01-23 07:00:06.000000000 +0100
++++ firefox-35.0.1/mozilla-release/netwerk/protocol/http/nsHttpHandler.cpp	2015-02-09 16:40:42.983220596 +0100
+@@ -607,7 +607,7 @@ nsHttpHandler::BuildUserAgent()
+     mUserAgent.SetCapacity(mLegacyAppName.Length() +
+                            mLegacyAppVersion.Length() +
+ #ifndef UA_SPARE_PLATFORM
+-                           mPlatform.Length() +
++                           mPlatform.Length() + 8 +
+ #endif
+                            mOscpu.Length() +
+                            mMisc.Length() +
+@@ -631,6 +631,7 @@ nsHttpHandler::BuildUserAgent()
+     if (!mPlatform.IsEmpty()) {
+       mUserAgent += mPlatform;
+       mUserAgent.AppendLiteral("; ");
++      mUserAgent.AppendLiteral("Fedora; ");
+     }
+ #endif
+     if (!mCompatDevice.IsEmpty()) {
diff --git a/SOURCES/firefox-install-dir.patch b/SOURCES/firefox-install-dir.patch
deleted file mode 100644
index c962fa5..0000000
--- a/SOURCES/firefox-install-dir.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up mozilla-aurora/config/baseconfig.mk.orig mozilla-aurora/config/baseconfig.mk
---- mozilla-aurora/config/baseconfig.mk.orig	2014-05-06 13:17:17.000000000 +0200
-+++ mozilla-aurora/config/baseconfig.mk	2014-05-27 17:13:05.215503107 +0200
-@@ -4,7 +4,7 @@
- # whether a normal build is happening or whether the check is running.
- includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
- idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
--installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-+installdir = $(libdir)/$(MOZ_APP_NAME)
- sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
- ifndef TOP_DIST
- TOP_DIST = dist
diff --git a/SOURCES/firefox-mozconfig b/SOURCES/firefox-mozconfig
old mode 100755
new mode 100644
index ff2a6a4..7501abc
--- a/SOURCES/firefox-mozconfig
+++ b/SOURCES/firefox-mozconfig
@@ -1,28 +1,29 @@
 . $topsrcdir/browser/config/mozconfig
-ac_add_options --disable-crashreporter
-ac_add_options --disable-libjpeg-turbo
-ac_add_options --disable-necko-wifi
+
+ac_add_options --enable-default-toolkit=cairo-gtk3
+
+ac_add_options --prefix="$PREFIX"
+ac_add_options --libdir="$LIBDIR"
+ac_add_options --with-system-zlib
+ac_add_options --with-system-bz2
+ac_add_options --with-pthreads
 ac_add_options --disable-strip
 ac_add_options --disable-tests
-ac_add_options --disable-updater
-ac_add_options --enable-default-toolkit=cairo-gtk2
-ac_add_options --enable-extensions=default
-ac_add_options --enable-release
-ac_add_options --enable-safe-browsing
+#ac_add_options --enable-libnotify
+ac_add_options --enable-necko-wifi
 ac_add_options --enable-startup-notification
-ac_add_options --libdir="$LIBDIR"
-ac_add_options --prefix="$PREFIX"
+ac_add_options --disable-updater
+ac_add_options --enable-chrome-format=omni
+ac_add_options --enable-pulseaudio
+ac_add_options --with-system-icu
 ac_add_options --with-mozilla-api-keyfile=../mozilla-api-key
-ac_add_options --without-system-libvpx
-ac_add_options --with-pthreads
-ac_add_options --with-system-zlib
-ac_add_options --enable-system-hunspell
-ac_add_options --with-system-jpeg
+ac_add_options --with-google-api-keyfile=../google-api-key
+ac_add_options --enable-release
+ac_add_options --enable-pie
+
 export BUILD_OFFICIAL=1
-export CFLAGS="$CFLAGS -gdwarf-2"
-export CXXFLAGS="$CXXFLAGS -gdwarf-2"
 export MOZILLA_OFFICIAL=1
-
+export MOZ_TELEMETRY_REPORTING=1
 mk_add_options BUILD_OFFICIAL=1
 mk_add_options MOZILLA_OFFICIAL=1
 mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir
diff --git a/SOURCES/firefox-ppc64le.patch b/SOURCES/firefox-ppc64le.patch
deleted file mode 100644
index 45fe1bc..0000000
--- a/SOURCES/firefox-ppc64le.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -up firefox-36.0/mozilla-release/gfx/skia/skia/include/core/SkPreConfig.h.ppc64le firefox-36.0/mozilla-release/gfx/skia/skia/include/core/SkPreConfig.h
---- firefox-36.0/mozilla-release/gfx/skia/skia/include/core/SkPreConfig.h.ppc64le	2015-02-20 03:01:40.000000000 +0100
-+++ firefox-36.0/mozilla-release/gfx/skia/skia/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/firefox-redhat-default-prefs.js b/SOURCES/firefox-redhat-default-prefs.js
new file mode 100644
index 0000000..d902ab3
--- /dev/null
+++ b/SOURCES/firefox-redhat-default-prefs.js
@@ -0,0 +1,33 @@
+pref("app.update.auto",                     false);
+pref("app.update.enabled",                  false);
+pref("app.update.autoInstallEnabled",       false);
+pref("general.smoothScroll",                true);
+pref("intl.locale.matchOS",                 true);
+pref("toolkit.storage.synchronous",         0);
+pref("toolkit.networkmanager.disable",      false);
+pref("offline.autoDetect",                  true);
+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("network.manage-offline-status",       true);
+pref("extensions.shownSelectionUI",         true);
+pref("ui.SpellCheckerUnderlineStyle",       1);
+pref("startup.homepage_override_url",       "");
+pref("browser.startup.homepage",            "data:text/plain,browser.startup.homepage=http://start.fedoraproject.org/");
+pref("browser.newtabpage.pinned",           '[{"url":"http://start.fedoraproject.org/","title":"Fedora Project - Start Page"}]');
+pref("geo.wifi.uri", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
+pref("media.gmp-gmpopenh264.provider.enabled",false);
+pref("media.gmp-gmpopenh264.autoupdate",false);
+pref("media.gmp-gmpopenh264.enabled",false);
+pref("media.gmp-gmpopenh264.enabled",false);
+pref("plugins.notifyMissingFlash", false);
+/* See https://bugzilla.redhat.com/show_bug.cgi?id=1226489 */
+pref("browser.display.use_system_colors", false);
+pref("layers.use-image-offscreen-surfaces", false);
+/* Allow sending credetials to all https:// sites */
+pref("network.negotiate-auth.trusted-uris", "https://");
+pref("security.use_sqldb", false);
+/* Use OS settings for UI language */
+pref("intl.locale.requested", "");
diff --git a/SOURCES/firefox.1 b/SOURCES/firefox.1
index 62bbe08..4311322 100644
--- a/SOURCES/firefox.1
+++ b/SOURCES/firefox.1
@@ -1,10 +1,10 @@
-.TH FIREFOX 1 "August 07, 2001" firefox "Linux User's Manual"
+.TH FIREFOX 1 "November 30, 2017" firefox "Linux User's Manual"
 .SH NAME
 firefox \- a Web browser for X11 derived from the Mozilla browser
 
 .SH SYNOPSIS
 .B firefox
-[\fIOPTIONS\fR] [\fIURL\fR]
+[\fIOPTIONS\fR ...] [\fIURL\fR]
 
 .B firefox-bin
 [\fIOPTIONS\fR] [\fIURL\fR]
@@ -20,22 +20,6 @@ environment for the actual executable, \fBfirefox-bin\fR.
 .SH OPTIONS
 A summary of the options supported by \fBfirefox\fR is included below.
 
-.SS "GTK options"
-\fB\-\-gdk-debug=\fR\fIFLAGS\fR
-Gdk debugging flags to set
-.TP
-\fB\-\-gdk-no-debug=\fR\fIFLAGS\fR
-Gdk debugging flags to unset
-.TP
-\fB\-\-gtk-debug=\fR\fIFLAGS\fR
-Gtk+ debugging flags to set
-.TP
-\fB\-\-gtk-no-debug=\fR\fIFLAGS\fR
-Gtk+ debugging flags to unset
-.TP
-\fB\-\-gtk-module=\fR\fIMODULE\fR
-Load an additional Gtk module
-
 .SS "X11 options"
 .TP
 .BI \-\-display= DISPLAY
@@ -44,13 +28,6 @@ X display to use
 .B \--sync
 Make X calls synchronous
 .TP
-.B \-\-no-xshm
-Don't use X shared memory extension
-.TP
-.BI \-\-xim-preedit= STYLE
-.TP
-.BI \-\-xim-status= STYLE
-.TP
 .B \-\-g-fatal-warnings
 Make all warnings fatal
 
@@ -60,79 +37,105 @@ Make all warnings fatal
 Show summary of options.
 .TP
 .B \-v, \-version
-Print \fB/usr/bin/firefox-bin\fR version.
-.TP
-\fB\-CreateProfile\fR \fIprofile\fR
-Create \fIprofile\fR.
+Print Firefox version.
 .TP
 \fB\-P\fR \fIprofile\fR
 Start with \fIprofile\fR.
 .TP
-.B \-ProfileManager
-Start with profile manager.
+\fB\-\-profile\fR \fIpath\fR
+Start with profile at \fIpath\fR.
 .TP
-\fB\-remote\fR \fIcommand\fR
-Execute \fIcommand\fR in an already running Firefox process.  For more info,
-see: \fIhttp://www.mozilla.org/unix/remote.html\fR
+\fB\-\-migration\fR
+Start with migration wizard.
 .TP
-.B \-jsconsole
-Start with Javascript Console
+.B \-\-ProfileManager
+Start with ProfileManager.
 .TP
-\fB\-chrome\fR \fIurl\fR
-Load the specified chrome.
+\fB\-\-no\-remote\fR
+Do not accept or send remote commands; implies \fB--new-instance\fR.
 .TP
-\fB\-no\-remote\fR
-Don't connect to any other running instances of \fBfirefox\fR. Use this if you want to run \fBfirefox\fR
-in an entirely new process. By default, \fBfirefox\fR will delegate a command to an already running instance.
+\fB\-\-new\-instance\fR
+Open new instance, not a new window in running instance.
 .TP
-\fB\-safe\-mode\fR
-Start \fBfirefox\fR in safe-mode. This disables all third-party extensions, and may be necessary if
-you are having problems with an extension you installed.
+\fB\-\-UILocale\fR \fIlocale\fR
+Start with \fIlocale\fR resources as UI Locale.
 .TP
-\fB\-new\-tab\fR \fIurl\fR
-Open \fIurl\fR in a new tab.
+\fB\-\-save\-mode\fR
+Disables extensions and themes for this session.
+.TP
+\fB\-\-headless\fR
+Run without a GUI.
+.TP
+\fB\-\-marionette\fR
+Enable remote control server.
 .TP
-\fB\-new\-window\fR \fIurl\fR
+\fB\-\-browser\fR
+Open a browser window.
+.TP
+\fB\-\-new-window\fR \fIurl\fR
 Open \fIurl\fR in a new window.
 .TP
-\fB\-preferences\fR
-Open the preferences dialog.
+\fB\-\-new-tab\fR \fIurl\fR
+Open \fIurl\fR in a new tab.
 .TP
-\fB\-private\fR
-Start \fBfirefox\fR in private browsing mode.
+\fB\-\-private-window\fR \fIurl\fR
+Open \fIurl\fR in a new private window.
 .TP
-\fB\-private\-toggle\fR
-Toggle private browsing mode.
+\fB\-\-preferences\fR
+Open Preferences dialog.
 .TP
-\fB\-setDefaultBrowser\fR
-Set \fBfirefox\fR as the default web browser.
+\fB\-\-screenshot\fR [\fIpath\fR]
+Save screenshot to \fIpath\fR or in working directory.
 .TP
-\fB\-search\fR \fIterm\fR
-Search for \fIterm\fR with your default search engine.
+\fB\-\-window-size\fR \fIwidth\fR[,\fIheight\fR]
+Width and optionally height of screenshot.
 .TP
-\fB\-migration\fR
-Start with migration wizard.
+\fB\-\-search\fR \fIterm\fR
+Search \fIterm\fR with your default search engine.
 .TP
-\fB\-new-instance\fR
-Open new instance, not a new window in running instance.
+
+
+\fB\-\-jsconsole\fR
+Open the Browser Console.
+.TP
+\fB\-\-jsdebugger\fR
+Open the Browser Toolbox.
+.TP
+\fB\-\-wait-for-jsdebugger\fR
+Spin event loop until JS debugger connects.  Enables debugging (some) application startup code paths.  Only has an effect when \fI--jsdebugger\fR is also supplied.
+.TP
+\fB\-\-devtools\fR
+Open DevTools on initial load.
+.TP
+\fB\-\-start-debugger-server\fR [ws:][\fIport\fR|\fIpath\fR]
+Start the debugger server on a TCP port or Unix domain socket path. Defaults to TCP port 6000. Use WebSocket protocol if ws: prefix is specified.
+.TP
+\fB\-\-recording\fR \fIfile\fR
+Record drawing for a given URL.
+.TP
+\fB\-\-recording-output\fR \fIfile\fR
+Specify destination file for a drawing recording.
+.TP
+\fB\-\-setDefaultBrowser\fR
+Set this app as the default browser.
 
 .SH FILES
 \fI/usr/bin/firefox\fR - shell script wrapping
 \fBfirefox\fR
 .br
-\fI/usr/lib/mozilla/firefox-bin\fR - \fBfirefox\fR
+\fI/usr/lib64/firefox/firefox-bin\fR - \fBfirefox\fR
 executable
 
 .SH VERSION
-1.0
+57.0
 
 .SH BUGS
 To report a bug, please visit \fIhttp://bugzilla.mozilla.org/\fR
 
-.SH "SEE ALSO"
-.BR mozilla(1)
-
 .SH AUTHORS
 .TP
 .B The Mozilla Organization
 .I http://www.mozilla.org/about.html
+.TP
+.B Tobias Girstmair
+.I https://gir.st/
diff --git a/SOURCES/firefox.desktop b/SOURCES/firefox.desktop
index bac6399..f13e600 100644
--- a/SOURCES/firefox.desktop
+++ b/SOURCES/firefox.desktop
@@ -1,28 +1,6 @@
 [Desktop Entry]
 Version=1.0
-Name=Firefox Web Browser
-Name[ca]=Navegador web Firefox
-Name[cs]=Firefox Webový prohlížeč
-Name[es]=Navegador Firefox
-Name[fa]=مرورگر اینترنتی Firefox
-Name[fi]=Firefox-selain
-Name[fr]=Navigateur web Firefox
-Name[hu]=Firefox webböngésző
-Name[it]=Web browser Firefox
-Name[ja]=Firefox Web ブラウザー
-Name[ko]=Firefox 웹 브라우저
-Name[nb]=Firefox Nettleser
-Name[nl]=Firefox webbrowser
-Name[nn]=Firefox Nettlesar
-Name[no]=Firefox Nettleser
-Name[pl]=Przeglądarka WWW Firefox
-Name[pt]=Firefox Navegador Web
-Name[pt_BR]=Navegador Firefox
-Name[ru]=Веб-браузер Firefox
-Name[sk]=Internetový prehliadač Firefox
-Name[sv]=Webbläsaren Firefox
-Name[zh_CN]=火狐浏览器
-Name[zh_TW]=Firefox 網頁瀏覽器
+Name=Firefox
 GenericName=Web Browser
 GenericName[ca]=Navegador web
 GenericName[cs]=Webový prohlížeč
@@ -71,3 +49,224 @@ Type=Application
 MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
 StartupNotify=true
 Categories=Network;WebBrowser;
+Keywords=web;browser;internet;
+Actions=new-window;new-private-window;
+
+[Desktop Action new-window]
+Name=Open a New Window
+Name[ach]=Dirica manyen
+Name[af]=Nuwe venster
+Name[an]=Nueva finestra
+Name[ar]=نافذة جديدة
+Name[as]=নতুন উইন্ডো
+Name[ast]=Ventana nueva
+Name[az]=Yeni Pəncərə
+Name[be]=Новае акно
+Name[bg]=Нов прозорец
+Name[bn-BD]=নতুন উইন্ডো (N)
+Name[bn-IN]=নতুন উইন্ডো
+Name[br]=Prenestr nevez
+Name[brx]=गोदान उइन्ड'(N)
+Name[bs]=Novi prozor
+Name[ca]=Finestra nova
+Name[cak]=K'ak'a' tzuwäch
+Name[cs]=Nové okno
+Name[cy]=Ffenestr Newydd
+Name[da]=Nyt vindue
+Name[de]=Neues Fenster
+Name[dsb]=Nowe wokno
+Name[el]=Νέο παράθυρο
+Name[en-GB]=New Window
+Name[en-US]=New Window
+Name[en-ZA]=New Window
+Name[eo]=Nova fenestro
+Name[es-AR]=Nueva ventana
+Name[es-CL]=Nueva ventana
+Name[es-ES]=Nueva ventana
+Name[es-MX]=Nueva ventana
+Name[et]=Uus aken
+Name[eu]=Leiho berria
+Name[fa]=پنجره جدید‌
+Name[ff]=Henorde Hesere
+Name[fi]=Uusi ikkuna
+Name[fr]=Nouvelle fenêtre
+Name[fy-NL]=Nij finster
+Name[ga-IE]=Fuinneog Nua
+Name[gd]=Uinneag ùr
+Name[gl]=Nova xanela
+Name[gn]=Ovetã pyahu
+Name[gu-IN]=નવી વિન્ડો
+Name[he]=חלון חדש
+Name[hi-IN]=नया विंडो
+Name[hr]=Novi prozor
+Name[hsb]=Nowe wokno
+Name[hu]=Új ablak
+Name[hy-AM]=Նոր Պատուհան
+Name[id]=Jendela Baru
+Name[is]=Nýr gluggi
+Name[it]=Nuova finestra
+Name[ja]=新しいウィンドウ
+Name[ja-JP-mac]=新規ウインドウ
+Name[ka]=ახალი ფანჯარა
+Name[kk]=Жаңа терезе
+Name[km]=បង្អួច​​​ថ្មី
+Name[kn]=ಹೊಸ ಕಿಟಕಿ
+Name[ko]=새 창
+Name[kok]=नवें जनेल
+Name[ks]=نئئ وِنڈو
+Name[lij]=Neuvo barcon
+Name[lo]=ຫນ້າຕ່າງໃຫມ່
+Name[lt]=Naujas langas
+Name[ltg]=Jauns lūgs
+Name[lv]=Jauns logs
+Name[mai]=नव विंडो
+Name[mk]=Нов прозорец
+Name[ml]=പുതിയ ജാലകം
+Name[mr]=नवीन पटल
+Name[ms]=Tetingkap Baru
+Name[my]=ဝင်းဒိုးအသစ်
+Name[nb-NO]=Nytt vindu
+Name[ne-NP]=नयाँ सञ्झ्याल
+Name[nl]=Nieuw venster
+Name[nn-NO]=Nytt vindauge
+Name[or]=ନୂତନ ୱିଣ୍ଡୋ
+Name[pa-IN]=ਨਵੀਂ ਵਿੰਡੋ
+Name[pl]=Nowe okno
+Name[pt-BR]=Nova janela
+Name[pt-PT]=Nova janela
+Name[rm]=Nova fanestra
+Name[ro]=Fereastră nouă
+Name[ru]=Новое окно
+Name[sat]=नावा विंडो (N)
+Name[si]=නව කවුළුවක්
+Name[sk]=Nové okno
+Name[sl]=Novo okno
+Name[son]=Zanfun taaga
+Name[sq]=Dritare e Re
+Name[sr]=Нови прозор
+Name[sv-SE]=Nytt fönster
+Name[ta]=புதிய சாளரம்
+Name[te]=కొత్త విండో
+Name[th]=หน้าต่างใหม่
+Name[tr]=Yeni pencere
+Name[tsz]=Eraatarakua jimpani
+Name[uk]=Нове вікно
+Name[ur]=نیا دریچہ
+Name[uz]=Yangi oyna
+Name[vi]=Cửa sổ mới
+Name[wo]=Palanteer bu bees
+Name[xh]=Ifestile entsha
+Name[zh-CN]=新建窗口
+Name[zh-TW]=開新視窗
+
+
+Exec=firefox %u
+
+[Desktop Action new-private-window]
+Name=Open a New Private Window
+Name[ach]=Dirica manyen me mung
+Name[af]=Nuwe privaatvenster
+Name[an]=Nueva finestra privada
+Name[ar]=نافذة خاصة جديدة
+Name[as]=নতুন ব্যক্তিগত উইন্ডো
+Name[ast]=Ventana privada nueva
+Name[az]=Yeni Məxfi Pəncərə
+Name[be]=Новае акно адасаблення
+Name[bg]=Нов прозорец за поверително сърфиране
+Name[bn-BD]=নতুন ব্যক্তিগত উইন্ডো
+Name[bn-IN]=নতুন ব্যক্তিগত উইন্ডো
+Name[br]=Prenestr merdeiñ prevez nevez
+Name[brx]=गोदान प्राइभेट उइन्ड'
+Name[bs]=Novi privatni prozor
+Name[ca]=Finestra privada nova
+Name[cak]=K'ak'a' ichinan tzuwäch
+Name[cs]=Nové anonymní okno
+Name[cy]=Ffenestr Breifat Newydd
+Name[da]=Nyt privat vindue
+Name[de]=Neues privates Fenster
+Name[dsb]=Nowe priwatne wokno
+Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
+Name[en-GB]=New Private Window
+Name[en-US]=New Private Window
+Name[en-ZA]=New Private Window
+Name[eo]=Nova privata fenestro
+Name[es-AR]=Nueva ventana privada
+Name[es-CL]=Nueva ventana privada
+Name[es-ES]=Nueva ventana privada
+Name[es-MX]=Nueva ventana privada
+Name[et]=Uus privaatne aken
+Name[eu]=Leiho pribatu berria
+Name[fa]=پنجره ناشناس جدید
+Name[ff]=Henorde Suturo Hesere
+Name[fi]=Uusi yksityinen ikkuna
+Name[fr]=Nouvelle fenêtre de navigation privée
+Name[fy-NL]=Nij priveefinster
+Name[ga-IE]=Fuinneog Nua Phríobháideach
+Name[gd]=Uinneag phrìobhaideach ùr
+Name[gl]=Nova xanela privada
+Name[gn]=Ovetã ñemi pyahu
+Name[gu-IN]=નવી ખાનગી વિન્ડો
+Name[he]=חלון פרטי חדש
+Name[hi-IN]=नयी निजी विंडो
+Name[hr]=Novi privatni prozor
+Name[hsb]=Nowe priwatne wokno
+Name[hu]=Új privát ablak
+Name[hy-AM]=Սկսել Գաղտնի դիտարկում
+Name[id]=Jendela Mode Pribadi Baru
+Name[is]=Nýr huliðsgluggi
+Name[it]=Nuova finestra anonima
+Name[ja]=新しいプライベートウィンドウ
+Name[ja-JP-mac]=新規プライベートウインドウ
+Name[ka]=ახალი პირადი ფანჯარა
+Name[kk]=Жаңа жекелік терезе
+Name[km]=បង្អួច​ឯកជន​ថ្មី
+Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
+Name[ko]=새 사생활 보호 모드
+Name[kok]=नवो खाजगी विंडो
+Name[ks]=نْو پرایوٹ وینڈو&amp;
+Name[lij]=Neuvo barcon privou
+Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
+Name[lt]=Naujas privataus naršymo langas
+Name[ltg]=Jauns privatais lūgs
+Name[lv]=Jauns privātais logs
+Name[mai]=नया निज विंडो (W)
+Name[mk]=Нов приватен прозорец
+Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
+Name[mr]=नवीन वैयक्तिक पटल
+Name[ms]=Tetingkap Persendirian Baharu
+Name[my]=New Private Window
+Name[nb-NO]=Nytt privat vindu
+Name[ne-NP]=नयाँ निजी सञ्झ्याल
+Name[nl]=Nieuw privévenster
+Name[nn-NO]=Nytt privat vindauge
+Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
+Name[pa-IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
+Name[pl]=Nowe okno prywatne
+Name[pt-BR]=Nova janela privativa
+Name[pt-PT]=Nova janela privada
+Name[rm]=Nova fanestra privata
+Name[ro]=Fereastră privată nouă
+Name[ru]=Новое приватное окно
+Name[sat]=नावा निजेराक् विंडो (W )
+Name[si]=නව පුද්ගලික කවුළුව (W)
+Name[sk]=Nové okno v režime Súkromné prehliadanie
+Name[sl]=Novo zasebno okno
+Name[son]=Sutura zanfun taaga
+Name[sq]=Dritare e Re Private
+Name[sr]=Нови приватан прозор
+Name[sv-SE]=Nytt privat fönster
+Name[ta]=புதிய தனிப்பட்ட சாளரம்
+Name[te]=కొత్త ఆంతరంగిక విండో
+Name[th]=หน้าต่างส่วนตัวใหม่
+Name[tr]=Yeni gizli pencere
+Name[tsz]=Juchiiti eraatarakua jimpani
+Name[uk]=Приватне вікно
+Name[ur]=نیا نجی دریچہ
+Name[uz]=Yangi maxfiy oyna
+Name[vi]=Cửa sổ riêng tư mới
+Name[wo]=Panlanteeru biir bu bees
+Name[xh]=Ifestile yangasese entsha
+Name[zh-CN]=新建隐私浏览窗口
+Name[zh-TW]=新增隱私視窗
+Exec=firefox --private-window %u
+
diff --git a/SOURCES/firefox.sh.in b/SOURCES/firefox.sh.in
new file mode 100644
index 0000000..d16f8cb
--- /dev/null
+++ b/SOURCES/firefox.sh.in
@@ -0,0 +1,258 @@
+#!/bin/bash
+#
+# The contents of this file are subject to the Netscape Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/NPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is Netscape
+# Communications Corporation.  Portions created by Netscape are
+# Copyright (C) 1998 Netscape Communications Corporation. All
+# Rights Reserved.
+#
+# Contributor(s): 
+#
+
+## 
+## Usage:
+##
+## $ firefox
+##
+## This script is meant to run a mozilla program from the mozilla
+## rpm installation.
+##
+## The script will setup all the environment voodoo needed to make
+## mozilla work.
+
+cmdname=`basename $0`
+
+##
+## Variables
+##
+MOZ_ARCH=$(uname -m)
+case $MOZ_ARCH in
+	x86_64 | s390x | sparc64)
+		MOZ_LIB_DIR="/usr/lib64"
+		SECONDARY_LIB_DIR="/usr/lib"
+		;;
+	* )
+		MOZ_LIB_DIR="/usr/lib"
+		SECONDARY_LIB_DIR="/usr/lib64"
+		;;
+esac
+
+MOZ_FIREFOX_FILE="firefox"
+
+if [ ! -r $MOZ_LIB_DIR/firefox/$MOZ_FIREFOX_FILE ]; then
+    if [ ! -r $SECONDARY_LIB_DIR/firefox/$MOZ_FIREFOX_FILE ]; then
+	echo "Error: $MOZ_LIB_DIR/firefox/$MOZ_FIREFOX_FILE not found"
+	if [ -d $SECONDARY_LIB_DIR ]; then
+	    echo "       $SECONDARY_LIB_DIR/firefox/$MOZ_FIREFOX_FILE not found"
+	fi
+	exit 1
+    fi
+    MOZ_LIB_DIR="$SECONDARY_LIB_DIR"
+fi
+MOZ_DIST_BIN="$MOZ_LIB_DIR/firefox"
+MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks"
+MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
+MOZ_PROGRAM="$MOZ_DIST_BIN/$MOZ_FIREFOX_FILE"
+MOZ_LAUNCHER="$MOZ_DIST_BIN/run-mozilla.sh"
+
+##
+## Set MOZ_GRE_CONF
+##
+MOZ_GRE_CONF=/etc/gre.d/gre.conf
+if [ "$MOZ_LIB_DIR" == "/usr/lib64" ]; then
+  MOZ_GRE_CONF=/etc/gre.d/gre64.conf
+fi
+export MOZ_GRE_CONF
+
+##
+## Set MOZILLA_FIVE_HOME
+##
+MOZILLA_FIVE_HOME="$MOZ_DIST_BIN"
+
+export MOZILLA_FIVE_HOME
+
+##
+## Make sure that we set the plugin path
+##
+MOZ_PLUGIN_DIR="plugins"
+
+if [ "$MOZ_PLUGIN_PATH" ]
+then
+  MOZ_PLUGIN_PATH=$MOZ_PLUGIN_PATH:$MOZ_LIB_DIR/mozilla/$MOZ_PLUGIN_DIR:$MOZ_DIST_BIN/$MOZ_PLUGIN_DIR
+else
+  MOZ_PLUGIN_PATH=$MOZ_LIB_DIR/mozilla/$MOZ_PLUGIN_DIR:$MOZ_DIST_BIN/$MOZ_PLUGIN_DIR
+fi
+export MOZ_PLUGIN_PATH
+
+##
+## Set MOZ_APP_LAUNCHER for gnome-session
+##
+export MOZ_APP_LAUNCHER="/usr/bin/firefox"
+
+##
+## Set FONTCONFIG_PATH for Xft/fontconfig
+##
+FONTCONFIG_PATH="/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
+export FONTCONFIG_PATH
+
+##
+## In order to better support certain scripts (such as Indic and some CJK 
+## scripts), Fedora builds its Firefox, with permission from the Mozilla 
+## Corporation, with the Pango system as its text renderer.  This change 
+## may negatively impact performance on some pages.  To disable the use of
+## Pango, set MOZ_DISABLE_PANGO=1 in your environment before launching
+## Firefox.
+##
+#
+# MOZ_DISABLE_PANGO=1
+# export MOZ_DISABLE_PANGO
+#
+
+##
+## Disable the GNOME crash dialog, Moz has it's own
+##
+GNOME_DISABLE_CRASH_DIALOG=1
+export GNOME_DISABLE_CRASH_DIALOG
+
+##
+## Disable the SLICE allocator (rhbz#1014858)
+##
+export G_SLICE=always-malloc
+
+##
+## Enable Xinput2 (mozbz#1207973)
+##
+export MOZ_USE_XINPUT2=1
+
+# OK, here's where all the real work gets done
+
+
+##
+## To disable the use of Firefox localization, set MOZ_DISABLE_LANGPACKS=1
+## in your environment before launching Firefox.
+##
+#
+# MOZ_DISABLE_LANGPACKS=1
+# export MOZ_DISABLE_LANGPACKS
+#
+
+##
+## Automatically installed langpacks are tracked by .fedora-langpack-install
+## config file.
+##
+FEDORA_LANGPACK_CONFIG="$MOZ_EXTENSIONS_PROFILE_DIR/.fedora-langpack-install"
+
+# Since Firefox 60 the installation of individual langpack cannot be done by
+# copying xpi file to the home directory, because the langpack is loaded
+# as to the available languages after the language has been decided and
+# for the first run it won't be in language according to the locale.
+#
+# The current workaround is to put all langpacks to the location
+# for system wide extensions. So we set MOZ_DISABLE_LANGPACKS=1 for this moment
+export MOZ_DISABLE_LANGPACKS=1
+# MOZ_DISABLE_LANGPACKS disables language packs completely
+MOZILLA_DOWN=0
+if ! [ $MOZ_DISABLE_LANGPACKS ] || [ $MOZ_DISABLE_LANGPACKS -eq 0 ]; then
+    if [ -x $MOZ_DIST_BIN/$MOZ_FIREFOX_FILE ]; then
+        # Is firefox running?
+        /usr/bin/pidof firefox > /dev/null 2>&1
+        MOZILLA_DOWN=$?
+    fi
+fi
+
+# Modify language pack configuration only when firefox is not running 
+# and language packs are not disabled
+if [ $MOZILLA_DOWN -ne 0 ]; then
+
+    # Clear already installed langpacks
+    mkdir -p $MOZ_EXTENSIONS_PROFILE_DIR
+    if [ -f $FEDORA_LANGPACK_CONFIG ]; then
+        rm `cat $FEDORA_LANGPACK_CONFIG` > /dev/null 2>&1
+        rm $FEDORA_LANGPACK_CONFIG > /dev/null 2>&1
+        # remove all empty langpacks dirs while they block installation of langpacks
+        rmdir $MOZ_EXTENSIONS_PROFILE_DIR/langpack* > /dev/null 2>&1
+    fi
+
+    # Get locale from system
+    CURRENT_LOCALE=$LC_ALL
+    CURRENT_LOCALE=${CURRENT_LOCALE:-$LC_MESSAGES}
+    CURRENT_LOCALE=${CURRENT_LOCALE:-$LANG}
+
+    # Try with a local variant first, then without a local variant
+    SHORTMOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*||g"`
+    MOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*|-\1|g"`
+
+    function create_langpack_link() {
+        local language=$*
+        local langpack=langpack-${language}@firefox.mozilla.org.xpi
+        if [ -f $MOZ_LANGPACKS_DIR/$langpack ]; then
+            rm -rf $MOZ_EXTENSIONS_PROFILE_DIR/$langpack
+            # If the target file is a symlink (the fallback langpack), 
+            # install the original file instead of the fallback one
+            if [ -h $MOZ_LANGPACKS_DIR/$langpack ]; then
+                langpack=`readlink $MOZ_LANGPACKS_DIR/$langpack`
+            fi
+            ln -s $MOZ_LANGPACKS_DIR/$langpack \
+                  $MOZ_EXTENSIONS_PROFILE_DIR/$langpack
+            echo $MOZ_EXTENSIONS_PROFILE_DIR/$langpack > $FEDORA_LANGPACK_CONFIG
+            return 0
+        fi
+        return 1
+    }
+
+    create_langpack_link $MOZLOCALE || create_langpack_link $SHORTMOZLOCALE || true
+fi
+
+# BEAST fix (rhbz#1005611)
+NSS_SSL_CBC_RANDOM_IV=${NSS_SSL_CBC_RANDOM_IV-1}
+export NSS_SSL_CBC_RANDOM_IV
+
+# Prepare command line arguments
+script_args=""
+pass_arg_count=0
+while [ $# -gt $pass_arg_count ]
+do
+  case "$1" in
+    -g | --debug)
+      script_args="$script_args -g"
+      debugging=1
+      shift
+      ;;
+    -d | --debugger)
+      if [ $# -gt 1 ]; then
+        script_args="$script_args -d $2"
+        shift 2
+      else
+        shift
+      fi
+      ;;
+    *)
+      # Move the unrecognized argument to the end of the list.
+      arg="$1"
+      shift
+      set -- "$@" "$arg"
+      pass_arg_count=`expr $pass_arg_count + 1`
+      ;;
+  esac
+done
+
+# Run the browser
+debugging=0
+if [ $debugging = 1 ]
+then
+  echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
+fi
+
+
+exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
diff --git a/SOURCES/firefox.sh.in.rhel6 b/SOURCES/firefox.sh.in.rhel6
deleted file mode 100644
index 1eb2d25..0000000
--- a/SOURCES/firefox.sh.in.rhel6
+++ /dev/null
@@ -1,256 +0,0 @@
-#!/bin/bash
-#
-# The contents of this file are subject to the Netscape Public
-# License Version 1.1 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy of
-# the License at http://www.mozilla.org/NPL/
-#
-# Software distributed under the License is distributed on an "AS
-# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# rights and limitations under the License.
-#
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is Netscape
-# Communications Corporation.  Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All
-# Rights Reserved.
-#
-# Contributor(s): 
-#
-
-## 
-## Usage:
-##
-## $ firefox
-##
-## This script is meant to run a mozilla program from the mozilla
-## rpm installation.
-##
-## The script will setup all the environment voodoo needed to make
-## mozilla work.
-
-cmdname=`basename $0`
-
-##
-## Variables
-##
-MOZ_ARCH=$(uname -m)
-case $MOZ_ARCH in
-	x86_64 | s390x | sparc64)
-		MOZ_LIB_DIR="/usr/lib64"
-		SECONDARY_LIB_DIR="/usr/lib"
-		;;
-	* )
-		MOZ_LIB_DIR="/usr/lib"
-		SECONDARY_LIB_DIR="/usr/lib64"
-		;;
-esac
-
-MOZ_FIREFOX_FILE="firefox"
-
-if [ ! -r $MOZ_LIB_DIR/firefox/$MOZ_FIREFOX_FILE ]; then
-    if [ ! -r $SECONDARY_LIB_DIR/firefox/$MOZ_FIREFOX_FILE ]; then
-	echo "Error: $MOZ_LIB_DIR/firefox/$MOZ_FIREFOX_FILE not found"
-	if [ -d $SECONDARY_LIB_DIR ]; then
-	    echo "       $SECONDARY_LIB_DIR/firefox/$MOZ_FIREFOX_FILE not found"
-	fi
-	exit 1
-    fi
-    MOZ_LIB_DIR="$SECONDARY_LIB_DIR"
-fi
-MOZ_DIST_BIN="$MOZ_LIB_DIR/firefox"
-MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks"
-MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
-MOZ_PROGRAM="$MOZ_DIST_BIN/$MOZ_FIREFOX_FILE"
-MOZ_LAUNCHER="$MOZ_DIST_BIN/run-mozilla.sh"
- 
-##
-## Set MOZ_GRE_CONF
-##
-MOZ_GRE_CONF=/etc/gre.d/gre.conf
-if [ "$MOZ_LIB_DIR" == "/usr/lib64" ]; then
-  MOZ_GRE_CONF=/etc/gre.d/gre64.conf
-fi
-export MOZ_GRE_CONF
-
-##
-## Set MOZILLA_FIVE_HOME
-##
-MOZILLA_FIVE_HOME="$MOZ_DIST_BIN"
-
-export MOZILLA_FIVE_HOME
-
-##
-## Select the propper plugin dir
-## Wrapped plug-ins are located in /lib/mozilla/plugins-wrapped
-##
-if [ -x "/usr/bin/mozilla-plugin-config" ]
-then
-  MOZ_PLUGIN_DIR="plugins-wrapped"
-else
-  MOZ_PLUGIN_DIR="plugins"
-fi
-
-##
-## Make sure that we set the plugin path
-##
-if [ "$MOZ_PLUGIN_PATH" ]
-then
-  MOZ_PLUGIN_PATH=$MOZ_PLUGIN_PATH:$MOZ_LIB_DIR/mozilla/$MOZ_PLUGIN_DIR:$MOZ_DIST_BIN/$MOZ_PLUGIN_DIR
-else
-  MOZ_PLUGIN_PATH=$MOZ_LIB_DIR/mozilla/$MOZ_PLUGIN_DIR:$MOZ_DIST_BIN/$MOZ_PLUGIN_DIR
-fi
-export MOZ_PLUGIN_PATH
-
-##
-## Set MOZ_APP_LAUNCHER for gnome-session
-##
-export MOZ_APP_LAUNCHER="/usr/bin/firefox"
-
-##
-## If plugins are wrapped, check them
-##
-if [ -x "/usr/bin/mozilla-plugin-config" ]
-then
-  /usr/bin/mozilla-plugin-config
-fi
-
-##
-## Set FONTCONFIG_PATH for Xft/fontconfig
-##
-FONTCONFIG_PATH="/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
-export FONTCONFIG_PATH
-
-##
-## In order to better support certain scripts (such as Indic and some CJK 
-## scripts), Fedora builds its Firefox, with permission from the Mozilla 
-## Corporation, with the Pango system as its text renderer.  This change 
-## may negatively impact performance on some pages.  To disable the use of
-## Pango, set MOZ_DISABLE_PANGO=1 in your environment before launching
-## Firefox.
-##
-#
-# MOZ_DISABLE_PANGO=1
-# export MOZ_DISABLE_PANGO
-#
-
-##
-## Disable the GNOME crash dialog, Moz has it's own
-##
-GNOME_DISABLE_CRASH_DIALOG=1
-export GNOME_DISABLE_CRASH_DIALOG
-
-# OK, here's where all the real work gets done
-
-
-##
-## To disable the use of Firefox localization, set MOZ_DISABLE_LANGPACKS=1
-## in your environment before launching Firefox.
-##
-#
-# MOZ_DISABLE_LANGPACKS=1
-# export MOZ_DISABLE_LANGPACKS
-#
-
-##
-## Automatically installed langpacks are tracked by .fedora-langpack-install
-## config file.
-##
-FEDORA_LANGPACK_CONFIG="$MOZ_EXTENSIONS_PROFILE_DIR/.fedora-langpack-install"
-
-# MOZ_DISABLE_LANGPACKS disables language packs completely
-MOZILLA_DOWN=0
-if ! [ $MOZ_DISABLE_LANGPACKS ] || [ $MOZ_DISABLE_LANGPACKS -eq 0 ]; then
-    if [ -x $MOZ_DIST_BIN/$MOZ_FIREFOX_FILE ]; then
-        # Is firefox running?
-        /usr/bin/pidof firefox > /dev/null 2>&1
-        MOZILLA_DOWN=$?
-    fi
-fi
-
-# Modify language pack configuration only when firefox is not running 
-# and language packs are not disabled
-if [ $MOZILLA_DOWN -ne 0 ]; then
-
-    # Clear already installed langpacks
-    mkdir -p $MOZ_EXTENSIONS_PROFILE_DIR
-    if [ -f $FEDORA_LANGPACK_CONFIG ]; then
-        rm `cat $FEDORA_LANGPACK_CONFIG` > /dev/null 2>&1
-        rm $FEDORA_LANGPACK_CONFIG > /dev/null 2>&1
-        # remove all empty langpacks dirs while they block installation of langpacks
-        rmdir $MOZ_EXTENSIONS_PROFILE_DIR/langpack* > /dev/null 2>&1
-    fi
-
-    # Get locale from system
-    CURRENT_LOCALE=$LC_ALL
-    CURRENT_LOCALE=${CURRENT_LOCALE:-$LC_MESSAGES}
-    CURRENT_LOCALE=${CURRENT_LOCALE:-$LANG}
-
-    # Try with a local variant first, then without a local variant
-    SHORTMOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*||g"`
-    MOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*|-\1|g"`
-
-    function create_langpack_link() {
-        local language=$*
-        local langpack=langpack-${language}@firefox.mozilla.org.xpi
-        if [ -f $MOZ_LANGPACKS_DIR/$langpack ]; then
-            rm -rf $MOZ_EXTENSIONS_PROFILE_DIR/$langpack
-            # If the target file is a symlink (the fallback langpack), 
-            # install the original file instead of the fallback one
-            if [ -h $MOZ_LANGPACKS_DIR/$langpack ]; then
-                langpack=`readlink $MOZ_LANGPACKS_DIR/$langpack`
-            fi
-            ln -s $MOZ_LANGPACKS_DIR/$langpack \
-                  $MOZ_EXTENSIONS_PROFILE_DIR/$langpack
-            echo $MOZ_EXTENSIONS_PROFILE_DIR/$langpack > $FEDORA_LANGPACK_CONFIG
-            return 0
-        fi
-        return 1
-    }
-
-    create_langpack_link $MOZLOCALE || create_langpack_link $SHORTMOZLOCALE || true
-fi
-
-# BEAST fix (rhbz#1005611)
-NSS_SSL_CBC_RANDOM_IV=${NSS_SSL_CBC_RANDOM_IV-1}
-export NSS_SSL_CBC_RANDOM_IV
-
-# Prepare command line arguments
-script_args=""
-pass_arg_count=0
-while [ $# -gt $pass_arg_count ]
-do
-  case "$1" in
-    -g | --debug)
-      script_args="$script_args -g"
-      debugging=1
-      shift
-      ;;
-    -d | --debugger)
-      if [ $# -gt 1 ]; then
-        script_args="$script_args -d $2"
-        shift 2
-      else
-        shift
-      fi
-      ;;
-    *)
-      # Move the unrecognized argument to the end of the list.
-      arg="$1"
-      shift
-      set -- "$@" "$arg"
-      pass_arg_count=`expr $pass_arg_count + 1`
-      ;;
-  esac
-done
-
-# Run the browser
-debugging=0
-if [ $debugging = 1 ]
-then
-  echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
-fi
-
-exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
diff --git a/SOURCES/firefox.sh.in.rhel7 b/SOURCES/firefox.sh.in.rhel7
deleted file mode 100644
index 385a05c..0000000
--- a/SOURCES/firefox.sh.in.rhel7
+++ /dev/null
@@ -1,261 +0,0 @@
-#!/bin/bash
-#
-# The contents of this file are subject to the Netscape Public
-# License Version 1.1 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy of
-# the License at http://www.mozilla.org/NPL/
-#
-# Software distributed under the License is distributed on an "AS
-# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# rights and limitations under the License.
-#
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is Netscape
-# Communications Corporation.  Portions created by Netscape are
-# Copyright (C) 1998 Netscape Communications Corporation. All
-# Rights Reserved.
-#
-# Contributor(s): 
-#
-
-## 
-## Usage:
-##
-## $ firefox
-##
-## This script is meant to run a mozilla program from the mozilla
-## rpm installation.
-##
-## The script will setup all the environment voodoo needed to make
-## mozilla work.
-
-cmdname=`basename $0`
-
-##
-## Variables
-##
-MOZ_ARCH=$(uname -m)
-case $MOZ_ARCH in
-	x86_64 | s390x | sparc64)
-		MOZ_LIB_DIR="/usr/lib64"
-		SECONDARY_LIB_DIR="/usr/lib"
-		;;
-	* )
-		MOZ_LIB_DIR="/usr/lib"
-		SECONDARY_LIB_DIR="/usr/lib64"
-		;;
-esac
-
-MOZ_FIREFOX_FILE="firefox"
-
-if [ ! -r $MOZ_LIB_DIR/firefox/$MOZ_FIREFOX_FILE ]; then
-    if [ ! -r $SECONDARY_LIB_DIR/firefox/$MOZ_FIREFOX_FILE ]; then
-	echo "Error: $MOZ_LIB_DIR/firefox/$MOZ_FIREFOX_FILE not found"
-	if [ -d $SECONDARY_LIB_DIR ]; then
-	    echo "       $SECONDARY_LIB_DIR/firefox/$MOZ_FIREFOX_FILE not found"
-	fi
-	exit 1
-    fi
-    MOZ_LIB_DIR="$SECONDARY_LIB_DIR"
-fi
-MOZ_DIST_BIN="$MOZ_LIB_DIR/firefox"
-MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks"
-MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
-MOZ_PROGRAM="$MOZ_DIST_BIN/$MOZ_FIREFOX_FILE"
-MOZ_LAUNCHER="$MOZ_DIST_BIN/run-mozilla.sh"
- 
-##
-## Set MOZ_GRE_CONF
-##
-MOZ_GRE_CONF=/etc/gre.d/gre.conf
-if [ "$MOZ_LIB_DIR" == "/usr/lib64" ]; then
-  MOZ_GRE_CONF=/etc/gre.d/gre64.conf
-fi
-export MOZ_GRE_CONF
-
-##
-## Set MOZILLA_FIVE_HOME
-##
-MOZILLA_FIVE_HOME="$MOZ_DIST_BIN"
-
-export MOZILLA_FIVE_HOME
-
-##
-## Select the propper plugin dir
-## Wrapped plug-ins are located in /lib/mozilla/plugins-wrapped
-##
-if [ -x "/usr/bin/mozilla-plugin-config" ]
-then
-  MOZ_PLUGIN_DIR="plugins-wrapped"
-else
-  MOZ_PLUGIN_DIR="plugins"
-fi
-
-##
-## Make sure that we set the plugin path
-##
-if [ "$MOZ_PLUGIN_PATH" ]
-then
-  MOZ_PLUGIN_PATH=$MOZ_PLUGIN_PATH:$MOZ_LIB_DIR/mozilla/$MOZ_PLUGIN_DIR:$MOZ_DIST_BIN/$MOZ_PLUGIN_DIR
-else
-  MOZ_PLUGIN_PATH=$MOZ_LIB_DIR/mozilla/$MOZ_PLUGIN_DIR:$MOZ_DIST_BIN/$MOZ_PLUGIN_DIR
-fi
-export MOZ_PLUGIN_PATH
-
-##
-## Set MOZ_APP_LAUNCHER for gnome-session
-##
-export MOZ_APP_LAUNCHER="/usr/bin/firefox"
-
-##
-## If plugins are wrapped, check them
-##
-if [ -x "/usr/bin/mozilla-plugin-config" ]
-then
-  /usr/bin/mozilla-plugin-config
-fi
-
-##
-## Set FONTCONFIG_PATH for Xft/fontconfig
-##
-FONTCONFIG_PATH="/etc/fonts:${MOZILLA_FIVE_HOME}/res/Xft"
-export FONTCONFIG_PATH
-
-##
-## In order to better support certain scripts (such as Indic and some CJK 
-## scripts), Fedora builds its Firefox, with permission from the Mozilla 
-## Corporation, with the Pango system as its text renderer.  This change 
-## may negatively impact performance on some pages.  To disable the use of
-## Pango, set MOZ_DISABLE_PANGO=1 in your environment before launching
-## Firefox.
-##
-#
-# MOZ_DISABLE_PANGO=1
-# export MOZ_DISABLE_PANGO
-#
-
-##
-## Disable the GNOME crash dialog, Moz has it's own
-##
-GNOME_DISABLE_CRASH_DIALOG=1
-export GNOME_DISABLE_CRASH_DIALOG
-
-##
-## Disable the SLICE allocator (rhbz#1014858)
-##
-export G_SLICE=always-malloc
-
-# OK, here's where all the real work gets done
-
-
-##
-## To disable the use of Firefox localization, set MOZ_DISABLE_LANGPACKS=1
-## in your environment before launching Firefox.
-##
-#
-# MOZ_DISABLE_LANGPACKS=1
-# export MOZ_DISABLE_LANGPACKS
-#
-
-##
-## Automatically installed langpacks are tracked by .fedora-langpack-install
-## config file.
-##
-FEDORA_LANGPACK_CONFIG="$MOZ_EXTENSIONS_PROFILE_DIR/.fedora-langpack-install"
-
-# MOZ_DISABLE_LANGPACKS disables language packs completely
-MOZILLA_DOWN=0
-if ! [ $MOZ_DISABLE_LANGPACKS ] || [ $MOZ_DISABLE_LANGPACKS -eq 0 ]; then
-    if [ -x $MOZ_DIST_BIN/$MOZ_FIREFOX_FILE ]; then
-        # Is firefox running?
-        /usr/bin/pidof firefox > /dev/null 2>&1
-        MOZILLA_DOWN=$?
-    fi
-fi
-
-# Modify language pack configuration only when firefox is not running 
-# and language packs are not disabled
-if [ $MOZILLA_DOWN -ne 0 ]; then
-
-    # Clear already installed langpacks
-    mkdir -p $MOZ_EXTENSIONS_PROFILE_DIR
-    if [ -f $FEDORA_LANGPACK_CONFIG ]; then
-        rm `cat $FEDORA_LANGPACK_CONFIG` > /dev/null 2>&1
-        rm $FEDORA_LANGPACK_CONFIG > /dev/null 2>&1
-        # remove all empty langpacks dirs while they block installation of langpacks
-        rmdir $MOZ_EXTENSIONS_PROFILE_DIR/langpack* > /dev/null 2>&1
-    fi
-
-    # Get locale from system
-    CURRENT_LOCALE=$LC_ALL
-    CURRENT_LOCALE=${CURRENT_LOCALE:-$LC_MESSAGES}
-    CURRENT_LOCALE=${CURRENT_LOCALE:-$LANG}
-
-    # Try with a local variant first, then without a local variant
-    SHORTMOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*||g"`
-    MOZLOCALE=`echo $CURRENT_LOCALE | sed "s|_\([^.]*\).*|-\1|g"`
-
-    function create_langpack_link() {
-        local language=$*
-        local langpack=langpack-${language}@firefox.mozilla.org.xpi
-        if [ -f $MOZ_LANGPACKS_DIR/$langpack ]; then
-            rm -rf $MOZ_EXTENSIONS_PROFILE_DIR/$langpack
-            # If the target file is a symlink (the fallback langpack), 
-            # install the original file instead of the fallback one
-            if [ -h $MOZ_LANGPACKS_DIR/$langpack ]; then
-                langpack=`readlink $MOZ_LANGPACKS_DIR/$langpack`
-            fi
-            ln -s $MOZ_LANGPACKS_DIR/$langpack \
-                  $MOZ_EXTENSIONS_PROFILE_DIR/$langpack
-            echo $MOZ_EXTENSIONS_PROFILE_DIR/$langpack > $FEDORA_LANGPACK_CONFIG
-            return 0
-        fi
-        return 1
-    }
-
-    create_langpack_link $MOZLOCALE || create_langpack_link $SHORTMOZLOCALE || true
-fi
-
-# BEAST fix (rhbz#1005611)
-NSS_SSL_CBC_RANDOM_IV=${NSS_SSL_CBC_RANDOM_IV-1}
-export NSS_SSL_CBC_RANDOM_IV
-
-# Prepare command line arguments
-script_args=""
-pass_arg_count=0
-while [ $# -gt $pass_arg_count ]
-do
-  case "$1" in
-    -g | --debug)
-      script_args="$script_args -g"
-      debugging=1
-      shift
-      ;;
-    -d | --debugger)
-      if [ $# -gt 1 ]; then
-        script_args="$script_args -d $2"
-        shift 2
-      else
-        shift
-      fi
-      ;;
-    *)
-      # Move the unrecognized argument to the end of the list.
-      arg="$1"
-      shift
-      set -- "$@" "$arg"
-      pass_arg_count=`expr $pass_arg_count + 1`
-      ;;
-  esac
-done
-
-# Run the browser
-debugging=0
-if [ $debugging = 1 ]
-then
-  echo $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
-fi
-
-exec $MOZ_LAUNCHER $script_args $MOZ_PROGRAM "$@"
diff --git a/SOURCES/google-api-key b/SOURCES/google-api-key
new file mode 100644
index 0000000..b95d189
--- /dev/null
+++ b/SOURCES/google-api-key
@@ -0,0 +1 @@
+AIzaSyBPGXa4AYD4FC3HJK7LnIKxm4fDusVuuco
diff --git a/SOURCES/gtk3-private-3.22.26-1-files.inc b/SOURCES/gtk3-private-3.22.26-1-files.inc
new file mode 100644
index 0000000..cf89c66
--- /dev/null
+++ b/SOURCES/gtk3-private-3.22.26-1-files.inc
@@ -0,0 +1,53 @@
+%dir %{gtk3_install_path}/bin
+%{gtk3_install_path}/bin/gdk-pixbuf-query-loaders-%{__isa_bits}
+%{gtk3_install_path}/bin/gdk-pixbuf-thumbnailer
+%{gtk3_install_path}/bin/gio-querymodules-%{__isa_bits}
+%{gtk3_install_path}/bin/glib-compile-schemas
+%{gtk3_install_path}/bin/gtk-query-immodules-3.0-%{__isa_bits}
+%{gtk3_install_path}/bin/gtk-update-icon-cache
+%{gtk3_install_path}/bin/fc-cache
+
+%{gtk3_install_path}/etc
+
+%dir %{gtk3_install_path}/%{_lib}
+%{gtk3_install_path}/%{_lib}/libatk-1.0.so.*
+%{gtk3_install_path}/%{_lib}/libatk-bridge-2.0.so.*
+%{gtk3_install_path}/%{_lib}/libatspi.so.*
+%{gtk3_install_path}/%{_lib}/libcairo.so.*
+%{gtk3_install_path}/%{_lib}/libcairo-gobject.so.*
+%{gtk3_install_path}/%{_lib}/libfontconfig.so.*
+%{gtk3_install_path}/%{_lib}/libfreetype.so.*
+%{gtk3_install_path}/%{_lib}/libgdk-3.so.*
+%{gtk3_install_path}/%{_lib}/libgdk_pixbuf-2.0.so.*
+%{gtk3_install_path}/%{_lib}/libgio-2.0.so.*
+%{gtk3_install_path}/%{_lib}/libglib-2.0.so.*
+%{gtk3_install_path}/%{_lib}/libgmodule-2.0.so.*
+%{gtk3_install_path}/%{_lib}/libgobject-2.0.so.*
+%{gtk3_install_path}/%{_lib}/libgthread-2.0.so.*
+%{gtk3_install_path}/%{_lib}/libgtk-3.so.*
+%{gtk3_install_path}/%{_lib}/libharfbuzz.so.*
+%{gtk3_install_path}/%{_lib}/libpango-1.0.so.*
+%{gtk3_install_path}/%{_lib}/libpangocairo-1.0.so.*
+%{gtk3_install_path}/%{_lib}/libpangoft2-1.0.so.*
+%{gtk3_install_path}/%{_lib}/libpcre.so.*
+%{gtk3_install_path}/%{_lib}/librsvg-2.so.*
+%dir %{gtk3_install_path}/%{_lib}/cairo
+%{gtk3_install_path}/%{_lib}/cairo/cairo-fdr.so.*
+%{gtk3_install_path}/%{_lib}/cairo/cairo-sphinx.so.*
+%{gtk3_install_path}/%{_lib}/cairo/libcairo-trace.so.*
+%{gtk3_install_path}/%{_lib}/gdk-pixbuf-2.0
+%ghost %attr(644, root, root) %{gtk3_install_path}/%{_lib}/gdk-pixbuf-2.0/2.10.0/loaders.cache
+%{gtk3_install_path}/%{_lib}/gio
+%ghost %attr(644, root, root) %{gtk3_install_path}/%{_lib}/gio/modules/giomodule.cache
+%{gtk3_install_path}/%{_lib}/gtk-3.0
+
+%{gtk3_install_path}/libexec
+
+%{gtk3_install_path}/share
+%ghost %attr(644, root, root) %{gtk3_install_path}/share/icons/Adwaita/icon-theme.cache
+%ghost %attr(644, root, root) %{gtk3_install_path}/share/icons/hicolor/icon-theme.cache
+%ghost %attr(644, root, root) %{gtk3_install_path}/share/glib-2.0/schemas/gschemas.compiled
+
+%{gtk3_install_path}/var
+%dir %{gtk3_install_path}/var/cache/fontconfig
+
diff --git a/SOURCES/gtk3-private-3.22.26-1-post.inc b/SOURCES/gtk3-private-3.22.26-1-post.inc
new file mode 100644
index 0000000..04acf06
--- /dev/null
+++ b/SOURCES/gtk3-private-3.22.26-1-post.inc
@@ -0,0 +1,23 @@
+# adwaita-icon-theme
+touch --no-create %{gtk3_install_path}/share/icons/Adwaita &>/dev/null || :
+touch --no-create %{gtk3_install_path}/share/icons/hicolor &>/dev/null || :
+%{gtk3_install_path}/bin/gdk-pixbuf-query-loaders-%{__isa_bits} --update-cache || :
+
+# glib2
+%{gtk3_install_path}/bin/gio-querymodules-%{__isa_bits} %{gtk3_install_path}/%{_lib}/gio/modules
+
+# gtk3
+%{gtk3_install_path}/bin/gtk-query-immodules-3.0-%{__isa_bits} --update-cache
+%{gtk3_install_path}/bin/glib-compile-schemas %{gtk3_install_path}/share/glib-2.0/schemas &> /dev/null || :
+
+# fontconfig
+umask 0022
+
+# Force regeneration of all fontconfig cache files
+# The check for existance is needed on dual-arch installs (the second
+#  copy of fontconfig might install the binary instead of the first)
+# The HOME setting is to avoid problems if HOME hasn't been reset
+# FIXME hardcoded version !
+if [ -x %{gtk3_install_path}/bin/fc-cache ] && %{gtk3_install_path}/bin/fc-cache --version 2>&1 | grep -q 2.10.95 ; then
+  HOME=/root %{gtk3_install_path}/bin/fc-cache -f
+fi
diff --git a/SOURCES/gtk3-private-3.22.26-1-posttrans.inc b/SOURCES/gtk3-private-3.22.26-1-posttrans.inc
new file mode 100644
index 0000000..8c5f2d7
--- /dev/null
+++ b/SOURCES/gtk3-private-3.22.26-1-posttrans.inc
@@ -0,0 +1,3 @@
+%{gtk3_install_path}/gtk-update-icon-cache %{gtk3_install_path}/share/icons/hicolor &>/dev/null || :
+# adwaita
+%{gtk3_install_path}/gtk-update-icon-cache %{gtk3_install_path}/share/icons/Adwaita &>/dev/null || :
diff --git a/SOURCES/gtk3-private-3.22.26-1-postun.inc b/SOURCES/gtk3-private-3.22.26-1-postun.inc
new file mode 100644
index 0000000..3b5df73
--- /dev/null
+++ b/SOURCES/gtk3-private-3.22.26-1-postun.inc
@@ -0,0 +1,27 @@
+# adwaita
+if [ $1 -eq 0 ] ; then
+    touch --no-create %{gtk3_install_path}/share/icons/Adwaita &>/dev/null
+    touch --no-create %{gtk3_install_path}/share/icons/hicolor &>/dev/null
+    %{gtk3_install_path}/bin/gtk-update-icon-cache %{gtk3_install_path}/share/icons/Adwaita &>/dev/null || :
+    %{gtk3_install_path}/bin/gtk-update-icon-cache %{gtk3_install_path}/share/icons/hicolor &>/dev/null || :
+fi
+
+# gdk-pixbuf2
+if [ $1 -gt 0 ]; then
+  %{gtk3_install_path}/bin/gdk-pixbuf-query-loaders-%{__isa_bits} --update-cache || :
+fi
+
+# glib2
+[ ! -x %{gtk3_install_path}/bin/gio-querymodules-%{__isa_bits} ] || \
+%{gtk3_install_path}/bin/gio-querymodules-%{__isa_bits} %{gtk3_install_path}/%{_lib}/gio/modules
+
+# gtk3
+if [ $1 -gt 0 ]; then
+  %{gtk3_install_path}/bin/gtk-query-immodules-3.0-%{__isa_bits} --update-cache
+fi
+
+if [ $1 -eq 0 ] ; then
+    rm -rf %{gtk3_install_path}/var/cache/fontconfig/* &>/dev/null || :
+fi
+
+%{gtk3_install_path}/bin/glib-compile-schemas %{gtk3_install_path}/share/glib-2.0/schemas &> /dev/null || :
diff --git a/SOURCES/gtk3-private-3.22.26-1-requires-provides-filter.inc b/SOURCES/gtk3-private-3.22.26-1-requires-provides-filter.inc
new file mode 100644
index 0000000..f5fa495
--- /dev/null
+++ b/SOURCES/gtk3-private-3.22.26-1-requires-provides-filter.inc
@@ -0,0 +1,26 @@
+%filter_provides_in %{gtk3_install_path}/%{_lib}
+%filter_requires_in %{gtk3_install_path}/%{_lib}
+
+%filter_from_requires /libgdk-3.*/d
+%filter_from_requires /libatk-1.0.so.*/d
+%filter_from_requires /libatk-bridge-2.0.so.*/d
+%filter_from_requires /libatspi.so.*/d
+%filter_from_requires /libcairo.so.*/d
+%filter_from_requires /libcairo-gobject.so.*/d
+%filter_from_requires /libfontconfig.so.*/d
+%filter_from_requires /libfreetype.so.*/d
+%filter_from_requires /libgdk-3.so.*/d
+%filter_from_requires /libgdk_pixbuf-2.0.so.*/d
+%filter_from_requires /libgio-2.0.so.*/d
+%filter_from_requires /libglib-2.0.so.*/d
+%filter_from_requires /libgmodule-2.0.so.*/d
+%filter_from_requires /libgobject-2.0.so.*/d
+%filter_from_requires /libgthread-2.0.so.*/d
+%filter_from_requires /libgtk-3.so.*/d
+%filter_from_requires /libharfbuzz.so.*/d
+%filter_from_requires /libpango-1.0.so.*/d
+%filter_from_requires /libpangocairo-1.0.so.*/d
+%filter_from_requires /libpangoft2-1.0.so.*/d
+%filter_from_requires /libpcre.so.*/d
+
+# Don't forget to call %%filter_setup from the consumer!
diff --git a/SOURCES/gtk3-private-3.22.26-1-setup-flags-env.inc b/SOURCES/gtk3-private-3.22.26-1-setup-flags-env.inc
new file mode 100644
index 0000000..eb54164
--- /dev/null
+++ b/SOURCES/gtk3-private-3.22.26-1-setup-flags-env.inc
@@ -0,0 +1,34 @@
+%if "%{name}" == "gtk3-private"
+    function prepend_buildroot_include_path_to_compiler_flags() {
+        export CFLAGS="-I%{_buildrootdir}%{gtk3_install_path}/$@ $CFLAGS" \
+        export CXXFLAGS="-I%{_buildrootdir}%{gtk3_install_path}/$@ $CXXFLAGS"
+    }
+    
+    prepend_buildroot_include_path_to_compiler_flags include
+    prepend_buildroot_include_path_to_compiler_flags include/glib-2.0
+    prepend_buildroot_include_path_to_compiler_flags include/glib-2.0
+    prepend_buildroot_include_path_to_compiler_flags include/gio-unix-2.0
+    prepend_buildroot_include_path_to_compiler_flags %{_lib}/glib-2.0/include
+    prepend_buildroot_include_path_to_compiler_flags include/freetype2
+    prepend_buildroot_include_path_to_compiler_flags include/fontconfig
+    prepend_buildroot_include_path_to_compiler_flags include/harfbuzz
+    prepend_buildroot_include_path_to_compiler_flags include/gdk-pixbuf-2.0
+    prepend_buildroot_include_path_to_compiler_flags include/atk-1.0
+    prepend_buildroot_include_path_to_compiler_flags include/at-spi-2.0
+    prepend_buildroot_include_path_to_compiler_flags include/at-spi2-atk/2.0
+    prepend_buildroot_include_path_to_compiler_flags include/cairo
+    prepend_buildroot_include_path_to_compiler_flags include/pango-1.0
+    prepend_buildroot_include_path_to_compiler_flags include/librsvg-2.0
+    prepend_buildroot_include_path_to_compiler_flags include/cairo
+    prepend_buildroot_include_path_to_compiler_flags include/gtk-3.0
+    prepend_buildroot_include_path_to_compiler_flags include/gtk-3.0/unix-print
+    prepend_buildroot_include_path_to_compiler_flags include/librsvg-2.0
+%else
+    sed -i 's@%{gtk3_install_path}@%{_buildrootdir}%{gtk3_install_path}@g' %{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig/*.pc
+%endif
+
+export LDFLAGS="-L%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS"
+export LDFLAGS="-Wl,-rpath,%{gtk3_install_path}/%{_lib} $LDFLAGS"
+export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS"
+
+export PKG_CONFIG_PATH=%{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig
diff --git a/SOURCES/mozilla-1152515.patch b/SOURCES/mozilla-1152515.patch
deleted file mode 100644
index 4be1ca7..0000000
--- a/SOURCES/mozilla-1152515.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-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-1170092-etc-conf.patch b/SOURCES/mozilla-1170092-etc-conf.patch
deleted file mode 100644
index 2b10f06..0000000
--- a/SOURCES/mozilla-1170092-etc-conf.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-diff -up firefox-45.0.1/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-45.0.1/extensions/pref/autoconfig/src/nsReadConfig.cpp
---- firefox-45.0.1/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092	2016-03-15 23:37:54.000000000 +0100
-+++ firefox-45.0.1/extensions/pref/autoconfig/src/nsReadConfig.cpp	2016-03-21 16:10:42.540417899 +0100
-@@ -245,8 +245,20 @@ nsresult nsReadConfig::openAndEvaluateJS
-             return rv;
- 
-         rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile);
--        if (NS_FAILED(rv)) 
--            return rv;
-+        if (NS_FAILED(rv)) {
-+          // Look for cfg file in /etc/<application>/pref
-+          rv = NS_GetSpecialDirectory(NS_APP_PREFS_SYSTEM_CONFIG_DIR,
-+                                      getter_AddRefs(jsFile));
-+          NS_ENSURE_SUCCESS(rv, rv);
-+
-+          rv = jsFile->AppendNative(NS_LITERAL_CSTRING("pref"));
-+          NS_ENSURE_SUCCESS(rv, rv);
-+          rv = jsFile->AppendNative(nsDependentCString(aFileName));
-+          NS_ENSURE_SUCCESS(rv, rv);
-+
-+          rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile);
-+          NS_ENSURE_SUCCESS(rv, rv);
-+        }
- 
-     } else {
-         nsAutoCString location("resource://gre/defaults/autoconfig/");
-diff -up firefox-45.0.1/modules/libpref/Preferences.cpp.1170092 firefox-45.0.1/modules/libpref/Preferences.cpp
---- firefox-45.0.1/modules/libpref/Preferences.cpp.1170092	2016-03-21 16:10:42.540417899 +0100
-+++ firefox-45.0.1/modules/libpref/Preferences.cpp	2016-03-21 16:13:29.145888710 +0100
-@@ -1214,6 +1214,8 @@ static nsresult pref_InitInitialObjects(
-   // - jar:$gre/omni.jar!/defaults/preferences/*.js
-   // Thus, in omni.jar case, we always load app-specific default preferences
-   // from omni.jar, whether or not $app == $gre.
-+  // At very end load configuration from system config location:
-+  // - /etc/firefox/pref/*.js
- 
-   nsZipFind *findPtr;
-   nsAutoPtr<nsZipFind> find;
-diff -up firefox-45.0.1/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-45.0.1/toolkit/xre/nsXREDirProvider.cpp
---- firefox-45.0.1/toolkit/xre/nsXREDirProvider.cpp.1170092	2016-03-15 23:37:46.000000000 +0100
-+++ firefox-45.0.1/toolkit/xre/nsXREDirProvider.cpp	2016-03-21 16:12:06.498655156 +0100
-@@ -51,6 +51,7 @@
- #endif
- #ifdef XP_UNIX
- #include <ctype.h>
-+#include "nsIXULAppInfo.h"
- #endif
- #ifdef XP_IOS
- #include "UIKitDirProvider.h"
-@@ -457,6 +458,20 @@ nsXREDirProvider::GetFile(const char* aP
-       }
-     }
-   }
-+#if defined(XP_UNIX)
-+  if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) {
-+    nsCString sysConfigDir = NS_LITERAL_CSTRING("/etc/");
-+    nsCOMPtr<nsIXULAppInfo> appInfo = do_GetService("@mozilla.org/xre/app-info;1");
-+    if (!appInfo)
-+      return NS_ERROR_NOT_AVAILABLE;
-+    nsCString appName;
-+    appInfo->GetName(appName);
-+    ToLowerCase(appName);
-+    sysConfigDir.Append(appName);
-+    return NS_NewNativeLocalFile(sysConfigDir, false, aFile);
-+  }
-+#endif
-+
-   if (NS_FAILED(rv) || !file)
-     return NS_ERROR_FAILURE;
- 
-@@ -753,6 +768,14 @@ nsXREDirProvider::GetFilesInternal(const
-     LoadDirIntoArray(mXULAppDir, kAppendPrefDir, directories);
-     LoadDirsIntoArray(mAppBundleDirectories,
-                       kAppendPrefDir, directories);
-+    // Add /etc/<application>/pref/ directory if it exists
-+    nsCOMPtr<nsIFile> systemPrefDir;
-+    rv = NS_GetSpecialDirectory(NS_APP_PREFS_SYSTEM_CONFIG_DIR, getter_AddRefs(systemPrefDir));
-+    if (NS_SUCCEEDED(rv)) {
-+      rv = systemPrefDir->AppendNative(NS_LITERAL_CSTRING("pref"));
-+      if (NS_SUCCEEDED(rv))
-+        directories.AppendObject(systemPrefDir);
-+    }
- 
-     rv = NS_NewArrayEnumerator(aResult, directories);
-   }
-diff -up firefox-45.0.1/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-45.0.1/xpcom/io/nsAppDirectoryServiceDefs.h
---- firefox-45.0.1/xpcom/io/nsAppDirectoryServiceDefs.h.1170092	2016-03-15 23:37:47.000000000 +0100
-+++ firefox-45.0.1/xpcom/io/nsAppDirectoryServiceDefs.h	2016-03-21 16:10:42.541417902 +0100
-@@ -67,6 +67,7 @@
- #define NS_APP_PREFS_DEFAULTS_DIR_LIST          "PrefDL"
- #define NS_EXT_PREFS_DEFAULTS_DIR_LIST          "ExtPrefDL"
- #define NS_APP_PREFS_OVERRIDE_DIR               "PrefDOverride" // Directory for per-profile defaults
-+#define NS_APP_PREFS_SYSTEM_CONFIG_DIR          "PrefSysConf"   // Directory with system-wide configuration
- 
- #define NS_APP_USER_PROFILE_50_DIR              "ProfD"
- #define NS_APP_USER_PROFILE_LOCAL_50_DIR        "ProfLD"
diff --git a/SOURCES/mozilla-1170092.patch b/SOURCES/mozilla-1170092.patch
new file mode 100644
index 0000000..9e8906f
--- /dev/null
+++ b/SOURCES/mozilla-1170092.patch
@@ -0,0 +1,96 @@
+diff -up firefox-58.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-58.0/extensions/pref/autoconfig/src/nsReadConfig.cpp
+--- firefox-58.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092	2018-01-11 21:17:03.000000000 +0100
++++ firefox-58.0/extensions/pref/autoconfig/src/nsReadConfig.cpp	2018-01-23 13:59:45.446495820 +0100
+@@ -239,9 +239,20 @@ nsresult nsReadConfig::openAndEvaluateJS
+             return rv;
+ 
+         rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile);
+-        if (NS_FAILED(rv))
+-            return rv;
++        if (NS_FAILED(rv)) {
++          // Look for cfg file in /etc/<application>/pref
++          rv = NS_GetSpecialDirectory(NS_APP_PREFS_SYSTEM_CONFIG_DIR,
++                                      getter_AddRefs(jsFile));
++          NS_ENSURE_SUCCESS(rv, rv);
++
++          rv = jsFile->AppendNative(NS_LITERAL_CSTRING("pref"));
++          NS_ENSURE_SUCCESS(rv, rv);
++          rv = jsFile->AppendNative(nsDependentCString(aFileName));
++          NS_ENSURE_SUCCESS(rv, rv);
+ 
++          rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile);
++          NS_ENSURE_SUCCESS(rv, rv);
++        }
+     } else {
+         nsAutoCString location("resource://gre/defaults/autoconfig/");
+         location += aFileName;
+diff -up firefox-58.0/modules/libpref/Preferences.cpp.1170092 firefox-58.0/modules/libpref/Preferences.cpp
+--- firefox-58.0/modules/libpref/Preferences.cpp.1170092	2018-01-23 13:59:45.447495817 +0100
++++ firefox-58.0/modules/libpref/Preferences.cpp	2018-01-23 14:02:51.456987774 +0100
+@@ -4402,6 +4402,8 @@ pref_InitInitialObjects()
+   //
+   // Thus, in the omni.jar case, we always load app-specific default
+   // preferences from omni.jar, whether or not `$app == $gre`.
++  // At very end load configuration from system config location:
++  // - /etc/firefox/pref/*.js
+ 
+   nsresult rv;
+   nsZipFind* findPtr;
+diff -up firefox-58.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-58.0/toolkit/xre/nsXREDirProvider.cpp
+--- firefox-58.0/toolkit/xre/nsXREDirProvider.cpp.1170092	2018-01-11 21:17:06.000000000 +0100
++++ firefox-58.0/toolkit/xre/nsXREDirProvider.cpp	2018-01-23 13:59:45.447495817 +0100
+@@ -59,6 +59,7 @@
+ #endif
+ #ifdef XP_UNIX
+ #include <ctype.h>
++#include "nsIXULAppInfo.h"
+ #endif
+ #ifdef XP_IOS
+ #include "UIKitDirProvider.h"
+@@ -554,6 +555,20 @@ nsXREDirProvider::GetFile(const char* aP
+       }
+     }
+   }
++#if defined(XP_UNIX)
++  if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) {
++    nsCString sysConfigDir = NS_LITERAL_CSTRING("/etc/");
++    nsCOMPtr<nsIXULAppInfo> appInfo = do_GetService("@mozilla.org/xre/app-info;1");
++    if (!appInfo)
++      return NS_ERROR_NOT_AVAILABLE;
++    nsCString appName;
++    appInfo->GetName(appName);
++    ToLowerCase(appName);
++    sysConfigDir.Append(appName);
++    return NS_NewNativeLocalFile(sysConfigDir, false, aFile);
++  }
++#endif
++
+   if (NS_FAILED(rv) || !file)
+     return NS_ERROR_FAILURE;
+ 
+@@ -887,6 +902,14 @@ nsXREDirProvider::GetFilesInternal(const
+     LoadDirIntoArray(mXULAppDir, kAppendPrefDir, directories);
+     LoadDirsIntoArray(mAppBundleDirectories,
+                       kAppendPrefDir, directories);
++    // Add /etc/<application>/pref/ directory if it exists
++    nsCOMPtr<nsIFile> systemPrefDir;
++    rv = NS_GetSpecialDirectory(NS_APP_PREFS_SYSTEM_CONFIG_DIR, getter_AddRefs(systemPrefDir));
++    if (NS_SUCCEEDED(rv)) {
++      rv = systemPrefDir->AppendNative(NS_LITERAL_CSTRING("pref"));
++      if (NS_SUCCEEDED(rv))
++        directories.AppendObject(systemPrefDir);
++    }
+ 
+     rv = NS_NewArrayEnumerator(aResult, directories);
+   }
+diff -up firefox-58.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-58.0/xpcom/io/nsAppDirectoryServiceDefs.h
+--- firefox-58.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092	2018-01-23 13:59:45.447495817 +0100
++++ firefox-58.0/xpcom/io/nsAppDirectoryServiceDefs.h	2018-01-23 14:02:02.871120476 +0100
+@@ -59,6 +59,7 @@
+ #define NS_APP_PREFS_50_FILE                    "PrefF"
+ #define NS_APP_PREFS_DEFAULTS_DIR_LIST          "PrefDL"
+ #define NS_APP_PREFS_OVERRIDE_DIR               "PrefDOverride" // Directory for per-profile defaults
++#define NS_APP_PREFS_SYSTEM_CONFIG_DIR          "PrefSysConf"   // Directory with system-wide configuration
+ 
+ #define NS_APP_USER_PROFILE_50_DIR              "ProfD"
+ #define NS_APP_USER_PROFILE_LOCAL_50_DIR        "ProfLD"
diff --git a/SOURCES/mozilla-1196777.patch b/SOURCES/mozilla-1196777.patch
new file mode 100644
index 0000000..ba5e4b7
--- /dev/null
+++ b/SOURCES/mozilla-1196777.patch
@@ -0,0 +1,28 @@
+# HG changeset patch
+# User Martin Stransky <stransky@redhat.com>
+# Parent  4e3ad95d689a5beabf3c1f41d958794fe00e3767
+Bug 1196777 - Ask GDK to receive focus events, r=?karlt
+
+diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
+--- a/widget/gtk/nsWindow.cpp
++++ b/widget/gtk/nsWindow.cpp
+@@ -142,17 +142,18 @@ const gint kEvents = GDK_EXPOSURE_MASK |
+                      GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
+                      GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
+ #if GTK_CHECK_VERSION(3,4,0)
+                      GDK_SMOOTH_SCROLL_MASK |
+                      GDK_TOUCH_MASK |
+ #endif
+                      GDK_SCROLL_MASK |
+                      GDK_POINTER_MOTION_MASK |
+-                     GDK_PROPERTY_CHANGE_MASK;
++                     GDK_PROPERTY_CHANGE_MASK |
++                     GDK_FOCUS_CHANGE_MASK;
+ 
+ /* utility functions */
+ static bool       is_mouse_in_window(GdkWindow* aWindow,
+                                      gdouble aMouseX, gdouble aMouseY);
+ static nsWindow  *get_window_for_gtk_widget(GtkWidget *widget);
+ static nsWindow  *get_window_for_gdk_window(GdkWindow *window);
+ static GtkWidget *get_gtk_widget_for_gdk_window(GdkWindow *window);
+ static GdkCursor *get_gtk_cursor(nsCursor aCursor);
diff --git a/SOURCES/mozilla-1324096.patch b/SOURCES/mozilla-1324096.patch
deleted file mode 100644
index 4a2691e..0000000
--- a/SOURCES/mozilla-1324096.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-diff --git a/security/certverifier/CertVerifier.cpp b/security/certverifier/CertVerifier.cpp
---- a/security/certverifier/CertVerifier.cpp
-+++ b/security/certverifier/CertVerifier.cpp
-@@ -120,16 +120,20 @@ IsCertChainRootBuiltInRoot(const UniqueC
-   }
-   CERTCertificate* root = rootNode->cert;
-   if (!root) {
-     return Result::FATAL_ERROR_LIBRARY_FAILURE;
-   }
-   return IsCertBuiltInRoot(root, result);
- }
- 
-+// The term "builtin root" traditionally refers to a root CA certificate that
-+// has been added to the NSS trust store, because it has been approved
-+// for inclusion according to the Mozilla CA policy, and might be accepted
-+// by Mozilla applications as an issuer for certificates seen on the public web.
- Result
- IsCertBuiltInRoot(CERTCertificate* cert, bool& result)
- {
-   result = false;
- #ifdef DEBUG
-   nsCOMPtr<nsINSSComponent> component(do_GetService(PSM_COMPONENT_CONTRACTID));
-   if (!component) {
-     return Result::FATAL_ERROR_LIBRARY_FAILURE;
-@@ -142,25 +146,38 @@ IsCertBuiltInRoot(CERTCertificate* cert,
-     return Success;
-   }
- #endif // DEBUG
-   AutoSECMODListReadLock lock;
-   for (SECMODModuleList* list = SECMOD_GetDefaultModuleList(); list;
-        list = list->next) {
-     for (int i = 0; i < list->module->slotCount; i++) {
-       PK11SlotInfo* slot = list->module->slots[i];
--      // PK11_HasRootCerts should return true if and only if the given slot has
--      // an object with a CKA_CLASS of CKO_NETSCAPE_BUILTIN_ROOT_LIST, which
--      // should be true only of the builtin root list.
--      // If we can find a copy of the given certificate on the slot with the
--      // builtin root list, that certificate must be a builtin.
--      if (PK11_IsPresent(slot) && PK11_HasRootCerts(slot) &&
--          PK11_FindCertInSlot(slot, cert, nullptr) != CK_INVALID_HANDLE) {
--        result = true;
--        return Success;
-+      // We're searching for the "builtin root module", which is a module that
-+      // contains an object with a CKA_CLASS of CKO_NETSCAPE_BUILTIN_ROOT_LIST.
-+      // We use PK11_HasRootCerts() to identify a module with that property.
-+      // In the past, we exclusively used the PKCS#11 module named nssckbi,
-+      // which is provided by the NSS library.
-+      // Nowadays, some distributions use a replacement module, which contains
-+      // the builtin roots, but which also contains additional CA certificates,
-+      // such as CAs trusted in a local deployment.
-+      // We want to be able to distinguish between these two categories,
-+      // because a CA, which may issue certificates for the public web,
-+      // is expected to comply with additional requirements.
-+      // If the certificate has attribute CKA_NSS_MOZILLA_CA_POLICY set to true,
-+      // then we treat it as a "builtin root".
-+      if (PK11_IsPresent(slot) && PK11_HasRootCerts(slot)) {
-+        CK_OBJECT_HANDLE handle = PK11_FindCertInSlot(slot, cert, nullptr);
-+        if (handle != CK_INVALID_HANDLE &&
-+            PK11_HasAttributeSet(slot, handle, CKA_NSS_MOZILLA_CA_POLICY,
-+                                 false)) {
-+          // Attribute was found, and is set to true
-+          result = true;
-+          break;
-+        }
-       }
-     }
-   }
-   return Success;
- }
- 
- static Result
- BuildCertChainForOneKeyUsage(NSSCertDBTrustDomain& trustDomain, Input certDER,
diff --git a/SOURCES/mozilla-1353817.patch b/SOURCES/mozilla-1353817.patch
new file mode 100644
index 0000000..dc8d8f8
--- /dev/null
+++ b/SOURCES/mozilla-1353817.patch
@@ -0,0 +1,27 @@
+From 1cc652f5525f458b0b4ceb12af24bf5a4367db32 Mon Sep 17 00:00:00 2001
+From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+Date: Tue, 23 May 2017 13:09:48 -0400
+Subject: [PATCH] Bug 1353817: Include SkNx_neon.h for ARM64 too
+
+This fixes build errors as arm_neon.h was missing along with some
+missing converters.
+---
+ gfx/skia/skia/src/core/SkNx.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gfx/skia/skia/src/core/SkNx.h b/gfx/skia/skia/src/core/SkNx.h
+index 6bca856..b0427aa 100644
+--- a/gfx/skia/skia/src/core/SkNx.h
++++ b/gfx/skia/skia/src/core/SkNx.h
+@@ -299,7 +299,7 @@ typedef SkNx<4, uint32_t> Sk4u;
+ // Include platform specific specializations if available.
+ #if !defined(SKNX_NO_SIMD) && SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2
+     #include "../opts/SkNx_sse.h"
+-#elif !defined(SKNX_NO_SIMD) && defined(SK_ARM_HAS_NEON)
++#elif !defined(SKNX_NO_SIMD) && (defined(SK_ARM_HAS_NEON) || defined(SK_CPU_ARM64))
+     #include "../opts/SkNx_neon.h"
+ #else
+ 
+-- 
+2.9.4
+
diff --git a/SOURCES/mozilla-1436242.patch b/SOURCES/mozilla-1436242.patch
new file mode 100644
index 0000000..570b7c5
--- /dev/null
+++ b/SOURCES/mozilla-1436242.patch
@@ -0,0 +1,56 @@
+
+# HG changeset patch
+# User Jed Davis <jld@mozilla.com>
+# Date 1526943705 21600
+# Node ID 6bb3adfa15c6877f7874429462dad88f8c978c4f
+# Parent  4c71c8454879c841871ecf3afb7dbdc96bad97fc
+Bug 1436242 - Avoid undefined behavior in IPC fd-passing code.  r=froydnj
+
+MozReview-Commit-ID: 3szIPUssgF5
+
+diff --git a/ipc/chromium/src/chrome/common/ipc_channel_posix.cc b/ipc/chromium/src/chrome/common/ipc_channel_posix.cc
+--- a/ipc/chromium/src/chrome/common/ipc_channel_posix.cc
++++ b/ipc/chromium/src/chrome/common/ipc_channel_posix.cc
+@@ -418,20 +418,37 @@ bool Channel::ChannelImpl::ProcessIncomi
+     const int* fds;
+     unsigned num_fds;
+     unsigned fds_i = 0;  // the index of the first unused descriptor
+ 
+     if (input_overflow_fds_.empty()) {
+       fds = wire_fds;
+       num_fds = num_wire_fds;
+     } else {
+-      const size_t prev_size = input_overflow_fds_.size();
+-      input_overflow_fds_.resize(prev_size + num_wire_fds);
+-      memcpy(&input_overflow_fds_[prev_size], wire_fds,
+-             num_wire_fds * sizeof(int));
++      // This code may look like a no-op in the case where
++      // num_wire_fds == 0, but in fact:
++      //
++      // 1. wire_fds will be nullptr, so passing it to memcpy is
++      // undefined behavior according to the C standard, even though
++      // the memcpy length is 0.
++      //
++      // 2. prev_size will be an out-of-bounds index for
++      // input_overflow_fds_; this is undefined behavior according to
++      // the C++ standard, even though the element only has its
++      // pointer taken and isn't accessed (and the corresponding
++      // operation on a C array would be defined).
++      //
++      // UBSan makes #1 a fatal error, and assertions in libstdc++ do
++      // the same for #2 if enabled.
++      if (num_wire_fds > 0) {
++        const size_t prev_size = input_overflow_fds_.size();
++        input_overflow_fds_.resize(prev_size + num_wire_fds);
++        memcpy(&input_overflow_fds_[prev_size], wire_fds,
++               num_wire_fds * sizeof(int));
++      }
+       fds = &input_overflow_fds_[0];
+       num_fds = input_overflow_fds_.size();
+     }
+ 
+     // The data for the message we're currently reading consists of any data
+     // stored in incoming_message_ followed by data in input_buf_ (followed by
+     // other messages).
+ 
+
diff --git a/SOURCES/mozilla-build-arm.patch b/SOURCES/mozilla-build-arm.patch
new file mode 100644
index 0000000..e390a28
--- /dev/null
+++ b/SOURCES/mozilla-build-arm.patch
@@ -0,0 +1,14 @@
+diff -up firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h
+--- firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h.arm	2017-03-03 13:53:52.480754536 +0100
++++ firefox-52.0/gfx/skia/skia/include/core/SkPreConfig.h	2017-03-03 13:56:01.476018102 +0100
+@@ -203,6 +203,10 @@
+     #define SK_ARM_HAS_CRC32
+ #endif
+ 
++#if defined(__aarch64__)
++    #undef SK_ARM_HAS_NEON
++#endif
++
+ //////////////////////////////////////////////////////////////////////
+ 
+ #if !defined(SKIA_IMPLEMENTATION)
diff --git a/SOURCES/rhbz-1354671.patch b/SOURCES/rhbz-1354671.patch
new file mode 100644
index 0000000..6ee89b7
--- /dev/null
+++ b/SOURCES/rhbz-1354671.patch
@@ -0,0 +1,12 @@
+diff -up firefox-53.0/layout/base/nsIPresShell.h.1354671 firefox-53.0/layout/base/nsIPresShell.h
+--- firefox-53.0/layout/base/nsIPresShell.h.1354671	2017-04-27 13:07:43.808653320 +0200
++++ firefox-53.0/layout/base/nsIPresShell.h	2017-04-27 13:09:40.404427641 +0200
+@@ -212,7 +212,7 @@ public:
+    * to the same aSize value.  AllocateFrame is infallible and will abort
+    * on out-of-memory.
+    */
+-  void* AllocateFrame(nsQueryFrame::FrameIID aID, size_t aSize)
++  void* __attribute__((optimize("no-lifetime-dse"))) AllocateFrame(nsQueryFrame::FrameIID aID, size_t aSize)
+   {
+     void* result = mFrameArena.AllocateByFrameID(aID, aSize);
+     RecordAlloc(result);
diff --git a/SOURCES/rhbz-1423012.patch b/SOURCES/rhbz-1423012.patch
deleted file mode 100644
index f5344c2..0000000
--- a/SOURCES/rhbz-1423012.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up firefox-52.0b8/gfx/2d/HelpersCairo.h.old firefox-52.0b8/gfx/2d/HelpersCairo.h
---- firefox-52.0b8/gfx/2d/HelpersCairo.h.old	2017-03-02 09:23:01.230766731 -0500
-+++ firefox-52.0b8/gfx/2d/HelpersCairo.h	2017-03-02 09:23:49.711930251 -0500
-@@ -239,9 +239,9 @@ CairoFormatToGfxFormat(cairo_format_t fo
- {
-   switch (format) {
-     case CAIRO_FORMAT_ARGB32:
--      return SurfaceFormat::A8R8G8B8_UINT32;
-+      return SurfaceFormat::B8G8R8A8;
-     case CAIRO_FORMAT_RGB24:
--      return SurfaceFormat::X8R8G8B8_UINT32;
-+      return SurfaceFormat::B8G8R8X8;
-     case CAIRO_FORMAT_A8:
-       return SurfaceFormat::A8;
-     case CAIRO_FORMAT_RGB16_565:
diff --git a/SOURCES/rhbz-1503632-nss.patch b/SOURCES/rhbz-1503632-nss.patch
new file mode 100644
index 0000000..f9f5e4d
--- /dev/null
+++ b/SOURCES/rhbz-1503632-nss.patch
@@ -0,0 +1,28 @@
+diff --git a/security/certverifier/NSSCertDBTrustDomain.cpp b/security/certverifier/NSSCertDBTrustDomain.cpp
+--- a/security/certverifier/NSSCertDBTrustDomain.cpp
++++ b/security/certverifier/NSSCertDBTrustDomain.cpp
+@@ -1057,22 +1057,20 @@ InitializeNSS(const nsACString& dir, boo
+   // "/usr/lib/nss/libnssckbi.so".
+   uint32_t flags = NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE;
+   if (readOnly) {
+     flags |= NSS_INIT_READONLY;
+   }
+   if (!loadPKCS11Modules) {
+     flags |= NSS_INIT_NOMODDB;
+   }
+-  nsAutoCString dbTypeAndDirectory("sql:");
+-  dbTypeAndDirectory.Append(dir);
+   MOZ_LOG(gCertVerifierLog, LogLevel::Debug,
+-          ("InitializeNSS(%s, %d, %d)", dbTypeAndDirectory.get(), readOnly,
++          ("InitializeNSS(%s, %d, %d)", PromiseFlatCString(dir).get(), readOnly,
+            loadPKCS11Modules));
+-  SECStatus srv = NSS_Initialize(dbTypeAndDirectory.get(), "", "",
++  SECStatus srv = NSS_Initialize(PromiseFlatCString(dir).get(), "", "",
+                                  SECMOD_DB, flags);
+   if (srv != SECSuccess) {
+     return srv;
+   }
+ 
+   if (!readOnly) {
+     UniquePK11SlotInfo slot(PK11_GetInternalKeySlot());
+     if (!slot) {
diff --git a/SOURCES/rhbz-966424.patch b/SOURCES/rhbz-966424.patch
deleted file mode 100644
index c4c332e..0000000
--- a/SOURCES/rhbz-966424.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- a/toolkit/modules/CertUtils.jsm
-+++ b/toolkit/modules/CertUtils.jsm
-@@ -170,17 +170,19 @@ this.checkCert =
-   issuerCert = issuerCert.QueryInterface(Ci.nsIX509Cert3);
-   var tokenNames = issuerCert.getAllTokenNames({});
- 
-   if (!tokenNames || !tokenNames.some(isBuiltinToken))
-     throw new Ce(certNotBuiltInErr, Cr.NS_ERROR_ABORT);
- }
- 
- function isBuiltinToken(tokenName) {
--  return tokenName == "Builtin Object Token";
-+  return tokenName == "Builtin Object Token" ||
-+         tokenName == "Default Trust" ||
-+         tokenName == "System Trust";
- }
- 
- /**
-  * This class implements nsIBadCertListener.  Its job is to prevent "bad cert"
-  * security dialogs from being shown to the user.  It is better to simply fail
-  * if the certificate is bad. See bug 304286.
-  *
-  * @param  aAllowNonBuiltInCerts (optional)
diff --git a/SOURCES/webrtc-arch-cpu.patch b/SOURCES/webrtc-arch-cpu.patch
deleted file mode 100644
index 29fd578..0000000
--- a/SOURCES/webrtc-arch-cpu.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- a/media/webrtc/trunk/build/build_config.h
-+++ b/media/webrtc/trunk/build/build_config.h
-@@ -123,7 +123,9 @@
- #define ARCH_CPU_PPC_FAMILY 1
- #define ARCH_CPU_PPC64 1
- #define ARCH_CPU_64_BITS 1
-+#ifndef _LITTLE_ENDIAN
- #define ARCH_CPU_BIG_ENDIAN 1
-+#endif
- #elif defined(__ppc__) || defined(__powerpc__)
- #define ARCH_CPU_PPC_FAMILY 1
- #define ARCH_CPU_PPC 1
-@@ -156,6 +158,9 @@
- #elif defined(__alpha__)
- #define ARCH_CPU_ALPHA 1
- #define ARCH_CPU_64_BITS 1
-+#elif defined(__aarch64__)
-+#define ARCH_CPU_AARCH64 1
-+#define ARCH_CPU_64_BITS 1
- #else
- #error Please add support for your architecture in build/build_config.h
- #endif
diff --git a/SOURCES/xulrunner-24.0-jemalloc-ppc.patch b/SOURCES/xulrunner-24.0-jemalloc-ppc.patch
index d0c3d8c..75aed9a 100644
--- a/SOURCES/xulrunner-24.0-jemalloc-ppc.patch
+++ b/SOURCES/xulrunner-24.0-jemalloc-ppc.patch
@@ -1,12 +1,12 @@
-diff -up mozilla-aurora/memory/mozjemalloc/jemalloc.c.jemalloc-ppc.patch mozilla-aurora/memory/mozjemalloc/jemalloc.c
---- mozilla-aurora/memory/mozjemalloc/jemalloc.c.jemalloc-ppc.patch	2016-11-18 08:56:32.242742746 +0100
-+++ mozilla-aurora/memory/mozjemalloc/jemalloc.c	2016-11-18 08:59:51.809071876 +0100
-@@ -1096,7 +1096,7 @@ static const bool config_recycle = false
-  * controlling the malloc behavior are defined as compile-time constants
-  * for best performance and cannot be altered at runtime.
-  */
--#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && !defined(__aarch64__)
-+#if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) && !defined(__aarch64__) && !defined(__powerpc__)
- #define MALLOC_STATIC_SIZES 1
+diff -up firefox-60.0/memory/build/mozjemalloc.cpp.ppc-jemalloc firefox-60.0/memory/build/mozjemalloc.cpp
+--- firefox-60.0/memory/build/mozjemalloc.cpp.ppc-jemalloc	2018-06-06 14:39:28.454371053 +0200
++++ firefox-60.0/memory/build/mozjemalloc.cpp	2018-06-06 14:39:40.242397928 +0200
+@@ -180,7 +180,7 @@ using namespace mozilla;
+ // Debug builds are opted out too, for test coverage.
+ #ifndef MOZ_DEBUG
+ #if !defined(__ia64__) && !defined(__sparc__) && !defined(__mips__) &&         \
+-  !defined(__aarch64__)
++  !defined(__aarch64__) && !defined(__powerpc__)
+ #define MALLOC_STATIC_PAGESIZE 1
+ #endif
  #endif
- 
diff --git a/SPECS/firefox.spec b/SPECS/firefox.spec
index f570467..5890ea3 100644
--- a/SPECS/firefox.spec
+++ b/SPECS/firefox.spec
@@ -1,499 +1,572 @@
-%define system_nss              1
-%global nspr_version            4.13.1
-%global nss_version             3.28.4-11
-%define system_sqlite           0
-%define sqlite_version          3.8.4.2
-%define system_ffi              1
-%define ffi_version             3.0.9
-%define use_bundled_yasm        1
-%define use_bundled_python      0
-%define python_version          2.7.8
-%define use_bundled_gcc         0
-%define gcc_version             4.8.2-16
-%define cairo_version           1.10.2
-%define freetype_version        2.1.9
-%define system_jpeg             1
-%define system_libatomic        0
-%define with_intl_api           1
-%define use_baselinejit         1
-%define official_branding       1
-%define use_gtk3                0
-
-
-%define debug_build             0
-# This is for local builds or builds in mock with --no-clean
-# It skips building of gcc, binutils and yasm rpms when they exists, it just installs
-# them and doesn't delete them to allow recycling them in next build.
-# SHOULD ALWAYS BE 0 WHEN BUILDING IN BREW
-%define do_not_clean_rpms       0
-
-# Configure and override build options for various platforms and RHEL versions
-# ============================================================================
-
-# RHEL7
-%if 0%{?rhel} == 7
-%ifarch s390x
-%define use_bundled_gcc         1
+# Use system nspr/nss? FIXME
+%global system_nss        1
+%define use_bundled_ffi   0
+
+# Don't use system hunspell for now
+%global system_hunspell   0
+%global system_sqlite     0
+
+%if 0%{?rhel} > 6
+%global system_ffi        1
+%else
+%global system_ffi        0
 %endif
+%if 0%{?rhel} < 8
+%global use_dts           1
 %endif
 
-# RHEL6
-%if 0%{?rhel} == 6
-%define use_bundled_python      1
-%define use_bundled_gcc         1
-%define use_bundled_yasm        1
-%define system_ffi              0
-%define use_bundled_binutils    1
-%endif
+%global use_rustts        1
+%global dts_version       7
+%global rst_version       7
+
+# Use system cairo?
+%global system_cairo      0
+
+# Use system libvpx?
+%global system_libvpx     0
 
-# Require libatomic for ppc
-%ifarch ppc
-%define system_libatomic        1
+# Use system libicu?
+%if 0%{?fedora} > 27
+%global system_libicu     0
+%else
+%global system_libicu     0
 %endif
+
 # Big endian platforms
-%ifarch ppc ppc64 s390 s390x
+%ifarch ppc64 s390x
 # Javascript Intl API is not supported on big endian platforms right now:
 # https://bugzilla.mozilla.org/show_bug.cgi?id=1322212
-%define with_intl_api           1
-%define big_endian              1
+%global big_endian        1
 %endif
 
-# ============================================================================
+# Hardened build?
+%global hardened_build    1
 
-# Avoid patch failures
-%define _default_patch_fuzz 2
+%global system_jpeg       1
 
+%ifarch %{ix86} x86_64
+%global run_tests         0
+%else
+%global run_tests         0
+%endif
+
+# Build as a debug package?
+%global debug_build       0
+
+%global default_bookmarks_file  %{_datadir}/bookmarks/default-bookmarks.html
+%global firefox_app_id  \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
+# Minimal required versions
+%global cairo_version 1.13.1
+%global freetype_version 2.1.9
+%if %{?system_libvpx}
+%global libvpx_version 1.4.0
+%endif
+
+%if %{?system_nss}
+%global nspr_version 4.19.0
+# NSS/NSPR quite often ends in build override, so as requirement the version
+# we're building against could bring us some broken dependencies from time to time.
+#%global nspr_build_version %(pkg-config --silence-errors --modversion nspr 2>/dev/null || echo 65536)
+%global nspr_build_version %{nspr_version}
+%global nss_version 3.36.0
+#%global nss_build_version %(pkg-config --silence-errors --modversion nss 2>/dev/null || echo 65536)
+%global nss_build_version %{nss_version}
+%endif
 
-%define default_bookmarks_file  %{_datadir}/bookmarks/default-bookmarks.html
-%define firefox_app_id          \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
-%define mozappdir               %{_libdir}/%{name}
-%define build_langpacks         1
-%define langpackdir             %{mozappdir}/langpacks
 %if %{?system_sqlite}
+%global sqlite_version 3.8.4.2
 # The actual sqlite version (see #480989):
 %global sqlite_build_version %(pkg-config --silence-errors --modversion sqlite3 2>/dev/null || echo 65536)
 %endif
 
+%define bundled_python_version 2.7.13
+%define use_bundled_yasm        1
+
+# GTK3 bundling
+%define avoid_bundled_rebuild 0
+%if 0%{?rhel} == 6
+%define bundle_gtk3             1
+# In-tree libffi is able to build on following platforms, we have to bundle it for the rest
+%ifnarch x86_64 i686 aarch64
+%define use_bundled_ffi         1
+%endif
+%endif
+
+%define gtk3_nvr 3.22.26-1
+%define gtk3_install_path %{mozappdir}/bundled
+
+%if 0%{?bundle_gtk3}
+# We could use %%include, but in %%files, %%post and other sections, but in these
+# sections it could lead to syntax errors about unclosed %%if. Work around it by
+# using the following macro
+%define include_file() %{expand:%(cat '%1')}
+%endif
+
+
+%global mozappdir     %{_libdir}/%{name}
+%global mozappdirdev  %{_libdir}/%{name}-devel-%{version}
+%global langpackdir   %{mozappdir}/distribution/extensions
+%global tarballdir    %{name}-%{version}
+%global pre_version   esr
+
+%global official_branding       1
+%global build_langpacks         1
+
+%global enable_mozilla_crashreporter       0
+%if !%{debug_build}
+%ifarch %{ix86} x86_64
+%global enable_mozilla_crashreporter       0
+%endif
+%endif
+
 Summary:        Mozilla Firefox Web browser
 Name:           firefox
-Version:        52.8.0
-Release:        1%{?dist}
-URL:            http://www.mozilla.org/projects/firefox/
+Version:        60.1.0
+Release:        4%{?pre_tag}%{?dist}
+URL:            https://www.mozilla.org/firefox/
 License:        MPLv1.1 or GPLv2+ or LGPLv2+
-Group:          Applications/Internet
-
-%define         ext_version             esr
-%define         tarballdir              firefox-%{version}%{?ext_version}
+%if 0%{?rhel} == 7
+ExcludeArch:    s390 ppc
+%endif
+%if 0%{?rhel} == 6
+ExclusiveArch:  i686 x86_64 ppc64 s390x
+%endif
 
-# From ftp://archive.mozilla.org/pub/firefox/releases/%{version}%{?ext_version}/source
-Source0:        firefox-%{version}%{?ext_version}.source.tar.xz
+Source0:        https://hg.mozilla.org/releases/mozilla-release/archive/firefox-%{version}%{?pre_version}.source.tar.xz
 %if %{build_langpacks}
-Source1:        firefox-langpacks-%{version}%{?ext_version}-20180509.tar.xz
+Source1:        firefox-langpacks-%{version}%{?pre_version}-20180622.tar.xz
 %endif
 Source10:       firefox-mozconfig
-Source12:       firefox-centos-default-prefs.js
+Source12:       firefox-redhat-default-prefs.js
 Source20:       firefox.desktop
-Source600:      firefox.sh.in.rhel6
-Source700:      firefox.sh.in.rhel7
+Source21:       firefox.sh.in
 Source23:       firefox.1
 Source24:       mozilla-api-key
-Source100:      find-external-requires
-Source200:      https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
-Source300:      gcc48-%{gcc_version}.el5.src.rpm
+Source25:       firefox-symbolic.svg
+Source26:       distribution.ini
+Source27:       google-api-key
+
+Source200:      gtk3-private-%{gtk3_nvr}.el6.src.rpm
+Source201:      gtk3-private-%{gtk3_nvr}-post.inc
+Source202:      gtk3-private-%{gtk3_nvr}-postun.inc
+Source203:      gtk3-private-%{gtk3_nvr}-posttrans.inc
+Source204:      gtk3-private-%{gtk3_nvr}-files.inc
+Source205:      gtk3-private-%{gtk3_nvr}-setup-flags-env.inc
+Source206:      gtk3-private-%{gtk3_nvr}-requires-provides-filter.inc
 Source301:      yasm-1.2.0-3.el5.src.rpm
-Source302:      devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm
+Source303:      libffi-3.0.13-18.el7_3.src.rpm
 
+#Python 2.7
+Source100:      https://www.python.org/ftp/python/%{bundled_python_version}/Python-%{bundled_python_version}.tar.xz
 # Build patches
-Patch0:         firefox-install-dir.patch
-Patch5:         xulrunner-24.0-jemalloc-ppc.patch
-Patch6:         webrtc-arch-cpu.patch
-Patch8:         firefox-ppc64le.patch
-#ALREADY Patch19:        mozilla-1319374-skia-endian.patch
-Patch20:        build-s390-atomic.patch
-Patch21:        build-icu-big-endian.patch
-Patch22:        build-missing-getrandom.patch
-Patch23:        build-nss-version.patch
-Patch24:        build-nss-prbool.patch
-Patch25:        build-s390-missing-include.patch
-
-# RHEL patches
-Patch101:       firefox-default.patch
-# TODO code changed a lot, need to test it
-Patch102:       firefox-enable-addons.patch
-Patch103:       rhbz-966424.patch
-Patch106:       firefox-enable-plugins.patch
-Patch110:       mozilla-1170092-etc-conf.patch
-Patch111:       rhbz-1173156.patch
-Patch112:       mozilla-256180.patch
-Patch114:       rhbz-1423012.patch
-Patch116:       mozilla-1005640-accept-lang.patch
+Patch3:         mozilla-build-arm.patch
+Patch4:         build-mozconfig-fix.patch
+Patch5:         build-gdk-version.patch
+Patch6:         build-nss-version.patch
+Patch26:        build-icu-big-endian.patch
+# Also fixes s390x: https://bugzilla.mozilla.org/show_bug.cgi?id=1376268
+Patch29:        build-big-endian.patch
+# Always feel lucky for unsupported platforms:
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1347128
+Patch37:        build-jit-atomic-always-lucky.patch
+Patch40:        build-aarch64-skia.patch
+Patch41:        build-debug-qcms.patch
+Patch43:        xulrunner-24.0-jemalloc-ppc.patch
+Patch44:        firefox-disable-dbus-remote.patch
+
+# Fedora/RHEL specific patches
+Patch215:        firefox-enable-addons.patch
+Patch219:        rhbz-1173156.patch
+Patch221:        firefox-fedora-ua.patch
+Patch224:        mozilla-1170092.patch
+Patch225:        mozilla-1005640-accept-lang.patch
+#ARM run-time patch
+Patch226:        rhbz-1354671.patch
+Patch230:        rhbz-1503632-nss.patch
 
 # Upstream patches
-# Skia support for big endian platforms, since patch got review- I think we can delete that:
-#Patch201:       mozilla-1005535.patch
-# Kaie's patch, we'll most likely need this one
-Patch202:       mozilla-1152515.patch
-Patch203:       mozilla-1324096.patch
+Patch402:        mozilla-1196777.patch
+Patch406:        mozilla-256180.patch
+Patch413:        mozilla-1353817.patch
+Patch415:        mozilla-1436242.patch
 
-# RHEL7 patches
+# Debian patches
 
-# RHEL6 patches
-# HOPEFULY fixed Patch401:       build-el6-harfbuzz-old-glib.patch
-
-# ---------------------------------------------------
-BuildRoot:      %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
-
-BuildRequires:  desktop-file-utils
+%if %{?system_nss}
+BuildRequires:  pkgconfig(nspr) >= %{nspr_version}
+BuildRequires:  pkgconfig(nss) >= %{nss_version}
+BuildRequires:  nss-static >= %{nss_version}
+%endif
+%if %{?system_cairo}
+BuildRequires:  pkgconfig(cairo) >= %{cairo_version}
+%endif
+BuildRequires:  pkgconfig(libpng)
+BuildRequires:  xz
+BuildRequires:  libXt-devel
 BuildRequires:  mesa-libGL-devel
+Requires:       liberation-fonts-common
+Requires:       liberation-sans-fonts
+%if %{?system_jpeg}
+BuildRequires:  libjpeg-devel
+%endif
 BuildRequires:  zip
 BuildRequires:  bzip2-devel
-BuildRequires:  zlib-devel
-BuildRequires:  libIDL-devel
-%if %{?use_gtk3}
-BuildRequires:  gtk3-devel
-%else
-BuildRequires:  gtk2-devel
-%endif
-BuildRequires:  gnome-vfs2-devel
-BuildRequires:  libgnome-devel
-BuildRequires:  libgnomeui-devel
+BuildRequires:  pkgconfig(zlib)
+BuildRequires:  pkgconfig(libIDL-2.0)
+BuildRequires:  pkgconfig(gtk+-2.0)
 BuildRequires:  krb5-devel
-BuildRequires:  pango-devel
-BuildRequires:  freetype-devel >= %{freetype_version}
-BuildRequires:  libXt-devel
-BuildRequires:  libXrender-devel
-BuildRequires:  startup-notification-devel
-BuildRequires:  alsa-lib-devel
-BuildRequires:  libnotify-devel
-BuildRequires:  autoconf213
-BuildRequires:  mesa-libGL-devel
+BuildRequires:  pkgconfig(pango)
+BuildRequires:  pkgconfig(freetype2) >= %{freetype_version}
+BuildRequires:  pkgconfig(xt)
+BuildRequires:  pkgconfig(xrender)
+%if %{?system_hunspell}
+BuildRequires:  hunspell-devel
+%endif
+BuildRequires:  pkgconfig(libstartup-notification-1.0)
+BuildRequires:  pkgconfig(libnotify)
+BuildRequires:  pkgconfig(dri)
+BuildRequires:  pkgconfig(libcurl)
+BuildRequires:  dbus-glib-devel
+%if %{?system_libvpx}
+BuildRequires:  libvpx-devel >= %{libvpx_version}
+%endif
 BuildRequires:  autoconf213
-BuildRequires:  xz
-%if ! %{use_bundled_yasm}0
-BuildRequires:  yasm
+BuildRequires:  pkgconfig(libpulse)
+BuildRequires:  pkgconfig(gconf-2.0)
+
+%if 0%{?use_dts}
+BuildRequires:  devtoolset-%{dts_version}-gcc-c++
+BuildRequires:  devtoolset-%{dts_version}-gcc
+BuildRequires:  devtoolset-%{dts_version}-binutils
+BuildRequires:  devtoolset-%{dts_version}-libatomic-devel
+%if 0%{?rhel} > 6
+BuildRequires:  llvm-toolset-%{dts_version}
+BuildRequires:  llvm-toolset-%{dts_version}-llvm-devel
 %endif
-%if %{?system_sqlite}
-BuildRequires:  sqlite-devel >= %{sqlite_version}
-Requires:       sqlite >= %{sqlite_build_version}
 %endif
-%if %{?system_nss}
-BuildRequires:  nspr-devel >= %{nspr_version}
-BuildRequires:  nss-devel >= %{nss_version}
-Requires:       nspr >= %{nspr_version}
-Requires:       nss >= %{nss_version}
+%if 0%{?use_rustts}
+BuildRequires:  rust-toolset-%{rst_version}-cargo
+BuildRequires:  rust-toolset-%{rst_version}-rust
 %endif
-%if %{?system_sqlite}
-BuildRequires:  sqlite-devel >= %{sqlite_version}
-Requires:       sqlite >= %{sqlite_build_version}
+%if 0%{?rhel} == 8
+BuildRequires:  llvm-toolset-%{dts_version}
+BuildRequires:  llvm-toolset-%{dts_version}-llvm-devel
 %endif
-%if %{?system_ffi}
-BuildRequires:  libffi-devel >= %{ffi_version}
-Requires:       libffi >= %{ffi_version}
+%if 0%{?rhel} == 6
+# Needed for Python in RHEL6
+BuildRequires:  openssl-devel
 %endif
-BuildRequires:  libpng-devel
-BuildRequires:  libjpeg-devel
-BuildRequires:  hunspell-devel
-%if %{system_libatomic}
-BuildRequires:  libatomic
-Requires:       libatomic
+
+%if 0%{?bundle_gtk3}
+BuildRequires:        automake
+BuildRequires:        autoconf
+BuildRequires:        cups-devel
+BuildRequires:        dbus-devel
+BuildRequires:        desktop-file-utils
+BuildRequires:        expat-devel
+BuildRequires:        fontpackages-devel
+BuildRequires:        gamin-devel
+BuildRequires:        gettext-devel
+BuildRequires:        git
+BuildRequires:        intltool
+BuildRequires:        jasper-devel
+BuildRequires:        libepoxy-devel
+BuildRequires:        libcroco-devel
+BuildRequires:        libffi-devel
+BuildRequires:        libpng-devel
+BuildRequires:        libtiff-devel
+BuildRequires:        libtool
+BuildRequires:        libxml2-devel
+BuildRequires:        libX11-devel
+BuildRequires:        libXcomposite-devel
+BuildRequires:        libXcursor-devel
+BuildRequires:        libXinerama-devel
+BuildRequires:        libXevie-devel
+BuildRequires:        libXrandr-devel
+BuildRequires:        libXrender-devel
+BuildRequires:        libXtst-devel
+BuildRequires:        mesa-libGL-devel
+BuildRequires:        mesa-libEGL-devel
+BuildRequires:        pixman-devel
+BuildRequires:        rest-devel
+BuildRequires:        readline-devel
+%else
+BuildRequires:        gtk3-devel
+BuildRequires:        glib2-devel
 %endif
 
-# RHEL7 requires
-%if 0%{?rhel} == 7
-Requires:       redhat-indexhtml
-BuildRequires:  pulseaudio-libs-devel
-BuildRequires:  system-bookmarks
 Requires:       mozilla-filesystem
-Requires:       liberation-fonts-common
-Requires:       liberation-sans-fonts
-BuildRequires:  dbus-glib-devel >= 0.60 
+Requires:       p11-kit-trust
+%if %{?system_nss}
+Requires:       nspr >= %{nspr_build_version}
+Requires:       nss >= %{nss_build_version}
+%endif
+BuildRequires:  python2-devel
+
+%if 0%{?fedora} > 25
+# For early testing of rhbz#1400293 mozbz#1324096 on F26 and Rawhide,
+# temporarily require the specific NSS build with the backports.
+# Can be removed after firefox is changed to require NSS 3.30.
+BuildRequires:  nss-devel >= 3.29.1-2.1
+Requires:       nss >= 3.29.1-2.1
 %endif
 
-# RHEL6 requires
-%if 0%{?rhel} == 6
 BuildRequires:  desktop-file-utils
 BuildRequires:  system-bookmarks
-Requires:       system-bookmarks
 Requires:       redhat-indexhtml
-Requires:       mozilla-filesystem
-Requires:       gtk2 >= 2.24
-BuildRequires:  pulseaudio-libs-devel
-BuildRequires:  system-bookmarks
-Requires:       mozilla-filesystem
-Requires:       liberation-fonts-common
-Requires:       liberation-sans-fonts
+%if %{?system_sqlite}
+BuildRequires:  pkgconfig(sqlite3) >= %{sqlite_version}
+Requires:       sqlite >= %{sqlite_build_version}
 %endif
 
-Obsoletes:      mozilla <= 37:1.7.13
-Obsoletes:      firefox < 38.0
-Conflicts:      firefox < 38.0
-Provides:       webclient
 
-%if %{use_bundled_python}
-BuildRequires:  openssl-devel
+%if %{?run_tests}
+BuildRequires:  xorg-x11-server-Xvfb
 %endif
-# GCC 4.8 BuildRequires
-# ==================================================================================
-%if %{use_bundled_gcc}
 
-%ifarch s390x
-%global multilib_32_arch s390
-%endif
-%ifarch sparc64
-%global multilib_32_arch sparcv9
-%endif
-%ifarch ppc64
-%global multilib_32_arch ppc
-%endif
-%ifarch x86_64
-%if 0%{?rhel} >= 6
-%global multilib_32_arch i686
-%else
-%global multilib_32_arch i386
-%endif
+%if %{?system_ffi}
+  %if !%{use_bundled_ffi}0
+BuildRequires:  pkgconfig(libffi)
+  %endif
 %endif
 
-%global multilib_64_archs sparc64 ppc64 s390x x86_64
-
-%if 0%{?rhel} >= 6
-# Need binutils which support --build-id >= 2.17.50.0.17-3
-# Need binutils which support %gnu_unique_object >= 2.19.51.0.14
-# Need binutils which support .cfi_sections >= 2.19.51.0.14-33
-BuildRequires: binutils >= 2.19.51.0.14-33
-# While gcc doesn't include statically linked binaries, during testing
-# -static is used several times.
-BuildRequires: glibc-static
-%else
-# Don't have binutils which support --build-id >= 2.17.50.0.17-3
-# Don't have binutils which support %gnu_unique_object >= 2.19.51.0.14
-# Don't have binutils which  support .cfi_sections >= 2.19.51.0.14-33
-BuildRequires: binutils >= 2.17.50.0.2-8
-%endif
-BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, texinfo, sharutils
-BuildRequires: /usr/bin/pod2man
-%if 0%{?rhel} >= 7
-BuildRequires: texinfo-tex
-%endif
-#BuildRequires: systemtap-sdt-devel >= 1.3
-# For VTA guality testing
-BuildRequires: gdb
-# Make sure pthread.h doesn't contain __thread tokens
-# Make sure glibc supports stack protector
-# Make sure glibc supports DT_GNU_HASH
-BuildRequires: glibc-devel >= 2.4.90-13
-%if 0%{?rhel} >= 6
-BuildRequires: elfutils-devel >= 0.147
-BuildRequires: elfutils-libelf-devel >= 0.147
-%else
-BuildRequires: elfutils-devel >= 0.72
-%endif
-%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
-# Make sure glibc supports TFmode long double
-BuildRequires: glibc >= 2.3.90-35
-%endif
-%ifarch %{multilib_64_archs} sparcv9 ppc
-# Ensure glibc{,-devel} is installed for both multilib arches
-BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
-%endif
-%ifarch ia64
-BuildRequires: libunwind >= 0.98
-%endif
-# Need .eh_frame ld optimizations
-# Need proper visibility support
-# Need -pie support
-# Need --as-needed/--no-as-needed support
-# On ppc64, need omit dot symbols support and --non-overlapping-opd
-# Need binutils that owns /usr/bin/c++filt
-# Need binutils that support .weakref
-# Need binutils that supports --hash-style=gnu
-# Need binutils that support mffgpr/mftgpr
-#%if 0%{?rhel} >= 6
-## Need binutils which support --build-id >= 2.17.50.0.17-3
-## Need binutils which support %gnu_unique_object >= 2.19.51.0.14
-## Need binutils which support .cfi_sections >= 2.19.51.0.14-33
-#Requires: binutils >= 2.19.51.0.14-33
-#%else
-## Don't have binutils which support --build-id >= 2.17.50.0.17-3
-## Don't have binutils which support %gnu_unique_object >= 2.19.51.0.14
-## Don't have binutils which  support .cfi_sections >= 2.19.51.0.14-33
-#Requires: binutils >= 2.17.50.0.2-8
-#%endif
-## Make sure gdb will understand DW_FORM_strp
-#Conflicts: gdb < 5.1-2
-#Requires: glibc-devel >= 2.2.90-12
-#%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
-## Make sure glibc supports TFmode long double
-#Requires: glibc >= 2.3.90-35
-#%endif
-#Requires: libgcc >= 4.1.2-43
-#Requires: libgomp >= 4.4.4-13
-#%if 0%{?rhel} == 6
-#Requires: libstdc++ >= 4.4.4-13
-#%else
-#Requires: libstdc++ = 4.1.2
-#%endif
-##FIXME gcc version
-#Requires: libstdc++-devel = %{version}-%{release}
-BuildRequires: gmp-devel >= 4.1.2-8
-%if 0%{?rhel} >= 6
-BuildRequires: mpfr-devel >= 2.2.1
-%endif
-%if 0%{?rhel} >= 7
-BuildRequires: libmpc-devel >= 0.8.1
-%endif
-
-%endif # bundled gcc BuildRequires
-# ==================================================================================
-# Override internal dependency generator to avoid showing libraries provided by this package
-# in dependencies:
-AutoProv: 0
-%define _use_internal_dependency_generator 0
-%define __find_requires %{SOURCE100}
+Obsoletes:      mozilla <= 37:1.7.13
+Provides:       webclient
 
 %description
 Mozilla Firefox is an open-source web browser, designed for standards
 compliance, performance and portability.
 
+%if %{enable_mozilla_crashreporter}
+%global moz_debug_prefix %{_prefix}/lib/debug
+%global moz_debug_dir %{moz_debug_prefix}%{mozappdir}
+%global uname_m %(uname -m)
+%global symbols_file_name %{name}-%{version}.en-US.%{_os}-%{uname_m}.crashreporter-symbols.zip
+%global symbols_file_path %{moz_debug_dir}/%{symbols_file_name}
+%global _find_debuginfo_opts -p %{symbols_file_path} -o debugcrashreporter.list
+%global crashreporter_pkg_name mozilla-crashreporter-%{name}-debuginfo
+%package -n %{crashreporter_pkg_name}
+Summary: Debugging symbols used by Mozilla's crash reporter servers
+%description -n %{crashreporter_pkg_name}
+This package provides debug information for Firefox, for use by
+Mozilla's crash reporter servers.  If you are trying to locally
+debug %{name}, you want to install %{name}-debuginfo instead.
+%files -n %{crashreporter_pkg_name} -f debugcrashreporter.list
+%endif
+
+%if %{run_tests}
+%global testsuite_pkg_name mozilla-%{name}-testresults
+%package -n %{testsuite_pkg_name}
+Summary: Results of testsuite
+%description -n %{testsuite_pkg_name}
+This package contains results of tests executed during build.
+%files -n %{testsuite_pkg_name}
+/test_results
+%endif
+
 #---------------------------------------------------------------------
 
 %prep
-%setup -q -c
-cd %{tarballdir}
-
-# Build patches
-# We have to keep original patch backup extension to go thru configure without problems with tests
-%patch0 -p1 -b .orig
-%patch5 -p1 -b .jemalloc-ppc.patch
-%patch6 -p1 -b .webrtc-arch-cpu
-%patch8 -p2 -b .ppc64le
-#ALREADY %patch19 -p1 -b .skia-endian
-%patch20 -p1 -b .s390-atomic
-%patch22 -p1 -b .missing-getrandom
-%patch23 -p1 -b .nss-version
-%patch24 -p1 -b .nss-prbool
-%patch25 -p1 -b .s390-missing-include
-
-# RPM specific patches
-%patch101 -p1 -b .default
-%patch102 -p1 -b .addons
-%patch103 -p1 -b .rhbz-966424
-%patch106 -p2 -b .plugins
-%patch110 -p1 -b .moz-1170092-etc-conf
-%patch111 -p2 -b .rhbz-1173156
-%patch112 -p1 -b .mozbz-256180
-%patch114 -p1 -b .rhbz-1423012
-%patch116 -p1 -b .mozbz-1005640-accept-lang
+%setup -q -T -c -n python -a 100
+%setup -q -n %{tarballdir}
+# Build patches, can't change backup suffix from default because during build
+# there is a compare of config and js/config directories and .orig suffix is
+# ignored during this compare.
+
+%patch29 -p1 -b .big-endian
+%patch37 -p1 -b .jit-atomic-lucky
+%patch40 -p1 -b .aarch64-skia
+%if %{?debug_build}
+%patch41 -p1 -b .build-debug-qcms
+%endif
+%patch43 -p1 -b .jemalloc-ppc
+# Disable DBus remote on RHEL6 as it does not build here.
+%if 0%{?rhel} == 6
+%patch44 -p1 -b .disable-dbus-remote
+%endif
 
-# Upstream patches
-#%patch201 -p1 -b .mozbz-1005535 see Patch201 comment
-%patch202 -p1 -b .mozbz-1152515
-%patch203 -p1 -b .mozbz-1324096
+%patch3  -p1 -b .arm
+%patch4  -p1 -b .build-mozconfig-fix
+%patch5  -p1 -b .gdk-version
+%patch6  -p1 -b .nss-version
+
+# Fedora patches
+%patch215 -p1 -b .addons
+%patch219 -p2 -b .rhbz-1173156
+%patch221 -p2 -b .fedora-ua
+%patch224 -p1 -b .1170092
+%patch225 -p1 -b .1005640-accept-lang
+
+# This ensures no migration of certdb to sqlite on the RHEL6 and RHEL7.
+# This needs to stay for the future releases
+%if 0%{?rhel} < 8
+%patch230 -p1 -b .1503632-nss
+%endif
 
-# RHEL7 only patches
-%if %{?rhel} == 7
+#ARM run-time patch
+%ifarch aarch64
+%patch226 -p1 -b .1354671
 %endif
 
-#%if %{?rhel} == 6
-#HOPEFULY FIXED %patch401 -p1 -b .harfbuzz-old-glib
-#%endif
+%patch402 -p1 -b .1196777
+%patch406 -p1 -b .256180
+%patch413 -p1 -b .1353817
+%patch415 -p1 -b .1436242
 
 # Patch for big endian platforms only
 %if 0%{?big_endian}
-%patch21 -p1 -b .s390-atomic
+%patch26 -p1 -b .icu
 %endif
 
 %{__rm} -f .mozconfig
 %{__cp} %{SOURCE10} .mozconfig
+%if %{official_branding}
+echo "ac_add_options --enable-official-branding" >> .mozconfig
+%endif
 %{__cp} %{SOURCE24} mozilla-api-key
+%{__cp} %{SOURCE27} google-api-key
 
-function add_to_mozconfig() {
-  mozconfig_entry=$1
-  echo "ac_add_options --$1" >> .mozconfig
-}
+%if %{?system_nss}
+echo "ac_add_options --with-system-nspr" >> .mozconfig
+echo "ac_add_options --with-system-nss" >> .mozconfig
+%else
+echo "ac_add_options --without-system-nspr" >> .mozconfig
+echo "ac_add_options --without-system-nss" >> .mozconfig
+%endif
 
-# Modify mozconfig file
-%if %{official_branding}
- add_to_mozconfig "enable-official-branding"
+%if %{?system_sqlite}
+echo "ac_add_options --enable-system-sqlite" >> .mozconfig
+%else
+echo "ac_add_options --disable-system-sqlite" >> .mozconfig
 %endif
 
-%if %{?use_gtk3}
- add_to_mozconfig "enable-default-toolkit=cairo-gtk3"
+%if %{?system_cairo}
+echo "ac_add_options --enable-system-cairo" >> .mozconfig
 %else
- add_to_mozconfig "enable-default-toolkit=cairo-gtk2"
+echo "ac_add_options --disable-system-cairo" >> .mozconfig
 %endif
 
-%if %{?system_sqlite}
- add_to_mozconfig "enable-system-sqlite"
+%if 0%{?use_bundled_ffi}
+echo "ac_add_options --enable-system-ffi" >> .mozconfig
+%endif
+%if 0%{?system_ffi}
+echo "ac_add_options --enable-system-ffi" >> .mozconfig
+%endif
+
+%ifarch %{arm}
+echo "ac_add_options --disable-elf-hack" >> .mozconfig
+%endif
+
+%if %{?system_hunspell}
+echo "ac_add_options --enable-system-hunspell" >> .mozconfig
 %else
- add_to_mozconfig "disable-system-sqlite"
+echo "ac_add_options --disable-system-hunspell" >> .mozconfig
 %endif
 
-%if %{?system_nss}
- add_to_mozconfig "with-system-nspr"
- add_to_mozconfig "with-system-nss"
+%if %{?debug_build}
+echo "ac_add_options --enable-debug" >> .mozconfig
+echo "ac_add_options --disable-optimize" >> .mozconfig
+%else
+%global optimize_flags "none"
+# Fedora 26 (gcc7) needs to disable default build flags (mozbz#1342344)
+%if 0%{?fedora} > 25
+%ifnarch s390 s390x
+%global optimize_flags "-g -O2"
+%endif
+%endif
+%ifarch armv7hl
+# ARMv7 need that (rhbz#1426850)
+%global optimize_flags "-g -O2 -fno-schedule-insns"
+%endif
+%ifarch ppc64le aarch64
+%global optimize_flags "-g -O2"
+%endif
+%if %{optimize_flags} != "none"
+echo 'ac_add_options --enable-optimize=%{?optimize_flags}' >> .mozconfig
 %else
- add_to_mozconfig "without-system-nspr"
- add_to_mozconfig "without-system-nss"
+echo 'ac_add_options --enable-optimize' >> .mozconfig
+%endif
+echo "ac_add_options --disable-debug" >> .mozconfig
 %endif
 
-# RHEL 7 mozconfig changes:
-%if 0%{rhel} >= 6
- add_to_mozconfig "enable-startup-notification"
- add_to_mozconfig "enable-jemalloc"
+# Second arches fail to start with jemalloc enabled
+%ifnarch %{ix86} x86_64
+echo "ac_add_options --disable-jemalloc" >> .mozconfig
 %endif
 
-# RHEL 6
-%if 0%{rhel} == 6
- # Disable dbus, because we're unable to build with its support in brew
- add_to_mozconfig "disable-dbus"
- # ctypes require system libffi for these platforms and RHEL6 does not have libffi >= 3.0.9 available
- %ifarch ppc64 ppc64le ppc s390 s390x
-  add_to_mozconfig "disable-ctypes"
- %endif
+%ifnarch %{ix86} x86_64
+echo "ac_add_options --disable-webrtc" >> .mozconfig
 %endif
 
-%ifarch aarch64 ppc64 ppc64le ppc s390 s390x
- add_to_mozconfig "disable-ion"
+%if !%{enable_mozilla_crashreporter}
+echo "ac_add_options --disable-crashreporter" >> .mozconfig
 %endif
 
-%ifarch aarch64 ppc ppc64 s390 s390x
- add_to_mozconfig "disable-skia"
+%if %{?run_tests}
+echo "ac_add_options --enable-tests" >> .mozconfig
 %endif
 
-# Debug build flags
-%if %{?debug_build}
- add_to_mozconfig "enable-debug"
- add_to_mozconfig "disable-optimize"
+%if !%{?system_jpeg}
+echo "ac_add_options --without-system-jpeg" >> .mozconfig
 %else
- add_to_mozconfig "disable-debug"
- add_to_mozconfig "enable-optimize"
+echo "ac_add_options --with-system-jpeg" >> .mozconfig
 %endif
 
-%if %{?with_intl_api}
- add_to_mozconfig "with-intl-api"
+%if %{?system_libvpx}
+echo "ac_add_options --with-system-libvpx" >> .mozconfig
 %else
- add_to_mozconfig "without-intl-api"
+echo "ac_add_options --without-system-libvpx" >> .mozconfig
 %endif
-#TODO reconsider this, really needed for RHEL7 or even RHEL6? Disabling this 
-#also require to disable-fmp4 and most likely disable-eme
-#Disabled due to rhbz#1330898
-#add_to_mozconfig "disable-ffmpeg"
 
-#TODO what's this?
-#FIXME RTTI?? RHEL5/6
-# ac_add_options --enable-cpp-rtti
-# RHEL7: ac_add_options --with-system-bz2
-# RHEL5: never been there, but is it usable --enable-gnomeui ????
+%if %{?system_libicu}
+echo "ac_add_options --with-system-icu" >> .mozconfig
+%else
+echo "ac_add_options --without-system-icu" >> .mozconfig
+%endif
+%ifarch s390 s390x
+echo "ac_add_options --disable-ion" >> .mozconfig
+%endif
 
-%if %{use_bundled_python}
- # Prepare Python 2.7 sources
- tar xf %{SOURCE200}
+%ifarch %{ix86}
+echo "ac_add_options --disable-stylo" >> .mozconfig
+%endif
+%if 0%{?rhel} == 6
+echo "ac_add_options --disable-stylo" >> .mozconfig
 %endif
 
+# Remove executable bit to make brp-mangle-shebangs happy.
+chmod -x third_party/rust/itertools/src/lib.rs
+
 #---------------------------------------------------------------------
 
 %build
 
+#GTK3 >>
+%if ! 0%{?avoid_bundled_rebuild}
+    rm -rf %{_buildrootdir}/*
+%endif
+export PATH="%{_buildrootdir}/bin:$PATH"
+
+function install_rpms_to_current_dir() {
+    PACKAGE_RPM=$(eval echo $1)
+    PACKAGE_DIR=%{_rpmdir}
+
+    if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then
+        # Hack for tps tests
+        ARCH_STR=%{_arch}
+        %ifarch i386 i686
+            ARCH_STR="i?86"
+        %endif
+        PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR"
+     fi
+
+     for package in $(ls $PACKAGE_DIR/$PACKAGE_RPM)
+     do
+         echo "$package"
+         rpm2cpio "$package" | cpio -idu
+     done
+}
+
 function build_bundled_package() {
   PACKAGE_RPM=$1
   PACKAGE_FILES=$2
@@ -501,7 +574,7 @@ function build_bundled_package() {
   PACKAGE_DIR="%{_topdir}/RPMS"
 
   PACKAGE_ALREADY_BUILD=0
-  %if %{do_not_clean_rpms}
+  %if %{?avoid_bundled_rebuild}
     if ls $PACKAGE_DIR/$PACKAGE_RPM; then
       PACKAGE_ALREADY_BUILD=1
     fi
@@ -526,7 +599,7 @@ function build_bundled_package() {
   echo "Installing $PACKAGE_DIR/$PACKAGE_RPM"; echo "==============================="
   rpm2cpio $PACKAGE_DIR/$PACKAGE_RPM | cpio -iduv
   # Clean rpms to avoid including them to package
-  %if ! %{do_not_clean_rpms}0
+  %if ! 0%{?avoid_bundled_rebuild}
     rm -f $PACKAGE_FILES
   %endif
 
@@ -543,55 +616,71 @@ function build_bundled_package() {
   build_bundled_package 'yasm-1*.rpm' 'yasm-*.rpm' '%{SOURCE301}'
 %endif
 
-# Install local binutils if needed
-# ======================================
-%if 0%{?use_bundled_binutils}
-  build_bundled_package 'binutils-2*.rpm' 'binutils*.rpm' '%{SOURCE302}'
-%endif
 
-# Install local GCC if needed
-# ======================================
-%if %{use_bundled_gcc}
-  build_bundled_package 'gcc48-%{gcc_version}*.rpm' 'gcc48-*.rpm' '%{SOURCE300}'
-  export CXX=g++
+%if 0%{?bundle_gtk3}
+   %if ! 0%{?avoid_bundled_rebuild}
+    rpm -ivh %{SOURCE200}
+    rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' -ba %{_specdir}/gtk3-private.spec
+   %endif
+   rm -rf %{_buildrootdir}/*
+   pushd %{_buildrootdir}
+   install_rpms_to_current_dir gtk3-private-%{gtk3_nvr}*.rpm
+   install_rpms_to_current_dir gtk3-private-devel-%{gtk3_nvr}*.rpm
+   install_rpms_to_current_dir gtk3-private-rpm-scripts-%{gtk3_nvr}*.rpm
+   popd
 %endif
 
+# If needed build the bundled python 2.7 and put it in the PATH
+if [ $(python --version 2>&1 | awk '{ print substr ($2, 0, 3) }') = "2.6" ]; then
+    pushd %{_builddir}/python/Python-%{bundled_python_version}
+    #if ! 0%{?avoid_bundled_rebuild}
+        # Build Python 2.7 and set environment
+        ./configure --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib"
+    #endif
+    make %{?_smp_mflags} install V=1
+    popd
+fi
 
-# Install local Python if needed
-# ======================================
-%if %{use_bundled_python}
-    echo "Rebuilding Python"; echo "==============================="
-  pushd %{tarballdir}
-
-  # Build Python 2.7 and set environment
-  BUILD_DIR=`pwd`/python_build
-  cd Python-%{python_version}
-  ./configure --prefix=$BUILD_DIR --exec-prefix=$BUILD_DIR
-  make
-  make install
-  cd -
-
-  PATH=$BUILD_DIR/bin:$PATH
-  export PATH
+%if 0%{?bundle_gtk3}
+# gtk3-private-3.22.26.el6-1-requires-provides-filter.inc
+%include_file %{SOURCE206}
+%endif
+%if 0%{use_bundled_ffi}
+  # Install libraries to the predefined location to later add them to the Firefox libraries
+  rpm -ivh %{SOURCE303}
+  rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' -ba %{_specdir}/libffi.spec
+  pushd %{_buildrootdir}
+  install_rpms_to_current_dir 'libffi*.rpm'
   popd
-%endif # bundled Python
+  %filter_from_requires /libffi.so.6/d
+%endif
+%filter_setup
+
+# GTK3 <<
 
 %if %{?system_sqlite}
-  # Do not proceed with build if the sqlite require would be broken:
-  # make sure the minimum requirement is non-empty, ...
-  sqlite_version=$(expr "%{sqlite_version}" : '\([0-9]*\.\)[0-9]*\.') || exit 1
-  # ... and that major number of the computed build-time version matches:
-  case "%{sqlite_build_version}" in
-    "$sqlite_version"*) ;;
-    *) exit 1 ;;
-  esac
+# Do not proceed with build if the sqlite require would be broken:
+# make sure the minimum requirement is non-empty, ...
+sqlite_version=$(expr "%{sqlite_version}" : '\([0-9]*\.\)[0-9]*\.') || exit 1
+# ... and that major number of the computed build-time version matches:
+case "%{sqlite_build_version}" in
+  "$sqlite_version"*) ;;
+  *) exit 1 ;;
+esac
 %endif
 
-echo "Building Firefox"; echo "==============================="
-cd %{tarballdir}
+# We need to disable exit on error temporarily for the following scripts:
+set +e
+%if 0%{?use_dts}
+source scl_source enable devtoolset-%{dts_version}
+%endif
+%if 0%{?use_rustts}
+source scl_source enable rust-toolset-%{rst_version}
+%endif
 
-# Hack for missing shell when building in brew on RHEL6 and RHEL5
-%if 0%{?rhel} <= 6
+set -e
+# Hack for missing shell when building in brew on RHEL6
+%if 0%{?rhel} == 6
 export SHELL=/bin/sh
 %endif
 
@@ -602,131 +691,259 @@ echo "Generate big endian version of config/external/icu/data/icud58l.dat"
   rm -f config/external/icu/data/icudt*l.dat
 %endif
 
-
-# 1. Mozilla builds with -Wall with exception of a few warnings which show up
-#    everywhere in the code; so, don't override that.
-# 2. -Werror=format-security causes build failures when -Wno-format is explicitly given
-#    for some sources
-MOZ_OPT_FLAGS=$(echo "$RPM_OPT_FLAGS -fpermissive -Wformat-security -Wformat -Werror=format-security" | %{__sed} -e 's/-Wall//')
-
-# TODO check if necessery
+# Update the various config.guess to upstream release for aarch64 support
+find ./ -name config.guess -exec cp /usr/lib/rpm/config.guess {} ';'
+
+# -fpermissive is needed to build with gcc 4.6+ which has become stricter
+#
+# Mozilla builds with -Wall with exception of a few warnings which show up
+# everywhere in the code; so, don't override that.
+#
+# Disable C++ exceptions since Mozilla code is not exception-safe
+#
+MOZ_OPT_FLAGS=$(echo "%{optflags}" | %{__sed} -e 's/-Wall//')
+#rhbz#1037063
+# -Werror=format-security causes build failures when -Wno-format is explicitly given
+# for some sources
+# Explicitly force the hardening flags for Firefox so it passes the checksec test;
+# See also https://fedoraproject.org/wiki/Changes/Harden_All_Packages
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security"
+%if 0%{?fedora} > 23
+# Disable null pointer gcc6 optimization in gcc6 (rhbz#1328045)
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fno-delete-null-pointer-checks"
+%endif
+# Use hardened build?
+%if %{?hardened_build}
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now"
+%endif
+%if %{?debug_build}
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//')
+%endif
 %ifarch s390
 MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/')
+# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which
+# overrides the -g1 from line above and breaks building on s390
+# (OOM when linking, rhbz#1238225)
+export MOZ_DEBUG_FLAGS=" "
 %endif
-
-# Avoid failing builds because OOM killer on some arches
-%ifarch s390 %{arm} ppc
-MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
-%endif
-
-%if %{rhel} == 6
-  %if %{system_libatomic}
-    MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -l:libatomic.so.1"
-  %endif
+%ifarch s390 %{arm} ppc aarch64 i686
+MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
 %endif
-
-%if %{?debug_build}
-  MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//')
+%ifarch %{arm}
+export RUSTFLAGS="-Cdebuginfo=0"
 %endif
-
-export CFLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-fpermissive//')
+export CFLAGS=$MOZ_OPT_FLAGS
 export CXXFLAGS=$MOZ_OPT_FLAGS
-export LDFLAGS="-Wl,--verbose $MOZ_LINK_FLAGS"
+export LDFLAGS=$MOZ_LINK_FLAGS
 
 export PREFIX='%{_prefix}'
 export LIBDIR='%{_libdir}'
 
 MOZ_SMP_FLAGS=-j1
+# On x86 architectures, Mozilla can build up to 4 jobs at once in parallel,
+# however builds tend to fail on other arches when building in parallel.
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le aarch64
 [ -z "$RPM_BUILD_NCPUS" ] && \
      RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
 [ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
 [ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4
 [ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8
+%endif
+
+%if 0%{?bundle_gtk3}
+# gtk3-private-setup-flags-env.inc
+%include_file %{SOURCE205}
+%endif
+
+#make -f client.mk build STRIP="/bin/true" MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS" MOZ_SERVICES_SYNC="1"
+export MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS"
+export MOZ_SERVICES_SYNC="1"
+export STRIP=/bin/true
+./mach build -v
+
+# create debuginfo for crash-stats.mozilla.com
+%if %{enable_mozilla_crashreporter}
+#cd %{moz_objdir}
+make -C objdir buildsymbols
+%endif
 
-MOZ_APP_DIR=%{_libdir}/%{name}
+%if %{?run_tests}
+%if %{?system_nss}
+ln -s /usr/bin/certutil objdir/dist/bin/certutil
+ln -s /usr/bin/pk12util objdir/dist/bin/pk12util
 
-make -f client.mk build STRIP="/bin/true" MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS"
+%endif
+mkdir test_results
+./mach --log-no-times check-spidermonkey &> test_results/check-spidermonkey || true
+./mach --log-no-times check-spidermonkey &> test_results/check-spidermonkey-2nd-run || true
+./mach --log-no-times cppunittest &> test_results/cppunittest || true
+xvfb-run ./mach --log-no-times crashtest &> test_results/crashtest || true
+./mach --log-no-times gtest &> test_results/gtest || true
+xvfb-run ./mach --log-no-times jetpack-test &> test_results/jetpack-test || true
+# not working right now ./mach marionette-test &> test_results/marionette-test || true
+xvfb-run ./mach --log-no-times mochitest-a11y &> test_results/mochitest-a11y || true
+xvfb-run ./mach --log-no-times mochitest-browser &> test_results/mochitest-browser || true
+xvfb-run ./mach --log-no-times mochitest-chrome &> test_results/mochitest-chrome || true
+xvfb-run ./mach --log-no-times mochitest-devtools &> test_results/mochitest-devtools || true
+xvfb-run ./mach --log-no-times mochitest-plain &> test_results/mochitest-plain || true
+xvfb-run ./mach --log-no-times reftest &> test_results/reftest || true
+xvfb-run ./mach --log-no-times webapprt-test-chrome &> test_results/webapprt-test-chrome || true
+xvfb-run ./mach --log-no-times webapprt-test-content &> test_results/webapprt-test-content || true
+./mach --log-no-times webidl-parser-test &> test_results/webidl-parser-test || true
+xvfb-run ./mach --log-no-times xpcshell-test &> test_results/xpcshell-test || true
+%if %{?system_nss}
+rm -f  objdir/dist/bin/certutil
+rm -f  objdir/dist/bin/pk12util
+%endif
 
+%endif
 #---------------------------------------------------------------------
 
 %install
-# Hack for missing shell when building in brew on RHEL6 and RHEL5
-%if 0%{?rhel} <= 6
+%if 0%{?rhel} == 6
 export SHELL=/bin/sh
 %endif
 
-cd %{tarballdir}
-%{__rm} -rf $RPM_BUILD_ROOT
+%if 0%{?bundle_gtk3}
+function install_rpms_to_current_dir() {
+    PACKAGE_RPM=$(eval echo $1)
+    PACKAGE_DIR=%{_rpmdir}
+
+    if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then
+        # Hack for tps tests
+        ARCH_STR=%{_arch}
+        %ifarch i386 i686
+            ARCH_STR="i?86"
+        %endif
+        PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR"
+     fi
+
+     for package in $(ls $PACKAGE_DIR/$PACKAGE_RPM)
+     do
+         echo "$package"
+         rpm2cpio "$package" | cpio -idu
+     done
+}
+
+pushd %{buildroot}
+# Install gtk3-private again to the buildroot, but without devel subpackage
+install_rpms_to_current_dir gtk3-private-%{gtk3_nvr}*.rpm
+install_rpms_to_current_dir gtk3-private-rpm-scripts-%{gtk3_nvr}*.rpm
+popd
+%endif
+
+# Install bundled libffi
+%if %{use_bundled_ffi}
+  pushd %{buildroot}
+  install_rpms_to_current_dir libffi-3*.rpm
+  popd
+%endif
 
 # set up our default bookmarks
-%{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/defaults/profile/bookmarks.html
+%{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/en-US/locale/browser/bookmarks.html
 
 # Make sure locale works for langpacks
 %{__cat} > objdir/dist/bin/browser/defaults/preferences/firefox-l10n.js << EOF
 pref("general.useragent.locale", "chrome://global/locale/intl.properties");
 EOF
 
+DESTDIR=%{buildroot} make -C objdir install
 
-DESTDIR=$RPM_BUILD_ROOT make -C objdir install
-
-%{__mkdir_p} $RPM_BUILD_ROOT{%{_libdir},%{_bindir},%{_datadir}/applications}
+%{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications}
 
-desktop-file-install \
-  --dir $RPM_BUILD_ROOT%{_datadir}/applications \
-  --add-category WebBrowser \
-  --add-category Network \
-  %{SOURCE20}
+desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20}
 
-# Set up the firefox start script, unfortunatelly it is different for each RHEL
-rm -rf $RPM_BUILD_ROOT%{_bindir}/firefox
-FIREFOX_SH_SOURCE=%{SOURCE700}
-%if %{rhel} == 6
-  FIREFOX_SH_SOURCE=%{SOURCE600}
-%endif
-cp $FIREFOX_SH_SOURCE $RPM_BUILD_ROOT%{_bindir}/firefox
-%{__chmod} 755 $RPM_BUILD_ROOT%{_bindir}/firefox
+# set up the firefox start script
+%{__rm} -rf %{buildroot}%{_bindir}/firefox
+%{__cat} %{SOURCE21} > %{buildroot}%{_bindir}/firefox
+%{__chmod} 755 %{buildroot}%{_bindir}/firefox
 
-# Installing man page
-%{__install} -p -D -m 644 %{SOURCE23} $RPM_BUILD_ROOT%{_mandir}/man1/firefox.1
+%{__install} -p -D -m 644 %{SOURCE23} %{buildroot}%{_mandir}/man1/firefox.1
 
-%{__rm} -f $RPM_BUILD_ROOT/%{mozappdir}/firefox-config
+%{__rm} -f %{buildroot}/%{mozappdir}/firefox-config
+%{__rm} -f %{buildroot}/%{mozappdir}/update-settings.ini
 
 for s in 16 22 24 32 48 256; do
-    %{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps
+    %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps
     %{__cp} -p browser/branding/official/default${s}.png \
-               $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/${s}x${s}/apps/firefox.png
+               %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/firefox.png
 done
 
-echo > ../%{name}.lang
+# Install hight contrast icon
+%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+%{__cp} -p %{SOURCE25} \
+           %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+
+# Register as an application to be visible in the software center
+#
+# NOTE: It would be *awesome* if this file was maintained by the upstream
+# project, translated and installed into the right place during `make install`.
+#
+# See http://www.freedesktop.org/software/appstream/docs/ for more details.
+#
+%{__mkdir_p} %{buildroot}%{_datadir}/appdata
+cat > %{buildroot}%{_datadir}/appdata/%{name}.appdata.xml <<EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright 2014 Richard Hughes <richard@hughsie.com> -->
+<!--
+BugReportURL: https://bugzilla.mozilla.org/show_bug.cgi?id=1071061
+SentUpstream: 2014-09-22
+-->
+<application>
+  <id type="desktop">firefox.desktop</id>
+  <metadata_license>CC0-1.0</metadata_license>
+  <description>
+    <p>
+      Bringing together all kinds of awesomeness to make browsing better for you.
+      Get to your favorite sites quickly – even if you don’t remember the URLs.
+      Type your term into the location bar (aka the Awesome Bar) and the autocomplete
+      function will include possible matches from your browsing history, bookmarked
+      sites and open tabs.
+    </p>
+    <!-- FIXME: Needs another couple of paragraphs -->
+  </description>
+  <url type="homepage">http://www.mozilla.org/</url>
+  <screenshots>
+    <screenshot type="default">https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/firefox/a.png</screenshot>
+    <screenshot>https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/firefox/b.png</screenshot>
+    <screenshot>https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/firefox/c.png</screenshot>
+  </screenshots>
+  <!-- FIXME: change this to an upstream email address for spec updates
+  <updatecontact>someone_who_cares@upstream_project.org</updatecontact>
+   -->
+</application>
+EOF
+
+echo > %{name}.lang
 %if %{build_langpacks}
 # Extract langpacks, make any mods needed, repack the langpack, and install it.
-%{__mkdir_p} $RPM_BUILD_ROOT%{langpackdir}
-%{__xz} -dc %{SOURCE1} | %{__tar} xf -
+%{__mkdir_p} %{buildroot}%{langpackdir}
+%{__tar} xf %{SOURCE1}
 for langpack in `ls firefox-langpacks/*.xpi`; do
   language=`basename $langpack .xpi`
   extensionID=langpack-$language@firefox.mozilla.org
   %{__mkdir_p} $extensionID
-  unzip $langpack -d $extensionID
+  unzip -qq $langpack -d $extensionID
   find $extensionID -type f | xargs chmod 644
 
   cd $extensionID
-  zip -r9mX ../${extensionID}.xpi *
+  zip -qq -r9mX ../${extensionID}.xpi *
   cd -
 
-  %{__install} -m 644 ${extensionID}.xpi $RPM_BUILD_ROOT%{langpackdir}
+  %{__install} -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir}
   language=`echo $language | sed -e 's/-/_/g'`
-  echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> ../%{name}.lang
+  echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> %{name}.lang
 done
 %{__rm} -rf firefox-langpacks
 
 # Install langpack workaround (see #707100, #821169)
 function create_default_langpack() {
-  language_long=$1
-  language_short=$2
-  cd $RPM_BUILD_ROOT%{langpackdir}
-  ln -s langpack-$language_long@firefox.mozilla.org.xpi langpack-$language_short@firefox.mozilla.org.xpi
-  cd -
-  echo "%%lang($language_short) %{langpackdir}/langpack-$language_short@firefox.mozilla.org.xpi" >> ../%{name}.lang
+language_long=$1
+language_short=$2
+cd %{buildroot}%{langpackdir}
+ln -s langpack-$language_long@firefox.mozilla.org.xpi langpack-$language_short@firefox.mozilla.org.xpi
+cd -
+echo "%%lang($language_short) %{langpackdir}/langpack-$language_short@firefox.mozilla.org.xpi" >> %{name}.lang
 }
 
 # Table of fallbacks for each language
@@ -747,58 +964,55 @@ create_default_langpack "zh-TW" "zh"
 %endif # build_langpacks
 
 # Keep compatibility with the old preference location.
-%{__mkdir_p} $RPM_BUILD_ROOT/%{mozappdir}/defaults/preferences
-%{__mkdir_p} $RPM_BUILD_ROOT/%{mozappdir}/browser/defaults
+%{__mkdir_p} %{buildroot}%{mozappdir}/defaults/preferences
+%{__mkdir_p} %{buildroot}%{mozappdir}/browser/defaults
 ln -s %{mozappdir}/defaults/preferences $RPM_BUILD_ROOT/%{mozappdir}/browser/defaults/preferences
-
-# Install default ones
-%{__cp} %{SOURCE12} ${RPM_BUILD_ROOT}%{mozappdir}/defaults/preferences/all-redhat.js
-# Modify preset preferences
-%if %{use_baselinejit}
-  echo 'pref("javascript.options.baselinejit",      true);'  >> ${RPM_BUILD_ROOT}%{mozappdir}/defaults/preferences/all-redhat.js
-%else
-  echo '/* Workaround for rhbz#1134876 */'                   >> ${RPM_BUILD_ROOT}%{mozappdir}/defaults/preferences/all-redhat.js
-  echo 'pref("javascript.options.baselinejit",      false);' >> ${RPM_BUILD_ROOT}%{mozappdir}/defaults/preferences/all-redhat.js
-%endif
+# Default preferences
+%{__cp} %{SOURCE12} %{buildroot}%{mozappdir}/defaults/preferences/all-redhat.js
 
 # System config dir
-%{__mkdir_p} $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}/pref
+%{__mkdir_p} %{buildroot}/%{_sysconfdir}/%{name}/pref
 
 # System extensions
-%{__mkdir_p} $RPM_BUILD_ROOT%{_datadir}/mozilla/extensions/%{firefox_app_id}
-%{__mkdir_p} $RPM_BUILD_ROOT%{_libdir}/mozilla/extensions/%{firefox_app_id}
+%{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_app_id}
+%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_app_id}
 
 # Copy over the LICENSE
-%{__install} -p -c -m 644 LICENSE $RPM_BUILD_ROOT/%{mozappdir}
+%{__install} -p -c -m 644 LICENSE %{buildroot}/%{mozappdir}
+
+# Use the system hunspell dictionaries
+%{__rm} -rf %{buildroot}%{mozappdir}/dictionaries
+ln -s %{_datadir}/myspell %{buildroot}%{mozappdir}/dictionaries
+
+# Enable crash reporter for Firefox application
+%if %{enable_mozilla_crashreporter}
+sed -i -e "s/\[Crash Reporter\]/[Crash Reporter]\nEnabled=1/" %{buildroot}/%{mozappdir}/application.ini
+# Add debuginfo for crash-stats.mozilla.com
+%{__mkdir_p} %{buildroot}/%{moz_debug_dir}
+%{__cp} objdir/dist/%{symbols_file_name} %{buildroot}/%{moz_debug_dir}
+%endif
 
-# Use the system dictionaries for system hunspell
-%{__rm} -rf ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries
-ln -s %{_datadir}/myspell ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries
+%if %{run_tests}
+# Add debuginfo for crash-stats.mozilla.com
+%{__mkdir_p} %{buildroot}/test_results
+%{__cp} test_results/* %{buildroot}/test_results
+%endif
 
-# Clean firefox-devel debuginfo
-rm -rf %{_prefix}/lib/debug/lib/%{name}-devel-*
-rm -rf %{_prefix}/lib/debug/lib64/%{name}-devel-*
 
-#---------------------------------------------------------------------
+# Copy over run-mozilla.sh
+%{__cp} build/unix/run-mozilla.sh %{buildroot}%{mozappdir}
 
-%clean
-%{__rm} -rf $RPM_BUILD_ROOT
+# Add distribution.ini
+%{__mkdir_p} %{buildroot}%{mozappdir}/distribution
+%{__cp} %{SOURCE26} %{buildroot}%{mozappdir}/distribution
 
+# Remove copied libraries to speed up build
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozjs.so
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozalloc.so
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libxul.so
 #---------------------------------------------------------------------
 
-%post
-update-desktop-database &> /dev/null || :
-touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
-if [ -x %{_bindir}/gtk-update-icon-cache ]; then
-  %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
-fi
 
-%postun
-if [ $1 -eq 0 ] ; then
-    touch --no-create %{_datadir}/icons/hicolor &>/dev/null
-    gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
-fi
-update-desktop-database &> /dev/null || :
 
 %preun
 # is it a final removal?
@@ -806,105 +1020,165 @@ if [ $1 -eq 0 ]; then
   %{__rm} -rf %{mozappdir}/components
   %{__rm} -rf %{mozappdir}/extensions
   %{__rm} -rf %{mozappdir}/plugins
+  %{__rm} -rf %{langpackdir}
 fi
 
+%clean
+rm -rf %{_srcrpmdir}/gtk3-private-%{gtk3_nvr}*.src.rpm
+find %{_rpmdir} -name "gtk3-private-*%{gtk3_nvr}*.rpm" -delete
+rm -rf %{_srcrpmdir}/libffi*.src.rpm
+find %{_rpmdir} -name "libffi*.rpm" -delete
+
+%post
+update-desktop-database &> /dev/null || :
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+%if 0%{?bundle_gtk3}
+# gtk3-private-post.inc
+%include_file %{SOURCE201}
+%endif
+
+%postun
+update-desktop-database &> /dev/null || :
+if [ $1 -eq 0 ] ; then
+    touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+    gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+%if 0%{?bundle_gtk3}
+# gtk3-private-postun.inc
+%include_file %{SOURCE202}
+%endif
+
 %posttrans
 gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+%if 0%{?bundle_gtk3}
+# gtk3-private-posttrans.inc
+%include_file %{SOURCE203}
+%endif
 
 %files -f %{name}.lang
-%defattr(-,root,root,-)
 %{_bindir}/firefox
+%{mozappdir}/firefox
+%{mozappdir}/firefox-bin
 %doc %{_mandir}/man1/*
+%dir %{_sysconfdir}/%{name}
 %dir %{_sysconfdir}/%{name}/*
-%dir %{_datadir}/mozilla/extensions/%{firefox_app_id}
-%dir %{_libdir}/mozilla/extensions/%{firefox_app_id}
-%{_datadir}/icons/hicolor/16x16/apps/firefox.png
-%{_datadir}/icons/hicolor/48x48/apps/firefox.png
-%{_datadir}/icons/hicolor/22x22/apps/firefox.png
-%{_datadir}/icons/hicolor/24x24/apps/firefox.png
-%{_datadir}/icons/hicolor/256x256/apps/firefox.png
-%{_datadir}/icons/hicolor/32x32/apps/firefox.png
-%{_datadir}/applications/%{name}.desktop
+%dir %{_datadir}/mozilla/extensions/*
+%dir %{_libdir}/mozilla/extensions/*
+%{_datadir}/appdata/*.appdata.xml
+%{_datadir}/applications/*.desktop
 %dir %{mozappdir}
 %doc %{mozappdir}/LICENSE
 %{mozappdir}/browser/chrome
 %{mozappdir}/browser/chrome.manifest
-%{mozappdir}/browser/features/aushelper@mozilla.org.xpi
-%{mozappdir}/browser/features/e10srollout@mozilla.org.xpi
-%{mozappdir}/browser/features/firefox@getpocket.com.xpi
-%{mozappdir}/browser/features/webcompat@mozilla.org.xpi
-#gone %{mozappdir}/browser/features/disableSHA1rollout@mozilla.org.xpi
-#gone %dir %{mozappdir}/browser/components
-#gone %{mozappdir}/browser/components/*.so
-#gone %{mozappdir}/browser/components/*.manifest
+%{mozappdir}/defaults/preferences/*
+%{mozappdir}/browser/defaults/preferences
+%{mozappdir}/browser/features/*.xpi
+%{mozappdir}/distribution/distribution.ini
+# That's Windows only
+%ghost %{mozappdir}/browser/features/aushelper@mozilla.org.xpi
 %attr(644, root, root) %{mozappdir}/browser/blocklist.xml
 %dir %{mozappdir}/browser/extensions
-%{mozappdir}/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi
-# gone %{mozappdir}/browser/features/loop@mozilla.org.xpi
-%dir %{mozappdir}/langpacks
-%{mozappdir}/browser/icons
+%{mozappdir}/browser/extensions/*
+%if %{build_langpacks}
+%dir %{langpackdir}
+%endif
 %{mozappdir}/browser/omni.ja
-%{mozappdir}/firefox
-%{mozappdir}/firefox-bin
+%{mozappdir}/chrome.manifest
 %{mozappdir}/run-mozilla.sh
 %{mozappdir}/application.ini
-%{mozappdir}/defaults/preferences/*
-%{mozappdir}/browser/defaults/preferences
+%{mozappdir}/pingsender
 %exclude %{mozappdir}/removed-files
-# gone %{mozappdir}/webapprt-stub
-# gone %dir %{mozappdir}/webapprt
-# g %{mozappdir}/webapprt/omni.ja
-# g %{mozappdir}/webapprt/webapprt.ini
-%{mozappdir}/dictionaries
+%{_datadir}/icons/hicolor/16x16/apps/firefox.png
+%{_datadir}/icons/hicolor/22x22/apps/firefox.png
+%{_datadir}/icons/hicolor/24x24/apps/firefox.png
+%{_datadir}/icons/hicolor/256x256/apps/firefox.png
+%{_datadir}/icons/hicolor/32x32/apps/firefox.png
+%{_datadir}/icons/hicolor/48x48/apps/firefox.png
+%{_datadir}/icons/hicolor/symbolic/apps/firefox-symbolic.svg
+%if %{enable_mozilla_crashreporter}
+%{mozappdir}/crashreporter
+%{mozappdir}/crashreporter.ini
+%{mozappdir}/minidump-analyzer
+%{mozappdir}/Throbber-small.gif
+%{mozappdir}/browser/crashreporter-override.ini
+%endif
 %{mozappdir}/*.so
+%{mozappdir}/gtk2/*.so
+%{mozappdir}/defaults/pref/channel-prefs.js
+%{mozappdir}/dependentlibs.list
+%{mozappdir}/dictionaries
 %{mozappdir}/omni.ja
 %{mozappdir}/platform.ini
 %{mozappdir}/plugin-container
-%{mozappdir}/dependentlibs.list
-%{mozappdir}/chrome.manifest
-%{mozappdir}/fonts/EmojiOneMozilla.ttf
 %{mozappdir}/gmp-clearkey
-%if %{?use_gtk3}
-%{mozappdir}/gtk2/*.so
+%{mozappdir}/fonts/EmojiOneMozilla.ttf
+%if !%{?system_libicu}
+#%{mozappdir}/icudt*.dat
 %endif
-%if %{?with_intl_api}
-%if 0%{?big_endian}
-%{mozappdir}/icudt58b.dat
-%else
-%{mozappdir}/icudt58l.dat
+%if !%{?system_nss}
+%{mozappdir}/libfreeblpriv3.chk
+%{mozappdir}/libnssdbm3.chk
+%{mozappdir}/libsoftokn3.chk
+%exclude %{mozappdir}/libnssckbi.so
 %endif
+%if 0%{use_bundled_ffi}
+%{mozappdir}/bundled/%{_lib}/libffi.so*
+%exclude %{_datadir}/doc/libffi*
 %endif
-%exclude %{mozappdir}/defaults/pref/channel-prefs.js
-%if !%{?system_nss}
-%{mozappdir}/*.chk
+
+%if 0%{?bundle_gtk3}
+# gtk3-private-files.inc
+%include_file %{SOURCE204}
 %endif
-%exclude %{_datadir}/idl/*
-%exclude %{_includedir}/*
-%exclude %{_libdir}/%{name}-devel-*/*
+
 
 #---------------------------------------------------------------------
 
 %changelog
-* Mon May 14 2018 Johnny Hughes <johnny@centos.org> - 52.8.0-1
-- Manual CentOS Debranding
+* Sun Jun 24 2018 Martin Stransky <stransky@redhat.com> - 60.1.0-4
+- Disabled jemalloc on all second arches
+
+* Fri Jun 22 2018 Martin Stransky <stransky@redhat.com> - 60.1.0-3
+- Updated to 60.1.0 ESR build2
+
+* Thu Jun 21 2018 Martin Stransky <stransky@redhat.com> - 60.1.0-2
+- Disabled jemalloc on second arches
+
+* Wed Jun 20 2018 Martin Stransky <stransky@redhat.com> - 60.1.0-1
+- Updated to 60.1.0 ESR
+
+* Wed Jun 13 2018 Jan Horak <jhorak@redhat.com> - 60.0-12
+- Fixing bundled libffi issues
+- Readded some requirements
+
+* Mon Jun 11 2018 Martin Stransky <stransky@redhat.com> - 60.0-10
+- Added fix for mozilla BZ#1436242 - IPC crashes.
 
-* Wed May  9 2018 Jan Horak <jhorak@redhat.com> - 52.8.0-1
-- Update to 52.8.0 ESR
+* Mon Jun 11 2018 Jan Horak <jhorak@redhat.com> - 60.0-9
+- Bundling libffi for the sec-arches
+- Added openssl-devel for the Python
+- Fixing bundled gtk3
 
-* Wed Mar 28 2018 Jan Horak <jhorak@redhat.com> - 52.7.3-1
-- Update to 52.7.3 ESR
+* Fri May 18 2018 Martin Stransky <stransky@redhat.com> - 60.0-8
+- Added fix for mozilla BZ#1458492
 
-* Fri Mar 16 2018 Jan Horak <jhorak@redhat.com> - 52.7.2-1
-- Update to 52.7.2 ESR
+* Wed May 16 2018 Martin Stransky <stransky@redhat.com> - 60.0-7
+- Added patch from rhbz#1498561 to fix ppc64(le) crashes.
+
+* Wed May 16 2018 Martin Stransky <stransky@redhat.com> - 60.0-6
+- Disabled jemalloc on second arches
+
+* Sun May  6 2018 Jan Horak <jhorak@redhat.com> - 60.0-4
+- Update to 60.0 ESR
 
 * Thu Mar  8 2018 Jan Horak <jhorak@redhat.com> - 52.7.0-1
 - Update to 52.7.0 ESR
 
-* Thu Jan 18 2018 Martin Stransky <stransky@redhat.com> - 52.6.1-2
-- Update to 52.6.0 ESR
+* Mon Jan 29 2018 Martin Stransky <stransky@redhat.com> - 52.6.0-2
+- Build Firefox for desktop arches only (x86_64 and ppc64le)
 
-* Wed Nov 29 2017 Jan Horak <jhorak@redhat.com> - 52.5.1-1
-- Update to 52.5.1 ESR
+* Thu Jan 18 2018 Martin Stransky <stransky@redhat.com> - 52.6.0-1
+- Update to 52.6.0 ESR
 
 * Thu Nov  9 2017 Jan Horak <jhorak@redhat.com> - 52.5.0-1
 - Update to 52.5.0 ESR
@@ -966,354 +1240,3 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 * Thu Dec  8 2016 Jan Horak <jhorak@redhat.com> - 52.0-0.5
 - Firefox Aurora 52 testing build
 
-* Tue Nov  8 2016 Jan Horak <jhorak@redhat.com> - 45.5.0-1
-- Update to 45.5.0 ESR
-
-* Mon Oct 31 2016 Jan Horak <jhorak@redhat.com> - 45.4.0-3
-- Added upcoming upstream patches mozbz#1018486
-
-* Mon Sep 26 2016 Jan Horak <jhorak@redhat.com> - 45.4.0-2
-- Added Laszlo Ersek patch for aarch64 crashes
-
-* Wed Sep  7 2016 Jan Horak <jhorak@redhat.com> - 45.4.0-1
-- Update to 45.4.0 ESR
-
-* Wed Jul 27 2016 Jan Horak <jhorak@redhat.com> - 45.3.0-1
-- Update to 45.3.0 ESR
-
-* Mon Jul 11 2016 Martin Stransky <stransky@redhat.com> - 45.2.0-3
-- Added fix for mozbz#256180
-
-* Mon Jun 20 2016 Martin Stransky <stransky@redhat.com> - 45.2.0-2
-- Added fix for mozbz#975832, rhbz#1343202
-
-* Fri Jun  3 2016 Jan Horak <jhorak@redhat.com> - 45.2.0-1
-- Update to 45.2.0 ESR
-
-* Tue May 10 2016 Martin Stransky <stransky@redhat.com> - 45.1.1-2
-- Added fix for mozbz#1270046 - new Samba auth response
-
-* Wed May  4 2016 Jan Horak <jhorak@redhat.com> - 45.1.1-1
-- Update to 45.1.1 ESR
-
-* Tue May 3 2016 Martin Stransky <stransky@redhat.com> - 45.1.0-3
-- Disabled ffmpeg (rhbz#1330898)
-
-* Fri Apr 29 2016 Jan Horak <jhorak@redhat.com> - 45.1.0-1
-- Fixed some regressions introduced by rebase
-
-* Thu Apr 21 2016 Jan Horak <jhorak@redhat.com> - 45.1.0-1
-- Update to 45.1.0 ESR
-
-* Tue Apr 12 2016 Jan Horak <jhorak@redhat.com> - 45.0.2-1
-- Update to 45.0.2 ESR
-
-* Wed Apr  6 2016 Jan Horak <jhorak@redhat.com> - 45.0.1-1
-- Update to 45.0.1 ESR
-
-* Mon Apr  4 2016 Martin Stransky <stransky@redhat.com> - 45.0-5
-- Fixed crashed after start (rhbz#1323744, rhbz#1323738)
-
-* Mon Apr  4 2016 Jan Horak <jhorak@redhat.com> - 45.0-4
-- Added system-level location for configuring Firefox (rhbz#1206239)
-
-* Mon Mar  7 2016 Jan Horak <jhorak@redhat.com> - 45.0-3
-- Update to 45.0 ESR
-
-* Fri Dec 11 2015 Jan Horak <jhorak@redhat.com> - 38.5.0-3
-- Update to 38.5.0 ESR
-
-* Thu Oct 29 2015 Jan Horak <jhorak@redhat.com> - 38.4.0-1
-- Update to 38.4.0 ESR
-
-* Tue Sep 15 2015 Jan Horak <jhorak@redhat.com> - 38.3.0-2
-- Update to 38.3.0 ESR
-
-* Wed Aug 26 2015 Martin Stransky <stransky@redhat.com> - 38.2.1-1
-- Update to 38.2.1 ESR
-
-* Fri Aug  7 2015 Jan Horak <jhorak@redhat.com> - 38.2.0-4
-- Update to 38.2.0 ESR
-
-* Thu Aug  6 2015 Jan Horak <jhorak@redhat.com> - 38.1.1-1
-- Update to 38.1.1 ESR
-
-* Thu Jun 25 2015 Jan Horak <jhorak@redhat.com> - 38.1.0-1
-- Update to 38.1.0 ESR
-
-* Thu May 21 2015 Jan Horak <jhorak@redhat.com> - 38.0.1-2
-- Fixed rhbz#1222807 by removing preun section
-
-* Fri May 15 2015 Martin Stransky <stransky@redhat.com> - 38.0.1-1
-- Update to 38.0.1 ESR
-
-* Thu May 14 2015 Martin Stransky <stransky@redhat.com> - 38.0-4
-- Fixed rhbz#1221286 - After update to Firefox 38 ESR
-  all RH preferences are gone
-
-* 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
-
-* Fri Apr 10 2015 Martin Stransky <stransky@redhat.com> - 38.0b3-0.7
-- Update to 38.0 Beta 3
-
-* Fri Apr 10 2015 Martin Stransky <stransky@redhat.com> - 38.0b1-0.6
-- Added patch for mozbz#1152391
-
-* Thu Apr  9 2015 Marcin Juszkiewicz <mjuszkiewicz@redhat.com> - 38.0b1-0.5
-- Fix build on AArch64 (based on upstream skia changes)
-
-* Tue Apr 7 2015 Martin Stransky <stransky@redhat.com> - 38.0b1-0.4
-- Enabled debug build
-
-* 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
-
-* Tue Jan  6 2015 Jan Horak <jhorak@redhat.com> - 31.4.0-1
-- Update to 31.4.0 ESR
-
-* Mon Jan 5 2015 Martin Stransky <stransky@redhat.com> - 31.3.0-6
-- Fixed Bug 1140385 - [HP HPS 7.1 bug] assertion
-  "sys_page_size == 0" when starting firefox
-
-* Fri Dec 19 2014 Martin Stransky <stransky@redhat.com> - 31.3.0-5
-- Fixed problems with dictionary (mozbz#1097550)
-- JS JIT fixes for ppc64le
-
-* Sat Nov 29 2014 Martin Stransky <stransky@redhat.com> - 31.3.0-3
-- Fixed geolocation key location
-
-* Fri Nov 28 2014 Martin Stransky <stransky@redhat.com> - 31.3.0-2
-- Disable exact rooting for JS
-
-* Wed Nov 26 2014 Martin Stransky <stransky@redhat.com> - 31.3.0-1
-- Update to 31.3.0 ESR Build 2
-- Fix for geolocation API (rhbz#1063739)
-
-* Thu Nov 6 2014 Martin Stransky <stransky@redhat.com> - 31.2.0-5
-- Enabled gstreamer-1 support (rhbz#1161077)
-
-* Mon Oct 27 2014 Yaakov Selkowitz <yselkowi@redhat.com> - 31.2.0-4
-- Fix webRTC for aarch64, ppc64le (rhbz#1148622)
-
-* Tue Oct  7 2014 Jan Horak <jhorak@redhat.com> - 31.2.0-3
-- Update to 31.2.0 ESR
-- Fix for mozbz#1042889
-
-* Wed Oct 1 2014 Martin Stransky <stransky@redhat.com> - 31.1.0-7
-- Enable WebM on all arches
-
-* Thu Sep 11 2014 Martin Stransky <stransky@redhat.com> - 31.1.0-6
-- Enable all NPAPI plugins by default to keep compatibility
-  with the FF24 line
-
-* Wed Sep 10 2014 Martin Stransky <stransky@redhat.com> - 31.1.0-5
-- Added workaround for rhbz#1134876
-
-* Mon Sep 8 2014 Martin Stransky <stransky@redhat.com> - 31.1.0-3
-- Disable mozilla::pkix (mozbz#1063315)
-- Enable image cache
-
-* Mon Sep 8 2014 Martin Stransky <stransky@redhat.com> - 31.1.0-2
-- A workaround for rhbz#1110291
-
-* Thu Aug 28 2014 Martin Stransky <stransky@redhat.com> - 31.1.0-1
-- Update to 31.1.0 ESR
-
-* Tue Aug 5 2014 Martin Stransky <stransky@redhat.com> - 31.0-3
-- Built with system libvpx/WebM
-
-* Mon Aug 4 2014 Martin Stransky <stransky@redhat.com> - 31.0-2
-- Built with system nss/nspr
-
-* Mon Jul 28 2014 Martin Stransky <stransky@redhat.com> - 31.0-1
-- Update to 31.0 ESR
-
-* Wed Jun  4 2014 Jan Horak <jhorak@redhat.com> - 24.6.0-1
-- Update to 24.6.0 ESR
-
-* Wed Apr 23 2014 Martin Stransky <stransky@redhat.com> - 24.5.0-2
-- Removed unused patches
-
-* Tue Apr 22 2014 Martin Stransky <stransky@redhat.com> - 24.5.0-1
-- Update to 24.5.0 ESR
-
-* Tue Apr 15 2014 Martin Stransky <stransky@redhat.com> - 24.4.0-3
-- Added a workaround for Bug 1054242 - RHEVM: Extremely high memory
-  usage in Firefox 24 ESR on RHEL 6.5
-
-* Wed Mar 26 2014 Martin Stransky <stransky@redhat.com> - 24.4.0-2
-- fixed rhbz#1067343 - Broken languagepack configuration 
-  after firefox update
-
-* Tue Mar 18 2014 Jan Horak <jhorak@redhat.com> - 24.4.0-1
-- Update to 24.4.0 ESR
-
-* Thu Feb 27 2014 Martin Stransky <stransky@redhat.com> - 24.3.0-3
-- fixed rhbz#1054832 - Firefox does not support Camellia cipher
-
-* Mon Feb  3 2014 Jan Horak <jhorak@redhat.com> - 24.3.0-1
-- Update to 24.3.0 ESR
-
-* Fri Jan 24 2014 Daniel Mach <dmach@redhat.com> - 24.2.0-3
-- Mass rebuild 2014-01-24
-
-* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 24.2.0-2
-- Mass rebuild 2013-12-27
-
-* Mon Dec 9 2013 Martin Stransky <stransky@redhat.com> - 24.2.0-1
-- Update to 24.2.0 ESR
-
-* Mon Dec 2 2013 Martin Stransky <stransky@redhat.com> - 24.1.0-5
-- Fixed mozbz#938730 - avoid mix of memory allocators (crashes)
-  when using system sqlite
-
-* Tue Nov 26 2013 Martin Stransky <stransky@redhat.com> - 24.1.0-4
-- Fixed rhbz#1034541 - No translation being picked up 
-  from langpacks for firefox
-
-* Fri Nov 8 2013 Martin Stransky <stransky@redhat.com> - 24.1.0-3
-- Conflicts with old, xulrunner based firefox
-
-* Thu Nov 7 2013 Martin Stransky <stransky@redhat.com> - 24.1.0-2
-- Ship dependentlibs.list (rhbz#1027782)
-- Nss/nspr dependency update
-
-* Wed Nov 6 2013 Martin Stransky <stransky@redhat.com> - 24.1.0-1
-- Update to 24.1.0 ESR
-
-* Wed Nov 6 2013 Martin Stransky <stransky@redhat.com> - 24.0-2
-- Build as stand alone browser, without xulrunner
-
-* Thu Oct 31 2013 Martin Stransky <stransky@redhat.com> - 24.0-1
-- Update to 24.0 ESR
-
-* Thu Sep 12 2013 Jan Horak <jhorak@redhat.com> - 17.0.9-1
-- Update to 17.0.9 ESR
-
-* Thu Aug 29 2013 Martin Stransky <stransky@redhat.com> - 17.0.8-2
-- Desktop file update
-- Spec file tweaks
-
-* Thu Aug 1 2013 Martin Stransky <stransky@redhat.com> - 17.0.8-1
-- Update to 17.0.8 ESR
-
-* Wed Jul 31 2013 Jan Horak <jhorak@redhat.com> - 17.0.7-2
-- Updated manual page
-
-* Thu Jun 20 2013 Jan Horak <jhorak@redhat.com> - 17.0.7-1
-- Update to 17.0.7 ESR
-
-* Fri May 17 2013 Jan Horak <jhorak@redhat.com> - 17.0.6-1
-- Update to 17.0.6 ESR
-
-* Fri May 17 2013 Martin Stransky <stransky@redhat.com> - 17.0.5-3
-- Removed mozilla prefix from desktop file (rhbz#826960)
-
-* Thu Apr 18 2013 Martin Stransky <stransky@redhat.com> - 17.0.5-2
-- Updated XulRunner SDK check
-
-* Fri Mar 29 2013 Jan Horak <jhorak@redhat.com> - 17.0.5-1
-- Update to 17.0.5 ESR
-
-* Thu Mar 14 2013 Martin Stransky <stransky@redhat.com> - 17.0.4-2
-- Fixed rhbz#837606 - firefox has no x-scheme-handler/http mime
-
-* Wed Mar 13 2013 Martin Stransky <stransky@redhat.com> - 17.0.4-1
-- Update to 17.0.4 ESR
-- Added fix for mozbz#239254 - [Linux] Support disk cache on a local path
-
-* Tue Jan 15 2013 Martin Stransky <stransky@redhat.com> - 17.0.2-3
-- Added NM preferences
-
-* Fri Jan 11 2013 Martin Stransky <stransky@redhat.com> - 17.0.2-2
-- Updated preferences (NFS, nspluginwrapper)
-
-* Thu Jan 10 2013 Jan Horak <jhorak@redhat.com> - 17.0.2-1
-- Update to 17.0.2 ESR
-
-* Thu Dec 20 2012 Jan Horak <jhorak@redhat.com> - 17.0.1-1
-- Update to 17.0.1 ESR
-
-* Mon Oct  8 2012 Jan Horak <jhorak@redhat.com> - 10.0.8-2
-- Update to 10.0.8 ESR
-
-* Sat Aug 25 2012 Jan Horak <jhorak@redhat.com> - 10.0.7-1
-- Update to 10.0.7 ESR
-
-* Mon Jul 16 2012 Martin Stransky <stransky@redhat.com> - 10.0.6-1
-- Update to 10.0.6 ESR
-
-* Mon Jun 25 2012 Martin Stransky <stransky@redhat.com> - 10.0.5-4
-- Enabled WebM
-
-* Mon Jun 25 2012 Martin Stransky <stransky@redhat.com> - 10.0.5-2
-- Added fix for mozbz#703633, rhbz#818341
-
-* Fri Jun 1 2012 Martin Stransky <stransky@redhat.com> - 10.0.5-1
-- Update to 10.0.5 ESR
-
-* Sun Apr 22 2012 Martin Stransky <stransky@redhat.com> - 10.0.4-1
-- Update to 10.0.4 ESR
-
-* Tue Mar 6 2012 Martin Stransky <stransky@redhat.com> - 10.0.3-1
-- Update to 10.0.3 ESR
-
-* Thu Feb  9 2012 Jan Horak <jhorak@redhat.com> - 10.0.1-1
-- Update to 10.0.1 ESR
-
-* Tue Feb 7 2012 Martin Stransky <stransky@redhat.com> - 10.0-3
-- Update to 10.0 ESR
-
-* Mon Jan 30 2012 Martin Stransky <stransky@redhat.com> - 10.0-1
-- Update to 10.0
-
-* Mon Sep 26 2011 Martin Stransky <stransky@redhat.com> - 7.0-5
-- Update to 7.0
-
-* Tue Sep 20 2011 Jan Horak <jhorak@redhat.com> - 7.0-4
-- Update to 7.0 Beta 6
-
-* Tue Sep 13 2011 Martin Stransky <stransky@redhat.com> - 7.0-2
-- Update to 7.0 Beta 4
-
-* Mon Jul 11 2011 Martin Stransky <stransky@redhat.com> - 5.0-1
-- Update to 5.0
-
-* Mon Jun 13 2011 Jan Horak <jhorak@redhat.com> - 3.6.18-1
-- Fixed #698313 - "background-repeat" css property isn't rendered well
-- Update to 3.6.18
-
-* Mon Apr 18 2011 Jan Horak <jhorak@redhat.com> - 3.6.17-1
-- Update to 3.6.17
-
-* Tue Mar  8 2011 Jan Horak <jhorak@redhat.com> - 3.6.15-1
-- Update to 3.6.15
-
-* Mon Feb 21 2011 Jan Horak <jhorak@redhat.com> - 3.6.14-4
-- Update to build3
-
-* Tue Feb  8 2011 Jan Horak <jhorak@redhat.com> - 3.6.14-3
-- Update to build2
-
-* Wed Jan 26 2011 Jan Horak <jhorak@redhat.com> - 3.6.14-2
-- Update to 3.6.14