diff --git a/.firefox.metadata b/.firefox.metadata new file mode 100644 index 0000000..34467d5 --- /dev/null +++ b/.firefox.metadata @@ -0,0 +1,6 @@ +511960dd78451a06c9df76509635aeec05b2051a SOURCES/Python-2.7.8.tgz +467bdb846d67c01aed9e521fe0ef280065a50c3c SOURCES/devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm +4941f498f8ec838b1bdc70fc8f13c8fde379ddce SOURCES/firefox-52.5.0esr.source.tar.xz +0ef9b869a366758141ec6f75cdd6633e137e8386 SOURCES/firefox-langpacks-52.5.0esr-20171109.tar.xz +e5ba84786af5d0e0e23b1a9112c76821ef23306c SOURCES/gcc48-4.8.2-16.el5.src.rpm +77fd30f7ebc12a629a31c1e252cec06af55a71fe SOURCES/yasm-1.2.0-3.el5.src.rpm diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eb22979 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +SOURCES/Python-2.7.8.tgz +SOURCES/devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm +SOURCES/firefox-52.5.0esr.source.tar.xz +SOURCES/firefox-langpacks-52.5.0esr-20171109.tar.xz +SOURCES/gcc48-4.8.2-16.el5.src.rpm +SOURCES/yasm-1.2.0-3.el5.src.rpm diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/build-icu-big-endian.patch b/SOURCES/build-icu-big-endian.patch new file mode 100644 index 0000000..68fbea1 --- /dev/null +++ b/SOURCES/build-icu-big-endian.patch @@ -0,0 +1,12 @@ +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 +@@ -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, + # but we'd need to check in a big-endian version of the file. +- 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. diff --git a/SOURCES/build-missing-getrandom.patch b/SOURCES/build-missing-getrandom.patch new file mode 100644 index 0000000..3a4adde --- /dev/null +++ b/SOURCES/build-missing-getrandom.patch @@ -0,0 +1,21 @@ +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(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-nss-prbool.patch b/SOURCES/build-nss-prbool.patch new file mode 100644 index 0000000..491b2e1 --- /dev/null +++ b/SOURCES/build-nss-prbool.patch @@ -0,0 +1,22 @@ +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 new file mode 100644 index 0000000..42f375d --- /dev/null +++ b/SOURCES/build-nss-version.patch @@ -0,0 +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, + _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])]) + fi + + if test -n "$MOZ_SYSTEM_NSS"; then diff --git a/SOURCES/build-s390-atomic.patch b/SOURCES/build-s390-atomic.patch new file mode 100644 index 0000000..3624b98 --- /dev/null +++ b/SOURCES/build-s390-atomic.patch @@ -0,0 +1,13 @@ +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 new file mode 100644 index 0000000..59157e6 --- /dev/null +++ b/SOURCES/build-s390-missing-include.patch @@ -0,0 +1,11 @@ +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/find-external-requires b/SOURCES/find-external-requires new file mode 100755 index 0000000..d79db1d --- /dev/null +++ b/SOURCES/find-external-requires @@ -0,0 +1,23 @@ +#!/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-default.patch b/SOURCES/firefox-default.patch new file mode 100644 index 0000000..641337b --- /dev/null +++ b/SOURCES/firefox-default.patch @@ -0,0 +1,97 @@ +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"/> + + +-#ifdef MOZ_UPDATER ++#ifdef 0 + +@@ -116,7 +116,7 @@ + type="int"/> + + +-#ifdef HAVE_SHELL_SERVICE ++#ifdef 0 + + + #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 gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID); + nsCOMPtr 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-enable-addons.patch b/SOURCES/firefox-enable-addons.patch new file mode 100644 index 0000000..c1c82bb --- /dev/null +++ b/SOURCES/firefox-enable-addons.patch @@ -0,0 +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 + + // 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); + + // 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 new file mode 100644 index 0000000..a1ee8c5 --- /dev/null +++ b/SOURCES/firefox-enable-plugins.patch @@ -0,0 +1,21 @@ +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-install-dir.patch b/SOURCES/firefox-install-dir.patch new file mode 100644 index 0000000..c962fa5 --- /dev/null +++ b/SOURCES/firefox-install-dir.patch @@ -0,0 +1,12 @@ +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 new file mode 100755 index 0000000..ff2a6a4 --- /dev/null +++ b/SOURCES/firefox-mozconfig @@ -0,0 +1,28 @@ +. $topsrcdir/browser/config/mozconfig +ac_add_options --disable-crashreporter +ac_add_options --disable-libjpeg-turbo +ac_add_options --disable-necko-wifi +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-startup-notification +ac_add_options --libdir="$LIBDIR" +ac_add_options --prefix="$PREFIX" +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 +export BUILD_OFFICIAL=1 +export CFLAGS="$CFLAGS -gdwarf-2" +export CXXFLAGS="$CXXFLAGS -gdwarf-2" +export MOZILLA_OFFICIAL=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 new file mode 100644 index 0000000..45fe1bc --- /dev/null +++ b/SOURCES/firefox-ppc64le.patch @@ -0,0 +1,28 @@ +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..02113f4 --- /dev/null +++ b/SOURCES/firefox-redhat-default-prefs.js @@ -0,0 +1,27 @@ +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", "Red Hat"); +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.redhat.com"); +pref("startup.homepage_welcome_url", "http://www.redhat.com"); +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.1 b/SOURCES/firefox.1 new file mode 100644 index 0000000..62bbe08 --- /dev/null +++ b/SOURCES/firefox.1 @@ -0,0 +1,138 @@ +.TH FIREFOX 1 "August 07, 2001" 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] + +.B firefox-bin +[\fIOPTIONS\fR] [\fIURL\fR] + +.SH DESCRIPTION +\fBMozilla Firefox\fR is an open-source web browser, designed for +standards compliance, performance and portability. + +.SH USAGE +\fBfirefox\fR is a simple shell script that will set up the +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 +X display to use +.TP +.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 + +.SS "Firefox options" +.TP +.B \-h, \-help +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. +.TP +\fB\-P\fR \fIprofile\fR +Start with \fIprofile\fR. +.TP +.B \-ProfileManager +Start with profile manager. +.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 +.TP +.B \-jsconsole +Start with Javascript Console +.TP +\fB\-chrome\fR \fIurl\fR +Load the specified chrome. +.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. +.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. +.TP +\fB\-new\-tab\fR \fIurl\fR +Open \fIurl\fR in a new tab. +.TP +\fB\-new\-window\fR \fIurl\fR +Open \fIurl\fR in a new window. +.TP +\fB\-preferences\fR +Open the preferences dialog. +.TP +\fB\-private\fR +Start \fBfirefox\fR in private browsing mode. +.TP +\fB\-private\-toggle\fR +Toggle private browsing mode. +.TP +\fB\-setDefaultBrowser\fR +Set \fBfirefox\fR as the default web browser. +.TP +\fB\-search\fR \fIterm\fR +Search for \fIterm\fR with your default search engine. +.TP +\fB\-migration\fR +Start with migration wizard. +.TP +\fB\-new-instance\fR +Open new instance, not a new window in running instance. + +.SH FILES +\fI/usr/bin/firefox\fR - shell script wrapping +\fBfirefox\fR +.br +\fI/usr/lib/mozilla/firefox-bin\fR - \fBfirefox\fR +executable + +.SH VERSION +1.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 diff --git a/SOURCES/firefox.desktop b/SOURCES/firefox.desktop new file mode 100644 index 0000000..bac6399 --- /dev/null +++ b/SOURCES/firefox.desktop @@ -0,0 +1,73 @@ +[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 網頁瀏覽器 +GenericName=Web Browser +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[es]=Navegador web +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[hu]=Webböngésző +GenericName[it]=Browser Web +GenericName[ja]=ウェブ・ブラウザ +GenericName[ko]=웹 브라우저 +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[sk]=Internetový prehliadač +GenericName[sv]=Webbläsare +Comment=Browse the Web +Comment[ca]=Navegueu per el web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[de]=Im Internet surfen +Comment[es]=Navegue por la web +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Navigue sur Internet +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[sk]=Prehliadanie internetu +Comment[sv]=Surfa på webben +Exec=firefox %u +Icon=firefox +Terminal=false +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; diff --git a/SOURCES/firefox.sh.in.rhel6 b/SOURCES/firefox.sh.in.rhel6 new file mode 100644 index 0000000..1eb2d25 --- /dev/null +++ b/SOURCES/firefox.sh.in.rhel6 @@ -0,0 +1,256 @@ +#!/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 new file mode 100644 index 0000000..385a05c --- /dev/null +++ b/SOURCES/firefox.sh.in.rhel7 @@ -0,0 +1,261 @@ +#!/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/mozilla-1005640-accept-lang.patch b/SOURCES/mozilla-1005640-accept-lang.patch new file mode 100644 index 0000000..29d3833 --- /dev/null +++ b/SOURCES/mozilla-1005640-accept-lang.patch @@ -0,0 +1,30 @@ +diff -up firefox-51.0/toolkit/mozapps/extensions/internal/XPIProvider.jsm.1005640-accept-lang firefox-51.0/toolkit/mozapps/extensions/internal/XPIProvider.jsm +--- firefox-51.0/toolkit/mozapps/extensions/internal/XPIProvider.jsm.1005640-accept-lang 2017-01-16 17:16:52.000000000 +0100 ++++ firefox-51.0/toolkit/mozapps/extensions/internal/XPIProvider.jsm 2017-01-18 12:35:29.380394216 +0100 +@@ -2852,6 +2852,11 @@ this.XPIProvider = { + this.addAddonsToCrashReporter(); + } + ++ // Save locale settings to compare it later to check whenever some addon ++ // changed it. ++ var previousLocale = Cc["@mozilla.org/chrome/chrome-registry;1"] ++ .getService(Ci.nsIXULChromeRegistry).getSelectedLocale("global"); ++ + try { + AddonManagerPrivate.recordTimestamp("XPI_bootstrap_addons_begin"); + +@@ -2880,6 +2885,14 @@ this.XPIProvider = { + AddonManagerPrivate.recordException("XPI-BOOTSTRAP", "startup failed", e); + } + ++ var currentLocale = Cc["@mozilla.org/chrome/chrome-registry;1"] ++ .getService(Ci.nsIXULChromeRegistry).getSelectedLocale("global"); ++ if (currentLocale != previousLocale) { ++ // We have to flush string cache if the locale was changed during loading ++ // of addons ++ Services.obs.notifyObservers(null, "chrome-flush-caches", null); ++ } ++ + // Let these shutdown a little earlier when they still have access to most + // of XPCOM + Services.obs.addObserver({ diff --git a/SOURCES/mozilla-1152515.patch b/SOURCES/mozilla-1152515.patch new file mode 100644 index 0000000..4be1ca7 --- /dev/null +++ b/SOURCES/mozilla-1152515.patch @@ -0,0 +1,68 @@ +diff --git a/security/pkix/lib/pkixder.cpp b/security/pkix/lib/pkixder.cpp +--- a/security/pkix/lib/pkixder.cpp ++++ b/security/pkix/lib/pkixder.cpp +@@ -466,28 +466,63 @@ TimeChoice(Reader& tagged, uint8_t expec + if (rv != Success) { + return rv; + } + + uint8_t b; + if (input.Read(b) != Success) { + return Result::ERROR_INVALID_DER_TIME; + } +- if (b != 'Z') { ++ ++ unsigned int hourOffset = 0; ++ unsigned int minuteOffset = 0; ++ bool allowOffset = false; ++ bool haveOffset = false; ++ bool offsetIsPositive = false; ++ ++ if (getenv("PKIX_ALLOW_CERT_UTCTIME_OFFSET") != 0) { ++ allowOffset = true; ++ } ++ ++ if (allowOffset && (b == '+' || b == '-')) { ++ haveOffset = true; ++ rv = ReadTwoDigits(input, 0u, 23u, hourOffset); ++ if (rv != Success) { ++ return rv; ++ } ++ rv = ReadTwoDigits(input, 0u, 59u, minuteOffset); ++ if (rv != Success) { ++ return rv; ++ } ++ if (b == '+') { ++ offsetIsPositive = true; ++ } ++ } else if (b != 'Z') { + return Result::ERROR_INVALID_DER_TIME; + } + if (End(input) != Success) { + return Result::ERROR_INVALID_DER_TIME; + } + + uint64_t totalSeconds = (static_cast(days) * 24u * 60u * 60u) + + (static_cast(hours) * 60u * 60u) + + (static_cast(minutes) * 60u) + + seconds; + ++ if (haveOffset) { ++ uint64_t offsetInSeconds = ++ (static_cast(hourOffset) * 60u * 60u) + ++ (static_cast(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 new file mode 100644 index 0000000..2b10f06 --- /dev/null +++ b/SOURCES/mozilla-1170092-etc-conf.patch @@ -0,0 +1,96 @@ +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//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 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 ++#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 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//pref/ directory if it exists ++ nsCOMPtr 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-1324096.patch b/SOURCES/mozilla-1324096.patch new file mode 100644 index 0000000..4a2691e --- /dev/null +++ b/SOURCES/mozilla-1324096.patch @@ -0,0 +1,72 @@ +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 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-256180.patch b/SOURCES/mozilla-256180.patch new file mode 100644 index 0000000..13a1c97 --- /dev/null +++ b/SOURCES/mozilla-256180.patch @@ -0,0 +1,11 @@ +--- a/layout/generic/nsIFrame.h.old 2016-07-11 13:41:39.688276559 +0200 ++++ b/layout/generic/nsIFrame.h 2016-07-11 13:42:12.791406976 +0200 +@@ -13,7 +13,7 @@ + #error This header/class should only be used within Mozilla code. It should not be used by extensions. + #endif + +-#define MAX_REFLOW_DEPTH 200 ++#define MAX_REFLOW_DEPTH 1000 + + /* nsIFrame is in the process of being deCOMtaminated, i.e., this file is eventually + going to be eliminated, and all callers will use nsFrame instead. At the moment diff --git a/SOURCES/mozilla-api-key b/SOURCES/mozilla-api-key new file mode 100644 index 0000000..81877bc --- /dev/null +++ b/SOURCES/mozilla-api-key @@ -0,0 +1 @@ +9008bb7e-1e22-4038-94fe-047dd48ccc0b diff --git a/SOURCES/rhbz-1173156.patch b/SOURCES/rhbz-1173156.patch new file mode 100644 index 0000000..9855710 --- /dev/null +++ b/SOURCES/rhbz-1173156.patch @@ -0,0 +1,12 @@ +diff -up firefox-31.3.0/mozilla-esr31/extensions/auth/nsAuthSambaNTLM.cpp.old firefox-31.3.0/mozilla-esr31/extensions/auth/nsAuthSambaNTLM.cpp +--- firefox-31.3.0/mozilla-esr31/extensions/auth/nsAuthSambaNTLM.cpp.old 2014-11-25 12:23:22.000000000 +0100 ++++ firefox-31.3.0/mozilla-esr31/extensions/auth/nsAuthSambaNTLM.cpp 2014-12-23 15:26:36.606674625 +0100 +@@ -174,7 +174,7 @@ nsAuthSambaNTLM::SpawnNTLMAuthHelper() + return NS_ERROR_FAILURE; + + const char* const args[] = { +- "ntlm_auth", ++ "/usr/bin/ntlm_auth", + "--helper-protocol", "ntlmssp-client-1", + "--use-cached-creds", + "--username", username, diff --git a/SOURCES/rhbz-1423012.patch b/SOURCES/rhbz-1423012.patch new file mode 100644 index 0000000..f5344c2 --- /dev/null +++ b/SOURCES/rhbz-1423012.patch @@ -0,0 +1,15 @@ +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-966424.patch b/SOURCES/rhbz-966424.patch new file mode 100644 index 0000000..c4c332e --- /dev/null +++ b/SOURCES/rhbz-966424.patch @@ -0,0 +1,23 @@ +--- 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 new file mode 100644 index 0000000..29fd578 --- /dev/null +++ b/SOURCES/webrtc-arch-cpu.patch @@ -0,0 +1,22 @@ +--- 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 new file mode 100644 index 0000000..d0c3d8c --- /dev/null +++ b/SOURCES/xulrunner-24.0-jemalloc-ppc.patch @@ -0,0 +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 + #endif + diff --git a/SPECS/firefox.spec b/SPECS/firefox.spec new file mode 100644 index 0000000..89ae878 --- /dev/null +++ b/SPECS/firefox.spec @@ -0,0 +1,1298 @@ +%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 +%endif +%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 + +# Require libatomic for ppc +%ifarch ppc +%define system_libatomic 1 +%endif +# Big endian platforms +%ifarch ppc ppc64 s390 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 +%endif + +# ============================================================================ + +# Avoid patch failures +%define _default_patch_fuzz 2 + + +%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} +# The actual sqlite version (see #480989): +%global sqlite_build_version %(pkg-config --silence-errors --modversion sqlite3 2>/dev/null || echo 65536) +%endif + +Summary: Mozilla Firefox Web browser +Name: firefox +Version: 52.5.0 +Release: 1%{?dist} +URL: http://www.mozilla.org/projects/firefox/ +License: MPLv1.1 or GPLv2+ or LGPLv2+ +Group: Applications/Internet + +%define ext_version esr +%define tarballdir firefox-%{version}%{?ext_version} + +# From ftp://archive.mozilla.org/pub/firefox/releases/%{version}%{?ext_version}/source +Source0: firefox-%{version}%{?ext_version}.source.tar.xz +%if %{build_langpacks} +Source1: firefox-langpacks-%{version}%{?ext_version}-20171109.tar.xz +%endif +Source10: firefox-mozconfig +Source12: firefox-redhat-default-prefs.js +Source20: firefox.desktop +Source600: firefox.sh.in.rhel6 +Source700: firefox.sh.in.rhel7 +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 +Source301: yasm-1.2.0-3.el5.src.rpm +Source302: devtoolset-2-binutils-2.23.52.0.1-10.el5.src.rpm + +# 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 + +# 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 + +# RHEL7 patches + +# RHEL6 patches +# HOPEFULY fixed Patch401: build-el6-harfbuzz-old-glib.patch + +# --------------------------------------------------- +BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) + +BuildRequires: desktop-file-utils +BuildRequires: mesa-libGL-devel +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: 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: autoconf213 +BuildRequires: xz +%if ! %{use_bundled_yasm}0 +BuildRequires: yasm +%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} +%endif +%if %{?system_sqlite} +BuildRequires: sqlite-devel >= %{sqlite_version} +Requires: sqlite >= %{sqlite_build_version} +%endif +%if %{?system_ffi} +BuildRequires: libffi-devel >= %{ffi_version} +Requires: libffi >= %{ffi_version} +%endif +BuildRequires: libpng-devel +BuildRequires: libjpeg-devel +BuildRequires: hunspell-devel +%if %{system_libatomic} +BuildRequires: libatomic +Requires: libatomic +%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 +%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 +%endif + +Obsoletes: mozilla <= 37:1.7.13 +Obsoletes: firefox < 38.0 +Conflicts: firefox < 38.0 +Provides: webclient + +%if %{use_bundled_python} +BuildRequires: openssl-devel +%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 +%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} + +%description +Mozilla Firefox is an open-source web browser, designed for standards +compliance, performance and portability. + +#--------------------------------------------------------------------- + +%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 + +# Upstream patches +#%patch201 -p1 -b .mozbz-1005535 see Patch201 comment +%patch202 -p1 -b .mozbz-1152515 +%patch203 -p1 -b .mozbz-1324096 + +# RHEL7 only patches +%if %{?rhel} == 7 +%endif + +#%if %{?rhel} == 6 +#HOPEFULY FIXED %patch401 -p1 -b .harfbuzz-old-glib +#%endif + +# Patch for big endian platforms only +%if 0%{?big_endian} +%patch21 -p1 -b .s390-atomic +%endif + +%{__rm} -f .mozconfig +%{__cp} %{SOURCE10} .mozconfig +%{__cp} %{SOURCE24} mozilla-api-key + +function add_to_mozconfig() { + mozconfig_entry=$1 + echo "ac_add_options --$1" >> .mozconfig +} + +# Modify mozconfig file +%if %{official_branding} + add_to_mozconfig "enable-official-branding" +%endif + +%if %{?use_gtk3} + add_to_mozconfig "enable-default-toolkit=cairo-gtk3" +%else + add_to_mozconfig "enable-default-toolkit=cairo-gtk2" +%endif + +%if %{?system_sqlite} + add_to_mozconfig "enable-system-sqlite" +%else + add_to_mozconfig "disable-system-sqlite" +%endif + +%if %{?system_nss} + add_to_mozconfig "with-system-nspr" + add_to_mozconfig "with-system-nss" +%else + add_to_mozconfig "without-system-nspr" + add_to_mozconfig "without-system-nss" +%endif + +# RHEL 7 mozconfig changes: +%if 0%{rhel} >= 6 + add_to_mozconfig "enable-startup-notification" + add_to_mozconfig "enable-jemalloc" +%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 +%endif + +%ifarch aarch64 ppc64 ppc64le ppc s390 s390x + add_to_mozconfig "disable-ion" +%endif + +%ifarch aarch64 ppc ppc64 s390 s390x + add_to_mozconfig "disable-skia" +%endif + +# Debug build flags +%if %{?debug_build} + add_to_mozconfig "enable-debug" + add_to_mozconfig "disable-optimize" +%else + add_to_mozconfig "disable-debug" + add_to_mozconfig "enable-optimize" +%endif + +%if %{?with_intl_api} + add_to_mozconfig "with-intl-api" +%else + add_to_mozconfig "without-intl-api" +%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 %{use_bundled_python} + # Prepare Python 2.7 sources + tar xf %{SOURCE200} +%endif + +#--------------------------------------------------------------------- + +%build + +function build_bundled_package() { + PACKAGE_RPM=$1 + PACKAGE_FILES=$2 + PACKAGE_SOURCE=$3 + PACKAGE_DIR="%{_topdir}/RPMS" + + PACKAGE_ALREADY_BUILD=0 + %if %{do_not_clean_rpms} + if ls $PACKAGE_DIR/$PACKAGE_RPM; then + PACKAGE_ALREADY_BUILD=1 + fi + if ls $PACKAGE_DIR/%{_arch}/$PACKAGE_RPM; then + PACKAGE_ALREADY_BUILD=1 + fi + %endif + if [ $PACKAGE_ALREADY_BUILD == 0 ]; then + echo "Rebuilding $PACKAGE_RPM from $PACKAGE_SOURCE"; echo "===============================" + rpmbuild --nodeps --rebuild $PACKAGE_SOURCE + fi + + 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 + pushd $PACKAGE_DIR + 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 + rm -f $PACKAGE_FILES + %endif + + PATH=$PACKAGE_DIR/usr/bin:$PATH + export PATH + LD_LIBRARY_PATH=$PACKAGE_DIR/usr/%{_lib} + export LD_LIBRARY_PATH + popd +} + +# Build and install local yasm if needed +# ====================================== +%if %{use_bundled_yasm} + 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++ +%endif + + +# 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 + popd +%endif # bundled Python + +%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 +%endif + +echo "Building Firefox"; echo "===============================" +cd %{tarballdir} + +# Hack for missing shell when building in brew on RHEL6 and RHEL5 +%if 0%{?rhel} <= 6 +export SHELL=/bin/sh +%endif + +echo "Generate big endian version of config/external/icu/data/icud58l.dat" +%if 0%{?big_endian} + ./mach python intl/icu_sources_data.py . + ls -l config/external/icu/data + 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 +%ifarch s390 +MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') +%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 +%endif + +%if %{?debug_build} + MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//') +%endif + +export CFLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-fpermissive//') +export CXXFLAGS=$MOZ_OPT_FLAGS +export LDFLAGS="-Wl,--verbose $MOZ_LINK_FLAGS" + +export PREFIX='%{_prefix}' +export LIBDIR='%{_libdir}' + +MOZ_SMP_FLAGS=-j1 +[ -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 + +MOZ_APP_DIR=%{_libdir}/%{name} + +make -f client.mk build STRIP="/bin/true" MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS" + +#--------------------------------------------------------------------- + +%install +# Hack for missing shell when building in brew on RHEL6 and RHEL5 +%if 0%{?rhel} <= 6 +export SHELL=/bin/sh +%endif + +cd %{tarballdir} +%{__rm} -rf $RPM_BUILD_ROOT + +# set up our default bookmarks +%{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/defaults/profile/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=$RPM_BUILD_ROOT make -C objdir install + +%{__mkdir_p} $RPM_BUILD_ROOT{%{_libdir},%{_bindir},%{_datadir}/applications} + +desktop-file-install \ + --dir $RPM_BUILD_ROOT%{_datadir}/applications \ + --add-category WebBrowser \ + --add-category Network \ + %{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 + +# Installing man page +%{__install} -p -D -m 644 %{SOURCE23} $RPM_BUILD_ROOT%{_mandir}/man1/firefox.1 + +%{__rm} -f $RPM_BUILD_ROOT/%{mozappdir}/firefox-config + +for s in 16 22 24 32 48 256; do + %{__mkdir_p} $RPM_BUILD_ROOT%{_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 +done + +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 - +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 + find $extensionID -type f | xargs chmod 644 + + cd $extensionID + zip -r9mX ../${extensionID}.xpi * + cd - + + %{__install} -m 644 ${extensionID}.xpi $RPM_BUILD_ROOT%{langpackdir} + language=`echo $language | sed -e 's/-/_/g'` + 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 +} + +# Table of fallbacks for each language +# please file a bug at bugzilla.redhat.com if the assignment is incorrect +create_default_langpack "bn-IN" "bn" +create_default_langpack "es-AR" "es" +create_default_langpack "fy-NL" "fy" +create_default_langpack "ga-IE" "ga" +create_default_langpack "gu-IN" "gu" +create_default_langpack "hi-IN" "hi" +create_default_langpack "hy-AM" "hy" +create_default_langpack "nb-NO" "nb" +create_default_langpack "nn-NO" "nn" +create_default_langpack "pa-IN" "pa" +create_default_langpack "pt-PT" "pt" +create_default_langpack "sv-SE" "sv" +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 +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 + +# System config dir +%{__mkdir_p} $RPM_BUILD_ROOT/%{_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} + +# Copy over the LICENSE +%{__install} -p -c -m 644 LICENSE $RPM_BUILD_ROOT/%{mozappdir} + +# Use the system dictionaries for system hunspell +%{__rm} -rf ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries +ln -s %{_datadir}/myspell ${RPM_BUILD_ROOT}%{mozappdir}/dictionaries + +# Clean firefox-devel debuginfo +rm -rf %{_prefix}/lib/debug/lib/%{name}-devel-* +rm -rf %{_prefix}/lib/debug/lib64/%{name}-devel-* + +#--------------------------------------------------------------------- + +%clean +%{__rm} -rf $RPM_BUILD_ROOT + +#--------------------------------------------------------------------- + +%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? +if [ $1 -eq 0 ]; then + %{__rm} -rf %{mozappdir}/components + %{__rm} -rf %{mozappdir}/extensions + %{__rm} -rf %{mozappdir}/plugins +fi + +%posttrans +gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : + +%files -f %{name}.lang +%defattr(-,root,root,-) +%{_bindir}/firefox +%doc %{_mandir}/man1/* +%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 %{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 +%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/omni.ja +%{mozappdir}/firefox +%{mozappdir}/firefox-bin +%{mozappdir}/run-mozilla.sh +%{mozappdir}/application.ini +%{mozappdir}/defaults/preferences/* +%{mozappdir}/browser/defaults/preferences +%exclude %{mozappdir}/removed-files +# gone %{mozappdir}/webapprt-stub +# gone %dir %{mozappdir}/webapprt +# g %{mozappdir}/webapprt/omni.ja +# g %{mozappdir}/webapprt/webapprt.ini +%{mozappdir}/dictionaries +%{mozappdir}/*.so +%{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 +%endif +%if %{?with_intl_api} +%if 0%{?big_endian} +%{mozappdir}/icudt58b.dat +%else +%{mozappdir}/icudt58l.dat +%endif +%endif +%exclude %{mozappdir}/defaults/pref/channel-prefs.js +%if !%{?system_nss} +%{mozappdir}/*.chk +%endif +%exclude %{_datadir}/idl/* +%exclude %{_includedir}/* +%exclude %{_libdir}/%{name}-devel-*/* + +#--------------------------------------------------------------------- + +%changelog +* Thu Nov 9 2017 Jan Horak - 52.5.0-1 +- Update to 52.5.0 ESR + +* Mon Sep 25 2017 Jan Horak - 52.4.0-1 +- Update to 52.4.0 ESR + +* Thu Aug 3 2017 Jan Horak - 52.3.0-3 +- Update to 52.3.0 ESR (b2) +- Require correct nss version + +* Tue Jun 13 2017 Jan Horak - 52.2.0-1 +- Update to 52.2.0 ESR + +* Wed May 24 2017 Jan Horak - 52.1.2-1 +- Update to 52.1.2 ESR + +* Wed May 24 2017 Jan Horak - 52.0-7 +- Added fix for accept language (rhbz#1454322) + +* Wed Mar 22 2017 Jan Horak - 52.0-6 +- Removing patch required for older NSS from RHEL 7.3 +- Added patch for rhbz#1414564 + +* Fri Mar 17 2017 Martin Stransky - 52.0-5 +- Added fix for mozbz#1348168/CVE-2017-5428 + +* Mon Mar 6 2017 Jan Horak - 52.0-4 +- Update to 52.0 ESR (b4) + +* Thu Mar 2 2017 Martin Stransky - 52.0-3 +- Added fix for rhbz#1423012 - ppc64 gfx crashes + +* Wed Mar 1 2017 Jan Horak - 52.0-2 +- Enable system nss + +* Tue Feb 28 2017 Martin Stransky - 52.0-1 +- Update to 52.0ESR (B1) +- Build RHEL7 package for Gtk3 + +* Mon Feb 27 2017 Martin Stransky - 52.0-0.13 +- Added fix for rhbz#1414535 + +* Tue Feb 21 2017 Jan Horak - 52.0-0.12 +- Update to 52.0b8 + +* Tue Feb 7 2017 Jan Horak - 52.0-0.11 +- Readded addons patch + +* Mon Feb 6 2017 Jan Horak - 52.0-0.10 +- Update to 52.0b3 + +* Tue Jan 31 2017 Jan Horak - 52.0-0.9 +- Update to 52.0b2 + +* Fri Jan 27 2017 Jan Horak - 52.0-0.8 +- Update to 52.0b1 + +* Thu Dec 8 2016 Jan Horak - 52.0-0.5 +- Firefox Aurora 52 testing build + +* Tue Nov 8 2016 Jan Horak - 45.5.0-1 +- Update to 45.5.0 ESR + +* Mon Oct 31 2016 Jan Horak - 45.4.0-3 +- Added upcoming upstream patches mozbz#1018486 + +* Mon Sep 26 2016 Jan Horak - 45.4.0-2 +- Added Laszlo Ersek patch for aarch64 crashes + +* Wed Sep 7 2016 Jan Horak - 45.4.0-1 +- Update to 45.4.0 ESR + +* Wed Jul 27 2016 Jan Horak - 45.3.0-1 +- Update to 45.3.0 ESR + +* Mon Jul 11 2016 Martin Stransky - 45.2.0-3 +- Added fix for mozbz#256180 + +* Mon Jun 20 2016 Martin Stransky - 45.2.0-2 +- Added fix for mozbz#975832, rhbz#1343202 + +* Fri Jun 3 2016 Jan Horak - 45.2.0-1 +- Update to 45.2.0 ESR + +* Tue May 10 2016 Martin Stransky - 45.1.1-2 +- Added fix for mozbz#1270046 - new Samba auth response + +* Wed May 4 2016 Jan Horak - 45.1.1-1 +- Update to 45.1.1 ESR + +* Tue May 3 2016 Martin Stransky - 45.1.0-3 +- Disabled ffmpeg (rhbz#1330898) + +* Fri Apr 29 2016 Jan Horak - 45.1.0-1 +- Fixed some regressions introduced by rebase + +* Thu Apr 21 2016 Jan Horak - 45.1.0-1 +- Update to 45.1.0 ESR + +* Tue Apr 12 2016 Jan Horak - 45.0.2-1 +- Update to 45.0.2 ESR + +* Wed Apr 6 2016 Jan Horak - 45.0.1-1 +- Update to 45.0.1 ESR + +* Mon Apr 4 2016 Martin Stransky - 45.0-5 +- Fixed crashed after start (rhbz#1323744, rhbz#1323738) + +* Mon Apr 4 2016 Jan Horak - 45.0-4 +- Added system-level location for configuring Firefox (rhbz#1206239) + +* Mon Mar 7 2016 Jan Horak - 45.0-3 +- Update to 45.0 ESR + +* Fri Dec 11 2015 Jan Horak - 38.5.0-3 +- Update to 38.5.0 ESR + +* Thu Oct 29 2015 Jan Horak - 38.4.0-1 +- Update to 38.4.0 ESR + +* Tue Sep 15 2015 Jan Horak - 38.3.0-2 +- Update to 38.3.0 ESR + +* Wed Aug 26 2015 Martin Stransky - 38.2.1-1 +- Update to 38.2.1 ESR + +* Fri Aug 7 2015 Jan Horak - 38.2.0-4 +- Update to 38.2.0 ESR + +* Thu Aug 6 2015 Jan Horak - 38.1.1-1 +- Update to 38.1.1 ESR + +* Thu Jun 25 2015 Jan Horak - 38.1.0-1 +- Update to 38.1.0 ESR + +* Thu May 21 2015 Jan Horak - 38.0.1-2 +- Fixed rhbz#1222807 by removing preun section + +* Fri May 15 2015 Martin Stransky - 38.0.1-1 +- Update to 38.0.1 ESR + +* Thu May 14 2015 Martin Stransky - 38.0-4 +- Fixed rhbz#1221286 - After update to Firefox 38 ESR + all RH preferences are gone + +* Thu May 7 2015 Martin Stransky - 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 - 38.0b8-0.11 +- Update to 38.0 Beta 8 + +* Wed Apr 22 2015 Martin Stransky - 38.0b6-0.10 +- Added patch for mozbz#1152515 + +* Tue Apr 21 2015 Martin Stransky - 38.0b6-0.9 +- Update to 38.0 Beta 6 + +* Mon Apr 20 2015 Martin Stransky - 38.0b5-0.8 +- Update to 38.0 Beta 5 + +* Fri Apr 10 2015 Martin Stransky - 38.0b3-0.7 +- Update to 38.0 Beta 3 + +* Fri Apr 10 2015 Martin Stransky - 38.0b1-0.6 +- Added patch for mozbz#1152391 + +* Thu Apr 9 2015 Marcin Juszkiewicz - 38.0b1-0.5 +- Fix build on AArch64 (based on upstream skia changes) + +* Tue Apr 7 2015 Martin Stransky - 38.0b1-0.4 +- Enabled debug build + +* Wed Apr 1 2015 Jan Horak - 38.0b1-1 +- Update to 38.0b1 + +* Wed Feb 18 2015 Martin Stransky - 31.5.0-2 +- Update to 31.5.0 ESR Build 2 + +* Tue Jan 6 2015 Jan Horak - 31.4.0-1 +- Update to 31.4.0 ESR + +* Mon Jan 5 2015 Martin Stransky - 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 - 31.3.0-5 +- Fixed problems with dictionary (mozbz#1097550) +- JS JIT fixes for ppc64le + +* Sat Nov 29 2014 Martin Stransky - 31.3.0-3 +- Fixed geolocation key location + +* Fri Nov 28 2014 Martin Stransky - 31.3.0-2 +- Disable exact rooting for JS + +* Wed Nov 26 2014 Martin Stransky - 31.3.0-1 +- Update to 31.3.0 ESR Build 2 +- Fix for geolocation API (rhbz#1063739) + +* Thu Nov 6 2014 Martin Stransky - 31.2.0-5 +- Enabled gstreamer-1 support (rhbz#1161077) + +* Mon Oct 27 2014 Yaakov Selkowitz - 31.2.0-4 +- Fix webRTC for aarch64, ppc64le (rhbz#1148622) + +* Tue Oct 7 2014 Jan Horak - 31.2.0-3 +- Update to 31.2.0 ESR +- Fix for mozbz#1042889 + +* Wed Oct 1 2014 Martin Stransky - 31.1.0-7 +- Enable WebM on all arches + +* Thu Sep 11 2014 Martin Stransky - 31.1.0-6 +- Enable all NPAPI plugins by default to keep compatibility + with the FF24 line + +* Wed Sep 10 2014 Martin Stransky - 31.1.0-5 +- Added workaround for rhbz#1134876 + +* Mon Sep 8 2014 Martin Stransky - 31.1.0-3 +- Disable mozilla::pkix (mozbz#1063315) +- Enable image cache + +* Mon Sep 8 2014 Martin Stransky - 31.1.0-2 +- A workaround for rhbz#1110291 + +* Thu Aug 28 2014 Martin Stransky - 31.1.0-1 +- Update to 31.1.0 ESR + +* Tue Aug 5 2014 Martin Stransky - 31.0-3 +- Built with system libvpx/WebM + +* Mon Aug 4 2014 Martin Stransky - 31.0-2 +- Built with system nss/nspr + +* Mon Jul 28 2014 Martin Stransky - 31.0-1 +- Update to 31.0 ESR + +* Wed Jun 4 2014 Jan Horak - 24.6.0-1 +- Update to 24.6.0 ESR + +* Wed Apr 23 2014 Martin Stransky - 24.5.0-2 +- Removed unused patches + +* Tue Apr 22 2014 Martin Stransky - 24.5.0-1 +- Update to 24.5.0 ESR + +* Tue Apr 15 2014 Martin Stransky - 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 - 24.4.0-2 +- fixed rhbz#1067343 - Broken languagepack configuration + after firefox update + +* Tue Mar 18 2014 Jan Horak - 24.4.0-1 +- Update to 24.4.0 ESR + +* Thu Feb 27 2014 Martin Stransky - 24.3.0-3 +- fixed rhbz#1054832 - Firefox does not support Camellia cipher + +* Mon Feb 3 2014 Jan Horak - 24.3.0-1 +- Update to 24.3.0 ESR + +* Fri Jan 24 2014 Daniel Mach - 24.2.0-3 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 24.2.0-2 +- Mass rebuild 2013-12-27 + +* Mon Dec 9 2013 Martin Stransky - 24.2.0-1 +- Update to 24.2.0 ESR + +* Mon Dec 2 2013 Martin Stransky - 24.1.0-5 +- Fixed mozbz#938730 - avoid mix of memory allocators (crashes) + when using system sqlite + +* Tue Nov 26 2013 Martin Stransky - 24.1.0-4 +- Fixed rhbz#1034541 - No translation being picked up + from langpacks for firefox + +* Fri Nov 8 2013 Martin Stransky - 24.1.0-3 +- Conflicts with old, xulrunner based firefox + +* Thu Nov 7 2013 Martin Stransky - 24.1.0-2 +- Ship dependentlibs.list (rhbz#1027782) +- Nss/nspr dependency update + +* Wed Nov 6 2013 Martin Stransky - 24.1.0-1 +- Update to 24.1.0 ESR + +* Wed Nov 6 2013 Martin Stransky - 24.0-2 +- Build as stand alone browser, without xulrunner + +* Thu Oct 31 2013 Martin Stransky - 24.0-1 +- Update to 24.0 ESR + +* Thu Sep 12 2013 Jan Horak - 17.0.9-1 +- Update to 17.0.9 ESR + +* Thu Aug 29 2013 Martin Stransky - 17.0.8-2 +- Desktop file update +- Spec file tweaks + +* Thu Aug 1 2013 Martin Stransky - 17.0.8-1 +- Update to 17.0.8 ESR + +* Wed Jul 31 2013 Jan Horak - 17.0.7-2 +- Updated manual page + +* Thu Jun 20 2013 Jan Horak - 17.0.7-1 +- Update to 17.0.7 ESR + +* Fri May 17 2013 Jan Horak - 17.0.6-1 +- Update to 17.0.6 ESR + +* Fri May 17 2013 Martin Stransky - 17.0.5-3 +- Removed mozilla prefix from desktop file (rhbz#826960) + +* Thu Apr 18 2013 Martin Stransky - 17.0.5-2 +- Updated XulRunner SDK check + +* Fri Mar 29 2013 Jan Horak - 17.0.5-1 +- Update to 17.0.5 ESR + +* Thu Mar 14 2013 Martin Stransky - 17.0.4-2 +- Fixed rhbz#837606 - firefox has no x-scheme-handler/http mime + +* Wed Mar 13 2013 Martin Stransky - 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 - 17.0.2-3 +- Added NM preferences + +* Fri Jan 11 2013 Martin Stransky - 17.0.2-2 +- Updated preferences (NFS, nspluginwrapper) + +* Thu Jan 10 2013 Jan Horak - 17.0.2-1 +- Update to 17.0.2 ESR + +* Thu Dec 20 2012 Jan Horak - 17.0.1-1 +- Update to 17.0.1 ESR + +* Mon Oct 8 2012 Jan Horak - 10.0.8-2 +- Update to 10.0.8 ESR + +* Sat Aug 25 2012 Jan Horak - 10.0.7-1 +- Update to 10.0.7 ESR + +* Mon Jul 16 2012 Martin Stransky - 10.0.6-1 +- Update to 10.0.6 ESR + +* Mon Jun 25 2012 Martin Stransky - 10.0.5-4 +- Enabled WebM + +* Mon Jun 25 2012 Martin Stransky - 10.0.5-2 +- Added fix for mozbz#703633, rhbz#818341 + +* Fri Jun 1 2012 Martin Stransky - 10.0.5-1 +- Update to 10.0.5 ESR + +* Sun Apr 22 2012 Martin Stransky - 10.0.4-1 +- Update to 10.0.4 ESR + +* Tue Mar 6 2012 Martin Stransky - 10.0.3-1 +- Update to 10.0.3 ESR + +* Thu Feb 9 2012 Jan Horak - 10.0.1-1 +- Update to 10.0.1 ESR + +* Tue Feb 7 2012 Martin Stransky - 10.0-3 +- Update to 10.0 ESR + +* Mon Jan 30 2012 Martin Stransky - 10.0-1 +- Update to 10.0 + +* Mon Sep 26 2011 Martin Stransky - 7.0-5 +- Update to 7.0 + +* Tue Sep 20 2011 Jan Horak - 7.0-4 +- Update to 7.0 Beta 6 + +* Tue Sep 13 2011 Martin Stransky - 7.0-2 +- Update to 7.0 Beta 4 + +* Mon Jul 11 2011 Martin Stransky - 5.0-1 +- Update to 5.0 + +* Mon Jun 13 2011 Jan Horak - 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 - 3.6.17-1 +- Update to 3.6.17 + +* Tue Mar 8 2011 Jan Horak - 3.6.15-1 +- Update to 3.6.15 + +* Mon Feb 21 2011 Jan Horak - 3.6.14-4 +- Update to build3 + +* Tue Feb 8 2011 Jan Horak - 3.6.14-3 +- Update to build2 + +* Wed Jan 26 2011 Jan Horak - 3.6.14-2 +- Update to 3.6.14