Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package MozillaFirefox for openSUSE:Factory checked in at 2026-03-28 20:13:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/MozillaFirefox (Old) and /work/SRC/openSUSE:Factory/.MozillaFirefox.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "MozillaFirefox" Sat Mar 28 20:13:25 2026 rev:481 rq:1343068 version:149.0 Changes: -------- --- /work/SRC/openSUSE:Factory/MozillaFirefox/MozillaFirefox.changes 2026-03-11 20:51:23.188253642 +0100 +++ /work/SRC/openSUSE:Factory/.MozillaFirefox.new.8177/MozillaFirefox.changes 2026-03-28 20:14:43.896841547 +0100 @@ -1,0 +2,140 @@ +Thu Mar 26 08:29:07 UTC 2026 - Wolfgang Rosenauer <[email protected]> + +- Mozilla Firefox 149.0 + https://www.firefox.com/en-US/firefox/149.0/releasenotes + MFSA 2026-20 (bsc#1260083) + * CVE-2026-4684 (bmo#2011129) + Race condition, use-after-free in the Graphics: WebRender + component + * CVE-2026-4685 (bmo#2016349) + Incorrect boundary conditions in the Graphics: Canvas2D + component + * CVE-2026-4686 (bmo#2016351) + Incorrect boundary conditions in the Graphics: Canvas2D + component + * CVE-2026-4687 (bmo#2016368) + Sandbox escape due to incorrect boundary conditions in the + Telemetry component + * CVE-2026-4688 (bmo#2016373) + Sandbox escape due to use-after-free in the Disability Access + APIs component + * CVE-2026-4689 (bmo#2016374) + Sandbox escape due to incorrect boundary conditions, integer + overflow in the XPCOM component + * CVE-2026-4690 (bmo#2016375) + Sandbox escape due to incorrect boundary conditions, integer + overflow in the XPCOM component + * CVE-2026-4691 (bmo#2017512) + Use-after-free in the CSS Parsing and Computation component + * CVE-2026-4692 (bmo#2017643) + Sandbox escape in the Responsive Design Mode component + * CVE-2026-4693 (bmo#2018102) + Incorrect boundary conditions in the Audio/Video: Playback + component + * CVE-2026-4694 (bmo#2018430) + Incorrect boundary conditions, integer overflow in the + Graphics component + * CVE-2026-4695 (bmo#2020030) + Incorrect boundary conditions in the Audio/Video: Web Codecs + component + * CVE-2026-4696 (bmo#2020190) + Use-after-free in the Layout: Text and Fonts component + * CVE-2026-4697 (bmo#2020422) + Incorrect boundary conditions in the Audio/Video: Web Codecs + component + * CVE-2026-4698 (bmo#2020906) + JIT miscompilation in the JavaScript Engine: JIT component + * CVE-2026-4699 (bmo#2021863) + Incorrect boundary conditions in the Layout: Text and Fonts + component + * CVE-2026-4700 (bmo#2003766) + Mitigation bypass in the Networking: HTTP component + * CVE-2026-4701 (bmo#2009303) + Use-after-free in the JavaScript Engine component + * CVE-2026-4722 (bmo#2010097) + Privilege escalation in the IPC component + * CVE-2026-4702 (bmo#2013560) + JIT miscompilation in the JavaScript Engine component + * CVE-2026-4723 (bmo#2013573) + Use-after-free in the JavaScript Engine component + * CVE-2026-4724 (bmo#2014865) + Undefined behavior in the Audio/Video component + * CVE-2026-4704 (bmo#2014868) + Denial-of-service in the WebRTC: Signaling component + * CVE-2026-4705 (bmo#2014873) + Undefined behavior in the WebRTC: Signaling component + * CVE-2026-4706 (bmo#2015091) + Incorrect boundary conditions in the Graphics: Canvas2D + component + * CVE-2026-4707 (bmo#2015267) + Incorrect boundary conditions in the Graphics: Canvas2D + component + * CVE-2026-4708 (bmo#2015268) + Incorrect boundary conditions in the Graphics component + * CVE-2026-4709 (bmo#2016329, bmo#2016342) + Incorrect boundary conditions in the Audio/Video: GMP + component + * CVE-2026-4710 (bmo#2016370) + Incorrect boundary conditions in the Audio/Video component + * CVE-2026-4711 (bmo#2017002) + Use-after-free in the Widget: Cocoa component + * CVE-2026-4725 (bmo#2017108) + Sandbox escape due to use-after-free in the Graphics: + Canvas2D component + * CVE-2026-4712 (bmo#2017666) + Information disclosure in the Widget: Cocoa component + * CVE-2026-4713 (bmo#2018113) + Incorrect boundary conditions in the Graphics component + * CVE-2026-4714 (bmo#2018126) + Incorrect boundary conditions in the Audio/Video component + * CVE-2026-4715 (bmo#2018405) + Uninitialized memory in the Graphics: Canvas2D component + * CVE-2026-4716 (bmo#2018592) + Incorrect boundary conditions, uninitialized memory in the + JavaScript Engine component + * CVE-2026-4717 (bmo#2021695) + Privilege escalation in the Netmonitor component + * CVE-2026-4726 (bmo#1955311) + Denial-of-service in the XML component + * CVE-2025-59375 (bmo#1988467) + Denial-of-service in the XML component + * CVE-2026-4727 (bmo#2008112) + Denial-of-service in the Libraries component in NSS + * CVE-2026-4728 (bmo#2013179) + Spoofing issue in the Privacy: Anti-Tracking component + * CVE-2026-4718 (bmo#2014864) + Undefined behavior in the WebRTC: Signaling component + * CVE-2026-4719 (bmo#2016367) + Incorrect boundary conditions in the Graphics: Text component + * CVE-2026-4720 (bmo#2004652, bmo#2019372, bmo#2021922, + bmo#2022567, bmo#2022733) + Memory safety bugs fixed in Firefox ESR 140.9, Thunderbird + ESR 140.9, Firefox 149 and Thunderbird 149 + * CVE-2026-4729 (bmo#1944033, bmo#1997282, bmo#2009213, + bmo#2011412, bmo#2021925, bmo#2022034) + Memory safety bugs fixed in Firefox 149 and Thunderbird 149 + * CVE-2026-4721 (bmo#2013762, bmo#2015291, bmo#2016591, + bmo#2016661, bmo#2016664, bmo#2017303, bmo#2017894, + bmo#2018090, bmo#2018196, bmo#2018379, bmo#2019112, + bmo#2022090, bmo#2022243, bmo#2022351, bmo#2022478, + bmo#2022676) + Memory safety bugs fixed in Firefox ESR 115.34, Firefox ESR + 140.9, Thunderbird ESR 140.9, Firefox 149 and Thunderbird 149 +- requires NSS >= 3.121 +- removed obsolete mozilla-breakpad.patch +- build using rust 1.93 +- fix the .spec file to not fail when trying to remove a non + existing firefox-l10n.js during installation + +------------------------------------------------------------------- +Thu Mar 19 09:58:02 UTC 2026 - Josef Melcr <[email protected]> + +- Fix PGO builds with GCC + * add mozilla-sandbox-lto.patch + +------------------------------------------------------------------- +Sun Mar 15 21:38:02 UTC 2026 - Aaron Puchert <[email protected]> + +- Use current Clang on Tumbleweed. + +------------------------------------------------------------------- Old: ---- firefox-148.0.2.source.tar.xz firefox-148.0.2.source.tar.xz.asc l10n-148.0.2.tar.xz mozilla-breakpad.patch New: ---- firefox-149.0.source.tar.xz firefox-149.0.source.tar.xz.asc l10n-149.0.tar.xz mozilla-sandbox-lto.patch ----------(Old B)---------- Old:- requires NSS >= 3.121 - removed obsolete mozilla-breakpad.patch - build using rust 1.93 ----------(Old E)---------- ----------(New B)---------- New:- Fix PGO builds with GCC * add mozilla-sandbox-lto.patch ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ MozillaFirefox.spec ++++++ --- /var/tmp/diff_new_pack.ZyIxty/_old 2026-03-28 20:15:04.961710932 +0100 +++ /var/tmp/diff_new_pack.ZyIxty/_new 2026-03-28 20:15:04.961710932 +0100 @@ -28,16 +28,14 @@ # orig_suffix b3 # major 69 # mainver %%major.99 -%define major 148 -%define mainver %major.0.2 -%define orig_version 148.0.2 +%define major 149 +%define mainver %major.0 +%define orig_version 149.0 %define orig_suffix %{nil} %define update_channel release %define branding 1 %define devpkg 1 - -# PGO builds do not work in TW currently (bmo#1680306) -%define do_profiling 0 +%define do_profiling 1 # upstream default is clang (to use gcc for large parts set to 0) %define clang_build 0 @@ -47,6 +45,11 @@ # define if ccache should be used or not %define useccache 1 +# ccache doesn't work with pgo +%if 0%{?do_profiling} +%define useccache 0 +%endif + # SLE-12 doesn't have this macro %{!?_rpmmacrodir: %global _rpmmacrodir %{_rpmconfigdir}/macros.d} @@ -103,8 +106,8 @@ %else BuildRequires: gcc-c++ %endif -BuildRequires: cargo1.88 -BuildRequires: rust1.88 +BuildRequires: cargo1.93 +BuildRequires: rust1.93 %if 0%{useccache} != 0 BuildRequires: ccache %endif @@ -114,7 +117,7 @@ BuildRequires: libproxy-devel BuildRequires: makeinfo BuildRequires: mozilla-nspr-devel >= 4.38.2 -BuildRequires: mozilla-nss-devel >= 3.120.1 +BuildRequires: mozilla-nss-devel >= 3.121 BuildRequires: nasm >= 2.14 BuildRequires: nodejs >= 12.22.12 %if 0%{?sle_version} >= 120000 && 0%{?sle_version} < 150000 @@ -154,11 +157,7 @@ %if 0%{?suse_version} < 1599 BuildRequires: clang19-devel %else -%if 0%{?suse_version} < 1699 BuildRequires: clang-devel -%else -BuildRequires: clang20-devel -%endif %endif BuildRequires: pkgconfig(glib-2.0) >= 2.22 BuildRequires: pkgconfig(gobject-2.0) @@ -229,7 +228,7 @@ Patch20: one_swizzle_to_rule_them_all.patch Patch21: svg-rendering.patch Patch24: mozilla-bmo1746799.patch -Patch25: mozilla-breakpad.patch +Patch25: mozilla-sandbox-lto.patch # Firefox/browser Patch102: firefox-branded-icons.patch %endif @@ -406,6 +405,9 @@ %else export CC=gcc export CXX=g++ +export AR=gcc-ar +export NM=gcc-nm +export RANLIB=gcc-ranlib %endif %endif %ifarch %arm %ix86 @@ -515,11 +517,16 @@ ac_add_options --enable-lto %if 0%{?do_profiling} ac_add_options MOZ_PGO=1 +export CCACHE_DISABLE=1 %endif %endif %endif EOF +%if 0%{?do_profiling} +export CCACHE_DISABLE=1 +%endif + %if %{with only_print_mozconfig} cat ./.obsenv.sh cat $MOZCONFIG @@ -597,7 +604,7 @@ # need to remove default en-US firefox-l10n.js before it gets # populated into browser's omni.ja; it only contains general.useragent.locale # which should be loaded from each language pack (set in firefox.js) -rm dist/bin/browser/defaults/preferences/firefox-l10n.js +rm -f dist/bin/browser/defaults/preferences/firefox-l10n.js make -C browser/installer STRIP=/bin/true MOZ_PKG_FATAL_WARNINGS=0 #DEBUG (break the build if searchplugins are missing / temporary) grep amazondotcom dist/firefox/browser/omni.ja ++++++ firefox-148.0.2.source.tar.xz -> firefox-149.0.source.tar.xz ++++++ /work/SRC/openSUSE:Factory/MozillaFirefox/firefox-148.0.2.source.tar.xz /work/SRC/openSUSE:Factory/.MozillaFirefox.new.8177/firefox-149.0.source.tar.xz differ: char 15, line 1 ++++++ l10n-148.0.2.tar.xz -> l10n-149.0.tar.xz ++++++ /work/SRC/openSUSE:Factory/MozillaFirefox/l10n-148.0.2.tar.xz /work/SRC/openSUSE:Factory/.MozillaFirefox.new.8177/l10n-149.0.tar.xz differ: char 15, line 1 ++++++ mozilla-bmo1746799.patch ++++++ --- /var/tmp/diff_new_pack.ZyIxty/_old 2026-03-28 20:15:05.233722158 +0100 +++ /var/tmp/diff_new_pack.ZyIxty/_new 2026-03-28 20:15:05.237722323 +0100 @@ -11,9 +11,9 @@ --- a/third_party/rust/cubeb-pulse/.cargo-checksum.json +++ b/third_party/rust/cubeb-pulse/.cargo-checksum.json @@ -1,1 +1,1 @@ --{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"c91e5b2eeb7a70d9a03164c47e7e143a6eecb0f2b8cca65ae7c9a045e04f5933","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.lock":"037128ad81d462709e442fc4045ccaf502fc806eeec57e791add928690728751","Cargo.toml":"9095cbd369add6974396b7e2dc62feca257ccf36fd0823b92917981664d19bb5","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"4a9d953f80724a8b78959e9b1c6bd57ea622dd5d93468ea372034ea1a13d6bda","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"dfb30ec497d6215e4535e936fea8fe3a407ef24dc1cec43b52c0ffa923d9229c","src/backend/stream.rs":"e44a2c4bebc079cfed9324 d23b1dfdfadd33d0f972f9778c4bed9f1d8ca025d0","src/capi.rs":"f5d3e21b64dc401a86ed4de8f5cc339fda5fe69720566e749f6bb71e50767fb2","src/lib.rs":"35b84c71bd564f9571a166440087e5ee737066f3d35ac7417552cedd08b2933d"},"package":null} +-{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"c91e5b2eeb7a70d9a03164c47e7e143a6eecb0f2b8cca65ae7c9a045e04f5933","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.lock":"b3c23055437dea3d869de506d9cebdee22c346dbeac4ec639357e0177088bcb1","Cargo.toml":"90192b9fd4ce4b7eb699d0d68dbada1f8f4848e887d758e8485bf64aa0a7139e","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"096d471309e88409ffdd17d4a3887302dca2b4382d55a2f2a39110b852338816","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"dfb30ec497d6215e4535e936fea8fe3a407ef24dc1cec43b52c0ffa923d9229c","src/backend/stream.rs":"e44a2c4bebc079cfed9324 d23b1dfdfadd33d0f972f9778c4bed9f1d8ca025d0","src/capi.rs":"f5d3e21b64dc401a86ed4de8f5cc339fda5fe69720566e749f6bb71e50767fb2","src/lib.rs":"35b84c71bd564f9571a166440087e5ee737066f3d35ac7417552cedd08b2933d"},"package":null} \ No newline at end of file -+{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"c91e5b2eeb7a70d9a03164c47e7e143a6eecb0f2b8cca65ae7c9a045e04f5933","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.lock":"037128ad81d462709e442fc4045ccaf502fc806eeec57e791add928690728751","Cargo.toml":"9095cbd369add6974396b7e2dc62feca257ccf36fd0823b92917981664d19bb5","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"4a9d953f80724a8b78959e9b1c6bd57ea622dd5d93468ea372034ea1a13d6bda","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"dfb30ec497d6215e4535e936fea8fe3a407ef24dc1cec43b52c0ffa923d9229c","src/backend/stream.rs":"46cdbdb737e4ba115e8544 0b82bc247eb68841d037801f1a2f35139e1715bd6e","src/capi.rs":"f5d3e21b64dc401a86ed4de8f5cc339fda5fe69720566e749f6bb71e50767fb2","src/lib.rs":"35b84c71bd564f9571a166440087e5ee737066f3d35ac7417552cedd08b2933d"},"package":null} ++{"files":{".editorconfig":"bf047bd1da10cabb99eea666d1e57c321eba4716dccb3e4ed0e2c5fe3ca53858",".github/workflows/build.yml":"c91e5b2eeb7a70d9a03164c47e7e143a6eecb0f2b8cca65ae7c9a045e04f5933","AUTHORS":"0e0ac930a68ce2f6b876126b195add177f0d3886facb9260f4d9b69f1988f0cc","Cargo.lock":"b3c23055437dea3d869de506d9cebdee22c346dbeac4ec639357e0177088bcb1","Cargo.toml":"90192b9fd4ce4b7eb699d0d68dbada1f8f4848e887d758e8485bf64aa0a7139e","LICENSE":"44c6b5ae5ec3fe2fbc608b00e6f4896f4d2d5c7e525fcbaa3eaa3cf2f3d5a983","README.md":"0079450bb4b013bac065ed1750851e461a3710ebad1f323817da1cb82db0bc4f","src/backend/context.rs":"096d471309e88409ffdd17d4a3887302dca2b4382d55a2f2a39110b852338816","src/backend/cork_state.rs":"4a0f1afc7d9f333dac89218cc56d7d32fbffb487cd48c1c9a4e03d79cb3b5e28","src/backend/intern.rs":"11ca424e4eb77f8eb9fd5a6717d1e791facf9743156a8534f0016fcf64d57b0f","src/backend/mod.rs":"dfb30ec497d6215e4535e936fea8fe3a407ef24dc1cec43b52c0ffa923d9229c","src/backend/stream.rs":"46cdbdb737e4ba115e8544 0b82bc247eb68841d037801f1a2f35139e1715bd6e","src/capi.rs":"f5d3e21b64dc401a86ed4de8f5cc339fda5fe69720566e749f6bb71e50767fb2","src/lib.rs":"35b84c71bd564f9571a166440087e5ee737066f3d35ac7417552cedd08b2933d"},"package":null} diff --git a/third_party/rust/cubeb-pulse/src/backend/stream.rs b/third_party/rust/cubeb-pulse/src/backend/stream.rs --- a/third_party/rust/cubeb-pulse/src/backend/stream.rs +++ b/third_party/rust/cubeb-pulse/src/backend/stream.rs ++++++ mozilla-pgo.patch ++++++ --- /var/tmp/diff_new_pack.ZyIxty/_old 2026-03-28 20:15:05.265723479 +0100 +++ /var/tmp/diff_new_pack.ZyIxty/_new 2026-03-28 20:15:05.269723643 +0100 @@ -1,12 +1,16 @@ # HG changeset patch # User Wolfgang Rosenauer <[email protected]> -# Parent 9959fe2a13a39cbeb98ca1bef2e21caba16717bd +# Parent 0d7ca7461e1be032ef853f6e0202c50d79bedbec -Index: firefox-115.0/build/moz.configure/lto-pgo.configure -=================================================================== ---- firefox-115.0.orig/build/moz.configure/lto-pgo.configure -+++ firefox-115.0/build/moz.configure/lto-pgo.configure -@@ -251,8 +251,8 @@ def lto( +diff --git a/build/moz.configure/lto-pgo.configure b/build/moz.configure/lto-pgo.configure +--- a/build/moz.configure/lto-pgo.configure ++++ b/build/moz.configure/lto-pgo.configure +@@ -354,34 +354,34 @@ def lto( + "configure." + ) + + if c_compiler.type == "clang": + if "full" in values: cflags.append("-flto") ldflags.append("-flto") else: @@ -17,7 +21,15 @@ if target.os == "Android" and "cross" in values: # Work around https://github.com/rust-lang/rust/issues/90088 -@@ -268,7 +268,7 @@ def lto( + # by enabling the highest level of SSE the rust targets default + # to. + # https://github.com/rust-lang/rust/blob/bdfcb88e8b6203ccb46a2fb6649979b773efc8ac/compiler/rustc_target/src/spec/i686_linux_android.rs#L13 + # https://github.com/rust-lang/rust/blob/8d1083e319841624f64400e1524805a40d725439/compiler/rustc_target/src/spec/x86_64_linux_android.rs#L7 + if target.cpu == "x86": + ldflags.append("-Wl,-plugin-opt=-mattr=+ssse3") + elif target.cpu == "x86_64": + ldflags.append("-Wl,-plugin-opt=-mattr=+sse4.2") + elif c_compiler.type == "clang-cl": if "full" in values: cflags.append("-flto") else: @@ -26,11 +38,20 @@ # With clang-cl, -flto can only be used with -c or -fuse-ld=lld. # AC_TRY_LINKs during configure don't have -c, so pass -fuse-ld=lld. cflags.append("-fuse-ld=lld") -Index: firefox-115.0/build/pgo/profileserver.py -=================================================================== ---- firefox-115.0.orig/build/pgo/profileserver.py -+++ firefox-115.0/build/pgo/profileserver.py -@@ -10,7 +10,7 @@ import subprocess + + # Explicitly set the CPU to optimize for so the linker doesn't + # choose a poor default. Rust compilation by default uses the + # pentium4 CPU on x86: + # +diff --git a/build/pgo/profileserver.py b/build/pgo/profileserver.py +--- a/build/pgo/profileserver.py ++++ b/build/pgo/profileserver.py +@@ -5,17 +5,17 @@ + # file, You can obtain one at http://mozilla.org/MPL/2.0/. + + import glob + import os + import subprocess import sys import mozcrash @@ -39,7 +60,17 @@ from mozfile import TemporaryDirectory, json from mozhttpd import MozHttpd from mozprofile import FirefoxProfile, Preferences -@@ -96,9 +96,22 @@ if __name__ == "__main__": + from mozprofile.permissions import ServerLocations + from mozrunner import CLI, FirefoxRunner + + PORT = 8888 + +@@ -91,19 +91,32 @@ if __name__ == "__main__": + ), + path_mappings=path_mappings, + ) + sp3_httpd.start(block=False) + print("started SP3 server on port 8000") locations = ServerLocations() locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged") @@ -65,7 +96,17 @@ with TemporaryDirectory() as profilePath: # TODO: refactor this into mozprofile -@@ -228,6 +241,10 @@ if __name__ == "__main__": + profile_data_dir = os.path.join(build.topsrcdir, "testing", "profiles") + with open(os.path.join(profile_data_dir, "profiles.json")) as fh: + base_profiles = json.load(fh)["profileserver"] + + prefpaths = [ +@@ -223,16 +236,20 @@ if __name__ == "__main__": + + # Try to move the crash reports to the artifacts even if Firefox appears + # to exit successfully, in case there's a crash that doesn't set the + # return code to non-zero for some reason. + if get_crashreports(profilePath, name="Firefox exited successfully?") != 0: print("Firefox exited successfully, but produced a crashreport") sys.exit(1) @@ -76,11 +117,18 @@ llvm_profdata = env.get("LLVM_PROFDATA") if llvm_profdata: profraw_files = glob.glob("*.profraw") -Index: firefox-115.0/build/unix/mozconfig.unix -=================================================================== ---- firefox-115.0.orig/build/unix/mozconfig.unix -+++ firefox-115.0/build/unix/mozconfig.unix -@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then + if not profraw_files: + print( + "Could not find profraw files in the current directory: %s" + % os.getcwd() + ) +diff --git a/build/unix/mozconfig.unix b/build/unix/mozconfig.unix +--- a/build/unix/mozconfig.unix ++++ b/build/unix/mozconfig.unix +@@ -1,14 +1,23 @@ + . "$topsrcdir/build/mozconfig.common" + + if [ -n "$FORCE_GCC" ]; then CC="$MOZ_FETCHES_DIR/gcc/bin/gcc" CXX="$MOZ_FETCHES_DIR/gcc/bin/g++" @@ -96,21 +144,34 @@ # We want to make sure we use binutils and other binaries in the tooltool # package. mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$MOZ_FETCHES_DIR/binutils/bin:$PATH" -Index: firefox-115.0/extensions/spellcheck/src/moz.build -=================================================================== ---- firefox-115.0.orig/extensions/spellcheck/src/moz.build -+++ firefox-115.0/extensions/spellcheck/src/moz.build -@@ -28,3 +28,5 @@ EXPORTS.mozilla += [ + else + # For some builds we don't want to have Clang based static-analysis activated + if [ -z "$DISABLE_CLANG_PLUGIN" ]; then + export ENABLE_CLANG_PLUGIN=1 + fi +diff --git a/extensions/spellcheck/src/moz.build b/extensions/spellcheck/src/moz.build +--- a/extensions/spellcheck/src/moz.build ++++ b/extensions/spellcheck/src/moz.build +@@ -21,8 +21,10 @@ FINAL_LIBRARY = "xul" + + LOCAL_INCLUDES += [ + "../ipc", + ] + EXPORTS.mozilla += [ "mozInlineSpellChecker.h", "mozSpellChecker.h", ] + +CXXFLAGS += ['-fno-devirtualize'] -Index: firefox-115.0/toolkit/components/terminator/nsTerminator.cpp -=================================================================== ---- firefox-115.0.orig/toolkit/components/terminator/nsTerminator.cpp -+++ firefox-115.0/toolkit/components/terminator/nsTerminator.cpp -@@ -460,6 +460,11 @@ void nsTerminator::StartWatchdog() { +diff --git a/toolkit/components/terminator/nsTerminator.cpp b/toolkit/components/terminator/nsTerminator.cpp +--- a/toolkit/components/terminator/nsTerminator.cpp ++++ b/toolkit/components/terminator/nsTerminator.cpp +@@ -333,16 +333,21 @@ void nsTerminator::StartWatchdog() { + // Defend against overflow + crashAfterMS = INT32_MAX; + } else { + crashAfterMS *= scaleUp; + } } #endif @@ -120,6 +181,42 @@ + crashAfterMS = INT32_MAX; + UniquePtr<Options> options(new Options()); - // crashAfterTicks is guaranteed to be > 0 as - // crashAfterMS >= ADDITIONAL_WAIT_BEFORE_CRASH_MS >> HEARTBEAT_INTERVAL_MS + // Guarantee that crashAfterTicks is non-zero + options->crashAfterTicks = std::max(1, crashAfterMS / HEARTBEAT_INTERVAL_MS); + + DebugOnly<PRThread*> watchdogThread = + CreateSystemThread(RunWatchdog, options.release()); + MOZ_ASSERT(watchdogThread); + } +Index: firefox-148.0/build/moz.configure/lto-pgo.configure +=================================================================== +--- firefox-148.0.orig/build/moz.configure/lto-pgo.configure ++++ firefox-148.0/build/moz.configure/lto-pgo.configure +@@ -96,12 +96,16 @@ set_config("PGO_PROFILE_PATH", pgo_profi + + @depends( + "--enable-profile-use", ++ c_compiler, + pgo_profile_path, + llvm_profdata, + llvm_profdata_order, + build_environment, + ) +-def orderfile_path(profile_use, path, profdata, profdata_order, build_env): ++def orderfile_path(profile_use, compiler, path, profdata, profdata_order, build_env): ++ if compiler.type == "gcc": ++ return None ++ + if not profile_use: + return None + +@@ -145,7 +149,7 @@ def pgo_flags( + return namespace( + gen_cflags=["-fprofile-generate"], + gen_ldflags=["-fprofile-generate"], +- use_cflags=["-fprofile-use", "-fprofile-correction", "-Wcoverage-mismatch"], ++ use_cflags=["-fprofile-use", "-fprofile-correction", "-Wno-coverage-mismatch"], + use_ldflags=["-fprofile-use"], + ) + ++++++ mozilla-sandbox-lto.patch ++++++ diff -up firefox-84.0/security/sandbox/linux/moz.build.1516803 firefox-84.0/security/sandbox/linux/moz.build --- firefox-84.0/security/sandbox/linux/moz.build.1516803 2020-12-10 16:17:55.425139545 +0100 +++ firefox-84.0/security/sandbox/linux/moz.build 2020-12-10 16:29:21.945860841 +0100 @@ -114,9 +114,8 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc") # gcc lto likes to put the top level asm in syscall.cc in a different partition # from the function using it which breaks the build. Work around that by # forcing there to be only one partition. -for f in CONFIG["OS_CXXFLAGS"]: - if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang": - LDFLAGS += ["--param lto-partitions=1"] +if CONFIG['CC_TYPE'] != 'clang': + LDFLAGS += ['--param', 'lto-partitions=1'] DEFINES["NS_NO_XPCOM"] = True DisableStlWrapping() ++++++ mozilla-silence-no-return-type.patch ++++++ --- /var/tmp/diff_new_pack.ZyIxty/_old 2026-03-28 20:15:05.297724800 +0100 +++ /var/tmp/diff_new_pack.ZyIxty/_new 2026-03-28 20:15:05.301724965 +0100 @@ -1,5 +1,5 @@ # HG changeset patch -# Parent a05bd055f1c92d210fa44a3071a17a3bd4df3a93 +# Parent 906466659f0991bd83b096aca2f57c45f196a32b diff --git a/gfx/skia/skia/include/codec/SkEncodedOrigin.h b/gfx/skia/skia/include/codec/SkEncodedOrigin.h --- a/gfx/skia/skia/include/codec/SkEncodedOrigin.h @@ -340,7 +340,7 @@ diff --git a/third_party/libwebrtc/api/rtp_parameters.cc b/third_party/libwebrtc/api/rtp_parameters.cc --- a/third_party/libwebrtc/api/rtp_parameters.cc +++ b/third_party/libwebrtc/api/rtp_parameters.cc -@@ -32,16 +32,17 @@ const char* DegradationPreferenceToStrin +@@ -75,16 +75,17 @@ const char* DegradationPreferenceToStrin case DegradationPreference::MAINTAIN_FRAMERATE: return "maintain-framerate"; case DegradationPreference::MAINTAIN_RESOLUTION: @@ -354,14 +354,14 @@ const double kDefaultBitratePriority = 1.0; - RtcpFeedback::RtcpFeedback() = default; - RtcpFeedback::RtcpFeedback(RtcpFeedbackType type) : type(type) {} - RtcpFeedback::RtcpFeedback(RtcpFeedbackType type, - RtcpFeedbackMessageType message_type) + bool WriteFmtpParameters(const CodecParameterMap& parameters, + StringBuilder& os) { + bool empty = true; + const char* delimiter = ""; // No delimiter before first parameter. diff --git a/third_party/libwebrtc/api/video/video_frame_buffer.cc b/third_party/libwebrtc/api/video/video_frame_buffer.cc --- a/third_party/libwebrtc/api/video/video_frame_buffer.cc +++ b/third_party/libwebrtc/api/video/video_frame_buffer.cc -@@ -109,16 +109,18 @@ const char* VideoFrameBufferTypeToString +@@ -120,16 +120,18 @@ const char* VideoFrameBufferTypeToString return "kI210"; case VideoFrameBuffer::Type::kI410: return "kI410"; @@ -383,7 +383,7 @@ diff --git a/third_party/libwebrtc/api/video_codecs/video_codec.cc b/third_party/libwebrtc/api/video_codecs/video_codec.cc --- a/third_party/libwebrtc/api/video_codecs/video_codec.cc +++ b/third_party/libwebrtc/api/video_codecs/video_codec.cc -@@ -152,16 +152,17 @@ const char* CodecTypeToPayloadString(Vid +@@ -154,16 +154,17 @@ const char* CodecTypeToPayloadString(Vid case kVideoCodecH264: return kPayloadNameH264; case kVideoCodecGeneric: @@ -461,12 +461,12 @@ VideoStreamInputState input_state) : validation_id_(validation_id), status_(Status::kValid), -@@ -395,16 +396,17 @@ VideoStreamAdapter::RestrictionsOrState +@@ -396,16 +397,17 @@ VideoStreamAdapter::RestrictionsOrState case DegradationPreference::MAINTAIN_RESOLUTION: { // Scale up framerate. return IncreaseFramerate(input_state, current_restrictions_); } - case DegradationPreference::DISABLED: + case DegradationPreference::MAINTAIN_FRAMERATE_AND_RESOLUTION: return Adaptation::Status::kAdaptationDisabled; } RTC_CHECK_NOTREACHED(); @@ -479,12 +479,12 @@ ++adaptation_validation_id_; RestrictionsOrState restrictions_or_state = GetAdaptationDownStep(input_state, current_restrictions_); -@@ -475,16 +477,17 @@ VideoStreamAdapter::GetAdaptationDownSte +@@ -476,16 +478,17 @@ VideoStreamAdapter::GetAdaptationDownSte } case DegradationPreference::MAINTAIN_RESOLUTION: { return DecreaseFramerate(input_state, current_restrictions); } - case DegradationPreference::DISABLED: + case DegradationPreference::MAINTAIN_FRAMERATE_AND_RESOLUTION: return Adaptation::Status::kAdaptationDisabled; } RTC_CHECK_NOTREACHED(); @@ -497,7 +497,7 @@ int target_pixels = GetLowerResolutionThan(input_state.frame_size_pixels().value()); // Use single active stream if set, this stream could be lower than the input. -@@ -628,16 +631,18 @@ Adaptation VideoStreamAdapter::GetAdaptD +@@ -629,16 +632,18 @@ Adaptation VideoStreamAdapter::GetAdaptD case DegradationPreference::MAINTAIN_FRAMERATE: return GetAdaptationDown(); case DegradationPreference::BALANCED: { @@ -644,7 +644,7 @@ diff --git a/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc b/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc --- a/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc +++ b/third_party/libwebrtc/modules/audio_processing/audio_processing_impl.cc -@@ -119,16 +119,17 @@ GainControl::Mode Agc1ConfigModeToInterf +@@ -113,16 +113,17 @@ GainControl::Mode Agc1ConfigModeToInterf case Agc1Config::kAdaptiveAnalog: return GainControl::kAdaptiveAnalog; case Agc1Config::kAdaptiveDigital: @@ -662,7 +662,7 @@ // Maximum lengths that frame of samples being passed from the render side to // the capture side can have (does not apply to AEC3). -@@ -186,17 +187,17 @@ int AudioFormatValidityToErrorCode(Audio +@@ -180,17 +181,17 @@ int AudioFormatValidityToErrorCode(Audio case AudioFormatValidity::kValidAndSupported: return AudioProcessing::kNoError; case AudioFormatValidity::kValidButUnsupportedSampleRate: // fall-through @@ -681,7 +681,7 @@ const StreamConfig& input_config, const StreamConfig& output_config) { AudioFormatValidity input_validity = ValidateAudioFormat(input_config); -@@ -2096,16 +2097,17 @@ void AudioProcessingImpl::InitializeNois +@@ -2090,16 +2091,17 @@ void AudioProcessingImpl::InitializeNois case NoiseSuppresionConfig::kModerate: return NsConfig::SuppressionLevel::k12dB; case NoiseSuppresionConfig::kHigh: @@ -1043,7 +1043,7 @@ diff --git a/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc b/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc --- a/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc +++ b/third_party/libwebrtc/video/adaptation/video_stream_encoder_resource_manager.cc -@@ -85,16 +85,17 @@ bool IsFramerateScalingEnabled(Degradati +@@ -82,16 +82,17 @@ bool IsFramerateScalingEnabled(Degradati std::string ToString(VideoAdaptationReason reason) { switch (reason) { case VideoAdaptationReason::kQuality: @@ -1064,7 +1064,7 @@ diff --git a/third_party/libwebrtc/video/config/encoder_stream_factory.cc b/third_party/libwebrtc/video/config/encoder_stream_factory.cc --- a/third_party/libwebrtc/video/config/encoder_stream_factory.cc +++ b/third_party/libwebrtc/video/config/encoder_stream_factory.cc -@@ -113,16 +113,17 @@ int GetDefaultMaxQp(VideoCodecType codec +@@ -119,16 +119,17 @@ int GetDefaultMaxQp(VideoCodecType codec return kDefaultVideoMaxQpH26x; case kVideoCodecVP8: case kVideoCodecVP9: @@ -1076,12 +1076,12 @@ + return kDefaultVideoMaxQpAv1; } - // Round size to nearest simulcast-friendly size. - // Simulcast stream width and height must both be dividable by - // |2 ^ (simulcast_layers - 1)|. - int NormalizeSimulcastSize(const FieldTrialsView& field_trials, - int size, - size_t simulcast_layers) { + Resolution NormalizeResolution(const Resolution& resolution, + const VideoEncoderConfig& encoder_config, + int max_num_layers, + const FieldTrialsView& trials) { + if (resolution.width < kMinLayerSize || resolution.height < kMinLayerSize) { + // Resolution is already too low. Avoid further adjustments. diff --git a/third_party/libwebrtc/video/corruption_detection/video_frame_sampler.cc b/third_party/libwebrtc/video/corruption_detection/video_frame_sampler.cc --- a/third_party/libwebrtc/video/corruption_detection/video_frame_sampler.cc +++ b/third_party/libwebrtc/video/corruption_detection/video_frame_sampler.cc @@ -1165,4 +1165,40 @@ std::unique_ptr<VideoFrameSampler> VideoFrameSampler::Create( const VideoFrame& frame) { +diff -rup a/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_format.cc b/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_format.cc +--- a/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_format.cc 2026-03-26 09:58:46.411668120 +0000 ++++ b/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_format.cc 2026-03-26 09:58:18.723002878 +0000 +@@ -73,6 +73,10 @@ std::unique_ptr<RtpPacketizer> RtpPacket + rtp_video_header); + } + } ++ // The following serves only to shut up the compiler about ++ // "control reaches end of non-void function": ++ return std::make_unique<RtpPacketizerGeneric>(payload, limits, ++ rtp_video_header); + } + + std::vector<int> RtpPacketizer::SplitAboutEqually( +diff -rup a/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender_video.cc b/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender_video.cc +--- a/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender_video.cc 2026-03-18 18:54:03.000000000 +0000 ++++ b/third_party/libwebrtc/modules/rtp_rtcp/source/rtp_sender_video.cc 2026-03-26 09:54:09.116828584 +0000 +@@ -177,6 +177,7 @@ PacketizationFormat GetPacketizationForm + case kVideoCodecGeneric: + return PacketizationFormat::kGeneric; + } ++ return (PacketizationFormat) 0; + } + + } // namespace +diff -rup a/third_party/libwebrtc/video/adaptation/pixel_limit_resource.cc b/third_party/libwebrtc/video/adaptation/pixel_limit_resource.cc +--- a/third_party/libwebrtc/video/adaptation/pixel_limit_resource.cc 2026-03-18 18:54:02.000000000 +0000 ++++ b/third_party/libwebrtc/video/adaptation/pixel_limit_resource.cc 2026-03-26 10:13:00.686833144 +0000 +@@ -88,6 +88,7 @@ const char* ToString(VideoAdaptationReas + case VideoAdaptationReason::kCpu: + return "cpu"; + } ++ return "shut-up-the-compiler"; + } + + } // namespace ++++++ tar_stamps ++++++ --- /var/tmp/diff_new_pack.ZyIxty/_old 2026-03-28 20:15:05.381728267 +0100 +++ /var/tmp/diff_new_pack.ZyIxty/_new 2026-03-28 20:15:05.385728432 +0100 @@ -1,11 +1,11 @@ PRODUCT="firefox" CHANNEL="release" -VERSION="148.0.2" +VERSION="149.0" VERSION_SUFFIX="" -PREV_VERSION="148.0" +PREV_VERSION="148.0.2" PREV_VERSION_SUFFIX="" #SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation RELEASE_REPO="https://hg.mozilla.org/releases/mozilla-release" -RELEASE_TAG="15542f265e9eb232f80e52c0966300225d0b1cb7" -RELEASE_TIMESTAMP="20260309125808" +RELEASE_TAG="b20f603334b8677ba67ed2fb12a1043b3c8c6933" +RELEASE_TIMESTAMP="20260318190823"
