summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorB. Stack <bgstack15@gmail.com>2021-06-09 14:19:17 -0400
committerB. Stack <bgstack15@gmail.com>2021-06-09 14:19:17 -0400
commit95e023ae49542975dafe4b02314769c5014cb71d (patch)
tree49721232a5824898e82bd2c0a623b430a161c85b
parentDisabled arm due to bugzilla.redhat.com/show_bug.cgi?id=1966949 (diff)
downloadlibrewolf-fedora-ff-89.0-1.tar.gz
librewolf-fedora-ff-89.0-1.tar.bz2
librewolf-fedora-ff-89.0-1.zip
89.0 from fedora89.0-1
-rw-r--r--.gitignore3
-rw-r--r--README.md30
-rw-r--r--armhf-reduce-linker-memory-use.patch27
-rw-r--r--cbindgen-vendor.tar.xzbin0 -> 5624628 bytes
-rw-r--r--context-menu.patch43
-rw-r--r--fix-armhf-webrtc-build.patch65
-rw-r--r--librewolf-branding.tgzbin0 -> 1036752 bytes
-rwxr-xr-xlibrewolf.cfg666
-rw-r--r--librewolf.spec1738
-rw-r--r--megabar.patch166
-rw-r--r--mozilla-vpn-ad.patch17
-rw-r--r--reduce-rust-debuginfo.patch21
-rw-r--r--relax-cargo-dep.patch11
-rw-r--r--remove_addons.patch74
-rw-r--r--sandbox-update-arm-syscall-numbers.patch144
-rw-r--r--sources4
-rw-r--r--use-system-icupkg.patch13
-rw-r--r--webrtc-fix-compiler-flags-for-armhf.patch35
18 files changed, 3052 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index ff35ee1..c1c2cb4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -314,7 +314,6 @@ firefox-3.6.4.source.tar.bz2
/firefox-langpacks-62.0.3-20181002.tar.xz
/firefox-63.0.source.tar.xz
/firefox-langpacks-63.0-20181018.tar.xz
-/cbindgen-vendor.tar.xz
/firefox-langpacks-63.0.1-20181101.tar.xz
/firefox-63.0.1.source.tar.xz
/firefox-63.0.3.source.tar.xz
@@ -459,3 +458,5 @@ firefox-3.6.4.source.tar.bz2
/firefox-langpacks-88.0.1-20210510.tar.xz
/firefox-langpacks-89.0-20210601.tar.xz
/firefox-89.0.source.tar.xz
+*.spec?
+.*.swp
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..48a88a6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,30 @@
+# README for librewolf-fedora-ff
+
+## Overview
+After using the [prep-librewolf-rpm.sh](https://gitlab.com/bgstack15/librewolf-fedora) script, a modified copy of Fedora Firefox src.rpm git repo exists on the local filesystem.
+
+If this README.md exists in a directory named `for-repo`, then it is still in its source location from the above link, and not in its final location.
+
+## This repository
+This README file belongs in the modified copy of that Fedora Firefox src.rpm [git repository](https://src.fedoraproject.org/rpms/firefox). That modified git repo can be sent up to a [new web location](https://gitlab.com/bgstack15/librewolf-fedora-ff).
+
+Fedora [COPR](https://copr.fedorainfracloud.org/coprs/bgstack15/AfterMozilla/packages/) can then use rpkg to pull this new git repository, so users do not have to upload the 400MB src.rpm manually.
+
+## Using this repository
+Script `git-helper.sh` included in the [librewolf-fedora](https://gitlab.com/bgstack15/librewolf-fedora) repository will add the new git repo for librewolf-fedora-ff and fix the .gitignore.
+
+## Differences from upstream repo
+The Librewolf rpm git repo makes some changes to the Firefox rpm git repo.
+Files are added or modified:
+* this README.md
+* .gitignore
+* librewolf.spec
+* LibreWolf patches that are not named here
+* a few tarballs omitted from upstream git sources:
+ * cbindgen-vendor.tar.xz
+ * `firefox-langpacks-*.tar.xz`
+
+Files that are removed:
+* sources
+
+Fedora's dist-git project provides a lookaside cache for large assets so they do not have to be stored in source control. The `sources` file links to those files, but we embed in the librewolf src.rpm the two tarballs we need.
diff --git a/armhf-reduce-linker-memory-use.patch b/armhf-reduce-linker-memory-use.patch
new file mode 100644
index 0000000..dbe74cf
--- /dev/null
+++ b/armhf-reduce-linker-memory-use.patch
@@ -0,0 +1,27 @@
+Description: starting with firefox 66, armhf builds on Launchpad frequently
+ fail with "/usr/bin/ld: final link failed: memory exhausted" when linking
+ libxul.so. This is an attempt to reduce the memory used by ld.
+Author: Olivier Tilloy <olivier.tilloy@canonical.com>
+
+--- a/build/moz.configure/toolchain.configure
++++ b/build/moz.configure/toolchain.configure
+@@ -2349,15 +2349,17 @@
+ set_config("LINKER_KIND", select_linker.KIND)
+
+
+-@depends_if(select_linker, target, macos_sdk, sysroot_path, multiarch_dir)
++@depends_if(select_linker, target, macos_sdk, sysroot_path, multiarch_dir, host)
+ @imports("os")
+-def linker_ldflags(linker, target, macos_sdk, sysroot_path, multiarch_dir):
++def linker_ldflags(linker, target, macos_sdk, sysroot_path, multiarch_dir, host):
+ flags = list((linker and linker.LINKER_FLAG) or [])
+ if target.kernel == "Darwin":
+ if linker and linker.KIND == "ld64":
+ flags.append("-Wl,-syslibroot,%s" % macos_sdk)
+ else:
+ flags.append("-Wl,--sysroot=%s" % macos_sdk)
++ if host.cpu == "arm":
++ flags.append("-Wl,--no-keep-memory")
+
+ if sysroot_path and multiarch_dir:
+ for d in ("lib", "usr/lib"):
diff --git a/cbindgen-vendor.tar.xz b/cbindgen-vendor.tar.xz
new file mode 100644
index 0000000..9d6dda0
--- /dev/null
+++ b/cbindgen-vendor.tar.xz
Binary files differ
diff --git a/context-menu.patch b/context-menu.patch
new file mode 100644
index 0000000..5685f96
--- /dev/null
+++ b/context-menu.patch
@@ -0,0 +1,43 @@
+diff --git a/browser/base/content/browser-context.inc b/browser/base/content/browser-context.inc
+--- a/browser/base/content/browser-context.inc
++++ b/browser/base/content/browser-context.inc
+@@ -102,19 +102,16 @@
+ oncommand="gContextMenu.openLinkInPrivateWindow();"/>
+ <menuseparator id="context-sep-open"/>
+ <menuitem id="context-bookmarklink"
+ data-l10n-id="main-context-menu-bookmark-link"
+ oncommand="gContextMenu.bookmarkLink();"/>
+ <menuitem id="context-savelink"
+ data-l10n-id="main-context-menu-save-link"
+ oncommand="gContextMenu.saveLink();"/>
+- <menuitem id="context-savelinktopocket"
+- data-l10n-id="main-context-menu-save-link-to-pocket"
+- oncommand= "Pocket.savePage(gContextMenu.browser, gContextMenu.linkURL);"/>
+ <menuitem id="context-copyemail"
+ data-l10n-id="main-context-menu-copy-email"
+ oncommand="gContextMenu.copyEmail();"/>
+ <menuitem id="context-copylink"
+ data-l10n-id="main-context-menu-copy-link-simple"
+ oncommand="gContextMenu.copyLink();"/>
+ <menu id="context-sendlinktodevice"
+ class="sync-ui-item"
+@@ -254,19 +251,16 @@
+ #ifdef XP_MACOSX
+ <menuitem id="context-bookmarkpage"
+ data-l10n-id="main-context-menu-bookmark-add-mac"
+ oncommand="gContextMenu.bookmarkThisPage();"/>
+ #endif
+ <menuitem id="context-savepage"
+ data-l10n-id="main-context-menu-page-save"
+ oncommand="gContextMenu.savePageAs();"/>
+- <menuitem id="context-pocket"
+- data-l10n-id="main-context-menu-save-to-pocket"
+- oncommand="Pocket.savePage(gContextMenu.browser, gContextMenu.browser.currentURI.spec, gContextMenu.browser.contentTitle);"/>
+ <menu id="context-sendpagetodevice"
+ class="sync-ui-item"
+ data-l10n-id="main-context-menu-send-to-device"
+ hidden="true">
+ <menupopup id="context-sendpagetodevice-popup"
+ onpopupshowing="(() => { gSync.populateSendTabToDevicesMenu(event.target, gBrowser.currentURI.spec, gBrowser.contentTitle); })()"/>
+ </menu>
+ <menu id="fill-login" hidden="true">
diff --git a/fix-armhf-webrtc-build.patch b/fix-armhf-webrtc-build.patch
new file mode 100644
index 0000000..9f45a78
--- /dev/null
+++ b/fix-armhf-webrtc-build.patch
@@ -0,0 +1,65 @@
+--- a/third_party/libwebrtc/webrtc/system_wrappers/cpu_features_linux_gn/moz.build
++++ b/third_party/libwebrtc/webrtc/system_wrappers/cpu_features_linux_gn/moz.build
+@@ -31,10 +31,6 @@ LOCAL_INCLUDES += [
+ "/third_party/libwebrtc/webrtc/"
+ ]
+
+-UNIFIED_SOURCES += [
+- "/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c"
+-]
+-
+ if not CONFIG["MOZ_DEBUG"]:
+
+ DEFINES["DYNAMIC_ANNOTATIONS_ENABLED"] = "0"
+@@ -53,20 +49,36 @@ if CONFIG["CPU_ARCH"] == "aarch64":
+ DEFINES["WEBRTC_ARCH_ARM64"] = True
+ DEFINES["WEBRTC_HAS_NEON"] = True
+
+-if CONFIG["CPU_ARCH"] == "arm":
+-
+- CFLAGS += [
+- "-mfpu=neon"
++ UNIFIED_SOURCES += [
++ "/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c"
+ ]
+
++if CONFIG["CPU_ARCH"] == "arm":
++
+ DEFINES["WEBRTC_ARCH_ARM"] = True
+ DEFINES["WEBRTC_ARCH_ARM_V7"] = True
+ DEFINES["WEBRTC_HAS_NEON"] = True
+
++if CONFIG["CPU_ARCH"] == "ppc64":
++
++ UNIFIED_SOURCES += [
++ "/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c"
++ ]
++
+ if CONFIG["CPU_ARCH"] == "x86":
+
+ CFLAGS += [
+ "-msse2"
+ ]
+
++ UNIFIED_SOURCES += [
++ "/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c"
++ ]
++
++if CONFIG["CPU_ARCH"] == "x86_64":
++
++ UNIFIED_SOURCES += [
++ "/third_party/libwebrtc/webrtc/system_wrappers/source/cpu_features_linux.c"
++ ]
++
+ Library("cpu_features_linux_gn")
+--- a/third_party/libwebrtc/webrtc/system_wrappers/BUILD.gn
++++ b/third_party/libwebrtc/webrtc/system_wrappers/BUILD.gn
+@@ -187,7 +187,7 @@ if (is_android && !build_with_mozilla) {
+ }
+ }
+
+-if (is_linux) {
++if (is_linux && target_cpu != "arm") {
+ rtc_static_library("cpu_features_linux") {
+ sources = [
+ "source/cpu_features_linux.c",
diff --git a/librewolf-branding.tgz b/librewolf-branding.tgz
new file mode 100644
index 0000000..7659ae4
--- /dev/null
+++ b/librewolf-branding.tgz
Binary files differ
diff --git a/librewolf.cfg b/librewolf.cfg
new file mode 100755
index 0000000..616da4a
--- /dev/null
+++ b/librewolf.cfg
@@ -0,0 +1,666 @@
+//---------------|
+// LibreWolf |
+//---------------|
+// Glossary: |
+// ================================================================================================================================|
+// |
+// "Section" : Description of the settings section separated by "----" |
+// "Pref" : Preference/Settings name and or description followed by links or documentations |
+// and some time explanation why the setting is commented and ignored. |
+// "lockPref" : Locked preference can not be changed on firefox, nor by extensions, can only be changed here |
+// lockPref is used to lock preferences so they cannot be changed through the GUI or about:config. |
+// In many cases the GUI will change to reflect this, graying out or removing options. Appears |
+// in about:config as "locked". Some config items require lockPref to be set, such as app.update.enabled. |
+// It will not work if it set with just pref. |
+// "pref" : Sets the preference as if a user had set it, every time you start the browser. So users can make changes, |
+// but they will be erased on restart. If you set a particular preference this way, |
+// it shows up in about:config as "user set". |
+// "defaultPref" : Defaulting : Is used to alter the default value, though users can set it normally and their changes will |
+// be saved between sessions. If preferences are reset to default through the GUI or some other method, |
+// this is what they will go back to. Appears in about:config as "default". |
+// "clearPref" : Can be used to "blank" certain preferences. This can be useful e.g. to disable functions |
+// that rely on comparing version numbers. |
+// |
+// ================================================================================================================================|
+
+// -----------------------------------
+// # SETTINGS VERSION
+// -----------------------------------
+
+defaultPref("librewolf.cfg.version", "1.0");
+
+// -----------------------------------
+// # TRACKING PROTECTION
+// -----------------------------------
+
+defaultPref("browser.contentblocking.category", "custom"); // do not lock as it breaks UI even more
+lockPref("privacy.trackingprotection.enabled", false);
+lockPref("privacy.trackingprotection.pbmode.enabled", false);
+defaultPref("privacy.trackingprotection.cryptomining.enabled", false);
+defaultPref("privacy.trackingprotection.fingerprinting.enabled", false);
+lockPref("privacy.trackingprotection.annotate_channels", false);
+
+// remove urls
+defaultPref("browser.safebrowsing.provider.mozilla.updateURL", "");
+defaultPref("browser.safebrowsing.provider.mozilla.gethashURL", "");
+
+// hide ui elements
+defaultPref("browser.contentblocking.cryptomining.preferences.ui.enabled", false);
+defaultPref("browser.contentblocking.fingerprinting.preferences.ui.enabled", false);
+lockPref("browser.contentblocking.report.hide_vpn_banner", true);
+lockPref("browser.contentblocking.report.show_mobile_app", false);
+lockPref("browser.contentblocking.report.lockwise.enabled", false);
+lockPref("browser.contentblocking.report.monitor.enabled", false);
+lockPref("browser.contentblocking.report.vpn.enabled", false);
+
+// ----------------------------------
+// # AUTOPLAY
+// ----------------------------------
+
+defaultPref("media.autoplay.default", 5);
+defaultPref("media.autoplay.blocking_policy", 2);
+
+// -----------------------------------------
+// # PASSWORD MANAGER
+// -----------------------------------------
+
+lockPref("signon.rememberSignons", false);
+lockPref("signon.storeWhenAutocompleteOff", false);
+lockPref("signon.formlessCapture.enabled", false);
+lockPref("signon.autofillForms", false);
+defaultPref("signon.management.page.breach-alerts.enabled", false);
+defaultPref("signon.management.page.breachAlertUrl", "");
+
+// --------------------------------
+// # SEARCH AND URLBAR
+// --------------------------------
+
+defaultPref("browser.urlbar.dnsResolveSingleWordsAfterSearch", 0);
+lockPref("browser.urlbar.speculativeConnect.enabled", false);
+defaultPref("browser.urlbar.trimURLs", false);
+defaultPref("browser.search.suggest.enabled", false);
+defaultPref("browser.search.region", "US");
+lockPref("browser.fixup.alternate.enabled", false);
+defaultPref("browser.urlbar.suggest.searches", false);
+defaultPref("browser.search.update", false);
+
+// --------------------------------
+// # SANITIZING, COOKIES AND HISTORY
+// --------------------------------
+
+defaultPref("network.cookie.cookieBehavior", 5); // dFPI, previously set to 1
+defaultPref("network.cookie.lifetimePolicy", 2);
+defaultPref("network.cookie.thirdparty.sessionOnly", true);
+defaultPref("network.cookie.thirdparty.nonsecureSessionOnly", true);
+
+// includes new cookie behavior that allows to stay logged with exceptions
+defaultPref("privacy.clearOnShutdown.cookies", false);
+defaultPref("privacy.clearOnShutdown.offlineApps", false);
+defaultPref("privacy.cpd.cookies", false); // just for consistency to avoid accidental logout
+defaultPref("privacy.cpd.offlineApps", false); // just for consistency to avoid accidental logout
+
+defaultPref("privacy.sanitize.timeSpan", 0);
+defaultPref("browser.formfill.enable", false);
+defaultPref("privacy.sanitize.sanitizeOnShutdown", true);
+defaultPref("places.history.enabled", false);
+defaultPref("privacy.history.custom", true);
+
+// --------------------------------------------------------------------
+// # SESSIONS
+// --------------------------------------------------------------------
+
+defaultPref("browser.sessionstore.privacy_level", 2);
+defaultPref("browser.sessionstore.interval", 60000);
+
+// ---------------------------------
+// # AUTOFILL
+// ---------------------------------
+
+defaultPref("extensions.formautofill.available", "off");
+defaultPref("extensions.formautofill.addresses.enabled", false);
+defaultPref("extensions.formautofill.creditCards.enabled", false);
+defaultPref("extensions.formautofill.creditCards.available", false);
+defaultPref("extensions.formautofill.heuristics.enabled", false);
+
+// -----------------------
+// # DRM
+// -----------------------
+
+defaultPref("media.eme.enabled", false);
+defaultPref("media.gmp-widevinecdm.visible", false);
+defaultPref("media.gmp-widevinecdm.enabled", false);
+defaultPref("media.gmp-provider.enabled", false);
+defaultPref("media.gmp-manager.url", "data:text/plain,"); // had to re-add to prevent connections
+
+defaultPref("media.gmp-gmpopenh264.enabled", false);
+
+// ----------------------
+// # WEBRTC
+// ----------------------
+
+defaultPref("media.navigator.enabled", false);
+defaultPref("media.peerconnection.enabled", false);
+defaultPref("media.peerconnection.ice.default_address_only", true);
+defaultPref("media.peerconnection.ice.no_host", true);
+defaultPref("media.peerconnection.ice.proxy_only_if_behind_proxy", true);
+
+// ----------------------
+// # SHARING
+// ----------------------
+
+defaultPref("media.getusermedia.browser.enabled", false);
+defaultPref("media.getusermedia.screensharing.enabled", false);
+defaultPref("media.getusermedia.audiocapture.enabled", false);
+
+// ----------------------------
+// # DNS
+// ----------------------------
+
+defaultPref("network.trr.mode", 5);
+defaultPref("network.trr.uri", "");
+defaultPref("network.dns.disableIPv6", true);
+lockPref("network.dns.disablePrefetch", true);
+
+// ------------------------------------
+// # NEW TAB PAGE
+// ------------------------------------
+
+lockPref("browser.newtab.preload", false);
+lockPref("browser.newtabpage.activity-stream.feeds.section.highlights", false); // default
+lockPref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", false);
+lockPref("browser.newtabpage.activity-stream.feeds.newtabinit", false);
+lockPref("browser.newtabpage.activity-stream.feeds.places", false);
+lockPref("browser.newtabpage.activity-stream.feeds.systemtick", false);
+lockPref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
+lockPref("browser.newtabpage.activity-stream.feeds.topsites", false);
+lockPref("browser.newtabpage.activity-stream.feeds.system.topsites", false);
+lockPref("browser.newtabpage.activity-stream.feeds.system.topstories", false);
+lockPref("browser.newtabpage.activity-stream.feeds.telemetry", false);
+lockPref("browser.newtabpage.activity-stream.feeds.snippets", false); // default
+lockPref("browser.newtabpage.activity-stream.feeds.section.topstories.options", "");
+lockPref("browser.newtabpage.activity-stream.section.highlights.includeBookmarks", false);
+lockPref("browser.newtabpage.activity-stream.section.highlights.includeDownloads", false);
+lockPref("browser.newtabpage.activity-stream.section.highlights.includeVisited", false);
+lockPref("browser.newtabpage.activity-stream.section.highlights.includePocket", false);
+lockPref("browser.newtabpage.activity-stream.showSponsored", false);
+lockPref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
+lockPref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
+lockPref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
+lockPref("browser.newtabpage.activity-stream.asrouter.providers.messaging-experiments", "");
+lockPref("browser.newtabpage.activity-stream.asrouter.providers.message-groups", "");
+lockPref("browser.newtabpage.activity-stream.asrouter.providers.cfr-fxa", "");
+lockPref("browser.newtabpage.activity-stream.asrouter.providers.cfr", "");
+lockPref("browser.newtabpage.activity-stream.asrouter.providers.whats-new-panel", "{\"id\":\"whats-new-panel\",\"enabled\":false}");
+lockPref("browser.newtabpage.activity-stream.asrouter.devtoolsEnableds", true);
+lockPref("browser.newtabpage.activity-stream.telemetry", false);
+lockPref("browser.newtabpage.activity-stream.telemetry.structuredIngestion.endpoint", "");
+lockPref("browser.newtabpage.activity-stream.default.sites", "");
+lockPref("browser.newtabpage.activity-stream.discoverystream.enabled", false);
+lockPref("browser.newtabpage.activity-stream.discoverystream.config", "{\"collapsible\":true,\"enabled\":false,\"personalized\":false,\"layout_endpoint\":\"\"}");
+lockPref("browser.newtabpage.activity-stream.discoverystream.endpoints", "");
+lockPref("browser.newtabpage.activity-stream.discoverystream.engagementLabelEnabled", false); // default
+lockPref("browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts", false);
+lockPref("browser.newtabpage.activity-stream.improvesearch.handoffToAwesomebar", false);
+lockPref("browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.searchEngines", "");
+lockPref("browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned", "");
+lockPref("browser.newtabpage.activity-stream.fxaccounts.endpoint", "");
+
+// -------------------------------------------
+// # DO NOT TRACK
+// -------------------------------------------
+
+// Unlocked as some think it increases fingerprint, they can now disable it
+defaultPref("privacy.donottrackheader.enabled", true);
+
+// --------------------------------
+// # DOM
+// --------------------------------
+
+defaultPref("dom.disable_beforeunload", true);
+defaultPref("dom.disable_open_during_load", true);
+defaultPref("dom.push.enabled", false);
+defaultPref("dom.push.connection.enabled", false);
+defaultPref("dom.push.serverURL", ""); //default "wss://push.services.mozilla.com/"
+defaultPref("dom.push.userAgentID", "");
+defaultPref("dom.targetBlankNoOpener.enabled", true);
+defaultPref("dom.disable_window_move_resize", true);
+defaultPref("dom.serviceWorkers.enabled", false);
+defaultPref("dom.battery.enabled", false);
+defaultPref("dom.popup_maximum", 4);
+defaultPref("dom.popup_allowed_events", "click dblclick mousedown pointerdown");
+defaultPref("dom.webaudio.enabled", false);
+defaultPref("dom.vr.enabled", false);
+defaultPref("dom.vibrator.enabled", false);
+defaultPref("dom.storage.next_gen", true);
+
+// --------------------------------
+// # PERMISSIONS
+// --------------------------------
+
+lockPref("permissions.delegation.enabled", false);
+defaultPref("permissions.default.geo", 2); // unlocked as some think it increases fingerprint, they can now disable it
+lockPref("permissions.manager.defaultsUrl", "");
+
+// --------------------------------
+// # REFERERS
+// --------------------------------
+
+defaultPref("network.http.referer.XOriginTrimmingPolicy", 2);
+defaultPref("network.http.referer.XOriginPolicy", 0);
+
+// --------------------------------
+// # PROXY
+// --------------------------------
+
+defaultPref("network.proxy.socks_remote_dns", true);
+
+// --------------------------------------
+// # HTTP(S)
+// --------------------------------------
+
+lockPref("network.http.altsvc.enabled", false);
+lockPref("network.http.altsvc.oe", false);
+defaultPref("dom.security.https_only_mode", true);
+defaultPref("dom.security.https_only_mode_pbm", true);
+defaultPref("network.auth.subresource-http-auth-allow", 1);
+
+// --------------------------------------
+// # TLS
+// --------------------------------------
+
+defaultPref("security.ssl.require_safe_negotiation", true);
+lockPref("security.ssl.treat_unsafe_negotiation_as_broken", true);
+defaultPref("browser.ssl_override_behavior", 1);
+lockPref("security.tls.enable_0rtt_data", false);
+lockPref("security.tls.version.enable-deprecated", false);
+defaultPref("security.tls.version.fallback-limit", 3);
+defaultPref("browser.xul.error_pages.expert_bad_cert", true); // advanced ui infos
+
+// --------------------------------------
+// # RFP
+// --------------------------------------
+
+defaultPref("privacy.resistFingerprinting", true);
+defaultPref("privacy.resistFingerprinting.block_mozAddonManager", true);
+lockPref("browser.startup.blankWindow", false); // breaks RFP windows resizing
+
+// --------------------------------------
+// # FISSION
+// --------------------------------------
+
+// commented out for now, keep an eye on
+// defaultPref("fission.autostart", true);
+
+// --------------------------------------
+// # LANGUAGE AND REGION
+// --------------------------------------
+
+defaultPref("javascript.use_us_english_locale", true);
+defaultPref("intl.locale.requested", "en-US");
+defaultPref("privacy.spoof_english", 2);
+
+// -------------------------------------------------------
+// # EXTENSIONS - check readme section "Extensions Firewall"
+// -------------------------------------------------------
+
+// handle default restricted domains
+defaultPref("extensions.webextensions.restrictedDomains", ""); // This will allow extensions to work everywhere, default "debug-notes.log"
+lockPref("extensions.webextensions.identity.redirectDomain", ""); // Redirect basedomain used by identity api, default "extensions.allizom.org"
+
+// disable network for the extensions
+// Enable-Firewall-Feature-In-The-Next-Line extensions-firewall >>>>>>
+defaultPref("extensions.webextensions.base-content-security-policy", "script-src 'self' https://* moz-extension: blob: filesystem: 'unsafe-eval' 'unsafe-inline'; object-src 'self' https://* moz-extension: blob: filesystem:;");
+
+// set extensions scopes
+defaultPref("extensions.enabledScopes", 5);
+defaultPref("extensions.autoDisableScopes", 11);
+
+// Relevant for addons and lang packs search
+defaultPref("extensions.getAddons.search.browseURL", ""); // https://addons.mozilla.org/%LOCALE%/firefox/search?q=%TERMS%&platform=%OS%&appver=%VERSION%
+defaultPref("extensions.getAddons.langpacks.url", ""); // https://services.addons.mozilla.org/api/v3/addons/language-tools/?app=firefox&type=language&appversion=%VERSION%
+
+// other urls
+defaultPref("extensions.getAddons.get.url", ""); // https://services.addons.mozilla.org/api/v3/addons/search/?guid=%IDS%&lang=%LOCALE%
+defaultPref("extensions.getAddons.link.url", ""); // https://addons.mozilla.org/%LOCALE%/firefox/
+
+// probably better to have it, it still must be manually triggered
+defaultPref("extensions.update.url", ""); // https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%
+
+// ui
+defaultPref("extensions.getAddons.showPane", false);
+lockPref("extensions.getAddons.discovery.api_url", "");
+lockPref("extensions.htmlaboutaddons.recommendations.enabled", false);
+lockPref("extensions.webcompat-reporter.enabled", false);
+lockPref("extensions.webcompat-reporter.newIssueEndpoint", "");// https://webcompat.com/issues/new
+
+// background checking and updating
+defaultPref("extensions.update.enabled", false);
+defaultPref("extensions.update.autoUpdateDefault", false);
+defaultPref("extensions.update.background.url", "");
+defaultPref("extensions.getAddons.cache.enabled", false);
+
+// blocklist is a security feature, best left at default
+// defaultPref("extensions.blocklist.enabled", false);
+// defaultPref("extensions.blocklist.detailsURL", "");
+// defaultPref("extensions.blocklist.itemURL", "");
+
+// system addons
+lockPref("extensions.systemAddon.update.url", "");
+lockPref("extensions.systemAddon.update.enabled", false);
+
+defaultPref("xpinstall.signatures.devInfoURL", "");
+lockPref("extensions.webservice.discoverURL", "");
+lockPref("webextensions.storage.sync.serverURL", "");
+lockPref("lightweightThemes.getMoreURL", "");
+defaultPref("extensions.postDownloadThirdPartyPrompt", false);
+
+// -------------------------------------------------------
+// # NORMANDY
+// -------------------------------------------------------
+
+lockPref("app.normandy.enabled", false);
+lockPref("app.normandy.api_url", "");
+lockPref("app.normandy.user_id", "");
+lockPref("app.normandy.shieldLearnMoreUrl", "");
+
+// --------------------------------
+// # SECURITY
+// --------------------------------
+
+// certificates
+defaultPref("security.cert_pinning.enforcement_level", 2);
+defaultPref("security.OCSP.enabled", 0);
+defaultPref("security.OCSP.require", false);
+defaultPref("security.pki.sha1_enforcement_level", 1);
+
+// mixed content
+lockPref("security.mixed_content.block_display_content", true);
+lockPref("security.mixed_content.block_active_content", true);
+
+// ui
+lockPref("security.insecure_connection_text.enabled", true);
+lockPref("security.insecure_connection_text.pbmode.enabled", true);
+
+lockPref("security.dialog_enable_delay", 700);
+lockPref("security.csp.enable", true);
+
+// -------------------------------------------------------
+// # SAFE BROWSING
+// -------------------------------------------------------
+
+// re-enabling
+defaultPref("browser.safebrowsing.malware.enabled", false);
+defaultPref("browser.safebrowsing.phishing.enabled", false);
+defaultPref("browser.safebrowsing.blockedURIs.enabled", false);
+defaultPref("browser.safebrowsing.provider.google4.gethashURL", "");
+defaultPref("browser.safebrowsing.provider.google4.updateURL", "");
+defaultPref("browser.safebrowsing.provider.google.gethashURL", "");
+defaultPref("browser.safebrowsing.provider.google.updateURL", "");
+
+// downloads
+lockPref("browser.safebrowsing.downloads.enabled", false);
+
+// remote downloads, unwanted software, data sharing
+lockPref("browser.safebrowsing.passwords.enabled", false);
+lockPref("browser.safebrowsing.downloads.remote.enabled", false);
+lockPref("browser.safebrowsing.downloads.remote.block_dangerous", false);
+lockPref("browser.safebrowsing.downloads.remote.block_dangerous_host", false);
+lockPref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false);
+lockPref("browser.safebrowsing.downloads.remote.block_uncommon", false);
+lockPref("browser.safebrowsing.downloads.remote.url", "");
+lockPref("browser.safebrowsing.provider.google4.dataSharing.enabled", false);
+lockPref("browser.safebrowsing.provider.google4.dataSharingURL", "");
+
+// commented all below as they do no harm and make enabling SB painful
+// could potentially at some point
+// defaultPref("browser.safebrowsing.id", "");
+// defaultPref("browser.safebrowsing.provider.google4.pver", "");
+// defaultPref("browser.safebrowsing.provider.google4.advisoryName", "");
+// defaultPref("browser.safebrowsing.provider.google4.advisoryURL", "");
+// defaultPref("browser.safebrowsing.provider.google4.lists", "");
+// defaultPref("browser.safebrowsing.provider.google4.reportMalwareMistakeURL", "");
+// defaultPref("browser.safebrowsing.provider.google4.reportPhishMistakeURL", "");
+// defaultPref("browser.safebrowsing.provider.google4.reportURL", "");
+// defaultPref("browser.safebrowsing.provider.google4.lastupdatetime", "");
+// defaultPref("browser.safebrowsing.provider.google4.nextupdatetime", "");
+// defaultPref("browser.safebrowsing.provider.google.advisoryName", "");
+// defaultPref("browser.safebrowsing.provider.google.advisoryURL", "");
+// defaultPref("browser.safebrowsing.provider.google.lastupdatetime", "");
+// defaultPref("browser.safebrowsing.provider.google.lists", "");
+// defaultPref("browser.safebrowsing.provider.google.nextupdatetime", "");
+// defaultPref("browser.safebrowsing.provider.google.pver", "");
+// defaultPref("browser.safebrowsing.provider.google.reportMalwareMistakeURL", "");
+// defaultPref("browser.safebrowsing.provider.google.reportPhishMistakeURL", "");
+// defaultPref("browser.safebrowsing.provider.google.reportURL", "");
+// defaultPref("browser.safebrowsing.reportPhishURL", "");
+
+// --------------------------------
+// # FONTS
+// --------------------------------
+
+lockPref("gfx.font_rendering.graphite.enabled", false);
+lockPref("gfx.font_rendering.opentype_svg.enabled", false);
+
+// --------------------------------
+// # MISC
+// --------------------------------
+
+// more important stuff
+lockPref("browser.shell.shortcutFavicons", false);
+defaultPref("browser.link.open_newwindow", 3);
+defaultPref("browser.link.open_newwindow.restriction", 0);
+defaultPref("network.file.disable_unc_paths", true); // (hidden pref)
+lockPref("network.gio.supported-protocols", ""); // (hidden pref)
+lockPref("network.IDN_show_punycode", true);
+defaultPref("browser.display.use_system_colors", false); // default but enforced due to RFP
+
+// pdf reader
+defaultPref("pdfjs.disabled", false);
+defaultPref("pdfjs.enableScripting", false);
+defaultPref("pdfjs.previousHandler.alwaysAskBeforeHandling", true);
+defaultPref("pdfjs.enabledCache.state", false);
+
+// remote agent
+lockPref("remote.enabled", false);
+
+// settings and behavior
+lockPref("browser.shell.checkDefaultBrowser", false);
+lockPref("browser.shell.didSkipDefaultBrowserCheckOnFirstRun", true);
+defaultPref("startup.homepage_override_url", "about:blank");
+defaultPref("startup.homepage_welcome_url", "about:blank");
+defaultPref("startup.homepage_welcome_url.additional", "");
+lockPref("browser.startup.homepage_override.mstone", "ignore");
+defaultPref("privacy.userContext.enabled", true);
+defaultPref("general.autoScroll", false); // OS specific
+defaultPref("clipboard.autocopy", false); // OS specific
+defaultPref("browser.tabs.loadBookmarksInTabs", true); // OS specific
+defaultPref("browser.download.manager.addToRecentDocs", false);
+defaultPref("accessibility.force_disabled", 1);
+lockPref("browser.uitour.enabled", false);
+lockPref("middlemouse.contentLoadURL", false);
+defaultPref("network.manage-offline-status", false);
+defaultPref("browser.helperApps.deleteTempFileOnExit", true);
+lockPref("browser.pagethumbnails.capturing_disabled", true);
+lockPref("browser.bookmarks.max_backups", 2);
+
+// devtools
+defaultPref("devtools.debugger.remote-enabled", false);
+defaultPref("devtools.chrome.enabled", false);
+defaultPref("devtools.performance.recording.ui-base-url", "http://localhost:55555"); // Default Value : https://profiler.firefox.com
+defaultPref("devtools.devices.url", "");
+defaultPref("devtools.remote.adb.extensionURL", ""); // [FF64+]
+defaultPref("devtools.remote.adb.extensionID", ""); // default adb@mozilla.org [FF64+]
+defaultPref("devtools.selfxss.count", 0); // see https://gitlab.com/librewolf-community/browser/linux/-/issues/80
+
+// ui
+defaultPref("browser.tabs.drawInTitlebar", true); // OS specific
+defaultPref("browser.aboutConfig.showWarning", false);
+defaultPref("general.warnOnAboutConfig", false);
+defaultPref("browser.download.autohideButton", false);
+defaultPref("privacy.userContext.ui.enabled", true);
+lockPref("browser.messaging-system.whatsNewPanel.enabled", false);
+
+// urls and handlers
+lockPref("media.decoder-doctor.new-issue-endpoint", "");
+lockPref("identity.sync.tokenserver.uri", "");
+lockPref("network.trr.confirmationNS", "");
+lockPref("browser.translation.engine", ""); // default Google
+lockPref("gecko.handlerService.schemes.mailto.0.uriTemplate", "");
+lockPref("gecko.handlerService.schemes.mailto.0.name", ""); // default Yahoo! Mail
+lockPref("gecko.handlerService.schemes.mailto.1.uriTemplate", "");
+lockPref("gecko.handlerService.schemes.mailto.1.name", ""); // default Gmail
+lockPref("gecko.handlerService.schemes.irc.0.uriTemplate", "");
+lockPref("gecko.handlerService.schemes.irc.0.name", "");
+lockPref("gecko.handlerService.schemes.ircs.0.uriTemplate", "");
+lockPref("gecko.handlerService.schemes.ircs.0.name", "");
+lockPref("services.settings.server", "");
+lockPref("accessibility.support.url", "");
+lockPref("app.support.baseURL", "");
+lockPref("browser.uitour.url", "");
+lockPref("webchannel.allowObject.urlWhitelist", "");
+lockPref("browser.dictionaries.download.url", "");
+lockPref("browser.geolocation.warning.infoURL", "");
+lockPref("browser.search.searchEnginesURL", "");
+lockPref("browser.uitour.themeOrigin", "");
+lockPref("toolkit.datacollection.infoURL", "");
+lockPref("identity.mobilepromo.android", "");
+lockPref("identity.mobilepromo.ios", "");
+defaultPref("identity.sendtabpromo.url", "");
+lockPref("datareporting.healthreport.infoURL", "");
+lockPref("app.feedback.baseURL", "");
+lockPref("app.releaseNotesURL", "");
+lockPref("app.releaseNotesURL.aboutDialog", "");
+lockPref("browser.chrome.errorReporter.infoURL", "");
+lockPref("datareporting.policy.firstRunURL", "");
+
+// --------------------------------
+// # CACHE
+// --------------------------------
+
+lockPref("browser.cache.offline.storage.enable", false);
+lockPref("browser.privatebrowsing.forceMediaMemoryCache", true); // [FF75+]
+defaultPref("media.memory_cache_max_size", 65536);
+defaultPref("browser.cache.disk.enable", false);
+
+// --------------------------------
+// # WEBGL AND PERFORMANCE
+// --------------------------------
+
+defaultPref("webgl.disabled", true);
+defaultPref("webgl.enable-webgl2", false);
+
+// --------------------------------
+// # JS
+// --------------------------------
+
+lockPref("javascript.options.shared_memory", false);
+
+// --------------------------------
+// # GEO
+// --------------------------------
+
+defaultPref("geo.enabled", false);
+lockPref("geo.provider.ms-windows-location", false); // [WINDOWS]
+lockPref("geo.provider.use_corelocation", false); // [MAC]
+lockPref("geo.provider.use_gpsd", false); // [LINUX]
+defaultPref("geo.provider.network.url", ""); // consider adding url, it doesn't do any harm
+lockPref("browser.region.network.url", "");
+lockPref("browser.region.update.enabled", false);
+
+// --------------------------------
+// # PREFETCHING
+// --------------------------------
+
+lockPref("network.predictor.enabled", false);
+lockPref("network.prefetch-next", false);
+lockPref("network.http.speculative-parallel-limit", 0);
+
+// --------------------------------
+// # OUTGOING CONNECTIONS
+// --------------------------------
+
+// updates
+lockPref("app.update.auto", false);
+lockPref("app.update.staging.enabled", false);
+lockPref("app.update.lastUpdateTime.telemetry_modules_ping", 0);
+lockPref("app.update.url.details", "https://gitlab.com/librewolf-community/browser");
+lockPref("app.update.url.manual", "https://gitlab.com/librewolf-community/browser");
+
+// connectivity service
+lockPref("network.connectivity-service.enabled", false);
+lockPref("network.connectivity-service.IPv6.url", "http://0.0.0.0");
+lockPref("network.connectivity-service.IPv4.url", "http://0.0.0.0");
+lockPref("network.connectivity-service.DNSv6.domain", "");
+lockPref("network.connectivity-service.DNSv4.domain", "");
+
+// telemetry
+lockPref("toolkit.crashreporter.infoURL", "");
+lockPref("toolkit.telemetry.archive.enabled", false);
+lockPref("toolkit.telemetry.updatePing.enabled", false);
+lockPref("toolkit.telemetry.bhrPing.enabled", false);
+lockPref("toolkit.telemetry.cachedClientID", "");
+lockPref("toolkit.telemetry.enabled", false);
+lockPref("toolkit.telemetry.firstShutdownPing.enabled", false);
+lockPref("toolkit.telemetry.newProfilePing.enabled", false);
+lockPref("toolkit.telemetry.previousBuildID", "");
+lockPref("toolkit.telemetry.reportingpolicy.firstRun", false); // default
+lockPref("toolkit.telemetry.server", "data:,");
+lockPref("toolkit.telemetry.server_owner", "");
+lockPref("toolkit.telemetry.shutdownPingSender.enabled", false);
+lockPref("toolkit.telemetry.shutdownPingSender.enabledFirstSession", false); // default
+lockPref("toolkit.telemetry.unified", false);
+lockPref("security.protectionspopup.recordEventTelemetry", false);
+lockPref("datareporting.healthreport.uploadEnabled", false);
+lockPref("datareporting.policy.dataSubmissionEnabled", false);
+lockPref("toolkit.coverage.endpoint.base", "");
+lockPref("toolkit.telemetry.coverage.opt-out", true); // [HIDDEN PREF]
+lockPref("toolkit.coverage.opt-out", true); // [HIDDEN PREF]
+lockPref("toolkit.coverage.enabled", false);
+lockPref("app.shield.optoutstudies.enabled", false);
+lockPref("beacon.enabled", false);
+lockPref("browser.ping-centre.telemetry", false);
+
+// discovery
+lockPref("browser.discovery.enabled", false);
+lockPref("browser.discovery.containers.enabled", false);
+lockPref("browser.discovery.sites", "");
+
+// crash report
+lockPref("breakpad.reportURL", "");
+lockPref("browser.tabs.crashReporting.sendReport", false);
+lockPref("browser.crashReports.unsubmittedCheck.enabled", false);
+lockPref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
+
+// captive portal
+lockPref("network.captive-portal-service.enabled", false);
+lockPref("captivedetect.canonicalURL", "");
+
+// --------------------------------
+// # WINDOWS
+// --------------------------------
+
+// disable links launching Windows Store [WINDOWS]
+lockPref("network.protocol-handler.external.ms-windows-store", false);
+
+// disable background update service [WINDOWS]
+lockPref("app.update.service.enabled", false);
+
+// disable automatic Firefox start and session restore after reboot [WINDOWS]
+lockPref("toolkit.winRegisterApplicationRestart", false);
+
+// disable Windows 8.1 Family Safety cert [WINDOWS]
+lockPref("security.family_safety.mode", 0);
+
+// Windows only?
+lockPref("default-browser-agent.enabled", false);
+
+// -----------------------------------
+// # OVERRIDES
+// -----------------------------------
+
+// allow settings to be overriden with a file at `~/.librewolf/librewolf.overrides.cfg`
+// or `~/.var/app/io.gitlab.librewolf-community/.librewolf/librewolf.overrides.cfg` (Flatpak).
+let profile_directory;
+if (profile_directory = getenv('USERPROFILE') || getenv('HOME')) {
+ pref('autoadmin.global_config_url', `file://${profile_directory}/.librewolf/librewolf.overrides.cfg`);
+}
diff --git a/librewolf.spec b/librewolf.spec
new file mode 100644
index 0000000..bb50e33
--- /dev/null
+++ b/librewolf.spec
@@ -0,0 +1,1738 @@
+# Produce a build suitable for release, i.e. use PGO/LTO. You can turn it off
+# when building locally to reduce build time.
+%global release_build 1
+
+# Run Mozilla test suite as a part of compile rpm section. Turn off when
+# building locally and don't want to spend 24 hours waiting for results.
+%global run_firefox_tests 0
+%ifarch x86_64 %{ix86}
+%global run_firefox_tests 0
+%endif
+
+# Don't create debuginfo rpm packages. It reduces build time as
+# exctracting debuginfo takes long time.
+%global create_debuginfo 1
+
+# Produce debug (non-optimized) package build. Suitable for debugging only
+# as the build is *very* slow.
+%global debug_build 0
+
+%global system_nss 1
+%global build_with_clang 0
+%global build_with_asan 0
+%global test_on_wayland 1
+
+# There are still build problems on s390x, see
+# https://koji.fedoraproject.org/koji/taskinfo?taskID=55048351
+# https://bugzilla.redhat.com/show_bug.cgi?id=1897522
+ExcludeArch: s390x
+
+# Disabled due to
+# https://bugzilla.redhat.com/show_bug.cgi?id=1966949
+%if 0%{?fedora} > 34
+ExcludeArch: armv7hl
+%endif
+
+%ifarch armv7hl
+%global create_debuginfo 0
+%endif
+
+# Temporary disabled due to
+# https://bugzilla.redhat.com/show_bug.cgi?id=1951606
+%global enable_mozilla_crashreporter 0
+%ifarch x86_64 %{ix86}
+%global enable_mozilla_crashreporter 1
+%endif
+%if %{build_with_asan}
+%global enable_mozilla_crashreporter 0
+%endif
+%if 0%{?flatpak}
+%global enable_mozilla_crashreporter 0
+%endif
+%if !%{create_debuginfo}
+%define _unpackaged_files_terminate_build 0
+%global debug_package %{nil}
+%global enable_mozilla_crashreporter 0
+%endif
+
+%global system_ffi 1
+%ifarch armv7hl
+%global system_libvpx 1
+%else
+%global system_libvpx 0
+%endif
+%global hardened_build 1
+%global system_jpeg 1
+%global disable_elfhack 1
+%global use_bundled_cbindgen 1
+%if %{debug_build}
+%global release_build 0
+%endif
+# Build PGO+LTO on x86_64 and aarch64 only due to build issues
+# on other arches.
+%global build_with_pgo 0
+%ifarch x86_64
+%if %{release_build}
+%global build_with_pgo 1
+%endif
+%endif
+%if 0%{?flatpak}
+%global build_with_pgo 0
+%endif
+# Big endian platforms
+%ifarch ppc64 s390x
+%global big_endian 1
+%endif
+
+%if 0%{?build_with_pgo}
+%global use_xvfb 1
+%global build_tests 1
+%endif
+
+%if 0%{?run_firefox_tests}
+%global use_xvfb 1
+%global build_tests 1
+%endif
+
+%global launch_wayland_compositor 0
+%if %{build_with_pgo} && %{test_on_wayland}
+%global launch_wayland_compositor 1
+%endif
+%if %{run_firefox_tests} && %{test_on_wayland}
+%global launch_wayland_compositor 1
+%endif
+
+%global default_bookmarks_file %{_datadir}/bookmarks/default-bookmarks.html
+%global firefox_app_id \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
+# Minimal required versions
+%global cairo_version 1.13.1
+%global freetype_version 2.1.9
+%global libnotify_version 0.7.0
+%if %{?system_libvpx}
+%global libvpx_version 1.8.2
+%endif
+
+%if %{?system_nss}
+%global nspr_version 4.21
+%global nspr_build_version %{nspr_version}
+%global nss_version 3.64
+%global nss_build_version %{nss_version}
+%endif
+
+%global mozappdir %{_libdir}/librewolf
+%global mozappdirdev %{_libdir}/librewolf-devel-%{version}
+%global langpackdir %{mozappdir}/langpacks
+%global tarballdir firefox-%{version}
+
+%global official_branding 1
+
+%bcond_with langpacks
+
+%if !%{release_build}
+%global pre_tag .npgo
+%endif
+%if %{build_with_clang}
+%global pre_tag .clang
+%endif
+%if %{build_with_asan}
+%global pre_tag .asan
+%global build_with_pgo 0
+%endif
+%if !%{system_nss}
+%global nss_tag .nss
+%endif
+%if %{debug_build}
+%global pre_tag .debug
+%endif
+
+# Exclude private libraries from autogenerated provides and requires
+%global __provides_exclude_from ^%{mozappdir}
+%global __requires_exclude ^(%%(find %{buildroot}%{mozappdir} -name '*.so' | xargs -n1 basename | sort -u | paste -s -d '|' -))
+
+Summary: Mozilla Firefox Web browser
+Name: librewolf
+%global enable_mozilla_crashreporter 0
+Version: 89.0
+Release: 1%{?pre_tag}%{?dist}
+URL: https://www.mozilla.org/firefox/
+License: MPLv1.1 or GPLv2+ or LGPLv2+
+Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz
+%if %{with langpacks}
+Source1: firefox-langpacks-%{version}%{?pre_version}-20210601.tar.xz
+%endif
+Source2: cbindgen-vendor.tar.xz
+Source10: firefox-mozconfig
+Source12: firefox-redhat-default-prefs.js
+Source20: firefox.desktop
+Source21: firefox.sh.in
+Source23: firefox.1
+Source24: mozilla-api-key
+Source25: firefox-symbolic.svg
+Source26: distribution.ini
+Source27: google-api-key
+Source28: firefox-wayland.sh.in
+Source29: firefox-wayland.desktop
+Source30: firefox-x11.sh.in
+Source31: firefox-x11.desktop
+Source32: node-stdout-nonblocking-wrapper
+Source33: firefox.appdata.xml.in
+Source34: firefox-search-provider.ini
+Source35: google-loc-api-key
+%if 0
+Source37: mochitest-python.tar.gz
+%endif
+Source38: print_results
+Source39: print-errors
+Source40: run-tests-x11
+Source41: run-tests-wayland
+Source42: psummary
+Source43: print_failures
+Source44: print-error-reftest
+Source45: run-wayland-compositor
+
+# Build patches
+Patch3: mozilla-build-arm.patch
+Patch25: rhbz-1219542-s390-build.patch
+Patch32: build-rust-ppc64le.patch
+Patch35: build-ppc-jit.patch
+# Fixing missing cacheFlush when JS_CODEGEN_NONE is used (s390x)
+Patch38: build-cacheFlush-missing.patch
+Patch40: build-aarch64-skia.patch
+Patch41: build-disable-elfhack.patch
+Patch44: build-arm-libopus.patch
+Patch46: firefox-nss-version.patch
+Patch47: fedora-shebang-build.patch
+Patch48: build-arm-wasm.patch
+Patch49: build-arm-libaom.patch
+Patch53: firefox-gcc-build.patch
+# This should be fixed in Firefox 83
+Patch54: mozilla-1669639.patch
+Patch55: firefox-testing.patch
+Patch57: firefox-disable-ffvpx-with-vapi.patch
+Patch58: firefox-crashreporter-build.patch
+
+# Test patches
+# Generate without context by
+# GENDIFF_DIFF_ARGS=-U0 gendiff firefox-xxxx .firefox-tests-xpcshell
+# GENDIFF_DIFF_ARGS=-U0 gendiff firefox-xxxx .firefox-tests-reftest
+Patch100: firefox-tests-xpcshell.patch
+Patch101: firefox-tests-reftest.patch
+Patch102: firefox-tests-xpcshell-freeze.patch
+
+# Fedora specific patches
+Patch215: firefox-enable-addons.patch
+Patch219: rhbz-1173156.patch
+Patch221: firefox-fedora-ua.patch
+Patch224: mozilla-1170092.patch
+#ARM run-time patch
+Patch226: rhbz-1354671.patch
+Patch228: disable-openh264-download.patch
+Patch229: firefox-nss-addon-hack.patch
+
+# Upstream patches
+Patch402: mozilla-1196777.patch
+Patch407: mozilla-1667096.patch
+Patch408: mozilla-1663844.patch
+Patch415: mozilla-1670333.patch
+Patch420: mochitest-wayland-workaround.patch
+Patch422: mozilla-1705048.patch
+
+# PGO/LTO patches
+Patch600: pgo.patch
+Patch602: mozilla-1516803.patch
+
+%if %{?system_nss}
+BuildRequires: pkgconfig(nspr) >= %{nspr_version}
+BuildRequires: pkgconfig(nss) >= %{nss_version}
+BuildRequires: nss-static >= %{nss_version}
+%endif
+BuildRequires: pkgconfig(libpng)
+%if %{?system_jpeg}
+BuildRequires: libjpeg-devel
+%endif
+BuildRequires: zip
+BuildRequires: jack-audio-connection-kit-devel
+BuildRequires: alsa-lib-devel
+BuildRequires: bzip2-devel
+BuildRequires: pkgconfig(zlib)
+BuildRequires: pkgconfig(gtk+-3.0)
+BuildRequires: pkgconfig(gtk+-2.0)
+BuildRequires: pkgconfig(krb5)
+BuildRequires: pkgconfig(pango)
+BuildRequires: pkgconfig(freetype2) >= %{freetype_version}
+BuildRequires: pkgconfig(xt)
+BuildRequires: pkgconfig(xrender)
+BuildRequires: pkgconfig(libstartup-notification-1.0)
+BuildRequires: pkgconfig(libnotify) >= %{libnotify_version}
+BuildRequires: pkgconfig(dri)
+BuildRequires: pkgconfig(libcurl)
+BuildRequires: dbus-glib-devel
+%if %{?system_libvpx}
+BuildRequires: libvpx-devel >= %{libvpx_version}
+%endif
+BuildRequires: autoconf213
+BuildRequires: pkgconfig(libpulse)
+BuildRequires: yasm
+BuildRequires: llvm
+BuildRequires: llvm-devel
+BuildRequires: clang
+BuildRequires: clang-libs
+%if %{build_with_clang}
+BuildRequires: lld
+%endif
+
+BuildRequires: pipewire-devel
+
+%if !0%{?use_bundled_cbindgen}
+BuildRequires: cbindgen
+%endif
+BuildRequires: nodejs
+BuildRequires: nasm >= 1.13
+BuildRequires: libappstream-glib
+
+%if 0%{?big_endian}
+BuildRequires: icu
+%endif
+
+Requires: mozilla-filesystem
+Recommends: mozilla-openh264 >= 2.1.1
+Recommends: libva
+Requires: p11-kit-trust
+Requires: pciutils-libs
+%if %{?system_nss}
+Requires: nspr >= %{nspr_build_version}
+Requires: nss >= %{nss_build_version}
+%endif
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+%if !0%{?flatpak}
+Requires: u2f-hidraw-policy
+%endif
+
+BuildRequires: desktop-file-utils
+%if !0%{?flatpak}
+BuildRequires: system-bookmarks
+%endif
+%if %{?system_ffi}
+BuildRequires: pkgconfig(libffi)
+%endif
+
+%if 0%{?use_xvfb}
+BuildRequires: xorg-x11-server-Xvfb
+%endif
+BuildRequires: rust
+BuildRequires: cargo
+BuildRequires: clang-devel
+%if %{build_with_asan}
+BuildRequires: libasan
+BuildRequires: libasan-static
+%endif
+BuildRequires: perl-interpreter
+BuildRequires: fdk-aac-free-devel
+%if 0%{?test_on_wayland}
+BuildRequires: mutter
+BuildRequires: gsettings-desktop-schemas
+BuildRequires: gnome-settings-daemon
+BuildRequires: mesa-dri-drivers
+%endif
+%if 0%{?run_firefox_tests}
+BuildRequires: procps-ng
+BuildRequires: nss-tools
+BuildRequires: python2.7
+BuildRequires: dejavu-sans-mono-fonts
+BuildRequires: dejavu-sans-fonts
+BuildRequires: dejavu-serif-fonts
+BuildRequires: mesa-dri-drivers
+BuildRequires: dbus-x11
+BuildRequires: gnome-keyring
+# ----------------------------------------
+BuildRequires: liberation-fonts-common
+BuildRequires: liberation-mono-fonts
+BuildRequires: liberation-sans-fonts
+BuildRequires: liberation-serif-fonts
+# ----------------------------------
+# Missing on f32
+%if 0%{?fedora} > 33
+BuildRequires: google-carlito-fonts
+%endif
+BuildRequires: google-droid-sans-fonts
+BuildRequires: google-noto-fonts-common
+BuildRequires: google-noto-cjk-fonts-common
+BuildRequires: google-noto-sans-cjk-ttc-fonts
+BuildRequires: google-noto-sans-gurmukhi-fonts
+BuildRequires: google-noto-sans-fonts
+BuildRequires: google-noto-emoji-color-fonts
+BuildRequires: google-noto-sans-sinhala-vf-fonts
+# -----------------------------------
+BuildRequires: thai-scalable-fonts-common
+BuildRequires: thai-scalable-waree-fonts
+BuildRequires: khmeros-base-fonts
+BuildRequires: jomolhari-fonts
+# ----------------------------------
+BuildRequires: lohit-tamil-fonts
+BuildRequires: lohit-telugu-fonts
+# ----------------------------------
+BuildRequires: paktype-naskh-basic-fonts
+# faild to build in Koji / f32
+%if 0%{?fedora} > 33
+BuildRequires: pt-sans-fonts
+%endif
+BuildRequires: smc-meera-fonts
+BuildRequires: stix-fonts
+BuildRequires: abattis-cantarell-fonts
+BuildRequires: xorg-x11-fonts-ISO8859-1-100dpi
+BuildRequires: xorg-x11-fonts-misc
+%endif
+BuildRequires: make
+
+Obsoletes: mozilla <= 37:1.7.13
+Provides: webclient
+
+Source100: librewolf-branding.tgz
+Source101: librewolf.cfg
+Patch900: armhf-reduce-linker-memory-use.patch
+Patch901: fix-armhf-webrtc-build.patch
+Patch902: webrtc-fix-compiler-flags-for-armhf.patch
+Patch903: sandbox-update-arm-syscall-numbers.patch
+Patch904: remove_addons.patch
+Patch905: megabar.patch
+Patch906: reduce-rust-debuginfo.patch
+Patch907: mozilla-vpn-ad.patch
+Patch908: context-menu.patch
+%description
+Mozilla Firefox is an open-source web browser, designed for standards
+compliance, performance and portability.
+
+%package x11
+Summary: LibreWolf X11 launcher.
+Requires: %{name}
+%description x11
+The librewolf-x11 package contains launcher and desktop file
+to run LibreWolf explicitly on X11.
+%files x11
+%{_bindir}/librewolf-x11
+%{_datadir}/applications/librewolf-x11.desktop
+
+%package wayland
+Summary: LibreWolf Wayland launcher.
+Requires: %{name}
+%description wayland
+The librewolf-wayland package contains launcher and desktop file
+to run LibreWolf explicitly on Wayland.
+%files wayland
+%{_bindir}/librewolf-wayland
+%{_datadir}/applications/librewolf-wayland.desktop
+
+%if 0%{?run_firefox_tests}
+%global testsuite_pkg_name %{name}-testresults
+%package -n %{testsuite_pkg_name}
+Summary: Results of testsuite
+%description -n %{testsuite_pkg_name}
+This package contains results of tests executed during build.
+%files -n %{testsuite_pkg_name}
+/%{version}-%{release}/test_results
+/%{version}-%{release}/test_summary.txt
+/%{version}-%{release}/failures-*
+%endif
+
+#---------------------------------------------------------------------
+
+%prep
+%setup -q -n %{tarballdir}
+
+# Build patches, can't change backup suffix from default because during build
+# there is a compare of config and js/config directories and .orig suffix is
+# ignored during this compare.
+
+%ifarch s390
+%patch25 -p1 -b .rhbz-1219542-s390
+%endif
+%patch40 -p1 -b .aarch64-skia
+%if 0%{?disable_elfhack}
+%patch41 -p1 -b .disable-elfhack
+%endif
+%patch3 -p1 -b .arm
+%patch44 -p1 -b .build-arm-libopus
+#%patch46 -p1 -b .nss-version
+%patch47 -p1 -b .fedora-shebang
+%patch48 -p1 -b .build-arm-wasm
+%patch49 -p1 -b .build-arm-libaom
+%patch53 -p1 -b .firefox-gcc-build
+%patch54 -p1 -b .1669639
+%patch55 -p1 -b .testing
+%patch57 -p1 -b .ffvpx-with-vapi
+%patch58 -p1 -b .firefox-crashreporter-build
+
+# Test patches
+%patch100 -p1 -b .firefox-tests-xpcshell
+%patch101 -p1 -b .firefox-tests-reftest
+%patch102 -p1 -b .firefox-tests-xpcshell-freeze
+
+# Fedora patches
+%patch215 -p1 -b .addons
+%patch219 -p1 -b .rhbz-1173156
+%patch221 -p1 -b .fedora-ua
+%patch224 -p1 -b .1170092
+#ARM run-time patch
+%ifarch aarch64
+%patch226 -p1 -b .1354671
+%endif
+%patch228 -p1 -b .disable-openh264-download
+%patch229 -p1 -b .firefox-nss-addon-hack
+
+%patch402 -p1 -b .1196777
+%patch407 -p1 -b .1667096
+%patch408 -p1 -b .1663844
+%patch415 -p1 -b .1670333
+%patch420 -p1 -b .mochitest-wayland-workaround
+%patch422 -p1 -b .1705048
+
+# PGO patches
+%if %{build_with_pgo}
+%if !%{build_with_clang}
+%patch600 -p1 -b .pgo
+%patch602 -p1 -b .1516803
+%endif
+%endif
+
+%patch900 -p1
+%patch901 -p1
+%patch902 -p1
+%patch903 -p1
+%patch904 -p1
+%patch905 -p1
+%patch906 -p1
+%patch907 -p1
+%patch908 -p1
+sed -i '/"pocket"/d' browser/components/moz.build
+sed -i "/SaveToPocket\.init/d" browser/components/BrowserGlue.jsm
+sed -i -r -e '/organizationalUnit.{0,5}=.{0,5}Mozilla/{N;N;N;d}' toolkit/mozapps/extensions/internal/XPIInstall.jsm
+sed -i -r -e '/enterprise_only/s#true#false#g;' browser/components/enterprisepolicies/schemas/policies-schema.json
+_settings_services_sed='s#firefox.settings.services.mozilla.com#f.s.s.m.c.qjz9zk#g'
+sed -e "${_settings_services_sed}" -i browser/components/newtab/data/content/activity-stream.bundle.js
+sed -e "${_settings_services_sed}" -i modules/libpref/init/all.js
+sed -e "${_settings_services_sed}" -i services/settings/Utils.jsm
+sed -e "${_settings_services_sed}" -i toolkit/components/search/SearchUtils.jsm
+( cd browser/branding ; tar -zxf %{SOURCE100} )
+%{__rm} -f .mozconfig
+%{__cp} %{SOURCE10} .mozconfig
+echo "ac_add_options --enable-default-toolkit=cairo-gtk3-wayland" >> .mozconfig
+%if %{official_branding}
+echo "ac_add_options --enable-official-branding" >> .mozconfig
+%endif
+%{__cp} %{SOURCE24} mozilla-api-key
+%{__cp} %{SOURCE27} google-api-key
+%{__cp} %{SOURCE35} google-loc-api-key
+
+echo "ac_add_options --prefix=\"%{_prefix}\"" >> .mozconfig
+echo "ac_add_options --libdir=\"%{_libdir}\"" >> .mozconfig
+
+%if %{?system_nss}
+echo "ac_add_options --with-system-nspr" >> .mozconfig
+echo "ac_add_options --with-system-nss" >> .mozconfig
+%else
+echo "ac_add_options --without-system-nspr" >> .mozconfig
+echo "ac_add_options --without-system-nss" >> .mozconfig
+%endif
+
+%if %{?system_ffi}
+echo "ac_add_options --enable-system-ffi" >> .mozconfig
+%endif
+
+%ifarch %{arm}
+echo "ac_add_options --disable-elf-hack" >> .mozconfig
+%endif
+
+%if %{?debug_build}
+echo "ac_add_options --disable-debug" >> .mozconfig
+echo "ac_add_options --disable-optimize" >> .mozconfig
+%else
+%global optimize_flags "none"
+%ifarch ppc64le aarch64
+%global optimize_flags "-g -O2"
+%endif
+%if %{optimize_flags} != "none"
+echo 'ac_add_options --enable-optimize=%{?optimize_flags}' >> .mozconfig
+%else
+echo 'ac_add_options --enable-optimize' >> .mozconfig
+%endif
+echo "ac_add_options --disable-debug" >> .mozconfig
+%endif
+
+# Second arches fail to start with jemalloc enabled
+%ifnarch %{ix86} x86_64
+echo "ac_add_options --disable-jemalloc" >> .mozconfig
+%endif
+
+%if 0%{?build_tests}
+echo "ac_add_options --disable-tests" >> .mozconfig
+%else
+echo "ac_add_options --disable-tests" >> .mozconfig
+%endif
+
+%if !%{?system_jpeg}
+echo "ac_add_options --without-system-jpeg" >> .mozconfig
+%else
+echo "ac_add_options --with-system-jpeg" >> .mozconfig
+%endif
+
+%if %{?system_libvpx}
+echo "ac_add_options --with-system-libvpx" >> .mozconfig
+%else
+echo "ac_add_options --without-system-libvpx" >> .mozconfig
+%endif
+
+%ifarch s390 s390x
+echo "ac_add_options --disable-jit" >> .mozconfig
+%endif
+
+%if %{build_with_asan}
+echo "ac_add_options --enable-address-sanitizer" >> .mozconfig
+echo "ac_add_options --disable-jemalloc" >> .mozconfig
+%endif
+
+%if !%{enable_mozilla_crashreporter}
+echo "ac_add_options --disable-crashreporter" >> .mozconfig
+%endif
+
+# api keys full path
+echo "ac_add_options --with-mozilla-api-keyfile=`pwd`/mozilla-api-key" >> .mozconfig
+# It seems that the api key we have is for the safe browsing only
+echo "ac_add_options --with-google-location-service-api-keyfile=`pwd`/google-loc-api-key" >> .mozconfig
+echo "ac_add_options --with-google-safebrowsing-api-keyfile=`pwd`/google-api-key" >> .mozconfig
+
+echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' >> .mozconfig
+
+# Remove executable bit to make brp-mangle-shebangs happy.
+chmod -x third_party/rust/itertools/src/lib.rs
+chmod a-x third_party/rust/gfx-backend-vulkan/src/*.rs
+chmod a-x third_party/rust/gfx-hal/src/*.rs
+chmod a-x third_party/rust/ash/src/extensions/ext/*.rs
+chmod a-x third_party/rust/ash/src/extensions/khr/*.rs
+chmod a-x third_party/rust/ash/src/extensions/nv/*.rs
+
+#---------------------------------------------------------------------
+
+%build
+# Disable LTO to work around rhbz#1883904
+%define _lto_cflags %{nil}
+
+%if 0%{?use_bundled_cbindgen}
+mkdir -p my_rust_vendor
+cd my_rust_vendor
+%{__tar} xf %{SOURCE2}
+mkdir -p .cargo
+cat > .cargo/config <<EOL
+[source.crates-io]
+replace-with = "vendored-sources"
+
+[source.vendored-sources]
+directory = "`pwd`"
+EOL
+
+env CARGO_HOME=.cargo cargo install cbindgen
+export PATH=`pwd`/.cargo/bin:$PATH
+cd -
+%endif
+
+#echo "Generate big endian version of config/external/icu/data/icudt67l.dat"
+#%if 0%{?big_endian}
+# icupkg -tb config/external/icu/data/icudt67l.dat config/external/icu/data/icudt67b.dat
+# ls -l config/external/icu/data
+# rm -f config/external/icu/data/icudt*l.dat
+#%endif
+
+mkdir %{_buildrootdir}/bin || :
+cp %{SOURCE32} %{_buildrootdir}/bin || :
+
+# Update the various config.guess to upstream release for aarch64 support
+# Do not update config.guess in the ./third_party/rust because that would break checksums
+find ./ -path ./third_party/rust -prune -o -name config.guess -exec cp /usr/lib/rpm/config.guess {} ';'
+
+MOZ_OPT_FLAGS=$(echo "%{optflags}" | %{__sed} -e 's/-Wall//')
+#rhbz#1037063
+# -Werror=format-security causes build failures when -Wno-format is explicitly given
+# for some sources
+# Explicitly force the hardening flags for Firefox so it passes the checksec test;
+# See also https://fedoraproject.org/wiki/Changes/Harden_All_Packages
+%if 0%{?fedora} < 30
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security"
+%else
+# Workaround for mozbz#1531309
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-Werror=format-security//')
+%endif
+%if 0%{?fedora} > 30
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fpermissive"
+%endif
+%if %{?hardened_build}
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now"
+%endif
+%if %{?debug_build}
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//')
+%endif
+%ifarch s390
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/')
+# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which
+# overrides the -g1 from line above and breaks building on s390/arm
+# (OOM when linking, rhbz#1238225)
+export MOZ_DEBUG_FLAGS=" "
+%endif
+%ifarch %{arm} %{ix86}
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/')
+export MOZ_DEBUG_FLAGS=" "
+%endif
+%if !%{build_with_clang}
+%ifarch s390 ppc aarch64 %{ix86}
+MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
+%endif
+%ifarch %{arm}
+MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--strip-debug"
+echo "ac_add_options --enable-linker=gold" >> .mozconfig
+%endif
+%endif
+%if 0%{?flatpak}
+# Make sure the linker can find libraries in /app/lib64 as we don't use
+# __global_ldflags that normally sets this.
+MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -L%{_libdir}"
+%endif
+%ifarch %{arm} %{ix86} %{s390x}
+export RUSTFLAGS="-Cdebuginfo=0"
+%endif
+%if %{build_with_asan}
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fsanitize=address -Dxmalloc=myxmalloc"
+MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -fsanitize=address -ldl"
+%endif
+
+# We don't wantfirefox to use CK_GCM_PARAMS_V3 in nss
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -DNSS_PKCS11_3_0_STRICT"
+
+echo "export CFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig
+echo "export CXXFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig
+echo "export LDFLAGS=\"$MOZ_LINK_FLAGS\"" >> .mozconfig
+
+%if %{build_with_clang}
+echo "export LLVM_PROFDATA=\"llvm-profdata\"" >> .mozconfig
+echo "export AR=\"llvm-ar\"" >> .mozconfig
+echo "export NM=\"llvm-nm\"" >> .mozconfig
+echo "export RANLIB=\"llvm-ranlib\"" >> .mozconfig
+echo "ac_add_options --enable-linker=lld" >> .mozconfig
+%else
+echo "export CC=gcc" >> .mozconfig
+echo "export CXX=g++" >> .mozconfig
+echo "export AR=\"gcc-ar\"" >> .mozconfig
+echo "export NM=\"gcc-nm\"" >> .mozconfig
+echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig
+%endif
+%if 0%{?build_with_pgo}
+echo "ac_add_options MOZ_PGO=1" >> .mozconfig
+# PGO build doesn't work with ccache
+export CCACHE_DISABLE=1
+%endif
+
+echo "ac_add_options --enable-hardening" >> .mozconfig
+echo "ac_add_options --enable-rust-simd" >> .mozconfig
+echo "ac_add_options --with-app-name=librewolf" >> .mozconfig
+echo "ac_add_options --with-app-basename=LibreWolf" >> .mozconfig
+echo "ac_add_options --with-branding=browser/branding/librewolf" >> .mozconfig
+echo "ac_add_options --with-branding=browser/branding/librewolf" >> .mozconfig
+echo "ac_add_options --with-distribution-id=io.gitlab.librewolf-community" >> .mozconfig
+echo "ac_add_options --with-unsigned-addon-scopes=app,system" >> .mozconfig
+echo "ac_add_options --enable-alsa" >> .mozconfig
+echo "ac_add_options --enable-jack" >> .mozconfig
+echo "export MOZ_REQUIRE_SIGNING=0" >> .mozconfig
+echo "ac_add_options --disable-updater" >> .mozconfig
+echo "mk_add_options MOZ_CRASHREPORTER=0" >> .mozconfig
+echo "mk_add_options MOZ_DATA_REPORTING=0" >> .mozconfig
+echo "mk_add_options MOZ_SERVICES_HEALTHREPORT=0" >> .mozconfig
+echo "mk_add_options MOZ_TELEMETRY_REPORTING=0" >> .mozconfig
+MOZ_SMP_FLAGS=-j1
+# On x86_64 architectures, Mozilla can build up to 4 jobs at once in parallel,
+# however builds tend to fail on other arches when building in parallel.
+%ifarch %{ix86} s390x %{arm} aarch64
+[ -z "$RPM_BUILD_NCPUS" ] && \
+ RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
+[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
+%endif
+%ifarch x86_64 ppc ppc64 ppc64le
+[ -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
+[ "$RPM_BUILD_NCPUS" -ge 16 ] && MOZ_SMP_FLAGS=-j16
+[ "$RPM_BUILD_NCPUS" -ge 24 ] && MOZ_SMP_FLAGS=-j24
+[ "$RPM_BUILD_NCPUS" -ge 32 ] && MOZ_SMP_FLAGS=-j32
+[ "$RPM_BUILD_NCPUS" -ge 64 ] && MOZ_SMP_FLAGS=-j64
+%endif
+
+echo "mk_add_options MOZ_MAKE_FLAGS=\"$MOZ_SMP_FLAGS\"" >> .mozconfig
+echo "mk_add_options MOZ_SERVICES_SYNC=1" >> .mozconfig
+echo "export STRIP=/bin/true" >> .mozconfig
+export MACH_USE_SYSTEM_PYTHON=1
+
+%if %{launch_wayland_compositor}
+cp %{SOURCE45} .
+. ./run-wayland-compositor
+%endif
+
+%if %{build_with_pgo}
+%if %{test_on_wayland}
+env | grep "WAYLAND"
+MOZ_ENABLE_WAYLAND=1 ./mach build 2>&1 | cat -
+%else
+xvfb-run ./mach build 2>&1 | cat -
+%endif
+%else
+./mach build 2>&1 | cat -
+%endif
+
+
+#---------------------------------------------------------------------
+%install
+# run Firefox test suite
+export MACH_USE_SYSTEM_PYTHON=1
+%if %{launch_wayland_compositor}
+cp %{SOURCE45} .
+. ./run-wayland-compositor
+%endif
+
+%if 0%{?run_firefox_tests}
+mkdir -p objdir/_virtualenvs/init_py3
+%{__cat} > objdir/_virtualenvs/init_py3/pip.conf << EOF
+[global]
+find-links=`pwd`/mochitest-python
+no-index=true
+EOF
+tar xf %{SOURCE37}
+cp %{SOURCE40} %{SOURCE41} %{SOURCE42} %{SOURCE38} %{SOURCE39} %{SOURCE43} %{SOURCE44} .
+mkdir -p test_results
+%if %{test_on_wayland}
+./run-tests-wayland || true
+%else
+./run-tests-x11 || true
+%endif
+./print_results > test_summary.txt 2>&1 || true
+./print_failures || true
+%endif
+
+# set up our default bookmarks
+%if 0
+%{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/en-US/locale/browser/bookmarks.html
+%endif
+
+DESTDIR=%{buildroot} make -C objdir/instrumented install
+
+%{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications}
+_seds="s/Firefox/LibreWolf/g;s/firefox/librewolf/g;"
+S20="$( basename "%{SOURCE20}" | sed -r -e ${_seds} )"
+S31="$( basename "%{SOURCE31}" | sed -r -e ${_seds} )"
+S29="$( basename "%{SOURCE29}" | sed -r -e ${_seds} )"
+sed -r %{SOURCE20} -e ${_seds} > ${S20}
+sed -r %{SOURCE31} -e ${_seds} > ${S31}
+sed -r %{SOURCE29} -e ${_seds} > ${S29}
+
+desktop-file-install --dir %{buildroot}%{_datadir}/applications ${S20}
+desktop-file-install --dir %{buildroot}%{_datadir}/applications ${S31}
+desktop-file-install --dir %{buildroot}%{_datadir}/applications ${S29}
+
+# set up the librewolf start script
+%{__rm} -rf %{buildroot}%{_bindir}/librewolf
+%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE21} > %{buildroot}%{_bindir}/librewolf
+%{__sed} -i %{buildroot}%{_bindir}/librewolf \
+ -e "${_seds}" \
+ -e "/restorecon/{s/.mozilla\/firefox/.librewolf/;}"
+%{__chmod} 755 %{buildroot}%{_bindir}/librewolf
+
+%if 0%{?flatpak}
+sed -i -e 's|%FLATPAK_ENV_VARS%|export TMPDIR="$XDG_CACHE_HOME/tmp"|' %{buildroot}%{_bindir}/librewolf
+%else
+sed -i -e 's|%FLATPAK_ENV_VARS%||' %{buildroot}%{_bindir}/librewolf
+%endif
+
+%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE30} > %{buildroot}%{_bindir}/librewolf-x11
+%{__chmod} 755 %{buildroot}%{_bindir}/librewolf-x11
+%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE28} > %{buildroot}%{_bindir}/librewolf-wayland
+%{__chmod} 755 %{buildroot}%{_bindir}/librewolf-wayland
+
+%{__cp} -p %{SOURCE101} %{buildroot}/%{mozappdir}/
+%{__install} -p -D -m 644 %{SOURCE23} %{buildroot}%{_mandir}/man1/librewolf.1
+
+%{__rm} -f %{buildroot}/%{mozappdir}/librewolf-config
+%{__rm} -f %{buildroot}/%{mozappdir}/update-settings.ini
+
+for s in 16 32 48 64 128; do
+ %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps
+ %{__cp} -p browser/branding/librewolf/default${s}.png \
+ %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/librewolf.png
+done
+
+# Install hight contrast icon
+%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+%{__cp} -p %{SOURCE25} \
+ %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/$( basename %{SOURCE25} | sed -r -e "${_seds}" )
+
+echo > %{name}.lang
+%if %{with langpacks}
+# Extract langpacks, make any mods needed, repack the langpack, and install it.
+%{__mkdir_p} %{buildroot}%{langpackdir}
+%{__tar} xf %{SOURCE1}
+for langpack in `ls firefox-langpacks/*.xpi`; do
+ language=`basename $langpack .xpi`
+ extensionID=langpack-$language@firefox.mozilla.org
+ %{__mkdir_p} $extensionID
+ unzip -qq $langpack -d $extensionID
+ find $extensionID -type f | xargs chmod 644
+
+ cd $extensionID
+ zip -qq -r9mX ../${extensionID}.xpi *
+ cd -
+
+ %{__install} -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir}
+ language=`echo $language | sed -e 's/-/_/g'`
+%if 0%{?flatpak}
+ echo "%{langpackdir}/${extensionID}.xpi" >> %{name}.lang
+%else
+ echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> %{name}.lang
+%endif
+done
+%{__rm} -rf firefox-langpacks
+
+# Install langpack workaround (see #707100, #821169)
+function create_default_langpack() {
+language_long=$1
+language_short=$2
+cd %{buildroot}%{langpackdir}
+ln -s langpack-$language_long@firefox.mozilla.org.xpi langpack-$language_short@firefox.mozilla.org.xpi
+cd -
+echo "%%lang($language_short) %{langpackdir}/langpack-$language_short@firefox.mozilla.org.xpi" >> %{name}.lang
+}
+
+# Table of fallbacks for each language
+# 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
+
+%{__mkdir_p} %{buildroot}/%{mozappdir}/browser/defaults/preferences
+
+# System config dir
+%{__mkdir_p} %{buildroot}/%{_sysconfdir}/%{name}/pref
+
+# System extensions
+%{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_app_id}
+%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_app_id}
+
+# Copy over the LICENSE
+%{__install} -p -c -m 644 LICENSE %{buildroot}/%{mozappdir}
+
+# Use the system hunspell dictionaries
+%{__rm} -rf %{buildroot}%{mozappdir}/dictionaries
+ln -s %{_datadir}/myspell %{buildroot}%{mozappdir}/dictionaries
+
+%if 0%{?run_firefox_tests}
+%{__mkdir_p} %{buildroot}/%{version}-%{release}/test_results
+%{__cp} test_results/* %{buildroot}/%{version}-%{release}/test_results
+%{__cp} test_summary.txt %{buildroot}/%{version}-%{release}/
+%{__cp} failures-* %{buildroot}/%{version}-%{release}/ || true
+%endif
+
+# Default
+%{__cp} %{SOURCE12} %{buildroot}%{mozappdir}/browser/defaults/preferences
+
+# Copy over run-mozilla.sh
+%{__cp} build/unix/run-mozilla.sh %{buildroot}%{mozappdir}
+
+# Add distribution.ini
+%{__mkdir_p} %{buildroot}%{mozappdir}/distribution
+%{__cp} %{SOURCE26} %{buildroot}%{mozappdir}/distribution
+cat > distribution.ini <<END
+[Global]
+id=io.gitlab.librewolf-community
+version=1.0
+about=LibreWolf
+
+[Preferences]
+app.distributor="LibreWolf Community"
+app.distributor.channel=librewolf
+app.partner.librewolf=librewolf
+END
+install -Dvm644 distribution.ini %{buildroot}%{mozappdir}/distribution
+
+# Install appdata file
+mkdir -p %{buildroot}%{_datadir}/metainfo
+%{__sed} -e "s/__VERSION__/%{version}/" \
+ -e "s/__DATE__/$(date '+%F')/" \
+ %{SOURCE33} > %{buildroot}%{_datadir}/metainfo/librewolf.appdata.xml
+
+# Install Gnome search provider files
+mkdir -p %{buildroot}%{_datadir}/gnome-shell/search-providers
+%{__cp} %{SOURCE34} %{buildroot}%{_datadir}/gnome-shell/search-providers
+
+# Remove gtk2 support as flash plugin is no longer supported
+rm -rf %{buildroot}%{mozappdir}/gtk2/
+
+# Remove copied libraries to speed up build
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozjs.so
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozalloc.so
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libxul.so
+#---------------------------------------------------------------------
+
+# Moves defaults/preferences to browser/defaults/preferences
+%pretrans -p <lua>
+require 'posix'
+require 'os'
+if (posix.stat("%{mozappdir}/browser/defaults/preferences", "type") == "link") then
+ posix.unlink("%{mozappdir}/browser/defaults/preferences")
+ posix.mkdir("%{mozappdir}/browser/defaults/preferences")
+ if (posix.stat("%{mozappdir}/defaults/preferences", "type") == "directory") then
+ for i,filename in pairs(posix.dir("%{mozappdir}/defaults/preferences")) do
+ os.rename("%{mozappdir}/defaults/preferences/"..filename, "%{mozappdir}/browser/defaults/preferences/"..filename)
+ end
+ f = io.open("%{mozappdir}/defaults/preferences/README","w")
+ if f then
+ f:write("Content of this directory has been moved to %{mozappdir}/browser/defaults/preferences.")
+ f:close()
+ end
+ end
+end
+
+%check
+appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/*.appdata.xml
+
+%preun
+# is it a final removal?
+if [ $1 -eq 0 ]; then
+ %{__rm} -rf %{mozappdir}/components
+ %{__rm} -rf %{mozappdir}/extensions
+ %{__rm} -rf %{mozappdir}/plugins
+ %{__rm} -rf %{langpackdir}
+fi
+
+%post
+update-desktop-database &> /dev/null || :
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+
+%postun
+update-desktop-database &> /dev/null || :
+if [ $1 -eq 0 ] ; then
+ touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+
+%posttrans
+gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
+%files -f %{name}.lang
+%{mozappdir}/librewolf.cfg
+%{_bindir}/librewolf
+%{mozappdir}/librewolf
+%{mozappdir}/librewolf-bin
+%doc %{_mandir}/man1/*
+%dir %{_sysconfdir}/%{name}
+%dir %{_sysconfdir}/%{name}/*
+%dir %{_datadir}/mozilla/extensions/*
+%dir %{_libdir}/mozilla/extensions/*
+%{_datadir}/applications/%{name}.desktop
+%{_datadir}/metainfo/*.appdata.xml
+%{_datadir}/gnome-shell/search-providers/*.ini
+%dir %{mozappdir}
+%license %{mozappdir}/LICENSE
+%{mozappdir}/browser/chrome
+%{mozappdir}/browser/defaults/preferences/firefox-redhat-default-prefs.js
+%{mozappdir}/browser/features/*.xpi
+%{mozappdir}/distribution/distribution.ini
+# That's Windows only
+%ghost %{mozappdir}/browser/features/aushelper@mozilla.org.xpi
+%if %{with langpacks}
+%dir %{langpackdir}
+%endif
+%{mozappdir}/browser/omni.ja
+%{mozappdir}/run-mozilla.sh
+%{mozappdir}/application.ini
+%{mozappdir}/pingsender
+%exclude %{mozappdir}/removed-files
+%{_datadir}/icons/hicolor/16x16/apps/librewolf.png
+%{_datadir}/icons/hicolor/64x64/apps/librewolf.png
+%{_datadir}/icons/hicolor/128x128/apps/librewolf.png
+%{_datadir}/icons/hicolor/32x32/apps/librewolf.png
+%{_datadir}/icons/hicolor/48x48/apps/librewolf.png
+%{_datadir}/icons/hicolor/symbolic/apps/librewolf-symbolic.svg
+%if %{enable_mozilla_crashreporter}
+%{mozappdir}/crashreporter
+%{mozappdir}/crashreporter.ini
+%{mozappdir}/minidump-analyzer
+%{mozappdir}/Throbber-small.gif
+%{mozappdir}/browser/crashreporter-override.ini
+%endif
+%{mozappdir}/*.so
+%{mozappdir}/defaults/pref/channel-prefs.js
+%{mozappdir}/dependentlibs.list
+%{mozappdir}/dictionaries
+%{mozappdir}/omni.ja
+%{mozappdir}/platform.ini
+%{mozappdir}/plugin-container
+%{mozappdir}/gmp-clearkey
+%{mozappdir}/fonts/TwemojiMozilla.ttf
+%if !%{?system_nss}
+%exclude %{mozappdir}/libnssckbi.so
+%endif
+%if %{build_with_asan}
+%{mozappdir}/llvm-symbolizer
+%endif
+
+#---------------------------------------------------------------------
+
+%changelog
+* Wed Jun 09 2021 B. Stack <bgstack15@gmail.com> - 89.0-1
+- Fork to librewolf release.
+
+* Tue Jun 1 2021 Martin Stransky <stransky@redhat.com> - 89.0-1
+- Updated to latest upstream (89.0)
+
+* Mon May 10 2021 Martin Stransky <stransky@redhat.com> - 88.0.1-1
+- Updated to latest upstream (88.0.1)
+
+* Tue May 4 2021 Martin Stransky <stransky@redhat.com> - 88.0-8
+- Added fix for mozbz#1705048.
+
+* Fri Apr 30 2021 Martin Stransky <stransky@redhat.com> - 88.0-7
+- Added pciutils-libs req (rhbz#1955338)
+- Enabled Wayland on KDE (rhbz#1922608)
+
+* Tue Apr 27 2021 Martin Stransky <stransky@redhat.com> - 88.0-6
+- Test fix.
+
+* Fri Apr 23 2021 Martin Stransky <stransky@redhat.com> - 88.0-5
+- Added fix for mozbz#1580595 - mouse pointer lock.
+- Another test update.
+
+* Thu Apr 22 2021 Martin Stransky <stransky@redhat.com> - 88.0-4
+- Run with mochitest test suite.
+
+* Thu Apr 22 2021 Martin Stransky <stransky@redhat.com> - 88.0-3
+- Build with crashreporter enabled.
+
+* Wed Apr 21 2021 Martin Stransky <stransky@redhat.com> - 88.0-2
+- Added clipboard fix mzbz#1703763.
+
+* Mon Apr 19 2021 Martin Stransky <stransky@redhat.com> - 88.0-1
+- Update to 88.0
+
+* Mon Apr 12 2021 Martin Stransky <stransky@redhat.com> - 87.0-12
+- Added fix for mozbz#1701089 (Widevine playback issues).
+
+* Tue Apr 6 2021 Martin Stransky <stransky@redhat.com> - 87.0-11
+- Enabled xpcshell/crashtests on Wayland.
+
+* Sat Apr 3 2021 Martin Stransky <stransky@redhat.com> - 87.0-10
+- Wayland testing again.
+
+* Thu Apr 1 2021 Martin Stransky <stransky@redhat.com> - 87.0-9
+- Added fix for mozbz#1702606 / rhbz#1936071
+- Switched tests back to X11 due to massive failures.
+
+* Thu Apr 1 2021 Martin Stransky <stransky@redhat.com> - 87.0-8
+- Run testsuite on Wayland on Fedora 33+
+- Spec cleanup
+
+* Wed Mar 31 2021 Martin Stransky <stransky@redhat.com> - 87.0-7
+- Added fix for mozbz#1693472 - Wayland/KDE rendering issues.
+
+* Tue Mar 30 2021 Jonathan Wakely <jwakely@redhat.com> - 87.0-6
+- Rebuilt for removed libstdc++ symbol (#1937698)
+
+* Tue Mar 30 2021 Martin Stransky <stransky@redhat.com> - 87.0-5
+- Reftest fix
+
+* Fri Mar 26 2021 Martin Stransky <stransky@redhat.com> - 87.0-4
+- More test fixes
+- Enabled ppc64le
+- Disabled crashreporter on Fedora 34+
+
+* Wed Mar 24 2021 Martin Stransky <stransky@redhat.com> - 87.0-2
+- More test fixes
+
+* Tue Mar 23 2021 Martin Stransky <stransky@redhat.com> - 87.0-1
+- Disabled ARM due to build failures
+- Updated to 87.0
+
+* Sat Mar 13 2021 Martin Stransky <stransky@redhat.com> - 86.0.1-2
+- Enabled ARM
+
+* Fri Mar 12 2021 Martin Stransky <stransky@redhat.com> - 86.0.1-1
+- Update to latest upstream (86.0.1)
+
+* Wed Mar 10 2021 Martin Stransky <stransky@redhat.com> - 86.0-8
+- Temporary disable ppc64le/Fedora 35 due to
+ https://bugzilla.redhat.com/show_bug.cgi?id=1933742
+
+* Wed Mar 3 2021 Martin Stransky <stransky@redhat.com> - 86.0-7
+- Added fix for mozbz#1694670
+
+* Mon Mar 1 2021 Martin Stransky <stransky@redhat.com> - 86.0-6
+- Run xpcshell tests sequential
+- Test fixes
+
+* Mon Mar 1 2021 Martin Stransky <stransky@redhat.com> - 86.0-4
+- Enable Wayland backend only when Wayland display is set.
+
+* Mon Mar 1 2021 Martin Stransky <stransky@redhat.com> - 86.0-3
+- Added icecat-78.7.1-fix_error_template_with_C_linkage.patch to
+ build on F34+
+
+* Fri Feb 26 2021 Martin Stransky <stransky@redhat.com> - 86.0-2
+- Built with system nss
+
+* Tue Feb 23 2021 Martin Stransky <stransky@redhat.com> - 86.0-1
+- Update to 86.0
+- Disabled Wayland backend on KDE/Plasma
+
+* Tue Feb 23 2021 Martin Stransky <stransky@redhat.com> - 85.0.1-2
+- Fixed some reftest run in Mock
+
+* Mon Feb 08 2021 Martin Stransky <stransky@redhat.com> - 85.0.1-1
+- Updated to 85.0.1
+
+* Wed Feb 03 2021 Dan Horák <dan[at]danny.cz> - 85.0-11
+- Fix parameter passing on ppc64le (mozb#1690152)
+
+* Tue Feb 02 2021 Kalev Lember <klember@redhat.com> - 85.0-10
+- Remove gtk2 support as flash plugin is no longer supported
+
+* Sat Jan 30 2021 Martin Stransky <stransky@redhat.com> - 85.0-9
+- Enable WebRender on KDE/Wayland and AMD/Intel drivers.
+
+* Sat Jan 30 2021 Martin Stransky <stransky@redhat.com> - 85.0-8
+- Enable Wayland backend on Fedora 34/KDE/Plasma (and other compositors)
+ by default (https://bugzilla.redhat.com/show_bug.cgi?id=1922608).
+
+* Fri Jan 29 2021 Martin Stransky <stransky@redhat.com> - 85.0-7
+- Added clipboard fix mozbz#1631061.
+
+* Thu Jan 28 2021 Kalev Lember <klember@redhat.com> - 85.0-6
+- Make provides/requires filtering smarter/automatic (rhbz#1582116)
+- Drop dbus-glib requires that are now automatically generated again
+
+* Thu Jan 28 2021 Martin Stransky <stransky@redhat.com> - 85.0-5
+- Add dbus-glib requires.
+
+* Tue Jan 26 2021 Martin Stransky <stransky@redhat.com> - 85.0-4
+- Added fix for mozbz#1679933 - startup crash
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 85.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Wed Jan 20 2021 Martin Stransky <stransky@redhat.com> - 85.0-2
+- Update to 85.0.
+
+* Wed Jan 20 2021 Jan Horak <jhorak@redhat.com> - 84.0.2-8
+- Fixing package requires/provides
+
+* Tue Jan 19 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-7
+- Fixed mzbz#164294 regression.
+
+* Fri Jan 15 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-6
+- Added WebRender fix (mozbz#1681107).
+
+* Thu Jan 14 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-5
+- Removed some failing tests.
+- Spec file tweaks.
+
+* Tue Jan 12 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-4
+- Enabled LTO in Firefox build system.
+
+* Tue Jan 12 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-3
+- Removed failing xpcshell/reftests, test tweaks.
+
+* Mon Jan 11 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-2
+- Added a workaround for rhbz#1908018
+
+* Wed Jan 6 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-1
+- Updated to 84.0.2
+
+* Tue Jan 05 2021 Jan Horak <jhorak@redhat.com> - 84.0.1-5
+- Removing requires/provides of the bundled libraries
+
+* Mon Jan 4 2021 Martin Stransky <stransky@redhat.com> - 84.0.1-4
+- Enabled tests
+
+* Mon Jan 4 2021 Martin Stransky <stransky@redhat.com> - 84.0.1-3
+- Enabled armv7hl arch on rawhide
+
+* Wed Dec 23 2020 Martin Stransky <stransky@redhat.com> - 84.0.1-2
+- Reverted mzbz#1631061 due to clipboard regressions
+- Disabled armv7hl build on rawhide due to rhbz#1910277
+- Build with system nss on rawhide (rhbz#1908791).
+
+* Tue Dec 22 2020 Martin Stransky <stransky@redhat.com> - 84.0.1-1
+- Updated to 84.0.1
+
+* Sun Dec 20 2020 Miro Hrončok <mhroncok@redhat.com> - 84.0-7
+- Filter out private libraries provides
+- Fixes: rhbz#1908791
+
+* Thu Dec 17 2020 Martin Stransky <stransky@redhat.com> - 84.0-6
+- Disable PGO on Rawhide due to build issues
+- Disable system nss on Rawhide due to rhbz#1908018
+- Enabled system nss on Fedora 33/32
+
+* Wed Dec 16 2020 Martin Stransky <stransky@redhat.com> - 84.0-5
+- Build with tests enabled
+
+* Wed Dec 16 2020 Martin Stransky <stransky@redhat.com> - 84.0-4
+- Disabled LTO due to massive test failures
+
+* Wed Dec 16 2020 Martin Stransky <stransky@redhat.com> - 84.0-3
+- Updated to Firefox 84 Build 3
+- Disabled system nss due to addon breakage (rhbz#1908018).
+
+* Wed Dec 9 2020 Martin Stransky <stransky@redhat.com> - 83.0-15
+- Enabled tests everywhere
+- Enabled crash reporter
+
+* Tue Dec 1 2020 Martin Stransky <stransky@redhat.com> - 83.0-14
+- Enabled LTO
+
+* Tue Dec 1 2020 Martin Stransky <stransky@redhat.com> - 83.0-13
+- Added fix for mozbz#1672139
+
+* Tue Dec 1 2020 Martin Stransky <stransky@redhat.com> - 83.0-12
+- More mochitest fixes
+
+* Mon Nov 30 2020 Martin Stransky <stransky@redhat.com> - 83.0-11
+- Mochitest tweaking
+
+* Sat Nov 28 2020 Martin Stransky <stransky@redhat.com> - 83.0-10
+- Added fix for mzbz#1678680
+
+* Wed Nov 25 2020 Martin Stransky <stransky@redhat.com> - 83.0-9
+- Added mochitest test files
+
+* Wed Nov 25 2020 Martin Stransky <stransky@redhat.com> - 83.0-8
+- Added fix for rhbz#1900542
+
+* Wed Nov 25 2020 Martin Stransky <stransky@redhat.com> - 83.0-7
+- Export MOZ_GMP_PATH from /usr/bin/firefox script
+ (https://pagure.io/fedora-workstation/issue/126)
+
+* Tue Nov 24 2020 Martin Stransky <stransky@redhat.com> - 83.0-6
+- Fix mochitest
+
+* Wed Nov 18 2020 Martin Stransky <stransky@redhat.com> - 83.0-5
+- Build with tests enabled
+
+* Wed Nov 18 2020 Martin Stransky <stransky@redhat.com> - 83.0-4
+- Enable all arches
+
+* Fri Nov 13 2020 Martin Stransky <stransky@redhat.com> - 83.0-3
+- Updated to 83.0 Build 2
+
+* Thu Nov 12 2020 Martin Stransky <stransky@redhat.com> - 83.0-1
+- Updated to 83.0
+- Updated PipeWire patches from mozbz#1672944
+
+* Tue Nov 10 2020 Martin Stransky <stransky@redhat.com> - 82.0.3-2
+- Added fix for mozbz#1885133
+
+* Mon Nov 9 2020 Martin Stransky <stransky@redhat.com> - 82.0.3-1
+- Updated to 82.0.3
+
+* Mon Nov 9 2020 Kalev Lember <klember@redhat.com> - 82.0.2-7
+- Include date in appdata release tags
+
+* Fri Nov 6 2020 Tomas Popela <tpopela@redhat.com> - 82.0.2-6
+- Re-enable s390x buils by backporting a change from Thunderbird
+ https://src.fedoraproject.org/rpms/thunderbird/c/5f0bec1b5b79e117cc469710afbfa4d008af9c29?branch=master
+
+* Tue Nov 3 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-5
+- Added mozilla-openh264 dependency to play H264 clips out of the box
+- Updated Firefox tests
+
+* Tue Nov 3 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-3
+- Disabled LTO again.
+
+* Tue Nov 3 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-2
+- NSS debug build
+
+* Thu Oct 29 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-1
+- Updated to 82.0.2
+- Removed mzbz#1668771 due to rhbz#1888920
+
+* Wed Oct 28 2020 Martin Stransky <stransky@redhat.com> - 82.0.1-1
+- Updated to 82.0.1
+
+* Tue Oct 27 2020 Martin Stransky <stransky@redhat.com> - 82.0-8
+- Added fix for mozbz#1673313
+
+* Tue Oct 27 2020 Martin Stransky <stransky@redhat.com> - 82.0-7
+- Added fix for rawhide crashes (rhbz#1891234)
+
+* Sat Oct 24 2020 Martin Stransky <stransky@redhat.com> - 82.0-6
+- Enable LTO
+
+* Tue Oct 20 2020 Martin Stransky <stransky@redhat.com> - 82.0-5
+- Added fix for rhbz#1889742 - Typo in /usr/bin/firefox
+
+* Mon Oct 19 2020 Martin Stransky <stransky@redhat.com> - 82.0-4
+- Updated openh264 patch to use keyframes from contained
+ for openh264 only.
+
+* Mon Oct 19 2020 Martin Stransky <stransky@redhat.com> - 82.0-3
+- Added ELN build fixes
+
+* Thu Oct 15 2020 Martin Stransky <stransky@redhat.com> - 82.0-2
+- Updated SELinux relabel setup (rhbz#1731371)
+
+* Thu Oct 15 2020 Martin Stransky <stransky@redhat.com> - 82.0-1
+- Updated to 82.0 Build 2
+
+* Thu Oct 15 2020 Martin Stransky <stransky@redhat.com> - 81.0.2-3
+- Added experimental openh264 seek patch (mzbz#1670333)
+
+* Mon Oct 12 2020 Martin Stransky <stransky@redhat.com> - 81.0.2-2
+- Added a partial fox for rhbz#1886722
+
+* Mon Oct 12 2020 Martin Stransky <stransky@redhat.com> - 81.0.2-1
+- Updated to latest upstream - 81.0.2
+
+* Thu Oct 8 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-9
+- Added an updated fix for mozbz#1656727
+
+* Thu Oct 8 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-8
+- Added fixes for mozbz#1634404, mozbz#1669495
+
+* Thu Oct 8 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-7
+- Removed mozbz#1656727 as it causes a regression rhbz#1886243
+
+* Wed Oct 7 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-6
+- PGO patch update
+- Added fix for mzbz#1669442 (LTO builds)
+
+* Mon Oct 5 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-5
+- Added fix for mozbz#1656727
+
+* Fri Oct 2 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-4
+- Added fix for mozbz#1668771
+
+* Thu Oct 1 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-3
+- Added fix for mozbz#1661192
+
+* Thu Oct 1 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-2
+- Added fix for mozbz#1640567
+- Enable PGO
+
+* Wed Sep 30 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-1
+- Updated to 81.0.1
+
+* Wed Sep 30 2020 Martin Stransky <stransky@redhat.com> - 81.0-9
+- Disabled openh264 download
+- Removed fdk-aac-free dependency (rhbz#1883672)
+- Enabled LTO
+
+* Sat Sep 26 2020 Dan Horák <dan[at]danny.cz> - 81.0-8
+- Re-enable builds for ppc64le
+
+* Fri Sep 25 2020 Martin Stransky <stransky@redhat.com> - 81.0-7
+- Added openh264 fixes
+
+* Wed Sep 23 2020 Martin Stransky <stransky@redhat.com> - 81.0-6
+- Added fix for rhbz#1731371
+
+* Tue Sep 22 2020 Kalev Lember <klember@redhat.com> - 81.0-5
+- Re-enable builds for armv7hl and aarch64 architectures
+
+* Tue Sep 22 2020 Kalev Lember <klember@redhat.com> - 81.0-4
+- Disable LTO to work around firefox build failing in F33+
+
+* Mon Sep 21 2020 Martin Stransky <stransky@redhat.com> - 81.0-3
+- Updated to 81.0 Build 2
+- Updated firefox-disable-ffvpx-with-vapi patch
+- Deleted old changelog entries
+
+* Thu Sep 17 2020 Martin Stransky <stransky@redhat.com> - 81.0-2
+- Added upstream patches mzbz#1665324 mozbz#1665329
+- Updated requested nss version to 3.56
+
+* Tue Sep 15 2020 Martin Stransky <stransky@redhat.com> - 81.0-1
+- Updated to 81.0
+
+* Thu Sep 10 2020 Martin Stransky <stransky@redhat.com> - 80.0.1-3
+- Test build for all arches.
+
+* Fri Sep 4 2020 Martin Stransky <stransky@redhat.com> - 80.0.1-2
+- Added patch for mozbz#1875469
+
+* Tue Sep 1 2020 Martin Stransky <stransky@redhat.com> - 80.0.1-1
+- Updated to 80.0.1
+
+* Tue Aug 18 2020 Martin Stransky <stransky@redhat.com> - 80.0-1
+- Updated to 80.0 Build 2
+- Go back to gcc
+- Disabled WebGL dmabuf backend due to reported errors
+ (mzbz#1655323, mozbz#1656505).
+
+* Tue Aug 18 2020 Martin Stransky <stransky@redhat.com> - 79.0-6
+- Enabled pgo
+- Build with clang
+
+* Tue Aug 4 2020 Martin Stransky <stransky@redhat.com> - 79.0-5
+- Added upstream fix for mozbz#1656436.
+
+* Mon Aug 3 2020 Martin Stransky <stransky@redhat.com> - 79.0-4
+- Updated fix for mozbz#1645671
+
+* Thu Jul 30 2020 Martin Stransky <stransky@redhat.com> - 79.0-3
+- Added VA-API fix for mozbz#1645671
+
+* Wed Jul 29 2020 Martin Stransky <stransky@redhat.com> - 79.0-2
+- Try to enable armv7hl again.
+- Disabled ppc64le due to cargo crash (rhbz#1862012).
+
+* Mon Jul 27 2020 Martin Stransky <stransky@redhat.com> - 79.0-1
+- Update to 79.0
+- Disabled PGO due to rhbz#1849165 (gcc internal error).
+
+* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 78.0.2-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Thu Jul 23 2020 Frantisek Zatloukal <fzatlouk@redhat.com> - 78.0-4
+- Use python3 instead of python2 for build
+
+* Tue Jul 21 2020 Martin Stransky <stransky@redhat.com> - 78.0-3
+- Added fix for mozbz#1651701/rhbz#1855730
+
+* Fri Jul 10 2020 Jan Horak <jhorak@redhat.com> - 78.0.2-2
+- Fixing clang build - linker setup
+
+* Thu Jul 09 2020 Jan Horak <jhorak@redhat.com> - 78.0.2-1
+- Update to 78.0.2 build2
+
+* Wed Jul 01 2020 Jan Horak <jhorak@redhat.com> - 78.0.1-1
+- Update to 78.0.1 build1
+
+* Wed Jul 1 2020 Martin Stransky <stransky@redhat.com> - 78.0-2
+- Add 'Open the Profile Manager' desktop file entry
+
+* Mon Jun 29 2020 Jan Horak <jhorak@redhat.com> - 78.0-1
+- Update to 78.0 build2
+
+* Tue Jun 23 2020 Martin Stransky <stransky@redhat.com> - 77.0.1-3
+- Build with PGO/LTO again.
+
+* Wed Jun 03 2020 Jan Horak <jhorak@redhat.com> - 77.0.1-2
+- Update to 77.0.1 build1
+
+* Wed Jun 03 2020 Jan Horak <jhorak@redhat.com> - 77.0.1-1
+- Fixing pipewire patch
+- New upstream version (77.0.1)
+
+* Tue Jun 2 2020 Martin Stransky <stransky@redhat.com> - 77.0-2
+- Rebuild with updated langpacks (rhbz#1843028).
+
+* Fri May 29 2020 Martin Stransky <stransky@redhat.com> - 77.0-1
+- Updated to Firefox 77.0
+
+* Mon May 25 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-7
+- Added fix for mozbz#1632456
+
+* Mon May 25 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-6
+- Added fix for mozbz#1634213
+
+* Mon May 25 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-5
+- Added fix for mozbz#1619882 - video flickering when va-api is used.
+
+* Thu May 21 2020 Jan Grulich <jgrulich@redhat.com> - 76.0.1-4
+- Add support for PipeWire 0.3
+
+* Wed May 20 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 76.0.1-3
+- Build aarch64 again so aarch64 users get updates
+
+* Wed May 13 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-2
+- Added extra va-api frames to vp8/9 decoder.
+
+* Fri May 8 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-1
+- Updated to 76.0.1
+
+* Thu May 7 2020 Martin Stransky <stransky@redhat.com> - 76.0-3
+- Disable ffvpx when va-api is enabled.
+
+* Tue May 05 2020 Jan Horak <jhorak@redhat.com> - 76.0-2
+- Don't use google safe browsing api key for the geolocation
+
+* Sun May 3 2020 Martin Stransky <stransky@redhat.com> - 76.0-1
+- Updated to 76.0
+
+* Thu Apr 23 2020 Martin Stransky <stransky@redhat.com> - 75.0-3
+- Added fix for mozilla bug #1527976 (browser D&D)
+
+* Tue Apr 14 2020 Jan Horak <jhorak@redhat.com> - 75.0-2
+- Removed gconf-2.0 build requirement
+
+* Mon Apr 06 2020 Martin Stransky <stransky@redhat.com> - 75.0-1
+- Updated to 75.0
+
+* Mon Apr 06 2020 Martin Stransky <stransky@redhat.com> - 74.0.1-3
+- Added fix for mozbz#1627469
+
+* Mon Apr 06 2020 Jan Horak <jhorak@redhat.com> - 74.0.1-2
+- Fixing pipewire patch
+
+* Sat Apr 4 2020 Martin Stransky <stransky@redhat.com> - 74.0.1-1
+- Updated to latest upstream
+- Added fix for mozbz#1624745
+
+* Wed Apr 1 2020 Martin Stransky <stransky@redhat.com> - 74.0-14
+- Added fixes to gnome shell search provider
+
+* Tue Mar 31 2020 Jan Horak <jhorak@redhat.com> - 74.0-13
+- Allow addons sideload to fix missing langpacks issues
+
+* Thu Mar 19 2020 Martin Stransky <stransky@redhat.com> - 74.0-12
+- Added fix for rhbz#1814850 by Daniel Rusek
+
+* Tue Mar 17 2020 Martin Stransky <stransky@redhat.com> - 74.0-11
+- Added fix for mozbz#1623106
+
+* Tue Mar 17 2020 Martin Stransky <stransky@redhat.com> - 74.0-9
+- Added fix for mozbz#1623060
+
+* Tue Mar 17 2020 Jan Grulich <jgrulich@redhat.com> - 74-0-8
+- Add support for window sharing
+
+* Mon Mar 16 2020 Martin Stransky <stransky@redhat.com> - 74.0-7
+- Use D-Bus remote exclusively for both X11 and Wayland backends
+ when WAYLAND_DISPLAY is present.
+
+* Fri Mar 13 2020 Martin Stransky <stransky@redhat.com> - 74.0-6
+- Added fix for mozbz#1615098
+
+* Thu Mar 12 2020 Martin Stransky <stransky@redhat.com> - 74.0-5
+- Added fix for mozbz#1196777
+
+* Tue Mar 10 2020 Kalev Lember <klember@redhat.com> - 74.0-4
+- Remove unused libIDL build dep
+- Disabled arm due to build failures
+
+* Tue Mar 10 2020 Martin Stransky <stransky@redhat.com> - 74.0-3
+- Update to 74.0 Build 3
+
+* Mon Mar 09 2020 Martin Stransky <stransky@redhat.com> - 74.0-2
+- Update to 74.0 Build 2
+
+* Tue Mar 03 2020 Martin Stransky <stransky@redhat.com> - 74.0-1
+- Update to 74.0 Build 1
+- Added mozbz#1609538
+
+* Mon Feb 24 2020 Martin Stransky <stransky@redhat.com> - 73.0.1-4
+- Using pipewire-0.2 as buildrequire
+- Added armv7hl fixes by Gabriel Hojda
+
+* Mon Feb 24 2020 Martin Stransky <stransky@redhat.com> - 73.0.1-2
+- Fixed Bug 1804787 - Some .desktop menu entries unlocalized
+
+* Thu Feb 20 2020 Martin Stransky <stransky@redhat.com> - 73.0.1-1
+- Update to 73.0.1
+
+* Tue Feb 11 2020 Jan Horak <jhorak@redhat.com> - 73.0-1
+- Update to 73.0 build3
+
+* Tue Feb 04 2020 Kalev Lember <klember@redhat.com> - 72.0.2-3
+- Fix various issues with appdata, making the validation pass again
+- Validate appdata during the build
+- Make sure the release tag in appdata is in sync with the package version
+
+* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 72.0.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Mon Jan 20 2020 Jan Horak <jhorak@redhat.com> - 72.0.2-1
+- Update to 72.0.2 build1
+
+* Wed Jan 15 2020 Jan Horak <jhorak@redhat.com> - 72.0.1-2
+- Added fix for wrong cursor offset of popup windows and bumped required nss
+ version
+
+* Wed Jan 08 2020 Jan Horak <jhorak@redhat.com> - 72.0.1-1
+- Update to 72.0.1 build1
+
+* Mon Jan 06 2020 Jan Horak <jhorak@redhat.com> - 72.0-2
+- Update to 72.0 build4
+
+* Fri Jan 03 2020 Jan Horak <jhorak@redhat.com> - 72.0-1
+- Update to 72.0 build3
+
+* Wed Dec 18 2019 Jan Horak <jhorak@redhat.com> - 71.0-17
+- Fix for wrong intl.accept_lang when using non en-us langpack
+
+* Mon Dec 9 2019 Martin Stransky <stransky@redhat.com> - 71.0-16
+- Build with asan
+
+* Mon Dec 9 2019 Martin Stransky <stransky@redhat.com> - 71.0-15
+- Enabled Mozilla crash reporter
+- Enabled PGO builds
+
+* Mon Dec 9 2019 Martin Stransky <stransky@redhat.com> - 71.0-14
+- Updated workaround for mzbz#1601707
+
+* Sat Dec 7 2019 Martin Stransky <stransky@redhat.com> - 71.0-13
+- Built with -fno-lifetime-dse
+
+* Fri Dec 6 2019 Martin Stransky <stransky@redhat.com> - 71.0-12
+- Clang test build, should fix extension breakage
+
+* Fri Dec 6 2019 Martin Stransky <stransky@redhat.com> - 71.0-11
+- Added workaround for:
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1601707
+ http://gcc.gnu.org/PR92831
+
+* Fri Dec 6 2019 Martin Stransky <stransky@redhat.com> - 71.0-10
+- Remove appdata and ship metainfo only
+
+* Wed Dec 4 2019 Martin Stransky <stransky@redhat.com> - 71.0-9
+- Included kiosk mode workaround (mozbz#1594738)
+
+* Tue Dec 3 2019 Martin Stransky <stransky@redhat.com> - 71.0-8
+- Disabled PGO due to startup crash
+
+* Mon Dec 2 2019 Martin Stransky <stransky@redhat.com> - 71.0-7
+- Updated to 71.0 Build 5
+- Updated Gnome search provider
+
+* Wed Nov 27 2019 Martin Stransky <stransky@redhat.com> - 71.0-6
+- Enable Gnome search provider
+
+* Wed Nov 27 2019 Martin Stransky <stransky@redhat.com> - 71.0-5
+- Added fix for mozbz#1593408
+- Temporary disable Gnome search provider
+
+* Tue Nov 26 2019 Martin Stransky <stransky@redhat.com> - 71.0-2
+- Enable Gnome search provider
+
+* Tue Nov 26 2019 Martin Stransky <stransky@redhat.com> - 71.0-1
+- Updated to 71.0 Build 2
+
+* Tue Nov 19 2019 Jan Horak <jhorak@redhat.com> - 70.0.1-5
+- Added fixes for missing popup and overflow widget glitches
+
+* Mon Nov 04 2019 Jan Horak <jhorak@redhat.com> - 70.0.1-4
+- Added fix for non-scrollable popups
+
+* Fri Nov 1 2019 Martin Stransky <stransky@redhat.com> - 70.0.1-1
+- Updated to 70.0.1
+- Built with system-nss (reverted 70.0-2 change).
+
+* Thu Oct 31 2019 Martin Stransky <stransky@redhat.com> - 70.0-2
+- Switched to in-tree nss due to rhbz#1752303
+
+* Tue Oct 15 2019 Martin Stransky <stransky@redhat.com> - 70.0-1
+- Updated to 70.0
diff --git a/megabar.patch b/megabar.patch
new file mode 100644
index 0000000..ddbd4e8
--- /dev/null
+++ b/megabar.patch
@@ -0,0 +1,166 @@
+diff --git a/browser/components/urlbar/UrlbarInput.jsm b/browser/components/urlbar/UrlbarInput.jsm
+index 4c42071..12323dd 100644
+--- a/browser/components/urlbar/UrlbarInput.jsm
++++ b/browser/components/urlbar/UrlbarInput.jsm
+@@ -1712,13 +1712,13 @@ class UrlbarInput {
+
+ // Enable the animation only after the first extend call to ensure it
+ // doesn't run when opening a new window.
+- if (!this.hasAttribute("breakout-extend-animate")) {
+- this.window.promiseDocumentFlushed(() => {
+- this.window.requestAnimationFrame(() => {
+- this.setAttribute("breakout-extend-animate", "true");
+- });
+- });
+- }
++// if (!this.hasAttribute("breakout-extend-animate")) {
++// this.window.promiseDocumentFlushed(() => {
++// this.window.requestAnimationFrame(() => {
++// this.setAttribute("breakout-extend-animate", "true");
++// });
++// });
++// }
+ }
+
+ endLayoutExtend() {
+diff --git a/browser/themes/shared/urlbar-searchbar.inc.css b/browser/themes/shared/urlbar-searchbar.inc.css
+index e80aaf6..6ec0961 100644
+--- a/browser/themes/shared/urlbar-searchbar.inc.css
++++ b/browser/themes/shared/urlbar-searchbar.inc.css
+@@ -5,7 +5,7 @@
+ %endif
+
+ %define fieldHoverBorderColor hsla(240,5%,5%,.35)
+-%define urlbarMarginInline 5px
++%define urlbarMarginInline 0px
+ %define urlbarSearchButtonWidth calc(16px + 2 * var(--urlbar-icon-padding))
+
+ :root {
+@@ -279,40 +279,40 @@
+ }
+
+ #urlbar[breakout][breakout-extend] {
+- top: -@urlbarBreakoutExtend@;
+- left: calc(-@urlbarMarginInline@ - @urlbarBreakoutExtend@);
+- width: calc(100% + 2 * @urlbarMarginInline@ + 2 * @urlbarBreakoutExtend@);
++ top: 0;
++ left: 0;
++ width: 100%;
+ }
+
+ @media (-moz-proton) {
+ #urlbar[breakout][breakout-extend] {
+ top: 0;
+- left: -@urlbarMarginInline@;
+- width: calc(100% + 2 * @urlbarMarginInline@);
++ left: 0;
++ width: 100%;
+ }
+ } /*** END proton ***/
+
+ @media not (-moz-proton) {
+ #urlbar[breakout][breakout-extend] > #urlbar-background {
+- box-shadow: 0 3px 8px 0 rgba(0,0,0,.15)
++ box-shadow: 0 1px 4px rgba(0,0,0,.05);
+ }
+
+ #urlbar[breakout][breakout-extend][open] > #urlbar-background {
+- box-shadow: 0 5px 18px rgba(0,0,0,.2);
++ box-shadow: 0 1px 4px rgba(0,0,0,.05);
+ }
+ } /*** END !proton ***/
+
+ #urlbar[breakout][breakout-extend] > #urlbar-input-container {
+- height: calc(var(--urlbar-toolbar-height) + 2 * @urlbarBreakoutExtend@);
+- padding-block: calc(@urlbarBreakoutExtend@ + (var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2);
+- padding-inline: calc(@urlbarMarginInline@ + @urlbarBreakoutExtend@);
++ height: var(--urlbar-toolbar-height);
++ padding-block: 0;
++ padding-inline: 0;
+ }
+
+ @media (-moz-proton) {
+ #urlbar[breakout][breakout-extend] > #urlbar-input-container {
+ height: var(--urlbar-toolbar-height);
+- padding-block: calc((var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2 + var(--urlbar-container-padding));
+- padding-inline: calc(@urlbarMarginInline@ + var(--urlbar-container-padding));
++ padding-block: 0;
++ padding-inline: 0;
+ }
+ } /*** END proton ***/
+
+@@ -331,7 +331,7 @@
+ }
+
+ #urlbar[breakout][breakout-extend] > #urlbar-background {
+- animation-name: urlbar-grow;
++ animation-name: none;
+ animation-duration: 0s;
+ animation-timing-function: var(--animation-easing-function);
+ }
+diff --git a/browser/themes/shared/urlbarView.inc.css b/browser/themes/shared/urlbarView.inc.css
+index d2bb269..0d47466 100644
+--- a/browser/themes/shared/urlbarView.inc.css
++++ b/browser/themes/shared/urlbarView.inc.css
+@@ -73,16 +73,16 @@
+ display: block;
+ text-shadow: none;
+ overflow: clip;
+- margin-inline: calc(5px + var(--urlbar-container-padding));
+- width: calc(100% - 2 * (5px + var(--urlbar-container-padding)));
++ margin-inline: 0;
++ width: 100%
+ /* Match urlbar-background's border. */
+ border-inline: 1px solid transparent;
+ }
+
+ @media not (-moz-proton) {
+ .urlbarView {
+- margin-inline: calc(4px + var(--identity-box-margin-inline));
+- width: calc(100% - 2 * (4px + var(--identity-box-margin-inline)));
++ margin-inline: 0;
++ width: 100%;
+ }
+ /* If the view is open, offset the toolbar overlap so the view's top border
+ aligns with the toolbar. */
+@@ -112,7 +112,7 @@
+ .urlbarView-row {
+ fill: currentColor;
+ fill-opacity: var(--urlbar-icon-fill-opacity);
+- padding-block: 3px;
++ padding-block: 0;
+ }
+
+ @media not (-moz-proton) {
+@@ -127,7 +127,7 @@
+ }
+
+ :root:not([uidensity=compact]) .urlbarView-row:not([type=tip], [type=dynamic]) {
+- min-height: 32px;
++ min-height: 0;
+ }
+ } /*** END proton ***/
+
+@@ -295,6 +295,7 @@
+ object-fit: contain;
+ flex-shrink: 0;
+ -moz-context-properties: fill, fill-opacity;
++ margin-inline-start: 20px;
+ }
+
+ @media not (-moz-proton) {
+@@ -328,10 +329,10 @@
+
+ .urlbarView-type-icon {
+ position: absolute;
+- width: 12px;
+- height: 12px;
+- margin-bottom: -4px;
+- margin-inline-start: 8px;
++ width: 16px;
++ height: 16px;
++ margin-bottom: 0;
++ margin-inline-start: 0;
+ align-self: end;
+ background-repeat: no-repeat;
+ background-size: contain; \ No newline at end of file
diff --git a/mozilla-vpn-ad.patch b/mozilla-vpn-ad.patch
new file mode 100644
index 0000000..bc884f2
--- /dev/null
+++ b/mozilla-vpn-ad.patch
@@ -0,0 +1,17 @@
+diff --git a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
+--- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
++++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
+@@ -54,13 +54,10 @@
+ <div class="info">
+ <h1 id="info-title" data-l10n-id="about-private-browsing-info-title"></h1>
+ <p id="info-body" data-l10n-id="about-private-browsing-info-description"></p>
+- <a id="private-browsing-myths" data-l10n-id="about-private-browsing-info-myths"></a>
+ </div>
+ </div>
+
+ <div class="promo">
+- <p id="private-browsing-vpn-text" class="vpn-promo" data-l10n-id="about-private-browsing-need-more-privacy"></p>
+- <a id="private-browsing-vpn-link" class="vpn-promo" data-l10n-id="about-private-browsing-turn-on-vpn"></a>
+ </div>
+ </body>
+ </html>
diff --git a/reduce-rust-debuginfo.patch b/reduce-rust-debuginfo.patch
new file mode 100644
index 0000000..e6a9148
--- /dev/null
+++ b/reduce-rust-debuginfo.patch
@@ -0,0 +1,21 @@
+Description: reduce the rust debuginfo level
+ because compiling with debuginfo=2 causes the OOM killer to interrupt the build
+ on launchpad builders. Initially this was only on 32 bit architectures, but
+ with firefox 63 it started happening frequently on arm64 and ppc64el too,
+ with newer versions it started happening very frequently on s390x too, and with
+ firefox 84 (built with rustc 1.47) it started happening on amd64 too.
+ This patch would initially decrease debug_info for selected architectures, but
+ with recent versions of rustc pretty much all supported architectures are
+ affected, so it is now unconditional.
+
+--- a/build/moz.configure/toolchain.configure
++++ b/build/moz.configure/toolchain.configure
+@@ -2167,7 +2167,7 @@ def rust_compile_flags(opt_level, debug_
+ debug_assertions = False
+
+ if debug_symbols:
+- debug_info = "2"
++ debug_info = "1"
+
+ opts = []
+
diff --git a/relax-cargo-dep.patch b/relax-cargo-dep.patch
new file mode 100644
index 0000000..ecc6c02
--- /dev/null
+++ b/relax-cargo-dep.patch
@@ -0,0 +1,11 @@
+--- a/build/moz.configure/rust.configure
++++ b/build/moz.configure/rust.configure
+@@ -168,7 +168,7 @@
+ )
+ )
+ rustc_min_version = Version(MINIMUM_RUST_VERSION)
+- cargo_min_version = rustc_min_version
++ cargo_min_version = Version("1.46.0")
+
+ version = rustc_info.version
+ is_nightly = "nightly" in version.version
diff --git a/remove_addons.patch b/remove_addons.patch
new file mode 100644
index 0000000..40fef37
--- /dev/null
+++ b/remove_addons.patch
@@ -0,0 +1,74 @@
+diff --git a/browser/extensions/moz.build b/browser/extensions/moz.build
+index 269dcb2..ed7c31d 100644
+--- a/browser/extensions/moz.build
++++ b/browser/extensions/moz.build
+@@ -5,10 +5,7 @@
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ DIRS += [
+- "doh-rollout",
+ "formautofill",
+ "screenshots",
+- "webcompat",
+- "report-site-issue",
+ "pictureinpicture",
+ ]
+diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in
+index 496379c..dd6f359 100644
+--- a/browser/locales/Makefile.in
++++ b/browser/locales/Makefile.in
+@@ -61,7 +61,6 @@ l10n-%:
+ ifneq (,$(wildcard ../extensions/formautofill/locales))
+ @$(MAKE) -C ../extensions/formautofill/locales AB_CD=$* XPI_NAME=locale-$*
+ endif
+- @$(MAKE) -C ../extensions/report-site-issue/locales AB_CD=$* XPI_NAME=locale-$*
+ @$(MAKE) -C ../../devtools/client/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
+ @$(MAKE) -C ../../devtools/startup/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
+ @$(MAKE) l10n AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR)
+@@ -82,7 +81,6 @@ endif
+ @$(MAKE) -C ../../devtools/startup/locales chrome AB_CD=$*
+ @$(MAKE) chrome AB_CD=$*
+ @$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales chrome AB_CD=$*
+- @$(MAKE) -C ../extensions/report-site-issue/locales chrome AB_CD=$*
+
+ package-win32-installer: $(SUBMAKEFILES)
+ $(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen ZIP_IN='$(ZIP_OUT)' installer
+diff --git a/browser/locales/filter.py b/browser/locales/filter.py
+index bb2e992..7d7768e 100644
+--- a/browser/locales/filter.py
++++ b/browser/locales/filter.py
+@@ -20,7 +20,6 @@ def test(mod, path, entity=None):
+ "browser",
+ "browser/extensions/formautofill",
+ "browser/extensions/fxmonitor",
+- "browser/extensions/report-site-issue",
+ "extensions/spellcheck",
+ "other-licenses/branding/firefox",
+ "browser/branding/official",
+diff --git a/browser/locales/l10n.ini b/browser/locales/l10n.ini
+index f4cb7ca..4efac13 100644
+--- a/browser/locales/l10n.ini
++++ b/browser/locales/l10n.ini
+@@ -14,7 +14,6 @@ dirs = browser
+ devtools/startup
+ browser/extensions/formautofill
+ browser/extensions/fxmonitor
+- browser/extensions/report-site-issue
+
+ [includes]
+ # non-central apps might want to use %(topsrcdir)s here, or other vars
+diff --git a/browser/locales/l10n.toml b/browser/locales/l10n.toml
+index b9b18fe..af7c583 100644
+--- a/browser/locales/l10n.toml
++++ b/browser/locales/l10n.toml
+@@ -133,10 +133,6 @@ locales = [
+ reference = "browser/extensions/fxmonitor/locales/en-US/**"
+ l10n = "{l}browser/extensions/fxmonitor/**"
+
+-[[paths]]
+- reference = "browser/extensions/report-site-issue/locales/en-US/**"
+- l10n = "{l}browser/extensions/report-site-issue/**"
+-
+ [[paths]]
+ reference = "services/sync/locales/en-US/**"
+ l10n = "{l}services/sync/**"
diff --git a/sandbox-update-arm-syscall-numbers.patch b/sandbox-update-arm-syscall-numbers.patch
new file mode 100644
index 0000000..b6cf3bb
--- /dev/null
+++ b/sandbox-update-arm-syscall-numbers.patch
@@ -0,0 +1,144 @@
+From 05971bd227dc6c359657d1501711e6865e9430f9 Mon Sep 17 00:00:00 2001
+From: Matthew Denton <mpdenton@chromium.org>
+Date: Tue, 28 Jul 2020 00:29:01 +0000
+Subject: [PATCH] Linux sandbox: update arm syscall numbers
+
+Change-Id: Ia2c39a86fb3516040a74de963115e73b7b1a1e0c
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2318316
+Reviewed-by: Robert Sesek <rsesek@chromium.org>
+Commit-Queue: Matthew Denton <mpdenton@chromium.org>
+Cr-Commit-Position: refs/heads/master@{#792090}
+---
+
+diff --git a/security/sandbox/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h b/security/sandbox/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h
+index 59d0eab8..a242c18c 100644
+--- a/security/sandbox/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h
++++ b/security/sandbox/chromium/sandbox/linux/system_headers/arm64_linux_syscalls.h
+@@ -1063,4 +1063,60 @@
+ #define __NR_memfd_create 279
+ #endif
+
++#if !defined(__NR_bpf)
++#define __NR_bpf 280
++#endif
++
++#if !defined(__NR_execveat)
++#define __NR_execveat 281
++#endif
++
++#if !defined(__NR_userfaultfd)
++#define __NR_userfaultfd 282
++#endif
++
++#if !defined(__NR_membarrier)
++#define __NR_membarrier 283
++#endif
++
++#if !defined(__NR_mlock2)
++#define __NR_mlock2 284
++#endif
++
++#if !defined(__NR_copy_file_range)
++#define __NR_copy_file_range 285
++#endif
++
++#if !defined(__NR_preadv2)
++#define __NR_preadv2 286
++#endif
++
++#if !defined(__NR_pwritev2)
++#define __NR_pwritev2 287
++#endif
++
++#if !defined(__NR_pkey_mprotect)
++#define __NR_pkey_mprotect 288
++#endif
++
++#if !defined(__NR_pkey_alloc)
++#define __NR_pkey_alloc 289
++#endif
++
++#if !defined(__NR_pkey_free)
++#define __NR_pkey_free 290
++#endif
++
++#if !defined(__NR_statx)
++#define __NR_statx 291
++#endif
++
++#if !defined(__NR_io_pgetevents)
++#define __NR_io_pgetevents 292
++#endif
++
++#if !defined(__NR_rseq)
++#define __NR_rseq 293
++#endif
++
+ #endif // SANDBOX_LINUX_SYSTEM_HEADERS_ARM64_LINUX_SYSCALLS_H_
+diff --git a/security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h b/security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
+index 1addd53..85e2110b 100644
+--- a/security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
++++ b/security/sandbox/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h
+@@ -1385,6 +1385,62 @@
+ #define __NR_memfd_create (__NR_SYSCALL_BASE+385)
+ #endif
+
++#if !defined(__NR_bpf)
++#define __NR_bpf (__NR_SYSCALL_BASE+386)
++#endif
++
++#if !defined(__NR_execveat)
++#define __NR_execveat (__NR_SYSCALL_BASE+387)
++#endif
++
++#if !defined(__NR_userfaultfd)
++#define __NR_userfaultfd (__NR_SYSCALL_BASE+388)
++#endif
++
++#if !defined(__NR_membarrier)
++#define __NR_membarrier (__NR_SYSCALL_BASE+389)
++#endif
++
++#if !defined(__NR_mlock2)
++#define __NR_mlock2 (__NR_SYSCALL_BASE+390)
++#endif
++
++#if !defined(__NR_copy_file_range)
++#define __NR_copy_file_range (__NR_SYSCALL_BASE+391)
++#endif
++
++#if !defined(__NR_preadv2)
++#define __NR_preadv2 (__NR_SYSCALL_BASE+392)
++#endif
++
++#if !defined(__NR_pwritev2)
++#define __NR_pwritev2 (__NR_SYSCALL_BASE+393)
++#endif
++
++#if !defined(__NR_pkey_mprotect)
++#define __NR_pkey_mprotect (__NR_SYSCALL_BASE+394)
++#endif
++
++#if !defined(__NR_pkey_alloc)
++#define __NR_pkey_alloc (__NR_SYSCALL_BASE+395)
++#endif
++
++#if !defined(__NR_pkey_free)
++#define __NR_pkey_free (__NR_SYSCALL_BASE+396)
++#endif
++
++#if !defined(__NR_statx)
++#define __NR_statx (__NR_SYSCALL_BASE+397)
++#endif
++
++#if !defined(__NR_rseq)
++#define __NR_rseq (__NR_SYSCALL_BASE+398)
++#endif
++
++#if !defined(__NR_io_pgetevents)
++#define __NR_io_pgetevents (__NR_SYSCALL_BASE+399)
++#endif
++
+ // ARM private syscalls.
+ #if !defined(__ARM_NR_BASE)
+ #define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0xF0000)
diff --git a/sources b/sources
deleted file mode 100644
index 8fb0bcb..0000000
--- a/sources
+++ /dev/null
@@ -1,4 +0,0 @@
-SHA512 (mochitest-python.tar.gz) = 7f357cb8bd93d64be5cb75819a8a813d2f8f217ff25f0df8c3190910744132405d45797b3900775a44b554f5c70cf2682809c9e7a686ca131fddcd81e98028d9
-SHA512 (firefox-langpacks-89.0-20210601.tar.xz) = 91166fdd3cf08b7301b8ea3bba3cd71a0cf33b130f7981a241d9bc4dc5c8642085a23375c1b39f87b9c0ad715672eedaef160bb29e317d4d37f82ac9417231be
-SHA512 (firefox-89.0.source.tar.xz) = 5089720feda15d054d0aa4c3bdeb84760314dadd6381d7360e688d8e396154868220c6315add650d8d2a42652cb8a9bfeb833885812ef0bd70a74ee58ad18aa3
-SHA512 (cbindgen-vendor.tar.xz) = b9ab1498be90ecf60822df7021f8812f124550d97f8cd687c69d3ab56fc5fb714bfe88c78c978a1794d211724909a9a5cad6a4b483fa05f762909c45d5075520
diff --git a/use-system-icupkg.patch b/use-system-icupkg.patch
new file mode 100644
index 0000000..99eb4b5
--- /dev/null
+++ b/use-system-icupkg.patch
@@ -0,0 +1,13 @@
+diff -r 08cd64cdbc3b config/external/icu/data/convert_icudata.py
+--- a/config/external/icu/data/convert_icudata.py Fri Jul 17 11:18:09 2020 +0000
++++ b/config/external/icu/data/convert_icudata.py Sat Jul 18 14:40:33 2020 +0200
+@@ -11,7 +11,7 @@
+ subprocess.run(
+ [
+- os.path.join(buildconfig.topobjdir, "dist", "host", "bin", "icupkg"),
++ "icupkg",
+ "-tb",
+ data_file,
+ output.name,
+ ]
+
diff --git a/webrtc-fix-compiler-flags-for-armhf.patch b/webrtc-fix-compiler-flags-for-armhf.patch
new file mode 100644
index 0000000..5cd6658
--- /dev/null
+++ b/webrtc-fix-compiler-flags-for-armhf.patch
@@ -0,0 +1,35 @@
+# Description: Don't pass -mfloat-abi=softfp on armhf
+# Author: Chris Coulson <chris.coulson@canonical.com>
+# Forwarded: no
+
+--- a/build/gyp.mozbuild
++++ b/build/gyp.mozbuild
+@@ -107,9 +107,15 @@ if CONFIG['ARM_ARCH']:
+ gyp_vars['arm_neon'] = 1
+ gyp_vars['build_with_neon'] = 1
+ else:
+- # CPU detection for ARM works on Android only. armv7 always uses CPU
+- # detection, so we have to set armv7=0 for non-Android target
+- gyp_vars['armv7'] = 0
++ gyp_vars['armv7'] = 1
++ # We enable NEON for Ubuntu armhf. Note that these don't really
++ # have any effect here as NEON is hardcoded on in
++ # media/webrtc/trunk/webrtc/build/common.gypi. Disabling these
++ # without fixing that file will result in a link failure, as
++ # targets hidden behind the build_with_neon flag don't get
++ # built but WEBRTC_HAS_NEON is still defined
++ gyp_vars['arm_neon'] = 1
++ gyp_vars['build_with_neon'] = 1
+ # For libyuv
+ gyp_vars['arm_version'] = int(CONFIG['ARM_ARCH'])
+
+--- a/third_party/libwebrtc/webrtc/build/config/compiler/BUILD.gn
++++ b/third_party/libwebrtc/webrtc/build/config/compiler/BUILD.gn
+@@ -590,7 +590,6 @@ config("compiler_cpu_abi") {
+ if (!is_nacl) {
+ cflags += [
+ "-march=$arm_arch",
+- "-mfloat-abi=$arm_float_abi",
+ ]
+ }
+ if (arm_tune != "") {
bgstack15