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"
 

Reply via email to